From: Gé van Geldorp Date: Sat, 21 Feb 2004 09:20:39 +0000 (+0000) Subject: Import w32api version 2.5 include files X-Git-Tag: backups/videoprt_pnp_14032004@12472~370 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=1f1b824d087e5332ea4996f4deb9bf81deb30d45 Import w32api version 2.5 include files svn path=/trunk/; revision=8283 --- diff --git a/reactos/apps/tests/lpc/makefile b/reactos/apps/tests/lpc/makefile index 8e02a78f92e..078bc684c58 100644 --- a/reactos/apps/tests/lpc/makefile +++ b/reactos/apps/tests/lpc/makefile @@ -10,7 +10,7 @@ CLT_OBJECTS= lpcclt.o PROGS= lpcsrv.exe lpcclt.exe -BASE_CFLAGS = -I$(PATH_TO_TOP)/include -Wall -Werror +CFLAGS = $(STD_CFLAGS) LIBS = $(SDK_PATH_LIB)/kernel32.a \ $(SDK_PATH_LIB)/ntdll.a diff --git a/reactos/apps/tests/mstest/Makefile b/reactos/apps/tests/mstest/Makefile index e118fd72b0c..0781c0fb47f 100644 --- a/reactos/apps/tests/mstest/Makefile +++ b/reactos/apps/tests/mstest/Makefile @@ -10,7 +10,7 @@ CLT_OBJECTS = msclient.o PROGS = msserver.exe msclient.exe -BASE_CFLAGS = -I$(PATH_TO_TOP)/include -Wall -Werror +CFLAGS = $(STD_CFLAGS) LIBS = $(SDK_PATH_LIB)/kernel32.a \ $(SDK_PATH_LIB)/ntdll.a diff --git a/reactos/apps/tests/nptest/Makefile b/reactos/apps/tests/nptest/Makefile index b6fa4a5eeb9..20ab9404d41 100644 --- a/reactos/apps/tests/nptest/Makefile +++ b/reactos/apps/tests/nptest/Makefile @@ -10,7 +10,7 @@ CLT_OBJECTS = npclient.o PROGS = npserver.exe npclient.exe -BASE_CFLAGS = -I$(PATH_TO_TOP)/include -Wall -Werror +CFLAGS = $(STD_CFLAGS) LIBS = $(SDK_PATH_LIB)/kernel32.a diff --git a/reactos/apps/tests/shm/makefile b/reactos/apps/tests/shm/makefile index e467c3bfd4b..a58494fde01 100644 --- a/reactos/apps/tests/shm/makefile +++ b/reactos/apps/tests/shm/makefile @@ -10,7 +10,7 @@ CLT_OBJECTS= shmclt.o PROGS= shmsrv.exe shmclt.exe -BASE_CFLAGS = -I$(PATH_TO_TOP)/include -Werror -Wall +CFLAGS = $(STD_CFLAGS) LIBS = $(SDK_PATH_LIB)/kernel32.a \ $(SDK_PATH_LIB)/ntdll.a diff --git a/reactos/include/napi/types.h b/reactos/include/napi/types.h index 0a65ce79f44..d8a35f93997 100644 --- a/reactos/include/napi/types.h +++ b/reactos/include/napi/types.h @@ -3,6 +3,7 @@ /* these should be moved to a file like ntdef.h */ +#ifndef __USE_W32API enum { DIRECTORY_QUERY, @@ -11,6 +12,7 @@ enum DIRECTORY_CREATE_SUBDIRECTORY, DIRECTORY_ALL_ACCESS, }; +#endif /* * General type for status information diff --git a/reactos/include/ntos/zwtypes.h b/reactos/include/ntos/zwtypes.h index 380a01c0418..c3950585efd 100755 --- a/reactos/include/ntos/zwtypes.h +++ b/reactos/include/ntos/zwtypes.h @@ -1575,10 +1575,12 @@ struct _SYSTEM_QUOTA_INFORMATION // directory access rights +#ifndef __USE_W32API #define DIRECTORY_QUERY 0x0001 #define DIRECTORY_TRAVERSE 0x0002 #define DIRECTORY_CREATE_OBJECT 0x0004 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008 +#endif #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) diff --git a/reactos/ntoskrnl/Makefile b/reactos/ntoskrnl/Makefile index 82266b57aee..e7947641a51 100644 --- a/reactos/ntoskrnl/Makefile +++ b/reactos/ntoskrnl/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.113 2004/02/02 00:35:24 ekohl Exp $ +# $Id: Makefile,v 1.114 2004/02/21 09:20:33 gvg Exp $ # # ReactOS Operating System # @@ -52,6 +52,10 @@ endif # require os code to explicitly request A/W version of structs/functions CFLAGS += -D_DISABLE_TIDENTS +CFLAGS += $(STD_CFLAGS) +ASFLAGS += $(STD_ASFLAGS) +RCFLAGS += $(STD_RCFLAGS) + # # Build configuration # @@ -742,7 +746,7 @@ ke/main.o: ke/main.c $(PATH_TO_TOP)/include/reactos/buildno.h %.o: %.asm $(NASM_CMD) $(NFLAGS) $< -o $@ %.coff: %.rc - $(RC) $(RCINC) $< -o $@ + $(RC) $(RCFLAGS) $< -o $@ # # diff --git a/reactos/rules.mak b/reactos/rules.mak index e23920f6fc7..3a8337f9450 100644 --- a/reactos/rules.mak +++ b/reactos/rules.mak @@ -19,14 +19,6 @@ endif # uncomment if you use bochs and it displays only 30 rows # BOCHS_30ROWS = yes -ifeq ($(HOST),mingw32-linux) -TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) -else -TOPDIR := $(shell cd) -endif - -TOPDIR := $(TOPDIR)/$(PATH_TO_TOP) - # # Choose various options # @@ -86,10 +78,10 @@ CPP = $(PREFIX)cpp AR = $(PREFIX)ar RC = $(PREFIX)windres WRC = $(WINE_TOP)/tools/wrc/wrc -RCINC = --include-dir $(PATH_TO_TOP)/include OBJCOPY = $(PREFIX)objcopy OBJDUMP =$(PREFIX)objdump TOOLS_PATH = $(PATH_TO_TOP)/tools +W32API_PATH = $(PATH_TO_TOP)/w32api CP = $(TOOLS_PATH)/rcopy RM = $(TOOLS_PATH)/rdel RLINE = $(TOOLS_PATH)/rline @@ -104,21 +96,10 @@ WINEBUILD = $(TOOLS_PATH)/winebuild/winebuild WINE2ROS = $(TOOLS_PATH)/wine2ros/wine2ros XSLTPROC = xsltproc - -# Maybe we can delete these soon - -ifeq ($(HOST),mingw32-linux) -CFLAGS := $(CFLAGS) -I$(PATH_TO_TOP)/include -pipe -march=i386 -D_M_IX86 -endif - -ifeq ($(HOST),mingw32-windows) -CFLAGS := $(CFLAGS) -I$(PATH_TO_TOP)/include -pipe -march=i386 -D_M_IX86 -endif - -CXXFLAGS = $(CFLAGS) -NFLAGS = -i$(PATH_TO_TOP)/include/ -f$(NASM_FORMAT) -d$(NASM_FORMAT) -ASFLAGS := $(ASFLAGS) -I$(PATH_TO_TOP)/include -D__ASM__ - +STD_CFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -pipe -march=i386 -D_M_IX86 +STD_CPPFLAGS = $(STD_CFLAGS) +STD_ASFLAGS = -I$(PATH_TO_TOP)/include -I$(W32API_PATH)/include -D__ASM__ -D_M_IX86 +STD_RCFLAGS = --include-dir $(PATH_TO_TOP)/include --include-dir $(W32API_PATH)/include # Developer Kits DK_PATH=$(PATH_TO_TOP)/dk diff --git a/reactos/subsys/system/cmd/makefile b/reactos/subsys/system/cmd/makefile index 087033a8185..bff0aa2a8d4 100644 --- a/reactos/subsys/system/cmd/makefile +++ b/reactos/subsys/system/cmd/makefile @@ -15,7 +15,7 @@ TARGET_NAME = cmd TARGET_INSTALLDIR = system32 -TARGET_CFLAGS = -D__USE_W32API -DANONYMOUSUNIONS -Wall -Werror -I$(PATH_TO_TOP)/include \ +TARGET_CFLAGS = -D__USE_W32API -DANONYMOUSUNIONS -Wall -Werror \ -I$(PATH_TO_TOP)/include/msvcrt -D_WIN32_WINNT=0x0501 WINE_MODE = yes diff --git a/reactos/subsys/system/explorer/Makefile b/reactos/subsys/system/explorer/Makefile index 19e2e49ffd0..6a0cac62543 100644 --- a/reactos/subsys/system/explorer/Makefile +++ b/reactos/subsys/system/explorer/Makefile @@ -32,14 +32,15 @@ EXE_POSTFIX := .exe endif PATH_TO_TOP = ../../.. +W32API_PATH = $(PATH_TO_TOP)/w32api TOOLS_PATH = $(PATH_TO_TOP)/tools ifndef UNICODE UNICODE = 1 endif -CFLAGS = -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -RCFLAGS = -DWIN32 -D_ROS_ -D__WINDRES__ +CFLAGS = -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I$(W32API_PATH)/include +RCFLAGS = -DWIN32 -D_ROS_ -D__WINDRES__ --include-dir $(W32API_PATH)/include LFLAGS = -Wl,--subsystem,windows ifdef DEBUG diff --git a/reactos/tools/Makefile b/reactos/tools/Makefile index bd08e860300..05b1e0ec922 100644 --- a/reactos/tools/Makefile +++ b/reactos/tools/Makefile @@ -1,5 +1,7 @@ PATH_TO_TOP = .. +include $(PATH_TO_TOP)/rules.mak + CFLAGS += -Wall -Werror TOOLS = \ @@ -160,5 +162,3 @@ clean: endif .PHONY: all clean - -include $(PATH_TO_TOP)/rules.mak diff --git a/reactos/tools/cabman/makefile b/reactos/tools/cabman/makefile index 9b48548ae8c..3761209d826 100755 --- a/reactos/tools/cabman/makefile +++ b/reactos/tools/cabman/makefile @@ -11,7 +11,7 @@ OBJECTS = cabinet.o mszip.o raw.o main.o dfp.o CLEAN_FILES = *.o cabman$(EXE_POSTFIX) -HOST_CFLAGS = -g -I. -I $(PATH_TO_TOP)/lib/zlib -Werror -Wall +HOST_CFLAGS = -g -I. -I$(PATH_TO_TOP)/lib/zlib -I$(W32API_PATH)/include -Werror -Wall HOST_LFLAGS = -g $(PATH_TO_TOP)/lib/zlib/zlib.host.a diff --git a/reactos/tools/helper.mk b/reactos/tools/helper.mk index f376b40edcf..428adca0bd7 100644 --- a/reactos/tools/helper.mk +++ b/reactos/tools/helper.mk @@ -1,4 +1,4 @@ -# $Id: helper.mk,v 1.52 2004/02/20 08:33:37 gvg Exp $ +# $Id: helper.mk,v 1.53 2004/02/21 09:20:33 gvg Exp $ # # Helper makefile for ReactOS modules # Variables this makefile accepts: @@ -119,11 +119,11 @@ ifeq ($(TARGET_TYPE),program) MK_DDKLIBS := MK_SDKLIBS := ifneq ($(WINE_MODE),yes) - MK_CFLAGS := -I./ -I$(SDK_PATH_INC) - MK_CPPFLAGS := -I./ -I$(SDK_PATH_INC) + MK_CFLAGS := -I./ + MK_CPPFLAGS := -I./ else - MK_CFLAGS := -I$(PATH_TO_TOP)/include/wine -I./ -I$(WINE_INCLUDE) - MK_CPPFLAGS := -I$(PATH_TO_TOP)/include/wine -I./ -I$(WINE_INCLUDE) + MK_CFLAGS := -I$(PATH_TO_TOP)/include/wine + MK_CPPFLAGS := -I$(PATH_TO_TOP)/include/wine MK_RCFLAGS := --include-dir $(PATH_TO_TOP)/include/wine --include-dir $(WINE_INCLUDE) endif MK_IMPLIB := no @@ -147,8 +147,8 @@ ifeq ($(TARGET_TYPE),proglib) MK_DEFENTRY := _WinMain@16 MK_DDKLIBS := MK_SDKLIBS := - MK_CFLAGS := -I./ -I$(SDK_PATH_INC) - MK_CPPFLAGS := -I./ -I$(SDK_PATH_INC) + MK_CFLAGS := -I./ + MK_CPPFLAGS := -I./ MK_IMPLIB := yes MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := $(SDK_PATH_LIB) @@ -167,8 +167,8 @@ ifeq ($(TARGET_TYPE),dynlink) MK_DDKLIBS := MK_SDKLIBS := ifneq ($(WINE_MODE),yes) - MK_CFLAGS := -I./ -I$(SDK_PATH_INC) - MK_CPPFLAGS := -I./ -I$(SDK_PATH_INC) + MK_CFLAGS := -I./ + MK_CPPFLAGS := -I./ else MK_CFLAGS := -I$(PATH_TO_TOP)/include/wine -I./ -I$(WINE_INCLUDE) MK_CPPFLAGS := -I$(PATH_TO_TOP)/include/wine -I./ -I$(WINE_INCLUDE) @@ -196,8 +196,8 @@ ifeq ($(TARGET_TYPE),library) MK_DEFENTRY := MK_DDKLIBS := MK_SDKLIBS := - MK_CFLAGS := -I./ -I$(SDK_PATH_INC) - MK_CPPFLAGS := -I./ -I$(SDK_PATH_INC) + MK_CFLAGS := -I./ + MK_CPPFLAGS := -I./ MK_IMPLIB := no MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := @@ -212,8 +212,8 @@ ifeq ($(TARGET_TYPE),kmlibrary) TARGET_NORC := yes MK_MODE := static MK_DEFEXT := .a - MK_CFLAGS := -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -I./ + MK_CPPFLAGS := -I./ MK_IMPLIB := no MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := $(DDK_PATH_LIB) @@ -226,8 +226,8 @@ ifeq ($(TARGET_TYPE),driver_library) MK_DEFENTRY := MK_DDKLIBS := MK_SDKLIBS := - MK_CFLAGS := -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -I./ + MK_CPPFLAGS := -I./ MK_IMPLIB := no MK_IMPLIBONLY := yes MK_IMPLIBDEFPATH := $(DDK_PATH_LIB) @@ -245,8 +245,8 @@ ifeq ($(TARGET_TYPE),driver) MK_DEFENTRY := _DriverEntry@8 MK_DDKLIBS := ntoskrnl.a hal.a MK_SDKLIBS := - MK_CFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTDRIVER__ -I./ + MK_CPPFLAGS := -D__NTDRIVER__ -I./ MK_IMPLIB := no MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := @@ -264,8 +264,8 @@ ifeq ($(TARGET_TYPE),export_driver) MK_DEFENTRY := _DriverEntry@8 MK_DDKLIBS := ntoskrnl.a hal.a MK_SDKLIBS := - MK_CFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTDRIVER__ -I./ + MK_CPPFLAGS := -D__NTDRIVER__ -I./ MK_IMPLIB := yes MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := $(DDK_PATH_LIB) @@ -283,8 +283,8 @@ ifeq ($(TARGET_TYPE),hal) MK_DEFENTRY := _DriverEntry@8 MK_DDKLIBS := ntoskrnl.a MK_SDKLIBS := - MK_CFLAGS := -D__NTHAL__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTHAL__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTHAL__ -I./ + MK_CPPFLAGS := -D__NTHAL__ -I./ MK_IMPLIB := yes MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := @@ -302,8 +302,8 @@ ifeq ($(TARGET_TYPE),bootpgm) MK_DEFENTRY := _DriverEntry@8 MK_DDKLIBS := MK_SDKLIBS := - MK_CFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTDRIVER__ -I./ + MK_CPPFLAGS := -D__NTDRIVER__ -I./ MK_IMPLIB := no MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := @@ -321,8 +321,8 @@ ifeq ($(TARGET_TYPE),miniport) MK_DEFENTRY := _DriverEntry@8 MK_DDKLIBS := MK_SDKLIBS := - MK_CFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTDRIVER__ -I./ + MK_CPPFLAGS := -D__NTDRIVER__ -I./ MK_IMPLIB := no MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := @@ -340,8 +340,8 @@ ifeq ($(TARGET_TYPE),gdi_driver) MK_DEFENTRY := _DrvEnableDriver@12 MK_DDKLIBS := ntoskrnl.a hal.a win32k.a MK_SDKLIBS := - MK_CFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTDRIVER__ -I./ + MK_CPPFLAGS := -D__NTDRIVER__ -I./ MK_IMPLIB := yes MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := $(DDK_PATH_LIB) @@ -404,8 +404,8 @@ ifeq ($(TARGET_TYPE),subsystem) MK_DEFENTRY := _DriverEntry@8 MK_DDKLIBS := ntoskrnl.a hal.a MK_SDKLIBS := - MK_CFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTDRIVER__ -I./ + MK_CPPFLAGS := -D__NTDRIVER__ -I./ MK_IMPLIB := yes MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := $(DDK_PATH_LIB) @@ -422,8 +422,8 @@ ifeq ($(TARGET_TYPE),kmdll) MK_DEFENTRY := 0x0 MK_DDKLIBS := ntoskrnl.a hal.a MK_SDKLIBS := - MK_CFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) - MK_CPPFLAGS := -D__NTDRIVER__ -I./ -I$(DDK_PATH_INC) + MK_CFLAGS := -D__NTDRIVER__ -I./ + MK_CPPFLAGS := -D__NTDRIVER__ -I./ MK_IMPLIB := yes MK_IMPLIBONLY := no MK_IMPLIBDEFPATH := $(DDK_PATH_LIB) @@ -442,7 +442,7 @@ ifeq ($(TARGET_TYPE),winedll) MK_DEFENTRY := _DllMain@12 MK_DDKLIBS := MK_SDKLIBS := - MK_CFLAGS := -D__USE_W32API -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x501 -DWINVER=0x501 -D__need_offsetof -DCOBJMACROS -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/include/wine + MK_CFLAGS := -D__USE_W32API -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x501 -DWINVER=0x501 -D__need_offsetof -DCOBJMACROS -I$(PATH_TO_TOP)/include/wine MK_CPPFLAGS := -D__USE_W32API -D_WIN32_IE=0x600 -D_WIN32_WINNT=0x501 -DWINVER=0x501 -D__need_offsetof -DCOBJMACROS -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/include/wine MK_RCFLAGS := --define __USE_W32API --include-dir $(PATH_TO_TOP)/include/wine MK_IMPLIB := yes @@ -565,22 +565,18 @@ endif include $(PATH_TO_TOP)/config -TARGET_ASFLAGS += -march=$(ARCH) -D$(MK_ARCH_ID) -TARGET_CFLAGS += $(MK_CFLAGS) -TARGET_CFLAGS += -pipe -march=$(ARCH) -D$(MK_ARCH_ID) +TARGET_CFLAGS += $(MK_CFLAGS) $(STD_CFLAGS) ifeq ($(DBG),1) TARGET_ASFLAGS += -g TARGET_CFLAGS += -g TARGET_LFLAGS += -g endif -TARGET_CPPFLAGS += $(MK_CPPFLAGS) -TARGET_CPPFLAGS += -pipe -march=$(ARCH) -D$(MK_ARCH_ID) +TARGET_CPPFLAGS += $(MK_CPPFLAGS) $(STD_CPPFLAGS) -TARGET_RCFLAGS += $(MK_RCFLAGS) +TARGET_RCFLAGS += $(MK_RCFLAGS) $(STD_RCFLAGS) -TARGET_ASFLAGS += $(MK_ASFLAGS) -TARGET_ASFLAGS += -pipe -march=$(ARCH) +TARGET_ASFLAGS += $(MK_ASFLAGS) $(STD_ASFLAGS) TARGET_NFLAGS += $(MK_NFLAGS) @@ -992,7 +988,7 @@ endif # ROS_USE_PCH %.o: %.asm $(NASM_CMD) $(NFLAGS) $(TARGET_NFLAGS) $< -o $@ %.coff: %.rc - $(RC) $(TARGET_RCFLAGS) $(RCINC) $< -o $@ + $(RC) $(TARGET_RCFLAGS) $< -o $@ %.spec.def: %.spec $(WINEBUILD) $(DEFS) -o $@ --def $< # Kill implicit rule diff --git a/reactos/tools/pipetools/Makefile b/reactos/tools/pipetools/Makefile index b26df5467cb..9377c558b89 100644 --- a/reactos/tools/pipetools/Makefile +++ b/reactos/tools/pipetools/Makefile @@ -2,13 +2,9 @@ # pipetools Makefile # -CC = gcc -CXX = g++ -LINK = g++ +PATH_TO_TOP = ../.. -TOOLS_PATH = .. - -CFLAGS = -DWIN32 -Wall +CFLAGS = -DWIN32 -Wall -I$(W32API_PATH)/include RCFLAGS = -DWIN32 LFLAGS = @@ -42,3 +38,4 @@ all: $(TARGETS) clean: $(TOOLS_PATH)/rdel $(TARGETS) *.o +include $(PATH_TO_TOP)/rules.mak diff --git a/reactos/tools/winebuild/Makefile b/reactos/tools/winebuild/Makefile index 27025f13827..0c1d8c8b5e3 100644 --- a/reactos/tools/winebuild/Makefile +++ b/reactos/tools/winebuild/Makefile @@ -20,7 +20,7 @@ OBJECTS = \ CLEAN_FILES = *.o $(TARGET) -HOST_CFLAGS = -D__USE_W32API -D__REACTOS__ -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/include/wine +HOST_CFLAGS = -D__USE_W32API -D__REACTOS__ -I$(PATH_TO_TOP)/include -I$(PATH_TO_TOP)/include/wine -I$(W32API_PATH)/include %.o: %.c $(HOST_CC) $(HOST_CFLAGS) -c $< -o $@ diff --git a/reactos/w32api/README.w32api b/reactos/w32api/README.w32api new file mode 100644 index 00000000000..6cf2a6a3c66 --- /dev/null +++ b/reactos/w32api/README.w32api @@ -0,0 +1,93 @@ + Free headers and libraries for the Win32 API + + Originally written by Anders Norlander + Last known and not working email: + + Now maintained by MinGW Developers + Send bug reports and questions to MinGW-users@lists.sourceforge.net + URL: http://www.mingw.org + +* License 2.0 + + You are free to use, modify and copy this package as long as this + README.w32api file is included unmodified with any distribution, source or + binary, of this package. No restrictions are imposed on any package or + product using or incorporating this package. You are free to license your + package as you see fit. + + You may not restrict others freedoms as set forth in the above paragraph. + You may distribute this library as part of another package or as a + modified package if and only if you do *not* restrict others freedoms as + set forth in the above paragraph as it concerns this package. You do have + the right to restrict uses of any package using this package. + + This package 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. + +* What is it? + + This is a free set of headers and import libraries for the Win32 + API. The library differs from the GNU Windows32 library in that I + have tried to use a file structure that mirrors Microsoft's. I + don't like having *all* definitions in one single header as in the + GNU Windows32 library, I want a clean separation between different + parts of the API. + + Daniel Guerrero Miralles contributed the DirectX 6.1 import + libraries and DirectX GUID definitions. + + See the files NOTES and TODO for what needs to be done. + +* Size does matter + + Since the WIN32 API is severely bloated (as most MS products seem to + be) the headers are designed to be as compact as possible, while + still being readable, in order to minimize parsing time. + + The convention is to omit parameter names for function prototypes, + no excessive white space. Struct/union members are indented with tab + characters to make them readable. Comment only when necessary. + + If you are contributing a patch please follow the above mentioned + convention. Make sure your editor does not convert tabs to spaces. + +* What do I need to use it? + + The library is intended for use with egcs 1.1 or later but it is + possible to use with some other tools as well (although it is not + very useful). LCC-Win32, MSVC and Borland C++ 5.01 or higher may + work as well. The import libraries are for GNU tools only. + + The library requires egcs 1.1 or later, since the `#pragma pack' + feature is used. Mumit Khan provides egcs patches and binaries for + win32 at `http://www.xraylith.wisc.edu/~khan/software/gnu-win32/'. + + If you are going to use C++ COM objects, you will need a version of + egcs that recognizes the `comobject' attribute and then define + HAVE_COMOBJECT when compiling your program. Antonio Mendes de + Oliveira Neto has a prebuilt version at + `http://li.facens.br/EGCS-WIN32/english/index.html'. Note that this + is very experimental. If you want to use COM objects in C++ but with + C interfaces you must define CINTERFACE. + + Objective-C programs cannot use COM functionality because of + conflicts between the interface define and the Objective-C + @interface directive. There is also a conflict between the windows + Obj-C BOOL types. To avoid this conflict you should use WINBOOL in + all places where you would use BOOL in a C/C++ windows program. If + you include any windows headers *after* `windows.h' you must use the + method outlined below: + + /* non-windows includes */ + #include + ... + /* windows specific headers */ + #include + #define BOOL WINBOOL + #include + ... + #undef BOOL + ... + /* include other headers */ + diff --git a/reactos/w32api/include/GL/gl.h b/reactos/w32api/include/GL/gl.h new file mode 100644 index 00000000000..e140604476e --- /dev/null +++ b/reactos/w32api/include/GL/gl.h @@ -0,0 +1,1472 @@ +/* $Id: gl.h,v 1.1 2004/02/21 09:20:38 gvg Exp $ */ + +/* + * Mesa 3-D graphics library + * Version: 4.0 + * + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/************************************************************************ + * 2002-Apr-22, José Fonseca: + * Removed non Win32 system-specific stuff + * + * 2002-Apr-17, Marcus Geelnard: + * For win32, OpenGL 1.2 & 1.3 definitions are not made in this file + * anymore, since under Windows those are regarded as extensions, and + * are better defined in glext.h (especially the function prototypes may + * conflict with extension function pointers). A few "cosmetical" + * changes were also made to this file. + * + * 2002-Apr-15, Marcus Geelnard: + * Modified this file to better fit a wider range of compilers, removed + * Mesa specific stuff, and removed extension definitions (this file now + * relies on GL/glext.h). Hopefully this file should now function as a + * generic OpenGL gl.h include file for most compilers and environments. + * Changed GLAPIENTRY to APIENTRY (to be consistent with GL/glext.h). + ************************************************************************/ + + +#ifndef __gl_h_ +#define __gl_h_ + + + +/************************************************************************ + * Begin system-specific stuff. + */ +/* __WIN32__ */ +#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__)) +# define __WIN32__ +#endif + +/* GLAPI, part 1 (use WINGDIAPI, if defined) */ +#if defined(__WIN32__) && defined(WINGDIAPI) +# define GLAPI WINGDIAPI +#endif + +/* GLAPI, part 2 */ +#if !defined(GLAPI) +# if defined(_MSC_VER) /* Microsoft Visual C++ */ +# define GLAPI __declspec(dllimport) +# elif defined(__LCC__) && defined(__WIN32__) /* LCC-Win32 */ +# define GLAPI __stdcall +# else /* Others (e.g. MinGW, Cygwin, non-win32) */ +# define GLAPI extern +# endif +#endif + +/* APIENTRY */ +#if !defined(APIENTRY) +# if defined(__WIN32__) +# define APIENTRY __stdcall +# else +# define APIENTRY +# endif +#endif +/* + * End system-specific stuff. + ************************************************************************/ + + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define GL_VERSION_1_1 1 + +#if !defined(__WIN32__) +#define GL_VERSION_1_2 1 +#define GL_VERSION_1_3 1 +#define GL_ARB_imaging 1 +#endif + + +/* + * + * Datatypes + * + */ +#ifdef CENTERLINE_CLPP +#define signed +#endif +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef signed char GLbyte; /* 1-byte signed */ +typedef short GLshort; /* 2-byte signed */ +typedef int GLint; /* 4-byte signed */ +typedef unsigned char GLubyte; /* 1-byte unsigned */ +typedef unsigned short GLushort; /* 2-byte unsigned */ +typedef unsigned int GLuint; /* 4-byte unsigned */ +typedef int GLsizei; /* 4-byte signed */ +typedef float GLfloat; /* single precision float */ +typedef float GLclampf; /* single precision float in [0,1] */ +typedef double GLdouble; /* double precision float */ +typedef double GLclampd; /* double precision float in [0,1] */ + + + +/************************************************************************ + * + * Constants + * + ************************************************************************/ + +/* Boolean values */ +#define GL_FALSE 0x0 +#define GL_TRUE 0x1 + +/* Data types */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_DOUBLE 0x140A +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 + +/* Primitives */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_QUAD_STRIP 0x0008 +#define GL_POLYGON 0x0009 + +/* Vertex Arrays */ +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_INDEX_ARRAY 0x8077 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_C3F_V3F 0x2A24 +#define GL_N3F_V3F 0x2A25 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_V4F 0x2A28 +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T4F_C4F_N3F_V4F 0x2A2D + +/* Matrix Mode */ +#define GL_MATRIX_MODE 0x0BA0 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 + +/* Points */ +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_RANGE 0x0B12 + +/* Lines */ +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 + +/* Polygons */ +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_EDGE_FLAG 0x0B43 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 + +/* Display Lists */ +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#define GL_LIST_MODE 0x0B30 + +/* Depth buffer */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_BITS 0x0D56 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_COMPONENT 0x1902 + +/* Lighting */ +#define GL_LIGHTING 0x0B50 +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_SHININESS 0x1601 +#define GL_EMISSION 0x1600 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_SHADE_MODEL 0x0B54 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_NORMALIZE 0x0BA1 + +/* User clipping planes */ +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 + +/* Accumulation buffer */ +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_ACCUM 0x0100 +#define GL_ADD 0x0104 +#define GL_LOAD 0x0101 +#define GL_MULT 0x0103 +#define GL_RETURN 0x0102 + +/* Alpha testing */ +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_ALPHA_TEST_FUNC 0x0BC1 + +/* Blending */ +#define GL_BLEND 0x0BE2 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_DST 0x0BE0 +#define GL_ZERO 0x0 +#define GL_ONE 0x1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 + +/* Render Mode */ +#define GL_FEEDBACK 0x1C01 +#define GL_RENDER 0x1C00 +#define GL_SELECT 0x1C02 + +/* Feedback */ +#define GL_2D 0x0600 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 + +/* Selection */ +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 + +/* Fog */ +#define GL_FOG 0x0B60 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_COLOR 0x0B66 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_LINEAR 0x2601 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 + +/* Logic Ops */ +#define GL_LOGIC_OP 0x0BF1 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_CLEAR 0x1500 +#define GL_SET 0x150F +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_NOOP 0x1505 +#define GL_INVERT 0x150A +#define GL_AND 0x1501 +#define GL_NAND 0x150E +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_XOR 0x1506 +#define GL_EQUIV 0x1509 +#define GL_AND_REVERSE 0x1502 +#define GL_AND_INVERTED 0x1504 +#define GL_OR_REVERSE 0x150B +#define GL_OR_INVERTED 0x150D + +/* Stencil */ +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BITS 0x0D57 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_INDEX 0x1901 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 + +/* Buffers, Pixel Drawing/Reading */ +#define GL_NONE 0x0 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +/*GL_FRONT 0x0404 */ +/*GL_BACK 0x0405 */ +/*GL_FRONT_AND_BACK 0x0408 */ +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_COLOR_INDEX 0x1900 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_ALPHA_BITS 0x0D55 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_INDEX_BITS 0x0D51 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_READ_BUFFER 0x0C02 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_BITMAP 0x1A00 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_DITHER 0x0BD0 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 + +/* Implementation limits */ +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B + +/* Gets */ +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_MODE 0x0C30 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_RENDER_MODE 0x0C40 +#define GL_RGBA_MODE 0x0C31 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_VIEWPORT 0x0BA2 + +/* Evaluators */ +#define GL_AUTO_NORMAL 0x0D80 +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_COEFF 0x0A00 +#define GL_DOMAIN 0x0A02 +#define GL_ORDER 0x0A01 + +/* Hints */ +#define GL_FOG_HINT 0x0C54 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* Scissor box */ +#define GL_SCISSOR_TEST 0x0C11 +#define GL_SCISSOR_BOX 0x0C10 + +/* Pixel Mode / Transfer */ +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_STENCIL 0x0D11 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_RED_SCALE 0x0D14 +#define GL_RED_BIAS 0x0D15 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GREEN_BIAS 0x0D19 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BLUE_BIAS 0x0D1B +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_BIAS 0x0D1F +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 + +/* Texture mapping */ +#define GL_TEXTURE_ENV 0x2300 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_LINEAR 0x2400 +#define GL_EYE_PLANE 0x2502 +#define GL_SPHERE_MAP 0x2402 +#define GL_DECAL 0x2101 +#define GL_MODULATE 0x2100 +#define GL_NEAREST 0x2600 +#define GL_REPEAT 0x2901 +#define GL_CLAMP 0x2900 +#define GL_S 0x2000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 + +/* Utility */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* Errors */ +#define GL_NO_ERROR 0x0 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 + +/* glPush/PopAttrib bits */ +#define GL_CURRENT_BIT 0x00000001 +#define GL_POINT_BIT 0x00000002 +#define GL_LINE_BIT 0x00000004 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_FOG_BIT 0x00000080 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_HINT_BIT 0x00008000 +#define GL_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0x000FFFFF + + +/* OpenGL 1.1 */ +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF + + +/* Under Windows, we do not define OpenGL 1.2 & 1.3 functionality, since + it is treated as extensions (defined in glext.h) */ +#if !defined(__WIN32__) + +/* OpenGL 1.2 */ +#define GL_RESCALE_NORMAL 0x803A +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_TEXTURE_BINDING_3D 0x806A + +/* OpenGL 1.2 imaging subset */ +/* GL_EXT_color_table */ +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +/* GL_EXT_convolution and GL_HP_convolution_border_modes */ +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +/* GL_SGI_color_matrix */ +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +/* GL_EXT_histogram */ +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +/* GL_EXT_blend_color, GL_EXT_blend_minmax */ +#define GL_BLEND_EQUATION 0x8009 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_COLOR 0x8005 + + +/* OpenGL 1.3 */ +/* multitexture */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +/* texture_cube_map */ +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +/* texture_compression */ +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +/* multisample */ +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +/* transpose_matrix */ +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +/* texture_env_combine */ +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +/* texture_env_dot3 */ +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +/* texture_border_clamp */ +#define GL_CLAMP_TO_BORDER 0x812D + +#endif /* __WIN32__ */ + + + +/************************************************************************ + * + * Function prototypes + * + ************************************************************************/ + +/* Miscellaneous */ +GLAPI void APIENTRY glClearIndex( GLfloat c ); +GLAPI void APIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); +GLAPI void APIENTRY glClear( GLbitfield mask ); +GLAPI void APIENTRY glIndexMask( GLuint mask ); +GLAPI void APIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ); +GLAPI void APIENTRY glAlphaFunc( GLenum func, GLclampf ref ); +GLAPI void APIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor ); +GLAPI void APIENTRY glLogicOp( GLenum opcode ); +GLAPI void APIENTRY glCullFace( GLenum mode ); +GLAPI void APIENTRY glFrontFace( GLenum mode ); +GLAPI void APIENTRY glPointSize( GLfloat size ); +GLAPI void APIENTRY glLineWidth( GLfloat width ); +GLAPI void APIENTRY glLineStipple( GLint factor, GLushort pattern ); +GLAPI void APIENTRY glPolygonMode( GLenum face, GLenum mode ); +GLAPI void APIENTRY glPolygonOffset( GLfloat factor, GLfloat units ); +GLAPI void APIENTRY glPolygonStipple( const GLubyte *mask ); +GLAPI void APIENTRY glGetPolygonStipple( GLubyte *mask ); +GLAPI void APIENTRY glEdgeFlag( GLboolean flag ); +GLAPI void APIENTRY glEdgeFlagv( const GLboolean *flag ); +GLAPI void APIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glClipPlane( GLenum plane, const GLdouble *equation ); +GLAPI void APIENTRY glGetClipPlane( GLenum plane, GLdouble *equation ); +GLAPI void APIENTRY glDrawBuffer( GLenum mode ); +GLAPI void APIENTRY glReadBuffer( GLenum mode ); +GLAPI void APIENTRY glEnable( GLenum cap ); +GLAPI void APIENTRY glDisable( GLenum cap ); +GLAPI GLboolean APIENTRY glIsEnabled( GLenum cap ); +GLAPI void APIENTRY glEnableClientState( GLenum cap ); /* 1.1 */ +GLAPI void APIENTRY glDisableClientState( GLenum cap ); /* 1.1 */ +GLAPI void APIENTRY glGetBooleanv( GLenum pname, GLboolean *params ); +GLAPI void APIENTRY glGetDoublev( GLenum pname, GLdouble *params ); +GLAPI void APIENTRY glGetFloatv( GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetIntegerv( GLenum pname, GLint *params ); +GLAPI void APIENTRY glPushAttrib( GLbitfield mask ); +GLAPI void APIENTRY glPopAttrib( void ); +GLAPI void APIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */ +GLAPI void APIENTRY glPopClientAttrib( void ); /* 1.1 */ +GLAPI GLint APIENTRY glRenderMode( GLenum mode ); +GLAPI GLenum APIENTRY glGetError( void ); +GLAPI const GLubyte* APIENTRY glGetString( GLenum name ); +GLAPI void APIENTRY glFinish( void ); +GLAPI void APIENTRY glFlush( void ); +GLAPI void APIENTRY glHint( GLenum target, GLenum mode ); + +/* Depth Buffer */ +GLAPI void APIENTRY glClearDepth( GLclampd depth ); +GLAPI void APIENTRY glDepthFunc( GLenum func ); +GLAPI void APIENTRY glDepthMask( GLboolean flag ); +GLAPI void APIENTRY glDepthRange( GLclampd near_val, GLclampd far_val ); + +/* Accumulation Buffer */ +GLAPI void APIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); +GLAPI void APIENTRY glAccum( GLenum op, GLfloat value ); + +/* Transformation */ +GLAPI void APIENTRY glMatrixMode( GLenum mode ); +GLAPI void APIENTRY glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ); +GLAPI void APIENTRY glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ); +GLAPI void APIENTRY glViewport( GLint x, GLint y, GLsizei width, GLsizei height ); +GLAPI void APIENTRY glPushMatrix( void ); +GLAPI void APIENTRY glPopMatrix( void ); +GLAPI void APIENTRY glLoadIdentity( void ); +GLAPI void APIENTRY glLoadMatrixd( const GLdouble *m ); +GLAPI void APIENTRY glLoadMatrixf( const GLfloat *m ); +GLAPI void APIENTRY glMultMatrixd( const GLdouble *m ); +GLAPI void APIENTRY glMultMatrixf( const GLfloat *m ); +GLAPI void APIENTRY glRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ); +GLAPI void APIENTRY glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ); +GLAPI void APIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void APIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z ); +GLAPI void APIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void APIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z ); + +/* Display Lists */ +GLAPI GLboolean APIENTRY glIsList( GLuint list ); +GLAPI void APIENTRY glDeleteLists( GLuint list, GLsizei range ); +GLAPI GLuint APIENTRY glGenLists( GLsizei range ); +GLAPI void APIENTRY glNewList( GLuint list, GLenum mode ); +GLAPI void APIENTRY glEndList( void ); +GLAPI void APIENTRY glCallList( GLuint list ); +GLAPI void APIENTRY glCallLists( GLsizei n, GLenum type, const GLvoid *lists ); +GLAPI void APIENTRY glListBase( GLuint base ); + +/* Drawing Functions */ +GLAPI void APIENTRY glBegin( GLenum mode ); +GLAPI void APIENTRY glEnd( void ); +GLAPI void APIENTRY glVertex2d( GLdouble x, GLdouble y ); +GLAPI void APIENTRY glVertex2f( GLfloat x, GLfloat y ); +GLAPI void APIENTRY glVertex2i( GLint x, GLint y ); +GLAPI void APIENTRY glVertex2s( GLshort x, GLshort y ); +GLAPI void APIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void APIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z ); +GLAPI void APIENTRY glVertex3i( GLint x, GLint y, GLint z ); +GLAPI void APIENTRY glVertex3s( GLshort x, GLshort y, GLshort z ); +GLAPI void APIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +GLAPI void APIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +GLAPI void APIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w ); +GLAPI void APIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ); +GLAPI void APIENTRY glVertex2dv( const GLdouble *v ); +GLAPI void APIENTRY glVertex2fv( const GLfloat *v ); +GLAPI void APIENTRY glVertex2iv( const GLint *v ); +GLAPI void APIENTRY glVertex2sv( const GLshort *v ); +GLAPI void APIENTRY glVertex3dv( const GLdouble *v ); +GLAPI void APIENTRY glVertex3fv( const GLfloat *v ); +GLAPI void APIENTRY glVertex3iv( const GLint *v ); +GLAPI void APIENTRY glVertex3sv( const GLshort *v ); +GLAPI void APIENTRY glVertex4dv( const GLdouble *v ); +GLAPI void APIENTRY glVertex4fv( const GLfloat *v ); +GLAPI void APIENTRY glVertex4iv( const GLint *v ); +GLAPI void APIENTRY glVertex4sv( const GLshort *v ); +GLAPI void APIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ); +GLAPI void APIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ); +GLAPI void APIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ); +GLAPI void APIENTRY glNormal3i( GLint nx, GLint ny, GLint nz ); +GLAPI void APIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz ); +GLAPI void APIENTRY glNormal3bv( const GLbyte *v ); +GLAPI void APIENTRY glNormal3dv( const GLdouble *v ); +GLAPI void APIENTRY glNormal3fv( const GLfloat *v ); +GLAPI void APIENTRY glNormal3iv( const GLint *v ); +GLAPI void APIENTRY glNormal3sv( const GLshort *v ); +GLAPI void APIENTRY glIndexd( GLdouble c ); +GLAPI void APIENTRY glIndexf( GLfloat c ); +GLAPI void APIENTRY glIndexi( GLint c ); +GLAPI void APIENTRY glIndexs( GLshort c ); +GLAPI void APIENTRY glIndexub( GLubyte c ); /* 1.1 */ +GLAPI void APIENTRY glIndexdv( const GLdouble *c ); +GLAPI void APIENTRY glIndexfv( const GLfloat *c ); +GLAPI void APIENTRY glIndexiv( const GLint *c ); +GLAPI void APIENTRY glIndexsv( const GLshort *c ); +GLAPI void APIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */ +GLAPI void APIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue ); +GLAPI void APIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue ); +GLAPI void APIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue ); +GLAPI void APIENTRY glColor3i( GLint red, GLint green, GLint blue ); +GLAPI void APIENTRY glColor3s( GLshort red, GLshort green, GLshort blue ); +GLAPI void APIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue ); +GLAPI void APIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue ); +GLAPI void APIENTRY glColor3us( GLushort red, GLushort green, GLushort blue ); +GLAPI void APIENTRY glColor4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ); +GLAPI void APIENTRY glColor4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha ); +GLAPI void APIENTRY glColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); +GLAPI void APIENTRY glColor4i( GLint red, GLint green, GLint blue, GLint alpha ); +GLAPI void APIENTRY glColor4s( GLshort red, GLshort green, GLshort blue, GLshort alpha ); +GLAPI void APIENTRY glColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ); +GLAPI void APIENTRY glColor4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha ); +GLAPI void APIENTRY glColor4us( GLushort red, GLushort green, GLushort blue, GLushort alpha ); +GLAPI void APIENTRY glColor3bv( const GLbyte *v ); +GLAPI void APIENTRY glColor3dv( const GLdouble *v ); +GLAPI void APIENTRY glColor3fv( const GLfloat *v ); +GLAPI void APIENTRY glColor3iv( const GLint *v ); +GLAPI void APIENTRY glColor3sv( const GLshort *v ); +GLAPI void APIENTRY glColor3ubv( const GLubyte *v ); +GLAPI void APIENTRY glColor3uiv( const GLuint *v ); +GLAPI void APIENTRY glColor3usv( const GLushort *v ); +GLAPI void APIENTRY glColor4bv( const GLbyte *v ); +GLAPI void APIENTRY glColor4dv( const GLdouble *v ); +GLAPI void APIENTRY glColor4fv( const GLfloat *v ); +GLAPI void APIENTRY glColor4iv( const GLint *v ); +GLAPI void APIENTRY glColor4sv( const GLshort *v ); +GLAPI void APIENTRY glColor4ubv( const GLubyte *v ); +GLAPI void APIENTRY glColor4uiv( const GLuint *v ); +GLAPI void APIENTRY glColor4usv( const GLushort *v ); +GLAPI void APIENTRY glTexCoord1d( GLdouble s ); +GLAPI void APIENTRY glTexCoord1f( GLfloat s ); +GLAPI void APIENTRY glTexCoord1i( GLint s ); +GLAPI void APIENTRY glTexCoord1s( GLshort s ); +GLAPI void APIENTRY glTexCoord2d( GLdouble s, GLdouble t ); +GLAPI void APIENTRY glTexCoord2f( GLfloat s, GLfloat t ); +GLAPI void APIENTRY glTexCoord2i( GLint s, GLint t ); +GLAPI void APIENTRY glTexCoord2s( GLshort s, GLshort t ); +GLAPI void APIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r ); +GLAPI void APIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r ); +GLAPI void APIENTRY glTexCoord3i( GLint s, GLint t, GLint r ); +GLAPI void APIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r ); +GLAPI void APIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ); +GLAPI void APIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ); +GLAPI void APIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q ); +GLAPI void APIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ); +GLAPI void APIENTRY glTexCoord1dv( const GLdouble *v ); +GLAPI void APIENTRY glTexCoord1fv( const GLfloat *v ); +GLAPI void APIENTRY glTexCoord1iv( const GLint *v ); +GLAPI void APIENTRY glTexCoord1sv( const GLshort *v ); +GLAPI void APIENTRY glTexCoord2dv( const GLdouble *v ); +GLAPI void APIENTRY glTexCoord2fv( const GLfloat *v ); +GLAPI void APIENTRY glTexCoord2iv( const GLint *v ); +GLAPI void APIENTRY glTexCoord2sv( const GLshort *v ); +GLAPI void APIENTRY glTexCoord3dv( const GLdouble *v ); +GLAPI void APIENTRY glTexCoord3fv( const GLfloat *v ); +GLAPI void APIENTRY glTexCoord3iv( const GLint *v ); +GLAPI void APIENTRY glTexCoord3sv( const GLshort *v ); +GLAPI void APIENTRY glTexCoord4dv( const GLdouble *v ); +GLAPI void APIENTRY glTexCoord4fv( const GLfloat *v ); +GLAPI void APIENTRY glTexCoord4iv( const GLint *v ); +GLAPI void APIENTRY glTexCoord4sv( const GLshort *v ); +GLAPI void APIENTRY glRasterPos2d( GLdouble x, GLdouble y ); +GLAPI void APIENTRY glRasterPos2f( GLfloat x, GLfloat y ); +GLAPI void APIENTRY glRasterPos2i( GLint x, GLint y ); +GLAPI void APIENTRY glRasterPos2s( GLshort x, GLshort y ); +GLAPI void APIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z ); +GLAPI void APIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z ); +GLAPI void APIENTRY glRasterPos3i( GLint x, GLint y, GLint z ); +GLAPI void APIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z ); +GLAPI void APIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); +GLAPI void APIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); +GLAPI void APIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w ); +GLAPI void APIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ); +GLAPI void APIENTRY glRasterPos2dv( const GLdouble *v ); +GLAPI void APIENTRY glRasterPos2fv( const GLfloat *v ); +GLAPI void APIENTRY glRasterPos2iv( const GLint *v ); +GLAPI void APIENTRY glRasterPos2sv( const GLshort *v ); +GLAPI void APIENTRY glRasterPos3dv( const GLdouble *v ); +GLAPI void APIENTRY glRasterPos3fv( const GLfloat *v ); +GLAPI void APIENTRY glRasterPos3iv( const GLint *v ); +GLAPI void APIENTRY glRasterPos3sv( const GLshort *v ); +GLAPI void APIENTRY glRasterPos4dv( const GLdouble *v ); +GLAPI void APIENTRY glRasterPos4fv( const GLfloat *v ); +GLAPI void APIENTRY glRasterPos4iv( const GLint *v ); +GLAPI void APIENTRY glRasterPos4sv( const GLshort *v ); +GLAPI void APIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ); +GLAPI void APIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ); +GLAPI void APIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 ); +GLAPI void APIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ); +GLAPI void APIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 ); +GLAPI void APIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 ); +GLAPI void APIENTRY glRectiv( const GLint *v1, const GLint *v2 ); +GLAPI void APIENTRY glRectsv( const GLshort *v1, const GLshort *v2 ); + +/* Lighting */ +GLAPI void APIENTRY glShadeModel( GLenum mode ); +GLAPI void APIENTRY glLightf( GLenum light, GLenum pname, GLfloat param ); +GLAPI void APIENTRY glLighti( GLenum light, GLenum pname, GLint param ); +GLAPI void APIENTRY glLightfv( GLenum light, GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glLightiv( GLenum light, GLenum pname, const GLint *params ); +GLAPI void APIENTRY glGetLightfv( GLenum light, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetLightiv( GLenum light, GLenum pname, GLint *params ); +GLAPI void APIENTRY glLightModelf( GLenum pname, GLfloat param ); +GLAPI void APIENTRY glLightModeli( GLenum pname, GLint param ); +GLAPI void APIENTRY glLightModelfv( GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glLightModeliv( GLenum pname, const GLint *params ); +GLAPI void APIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param ); +GLAPI void APIENTRY glMateriali( GLenum face, GLenum pname, GLint param ); +GLAPI void APIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params ); +GLAPI void APIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params ); +GLAPI void APIENTRY glColorMaterial( GLenum face, GLenum mode ); + +/* Raster functions */ +GLAPI void APIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor ); +GLAPI void APIENTRY glPixelStoref( GLenum pname, GLfloat param ); +GLAPI void APIENTRY glPixelStorei( GLenum pname, GLint param ); +GLAPI void APIENTRY glPixelTransferf( GLenum pname, GLfloat param ); +GLAPI void APIENTRY glPixelTransferi( GLenum pname, GLint param ); +GLAPI void APIENTRY glPixelMapfv( GLenum map, GLint mapsize, const GLfloat *values ); +GLAPI void APIENTRY glPixelMapuiv( GLenum map, GLint mapsize, const GLuint *values ); +GLAPI void APIENTRY glPixelMapusv( GLenum map, GLint mapsize, const GLushort *values ); +GLAPI void APIENTRY glGetPixelMapfv( GLenum map, GLfloat *values ); +GLAPI void APIENTRY glGetPixelMapuiv( GLenum map, GLuint *values ); +GLAPI void APIENTRY glGetPixelMapusv( GLenum map, GLushort *values ); +GLAPI void APIENTRY glBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap ); +GLAPI void APIENTRY glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ); +GLAPI void APIENTRY glDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ); +GLAPI void APIENTRY glCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type ); + +/* Stenciling */ +GLAPI void APIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask ); +GLAPI void APIENTRY glStencilMask( GLuint mask ); +GLAPI void APIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass ); +GLAPI void APIENTRY glClearStencil( GLint s ); + +/* Texture mapping */ +GLAPI void APIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param ); +GLAPI void APIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param ); +GLAPI void APIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param ); +GLAPI void APIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params ); +GLAPI void APIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params ); +GLAPI void APIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ); +GLAPI void APIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params ); +GLAPI void APIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param ); +GLAPI void APIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param ); +GLAPI void APIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params ); +GLAPI void APIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params ); +GLAPI void APIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param ); +GLAPI void APIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param ); +GLAPI void APIENTRY glTexParameterfv( GLenum target, GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glTexParameteriv( GLenum target, GLenum pname, const GLint *params ); +GLAPI void APIENTRY glGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params); +GLAPI void APIENTRY glGetTexParameteriv( GLenum target, GLenum pname, GLint *params ); +GLAPI void APIENTRY glGetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params ); +GLAPI void APIENTRY glTexImage1D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels ); +GLAPI void APIENTRY glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ); +GLAPI void APIENTRY glGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ); + +/* Evaluators */ +GLAPI void APIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points ); +GLAPI void APIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points ); +GLAPI void APIENTRY glMap2d( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points ); +GLAPI void APIENTRY glMap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points ); +GLAPI void APIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v ); +GLAPI void APIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v ); +GLAPI void APIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v ); +GLAPI void APIENTRY glEvalCoord1d( GLdouble u ); +GLAPI void APIENTRY glEvalCoord1f( GLfloat u ); +GLAPI void APIENTRY glEvalCoord1dv( const GLdouble *u ); +GLAPI void APIENTRY glEvalCoord1fv( const GLfloat *u ); +GLAPI void APIENTRY glEvalCoord2d( GLdouble u, GLdouble v ); +GLAPI void APIENTRY glEvalCoord2f( GLfloat u, GLfloat v ); +GLAPI void APIENTRY glEvalCoord2dv( const GLdouble *u ); +GLAPI void APIENTRY glEvalCoord2fv( const GLfloat *u ); +GLAPI void APIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ); +GLAPI void APIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ); +GLAPI void APIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 ); +GLAPI void APIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ); +GLAPI void APIENTRY glEvalPoint1( GLint i ); +GLAPI void APIENTRY glEvalPoint2( GLint i, GLint j ); +GLAPI void APIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 ); +GLAPI void APIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ); + +/* Fog */ +GLAPI void APIENTRY glFogf( GLenum pname, GLfloat param ); +GLAPI void APIENTRY glFogi( GLenum pname, GLint param ); +GLAPI void APIENTRY glFogfv( GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glFogiv( GLenum pname, const GLint *params ); + +/* Selection and Feedback */ +GLAPI void APIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ); +GLAPI void APIENTRY glPassThrough( GLfloat token ); +GLAPI void APIENTRY glSelectBuffer( GLsizei size, GLuint *buffer ); +GLAPI void APIENTRY glInitNames( void ); +GLAPI void APIENTRY glLoadName( GLuint name ); +GLAPI void APIENTRY glPushName( GLuint name ); +GLAPI void APIENTRY glPopName( void ); + + +/* 1.1 functions */ +/* texture objects */ +GLAPI void APIENTRY glGenTextures( GLsizei n, GLuint *textures ); +GLAPI void APIENTRY glDeleteTextures( GLsizei n, const GLuint *textures); +GLAPI void APIENTRY glBindTexture( GLenum target, GLuint texture ); +GLAPI void APIENTRY glPrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities ); +GLAPI GLboolean APIENTRY glAreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences ); +GLAPI GLboolean APIENTRY glIsTexture( GLuint texture ); +/* texture mapping */ +GLAPI void APIENTRY glTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ); +GLAPI void APIENTRY glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ); +GLAPI void APIENTRY glCopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ); +GLAPI void APIENTRY glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ); +GLAPI void APIENTRY glCopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ); +GLAPI void APIENTRY glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ); +/* vertex arrays */ +GLAPI void APIENTRY glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ); +GLAPI void APIENTRY glNormalPointer( GLenum type, GLsizei stride, const GLvoid *ptr ); +GLAPI void APIENTRY glColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ); +GLAPI void APIENTRY glIndexPointer( GLenum type, GLsizei stride, const GLvoid *ptr ); +GLAPI void APIENTRY glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ); +GLAPI void APIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ); +GLAPI void APIENTRY glGetPointerv( GLenum pname, GLvoid **params ); +GLAPI void APIENTRY glArrayElement( GLint i ); +GLAPI void APIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count ); +GLAPI void APIENTRY glDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ); +GLAPI void APIENTRY glInterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer ); + + + +/* Under Windows, we do not define OpenGL 1.2 & 1.3 functionality, since + it is treated as extensions (defined in glext.h) */ +#if !defined(__WIN32__) + +/* 1.2 functions */ +GLAPI void APIENTRY glDrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ); +GLAPI void APIENTRY glTexImage3D( GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ); +GLAPI void APIENTRY glTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +GLAPI void APIENTRY glCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ); + +/* 1.2 imaging extension functions */ +GLAPI void APIENTRY glColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ); +GLAPI void APIENTRY glColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ); +GLAPI void APIENTRY glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params); +GLAPI void APIENTRY glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY glCopyColorSubTable( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width ); +GLAPI void APIENTRY glCopyColorTable( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ); +GLAPI void APIENTRY glGetColorTable( GLenum target, GLenum format, GLenum type, GLvoid *table ); +GLAPI void APIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ); +GLAPI void APIENTRY glBlendEquation( GLenum mode ); +GLAPI void APIENTRY glBlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); +GLAPI void APIENTRY glHistogram( GLenum target, GLsizei width, GLenum internalformat, GLboolean sink ); +GLAPI void APIENTRY glResetHistogram( GLenum target ); +GLAPI void APIENTRY glGetHistogram( GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values ); +GLAPI void APIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname, GLint *params ); +GLAPI void APIENTRY glMinmax( GLenum target, GLenum internalformat, GLboolean sink ); +GLAPI void APIENTRY glResetMinmax( GLenum target ); +GLAPI void APIENTRY glGetMinmax( GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values ); +GLAPI void APIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname, GLint *params ); +GLAPI void APIENTRY glConvolutionFilter1D( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image ); +GLAPI void APIENTRY glConvolutionFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image ); +GLAPI void APIENTRY glConvolutionParameterf( GLenum target, GLenum pname, GLfloat params ); +GLAPI void APIENTRY glConvolutionParameterfv( GLenum target, GLenum pname, const GLfloat *params ); +GLAPI void APIENTRY glConvolutionParameteri( GLenum target, GLenum pname, GLint params ); +GLAPI void APIENTRY glConvolutionParameteriv( GLenum target, GLenum pname, const GLint *params ); +GLAPI void APIENTRY glCopyConvolutionFilter1D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ); +GLAPI void APIENTRY glCopyConvolutionFilter2D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI void APIENTRY glGetConvolutionFilter( GLenum target, GLenum format, GLenum type, GLvoid *image ); +GLAPI void APIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname, GLfloat *params ); +GLAPI void APIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname, GLint *params ); +GLAPI void APIENTRY glSeparableFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column ); +GLAPI void APIENTRY glGetSeparableFilter( GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ); + +/* 1.3 functions */ +GLAPI void APIENTRY glActiveTexture( GLenum texture ); +GLAPI void APIENTRY glClientActiveTexture( GLenum texture ); +GLAPI void APIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data ); +GLAPI void APIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); +GLAPI void APIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ); +GLAPI void APIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data ); +GLAPI void APIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); +GLAPI void APIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ); +GLAPI void APIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img ); +GLAPI void APIENTRY glMultiTexCoord1d( GLenum target, GLdouble s ); +GLAPI void APIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v ); +GLAPI void APIENTRY glMultiTexCoord1f( GLenum target, GLfloat s ); +GLAPI void APIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v ); +GLAPI void APIENTRY glMultiTexCoord1i( GLenum target, GLint s ); +GLAPI void APIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v ); +GLAPI void APIENTRY glMultiTexCoord1s( GLenum target, GLshort s ); +GLAPI void APIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v ); +GLAPI void APIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t ); +GLAPI void APIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v ); +GLAPI void APIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t ); +GLAPI void APIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v ); +GLAPI void APIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t ); +GLAPI void APIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v ); +GLAPI void APIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t ); +GLAPI void APIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v ); +GLAPI void APIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r ); +GLAPI void APIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v ); +GLAPI void APIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r ); +GLAPI void APIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v ); +GLAPI void APIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r ); +GLAPI void APIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v ); +GLAPI void APIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r ); +GLAPI void APIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v ); +GLAPI void APIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q ); +GLAPI void APIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v ); +GLAPI void APIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); +GLAPI void APIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v ); +GLAPI void APIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q ); +GLAPI void APIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v ); +GLAPI void APIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q ); +GLAPI void APIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v ); +GLAPI void APIENTRY glLoadTransposeMatrixd( const GLdouble m[16] ); +GLAPI void APIENTRY glLoadTransposeMatrixf( const GLfloat m[16] ); +GLAPI void APIENTRY glMultTransposeMatrixd( const GLdouble m[16] ); +GLAPI void APIENTRY glMultTransposeMatrixf( const GLfloat m[16] ); +GLAPI void APIENTRY glSampleCoverage( GLclampf value, GLboolean invert ); +GLAPI void APIENTRY glSamplePass( GLenum pass ); + +#endif /* __WIN32__ */ + + +/* Include external definitions of OpenGL extensions */ +/* Removed, see this bug report for reference: + * http://sourceforge.net/tracker/index.php?func=detail&aid=610178&group_id=2435&atid=102435 + * + * #include + */ + + +/************************************************************************ + * Begin system-specific stuff + */ +/* + * End system-specific stuff + ************************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ diff --git a/reactos/w32api/include/GL/glext.h b/reactos/w32api/include/GL/glext.h new file mode 100644 index 00000000000..c4b4baa0930 --- /dev/null +++ b/reactos/w32api/include/GL/glext.h @@ -0,0 +1,4623 @@ +#ifndef __glext_h_ +#define __glext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** License Applicability. Except to the extent portions of this file are +** made subject to an alternative license as permitted in the SGI Free +** Software License B, Version 1.1 (the "License"), the contents of this +** file are subject only to the provisions of the License. You may not use +** this file except in compliance with the License. You may obtain a copy +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +** +** http://oss.sgi.com/projects/FreeB +** +** Note that, as provided in the License, the Software is distributed on an +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +** +** Original Code. The Original Code is: OpenGL Sample Implementation, +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +** Copyright in any portions created by third parties is as indicated +** elsewhere herein. All Rights Reserved. +** +** Additional Notice Provisions: This software was created using the +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has +** not been independently verified as being compliant with the OpenGL(R) +** version 1.2.1 Specification. +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) +#define WIN32_LEAN_AND_MEAN 1 +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +/*************************************************************/ + +/* Header file version number, required by OpenGL ABI for Linux */ +/* glext.h last updated 2002/03/22 */ +/* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */ +#define GL_GLEXT_VERSION 11 + +#ifndef GL_VERSION_1_2 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_FUNC_ADD 0x8006 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BLEND_EQUATION 0x8009 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_RESCALE_NORMAL 0x803A +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_IGNORE_BORDER 0x8150 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_WRAP_BORDER 0x8152 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#endif + +#ifndef GL_VERSION_1_3 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#endif + +#ifndef GL_ARB_multitexture +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#endif + +#ifndef GL_ARB_transpose_matrix +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#endif + +#ifndef GL_ARB_multisample +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#endif + +#ifndef GL_ARB_texture_env_add +#endif + +#ifndef GL_ARB_texture_cube_map +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#endif + +#ifndef GL_ARB_texture_compression +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +#endif + +#ifndef GL_ARB_texture_border_clamp +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif + +#ifndef GL_ARB_point_parameters +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#endif + +#ifndef GL_ARB_vertex_blend +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +#endif + +#ifndef GL_ARB_matrix_palette +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +#endif + +#ifndef GL_ARB_texture_env_combine +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#endif + +#ifndef GL_ARB_texture_env_crossbar +#endif + +#ifndef GL_ARB_texture_env_dot3 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGB_EXT 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#define GL_DOT3_RGBA_EXT 0x86AF +#endif + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif + +#ifndef GL_ARB_depth_texture +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#endif + +#ifndef GL_ARB_shadow +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#endif + +#ifndef GL_ARB_shadow_ambient +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#endif + +#ifndef GL_ARB_window_pos +#endif + +#ifndef GL_EXT_abgr +#define GL_ABGR_EXT 0x8000 +#endif + +#ifndef GL_EXT_blend_color +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 +#endif + +#ifndef GL_EXT_polygon_offset +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#endif + +#ifndef GL_EXT_texture +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#endif + +#ifndef GL_EXT_texture3D +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#endif + +#ifndef GL_SGIS_texture_filter4 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#endif + +#ifndef GL_EXT_subtexture +#endif + +#ifndef GL_EXT_copy_texture +#endif + +#ifndef GL_EXT_histogram +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#endif + +#ifndef GL_EXT_convolution +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +#endif + +#ifndef GL_SGI_color_matrix +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#endif + +#ifndef GL_SGI_color_table +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +#endif + +#ifndef GL_SGIS_pixel_texture +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#endif + +#ifndef GL_SGIX_pixel_texture +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#endif + +#ifndef GL_SGIS_texture4D +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#endif + +#ifndef GL_SGI_texture_color_table +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#endif + +#ifndef GL_EXT_cmyka +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#endif + +#ifndef GL_EXT_texture_object +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#endif + +#ifndef GL_SGIS_detail_texture +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +#endif + +#ifndef GL_SGIS_sharpen_texture +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +#endif + +#ifndef GL_EXT_packed_pixels +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#endif + +#ifndef GL_SGIS_texture_lod +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#endif + +#ifndef GL_SGIS_multisample +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#endif + +#ifndef GL_EXT_rescale_normal +#define GL_RESCALE_NORMAL_EXT 0x803A +#endif + +#ifndef GL_EXT_vertex_array +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#endif + +#ifndef GL_EXT_misc_attribute +#endif + +#ifndef GL_SGIS_generate_mipmap +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#endif + +#ifndef GL_SGIX_clipmap +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#endif + +#ifndef GL_SGIX_shadow +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#endif + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#endif + +#ifndef GL_EXT_blend_minmax +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 +#endif + +#ifndef GL_EXT_blend_subtract +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#endif + +#ifndef GL_EXT_blend_logic_op +#endif + +#ifndef GL_SGIX_interlace +#define GL_INTERLACE_SGIX 0x8094 +#endif + +#ifndef GL_SGIX_pixel_tiles +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#endif + +#ifndef GL_SGIS_texture_select +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#endif + +#ifndef GL_SGIX_sprite +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#endif + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#endif + +#ifndef GL_SGIX_instruments +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#endif + +#ifndef GL_SGIX_texture_scale_bias +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#endif + +#ifndef GL_SGIX_framezoom +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#endif + +#ifndef GL_SGIX_tag_sample_buffer +#endif + +#ifndef GL_FfdMaskSGIX +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#endif + +#ifndef GL_SGIX_polynomial_ffd +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#endif + +#ifndef GL_SGIX_reference_plane +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#endif + +#ifndef GL_SGIX_flush_raster +#endif + +#ifndef GL_SGIX_depth_texture +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#endif + +#ifndef GL_SGIS_fog_function +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#endif + +#ifndef GL_SGIX_fog_offset +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#endif + +#ifndef GL_HP_image_transform +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +#endif + +#ifndef GL_HP_convolution_border_modes +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#endif + +#ifndef GL_INGR_palette_buffer +#endif + +#ifndef GL_SGIX_texture_add_env +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#endif + +#ifndef GL_EXT_color_subtable +#endif + +#ifndef GL_PGI_vertex_hints +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#endif + +#ifndef GL_PGI_misc_hints +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#endif + +#ifndef GL_EXT_paletted_texture +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#endif + +#ifndef GL_EXT_clip_volume_hint +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#endif + +#ifndef GL_SGIX_list_priority +#define GL_LIST_PRIORITY_SGIX 0x8182 +#endif + +#ifndef GL_SGIX_ir_instrument1 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#endif + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#endif + +#ifndef GL_SGIX_texture_lod_bias +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#endif + +#ifndef GL_SGIX_shadow_ambient +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#endif + +#ifndef GL_EXT_index_texture +#endif + +#ifndef GL_EXT_index_material +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#endif + +#ifndef GL_EXT_index_func +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +#endif + +#ifndef GL_EXT_index_array_formats +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#endif + +#ifndef GL_EXT_compiled_vertex_array +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#endif + +#ifndef GL_EXT_cull_vertex +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +#endif + +#ifndef GL_SGIX_ycrcb +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#endif + +#ifndef GL_SGIX_fragment_lighting +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#endif + +#ifndef GL_IBM_rasterpos_clip +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#endif + +#ifndef GL_HP_texture_lighting +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#endif + +#ifndef GL_EXT_draw_range_elements +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#endif + +#ifndef GL_WIN_phong_shading +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#endif + +#ifndef GL_WIN_specular_fog +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#endif + +#ifndef GL_EXT_light_texture +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +/* reuse GL_FRAGMENT_DEPTH_EXT */ +#endif + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#endif + +#ifndef GL_SGIX_impact_pixel_texture +#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 +#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 +#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 +#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 +#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 +#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 +#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A +#endif + +#ifndef GL_EXT_bgra +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#endif + +#ifndef GL_SGIX_async +#define GL_ASYNC_MARKER_SGIX 0x8329 +#endif + +#ifndef GL_SGIX_async_pixel +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#endif + +#ifndef GL_SGIX_async_histogram +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#endif + +#ifndef GL_INTEL_texture_scissor +#endif + +#ifndef GL_INTEL_parallel_arrays +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +#endif + +#ifndef GL_HP_occlusion_test +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#endif + +#ifndef GL_EXT_pixel_transform +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#endif + +#ifndef GL_EXT_pixel_transform_color_table +#endif + +#ifndef GL_EXT_shared_texture_palette +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#endif + +#ifndef GL_EXT_separate_specular_color +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif + +#ifndef GL_EXT_secondary_color +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#endif + +#ifndef GL_EXT_texture_perturb_normal +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF +#endif + +#ifndef GL_EXT_multi_draw_arrays +#endif + +#ifndef GL_EXT_fog_coord +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#endif + +#ifndef GL_REND_screen_coordinates +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#endif + +#ifndef GL_EXT_coordinate_frame +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 +#endif + +#ifndef GL_EXT_texture_env_combine +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#endif + +#ifndef GL_APPLE_specular_vector +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#endif + +#ifndef GL_APPLE_transform_hint +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#endif + +#ifndef GL_SGIX_fog_scale +#define GL_FOG_SCALE_SGIX 0x81FC +#define GL_FOG_SCALE_VALUE_SGIX 0x81FD +#endif + +#ifndef GL_SUNX_constant_data +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#endif + +#ifndef GL_SUN_global_alpha +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#endif + +#ifndef GL_SUN_triangle_list +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#endif + +#ifndef GL_SUN_vertex +#endif + +#ifndef GL_EXT_blend_func_separate +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#endif + +#ifndef GL_INGR_color_clamp +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#endif + +#ifndef GL_INGR_interlace_read +#define GL_INTERLACE_READ_INGR 0x8568 +#endif + +#ifndef GL_EXT_stencil_wrap +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#endif + +#ifndef GL_EXT_422_pixels +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#endif + +#ifndef GL_NV_texgen_reflection +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#endif + +#ifndef GL_EXT_texture_cube_map +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#endif + +#ifndef GL_SUN_convolution_border_modes +#define GL_WRAP_BORDER_SUN 0x81D4 +#endif + +#ifndef GL_EXT_texture_env_add +#endif + +#ifndef GL_EXT_texture_lod_bias +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +#ifndef GL_EXT_vertex_weighting +#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT GL_MODELVIEW +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +#endif + +#ifndef GL_NV_light_max_exponent +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#endif + +#ifndef GL_NV_vertex_array_range +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#endif + +#ifndef GL_NV_register_combiners +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +/* reuse GL_TEXTURE0_ARB */ +/* reuse GL_TEXTURE1_ARB */ +/* reuse GL_ZERO */ +/* reuse GL_NONE */ +/* reuse GL_FOG */ +#endif + +#ifndef GL_NV_fog_distance +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +/* reuse GL_EYE_PLANE */ +#endif + +#ifndef GL_NV_texgen_emboss +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#endif + +#ifndef GL_NV_blend_square +#endif + +#ifndef GL_NV_texture_env_combine4 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#endif + +#ifndef GL_MESA_resize_buffers +#endif + +#ifndef GL_MESA_window_pos +#endif + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif + +#ifndef GL_IBM_cull_vertex +#define GL_CULL_VERTEX_IBM 103050 +#endif + +#ifndef GL_IBM_multimode_draw_arrays +#endif + +#ifndef GL_IBM_vertex_array_lists +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +#endif + +#ifndef GL_SGIX_subsample +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#endif + +#ifndef GL_SGIX_ycrcb_subsample +#endif + +#ifndef GL_SGIX_ycrcba +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#endif + +#ifndef GL_SGI_depth_pass_instrument +#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 +#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 +#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 +#endif + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#endif + +#ifndef GL_3DFX_multisample +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#endif + +#ifndef GL_3DFX_tbuffer +#endif + +#ifndef GL_EXT_multisample +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#endif + +#ifndef GL_SGIX_vertex_preclip +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#endif + +#ifndef GL_SGIX_convolution_accuracy +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#endif + +#ifndef GL_SGIX_resample +#define GL_PACK_RESAMPLE_SGIX 0x842C +#define GL_UNPACK_RESAMPLE_SGIX 0x842D +#define GL_RESAMPLE_REPLICATE_SGIX 0x842E +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#endif + +#ifndef GL_SGIS_point_line_texgen +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#endif + +#ifndef GL_SGIS_texture_color_mask +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#endif + +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#endif + +#ifndef GL_NV_evaluators +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#endif + +#ifndef GL_NV_packed_depth_stencil +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#endif + +#ifndef GL_NV_register_combiners2 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#endif + +#ifndef GL_NV_texture_compression_vtc +#endif + +#ifndef GL_NV_texture_rectangle +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_TEXTURE_RECTANGLE_SIZE_NV 0x84F8 +#endif + +#ifndef GL_NV_texture_shader +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV +#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV +#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#endif + +#ifndef GL_NV_texture_shader2 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#endif + +#ifndef GL_NV_vertex_array_range2 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#endif + +#ifndef GL_NV_vertex_program +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#endif + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#endif + +#ifndef GL_SGIX_scalebias_hint +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#endif + +#ifndef GL_OML_interlace +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#endif + +#ifndef GL_OML_subsample +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#endif + +#ifndef GL_OML_resample +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#endif + +#ifndef GL_NV_copy_depth_to_color +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#endif + +#ifndef GL_ATI_envmap_bumpmap +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C +#endif + +#ifndef GL_ATI_fragment_shader +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 +#endif + +#ifndef GL_ATI_pn_triangles +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +#endif + +#ifndef GL_ATI_vertex_array_object +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#endif + +#ifndef GL_EXT_vertex_shader +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#endif + +#ifndef GL_ATI_vertex_streams +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 +#endif + +#ifndef GL_ATI_element_array +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#endif + +#ifndef GL_SUN_mesh_array +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 +#endif + +#ifndef GL_SUN_slice_accum +#define GL_SLICE_ACCUM_SUN 0x85CC +#endif + +#ifndef GL_NV_multisample_filter_hint +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#endif + +#ifndef GL_NV_depth_clamp +#define GL_DEPTH_CLAMP_NV 0x864F +#endif + +#ifndef GL_NV_occlusion_query +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#endif + +#ifndef GL_NV_point_sprite +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#endif + +#ifndef GL_NV_texture_shader3 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#endif + +#ifndef GL_NV_vertex_program1_1 +#endif + + +/*************************************************************/ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf); +GLAPI void APIENTRY glBlendEquation (GLenum); +GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei); +GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); +GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); +GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogram (GLenum); +GLAPI void APIENTRY glResetMinmax (GLenum); +GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void (APIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void (APIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +typedef void (APIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); +typedef void (APIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); +typedef void (APIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTexture (GLenum); +GLAPI void APIENTRY glClientActiveTexture (GLenum); +GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *); +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *); +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *); +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *); +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *); +GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean); +GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, void *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void (APIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img); +#endif + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glActiveTextureARB (GLenum); +GLAPI void APIENTRY glClientActiveTextureARB (GLenum); +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +#endif + +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *); +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *); +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *); +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +#endif + +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); +#endif + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +#endif + +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +#endif + +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, void *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); +typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img); +#endif + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#endif + +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *); +GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *); +GLAPI void APIENTRY glWeightivARB (GLint, const GLint *); +GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *); +GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *); +GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *); +GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *); +GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *); +GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexBlendARB (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); +typedef void (APIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); +typedef void (APIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); +typedef void (APIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); +typedef void (APIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); +typedef void (APIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); +typedef void (APIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); +typedef void (APIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); +typedef void (APIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); +#endif + +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint); +GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *); +GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *); +GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *); +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); +typedef void (APIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); +typedef void (APIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); +typedef void (APIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); +typedef void (APIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +#endif + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +#endif + +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +#endif + +#ifndef GL_ARB_texture_mirror_repeat +#define GL_ARB_texture_mirror_repeat 1 +#endif + +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +#endif + +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +#endif + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +#endif + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *); +GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *); +GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *); +GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *); +GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *); +GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *); +GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *); +GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); +typedef void (APIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); +typedef void (APIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); +#endif + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +#endif + +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +#endif + +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); +#endif + +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +#endif + +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); +typedef void (APIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +#endif + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +#endif + +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogramEXT (GLenum); +GLAPI void APIENTRY glResetMinmaxEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); +typedef void (APIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); +typedef void (APIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); +typedef void (APIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); +#endif + +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); +typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +#endif + +#ifndef GL_EXT_color_matrix +#define GL_EXT_color_matrix 1 +#endif + +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); +typedef void (APIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +#endif + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); +#endif + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *); +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); +#endif + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (APIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); +#endif + +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +#endif + +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +#endif + +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *); +GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint); +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint); +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); +typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); +typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); +typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); +typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); +typedef void (APIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +#endif + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#endif + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); +typedef void (APIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +#endif + +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +#endif + +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +#endif + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternSGIS (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); +#endif + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +#endif + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glArrayElementEXT (GLint); +GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei); +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *); +GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *); +GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); +typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); +typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); +typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +#endif + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +#endif + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +#endif + +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +#endif + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +#endif + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +#endif + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendEquationEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +#endif + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +#endif + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +#endif + +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +#endif + +#ifndef GL_SGIX_texture_select +#define GL_SGIX_texture_select 1 +#endif + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat); +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *); +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint); +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); +#endif + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +#endif + +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *); +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *); +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint); +GLAPI void APIENTRY glStartInstrumentsSGIX (void); +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLint (APIENTRY * PFNGLGETINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRY * PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); +typedef GLint (APIENTRY * PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); +typedef void (APIENTRY * PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); +typedef void (APIENTRY * PFNGLSTARTINSTRUMENTSSGIXPROC) (void); +typedef void (APIENTRY * PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); +#endif + +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +#endif + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFrameZoomSGIX (GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); +#endif + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTagSampleBufferSGIX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); +#endif + +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); +GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); +GLAPI void APIENTRY glDeformSGIX (GLbitfield); +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); +typedef void (APIENTRY * PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); +typedef void (APIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask); +typedef void (APIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); +#endif + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); +#endif + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushRasterSGIX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); +#endif + +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +#endif + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); +typedef void (APIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); +#endif + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +#endif + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint); +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +#endif + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +#endif + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); +typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#endif + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +#endif + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glHintPGI (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLHINTPGIPROC) (GLenum target, GLint mode); +#endif + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); +typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +#endif + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat); +GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *); +GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint); +GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); +#endif + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +#endif + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +#endif + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +#endif + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +#endif + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +#endif + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); +#endif + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); +#endif + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +#endif + +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei); +GLAPI void APIENTRY glUnlockArraysEXT (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); +typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); +#endif + +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *); +GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); +typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); +#endif + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +#endif + +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum); +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint); +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *); +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); +#endif + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +#endif + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +#endif + +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +#endif + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +#endif + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +#endif + +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glApplyTextureEXT (GLenum); +GLAPI void APIENTRY glTextureLightEXT (GLenum); +GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); +typedef void (APIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); +typedef void (APIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); +#endif + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +#endif + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +#endif + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint); +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *); +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *); +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei); +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei); +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); +typedef GLint (APIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); +typedef GLint (APIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); +typedef GLuint (APIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); +typedef void (APIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); +typedef GLboolean (APIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +#endif + +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +#endif + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +#endif + +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *); +GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *); +GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *); +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +typedef void (APIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer); +typedef void (APIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +typedef void (APIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +#endif + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +#endif + +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint); +GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +#endif + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +#endif + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +#endif + +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +#endif + +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *); +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *); +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *); +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *); +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *); +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *); +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *); +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort); +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *); +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureNormalEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); +#endif + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFogCoordfEXT (GLfloat); +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *); +GLAPI void APIENTRY glFogCoorddEXT (GLdouble); +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *); +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); +typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); +typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); +typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); +typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +#endif + +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *); +GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *); +GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *); +GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glTangent3ivEXT (const GLint *); +GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glTangent3svEXT (const GLshort *); +GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *); +GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *); +GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *); +GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint); +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *); +GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *); +GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); +typedef void (APIENTRY * PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRY * PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); +typedef void (APIENTRY * PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); +typedef void (APIENTRY * PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); +typedef void (APIENTRY * PFNGLTANGENT3IVEXTPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); +typedef void (APIENTRY * PFNGLTANGENT3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRY * PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); +typedef void (APIENTRY * PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); +typedef void (APIENTRY * PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); +typedef void (APIENTRY * PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); +typedef void (APIENTRY * PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); +typedef void (APIENTRY * PFNGLBINORMAL3IVEXTPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); +typedef void (APIENTRY * PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); +typedef void (APIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +#endif + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +#endif + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +#endif + +#ifndef GL_SGIX_fog_scale +#define GL_SGIX_fog_scale 1 +#endif + +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFinishTextureSUNX (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); +#endif + +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte); +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort); +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint); +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat); +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble); +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte); +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort); +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +#endif + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint); +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort); +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte); +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *); +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *); +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *); +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer); +#endif + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLenum *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLenum, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLenum *, const GLubyte *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLenum, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLenum *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); +typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); +typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLenum rc, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLenum rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLenum *rc, const GLubyte *c, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLenum rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLenum *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +#endif + +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif + +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +#endif + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +#endif + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +#endif + +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +#endif + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +#endif + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +#endif + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +#endif + +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#endif + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat); +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *); +GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); +typedef void (APIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +#endif + +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); +typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); +#endif + +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *); +GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat); +GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *); +GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint); +GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); +typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); +#endif + +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +#endif + +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +#endif + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +#endif + +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +#endif + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glResizeBuffersMESA (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); +#endif + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *); +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *); +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *); +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *); +GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *); +GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); +typedef void (APIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); +typedef void (APIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); +typedef void (APIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); +typedef void (APIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); +typedef void (APIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); +typedef void (APIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); +typedef void (APIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); +typedef void (APIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); +typedef void (APIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); +typedef void (APIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); +#endif + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +#endif + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMultiModeDrawArraysIBM (GLenum, const GLint *, const GLsizei *, GLsizei, GLint); +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* *, GLsizei, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +typedef void (APIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, GLint modestride); +#endif + +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint); +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride); +typedef void (APIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void (APIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +#endif + +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +#endif + +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +#endif + +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +#endif + +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +#endif + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +#endif + +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +#endif + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTbufferMask3DFX (GLuint); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); +#endif + +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternEXT (GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); +typedef void (APIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); +#endif + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +#endif + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +#endif + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +#endif + +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +#endif + +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#endif + +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); +#endif + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *); +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint); +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint); +GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glFinishFenceNV (GLuint); +GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (APIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (APIENTRY * PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (APIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (APIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (APIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *); +GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *); +GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *); +GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); +typedef void (APIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (APIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); +typedef void (APIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +#endif + +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +#endif + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); +typedef void (APIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); +#endif + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +#endif + +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +#endif + +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +#endif + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +#endif + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +#endif + +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *); +GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint); +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *); +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *); +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *); +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *); +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint); +GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *); +GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *); +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *); +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *); +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *); +GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum); +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *); +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *); +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *); +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *); +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *); +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *); +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLboolean (APIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); +typedef void (APIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); +typedef void (APIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); +typedef void (APIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); +typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); +typedef void (APIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); +typedef GLboolean (APIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); +typedef void (APIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); +typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); +typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); +typedef void (APIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); +typedef void (APIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); +typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); +#endif + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +#endif + +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +#endif + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +#endif + +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +#endif + +#ifndef GL_OML_resample +#define GL_OML_resample 1 +#endif + +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +#endif + +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *); +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *); +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); +typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); +typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); +typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +#endif + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint); +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint); +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint); +GLAPI void APIENTRY glBeginFragmentShaderATI (void); +GLAPI void APIENTRY glEndFragmentShaderATI (void); +GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum); +GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum); +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLuint (APIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); +typedef void (APIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); +typedef void (APIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); +typedef void (APIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); +typedef void (APIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void (APIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); +#endif + +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint); +GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +#endif + +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum); +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint); +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum); +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glDeleteObjectBufferATI (GLuint); +GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef GLuint (APIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); +typedef GLboolean (APIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); +typedef void (APIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLDELETEOBJECTBUFFERATIPROC) (GLuint buffer); +typedef void (APIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); +typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); +typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); +#endif + +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginVertexShaderEXT (void); +GLAPI void APIENTRY glEndVertexShaderEXT (void); +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint); +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint); +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint); +GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint); +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const void *); +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const void *); +GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *); +GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *); +GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *); +GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *); +GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *); +GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *); +GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *); +GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *); +GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const void *); +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint); +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint); +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum); +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum); +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum); +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *); +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *); +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); +typedef void (APIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); +typedef GLuint (APIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); +typedef void (APIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); +typedef void (APIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); +typedef void (APIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void (APIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); +typedef void (APIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); +typedef void (APIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef void (APIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); +typedef GLuint (APIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); +typedef void (APIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr); +typedef void (APIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); +typedef void (APIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); +typedef void (APIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); +typedef void (APIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); +typedef void (APIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); +typedef void (APIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); +typedef void (APIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); +typedef void (APIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); +typedef void (APIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr); +typedef void (APIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef void (APIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); +typedef GLuint (APIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); +typedef GLuint (APIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); +typedef GLuint (APIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); +typedef GLuint (APIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); +typedef GLuint (APIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); +typedef GLboolean (APIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); +typedef void (APIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data); +typedef void (APIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +#endif + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort); +GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint); +GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat); +GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble); +GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint); +GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *); +GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *); +GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *); +GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *); +GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *); +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum); +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint); +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); +typedef void (APIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); +typedef void (APIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); +typedef void (APIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); +typedef void (APIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); +typedef void (APIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); +typedef void (APIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void (APIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +typedef void (APIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); +typedef void (APIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); +typedef void (APIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); +typedef void (APIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void (APIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); +typedef void (APIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); +typedef void (APIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); +typedef void (APIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); +typedef void (APIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); +typedef void (APIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); +typedef void (APIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +#endif + +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *); +GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei); +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); +typedef void (APIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +#endif + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); +#endif + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +#endif + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +#endif + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +#endif + +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *); +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *); +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint); +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint); +GLAPI void APIENTRY glEndOcclusionQueryNV (void); +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); +typedef void (APIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (APIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); +typedef void (APIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); +typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); +#endif + +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint); +GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (APIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); +typedef void (APIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +#endif + +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +#endif + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/reactos/w32api/include/GL/glu.h b/reactos/w32api/include/GL/glu.h new file mode 100644 index 00000000000..7c6ee748ba8 --- /dev/null +++ b/reactos/w32api/include/GL/glu.h @@ -0,0 +1,278 @@ +/* +** License Applicability. Except to the extent portions of this file are +** made subject to an alternative license as permitted in the SGI Free +** Software License B, Version 1.1 (the "License"), the contents of this +** file are subject only to the provisions of the License. You may not use +** this file except in compliance with the License. You may obtain a copy +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: +** +** http://oss.sgi.com/projects/FreeB +** +** Note that, as provided in the License, the Software is distributed on an +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. +** +** Original Code. The Original Code is: OpenGL Sample Implementation, +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. +** Copyright in any portions created by third parties is as indicated +** elsewhere herein. All Rights Reserved. +** +** Additional Notice Provisions: This software was created using the +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has +** not been independently verified as being compliant with the OpenGL(R) +** version 1.2.1 Specification. +*/ + +#ifndef __glu_h__ +#define __glu_h__ +#define _GLU_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*************************************************************/ + +/* Boolean */ +#define GLU_FALSE 0 +#define GLU_TRUE 1 + +/* Version */ +#define GLU_VERSION_1_1 1 +#define GLU_VERSION_1_2 1 + +/* StringName */ +#define GLU_VERSION 100800 +#define GLU_EXTENSIONS 100801 + +/* ErrorCode */ +#define GLU_INVALID_ENUM 100900 +#define GLU_INVALID_VALUE 100901 +#define GLU_OUT_OF_MEMORY 100902 +#define GLU_INVALID_OPERATION 100904 + +/* NurbsDisplay */ +/* GLU_FILL */ +#define GLU_OUTLINE_POLYGON 100240 +#define GLU_OUTLINE_PATCH 100241 + +/* NurbsError */ +#define GLU_NURBS_ERROR1 100251 +#define GLU_NURBS_ERROR2 100252 +#define GLU_NURBS_ERROR3 100253 +#define GLU_NURBS_ERROR4 100254 +#define GLU_NURBS_ERROR5 100255 +#define GLU_NURBS_ERROR6 100256 +#define GLU_NURBS_ERROR7 100257 +#define GLU_NURBS_ERROR8 100258 +#define GLU_NURBS_ERROR9 100259 +#define GLU_NURBS_ERROR10 100260 +#define GLU_NURBS_ERROR11 100261 +#define GLU_NURBS_ERROR12 100262 +#define GLU_NURBS_ERROR13 100263 +#define GLU_NURBS_ERROR14 100264 +#define GLU_NURBS_ERROR15 100265 +#define GLU_NURBS_ERROR16 100266 +#define GLU_NURBS_ERROR17 100267 +#define GLU_NURBS_ERROR18 100268 +#define GLU_NURBS_ERROR19 100269 +#define GLU_NURBS_ERROR20 100270 +#define GLU_NURBS_ERROR21 100271 +#define GLU_NURBS_ERROR22 100272 +#define GLU_NURBS_ERROR23 100273 +#define GLU_NURBS_ERROR24 100274 +#define GLU_NURBS_ERROR25 100275 +#define GLU_NURBS_ERROR26 100276 +#define GLU_NURBS_ERROR27 100277 +#define GLU_NURBS_ERROR28 100278 +#define GLU_NURBS_ERROR29 100279 +#define GLU_NURBS_ERROR30 100280 +#define GLU_NURBS_ERROR31 100281 +#define GLU_NURBS_ERROR32 100282 +#define GLU_NURBS_ERROR33 100283 +#define GLU_NURBS_ERROR34 100284 +#define GLU_NURBS_ERROR35 100285 +#define GLU_NURBS_ERROR36 100286 +#define GLU_NURBS_ERROR37 100287 + +/* NurbsSampling */ +#define GLU_PATH_LENGTH 100215 +#define GLU_PARAMETRIC_ERROR 100216 +#define GLU_DOMAIN_DISTANCE 100217 + +/* NurbsTrim */ +#define GLU_MAP1_TRIM_2 100210 +#define GLU_MAP1_TRIM_3 100211 + +/* QuadricDrawStyle */ +#define GLU_POINT 100010 +#define GLU_LINE 100011 +#define GLU_FILL 100012 +#define GLU_SILHOUETTE 100013 + +/* QuadricCallback */ +/* GLU_ERROR */ + +/* QuadricNormal */ +#define GLU_SMOOTH 100000 +#define GLU_FLAT 100001 +#define GLU_NONE 100002 + +/* QuadricOrientation */ +#define GLU_OUTSIDE 100020 +#define GLU_INSIDE 100021 + +/* TessCallback */ +#define GLU_TESS_BEGIN 100100 +#define GLU_BEGIN 100100 +#define GLU_TESS_VERTEX 100101 +#define GLU_VERTEX 100101 +#define GLU_TESS_END 100102 +#define GLU_END 100102 +#define GLU_TESS_ERROR 100103 +#define GLU_TESS_EDGE_FLAG 100104 +#define GLU_EDGE_FLAG 100104 +#define GLU_TESS_COMBINE 100105 +#define GLU_TESS_BEGIN_DATA 100106 +#define GLU_TESS_VERTEX_DATA 100107 +#define GLU_TESS_END_DATA 100108 +#define GLU_TESS_ERROR_DATA 100109 +#define GLU_TESS_EDGE_FLAG_DATA 100110 +#define GLU_TESS_COMBINE_DATA 100111 + +/* TessContour */ +#define GLU_CW 100120 +#define GLU_CCW 100121 +#define GLU_INTERIOR 100122 +#define GLU_EXTERIOR 100123 +#define GLU_UNKNOWN 100124 + +/* TessProperty */ +#define GLU_TESS_WINDING_RULE 100140 +#define GLU_TESS_BOUNDARY_ONLY 100141 +#define GLU_TESS_TOLERANCE 100142 + +/* TessError */ +#define GLU_TESS_ERROR1 100151 +#define GLU_TESS_ERROR2 100152 +#define GLU_TESS_ERROR3 100153 +#define GLU_TESS_ERROR4 100154 +#define GLU_TESS_ERROR5 100155 +#define GLU_TESS_ERROR6 100156 +#define GLU_TESS_ERROR7 100157 +#define GLU_TESS_ERROR8 100158 +#define GLU_TESS_MISSING_BEGIN_POLYGON 100151 +#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152 +#define GLU_TESS_MISSING_END_POLYGON 100153 +#define GLU_TESS_MISSING_END_CONTOUR 100154 +#define GLU_TESS_COORD_TOO_LARGE 100155 +#define GLU_TESS_NEED_COMBINE_CALLBACK 100156 + +/* TessWinding */ +#define GLU_TESS_WINDING_ODD 100130 +#define GLU_TESS_WINDING_NONZERO 100131 +#define GLU_TESS_WINDING_POSITIVE 100132 +#define GLU_TESS_WINDING_NEGATIVE 100133 +#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134 + +/* Obsolete. For compatibility with previous Sun OpenGL versions */ +#define GLU_INCOMPATIBLE_GL_VERSION 100903 + + +/*************************************************************/ + + +#ifdef __cplusplus +class GLUnurbs; +class GLUquadric; +class GLUtesselator; +#else +typedef struct GLUnurbs GLUnurbs; +typedef struct GLUquadric GLUquadric; +typedef struct GLUtesselator GLUtesselator; +#endif + +typedef GLUnurbs GLUnurbsObj; +typedef GLUquadric GLUquadricObj; +typedef GLUtesselator GLUtesselatorObj; +typedef GLUtesselator GLUtriangulatorObj; + +#define GLU_TESS_MAX_COORD 1.0e150 + +/* Internal convenience typedefs */ +typedef void (APIENTRY *_GLUfuncptr)(); + +GLAPI void APIENTRY gluBeginCurve (GLUnurbs* nurb); +GLAPI void APIENTRY gluBeginPolygon (GLUtesselator* tess); +GLAPI void APIENTRY gluBeginSurface (GLUnurbs* nurb); +GLAPI void APIENTRY gluBeginTrim (GLUnurbs* nurb); +GLAPI GLint APIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); +GLAPI GLint APIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data); +GLAPI void APIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks); +GLAPI void APIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb); +GLAPI void APIENTRY gluDeleteQuadric (GLUquadric* quad); +GLAPI void APIENTRY gluDeleteTess (GLUtesselator* tess); +GLAPI void APIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops); +GLAPI void APIENTRY gluEndCurve (GLUnurbs* nurb); +GLAPI void APIENTRY gluEndPolygon (GLUtesselator* tess); +GLAPI void APIENTRY gluEndSurface (GLUnurbs* nurb); +GLAPI void APIENTRY gluEndTrim (GLUnurbs* nurb); +GLAPI const GLubyte * APIENTRY gluErrorString (GLenum error); +GLAPI const wchar_t * APIENTRY gluErrorUnicodeStringEXT (GLenum error); +GLAPI void APIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data); +GLAPI const GLubyte * APIENTRY gluGetString (GLenum name); +GLAPI void APIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data); +GLAPI void APIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view); +GLAPI void APIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); +GLAPI GLUnurbs* APIENTRY gluNewNurbsRenderer (void); +GLAPI GLUquadric* APIENTRY gluNewQuadric (void); +GLAPI GLUtesselator* APIENTRY gluNewTess (void); +GLAPI void APIENTRY gluNextContour (GLUtesselator* tess, GLenum type); +GLAPI void APIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc); +GLAPI void APIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type); +GLAPI void APIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value); +GLAPI void APIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type); +GLAPI void APIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); +GLAPI void APIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep); +GLAPI void APIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); +GLAPI void APIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport); +GLAPI GLint APIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ); +GLAPI void APIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type); +GLAPI void APIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc); +GLAPI void APIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw); +GLAPI void APIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal); +GLAPI void APIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation); +GLAPI void APIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture); +GLAPI GLint APIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut); +GLAPI void APIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks); +GLAPI void APIENTRY gluTessBeginContour (GLUtesselator* tess); +GLAPI void APIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data); +GLAPI void APIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc); +GLAPI void APIENTRY gluTessEndContour (GLUtesselator* tess); +GLAPI void APIENTRY gluTessEndPolygon (GLUtesselator* tess); +GLAPI void APIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); +GLAPI void APIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data); +GLAPI void APIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data); +GLAPI GLint APIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); +GLAPI GLint APIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); + +#ifdef UNICODE +#define gluErrorStringWIN gluErrorUnicodeStringEXT +#else +#define gluErrorStringWIN gluErrorString +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __glu_h__ */ diff --git a/reactos/w32api/include/accctrl.h b/reactos/w32api/include/accctrl.h new file mode 100644 index 00000000000..6f969042f3e --- /dev/null +++ b/reactos/w32api/include/accctrl.h @@ -0,0 +1,329 @@ +#ifndef _ACCCTRL_H +#define _ACCCTRL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define AccFree LocalFree +#define ACTRL_RESERVED 0x00000000 +#define ACTRL_ACCESS_PROTECTED 0x00000001 +#define ACTRL_ACCESS_ALLOWED 0x00000001 +#define ACTRL_ACCESS_DENIED 0x00000002 +#define ACTRL_AUDIT_SUCCESS 0x00000004 +#define ACTRL_AUDIT_FAILURE 0x00000008 +#define ACTRL_SYSTEM_ACCESS 0x04000000 +#define ACTRL_DELETE 0x08000000 +#define ACTRL_READ_CONTROL 0x10000000 +#define ACTRL_CHANGE_ACCESS 0x20000000 +#define ACTRL_CHANGE_OWNER 0x40000000 +#define ACTRL_SYNCHRONIZE 0x80000000 +#define ACTRL_STD_RIGHTS_ALL 0xf8000000 + +#define ACTRL_FILE_READ 0x00000001 +#define ACTRL_FILE_WRITE 0x00000002 +#define ACTRL_FILE_APPEND 0x00000004 +#define ACTRL_FILE_READ_PROP 0x00000008 +#define ACTRL_FILE_WRITE_PROP 0x00000010 +#define ACTRL_FILE_EXECUTE 0x00000020 +#define ACTRL_FILE_READ_ATTRIB 0x00000080 +#define ACTRL_FILE_WRITE_ATTRIB 0x00000100 +#define ACTRL_FILE_CREATE_PIPE 0x00000200 +#define ACTRL_DIR_LIST 0x00000001 +#define ACTRL_DIR_CREATE_OBJECT 0x00000002 +#define ACTRL_DIR_CREATE_CHILD 0x00000004 +#define ACTRL_DIR_DELETE_CHILD 0x00000040 +#define ACTRL_DIR_TRAVERSE 0x00000020 +#define ACTRL_KERNEL_TERMINATE 0x00000001 +#define ACTRL_KERNEL_THREAD 0x00000002 +#define ACTRL_KERNEL_VM 0x00000004 +#define ACTRL_KERNEL_VM_READ 0x00000008 +#define ACTRL_KERNEL_VM_WRITE 0x00000010 +#define ACTRL_KERNEL_DUP_HANDLE 0x00000020 +#define ACTRL_KERNEL_PROCESS 0x00000040 +#define ACTRL_KERNEL_SET_INFO 0x00000080 +#define ACTRL_KERNEL_GET_INFO 0x00000100 +#define ACTRL_KERNEL_CONTROL 0x00000200 +#define ACTRL_KERNEL_ALERT 0x00000400 +#define ACTRL_KERNEL_GET_CONTEXT 0x00000800 +#define ACTRL_KERNEL_SET_CONTEXT 0x00001000 +#define ACTRL_KERNEL_TOKEN 0x00002000 +#define ACTRL_KERNEL_IMPERSONATE 0x00004000 +#define ACTRL_KERNEL_DIMPERSONATE 0x00008000 +#define ACTRL_PRINT_SADMIN 0x00000001 +#define ACTRL_PRINT_SLIST 0x00000002 +#define ACTRL_PRINT_PADMIN 0x00000004 +#define ACTRL_PRINT_PUSE 0x00000008 +#define ACTRL_PRINT_JADMIN 0x00000010 +#define ACTRL_SVC_GET_INFO 0x00000001 +#define ACTRL_SVC_SET_INFO 0x00000002 +#define ACTRL_SVC_STATUS 0x00000004 +#define ACTRL_SVC_LIST 0x00000008 +#define ACTRL_SVC_START 0x00000010 +#define ACTRL_SVC_STOP 0x00000020 +#define ACTRL_SVC_PAUSE 0x00000040 +#define ACTRL_SVC_INTERROGATE 0x00000080 +#define ACTRL_SVC_UCONTROL 0x00000100 +#define ACTRL_REG_QUERY 0x00000001 +#define ACTRL_REG_SET 0x00000002 +#define ACTRL_REG_CREATE_CHILD 0x00000004 +#define ACTRL_REG_LIST 0x00000008 +#define ACTRL_REG_NOTIFY 0x00000010 +#define ACTRL_REG_LINK 0x00000020 +#define ACTRL_WIN_CLIPBRD 0x00000001 +#define ACTRL_WIN_GLOBAL_ATOMS 0x00000002 +#define ACTRL_WIN_CREATE 0x00000004 +#define ACTRL_WIN_LIST_DESK 0x00000008 +#define ACTRL_WIN_LIST 0x00000010 +#define ACTRL_WIN_READ_ATTRIBS 0x00000020 +#define ACTRL_WIN_WRITE_ATTRIBS 0x00000040 +#define ACTRL_WIN_SCREEN 0x00000080 +#define ACTRL_WIN_EXIT 0x00000100 +#define ACTRL_ACCESS_NO_OPTIONS 0x00000000 +#define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES 0x00000001 +#define ACCCTRL_DEFAULT_PROVIDERA "Windows NT Access Provider" +#define ACCCTRL_DEFAULT_PROVIDERW L"Windows NT Access Provider" +#define TRUSTEE_ACCESS_ALLOWED 0x00000001L +#define TRUSTEE_ACCESS_READ 0x00000002L +#define TRUSTEE_ACCESS_WRITE 0x00000004L +#define TRUSTEE_ACCESS_EXPLICIT 0x00000001L +#define TRUSTEE_ACCESS_READ_WRITE (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE) +#define TRUSTEE_ACCESS_ALL 0xFFFFFFFFL +#define NO_INHERITANCE 0x0 +#define SUB_OBJECTS_ONLY_INHERIT 0x1 +#define SUB_CONTAINERS_ONLY_INHERIT 0x2 +#define SUB_CONTAINERS_AND_OBJECTS_INHERIT 0x3 +#define INHERIT_NO_PROPAGATE 0x4 +#define INHERIT_ONLY 0x8 +#define INHERITED_ACCESS_ENTRY 0x10 +#define INHERITED_PARENT 0x10000000 +#define INHERITED_GRANDPARENT 0x20000000 + +typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS; +typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS; + +typedef enum _ACCESS_MODE { + NOT_USED_ACCESS = 0, + GRANT_ACCESS, + SET_ACCESS, + DENY_ACCESS, + REVOKE_ACCESS, + SET_AUDIT_SUCCESS, + SET_AUDIT_FAILURE +} ACCESS_MODE; +typedef enum _SE_OBJECT_TYPE { + SE_UNKNOWN_OBJECT_TYPE = 0, + 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_OBJECT_TYPE; +typedef 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_TYPE; +typedef enum _TRUSTEE_FORM { + TRUSTEE_IS_SID, + TRUSTEE_IS_NAME, + TRUSTEE_BAD_FORM, + TRUSTEE_IS_OBJECTS_AND_SID, + TRUSTEE_IS_OBJECTS_AND_NAME +} TRUSTEE_FORM; +typedef enum _MULTIPLE_TRUSTEE_OPERATION { + NO_MULTIPLE_TRUSTEE, + TRUSTEE_IS_IMPERSONATE +} MULTIPLE_TRUSTEE_OPERATION; +typedef struct _TRUSTEE_A { + struct _TRUSTEE_A *pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPSTR ptstrName; +} TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA; +typedef struct _TRUSTEE_W { + struct _TRUSTEE_W *pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPWSTR ptstrName; +} TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW; +typedef struct _ACTRL_ACCESS_ENTRYA { + TRUSTEE_A Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCSTR lpInheritProperty; +} ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA; +typedef struct _ACTRL_ACCESS_ENTRYW { + TRUSTEE_W Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCWSTR lpInheritProperty; +} ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW; +typedef struct _ACTRL_ACCESS_ENTRY_LISTA { + ULONG cEntries; + ACTRL_ACCESS_ENTRYA *pAccessList; +} ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA; +typedef struct _ACTRL_ACCESS_ENTRY_LISTW { + ULONG cEntries; + ACTRL_ACCESS_ENTRYW *pAccessList; +} ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW; +typedef struct _ACTRL_PROPERTY_ENTRYA { + LPCSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; + ULONG fListFlags; +} ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA; +typedef struct _ACTRL_PROPERTY_ENTRYW { + LPCWSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; + ULONG fListFlags; +} ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW; +typedef struct _ACTRL_ALISTA { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYA pPropertyAccessList; +} ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA; +typedef struct _ACTRL_ALISTW { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYW pPropertyAccessList; +} ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW; +typedef struct _TRUSTEE_ACCESSA { + LPSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA; +typedef struct _TRUSTEE_ACCESSW { + LPWSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW; +typedef struct _ACTRL_OVERLAPPED { + _ANONYMOUS_UNION + union { + PVOID Provider; + ULONG Reserved1; + } DUMMYUNIONNAME; + ULONG Reserved2; + HANDLE hEvent; +} ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED; +typedef struct _ACTRL_ACCESS_INFOA { + ULONG fAccessPermission; + LPSTR lpAccessPermissionName; +} ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA; +typedef struct _ACTRL_ACCESS_INFOW { + ULONG fAccessPermission; + LPWSTR lpAccessPermissionName; +} ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW; +typedef struct _ACTRL_CONTROL_INFOA { + LPSTR lpControlId; + LPSTR lpControlName; +} ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA; +typedef struct _ACTRL_CONTROL_INFOW { + LPWSTR lpControlId; + LPWSTR lpControlName; +} ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW; +typedef struct _EXPLICIT_ACCESS_A { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_A Trustee; +} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA; +typedef struct _EXPLICIT_ACCESS_W { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_W Trustee; +} EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW; +typedef struct _OBJECTS_AND_SID { + DWORD ObjectsPresent; + GUID ObjectTypeGuid; + GUID InheritedObjectTypeGuid; + SID * pSid; +} OBJECTS_AND_SID, *POBJECTS_AND_SID; +typedef struct _OBJECTS_AND_NAME_A { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPSTR ObjectTypeName; + LPSTR InheritedObjectTypeName; + LPSTR ptstrName; +} OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A; +typedef struct _OBJECTS_AND_NAME_W { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPWSTR ObjectTypeName; + LPWSTR InheritedObjectTypeName; + LPWSTR ptstrName; +} OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W; +#if (_WIN32_WINNT >= 0x0501) +typedef struct { + LONG GenerationGap; + LPSTR AncestorName; +} INHERITED_FROMA, *PINHERITED_FROMA; +typedef struct { + LONG GenerationGap; + LPWSTR AncestorName; +} INHERITED_FROMW, *PINHERITED_FROMW; +#endif /* (_WIN32_WINNT >= 0x0501) */ + +#ifdef UNICODE +#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW +typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_; +typedef TRUSTEEW TRUSTEE, *PTRUSTEE; +typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS; +typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST; +typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO; +typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY; +typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT; +typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO; +typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_; +typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS; +typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS; +typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_; +#if (_WIN32_WINNT >= 0x0501) +typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM; +#endif +#else +#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA +typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_; +typedef TRUSTEEA TRUSTEE, *PTRUSTEE; +typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS; +typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST; +typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO; +typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY; +typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT; +typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO; +typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_; +typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS; +typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS; +typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_; +#if (_WIN32_WINNT >= 0x0501) +typedef INHERITED_FROMA INHERITED_FROM, *PINHERITED_FROM; +#endif +#endif /* UNICODE */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/aclapi.h b/reactos/w32api/include/aclapi.h new file mode 100644 index 00000000000..d4ef6a794c5 --- /dev/null +++ b/reactos/w32api/include/aclapi.h @@ -0,0 +1,117 @@ +#ifndef _ACLAPI_H +#define _ACLAPI_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +VOID WINAPI BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,DWORD,ACCESS_MODE,DWORD); +VOID WINAPI BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,DWORD,ACCESS_MODE,DWORD); +DWORD WINAPI BuildSecurityDescriptorA(PTRUSTEE_A,PTRUSTEE_A ,ULONG,PEXPLICIT_ACCESS_A, + ULONG,PEXPLICIT_ACCESS_A,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*); +DWORD WINAPI BuildSecurityDescriptorW(PTRUSTEE_W,PTRUSTEE_W ,ULONG,PEXPLICIT_ACCESS_W, + ULONG,PEXPLICIT_ACCESS_W,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*); +VOID WINAPI BuildTrusteeWithNameA(PTRUSTEE_A,LPSTR); +VOID WINAPI BuildTrusteeWithNameW(PTRUSTEE_W,LPWSTR); +VOID WINAPI BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A,POBJECTS_AND_NAME_A,SE_OBJECT_TYPE, + LPSTR,LPSTR,LPSTR); +VOID WINAPI BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W,POBJECTS_AND_NAME_W,SE_OBJECT_TYPE, + LPWSTR,LPWSTR,LPWSTR); +VOID WINAPI BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A,POBJECTS_AND_SID,GUID*,GUID*,PSID); +VOID WINAPI BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W,POBJECTS_AND_SID,GUID*,GUID*,PSID); +VOID WINAPI BuildTrusteeWithSidA(PTRUSTEE_A,PSID); +VOID WINAPI BuildTrusteeWithSidW(PTRUSTEE_W,PSID); +DWORD WINAPI GetAuditedPermissionsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK,PACCESS_MASK); +DWORD WINAPI GetAuditedPermissionsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK,PACCESS_MASK); +DWORD WINAPI GetEffectiveRightsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK); +DWORD WINAPI GetEffectiveRightsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK); +DWORD WINAPI GetExplicitEntriesFromAclA(PACL,PULONG,PEXPLICIT_ACCESS_A*); +DWORD WINAPI GetExplicitEntriesFromAclW(PACL,PULONG,PEXPLICIT_ACCESS_W*); +#if (_WIN32_WINNT >= 0x0501) +DWORD WINAPI GetInheritanceSourceA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,BOOL,GUID**,DWORD,PACL,void*,PGENERIC_MAPPING,PINHERITED_FROMA); +DWORD WINAPI GetInheritanceSourceW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,BOOL,GUID**,DWORD,PACL,void*,PGENERIC_MAPPING,PINHERITED_FROMW); +#endif +DWORD WINAPI GetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION, + PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*); +DWORD WINAPI GetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION, + PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*); +DWORD WINAPI GetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION, + PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*); +TRUSTEE_FORM WINAPI GetTrusteeFormA(PTRUSTEE_A); +TRUSTEE_FORM WINAPI GetTrusteeFormW(PTRUSTEE_W); +LPSTR WINAPI GetTrusteeNameA(PTRUSTEE_A); +LPWSTR WINAPI GetTrusteeNameW(PTRUSTEE_W); +TRUSTEE_TYPE WINAPI GetTrusteeTypeA(PTRUSTEE_A); +TRUSTEE_TYPE WINAPI GetTrusteeTypeW(PTRUSTEE_W); +DWORD WINAPI LookupSecurityDescriptorPartsA(PTRUSTEE_A*,PTRUSTEE_A*,PULONG,PEXPLICIT_ACCESS_A*, + PULONG,PEXPLICIT_ACCESS_A*,PSECURITY_DESCRIPTOR); +DWORD WINAPI LookupSecurityDescriptorPartsW(PTRUSTEE_W*,PTRUSTEE_W*,PULONG,PEXPLICIT_ACCESS_W*, + PULONG,PEXPLICIT_ACCESS_W*,PSECURITY_DESCRIPTOR); +DWORD WINAPI SetEntriesInAclA(ULONG,PEXPLICIT_ACCESS_A,PACL,PACL*); +DWORD WINAPI SetEntriesInAclW(ULONG,PEXPLICIT_ACCESS_W,PACL,PACL*); +DWORD WINAPI SetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL); +DWORD WINAPI SetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL); +DWORD WINAPI SetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL); +VOID WINAPI BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,PTRUSTEE_A,DWORD,ACCESS_MODE,DWORD); +VOID WINAPI BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,PTRUSTEE_W,DWORD,ACCESS_MODE,DWORD); +VOID WINAPI BuildImpersonateTrusteeA(PTRUSTEE_A,PTRUSTEE_A); +VOID WINAPI BuildImpersonateTrusteeW(PTRUSTEE_W,PTRUSTEE_W); +PTRUSTEE_A WINAPI GetMultipleTrusteeA(PTRUSTEE_A); +PTRUSTEE_W WINAPI GetMultipleTrusteeW(PTRUSTEE_W); +MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationA(PTRUSTEE_A); +MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationW(PTRUSTEE_W); + +#ifdef UNICODE +#define BuildExplicitAccessWithName BuildExplicitAccessWithNameW +#define BuildSecurityDescriptor BuildSecurityDescriptorW +#define BuildTrusteeWithName BuildTrusteeWithNameW +#define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameW +#define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidW +#define BuildTrusteeWithSid BuildTrusteeWithSidW +#define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclW +#define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclW +#define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclW +#define GetNamedSecurityInfo GetNamedSecurityInfoW +#define GetTrusteeForm GetTrusteeFormW +#define GetTrusteeName GetTrusteeNameW +#define GetTrusteeType GetTrusteeTypeW +#define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsW +#define SetEntriesInAcl SetEntriesInAclW +#define SetNamedSecurityInfo SetNamedSecurityInfoW +#define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameW +#define BuildImpersonateTrustee BuildImpersonateTrusteeW +#define GetMultipleTrustee GetMultipleTrusteeW +#define GetMultipleTrusteeOperation GetMultipleTrusteeOperationW +#else +#define BuildExplicitAccessWithName BuildExplicitAccessWithNameA +#define BuildSecurityDescriptor BuildSecurityDescriptorA +#define BuildTrusteeWithName BuildTrusteeWithNameA +#define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameA +#define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidA +#define BuildTrusteeWithSid BuildTrusteeWithSidA +#define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclA +#define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclA +#define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclA +#define GetNamedSecurityInfo GetNamedSecurityInfoA +#define GetTrusteeForm GetTrusteeFormA +#define GetTrusteeName GetTrusteeNameA +#define GetTrusteeType GetTrusteeTypeA +#define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsA +#define SetEntriesInAcl SetEntriesInAclA +#define SetNamedSecurityInfo SetNamedSecurityInfoA +#define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameA +#define BuildImpersonateTrustee BuildImpersonateTrusteeA +#define GetMultipleTrustee GetMultipleTrusteeA +#define GetMultipleTrusteeOperation GetMultipleTrusteeOperationA +#endif /* UNICODE */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/afxres.h b/reactos/w32api/include/afxres.h new file mode 100644 index 00000000000..91e7f495a16 --- /dev/null +++ b/reactos/w32api/include/afxres.h @@ -0,0 +1,23 @@ +#ifndef _AFXRES_H +#define _AFXRES_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _WINDOWS_H +#include +#endif + +/* IDC_STATIC is documented in winuser.h, but not defined. */ +#ifndef IDC_STATIC +#define IDC_STATIC (-1) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/basetsd.h b/reactos/w32api/include/basetsd.h new file mode 100644 index 00000000000..d9c375dd9a5 --- /dev/null +++ b/reactos/w32api/include/basetsd.h @@ -0,0 +1,119 @@ +#ifndef _BASETSD_H +#define _BASETSD_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __GNUC__ +#ifndef __int64 +#define __int64 long long +#endif +#endif + +#if defined(_WIN64) +#define __int3264 __int64 +#define ADDRESS_TAG_BIT 0x40000000000UI64 +#else /* !_WIN64 */ +#define __int3264 __int32 +#define ADDRESS_TAG_BIT 0x80000000UL +#define HandleToUlong( h ) ((ULONG)(ULONG_PTR)(h) ) +#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) ) +#define LongToHandle( h) ((HANDLE)(LONG_PTR) (h)) +#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) ) +#define PtrToLong( p ) ((LONG)(LONG_PTR) (p) ) +#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) ) +#define PtrToInt( p ) ((INT)(INT_PTR) (p) ) +#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) ) +#define PtrToShort( p ) ((short)(LONG_PTR)(p) ) +#define IntToPtr( i ) ((VOID*)(INT_PTR)((int)i)) +#define UIntToPtr( ui ) ((VOID*)(UINT_PTR)((unsigned int)ui)) +#define LongToPtr( l ) ((VOID*)(LONG_PTR)((long)l)) +#define ULongToPtr( ul ) ((VOID*)(ULONG_PTR)((unsigned long)ul)) +#endif /* !_WIN64 */ + +#define UlongToPtr(ul) ULongToPtr(ul) +#define UintToPtr(ui) UIntToPtr(ui) +#define MAXUINT_PTR (~((UINT_PTR)0)) +#define MAXINT_PTR ((INT_PTR)(MAXUINT_PTR >> 1)) +#define MININT_PTR (~MAXINT_PTR) +#define MAXULONG_PTR (~((ULONG_PTR)0)) +#define MAXLONG_PTR ((LONG_PTR)(MAXULONG_PTR >> 1)) +#define MINLONG_PTR (~MAXLONG_PTR) +#define MAXUHALF_PTR ((UHALF_PTR)~0) +#define MAXHALF_PTR ((HALF_PTR)(MAXUHALF_PTR >> 1)) +#define MINHALF_PTR (~MAXHALF_PTR) + +#ifndef RC_INVOKED +#ifdef __cplusplus +extern "C" { +#endif +typedef int LONG32, *PLONG32; +#ifndef XFree86Server +typedef int INT32, *PINT32; +#endif /* ndef XFree86Server */ +typedef unsigned int ULONG32, *PULONG32; +typedef unsigned int DWORD32, *PDWORD32; +typedef unsigned int UINT32, *PUINT32; + +#if defined(_WIN64) +typedef __int64 INT_PTR, *PINT_PTR; +typedef unsigned __int64 UINT_PTR, *PUINT_PTR; +typedef __int64 LONG_PTR, *PLONG_PTR; +typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; +typedef unsigned __int64 HANDLE_PTR; +typedef unsigned int UHALF_PTR, *PUHALF_PTR; +typedef int HALF_PTR, *PHALF_PTR; + +#if 0 /* TODO when WIN64 is here */ +inline unsigned long HandleToUlong(const void* h ) + { return((unsigned long) h ); } +inline long HandleToLong( const void* h ) + { return((long) h ); } +inline void* LongToHandle( const long h ) + { return((void*) (INT_PTR) h ); } +inline unsigned long PtrToUlong( const void* p) + { return((unsigned long) p ); } +inline unsigned int PtrToUint( const void* p ) + { return((unsigned int) p ); } +inline unsigned short PtrToUshort( const void* p ) + { return((unsigned short) p ); } +inline long PtrToLong( const void* p ) + { return((long) p ); } +inline int PtrToInt( const void* p ) + { return((int) p ); } +inline short PtrToShort( const void* p ) + { return((short) p ); } +inline void* IntToPtr( const int i ) + { return( (void*)(INT_PTR)i ); } +inline void* UIntToPtr(const unsigned int ui) + { return( (void*)(UINT_PTR)ui ); } +inline void* LongToPtr( const long l ) + { return( (void*)(LONG_PTR)l ); } +inline void* ULongToPtr( const unsigned long ul ) + { return( (void*)(ULONG_PTR)ul ); } +#endif /* 0_ */ + +#else /* !_WIN64 */ +typedef int INT_PTR, *PINT_PTR; +typedef unsigned int UINT_PTR, *PUINT_PTR; +typedef long LONG_PTR, *PLONG_PTR; +typedef unsigned long ULONG_PTR, *PULONG_PTR; +typedef unsigned short UHALF_PTR, *PUHALF_PTR; +typedef short HALF_PTR, *PHALF_PTR; +typedef unsigned long HANDLE_PTR; +#endif /* !_WIN64 */ + +typedef ULONG_PTR SIZE_T, *PSIZE_T; +typedef LONG_PTR SSIZE_T, *PSSIZE_T; +typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; +typedef __int64 LONG64, *PLONG64; +typedef __int64 INT64, *PINT64; +typedef unsigned __int64 ULONG64, *PULONG64; +typedef unsigned __int64 DWORD64, *PDWORD64; +typedef unsigned __int64 UINT64, *PUINT64; +#ifdef __cplusplus +} +#endif +#endif /* !RC_INVOKED */ + +#endif /* _BASETSD_H */ diff --git a/reactos/w32api/include/basetyps.h b/reactos/w32api/include/basetyps.h new file mode 100644 index 00000000000..d8cb3c72cca --- /dev/null +++ b/reactos/w32api/include/basetyps.h @@ -0,0 +1,166 @@ +#ifndef _BASETYPS_H +#define _BASETYPS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifndef __OBJC__ +# ifdef __cplusplus +# define EXTERN_C extern "C" +# else +# define EXTERN_C extern +# endif /* __cplusplus */ +# ifndef __int64 +# define __int64 long long +# endif +# ifndef __int32 +# define __int32 long +# endif +# ifndef __int16 +# define __int16 int +# endif +# ifndef __int8 +# define __int8 char +# endif +# ifndef __small +# define __small char +# endif +# ifndef __hyper +# define __hyper long long +# endif +# define STDMETHODCALLTYPE __stdcall +# define STDMETHODVCALLTYPE __cdecl +# define STDAPICALLTYPE __stdcall +# define STDAPIVCALLTYPE __cdecl +# define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +# define STDAPI_(t) EXTERN_C t STDAPICALLTYPE +# define STDMETHODIMP HRESULT STDMETHODCALLTYPE +# define STDMETHODIMP_(t) t STDMETHODCALLTYPE +# define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +# define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE +# define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +# define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE +# define interface struct +# if defined(__cplusplus) && !defined(CINTERFACE) +# define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m +# define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m +# define PURE =0 +# define THIS_ +# define THIS void +/* + __attribute__((com_interface)) is obsolete in __GNUC__ >= 3 + g++ vtables are now COM-compatible by default +*/ +# if defined(__GNUC__) && __GNUC__ < 3 && !defined(NOCOMATTRIBUTE) +# define DECLARE_INTERFACE(i) interface __attribute__((com_interface)) i +# define DECLARE_INTERFACE_(i,b) interface __attribute__((com_interface)) i : public b +# else +# define DECLARE_INTERFACE(i) interface i +# define DECLARE_INTERFACE_(i,b) interface i : public b +# endif +# else +# define STDMETHOD(m) HRESULT(STDMETHODCALLTYPE *m) +# define STDMETHOD_(t,m) t(STDMETHODCALLTYPE *m) +# define PURE +# define THIS_ INTERFACE *, +# define THIS INTERFACE * +# ifndef CONST_VTABLE +# define CONST_VTABLE +# endif +# define DECLARE_INTERFACE(i) \ + typedef interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \ + typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \ + CONST_VTABLE struct i##Vtbl +# define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i) +# endif +# define BEGIN_INTERFACE +# define END_INTERFACE + +# define FWD_DECL(i) typedef interface i i +# if defined(__cplusplus) && !defined(CINTERFACE) +# define IENUM_THIS(T) +# define IENUM_THIS_(T) +# else +# define IENUM_THIS(T) T* +# define IENUM_THIS_(T) T*, +# endif +# define DECLARE_ENUMERATOR_(I,T) \ + DECLARE_INTERFACE_(I,IUnknown) \ + { \ + STDMETHOD(QueryInterface)(IENUM_THIS_(I) REFIID,PVOID*) PURE; \ + STDMETHOD_(ULONG,AddRef)(IENUM_THIS(I)) PURE; \ + STDMETHOD_(ULONG,Release)(IENUM_THIS(I)) PURE; \ + STDMETHOD(Next)(IENUM_THIS_(I) ULONG,T*,ULONG*) PURE; \ + STDMETHOD(Skip)(IENUM_THIS_(I) ULONG) PURE; \ + STDMETHOD(Reset)(IENUM_THIS(I)) PURE; \ + STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \ + } +# define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T) + +#endif /* __OBJC__ */ + +#ifdef _GUID_DEFINED +# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead +#endif + +#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in winnt.h */ +#define GUID_DEFINED +typedef struct _GUID +{ + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID,*REFGUID,*LPGUID; +#endif /* GUID_DEFINED */ +#ifndef UUID_DEFINED +#define UUID_DEFINED +typedef GUID UUID; +#endif /* UUID_DEFINED */ +typedef GUID IID; +typedef GUID CLSID; +typedef CLSID *LPCLSID; +typedef IID *LPIID; +typedef IID *REFIID; +typedef CLSID *REFCLSID; +typedef GUID FMTID; +typedef FMTID *REFFMTID; +typedef unsigned long error_status_t; +#define uuid_t UUID +typedef unsigned long PROPID; + +#ifndef _REFGUID_DEFINED +#if defined (__cplusplus) && !defined (CINTERFACE) +#define REFGUID const GUID& +#define REFIID const IID& +#define REFCLSID const CLSID& +#else +#define REFGUID const GUID* const +#define REFIID const IID* const +#define REFCLSID const CLSID* const +#endif +#define _REFGUID_DEFINED +#define _REFIID_DEFINED +#define _REFCLSID_DEFINED +#endif +#ifndef GUID_SECTION +#define GUID_SECTION ".text" +#endif +#ifdef __GNUC__ +#define GUID_SECT __attribute__ ((section (GUID_SECTION))) +#else +#define GUID_SECT +#endif +#if !defined(INITGUID) || (defined(INITGUID) && defined(__cplusplus)) +#define GUID_EXT EXTERN_C +#else +#define GUID_EXT +#endif +#ifdef INITGUID +#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} +#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) +#else +#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n +#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) +#endif +#endif diff --git a/reactos/w32api/include/cderr.h b/reactos/w32api/include/cderr.h new file mode 100644 index 00000000000..e9a5b057027 --- /dev/null +++ b/reactos/w32api/include/cderr.h @@ -0,0 +1,44 @@ +#ifndef _CDERR_H +#define _CDERR_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define CDERR_DIALOGFAILURE 0xFFFF +#define CDERR_GENERALCODES 0x0000 +#define CDERR_STRUCTSIZE 0x0001 +#define CDERR_INITIALIZATION 0x0002 +#define CDERR_NOTEMPLATE 0x0003 +#define CDERR_NOHINSTANCE 0x0004 +#define CDERR_LOADSTRFAILURE 0x0005 +#define CDERR_FINDRESFAILURE 0x0006 +#define CDERR_LOADRESFAILURE 0x0007 +#define CDERR_LOCKRESFAILURE 0x0008 +#define CDERR_MEMALLOCFAILURE 0x0009 +#define CDERR_MEMLOCKFAILURE 0x000A +#define CDERR_NOHOOK 0x000B +#define CDERR_REGISTERMSGFAIL 0x000C +#define PDERR_PRINTERCODES 0x1000 +#define PDERR_SETUPFAILURE 0x1001 +#define PDERR_PARSEFAILURE 0x1002 +#define PDERR_RETDEFFAILURE 0x1003 +#define PDERR_LOADDRVFAILURE 0x1004 +#define PDERR_GETDEVMODEFAIL 0x1005 +#define PDERR_INITFAILURE 0x1006 +#define PDERR_NODEVICES 0x1007 +#define PDERR_NODEFAULTPRN 0x1008 +#define PDERR_DNDMMISMATCH 0x1009 +#define PDERR_CREATEICFAILURE 0x100A +#define PDERR_PRINTERNOTFOUND 0x100B +#define PDERR_DEFAULTDIFFERENT 0x100C +#define CFERR_CHOOSEFONTCODES 0x2000 +#define CFERR_NOFONTS 0x2001 +#define CFERR_MAXLESSTHANMIN 0x2002 +#define FNERR_FILENAMECODES 0x3000 +#define FNERR_SUBCLASSFAILURE 0x3001 +#define FNERR_INVALIDFILENAME 0x3002 +#define FNERR_BUFFERTOOSMALL 0x3003 +#define FRERR_FINDREPLACECODES 0x4000 +#define FRERR_BUFFERLENGTHZERO 0x4001 +#define CCERR_CHOOSECOLORCODES 0x5000 +#endif diff --git a/reactos/w32api/include/cguid.h b/reactos/w32api/include/cguid.h new file mode 100644 index 00000000000..ca64c5e6630 --- /dev/null +++ b/reactos/w32api/include/cguid.h @@ -0,0 +1,83 @@ +#ifndef _CGUID_H +#define _CGUID_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +extern const IID GUID_NULL; +extern const IID IID_IRpcChannel; +extern const IID IID_IRpcStub; +extern const IID IID_IStubManager; +extern const IID IID_IRpcProxy; +extern const IID IID_IProxyManager; +extern const IID IID_IPSFactory; +extern const IID IID_IInternalMoniker; +extern const IID IID_IDfReserved1; +extern const IID IID_IDfReserved2; +extern const IID IID_IDfReserved3; +extern const CLSID CLSID_StdMarshal; +extern const IID IID_IStub; +extern const IID IID_IProxy; +extern const IID IID_IEnumGeneric; +extern const IID IID_IEnumHolder; +extern const IID IID_IEnumCallback; +extern const IID IID_IOleManager; +extern const IID IID_IOlePresObj; +extern const IID IID_IDebug; +extern const IID IID_IDebugStream; +extern const CLSID CLSID_PSGenObject; +extern const CLSID CLSID_PSClientSite; +extern const CLSID CLSID_PSClassObject; +extern const CLSID CLSID_PSInPlaceActive; +extern const CLSID CLSID_PSInPlaceFrame; +extern const CLSID CLSID_PSDragDrop; +extern const CLSID CLSID_PSBindCtx; +extern const CLSID CLSID_PSEnumerators; +extern const CLSID CLSID_StaticMetafile; +extern const CLSID CLSID_StaticDib; +extern const CLSID CID_CDfsVolume; +extern const CLSID CLSID_CCDFormKrnl; +extern const CLSID CLSID_CCDPropertyPage; +extern const CLSID CLSID_CCDFormDialog; +extern const CLSID CLSID_CCDCommandButton; +extern const CLSID CLSID_CCDComboBox; +extern const CLSID CLSID_CCDTextBox; +extern const CLSID CLSID_CCDCheckBox; +extern const CLSID CLSID_CCDLabel; +extern const CLSID CLSID_CCDOptionButton; +extern const CLSID CLSID_CCDListBox; +extern const CLSID CLSID_CCDScrollBar; +extern const CLSID CLSID_CCDGroupBox; +extern const CLSID CLSID_CCDGeneralPropertyPage; +extern const CLSID CLSID_CCDGenericPropertyPage; +extern const CLSID CLSID_CCDFontPropertyPage; +extern const CLSID CLSID_CCDColorPropertyPage; +extern const CLSID CLSID_CCDLabelPropertyPage; +extern const CLSID CLSID_CCDCheckBoxPropertyPage; +extern const CLSID CLSID_CCDTextBoxPropertyPage; +extern const CLSID CLSID_CCDOptionButtonPropertyPage; +extern const CLSID CLSID_CCDListBoxPropertyPage; +extern const CLSID CLSID_CCDCommandButtonPropertyPage; +extern const CLSID CLSID_CCDComboBoxPropertyPage; +extern const CLSID CLSID_CCDScrollBarPropertyPage; +extern const CLSID CLSID_CCDGroupBoxPropertyPage; +extern const CLSID CLSID_CCDXObjectPropertyPage; +extern const CLSID CLSID_CStdPropertyFrame; +extern const CLSID CLSID_CFormPropertyPage; +extern const CLSID CLSID_CGridPropertyPage; +extern const CLSID CLSID_CWSJArticlePage; +extern const CLSID CLSID_CSystemPage; +extern const CLSID CLSID_IdentityUnmarshal; +extern const CLSID CLSID_InProcFreeMarshaler; +extern const CLSID CLSID_Picture_Metafile; +extern const CLSID CLSID_Picture_EnhMetafile; +extern const CLSID CLSID_Picture_Dib; +extern const CLSID CLSID_StdGlobalInterfaceTable; +extern const GUID GUID_TRISTATE; +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/comcat.h b/reactos/w32api/include/comcat.h new file mode 100644 index 00000000000..e264ac999d0 --- /dev/null +++ b/reactos/w32api/include/comcat.h @@ -0,0 +1,177 @@ +#ifndef _COMCAT_H +#define _COMCAT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifndef COM_NO_WINDOWS_H +#include +#include +#endif + +#ifndef _RC_INVOKED + +#ifdef __cplusplus +extern "C"{ +#endif + +EXTERN_C const IID IID_IEnumGUID; +typedef interface IEnumGUID *LPENUMGUID; + +#undef INTERFACE +#define INTERFACE IEnumGUID +DECLARE_INTERFACE_(IEnumGUID,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Next)(THIS_ ULONG,GUID*,ULONG*) PURE; + STDMETHOD(Skip)(THIS_ ULONG) PURE; + STDMETHOD(Reset)(THIS) PURE; + STDMETHOD(Clone)(THIS_ LPENUMGUID*) PURE; +}; +#undef INTERFACE +#if (!defined (__cplusplus) || defined (CINTERFACE)) \ + && defined (COBJMACROS) +#define IEnumGUID_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumGUID_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumGUID_Release(p) (p)->lpVtbl->Release(p) +#define IEnumGUID_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumGUID_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumGUID_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumGUID_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +typedef GUID CATID; +typedef REFGUID REFCATID; +#define CATID_NULL GUID_NULL +#define IsEqualCATID(a, b) IsEqualGUID(a, b) + +typedef struct tagCATEGORYINFO { + CATID catid; /* category identifier for component */ + LCID lcid; /* locale identifier */ + OLECHAR szDescription[128]; /* description of the category */ +} CATEGORYINFO, *LPCATEGORYINFO; + +EXTERN_C const CATID CATID_Insertable; +EXTERN_C const CATID CATID_Control; +EXTERN_C const CATID CATID_Programmable; +EXTERN_C const CATID CATID_IsShortcut; +EXTERN_C const CATID CATID_NeverShowExt; +EXTERN_C const CATID CATID_DocObject; +EXTERN_C const CATID CATID_Printable; +EXTERN_C const CATID CATID_RequiresDataPathHost; +EXTERN_C const CATID CATID_PersistsToMoniker; +EXTERN_C const CATID CATID_PersistsToStorage; +EXTERN_C const CATID CATID_PersistsToStreamInit; +EXTERN_C const CATID CATID_PersistsToStream; +EXTERN_C const CATID CATID_PersistsToMemory; +EXTERN_C const CATID CATID_PersistsToFile; +EXTERN_C const CATID CATID_PersistsToPropertyBag; +EXTERN_C const CATID CATID_InternetAware; +EXTERN_C const CATID CATID_DesignTimeUIActivatableControl; + +#define IEnumCATID IEnumGUID +#define LPENUMCATID LPENUMGUID +#define IID_IEnumCATID IID_IEnumGUID + +#define IEnumCLSID IEnumGUID +#define LPENUMCLSID LPENUMGUID +#define IID_IEnumCLSID IID_IEnumGUID + +EXTERN_C const IID IID_ICatInformation; +typedef interface ICatInformation *LPCATINFORMATION; + +EXTERN_C const IID IID_ICatRegister; +typedef interface ICatRegister *LPCATREGISTER; + +EXTERN_C const IID IID_IEnumCATEGORYINFO; +typedef interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO; + +EXTERN_C const CLSID CLSID_StdComponentCategoriesMgr; + +#define INTERFACE ICatInformation +DECLARE_INTERFACE_(ICatInformation,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(EnumCategories)(THIS_ LCID,LPENUMCATEGORYINFO*) PURE; + STDMETHOD(GetCategoryDesc)(THIS_ REFCATID,LCID,PWCHAR*) PURE; + STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG,CATID*,ULONG,CATID*,LPENUMCLSID*) PURE; + STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID,ULONG,CATID*,ULONG,CATID*) PURE; + STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE; + STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE; +}; +#undef INTERFACE +#if (!defined (__cplusplus) || defined (CINTERFACE)) \ + && defined (COBJMACROS) +#define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ICatInformation_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ICatInformation_Release(p) (p)->lpVtbl->Release(p) +#define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b) +#define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c) +#define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e) +#define ICatInformation_IsClassOfCategories(p,a,b,c,d,e) (p)->lpVtbl->IsClassOfCategories(p,a,b,c,d,e) +#define ICatInformation_EnumImplCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumImplCategoriesOfClass(p,a,b) +#define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b) +#endif + +#define INTERFACE ICatRegister +DECLARE_INTERFACE_(ICatRegister,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(RegisterCategories)(THIS_ ULONG,CATEGORYINFO*) PURE; + STDMETHOD(UnRegisterCategories)(THIS_ ULONG,CATID*) PURE; + STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; + STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; + STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; + STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE; +}; +#undef INTERFACE +#if (!defined (__cplusplus) || defined (CINTERFACE)) \ + && defined (COBJMACROS) +#define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define ICatRegister_AddRef(p) (p)->lpVtbl->AddRef(p) +#define ICatRegister_Release(p) (p)->lpVtbl->Release(p) +#define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b) +#define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b) +#define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c) +#define ICatRegister_UnRegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassImplCategories(p,a,b,c) +#define ICatRegister_RegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->RegisterClassReqCategories(p,a,b,c) +#define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c) +#endif + +EXTERN_C const IID IID_IEnumCATEGORYINFO; +#undef INTERFACE +#define INTERFACE IEnumCATEGORYINFO +DECLARE_INTERFACE_(IEnumCATEGORYINFO,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Next)(THIS_ ULONG,CATEGORYINFO*,ULONG*) PURE; + STDMETHOD(Skip)(THIS_ ULONG) PURE; + STDMETHOD(Reset)(THIS) PURE; + STDMETHOD(Clone)(THIS_ LPENUMCATEGORYINFO*) PURE; +}; +#undef INTERFACE +#if (!defined (__cplusplus) || defined (CINTERFACE)) \ + && defined (COBJMACROS) +#define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IEnumCATEGORYINFO_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IEnumCATEGORYINFO_Release(p) (p)->lpVtbl->Release(p) +#define IEnumCATEGORYINFO_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c) +#define IEnumCATEGORYINFO_Skip(p,a) (p)->lpVtbl->Skip(p,a) +#define IEnumCATEGORYINFO_Reset(p) (p)->lpVtbl->Reset(p) +#define IEnumCATEGORYINFO_Clone(p,a) (p)->lpVtbl->Clone(p,a) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _RC_INVOKED */ +#endif diff --git a/reactos/w32api/include/commctrl.h b/reactos/w32api/include/commctrl.h new file mode 100644 index 00000000000..3c15dffa5d8 --- /dev/null +++ b/reactos/w32api/include/commctrl.h @@ -0,0 +1,3513 @@ +#ifndef _COMMCTRL_H +#define _COMMCTRL_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#ifndef _WIN32_IE +/* define _WIN32_IE if you really want it */ +#if 0 +#define _WIN32_IE 0x0300 +#endif +#endif + +#ifndef SNDMSG +#ifdef __cplusplus +#define SNDMSG ::SendMessage +#else +#define SNDMSG SendMessage +#endif +#endif /* ifndef SNDMSG */ + +#define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg") +#define HOTKEY_CLASSA "msctls_hotkey32" +#define HOTKEY_CLASSW L"msctls_hotkey32" +#define PROGRESS_CLASSA "msctls_progress32" +#define PROGRESS_CLASSW L"msctls_progress32" +#define STATUSCLASSNAMEA "msctls_statusbar32" +#define STATUSCLASSNAMEW L"msctls_statusbar32" +#define TOOLBARCLASSNAMEA "ToolbarWindow32" +#define TOOLBARCLASSNAMEW L"ToolbarWindow32" +#define TOOLTIPS_CLASSA "tooltips_class32" +#define TOOLTIPS_CLASSW L"tooltips_class32" +#define TRACKBAR_CLASSA "msctls_trackbar32" +#define TRACKBAR_CLASSW L"msctls_trackbar32" +#define UPDOWN_CLASSA "msctls_updown32" +#define UPDOWN_CLASSW L"msctls_updown32" +#define ANIMATE_CLASSA "SysAnimate32" +#define ANIMATE_CLASSW L"SysAnimate32" +#define DATETIMEPICK_CLASSW L"SysDateTimePick32" +#define DATETIMEPICK_CLASSA "SysDateTimePick32" +#define MONTHCAL_CLASSW L"SysMonthCal32" +#define MONTHCAL_CLASSA "SysMonthCal32" +#define REBARCLASSNAMEW L"ReBarWindow32" +#define REBARCLASSNAMEA "ReBarWindow32" +#define WC_COMBOBOXEXW L"ComboBoxEx32" +#define WC_COMBOBOXEXA "ComboBoxEx32" +#define WC_IPADDRESSW L"SysIPAddress32" +#define WC_IPADDRESSA "SysIPAddress32" +#define WC_LISTVIEWA "SysListView32" +#define WC_LISTVIEWW L"SysListView32" +#define WC_TABCONTROLA "SysTabControl32" +#define WC_TABCONTROLW L"SysTabControl32" +#define WC_TREEVIEWA ("SysTreeView32") +#define WC_TREEVIEWW L"SysTreeView32" +#define WC_HEADERA "SysHeader32" +#define WC_HEADERW L"SysHeader32" +#define WC_PAGESCROLLERW L"SysPager" +#define WC_PAGESCROLLERA "SysPager" +#define WC_NATIVEFONTCTLW L"NativeFontCtl" +#define WC_NATIVEFONTCTLA "NativeFontCtl" +#define WC_BUTTONA "Button" +#define WC_BUTTONW L"Button" +#define WC_STATICA "Static" +#define WC_STATICW L"Static" +#define WC_EDITA "Edit" +#define WC_EDITW L"Edit" +#define WC_LISTBOXA "ListBox" +#define WC_LISTBOXW L"ListBox" +#define WC_COMBOBOXA "ComboBox" +#define WC_COMBOBOXW L"ComboBox" +#define WC_SCROLLBARA "ScrollBar" +#define WC_SCROLLBARW L"ScrollBar" + +#ifdef UNICODE +#define HOTKEY_CLASS HOTKEY_CLASSW +#define PROGRESS_CLASS PROGRESS_CLASSW +#define STATUSCLASSNAME STATUSCLASSNAMEW +#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW +#define TOOLTIPS_CLASS TOOLTIPS_CLASSW +#define TRACKBAR_CLASS TRACKBAR_CLASSW +#define UPDOWN_CLASS UPDOWN_CLASSW +#define ANIMATE_CLASS ANIMATE_CLASSW +#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW +#define MONTHCAL_CLASS MONTHCAL_CLASSW +#define REBARCLASSNAME REBARCLASSNAMEW +#define WC_COMBOBOXEX WC_COMBOBOXEXW +#define WC_HEADER WC_HEADERW +#define WC_IPADDRESS WC_IPADDRESSW +#define WC_LISTVIEW WC_LISTVIEWW +#define WC_TABCONTROL WC_TABCONTROLW +#define WC_TREEVIEW WC_TREEVIEWW +#define WC_PAGESCROLLER WC_PAGESCROLLERW +#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLW +#define WC_BUTTON WC_BUTTONW +#define WC_STATIC WC_STATICW +#define WC_EDIT WC_EDITW +#define WC_LISTBOX WC_LISTBOXW +#define WC_COMBOBOX WC_COMBOBOXW +#define WC_SCROLLBAR WC_SCROLLBARW +#else +#define ANIMATE_CLASS ANIMATE_CLASSA +#define HOTKEY_CLASS HOTKEY_CLASSA +#define PROGRESS_CLASS PROGRESS_CLASSA +#define STATUSCLASSNAME STATUSCLASSNAMEA +#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA +#define TOOLTIPS_CLASS TOOLTIPS_CLASSA +#define TRACKBAR_CLASS TRACKBAR_CLASSA +#define UPDOWN_CLASS UPDOWN_CLASSA +#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA +#define MONTHCAL_CLASS MONTHCAL_CLASSA +#define REBARCLASSNAME REBARCLASSNAMEA +#define WC_COMBOBOXEX WC_COMBOBOXEXA +#define WC_HEADER WC_HEADERA +#define WC_IPADDRESS WC_IPADDRESSA +#define WC_LISTVIEW WC_LISTVIEWA +#define WC_TABCONTROL WC_TABCONTROLA +#define WC_TREEVIEW WC_TREEVIEWA +#define WC_PAGESCROLLER WC_PAGESCROLLERA +#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLA +#define WC_BUTTON WC_BUTTONA +#define WC_STATIC WC_STATICA +#define WC_EDIT WC_EDITA +#define WC_LISTBOX WC_LISTBOXA +#define WC_COMBOBOX WC_COMBOBOXA +#define WC_SCROLLBAR WC_SCROLLBARA +#endif + +#if (_WIN32_IE >= 0x0500) +#if (_WIN32_WINNT >= 0x0501) +#define COMCTL32_VERSION 6 +#else +#define COMCTL32_VERSION 5 +#endif +#endif + +#define LVM_FIRST 0x1000 +#define TV_FIRST 0x1100 +#define HDM_FIRST 0x1200 +#define ACM_OPENA (WM_USER+100) +#define ACM_PLAY (WM_USER+101) +#define ACM_STOP (WM_USER+102) +#define ACM_OPENW (WM_USER+103) +#define ACN_START 1 +#define ACN_STOP 2 +#define CBEIF_TEXT 0x00000001 +#define CBEIF_IMAGE 0x00000002 +#define CBEIF_SELECTEDIMAGE 0x00000004 +#define CBEIF_OVERLAY 0x00000008 +#define CBEIF_INDENT 0x00000010 +#define CBEIF_LPARAM 0x00000020 +#define CBEIF_DI_SETITEM 0x10000000 +#define CBEN_INSERTITEM (CBEN_FIRST - 1) +#define CBEN_DELETEITEM (CBEN_FIRST - 2) +#define CBEN_BEGINEDIT (CBEN_FIRST - 4) +#define CBEN_ENDEDITA (CBEN_FIRST - 5) +#define CBEN_ENDEDITW (CBEN_FIRST - 6) +#define CBENF_KILLFOCUS 1 +#define CBENF_RETURN 2 +#define CBENF_ESCAPE 3 +#define CBENF_DROPDOWN 4 +#define CBEMAXSTRLEN 260 +#define DL_BEGINDRAG 1157 +#define DL_CANCELDRAG 1160 +#define DL_DRAGGING 1158 +#define DL_DROPPED 1159 +#define DL_CURSORSET 0 +#define DL_STOPCURSOR 1 +#define DL_COPYCURSOR 2 +#define DL_MOVECURSOR 3 +#define CCS_TOP 1 +#define CCS_NOMOVEY 2 +#define CCS_BOTTOM 3 +#define CCS_NORESIZE 4 +#define CCS_NOPARENTALIGN 8 +#define CCS_ADJUSTABLE 32 +#define CCS_NODIVIDER 64 +#if (_WIN32_IE >= 0x0300) +#define CCS_VERT 128 +#define CCS_LEFT 129 +#define CCS_NOMOVEX 130 +#define CCS_RIGHT 131 +#endif +#define ACS_CENTER 0x0001 +#define ACS_TRANSPARENT 0x0002 +#define ACS_AUTOPLAY 0x0004 +#define ACS_TIMER 0x0008 +#define PGS_VERT 0x00000000 +#define PGS_HORZ 0x00000001 +#define PGS_AUTOSCROLL 0x00000002 +#define PGS_DRAGNDROP 0x00000004 +#define CMB_MASKED 2 +#define MINSYSCOMMAND SC_SIZE +#define SBT_OWNERDRAW 0x1000 +#define SBT_NOBORDERS 256 +#define SBT_POPOUT 512 +#define SBT_RTLREADING 1024 +#define SB_SETTEXTA (WM_USER+1) +#define SB_SETTEXTW (WM_USER+11) +#define SB_GETTEXTA (WM_USER+2) +#define SB_GETTEXTW (WM_USER+13) +#define SB_GETTEXTLENGTHA (WM_USER+3) +#define SB_GETTEXTLENGTHW (WM_USER+12) +#define SB_SETPARTS (WM_USER+4) +#define SB_GETPARTS (WM_USER+6) +#define SB_GETBORDERS (WM_USER+7) +#define SB_SETMINHEIGHT (WM_USER+8) +#define SB_SIMPLE (WM_USER+9) +#define SB_GETRECT (WM_USER+10) +#define MSGF_COMMCTRL_BEGINDRAG 0x4200 +#define MSGF_COMMCTRL_SIZEHEADER 0x4201 +#define MSGF_COMMCTRL_DRAGSELECT 0x4202 +#define MSGF_COMMCTRL_TOOLBARCUST 0x4203 +#define ILC_COLOR 0 +#define ILC_COLOR4 4 +#define ILC_COLOR8 8 +#define ILC_COLOR16 16 +#define ILC_COLOR24 24 +#define ILC_COLOR32 32 +#define ILC_COLORDDB 254 +#define ILC_MASK 1 +#define ILC_PALETTE 2048 +#define ILCF_MOVE 0 +#define ILCF_SWAP 1 +#define ILS_NORMAL 0 +#define ILS_GLOW 1 +#define ILS_SHADOW 2 +#define ILS_SATURATE 4 +#define ILS_ALPHA 8 +#define ILD_BLEND25 2 +#define ILD_BLEND50 4 +#define ILD_SELECTED 4 +#define ILD_BLEND 4 +#define ILD_FOCUS 2 +#define ILD_MASK 16 +#define ILD_NORMAL 0 +#define ILD_TRANSPARENT 1 +#define ILD_IMAGE 0x0020 +#define ILD_ROP 0x0040 +#define ILD_OVERLAYMASK 0x0F00 +#define ILD_PRESERVEALPHA 0x1000 +#define ILD_SCALE 0x2000 +#define ILD_DPISCALE 0x4000 +#define HDS_HORZ 0 +#define HDS_BUTTONS 2 +#define HDS_HIDDEN 8 +#if (_WIN32_IE > 0x0300) +#define HDS_HOTTRACK 4 +#define HDS_DRAGDROP 0x0040 +#define HDS_FULLDRAG 0x0080 +#endif /* _WIN32_IE > 0x0300 */ +#if (_WIN32_IE >= 0x0500) +#define HDS_FILTERBAR 0x0100 +#endif /* _WIN32_IE >= 0x0500 */ +#define NM_FIRST 0 +#define NM_LAST ((UINT)-99) +#define LVN_FIRST ((UINT)-100) +#define LVN_LAST ((UINT)-199) +#define HDN_FIRST ((UINT)-300) +#define HDN_LAST ((UINT)-399) +#define TVN_FIRST ((UINT)-400) +#define TVN_LAST ((UINT)-499) +#define TTN_FIRST ((UINT)-520) +#define TTN_LAST ((UINT)-549) +#define TCN_FIRST ((UINT)-550) +#define TCN_LAST ((UINT)-580) +#ifndef CDN_FIRST +#define CDN_FIRST ((UINT)-601) /* also in commdlg.h */ +#define CDN_LAST ((UINT)-699) +#endif +#define TBN_FIRST ((UINT)-700) +#define TBN_LAST ((UINT)-720) +#define UDN_FIRST ((UINT)-721) +#define UDN_LAST ((UINT)-740) +#if (_WIN32_IE >= 0x0300) +#define RBN_FIRST ((UINT)-831) +#define RBN_LAST ((UINT)-859) +#define MCN_FIRST ((UINT)-750) +#define MCN_LAST ((UINT)-759) +#define DTN_FIRST ((UINT)-760) +#define DTN_LAST ((UINT)-799) +#define CBEN_FIRST ((UINT)-800) +#define CBEN_LAST ((UINT)-830) +#endif /* _WIN32_IE */ +#if (_WIN32_IE >= 0x0400) +#define IPN_FIRST ((UINT)-860) +#define IPN_LAST ((UINT)-879) +#define IPN_FIELDCHANGED (IPN_FIRST-0) +#define SBN_FIRST ((UINT)-880U) +#define SBN_LAST ((UINT)-899U) +#define PGN_FIRST ((UINT)-900U) +#define PGN_LAST ((UINT)-950U) +#define PGN_SCROLL (PGN_FIRST-1) +#define PGN_CALCSIZE (PGN_FIRST-2) +#endif /* _WIN32_IE >= 0x0400 */ +#define HDI_WIDTH 1 +#define HDI_HEIGHT 1 +#define HDI_TEXT 2 +#define HDI_FORMAT 4 +#define HDI_LPARAM 8 +#define HDI_BITMAP 16 +#if (_WIN32_IE >= 0x0300) +#define HDI_IMAGE 32 +#define HDI_DI_SETITEM 64 +#define HDI_ORDER 128 +#endif +#define CBES_EX_NOEDITIMAGE 0x00000001 +#define CBES_EX_NOEDITIMAGEINDENT 0x00000002 +#define CBES_EX_PATHWORDBREAKPROC 0x00000004 +#if (_WIN32_IE >= 0x0400) +#define CBES_EX_NOSIZELIMIT 0x00000008 +#define CBES_EX_CASESENSITIVE 0x00000010 +#define CBEN_GETDISPINFOA (CBEN_FIRST - 0) +#define CBEN_GETDISPINFOW (CBEN_FIRST - 7) +#define CBEN_DRAGBEGINA (CBEN_FIRST - 8) +#define CBEN_DRAGBEGINW (CBEN_FIRST - 9) +#endif /* _WIN32_IE >= 0x0400 */ +#if (_WIN32_IE >= 0x0500) +#define HDI_FILTER 256 +#endif +#define HDF_LEFT 0 +#define HDF_RIGHT 1 +#define HDF_CENTER 2 +#define HDF_JUSTIFYMASK 3 +#define HDF_RTLREADING 4 +#define HDF_OWNERDRAW 0x8000 +#define HDF_STRING 0x4000 +#define HDF_BITMAP 0x2000 +#if (_WIN32_IE >= 0x0300) +#define HDF_BITMAP_ON_RIGHT 0x1000 +#define HDF_IMAGE 0x0800 +#endif +#define HDM_GETITEMCOUNT HDM_FIRST +#define HDM_INSERTITEMA (HDM_FIRST+1) +#define HDM_INSERTITEMW (HDM_FIRST+10) +#define HDM_DELETEITEM (HDM_FIRST+2) +#define HDM_GETITEMA (HDM_FIRST+3) +#define HDM_GETITEMW (HDM_FIRST+11) +#define HDM_SETITEMA (HDM_FIRST+4) +#define HDM_SETITEMW (HDM_FIRST+12) +#define HDM_LAYOUT (HDM_FIRST+5) +#if (_WIN32_IE >= 0x0300) +#define HDM_GETITEMRECT (HDM_FIRST+7) +#define HDM_SETIMAGELIST (HDM_FIRST+8) +#define HDM_GETIMAGELIST (HDM_FIRST+9) +#define HDM_ORDERTOINDEX (HDM_FIRST+15) +#define HDM_CREATEDRAGIMAGE (HDM_FIRST+16) +#define HDM_GETORDERARRAY (HDM_FIRST+17) +#define HDM_SETORDERARRAY (HDM_FIRST+18) +#define HDM_SETHOTDIVIDER (HDM_FIRST+19) +#endif +#if (_WIN32_IE >= 0x0400) +#define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#endif +#define HHT_NOWHERE 1 +#define HHT_ONHEADER 2 +#define HHT_ONDIVIDER 4 +#define HHT_ONDIVOPEN 8 +#define HHT_ABOVE 256 +#define HHT_BELOW 512 +#define HHT_TORIGHT 1024 +#define HHT_TOLEFT 2048 +#define HDM_HITTEST (HDM_FIRST+6) +#define HDN_ITEMCHANGINGA (HDN_FIRST-0) +#define HDN_ITEMCHANGINGW (HDN_FIRST-20) +#define HDN_ITEMCHANGEDA (HDN_FIRST-1) +#define HDN_ITEMCHANGEDW (HDN_FIRST-21) +#define HDN_ITEMCLICKA (HDN_FIRST-2) +#define HDN_ITEMCLICKW (HDN_FIRST-22) +#define HDN_ITEMDBLCLICKA (HDN_FIRST-3) +#define HDN_ITEMDBLCLICKW (HDN_FIRST-23) +#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5) +#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25) +#define HDN_BEGINTRACKA (HDN_FIRST-6) +#define HDN_BEGINTRACKW (HDN_FIRST-26) +#define HDN_ENDTRACKA (HDN_FIRST-7) +#define HDN_ENDTRACKW (HDN_FIRST-27) +#define HDN_TRACKA (HDN_FIRST-8) +#define HDN_TRACKW (HDN_FIRST-28) +#if _WIN32_IE >= 0x0300 +#define HDN_ENDDRAG (HDN_FIRST-11) +#define HDN_BEGINDRAG (HDN_FIRST-10) +#define HDN_GETDISPINFOA (HDN_FIRST-9) +#define HDN_GETDISPINFOW (HDN_FIRST-29) +#endif +#if (_WIN32_IE >= 0x0400) +#define HICF_OTHER 0x00 +#define HICF_MOUSE 0x01 +#define HICF_ARROWKEYS 0x02 +#define HICF_ACCELERATOR 0x04 +#define HICF_DUPACCEL 0x08 +#define HICF_ENTERING 0x10 +#define HICF_LEAVING 0x20 +#define HICF_RESELECT 0x40 +#define HICF_LMOUSE 0x80 +#define HICF_TOGGLEDROPDOWN 0x100 +#endif /* _WIN32_IE >= 0x0400 */ +#define IPM_CLEARADDRESS (WM_USER+100) +#define IPM_SETADDRESS (WM_USER+101) +#define IPM_GETADDRESS (WM_USER+102) +#define IPM_SETRANGE (WM_USER+103) +#define IPM_SETFOCUS (WM_USER+104) +#define IPM_ISBLANK (WM_USER+105) +#if (_WIN32_IE >= 0x0500) +#define I_INDENTCALLBACK (-1) +#define I_IMAGENONE (-2) +#endif +#define CMB_MASKED 2 +#define TBSTATE_CHECKED 1 +#define TBSTATE_PRESSED 2 +#define TBSTATE_ENABLED 4 +#define TBSTATE_HIDDEN 8 +#define TBSTATE_INDETERMINATE 16 +#define TBSTATE_WRAP 32 +#if (_WIN32_IE >= 0x0400) +#define TBSTATE_MARKED 0x0080 +#endif +#define TBSTYLE_BUTTON 0 +#define TBSTYLE_SEP 1 +#define TBSTYLE_CHECK 2 +#define TBSTYLE_GROUP 4 +#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP|TBSTYLE_CHECK) +#if (_WIN32_IE >= 0x0300) +#define TBSTYLE_DROPDOWN 8 +#endif +#if (_WIN32_IE >= 0x0400) +#define TBSTYLE_AUTOSIZE 16 +#define TBSTYLE_NOPREFIX 32 +#endif +#define TBSTYLE_TOOLTIPS 256 +#define TBSTYLE_WRAPABLE 512 +#define TBSTYLE_ALTDRAG 1024 +#if (_WIN32_IE >= 0x0300) +#define TBSTYLE_FLAT 2048 +#define TBSTYLE_LIST 4096 +#define TBSTYLE_CUSTOMERASE 8192 +#endif +#if (_WIN32_IE >= 0x0400) +#define TBSTYLE_REGISTERDROP 0x4000 +#define TBSTYLE_TRANSPARENT 0x8000 +#define TBSTYLE_EX_DRAWDDARROWS 0x00000001 +#endif /* _WIN32_IE >= 0x0400 */ +#if (_WIN32_IE >= 0x0501) +#define TBSTYLE_EX_MIXEDBUTTONS 8 +#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 16 +#endif /* _WIN32_IE >= 0x0501 */ +#if (_WIN32_WINNT >= 0x0501) +#define TBSTYLE_EX_DOUBLEBUFFER 0x80 +#endif /* _WIN32_WINNT >= 0x0501 */ +#if (_WIN32_IE >= 0x0500) +#define BTNS_BUTTON TBSTYLE_BUTTON +#define BTNS_SEP TBSTYLE_SEP +#define BTNS_CHECK TBSTYLE_CHECK +#define BTNS_GROUP TBSTYLE_GROUP +#define BTNS_CHECKGROUP TBSTYLE_CHECKGROUP +#define BTNS_DROPDOWN TBSTYLE_DROPDOWN +#define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE +#define BTNS_NOPREFIX TBSTYLE_NOPREFIX +#define BTNS_WHOLEDROPDOWN 0x0080 +#endif /* _WIN32_IE >= 0x0500 */ +#if _WIN32_IE >= 0x0501 +#define BTNS_SHOWTEXT 0x0040 +#endif +#if (_WIN32_IE >= 0x0400) +#define TBCDRF_NOEDGES 0x10000 +#define TBCDRF_HILITEHOTTRACK 0x20000 +#define TBCDRF_NOOFFSET 0x40000 +#define TBCDRF_NOMARK 0x80000 +#define TBCDRF_NOETCHEDEFFECT 0x100000 +#endif /* _WIN32_IE >= 0x0400 */ +#define HINST_COMMCTRL ((HINSTANCE)-1) +#define IDB_STD_SMALL_COLOR 0 +#define IDB_STD_LARGE_COLOR 1 +#define IDB_VIEW_SMALL_COLOR 4 +#define IDB_VIEW_LARGE_COLOR 5 +#if (_WIN32_IE >= 0x0300) +#define IDB_HIST_SMALL_COLOR 8 +#define IDB_HIST_LARGE_COLOR 9 +#endif +#define STD_CUT 0 +#define STD_COPY 1 +#define STD_PASTE 2 +#define STD_UNDO 3 +#define STD_REDOW 4 +#define STD_DELETE 5 +#define STD_FILENEW 6 +#define STD_FILEOPEN 7 +#define STD_FILESAVE 8 +#define STD_PRINTPRE 9 +#define STD_PROPERTIES 10 +#define STD_HELP 11 +#define STD_FIND 12 +#define STD_REPLACE 13 +#define STD_PRINT 14 +#define VIEW_LARGEICONS 0 +#define VIEW_SMALLICONS 1 +#define VIEW_LIST 2 +#define VIEW_DETAILS 3 +#define VIEW_SORTNAME 4 +#define VIEW_SORTSIZE 5 +#define VIEW_SORTDATE 6 +#define VIEW_SORTTYPE 7 +#define VIEW_PARENTFOLDER 8 +#define VIEW_NETCONNECT 9 +#define VIEW_NETDISCONNECT 10 +#define VIEW_NEWFOLDER 11 +#define TB_ENABLEBUTTON (WM_USER+1) +#define TB_CHECKBUTTON (WM_USER+2) +#define TB_PRESSBUTTON (WM_USER+3) +#define TB_HIDEBUTTON (WM_USER+4) +#define TB_INDETERMINATE (WM_USER+5) +#define TB_ISBUTTONENABLED (WM_USER+9) +#define TB_ISBUTTONCHECKED (WM_USER+10) +#define TB_ISBUTTONPRESSED (WM_USER+11) +#define TB_ISBUTTONHIDDEN (WM_USER+12) +#define TB_ISBUTTONINDETERMINATE (WM_USER+13) +#if (_WIN32_IE >= 0x0400) +#define TB_ISBUTTONHIGHLIGHTED (WM_USER+14) +#endif +#define TB_SETSTATE (WM_USER+17) +#define TB_GETSTATE (WM_USER+18) +#define TB_ADDBITMAP (WM_USER+19) +#if (_WIN32_IE >= 0x0400) +#define TB_ADDBUTTONSA (WM_USER+20) +#define TB_INSERTBUTTONA (WM_USER+21) +#else +#define TB_ADDBUTTONS (WM_USER+20) +#define TB_INSERTBUTTON (WM_USER+21) +#endif +#define TB_DELETEBUTTON (WM_USER+22) +#define TB_GETBUTTON (WM_USER+23) +#define TB_BUTTONCOUNT (WM_USER+24) +#define TB_COMMANDTOINDEX (WM_USER+25) +#define TB_SAVERESTOREA (WM_USER+26) +#define TB_SAVERESTOREW (WM_USER+76) +#define TB_CUSTOMIZE (WM_USER+27) +#define TB_ADDSTRINGA (WM_USER+28) +#define TB_ADDSTRINGW (WM_USER+77) +#define TB_GETITEMRECT (WM_USER+29) +#define TB_BUTTONSTRUCTSIZE (WM_USER+30) +#define TB_SETBUTTONSIZE (WM_USER+31) +#define TB_SETBITMAPSIZE (WM_USER+32) +#define TB_AUTOSIZE (WM_USER+33) +#define TB_GETTOOLTIPS (WM_USER+35) +#define TB_SETTOOLTIPS (WM_USER+36) +#define TB_SETPARENT (WM_USER+37) +#define TB_SETROWS (WM_USER+39) +#define TB_GETROWS (WM_USER+40) +#define TB_GETBITMAPFLAGS (WM_USER+41) +#define TB_SETCMDID (WM_USER+42) +#define TB_CHANGEBITMAP (WM_USER+43) +#define TB_GETBITMAP (WM_USER+44) +#define TB_GETBUTTONTEXTA (WM_USER+45) +#define TB_GETBUTTONTEXTW (WM_USER+75) +#define TB_REPLACEBITMAP (WM_USER+46) +#define TB_GETBUTTONSIZE (WM_USER+58) +#define TB_SETBUTTONWIDTH (WM_USER+59) +#if (_WIN32_IE >= 0x0300) +#define TB_SETINDENT (WM_USER+47) +#define TB_SETIMAGELIST (WM_USER+48) +#define TB_GETIMAGELIST (WM_USER+49) +#define TB_LOADIMAGES (WM_USER+50) +#define TB_GETRECT (WM_USER+51) +#define TB_SETHOTIMAGELIST (WM_USER+52) +#define TB_GETHOTIMAGELIST (WM_USER+53) +#define TB_SETDISABLEDIMAGELIST (WM_USER+54) +#define TB_GETDISABLEDIMAGELIST (WM_USER+55) +#define TB_SETSTYLE (WM_USER+56) +#define TB_GETSTYLE (WM_USER+57) +#define TB_GETBUTTONSIZE (WM_USER+58) +#define TB_SETBUTTONWIDTH (WM_USER+59) +#define TB_SETMAXTEXTROWS (WM_USER+60) +#define TB_GETTEXTROWS (WM_USER+61) +#endif +#if _WIN32_IE >= 0x400 +#define TB_GETOBJECT (WM_USER+62) +#define TB_GETBUTTONINFOW (WM_USER+63) +#define TB_SETBUTTONINFOW (WM_USER+64) +#define TB_GETBUTTONINFOA (WM_USER+65) +#define TB_SETBUTTONINFOA (WM_USER+66) +#define TB_INSERTBUTTONW (WM_USER+67) +#define TB_ADDBUTTONSW (WM_USER+68) +#define TB_HITTEST (WM_USER+69) +#define TB_SETEXTENDEDSTYLE (WM_USER+84) +#define TB_GETEXTENDEDSTYLE (WM_USER+85) +#define TB_SETDRAWTEXTFLAGS (WM_USER+70) +#define TB_GETHOTITEM (WM_USER+71) +#define TB_SETHOTITEM (WM_USER+72) +#define TB_SETANCHORHIGHLIGHT (WM_USER+73) +#define TB_GETANCHORHIGHLIGHT (WM_USER+74) +#define TB_MAPACCELERATORA (WM_USER+78) +#define TB_GETINSERTMARK (WM_USER+79) +#define TB_SETINSERTMARK (WM_USER+80) +#define TB_INSERTMARKHITTEST (WM_USER+81) +#define TB_MOVEBUTTON (WM_USER+82) +#define TB_GETMAXSIZE (WM_USER+83) +#define TB_SETEXTENDEDSTYLE (WM_USER+84) +#define TB_GETEXTENDEDSTYLE (WM_USER+85) +#define TB_GETPADDING (WM_USER+86) +#define TB_SETPADDING (WM_USER+87) +#define TB_SETINSERTMARKCOLOR (WM_USER+88) +#define TB_GETINSERTMARKCOLOR (WM_USER+89) +#define TB_MAPACCELERATORW (WM_USER+90) +#define TB_SETCOLORSCHEME CCM_SETCOLORSCHEME +#define TB_GETCOLORSCHEME CCM_GETCOLORSCHEME +#define TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#endif +#define TBBF_LARGE 1 +#define TBN_GETBUTTONINFOA (TBN_FIRST-0) +#define TBN_BEGINDRAG (TBN_FIRST-1) +#define TBN_ENDDRAG (TBN_FIRST-2) +#define TBN_BEGINADJUST (TBN_FIRST-3) +#define TBN_ENDADJUST (TBN_FIRST-4) +#define TBN_RESET (TBN_FIRST-5) +#define TBN_QUERYINSERT (TBN_FIRST-6) +#define TBN_QUERYDELETE (TBN_FIRST-7) +#define TBN_TOOLBARCHANGE (TBN_FIRST-8) +#define TBN_CUSTHELP (TBN_FIRST-9) +#if (_WIN32_IE >= 0x0300) +#define TBN_DROPDOWN (TBN_FIRST-10) +#endif +#if (_WIN32_IE >= 0x0400) +#define TBN_HOTITEMCHANGE (TBN_FIRST-13) +#define TBN_DRAGOUT (TBN_FIRST-14) +#define TBN_DELETINGBUTTON (TBN_FIRST-15) +#define TBN_GETDISPINFOA (TBN_FIRST-16) +#define TBN_GETDISPINFOW (TBN_FIRST-17) +#define TBN_GETINFOTIPA (TBN_FIRST-18) +#define TBN_GETINFOTIPW (TBN_FIRST-19) +#define TBN_GETBUTTONINFOW (TBN_FIRST-20) +#endif +#if (_WIN32_IE >= 0x0500) +#define TBN_RESTORE (TBN_FIRST-21) +#define TBN_SAVE (TBN_FIRST-22) +#define TBN_INITCUSTOMIZE (TBN_FIRST-23) +#define TBNRF_HIDEHELP 1 +#define TBNRF_ENDCUSTOMIZE 2 +#define TBNF_IMAGE 1 +#define TBNF_TEXT 2 +#define TBNF_DI_SETITEM 0x10000000 +#endif /* _WIN32_IE >= 0x0500 */ +#define TTS_ALWAYSTIP 1 +#define TTS_NOPREFIX 2 +#if( _WIN32_IE >= 0x0500 ) +#define TTS_NOANIMATE 0x10 +#define TTS_NOFADE 0x20 +#define TTS_BALLOON 0x40 +#define TTS_CLOSE 0x80 +#endif /* _WIN32_IE >= 0x0500 */ +#define TTF_IDISHWND 1 +#define TTF_CENTERTIP 2 +#define TTF_RTLREADING 4 +#define TTF_SUBCLASS 16 +#if (_WIN32_IE >= 0x0300) +#define TTF_TRACK 0x0020 +#define TTF_ABSOLUTE 0x0080 +#define TTF_TRANSPARENT 0x0100 +#if (_WIN32_IE >= 0x0501) +#define TTF_PARSELINKS 0x1000 +#endif +#define TTF_DI_SETITEM 0x8000 +#define TBCD_TICS 1 +#define TBCD_THUMB 2 +#define TBCD_CHANNEL 3 +#endif /* _WIN32_IE >= 0x0300 */ +#if (_WIN32_IE >= 0x0400) +#define TBDDRET_DEFAULT 0 +#define TBDDRET_NODEFAULT 1 +#define TBDDRET_TREATPRESSED 2 +#define TBIMHT_AFTER 1 +#define TBIMHT_BACKGROUND 2 +#endif +#define TTDT_AUTOMATIC 0 +#define TTDT_RESHOW 1 +#define TTDT_AUTOPOP 2 +#define TTDT_INITIAL 3 +#define TTM_ACTIVATE (WM_USER+1) +#define TTM_SETDELAYTIME (WM_USER+3) +#define TTM_ADDTOOLA (WM_USER+4) +#define TTM_ADDTOOLW (WM_USER+50) +#define TTM_DELTOOLA (WM_USER+5) +#define TTM_DELTOOLW (WM_USER+51) +#define TTM_NEWTOOLRECTA (WM_USER+6) +#define TTM_NEWTOOLRECTW (WM_USER+52) +#define TTM_RELAYEVENT (WM_USER+7) +#define TTM_GETTOOLINFOA (WM_USER+8) +#define TTM_GETTOOLINFOW (WM_USER+53) +#define TTM_SETTOOLINFOA (WM_USER+9) +#define TTM_SETTOOLINFOW (WM_USER+54) +#define TTM_HITTESTA (WM_USER+10) +#define TTM_HITTESTW (WM_USER+55) +#define TTM_GETTEXTA (WM_USER+11) +#define TTM_GETTEXTW (WM_USER+56) +#define TTM_UPDATETIPTEXTA (WM_USER+12) +#define TTM_UPDATETIPTEXTW (WM_USER+57) +#define TTM_GETTOOLCOUNT (WM_USER+13) +#define TTM_ENUMTOOLSA (WM_USER+14) +#define TTM_ENUMTOOLSW (WM_USER+58) +#define TTM_GETCURRENTTOOLA (WM_USER+15) +#define TTM_GETCURRENTTOOLW (WM_USER+59) +#define TTM_WINDOWFROMPOINT (WM_USER+16) +#if (_WIN32_IE >= 0x0300) +#define TTM_TRACKACTIVATE (WM_USER+17) +#define TTM_TRACKPOSITION (WM_USER+18) +#define TTM_SETTIPBKCOLOR (WM_USER+19) +#define TTM_SETTIPTEXTCOLOR (WM_USER+20) +#define TTM_GETDELAYTIME (WM_USER+21) +#define TTM_GETTIPBKCOLOR (WM_USER+22) +#define TTM_GETTIPTEXTCOLOR (WM_USER+23) +#define TTM_SETMAXTIPWIDTH (WM_USER+24) +#define TTM_GETMAXTIPWIDTH (WM_USER+25) +#define TTM_SETMARGIN (WM_USER+26) +#define TTM_GETMARGIN (WM_USER+27) +#define TTM_POP (WM_USER+28) +#endif /* _WIN32_IE */ +#if (_WIN32_IE >= 0x0400) /* IE4.0 ??? */ +#define TTM_UPDATE (WM_USER+29) +#define TTM_GETBUBBLESIZE (WM_USER+30) +#define TTM_ADJUSTRECT (WM_USER+31) +#define TTM_SETTITLEA (WM_USER+32) +#define TTM_SETTITLEW (WM_USER+33) +#endif +#define TTN_GETDISPINFOA (TTN_FIRST - 0) +#define TTN_GETDISPINFOW (TTN_FIRST - 10) +#define TTN_NEEDTEXTA TTN_GETDISPINFOA +#define TTN_NEEDTEXTW TTN_GETDISPINFOW +#define TTN_SHOW (TTN_FIRST-1) +#define TTN_POP (TTN_FIRST-2) +#define UD_MAXVAL 0x7fff +#define UD_MINVAL (-UD_MAXVAL) +#define UDN_DELTAPOS (UDN_FIRST-1) +#define UDS_WRAP 1 +#define UDS_SETBUDDYINT 2 +#define UDS_ALIGNRIGHT 4 +#define UDS_ALIGNLEFT 8 +#define UDS_AUTOBUDDY 16 +#define UDS_ARROWKEYS 32 +#define UDS_HORZ 64 +#define UDS_NOTHOUSANDS 128 +#if ( _WIN32_IE >= 0x0300 ) +#define UDS_HOTTRACK 0x0100 +#endif /* _WIN32_IE >= 0x0300 */ +#define UDM_SETRANGE (WM_USER+101) +#define UDM_GETRANGE (WM_USER+102) +#define UDM_SETPOS (WM_USER+103) +#define UDM_GETPOS (WM_USER+104) +#define UDM_SETBUDDY (WM_USER+105) +#define UDM_GETBUDDY (WM_USER+106) +#define UDM_SETACCEL (WM_USER+107) +#define UDM_GETACCEL (WM_USER+108) +#define UDM_SETBASE (WM_USER+109) +#define UDM_GETBASE (WM_USER+110) +#if (_WIN32_IE >= 0x0400) +#define UDM_SETRANGE32 (WM_USER+111) +#define UDM_GETRANGE32 (WM_USER+112) +#define UDM_SETPOS32 (WM_USER+113) +#define UDM_GETPOS32 (WM_USER+114) +#endif +#if (_WIN32_IE >= 0x0500) +#define UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#endif +#define SB_SETTEXTA (WM_USER+1) +#define SB_SETTEXTW (WM_USER+11) +#define SB_GETTEXTA (WM_USER+2) +#define SB_GETTEXTW (WM_USER+13) +#define SB_GETTEXTLENGTHA (WM_USER+3) +#define SB_GETTEXTLENGTHW (WM_USER+12) +#define SB_SETPARTS (WM_USER+4) +#define SB_GETPARTS (WM_USER+6) +#define SB_GETBORDERS (WM_USER+7) +#define SB_SETMINHEIGHT (WM_USER+8) +#define SB_SIMPLE (WM_USER+9) +#define SB_GETRECT (WM_USER+10) +#define SBT_OWNERDRAW 0x1000 +#define SBT_NOBORDERS 256 +#define SBT_POPOUT 512 +#define SBT_RTLREADING 1024 +#if( _WIN32_IE >= 0x0400 ) +#define SBT_TOOLTIPS 0x0800 +#define SBN_SIMPLEMODECHANGE (SBN_FIRST) +#endif /* _WIN32_IE >= 0x0400 */ +#define TBS_AUTOTICKS 1 +#define TBS_VERT 2 +#define TBS_HORZ 0 +#define TBS_TOP 4 +#define TBS_BOTTOM 0 +#define TBS_LEFT 4 +#define TBS_RIGHT 0 +#define TBS_BOTH 8 +#define TBS_NOTICKS 16 +#define TBS_ENABLESELRANGE 32 +#define TBS_FIXEDLENGTH 64 +#define TBS_NOTHUMB 128 +#if (_WIN32_IE >= 0x0300) +#define TBS_TOOLTIPS 0x0100 +#define TBTS_TOP 0 +#define TBTS_LEFT 1 +#define TBTS_BOTTOM 2 +#define TBTS_RIGHT 3 +#endif +#if (_WIN32_IE >= 0x0500) +#define TBS_REVERSED 0x0200 +#endif +#if (_WIN32_IE >= 0x0501) +#define TBS_DOWNISLEFT 0x0400 +#endif +#if _WIN32_IE >= 0x400 +#define TBIF_BYINDEX 0x80000000 +#define TBIF_COMMAND 32 +#define TBIF_IMAGE 1 +#define TBIF_LPARAM 16 +#define TBIF_SIZE 64 +#define TBIF_STATE 4 +#define TBIF_STYLE 8 +#define TBIF_TEXT 2 +#endif +#define TBM_GETPOS (WM_USER) +#define TBM_GETRANGEMIN (WM_USER+1) +#define TBM_GETRANGEMAX (WM_USER+2) +#define TBM_GETTIC (WM_USER+3) +#define TBM_SETTIC (WM_USER+4) +#define TBM_SETPOS (WM_USER+5) +#define TBM_SETRANGE (WM_USER+6) +#define TBM_SETRANGEMIN (WM_USER+7) +#define TBM_SETRANGEMAX (WM_USER+8) +#define TBM_CLEARTICS (WM_USER+9) +#define TBM_SETSEL (WM_USER+10) +#define TBM_SETSELSTART (WM_USER+11) +#define TBM_SETSELEND (WM_USER+12) +#define TBM_GETPTICS (WM_USER+14) +#define TBM_GETTICPOS (WM_USER+15) +#define TBM_GETNUMTICS (WM_USER+16) +#define TBM_GETSELSTART (WM_USER+17) +#define TBM_GETSELEND (WM_USER+18) +#define TBM_CLEARSEL (WM_USER+19) +#define TBM_SETTICFREQ (WM_USER+20) +#define TBM_SETPAGESIZE (WM_USER+21) +#define TBM_GETPAGESIZE (WM_USER+22) +#define TBM_SETLINESIZE (WM_USER+23) +#define TBM_GETLINESIZE (WM_USER+24) +#define TBM_GETTHUMBRECT (WM_USER+25) +#define TBM_GETCHANNELRECT (WM_USER+26) +#define TBM_SETTHUMBLENGTH (WM_USER+27) +#define TBM_GETTHUMBLENGTH (WM_USER+28) +#define TBM_SETTOOLTIPS (WM_USER+29) +#define TBM_GETTOOLTIPS (WM_USER+30) +#define TBM_SETTIPSIDE (WM_USER+31) +#define TBM_SETBUDDY (WM_USER+32) +#define TBM_GETBUDDY (WM_USER+33) +#define TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TB_LINEUP 0 +#define TB_LINEDOWN 1 +#define TB_PAGEUP 2 +#define TB_PAGEDOWN 3 +#define TB_THUMBPOSITION 4 +#define TB_THUMBTRACK 5 +#define TB_TOP 6 +#define TB_BOTTOM 7 +#define TB_ENDTRACK 8 +#define HOTKEYF_SHIFT 1 +#define HOTKEYF_CONTROL 2 +#define HOTKEYF_ALT 4 +#define HOTKEYF_EXT 8 +#define HKCOMB_NONE 1 +#define HKCOMB_S 2 +#define HKCOMB_C 4 +#define HKCOMB_A 8 +#define HKCOMB_SC 16 +#define HKCOMB_SA 32 +#define HKCOMB_CA 64 +#define HKCOMB_SCA 128 +#define HKM_SETHOTKEY (WM_USER+1) +#define HKM_GETHOTKEY (WM_USER+2) +#define HKM_SETRULES (WM_USER+3) +#define PBM_SETRANGE (WM_USER+1) +#define PBM_SETPOS (WM_USER+2) +#define PBM_DELTAPOS (WM_USER+3) +#define PBM_SETSTEP (WM_USER+4) +#define PBM_STEPIT (WM_USER+5) +#define PBM_SETRANGE32 1030 +#define PBM_GETRANGE 1031 +#define PBM_GETPOS 1032 +#define PBM_SETBARCOLOR 1033 +#define PBM_SETBKCOLOR CCM_SETBKCOLOR +#define PBS_SMOOTH 1 +#define PBS_VERTICAL 4 +#define LVS_ICON 0 +#define LVS_REPORT 1 +#define LVS_SMALLICON 2 +#define LVS_LIST 3 +#define LVS_TYPEMASK 3 +#define LVS_SINGLESEL 4 +#define LVS_SHOWSELALWAYS 8 +#define LVS_SORTASCENDING 16 +#define LVS_SORTDESCENDING 32 +#define LVS_SHAREIMAGELISTS 64 +#define LVS_NOLABELWRAP 128 +#define LVS_AUTOARRANGE 256 +#define LVS_EDITLABELS 512 +#define LVS_NOSCROLL 0x2000 +#define LVS_TYPESTYLEMASK 0xfc00 +#define LVS_ALIGNTOP 0 +#define LVS_ALIGNLEFT 0x800 +#define LVS_ALIGNMASK 0xc00 +#define LVS_OWNERDRAWFIXED 0x400 +#define LVS_NOCOLUMNHEADER 0x4000 +#define LVS_NOSORTHEADER 0x8000 +#if (_WIN32_IE >= 0x0300) +#define CDIS_CHECKED 8 +#define CDIS_DEFAULT 32 +#define CDIS_DISABLED 4 +#define CDIS_FOCUS 16 +#define CDIS_GRAYED 2 +#define CDIS_HOT 64 +#define CDIS_SELECTED 1 +#define CDIS_MARKED 128 +#define CDIS_INDETERMINATE 256 +#if (_WIN32_WINNT >= 0x0501) +#define CDIS_SHOWKEYBOARDCUES 512 +#endif +#define CDDS_POSTERASE 4 +#define CDDS_POSTPAINT 2 +#define CDDS_PREERASE 3 +#define CDDS_PREPAINT 1 +#define CDDS_ITEM 65536 +#define CDDS_ITEMPOSTERASE 65540 +#define CDDS_ITEMPOSTPAINT 65538 +#define CDDS_ITEMPREERASE 65539 +#define CDDS_ITEMPREPAINT 65537 +#if (_WIN32_IE >= 0x0400) +#define CDDS_SUBITEM 0x20000 +#endif +/* FIXME: missing CDRF_NOTIFYSUBITEMDRAW */ +#define CDRF_DODEFAULT 0 +#define CDRF_NOTIFYITEMDRAW 32 +#define CDRF_NOTIFYITEMERASE 128 +#define CDRF_NOTIFYPOSTERASE 64 +#define CDRF_NOTIFYPOSTPAINT 16 +#define CDRF_NEWFONT 2 +#define CDRF_SKIPDEFAULT 4 +#if (_WIN32_IE >= 0x0400) +#define LVBKIF_SOURCE_NONE 0x00000000 +#define LVBKIF_SOURCE_HBITMAP 0x00000001 +#define LVBKIF_SOURCE_URL 0x00000002 +#define LVBKIF_SOURCE_MASK 0x00000003 +#define LVBKIF_STYLE_NORMAL 0x00000000 +#define LVBKIF_STYLE_TILE 0x00000010 +#define LVBKIF_STYLE_MASK 0x00000010 +#endif /* _WIN32_IE >=0x0400 */ +#if (_WIN32_WINNT >= 0x501) +#define LVBKIF_FLAG_TILEOFFSET 0x00000100 +#define LVBKIF_TYPE_WATERMARK 0x10000000 +#endif /* _WIN32_WINNT >= 0x501 */ +#define LVS_OWNERDATA 4096 +#define LVS_EX_CHECKBOXES 4 +#define LVS_EX_FULLROWSELECT 32 +#define LVS_EX_GRIDLINES 1 +#define LVS_EX_HEADERDRAGDROP 16 +#define LVS_EX_ONECLICKACTIVATE 64 +#define LVS_EX_SUBITEMIMAGES 2 +#define LVS_EX_TRACKSELECT 8 +#define LVS_EX_TWOCLICKACTIVATE 128 +#define LVSICF_NOINVALIDATEALL 0x00000001 +#define LVSICF_NOSCROLL 0x00000002 +#if( _WIN32_IE >= 0x0400 ) +#define LVS_EX_FLATSB 0x00000100 +#define LVS_EX_REGIONAL 0x00000200 +#define LVS_EX_INFOTIP 0x00000400 +#define LVS_EX_UNDERLINEHOT 0x00000800 +#define LVS_EX_UNDERLINECOLD 0x00001000 +#define LVS_EX_MULTIWORKAREAS 0x00002000 +#endif /* _WIN32_IE >=0x0400 */ +#if( _WIN32_IE >= 0x0500 ) +#define LVS_EX_LABELTIP 0x00004000 +#define LVS_EX_BORDERSELECT 0x00008000 +#endif /* _WIN32_IE >= 0x0500 */ +#endif /* _WIN32_IE >= 0x0300 */ +#define LVSIL_NORMAL 0 +#define LVSIL_SMALL 1 +#define LVSIL_STATE 2 +#define LVM_GETBKCOLOR LVM_FIRST +#define LVM_SETBKCOLOR (LVM_FIRST+1) +#define LVM_GETIMAGELIST (LVM_FIRST+2) +#define LVM_SETIMAGELIST (LVM_FIRST+3) +#define LVM_GETITEMCOUNT (LVM_FIRST+4) +#define LVIF_TEXT 1 +#define LVIF_IMAGE 2 +#define LVIF_PARAM 4 +#define LVIF_STATE 8 +#if (_WIN32_IE >= 0x0300) +#define LVIF_INDENT 16 +#define LVIF_NORECOMPUTE 2048 +#endif +#if (_WIN32_WINNT >= 0x0501) +#define LVIF_GROUPID 128 +#define LVIF_COLUMNS 256 +#endif +#define LVIS_FOCUSED 1 +#define LVIS_SELECTED 2 +#define LVIS_CUT 4 +#define LVIS_DROPHILITED 8 +#define LVIS_OVERLAYMASK 0xF00 +#define LVIS_STATEIMAGEMASK 0xF000 +#define LPSTR_TEXTCALLBACKW ((LPWSTR)-1) +#define LPSTR_TEXTCALLBACKA ((LPSTR)-1) +#define I_IMAGECALLBACK (-1) +#define LVM_GETITEMA (LVM_FIRST+5) +#define LVM_GETITEMW (LVM_FIRST+75) +#define LVM_SETITEMA (LVM_FIRST+6) +#define LVM_SETITEMW (LVM_FIRST+76) +#define LVM_INSERTITEMA (LVM_FIRST+7) +#define LVM_INSERTITEMW (LVM_FIRST+77) +#define LVM_DELETEITEM (LVM_FIRST+8) +#define LVM_DELETEALLITEMS (LVM_FIRST+9) +#define LVM_GETCALLBACKMASK (LVM_FIRST+10) +#define LVM_SETCALLBACKMASK (LVM_FIRST+11) +#if( _WIN32_IE >= 0x0400 ) +#define LVM_SETBKIMAGEA (LVM_FIRST + 68) +#define LVM_SETBKIMAGEW (LVM_FIRST + 138) +#define LVM_GETBKIMAGEA (LVM_FIRST + 69) +#define LVM_GETBKIMAGEW (LVM_FIRST + 139) +#define LV_MAX_WORKAREAS 16 +#define LVM_SETWORKAREAS (LVM_FIRST+65) +#define LVM_GETWORKAREAS (LVM_FIRST+70) +#define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73) +#define LVM_GETSELECTIONMARK (LVM_FIRST+66) +#define LVM_SETSELECTIONMARK (LVM_FIRST+67) +#define LVM_SETHOVERTIME (LVM_FIRST+71) +#define LVM_GETHOVERTIME (LVM_FIRST+72) +#define LVM_SETTOOLTIPS (LVM_FIRST+74) +#define LVM_GETTOOLTIPS (LVM_FIRST+78) +#endif /* _WIN32_IE >= 0x0400 */ +#define LVNI_ALL 0 +#define LVNI_FOCUSED 1 +#define LVNI_SELECTED 2 +#define LVNI_CUT 4 +#define LVNI_DROPHILITED 8 +#define LVNI_ABOVE 256 +#define LVNI_BELOW 512 +#define LVNI_TOLEFT 1024 +#define LVNI_TORIGHT 2048 +#define LVM_GETNEXTITEM (LVM_FIRST+12) +#define LVFI_PARAM 1 +#define LVFI_STRING 2 +#define LVFI_PARTIAL 8 +#define LVFI_WRAP 32 +#define LVFI_NEARESTXY 64 +#define LVIF_DI_SETITEM 0x1000 +#define LVM_FINDITEMA (LVM_FIRST+13) +#define LVM_FINDITEMW (LVM_FIRST+83) +#define LVIR_BOUNDS 0 +#define LVIR_ICON 1 +#define LVIR_LABEL 2 +#define LVIR_SELECTBOUNDS 3 +#define LVM_GETITEMRECT (LVM_FIRST+14) +#define LVM_SETITEMPOSITION (LVM_FIRST+15) +#define LVM_GETITEMPOSITION (LVM_FIRST+16) +#define LVM_GETSTRINGWIDTHA (LVM_FIRST+17) +#define LVM_GETSTRINGWIDTHW (LVM_FIRST+87) +#define LVHT_NOWHERE 1 +#define LVHT_ONITEMICON 2 +#define LVHT_ONITEMLABEL 4 +#define LVHT_ONITEMSTATEICON 8 +#define LVHT_ONITEM (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON) +#define LVHT_ABOVE 8 +#define LVHT_BELOW 16 +#define LVHT_TORIGHT 32 +#define LVHT_TOLEFT 64 +#define LVM_HITTEST (LVM_FIRST+18) +#define LVM_ENSUREVISIBLE (LVM_FIRST+19) +#define LVM_SCROLL (LVM_FIRST+20) +#define LVM_REDRAWITEMS (LVM_FIRST+21) +#define LVA_DEFAULT 0 +#define LVA_ALIGNLEFT 1 +#define LVA_ALIGNTOP 2 +#define LVA_SNAPTOGRID 5 +#define LVM_ARRANGE (LVM_FIRST+22) +#define LVM_EDITLABELA (LVM_FIRST+23) +#define LVM_EDITLABELW (LVM_FIRST+118) +#define LVM_GETEDITCONTROL (LVM_FIRST+24) +#define LVCF_FMT 1 +#define LVCF_WIDTH 2 +#define LVCF_TEXT 4 +#define LVCF_SUBITEM 8 +#if (_WIN32_IE >= 0x0300) +#define LVCF_IMAGE 16 +#define LVCF_ORDER 32 +#endif +#define LVCFMT_LEFT 0 +#define LVCFMT_RIGHT 1 +#define LVCFMT_CENTER 2 +#define LVCFMT_JUSTIFYMASK 3 +#if (_WIN32_IE >= 0x0300) +#define LVCFMT_BITMAP_ON_RIGHT 4096 +#define LVCFMT_COL_HAS_IMAGES 32768 +#define LVCFMT_IMAGE 2048 +#endif +#define LVM_GETCOLUMNA (LVM_FIRST+25) +#define LVM_GETCOLUMNW (LVM_FIRST+95) +#define LVM_SETCOLUMNA (LVM_FIRST+26) +#define LVM_SETCOLUMNW (LVM_FIRST+96) +#define LVM_INSERTCOLUMNA (LVM_FIRST+27) +#define LVM_INSERTCOLUMNW (LVM_FIRST+97) +#define LVM_DELETECOLUMN (LVM_FIRST+28) +#define LVM_GETCOLUMNWIDTH (LVM_FIRST+29) +#define LVSCW_AUTOSIZE (-1) +#define LVSCW_AUTOSIZE_USEHEADER (-2) +#define LVM_SETCOLUMNWIDTH (LVM_FIRST+30) +#define LVM_CREATEDRAGIMAGE (LVM_FIRST+33) +#define LVM_GETVIEWRECT (LVM_FIRST+34) +#define LVM_GETTEXTCOLOR (LVM_FIRST+35) +#define LVM_SETTEXTCOLOR (LVM_FIRST+36) +#define LVM_GETTEXTBKCOLOR (LVM_FIRST+37) +#define LVM_SETTEXTBKCOLOR (LVM_FIRST+38) +#define LVM_GETTOPINDEX (LVM_FIRST+39) +#define LVM_GETCOUNTPERPAGE (LVM_FIRST+40) +#define LVM_GETORIGIN (LVM_FIRST+41) +#define LVM_GETORIGIN (LVM_FIRST+41) +#define LVM_UPDATE (LVM_FIRST+42) +#define LVM_SETITEMSTATE (LVM_FIRST+43) +#define LVM_GETITEMSTATE (LVM_FIRST+44) +#define LVM_GETITEMTEXTA (LVM_FIRST+45) +#define LVM_GETITEMTEXTW (LVM_FIRST+115) +#define LVM_SETITEMTEXTA (LVM_FIRST+46) +#define LVM_SETITEMTEXTW (LVM_FIRST+116) +#define LVM_SETITEMCOUNT (LVM_FIRST+47) +#define LVM_SORTITEMS (LVM_FIRST+48) +#define LVM_SETITEMPOSITION32 (LVM_FIRST+49) +#define LVM_GETSELECTEDCOUNT (LVM_FIRST+50) +#define LVM_GETITEMSPACING (LVM_FIRST+51) +#define LVM_GETISEARCHSTRINGA (LVM_FIRST+52) +#define LVM_GETISEARCHSTRINGW (LVM_FIRST+117) +#if (_WIN32_IE >= 0x0300) +#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64) +#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54) +#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55) +#define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58) +#define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59) +#define LVM_GETHEADER (LVM_FIRST+31) +#define LVM_GETHOTCURSOR (LVM_FIRST+63) +#define LVM_GETHOTITEM (LVM_FIRST+61) +#define LVM_GETSUBITEMRECT (LVM_FIRST+56) +#define LVM_SETHOTCURSOR (LVM_FIRST+62) +#define LVM_SETHOTITEM (LVM_FIRST+60) +#define LVM_SETICONSPACING (LVM_FIRST+53) +#define LVM_SUBITEMHITTEST (LVM_FIRST+57) +#endif +#define LVN_ITEMCHANGING LVN_FIRST +#define LVN_ITEMCHANGED (LVN_FIRST-1) +#define LVN_INSERTITEM (LVN_FIRST-2) +#define LVN_DELETEITEM (LVN_FIRST-3) +#define LVN_DELETEALLITEMS (LVN_FIRST-4) +#define LVN_BEGINLABELEDITA (LVN_FIRST-5) +#define LVN_BEGINLABELEDITW (LVN_FIRST-75) +#define LVN_ENDLABELEDITA (LVN_FIRST-6) +#define LVN_ENDLABELEDITW (LVN_FIRST-76) +#define LVN_COLUMNCLICK (LVN_FIRST-8) +#define LVN_BEGINDRAG (LVN_FIRST-9) +#define LVN_BEGINRDRAG (LVN_FIRST-11) +#define LVN_GETDISPINFOA (LVN_FIRST-50) +#define LVN_GETDISPINFOW (LVN_FIRST-77) +#define LVN_SETDISPINFOA (LVN_FIRST-51) +#define LVN_SETDISPINFOW (LVN_FIRST-78) +#define LVN_KEYDOWN (LVN_FIRST-55) +#if (_WIN32_IE >= 0x0400) +#define LVN_GETINFOTIPA (LVN_FIRST-57) +#define LVN_GETINFOTIPW (LVN_FIRST-58) +#define LVKF_ALT 0x0001 +#define LVKF_CONTROL 0x0002 +#define LVKF_SHIFT 0x0004 +#define LVGIT_UNFOLDED 1 +#endif +#define TVS_HASBUTTONS 1 +#define TVS_HASLINES 2 +#define TVS_LINESATROOT 4 +#define TVS_EDITLABELS 8 +#define TVS_DISABLEDRAGDROP 16 +#define TVS_SHOWSELALWAYS 32 +#if (_WIN32_IE >= 0x0300) +#define TVS_CHECKBOXES 256 +#define TVS_NOTOOLTIPS 128 +#define TVS_RTLREADING 64 +#define TVS_TRACKSELECT 512 +#endif +#if (_WIN32_IE >= 0x0400) +#define TVS_FULLROWSELECT 4096 +#define TVS_INFOTIP 2048 +#define TVS_NONEVENHEIGHT 16384 +#define TVS_NOSCROLL 8192 +#define TVS_SINGLEEXPAND 1024 +#endif +#if( _WIN32_IE >= 0x0500 ) +#define TVS_NOHSCROLL 0x8000 +#endif /* _WIN32_IE >= 0x0500 */ +#define TVIF_TEXT 1 +#define TVIF_IMAGE 2 +#define TVIF_PARAM 4 +#define TVIF_STATE 8 +#define TVIF_HANDLE 16 +#define TVIF_SELECTEDIMAGE 32 +#define TVIF_CHILDREN 64 +#if (_WIN32_IE >= 0x0400) +#define TVIF_INTEGRAL 0x0080 +#endif /* _WIN32_IE >= 0x0400 */ +#define TVIS_FOCUSED 1 +#define TVIS_SELECTED 2 +#define TVIS_CUT 4 +#define TVIS_DROPHILITED 8 +#define TVIS_BOLD 16 +#define TVIS_EXPANDED 32 +#define TVIS_EXPANDEDONCE 64 +#define TVIS_OVERLAYMASK 0xF00 +#define TVIS_STATEIMAGEMASK 0xF000 +#define TVIS_USERMASK 0xF000 +#define I_CHILDRENCALLBACK (-1) +#define TVI_ROOT ((HTREEITEM)0xFFFF0000) +#define TVI_FIRST ((HTREEITEM)0xFFFF0001) +#define TVI_LAST ((HTREEITEM)0xFFFF0002) +#define TVI_SORT ((HTREEITEM)0xFFFF0003) +#define TVSIL_NORMAL 0 +#define TVSIL_STATE 2 +#define TVM_INSERTITEMA TV_FIRST +#define TVM_INSERTITEMW (TV_FIRST+50) +#define TVM_DELETEITEM (TV_FIRST+1) +#define TVM_EXPAND (TV_FIRST+2) +#define TVM_GETITEMRECT (TV_FIRST+4) +#define TVM_GETCOUNT (TV_FIRST+5) +#define TVM_GETINDENT (TV_FIRST+6) +#define TVM_SETINDENT (TV_FIRST+7) +#define TVM_GETIMAGELIST (TV_FIRST+8) +#define TVM_SETIMAGELIST (TV_FIRST+9) +#define TVM_GETNEXTITEM (TV_FIRST+10) +#define TVM_SELECTITEM (TV_FIRST+11) +#define TVM_GETITEMA (TV_FIRST+12) +#define TVM_GETITEMW (TV_FIRST+62) +#define TVM_SETITEMA (TV_FIRST+13) +#define TVM_SETITEMW (TV_FIRST+63) +#define TVM_EDITLABELA (TV_FIRST+14) +#define TVM_EDITLABELW (TV_FIRST+65) +#define TVM_GETEDITCONTROL (TV_FIRST+15) +#define TVM_GETVISIBLECOUNT (TV_FIRST+16) +#define TVM_HITTEST (TV_FIRST+17) +#define TVM_CREATEDRAGIMAGE (TV_FIRST+18) +#define TVM_SORTCHILDREN (TV_FIRST+19) +#define TVM_ENSUREVISIBLE (TV_FIRST+20) +#define TVM_SORTCHILDRENCB (TV_FIRST+21) +#define TVM_ENDEDITLABELNOW (TV_FIRST+22) +#define TVM_GETISEARCHSTRINGA (TV_FIRST+23) +#define TVM_GETISEARCHSTRINGW (TV_FIRST+64) +#if (_WIN32_IE >= 0x0300) +#define TVM_GETTOOLTIPS (TV_FIRST+25) +#define TVM_SETTOOLTIPS (TV_FIRST+24) +#endif +#if (_WIN32_IE >= 0x0400) +#define TVM_GETBKCOLOR (TV_FIRST+31) +#define TVM_GETINSERTMARKCOLOR (TV_FIRST+38) +#define TVM_GETITEMHEIGHT (TV_FIRST+28) +#define TVM_GETSCROLLTIME (TV_FIRST+34) +#define TVM_GETTEXTCOLOR (TV_FIRST+32) +#define TVM_SETBKCOLOR (TV_FIRST+29) +#define TVM_SETINSERTMARK (TV_FIRST+26) +#define TVM_SETINSERTMARKCOLOR (TV_FIRST+37) +#define TVM_SETITEMHEIGHT (TV_FIRST+27) +#define TVM_SETSCROLLTIME (TV_FIRST+33) +#define TVM_SETTEXTCOLOR (TV_FIRST+30) +#define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#endif +#if (_WIN32_IE >= 0x0500) +#define TVM_GETITEMSTATE (TV_FIRST+39) +#define TVM_SETLINECOLOR (TV_FIRST+40) +#define TVM_GETLINECOLOR (TV_FIRST+41) +#endif +#define TVE_COLLAPSE 1 +#define TVE_EXPAND 2 +#define TVE_TOGGLE 3 +#define TVE_COLLAPSERESET 0x8000 +#if (_WIN32_IE >= 0x0300) +#define TVE_EXPANDPARTIAL 0x4000 +#endif +#define TVC_UNKNOWN 0 +#define TVC_BYMOUSE 1 +#define TVC_BYKEYBOARD 2 +#define TVGN_ROOT 0 +#define TVGN_NEXT 1 +#define TVGN_PREVIOUS 2 +#define TVGN_PARENT 3 +#define TVGN_CHILD 4 +#define TVGN_FIRSTVISIBLE 5 +#define TVGN_NEXTVISIBLE 6 +#define TVGN_PREVIOUSVISIBLE 7 +#define TVGN_DROPHILITE 8 +#define TVGN_CARET 9 +#if (_WIN32_IE >= 0x0400) +#define TVGN_LASTVISIBLE 10 +#endif +#define TVN_SELCHANGINGA (TVN_FIRST-1) +#define TVN_SELCHANGINGW (TVN_FIRST-50) +#define TVN_SELCHANGEDA (TVN_FIRST-2) +#define TVN_SELCHANGEDW (TVN_FIRST-51) +#define TVN_GETDISPINFOA (TVN_FIRST-3) +#define TVN_GETDISPINFOW (TVN_FIRST-52) +#define TVN_SETDISPINFOA (TVN_FIRST-4) +#define TVN_SETDISPINFOW (TVN_FIRST-53) +#define TVN_ITEMEXPANDINGA (TVN_FIRST-5) +#define TVN_ITEMEXPANDINGW (TVN_FIRST-54) +#define TVN_ITEMEXPANDEDA (TVN_FIRST-6) +#define TVN_ITEMEXPANDEDW (TVN_FIRST-55) +#define TVN_BEGINDRAGA (TVN_FIRST-7) +#define TVN_BEGINDRAGW (TVN_FIRST-56) +#define TVN_BEGINRDRAGA (TVN_FIRST-8) +#define TVN_BEGINRDRAGW (TVN_FIRST-57) +#define TVN_DELETEITEMA (TVN_FIRST-9) +#define TVN_DELETEITEMW (TVN_FIRST-58) +#define TVN_BEGINLABELEDITA (TVN_FIRST-10) +#define TVN_BEGINLABELEDITW (TVN_FIRST-59) +#define TVN_ENDLABELEDITA (TVN_FIRST-11) +#define TVN_ENDLABELEDITW (TVN_FIRST-60) +#define TVN_KEYDOWN (TVN_FIRST-12) +#if (_WIN32_IE >= 0x0400) +#define TVN_GETINFOTIPA (TVN_FIRST-13) +#define TVN_GETINFOTIPW (TVN_FIRST-14) +#define TVN_SINGLEEXPAND (TVN_FIRST-15) +#define TVNRET_DEFAULT 0 +#define TVNRET_SKIPOLD 1 +#define TVNRET_SKIPNEW 2 +#endif /* _WIN32_IE >= 0x0400 */ +#define TVIF_DI_SETITEM 0x1000 +#define TVHT_NOWHERE 1 +#define TVHT_ONITEMICON 2 +#define TVHT_ONITEMLABEL 4 +#define TVHT_ONITEM (TVHT_ONITEMICON|TVHT_ONITEMLABEL|TVHT_ONITEMSTATEICON) +#define TVHT_ONITEMINDENT 8 +#define TVHT_ONITEMBUTTON 16 +#define TVHT_ONITEMRIGHT 32 +#define TVHT_ONITEMSTATEICON 64 +#define TVHT_ABOVE 256 +#define TVHT_BELOW 512 +#define TVHT_TORIGHT 1024 +#define TVHT_TOLEFT 2048 +#define TCHT_NOWHERE 1 +#define TCHT_ONITEMICON 2 +#define TCHT_ONITEMLABEL 4 +#define TCHT_ONITEM (TCHT_ONITEMICON|TCHT_ONITEMLABEL) +#define TCS_FORCEICONLEFT 16 +#define TCS_FORCELABELLEFT 32 +#define TCS_TABS 0 +#define TCS_BUTTONS 256 +#define TCS_SINGLELINE 0 +#define TCS_MULTILINE 512 +#define TCS_RIGHTJUSTIFY 0 +#define TCS_FIXEDWIDTH 1024 +#define TCS_RAGGEDRIGHT 2048 +#define TCS_FOCUSONBUTTONDOWN 0x1000 +#define TCS_OWNERDRAWFIXED 0x2000 +#define TCS_TOOLTIPS 0x4000 +#define TCS_FOCUSNEVER 0x8000 +#if (_WIN32_IE >= 0x0300) +#define TCS_BOTTOM 2 +#define TCS_RIGHT 2 +#define TCS_VERTICAL 128 +#define TCS_SCROLLOPPOSITE 0x0001 +#define TCS_HOTTRACK 0x0040 +#define TCS_MULTISELECT 0x0004 +#endif +#if( _WIN32_IE >= 0x0400 ) +#define TCS_FLATBUTTONS 0x0008 +#define TCS_EX_FLATSEPARATORS 0x00000001 +#define TCS_EX_REGISTERDROP 0x00000002 +#endif /* _WIN32_IE >= 0x0400 */ +#define TCIF_TEXT 1 +#define TCIF_IMAGE 2 +#define TCIF_RTLREADING 4 +#define TCIF_PARAM 8 +#if (_WIN32_IE >= 0x0400) +#define TCIF_STATE 16 +#endif +#define TCIS_BUTTONPRESSED 1 +#if (_WIN32_IE >= 0x0400) +#define TCIS_HIGHLIGHTED 2 +#endif +#define TCM_FIRST 0x1300 +#define TCM_GETIMAGELIST (TCM_FIRST+2) +#define TCM_SETIMAGELIST (TCM_FIRST+3) +#define TCM_GETITEMCOUNT (TCM_FIRST+4) +#define TCM_GETITEMA (TCM_FIRST+5) +#define TCM_GETITEMW (TCM_FIRST+60) +#define TCM_SETITEMA (TCM_FIRST+6) +#define TCM_SETITEMW (TCM_FIRST+61) +#define TCM_INSERTITEMA (TCM_FIRST+7) +#define TCM_INSERTITEMW (TCM_FIRST+62) +#define TCM_DELETEITEM (TCM_FIRST+8) +#define TCM_DELETEALLITEMS (TCM_FIRST+9) +#define TCM_GETITEMRECT (TCM_FIRST+10) +#define TCM_GETCURSEL (TCM_FIRST+11) +#define TCM_SETCURSEL (TCM_FIRST+12) +#define TCM_HITTEST (TCM_FIRST+13) +#define TCM_SETITEMEXTRA (TCM_FIRST+14) + +#define TCM_ADJUSTRECT (TCM_FIRST+40) +#define TCM_SETITEMSIZE (TCM_FIRST+41) +#define TCM_REMOVEIMAGE (TCM_FIRST+42) +#define TCM_SETPADDING (TCM_FIRST+43) +#define TCM_GETROWCOUNT (TCM_FIRST+44) +#define TCM_GETTOOLTIPS (TCM_FIRST+45) +#define TCM_SETTOOLTIPS (TCM_FIRST+46) +#define TCM_GETCURFOCUS (TCM_FIRST+47) +#define TCM_SETCURFOCUS (TCM_FIRST+48) +#define TCM_SETMINTABWIDTH (TCM_FIRST + 49) +#define TCM_DESELECTALL (TCM_FIRST + 50) +#if (_WIN32_IE >=0x0400) +#define TCM_HIGHLIGHTITEM (TCM_FIRST + 51) +#define TCM_SETEXTENDEDSTYLE (TCM_FIRST + 52) +#define TCM_GETEXTENDEDSTYLE (TCM_FIRST + 53) +#define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#endif /* _WIN32_IE >=0x0400 */ +#define TCN_KEYDOWN TCN_FIRST +#define TCN_SELCHANGE (TCN_FIRST-1) +#define TCN_SELCHANGING (TCN_FIRST-2) +#define NM_OUTOFMEMORY (NM_FIRST-1) +#define NM_CLICK (NM_FIRST-2) +#define NM_DBLCLK (NM_FIRST-3) +#define NM_RETURN (NM_FIRST-4) +#define NM_RCLICK (NM_FIRST-5) +#define NM_RDBLCLK (NM_FIRST-6) +#define NM_SETFOCUS (NM_FIRST-7) +#define NM_KILLFOCUS (NM_FIRST-8) +#define NM_CUSTOMDRAW (NM_FIRST-12) +#define NM_HOVER (NM_FIRST-13) +#define NM_NCHITTEST (NM_FIRST-14) +#define NM_KEYDOWN (NM_FIRST-15) +#define NM_RELEASEDCAPTURE (NM_FIRST-16) +#define NM_SETCURSOR (NM_FIRST-17) +#define NM_CHAR (NM_FIRST-18) +#define NM_TOOLTIPSCREATED (NM_FIRST-19) +#define SBARS_SIZEGRIP 256 +#define CCM_FIRST 0x2000 +#define CCM_LAST (CCM_FIRST+0x200) +#define CCM_SETBKCOLOR 8193 +#define CCM_SETCOLORSCHEME 8194 +#define CCM_GETCOLORSCHEME 8195 +#define CCM_GETDROPTARGET 8196 +#define CCM_SETUNICODEFORMAT 8197 +#define CCM_GETUNICODEFORMAT 8198 +#define CCM_SETVERSION 0x2007 +#define CCM_GETVERSION 0x2008 +#define CCM_SETNOTIFYWINDOW 0x2009 +#if (_WIN32_WINNT >= 0x0501) +#define CCM_SETWINDOWTHEME 0x200b +#define CCM_DPISCALE 0x200c +#endif +#define ICC_LISTVIEW_CLASSES 1 +#define ICC_TREEVIEW_CLASSES 2 +#define ICC_BAR_CLASSES 4 +#define ICC_TAB_CLASSES 8 +#define ICC_UPDOWN_CLASS 16 +#define ICC_PROGRESS_CLASS 32 +#define ICC_HOTKEY_CLASS 64 +#define ICC_ANIMATE_CLASS 128 +#define ICC_WIN95_CLASSES 255 +#define ICC_DATE_CLASSES 256 +#define ICC_USEREX_CLASSES 512 +#define ICC_COOL_CLASSES 1024 +#if (_WIN32_IE >= 0x0400) +#define ICC_INTERNET_CLASSES 2048 +#define ICC_PAGESCROLLER_CLASS 4096 +#define ICC_NATIVEFNTCTL_CLASS 8192 +#define INFOTIPSIZE 1024 +#endif /* _WIN32_IE */ +#if (_WIN32_WINNT >= 0x501) +#define ICC_STANDARD_CLASSES 0x00004000 +#define ICC_LINK_CLASS 0x00008000 +#endif +#define GDTR_MIN 1 +#define GDTR_MAX 2 +#define GMR_VISIBLE 0 +#define GMR_DAYSTATE 1 +#define GDT_ERROR -1 +#define GDT_VALID 0 +#define GDT_NONE 1 +#define DTS_UPDOWN 1 +#define DTS_SHOWNONE 2 +#define DTS_SHORTDATEFORMAT 0 +#define DTS_LONGDATEFORMAT 4 +#define DTS_TIMEFORMAT 9 +#define DTS_APPCANPARSE 16 +#define DTS_RIGHTALIGN 32 +#if ( _WIN32_IE >= 0x500 ) +#define DTS_SHORTDATECENTURYFORMAT 0x000C +#endif /* _WIN32_IE >= 0x500 */ +#define MCS_DAYSTATE 1 +#define MCS_MULTISELECT 2 +#define MCS_WEEKNUMBERS 4 +#if (_WIN32_IE >= 0x0400) +#define MCS_NOTODAYCIRCLE 0x0008 +#define MCS_NOTODAY 0x0010 +#else /* _WIN32_IE >= 0x0400 */ +#define MCS_NOTODAY 0x0008 +#endif /* _WIN32_IE >= 0x0400 */ +#define DTM_GETSYSTEMTIME 0x1001 +#define DTM_SETSYSTEMTIME 0x1002 +#define DTM_GETRANGE 0x1003 +#define DTM_SETRANGE 0x1004 +#define DTM_SETFORMATA 0x1005 +#define DTM_SETFORMATW 0x1050 +#define DTM_SETMCCOLOR 0x1006 +#define DTM_GETMCCOLOR 0x1007 +#define DTM_GETMONTHCAL 0x1008 +#define DTM_SETMCFONT 0x1009 +#define DTM_GETMCFONT 0x100a +#define DTN_USERSTRINGA ((UINT)-758) +#define DTN_USERSTRINGW ((UINT)-745) +#define DTN_WMKEYDOWNA ((UINT)-757) +#define DTN_WMKEYDOWNW ((UINT)-744) +#define DTN_FORMATA ((UINT)-756) +#define DTN_FORMATW ((UINT)-743) +#define DTN_FORMATQUERYA ((UINT)-755) +#define DTN_FORMATQUERYW ((UINT)-742) +#define DTN_DROPDOWN ((UINT)-754) +#define DTN_CLOSEUP ((UINT)-753) +#define DTN_DATETIMECHANGE ((UINT)-759) +#define MCM_GETCURSEL 0x1001 +#define MCM_SETCURSEL 0x1002 +#define MCM_GETMAXSELCOUNT 0x1003 +#define MCM_SETMAXSELCOUNT 0x1004 +#define MCM_GETSELRANGE 0x1005 +#define MCM_SETSELRANGE 0x1006 +#define MCM_GETMONTHRANGE 0x1007 +#define MCM_SETDAYSTATE 0x1008 +#define MCM_GETMINREQRECT 0x1009 +#define MCM_SETCOLOR 0x100a +#define MCM_GETCOLOR 0x100b +#define MCM_SETTODAY 0x100c +#define MCM_GETTODAY 0x100d +#define MCM_HITTEST 0x100e +#define MCM_SETFIRSTDAYOFWEEK 0x100f +#define MCM_GETFIRSTDAYOFWEEK 0x1010 +#define MCM_GETRANGE 0x1011 +#define MCM_SETRANGE 0x1012 +#define MCM_GETMONTHDELTA 0x1013 +#define MCM_SETMONTHDELTA 0x1014 +#define MCM_GETMAXTODAYWIDTH 0x1015 +#define MCN_SELCHANGE ((UINT)-749) +#define MCN_GETDAYSTATE ((UINT)-747) +#define MCN_SELECT ((UINT)-746) +#define ODT_HEADER 100 +#define ODT_TAB 101 +#define ODT_LISTVIEW 102 +#define SB_SETBKCOLOR 0x2001 +#if (_WIN32_IE >= 0x0300) +#define SB_ISSIMPLE 1038 +#define MCSC_BACKGROUND 0 +#define MCSC_TEXT 1 +#define MCSC_TITLEBK 2 +#define MCSC_TITLETEXT 3 +#define MCSC_MONTHBK 4 +#define MCSC_TRAILINGTEXT 5 +#endif +#if (_WIN32_IE >= 0x0400) +#define MCHT_TITLE 0x10000 +#define MCHT_CALENDAR 0x20000 +#define MCHT_TODAYLINK 0x30000 +#define MCHT_NEXT 0x1000000 +#define MCHT_PREV 0x2000000 +#define MCHT_NOWHERE 0x00 +#define MCHT_TITLEBK (MCHT_TITLE) +#define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001) +#define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002) +#define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003) +#define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003) +#define MCHT_CALENDARBK (MCHT_CALENDAR) +#define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001) +#define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT) +#define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV) +#define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002) +#define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003) +#endif /* _WIN32_IE >= 0x0400 */ +#define RBS_TOOLTIPS 256 +#define RBS_VARHEIGHT 512 +#define RBS_BANDBORDERS 1024 +#define RBS_FIXEDORDER 2048 +#define RBIM_IMAGELIST 1 +#define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME +#define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME +#define RBBS_BREAK 1 +#define RBBS_FIXEDSIZE 2 +#define RBBS_CHILDEDGE 4 +#define RBBS_HIDDEN 8 +#define RBBS_NOVERT 16 +#define RBBS_FIXEDBMP 32 +#define RBBIM_STYLE 1 +#define RBBIM_COLORS 2 +#define RBBIM_TEXT 4 +#define RBBIM_IMAGE 8 +#define RBBIM_CHILD 16 +#define RBBIM_CHILDSIZE 32 +#define RBBIM_SIZE 64 +#define RBBIM_BACKGROUND 128 +#define RBBIM_ID 256 +#define RB_INSERTBANDA (WM_USER+1) +#define RB_INSERTBANDW (WM_USER+10) +#define RB_DELETEBAND (WM_USER+2) +#define RB_GETBARINFO (WM_USER+3) +#define RB_SETBARINFO (WM_USER+4) +#define RB_GETBANDCOUNT (WM_USER+12) +#define RB_GETROWCOUNT (WM_USER+13) +#define RB_GETROWHEIGHT (WM_USER+14) +#define RB_SETBANDINFOA (WM_USER+6) +#define RB_SETBANDINFOW (WM_USER+11) +#define RB_SETPARENT (WM_USER+7) +#define RBN_HEIGHTCHANGE RBN_FIRST +#if (_WIN32_IE >= 0x0300) +#define LVN_ODCACHEHINT (LVN_FIRST-13) +#define LVN_ODFINDITEMA (LVN_FIRST-52) +#define LVN_ODFINDITEMW (LVN_FIRST-79) +#define LVN_ITEMACTIVATE (LVN_FIRST-14) +#define LVN_ODSTATECHANGED (LVN_FIRST-15) +#ifdef UNICODE +#define LVN_ODFINDITEM LVN_ODFINDITEMW +#else +#define LVN_ODFINDITEM LVN_ODFINDITEMA +#endif +#endif /* _WIN32_IE */ +#if (_WIN32_IE >= 0x0400) +#define SB_SETICON 1039 +#define SB_SETTIPTEXTA 1040 +#define SB_SETTIPTEXTW 1041 +#define SB_GETTIPTEXTA 1042 +#define SB_GETTIPTEXTW 1043 +#define SB_GETICON 1044 +#define SB_SETUNICODEFORMAT 0x2005 +#define SB_GETUNICODEFORMAT 0x2006 +#define PGF_INVISIBLE 0 +#define PGF_NORMAL 1 +#define PGF_GRAYED 2 +#define PGF_DEPRESSED 4 +#define PGF_HOT 8 +#define PGB_TOPORLEFT 0 +#define PGB_BOTTOMORRIGHT 1 +#define PGF_SCROLLUP 1 +#define PGF_SCROLLDOWN 2 +#define PGF_SCROLLLEFT 4 +#define PGF_SCROLLRIGHT 8 +#define PGK_SHIFT 1 +#define PGK_CONTROL 2 +#define PGK_MENU 4 +#define PGF_CALCWIDTH 1 +#define PGF_CALCHEIGHT 2 +#define PGM_FIRST 0x1400 +#define PGM_SETCHILD (PGM_FIRST+1) +#define PGM_RECALCSIZE (PGM_FIRST+2) +#define PGM_FORWARDMOUSE (PGM_FIRST+3) +#define PGM_SETBKCOLOR (PGM_FIRST+4) +#define PGM_GETBKCOLOR (PGM_FIRST+5) +#define PGM_SETBORDER (PGM_FIRST+6) +#define PGM_GETBORDER (PGM_FIRST+7) +#define PGM_SETPOS (PGM_FIRST+8) +#define PGM_GETPOS (PGM_FIRST+9) +#define PGM_SETBUTTONSIZE (PGM_FIRST+10) +#define PGM_GETBUTTONSIZE (PGM_FIRST+11) +#define PGM_GETBUTTONSTATE (PGM_FIRST+12) +#define PGM_GETDROPTARGET CCM_GETDROPTARGET + +#define RBS_REGISTERDROP 4096 +#define RBS_AUTOSIZE 8192 +#define RBS_VERTICALGRIPPER 16384 +#define RBS_DBLCLKTOGGLE 32768 +#define RBBS_VARIABLEHEIGHT 64 +#define RBBS_GRIPPERALWAYS 128 +#define RBBS_NOGRIPPER 256 +#define RBBIM_IDEALSIZE 512 +#define RBBIM_LPARAM 1024 +#define RBBIM_HEADERSIZE 2048 +#define RB_HITTEST (WM_USER+8) +#define RB_GETRECT (WM_USER+9) +#define RB_IDTOINDEX (WM_USER+16) +#define RB_GETTOOLTIPS (WM_USER+17) +#define RB_SETTOOLTIPS (WM_USER+18) +#define RB_SETBKCOLOR (WM_USER+19) +#define RB_GETBKCOLOR (WM_USER+20) +#define RB_SETTEXTCOLOR (WM_USER+21) +#define RB_GETTEXTCOLOR (WM_USER+22) +#define RB_SIZETORECT (WM_USER+23) +#define RB_BEGINDRAG (WM_USER+24) +#define RB_ENDDRAG (WM_USER+25) +#define RB_DRAGMOVE (WM_USER+26) +#define RB_GETBARHEIGHT (WM_USER+27) +#define RB_GETBANDINFOW (WM_USER+28) +#define RB_GETBANDINFOA (WM_USER+29) +#define RB_MINIMIZEBAND (WM_USER+30) +#define RB_MAXIMIZEBAND (WM_USER+31) +#define RB_GETDROPTARGET CCM_GETDROPTARGET +#define RB_GETBANDBORDERS (WM_USER+34) +#define RB_SHOWBAND (WM_USER+35) +#define RB_SETPALETTE (WM_USER+37) +#define RB_GETPALETTE (WM_USER+38) +#define RB_MOVEBAND (WM_USER+39) +#define RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#define RBN_GETOBJECT (RBN_FIRST-1) +#define RBN_LAYOUTCHANGED (RBN_FIRST-2) +#define RBN_AUTOSIZE (RBN_FIRST-3) +#define RBN_BEGINDRAG (RBN_FIRST-4) +#define RBN_ENDDRAG (RBN_FIRST-5) +#define RBN_DELETINGBAND (RBN_FIRST-6) +#define RBN_DELETEDBAND (RBN_FIRST-7) +#define RBN_CHILDSIZE (RBN_FIRST-8) +#define RBNM_ID 1 +#define RBNM_STYLE 2 +#define RBNM_LPARAM 4 +#define RBHT_NOWHERE 1 +#define RBHT_CAPTION 2 +#define RBHT_CLIENT 3 +#define RBHT_GRABBER 4 +#ifdef UNICODE +#define SB_SETTIPTEXT SB_SETTIPTEXTW +#define SB_GETTIPTEXT SB_GETTIPTEXTW +#define RB_GETBANDINFO RB_GETBANDINFOW +#else +#define SB_SETTIPTEXT SB_SETTIPTEXTA +#define SB_GETTIPTEXT SB_GETTIPTEXTA +#define RB_GETBANDINFO RB_GETBANDINFOA +#endif +#else +#define RB_GETBANDINFO (WM_USER+5) +#endif /* _WIN32_IE >= 0x0400 */ +#define CBEM_INSERTITEMA (WM_USER + 1) +#define CBEM_SETIMAGELIST (WM_USER + 2) +#define CBEM_GETIMAGELIST (WM_USER + 3) +#define CBEM_GETITEMA (WM_USER + 4) +#define CBEM_SETITEMA (WM_USER + 5) +#define CBEM_DELETEITEM CB_DELETESTRING +#define CBEM_GETCOMBOCONTROL (WM_USER + 6) +#define CBEM_GETEDITCONTROL (WM_USER + 7) +#define CBEM_SETEXSTYLE (WM_USER + 8) +#define CBEM_GETEXSTYLE (WM_USER + 9) +#if (_WIN32_IE >= 0x0400) +#define CBEM_SETEXTENDEDSTYLE (WM_USER + 14) +#define CBEM_GETEXTENDEDSTYLE (WM_USER + 9) +#define CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT +#define CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT +#endif /* _WIN32_IE >= 0x0400 */ +#define CBEM_HASEDITCHANGED (WM_USER + 10) +#define CBEM_INSERTITEMW (WM_USER + 11) +#define CBEM_SETITEMW (WM_USER + 12) +#define CBEM_GETITEMW (WM_USER + 13) +#define DA_LAST 0x7fffffff +#define DPA_APPEND 0x7fffffff +#define DPA_ERR -1 +#define DSA_APPEND 0x7fffffff +#define DSA_ERR -1 +#define DPAS_SORTED 1 +#define DPAS_INSERTBEFORE 2 +#define DPAS_INSERTAFTER 4 +#if (_WIN32_IE >= 0x400) +#define WSB_PROP_CYVSCROLL 1 +#define WSB_PROP_CXHSCROLL 2 +#define WSB_PROP_CYHSCROLL 4 +#define WSB_PROP_CXVSCROLL 8 +#define WSB_PROP_CXHTHUMB 16 +#define WSB_PROP_CYVTHUMB 32 +#define WSB_PROP_VBKGCOLOR 64 +#define WSB_PROP_HBKGCOLOR 128 +#define WSB_PROP_VSTYLE 256 +#define WSB_PROP_HSTYLE 512 +#define WSB_PROP_WINSTYLE 1024 +#define WSB_PROP_PALETTE 2048 +#define WSB_PROP_MASK 0xfff +#define FSB_FLAT_MODE 2 +#define FSB_ENCARTA_MODE 1 +#define FSB_REGULAR_MODE 0 +#endif /* _WIN32_IE >= 0x400 */ + +#ifndef RC_INVOKED +typedef struct tagCOMBOBOXEXITEMA{ + UINT mask; + int iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA; +typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA; +typedef struct tagCOMBOBOXEXITEMW{ + UINT mask; + int iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW; +typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW; +#if (_WIN32_IE >= 0x0400) +typedef struct { + NMHDR hdr; + COMBOBOXEXITEMA ceItem; +} NMCOMBOBOXEXA, *PNMCOMBOBOXEXA; +typedef struct { + NMHDR hdr; + COMBOBOXEXITEMW ceItem; +} NMCOMBOBOXEXW, *PNMCOMBOBOXEXW; +typedef struct { + NMHDR hdr; + int iItemid; + WCHAR szText[CBEMAXSTRLEN]; +}NMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW; +typedef struct { + NMHDR hdr; + int iItemid; + char szText[CBEMAXSTRLEN]; +}NMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA; +typedef struct tagNMIPADDRESS{ + NMHDR hdr; + int iField; + int iValue; +} NMIPADDRESS, *LPNMIPADDRESS; +typedef struct tagLVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} NMLVKEYDOWN, *LPNMLVKEYDOWN; +typedef struct { + NMHDR hdr; + DWORD dwFlag; + int iWidth; + int iHeight; +} NMPGCALCSIZE, *LPNMPGCALCSIZE; +typedef struct { + NMHDR hdr; + BOOL fwKeys; + RECT rcParent; + int iDir; + int iXpos; + int iYpos; + int iScroll; +} NMPGSCROLL, *LPNMPGSCROLL; +typedef struct tagNMSELCHANGE { + NMHDR nmhdr; + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; +} NMSELCHANGE, *LPNMSELCHANGE; +typedef struct tagNMTBHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; +} NMTBHOTITEM, *LPNMTBHOTITEM; +typedef struct { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; +} NMTBDISPINFOA, *LPNMTBDISPINFOA; +typedef struct { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; +} NMTBDISPINFOW, *LPNMTBDISPINFOW; +typedef struct tagNMMOUSE { + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + LPARAM dwHitInfo; +} NMMOUSE, *LPNMMOUSE; +#endif /*_WIN32_IE >= 0x0400 */ +#if (_WIN32_IE >= 0x0401) +typedef struct tagNMTOOLTIPSCREATED +{ + NMHDR hdr; + HWND hwndToolTips; +} NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED; +#endif +typedef struct tagNMDATETIMECHANGE +{ + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; +} NMDATETIMECHANGE, *LPNMDATETIMECHANGE; +typedef struct { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR szText[CBEMAXSTRLEN]; + int iWhy; +} NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW; +typedef struct { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char szText[CBEMAXSTRLEN]; + int iWhy; +} NMCBEENDEDITA, *LPNMCBEENDEDITA,*PNMCBEENDEDITA; +typedef struct _COLORMAP { + COLORREF from; + COLORREF to; +} COLORMAP,*LPCOLORMAP; +typedef struct { + UINT uNotification; + HWND hWnd; + POINT ptCursor; +} DRAGLISTINFO,*LPDRAGLISTINFO; +typedef struct _TBBUTTON { + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; + BYTE bReserved[2]; + DWORD dwData; + int iString; +} TBBUTTON,*PTBBUTTON,*LPTBBUTTON; +typedef const TBBUTTON *LPCTBBUTTON; +#if _WIN32_IE >= 0x400 +typedef struct { + UINT cbSize; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD lParam; + LPSTR pszText; + int cchText; +} TBBUTTONINFOA, *LPTBBUTTONINFOA; +typedef struct { + UINT cbSize; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD lParam; + LPWSTR pszText; + int cchText; +} TBBUTTONINFOW, *LPTBBUTTONINFOW; +typedef struct { + int iButton; + DWORD dwFlags; +} TBINSERTMARK, *LPTBINSERTMARK; +typedef struct tagLVBKIMAGEA { + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; +} LVBKIMAGEA, *LPLVBKIMAGEA; +typedef struct tagLVBKIMAGEW { + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; +} LVBKIMAGEW, *LPLVBKIMAGEW; +#endif /* _WIN32_IE >= 0x400 */ +typedef struct { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPTSTR pszText; +} TBNOTIFY,*LPTBNOTIFY; +typedef struct { + HKEY hkr; + LPCTSTR pszSubKey; + LPCTSTR pszValueName; +} TBSAVEPARAMS; +typedef struct _IMAGEINFO { + HBITMAP hbmImage; + HBITMAP hbmMask; + int Unused1; + int Unused2; + RECT rcImage; +} IMAGEINFO, *LPIMAGEINFO; +typedef struct _IMAGELIST *HIMAGELIST; +typedef struct _HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; +#if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +#endif +#if (_WIN32_IE >= 0x0500) + UINT type; + LPVOID pvFilter; +#endif +} HDITEMA, * LPHDITEMA; +typedef struct _HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; +#if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +#endif +#if (_WIN32_IE >= 0x0500) + UINT type; + LPVOID pvFilter; +#endif +} HDITEMW, * LPHDITEMW; +/* for backward compatability */ +#define HD_ITEMA HDITEMA +#define HD_ITEMW HDITEMW +#define HD_ITEM HDITEM +typedef struct _HD_LAYOUT { + RECT *prc; + WINDOWPOS *pwpos; +} HDLAYOUT, *LPHDLAYOUT; +#define HD_LAYOUT HDLAYOUT /* backward compatability */ +typedef struct _HD_HITTESTINFO { + POINT pt; + UINT flags; + int iItem; +} HD_HITTESTINFO, *LPHDHITTESTINFO; +typedef struct _HD_NOTIFYA { + NMHDR hdr; + int iItem; + int iButton; + HD_ITEMA *pitem; +} HD_NOTIFYA; +typedef struct _HD_NOTIFYW { + NMHDR hdr; + int iItem; + int iButton; + HD_ITEMW *pitem; +} HD_NOTIFYW; +/* 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. */ +typedef struct _NMHEADERA { + NMHDR hdr; + int iItem; + int iButton; + HD_ITEMA* pitem; +} NMHEADERA, *LPNMHEADERA; + +typedef struct _NMHEADERW { + NMHDR hdr; + int iItem; + int iButton; + HD_ITEMW* pitem; +} NMHEADERW, *LPNMHEADERW; +#ifdef UNICODE +#define NMHEADER NMHEADERW +#define LPNMHEADER LPNMHEADERW +#else +#define NMHEADER NMHEADERA +#define LPNMHEADER LPNMHEADERA +#endif +/* End FIXME. */ +typedef struct tagNMHDDISPINFOA { + NMHDR hdr; + int iItem; + UINT mask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} NMHDDISPINFOA, *LPNMHDDISPINFOA; +typedef struct tagNMHDDISPINFOW { + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} NMHDDISPINFOW, *LPNMHDDISPINFOW; +typedef struct tagNMCUSTOMDRAWINFO { + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; +} NMCUSTOMDRAW, *LPNMCUSTOMDRAW; +typedef struct tagNMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; +#if _WIN32_IE >= 0x0400 + int iSubItem; +#endif +} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW; +#if (_WIN32_IE >= 0x0400) +typedef struct tagNMLVGETINFOTIPA +{ + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; +} NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA; +typedef struct tagNMLVGETINFOTIPW +{ + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; +} NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW; +#endif /* _WIN32_IE >= 0x0400 */ +typedef struct tagNMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; +#if _WIN32_IE >= 0x0400 + int iLevel; +#endif +} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW; +#if (_WIN32_IE >= 0x400) +typedef 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; +#if (_WIN32_WINNT >= 0x0501) + int iListGap; +#endif +} NMTBCUSTOMDRAW, * LPNMTBCUSTOMDRAW; +typedef struct tagNMITEMACTIVATE { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; +} NMITEMACTIVATE, *LPNMITEMACTIVATE; +#endif /* _WIN32_IE >= 0x0400 */ +typedef struct tagTBADDBITMAP { + HINSTANCE hInst; + UINT nID; +} TBADDBITMAP,*LPTBADDBITMAP; +typedef struct tagTBSAVEPARAMSA { + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; +} TBSAVEPARAMSA; +typedef struct tagTBSAVEPARAMSW { + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; +} TBSAVEPARAMSW; +typedef struct { + HINSTANCE hInstOld; + UINT nIDOld; + HINSTANCE hInstNew; + UINT nIDNew; + int nButtons; +} TBREPLACEBITMAP,*LPTBREPLACEBITMAP; +typedef struct tagNMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; +#if (_WIN32_IE >= 0x500) + RECT rcButton; +#endif +} NMTOOLBARA, *LPNMTOOLBARA; +#define TBNOTIFYA NMTOOLBARA +#define LPTBNOTIFYA LPNMTOOLBARA +typedef struct tagNMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; +#if (_WIN32_IE >= 0x500) + RECT rcButton; +#endif +} NMTOOLBARW, *LPNMTOOLBARW; +#define TBNOTIFYW NMTOOLBARW +#define LPTBNOTIFYW LPNMTOOLBARW +typedef struct tagTOOLINFOA { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; +#if (_WIN32_IE >= 0x0300) + LPARAM lParam; +#endif +} TTTOOLINFOA,*LPTTTOOLINFOA,*PTOOLINFOA; +#define TOOLINFOA TTTOOLINFOA +#define LPTOOLINFOA LPTTTOOLINFOA +#define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText) +#define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam) +#define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved) +typedef struct tagTOOLINFOW { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; +#if (_WIN32_IE >= 0x0300) + LPARAM lParam; +#endif +} TTTOOLINFOW,*LPTTTOOLINFOW,*PTOOLINFOW; +#define TOOLINFOW TTTOOLINFOW +#define LPTOOLINFOW LPTTTOOLINFOW +#define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText) +#define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam) +#define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved) +typedef struct _TT_HITTESTINFOA { + HWND hwnd; + POINT pt; + TOOLINFOA ti; +} TTHITTESTINFOA,*LPTTHITTESTINFOA; +#define LPHITTESTINFOA LPTTHITTESTINFOA +typedef struct _TT_HITTESTINFOW { + HWND hwnd; + POINT pt; + TOOLINFOW ti; +} TTHITTESTINFOW,*LPTTHITTESTINFOW; +#define LPHITTESTINFOW LPTTHITTESTINFOW +typedef struct tagNMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char szText[80]; + HINSTANCE hinst; + UINT uFlags; +#if (_WIN32_IE >= 0x0300) + LPARAM lParam; +#endif +} NMTTDISPINFOA, *LPNMTTDISPINFOA; +#define TOOLTIPTEXTA NMTTDISPINFOA +#define LPTOOLTIPTEXTA LPNMTTDISPINFOA +typedef struct tagNMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR szText[80]; + HINSTANCE hinst; + UINT uFlags; +#if (_WIN32_IE >= 0x0300) + LPARAM lParam; +#endif +} NMTTDISPINFOW, *LPNMTTDISPINFOW; +#define TOOLTIPTEXTW NMTTDISPINFOW +#define LPTOOLTIPTEXTW LPNMTTDISPINFOW +typedef struct _UDACCEL { + UINT nSec; + UINT nInc; +} UDACCEL,*LPUDACCEL; +typedef struct _NM_UPDOWN { + NMHDR hdr; + int iPos; + int iDelta; +} NMUPDOWN,*LPNMUPDOWN; +/* for backward compatability */ +#define NM_UPDOWN NMUPDOWN +#define LPNM_UPDOWN LPNMUPDOWN +typedef struct _LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +#if (_WIN32_IE >= 0x0300) + int iIndent; +#endif +#if (_WIN32_WINNT >= 0x0501) + int iGroupId; + UINT cColumns; + PUINT puColumns; +#endif +} LVITEMA, FAR *LPLVITEMA; +#define _LV_ITEMA _LVITEMA +#define LV_ITEMA LVITEMA +typedef struct _LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +#if (_WIN32_IE >= 0x0300) + int iIndent; +#endif +#if (_WIN32_WINNT >= 0x0501) + int iGroupId; + UINT cColumns; + PUINT puColumns; +#endif +} LVITEMW, FAR *LPLVITEMW; +#define _LV_ITEMW _LVITEMW +#define LV_ITEMW LVITEMW +typedef struct tagLVFINDINFOA { + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} LVFINDINFOA, FAR* LPFINDINFOA; +#define _LV_FINDINFOA tagLVFINDINFOA +#define LV_FINDINFOA LVFINDINFOA +typedef struct tagLVFINDINFOW { + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} LVFINDINFOW, FAR* LPFINDINFOW; +#define _LV_FINDINFOW tagLVFINDINFOW +#define LV_FINDINFOW LVFINDINFOW +typedef struct _LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; +#if (_WIN32_IE >= 0x0300) + int iSubItem; +#endif +} LVHITTESTINFO, FAR *LPLVHITTESTINFO; +#define _LV_HITTESTINFO _LVHITTESTINFO +#define LV_HITTESTINFO LVHITTESTINFO +typedef struct _LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; +#if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +#endif +} LVCOLUMNA, FAR *LPLVCOLUMNA; +#define _LV_COLUMNA _LVCOLUMNA +#define LV_COLUMNA LVCOLUMNA +typedef struct _LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; +#if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +#endif +} LVCOLUMNW, FAR *LPLVCOLUMNW; +#define _LV_COLUMNW _LVCOLUMNW +#define LV_COLUMNW LVCOLUMNW +typedef int(CALLBACK *PFNLVCOMPARE)(LPARAM,LPARAM,LPARAM); +typedef struct tagNMLISTVIEW { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; +} NMLISTVIEW, *LPNMLISTVIEW; +/* for backward compatability */ +#define _NM_LISTVIEW tagNMLISTVIEW +#define NM_LISTVIEW NMLISTVIEW +#define LPNM_LISTVIEW LPNMLISTVIEW +typedef struct tagNMLVDISPINFOA { + NMHDR hdr; + LV_ITEMA item; +} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA; +#define _LV_DISPINFOA tagNMLVDISPINFOA +#define LV_DISPINFOA NMLVDISPINFOA +typedef struct tagNMLVDISPINFOW { + NMHDR hdr; + LV_ITEMW item; +} NMLVDISPINFOW, FAR *LPNMLVDISPINFOW; +#define _LV_DISPINFOW tagNMLVDISPINFOW +#define LV_DISPINFOW NMLVDISPINFOW +typedef struct _LV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} LV_KEYDOWN; +typedef struct tagNMLVCACHEHINT { + NMHDR hdr; + int iFrom; + int iTo; +} NMLVCACHEHINT, *PNMLVCACHEHINT; +#define NM_CACHEHINT NMLVCACHEHINT +typedef struct _TREEITEM *HTREEITEM; +typedef struct tagTVITEMA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} TVITEMA,*LPTVITEMA; +#define _TV_ITEMA tagTVITEMA +#define TV_ITEMA TVITEMA +#define LPTV_ITEMA LPTVITEMA +typedef struct tagTVITEMW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} TVITEMW,*LPTVITEMW; +#define _TV_ITEMW tagTVITEMW +#define TV_ITEMW TVITEMW +#define LPTV_ITEMW LPTVITEMW +#if (_WIN32_IE >= 0x0400) +typedef struct tagTVITEMEXA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; +} TVITEMEXA, *LPTVITEMEXA; +typedef struct tagTVITEMEXW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; +} TVITEMEXW, *LPTVITEMEXW; +#endif /* _WIN32_IE >= 0x0400 */ +typedef struct tagTVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; +#if (_WIN32_IE >= 0x0400) + _ANONYMOUS_UNION union { + TVITEMEXA itemex; + TV_ITEMA item; + } DUMMYUNIONNAME; +#else + TV_ITEMA item; +#endif +} TVINSERTSTRUCTA,*LPTVINSERTSTRUCTA; +#define _TV_INSERTSTRUCTA tagTVINSERTSTRUCTA +#define TV_INSERTSTRUCTA TVINSERTSTRUCTA +#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA +typedef struct tagTVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; +#if (_WIN32_IE >= 0x0400) + _ANONYMOUS_UNION union { + TVITEMEXW itemex; + TV_ITEMW item; + } DUMMYUNIONNAME; +#else + TV_ITEMW item; +#endif +} TVINSERTSTRUCTW,*LPTVINSERTSTRUCTW; +#define _TV_INSERTSTRUCTW tagTVINSERTSTRUCTW +#define TV_INSERTSTRUCTW TVINSERTSTRUCTW +#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW +typedef struct tagTVHITTESTINFO { + POINT pt; + UINT flags; + HTREEITEM hItem; +} TVHITTESTINFO, *LPTVHITTESTINFO; +#define _TV_HITTESTINFO tagTVHITTESTINFO +#define TV_HITTESTINFO TVHITTESTINFO +#define LPTV_HITTESTINFO LPTVHITTESTINFO +typedef int(CALLBACK *PFNTVCOMPARE)(LPARAM,LPARAM,LPARAM); +typedef struct tagTVSORTCB { + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; +} TVSORTCB,*LPTVSORTCB; +#define _TV_SORTCB tagTVSORTCB +#define TV_SORTCB TVSORTCB +#define LPTV_SORTCB LPTVSORTCB +typedef struct tagNMTREEVIEWA { + NMHDR hdr; + UINT action; + TV_ITEMA itemOld; + TV_ITEMA itemNew; + POINT ptDrag; +} NMTREEVIEWA,*LPNMTREEVIEWA; +#define _NM_TREEVIEWA tagNMTREEVIEWA +#define NM_TREEVIEWA NMTREEVIEWA +#define LPNM_TREEVIEWA LPNMTREEVIEWA +typedef struct tagNMTREEVIEWW { + NMHDR hdr; + UINT action; + TV_ITEMW itemOld; + TV_ITEMW itemNew; + POINT ptDrag; +} NMTREEVIEWW,*LPNMTREEVIEWW; +#define _NM_TREEVIEWW tagNMTREEVIEWW +#define NM_TREEVIEWW NMTREEVIEWW +#define LPNM_TREEVIEWW LPNMTREEVIEWW +typedef struct tagNMTVDISPINFOA { + NMHDR hdr; + TVITEMA item; +} NMTVDISPINFOA, *LPNMTVDISPINFOA; +#define _TV_DISPINFOA tagNMTVDISPINFOA +#define TV_DISPINFOA NMTVDISPINFOA +typedef struct tagNMTVDISPINFOW { + NMHDR hdr; + TVITEMW item; +} NMTVDISPINFOW, *LPNMTVDISPINFOW; +#define _TV_DISPINFOW tagNMTVDISPINFOW +#define TV_DISPINFOW NMTVDISPINFOW +#if (_WIN32_IE >= 0x0400) +typedef struct tagNMTVGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA; +typedef struct tagNMTVGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW; +#endif +typedef struct _TV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} TV_KEYDOWN; +typedef struct _TC_ITEMHEADERA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; +} TC_ITEMHEADERA; +typedef struct _TC_ITEMHEADERW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; +} TC_ITEMHEADERW; +typedef struct tagTCITEMA { + UINT mask; +#if (_WIN32_IE >= 0x0300) + DWORD dwState; + DWORD dwStateMask; +#else + UINT lpReserved1; + UINT lpReserved2; +#endif + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} TCITEMA, *LPTCITEMA; +#define TC_ITEMA TCITEMA +typedef struct tagTCITEMW { + UINT mask; +#if (_WIN32_IE >= 0x0300) + DWORD dwState; + DWORD dwStateMask; +#else + UINT lpReserved1; + UINT lpReserved2; +#endif + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} TCITEMW, *LPTCITEMW; +#define TC_ITEMW TCITEMW +typedef struct tagTCHITTESTINFO { + POINT pt; + UINT flags; +} TCHITTESTINFO, *LPTCHITTESTINFO; +#define TC_HITTESTINFO TCHITTESTINFO +#define LPTC_HITTESTINFO LPTCHITTESTINFO +typedef struct _TC_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} TC_KEYDOWN; +#if (_WIN32_IE >= 0x0300) +typedef struct tagINITCOMMONCONTROLSEX { + DWORD dwSize; + DWORD dwICC; +} INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX; +#endif +typedef struct tagPBRANGE { + int iLow; + int iHigh; +} PBRANGE,*PPBRANGE; +typedef struct tagCOLORSCHEME { + DWORD dwSize; + COLORREF clrBtnHighlight; + COLORREF clrBtnShadow; +} COLORSCHEME,*LPCOLORSCHEME; +typedef struct tagMCHITTESTINFO { + UINT cbSize; + POINT pt; + UINT uHit; + SYSTEMTIME st; +}MCHITTESTINFO, *PMCHITTESTINFO; +typedef DWORD MONTHDAYSTATE; +typedef MONTHDAYSTATE *LPMONTHDAYSTATE; +typedef struct tagNMDAYSTATE { + NMHDR nmhdr; + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; +}NMDAYSTATE,*LPNMDAYSTATE; +typedef struct tagREBARINFO { + UINT cbSize; + UINT fMask; + HIMAGELIST himl; +} REBARINFO,*LPREBARINFO; +typedef struct tagREBARBANDINFOA { + UINT cbSize; + 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; +#if (_WIN32_IE >= 0x0400) + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +#endif +} REBARBANDINFOA,*LPREBARBANDINFOA; +typedef struct tagREBARBANDINFOW { + UINT cbSize; + 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; +#if (_WIN32_IE >= 0x0400) + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +#endif +} REBARBANDINFOW,*LPREBARBANDINFOW; +typedef REBARBANDINFOA const *LPCREBARBANDINFOA; +typedef REBARBANDINFOW const *LPCREBARBANDINFOW; +#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA,wID) +#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID) +#if (_WIN32_IE >= 0x0300) +typedef struct tagIMAGELISTDRAWPARAMS { + DWORD cbSize; + 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; +#if (_WIN32_WINNT >= 0x0501) + DWORD fState; + DWORD Frame; + COLORREF crEffect; +#endif +} IMAGELISTDRAWPARAMS,*LPIMAGELISTDRAWPARAMS; +#endif /* (_WIN32_IE >= 0x0300) */ +#if (_WIN32_IE >= 0x0400) +typedef struct tagNMREBARCHILDSIZE { + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; +} NMREBARCHILDSIZE,*LPNMREBARCHILDSIZE; +typedef struct tagNMREBAR { + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; +} NMREBAR,*LPNMREBAR; +typedef struct tagNMRBAUTOSIZE { + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; +} NMRBAUTOSIZE,*LPNMRBAUTOSIZE; +#if (_WIN32_IE >= 0x0500) +typedef struct tagNMREBARCHEVRON { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; +} NMREBARCHEVRON, *LPNMREBARCHEVRON; +#endif +typedef struct _RB_HITTESTINFO { + POINT pt; + UINT flags; + int iBand; +} RBHITTESTINFO,*LPRBHITTESTINFO; +#endif +typedef struct _DSA *HDSA; +typedef struct _DPA *HDPA; +typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(PVOID,PVOID); +typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(PVOID,PVOID); +typedef INT (CALLBACK *PFNDPACOMPARE)(PVOID,PVOID,LPARAM); +#if (_WIN32_WINNT >= 0x0501) +typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND,UINT,WPARAM,LPARAM,UINT_PTR,DWORD_PTR); +#endif /* _WIN32_WINNT >= 0x0501 */ + +#define INDEXTOOVERLAYMASK(i) ((i)<<8) +#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12) +#define HANDLE_WM_NOTIFY(h,w,l,f) (f)((h),(int)(w),(NMHDR*)(l)) +#define FORWARD_WM_NOTIFY(h,i,p,f) (LRESULT)(f)((h),WM_NOTIFY,(WPARAM)(int)(i),(LPARAM)(NMHDR*)(p)) +#define CCSIZEOF_STRUCT(s,m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) +#define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4)))) +#define MAKEIPRANGE(low,high) ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low))) +#define FIRST_IPADDRESS(a) ((a>>24) & 0xff) +#define SECOND_IPADDRESS(a) ((a>>16) & 0xff) +#define THIRD_IPADDRESS(a) ((a>>8) & 0xff) +#define FOURTH_IPADDRESS(a) (a & 0xff) +#define Animate_Create(w,i,s,hI) CreateWindow(ANIMATE_CLASS,NULL,s,0,0,0,0,w,(HMENU)(i),hI,NULL) +#define Animate_Open(w,f) (BOOL)SNDMSG(w,ACM_OPEN,0,(LPARAM)f) +#define Animate_Play(w,f,t,r) (BOOL)SNDMSG(w,ACM_PLAY,(r),(LPARAM)MAKELONG(f,t)) +#define Animate_Stop(w) (BOOL)SNDMSG(w,ACM_STOP,0,0) +#define Animate_Close(w) Animate_Open(w,NULL) +#define Animate_Seek(w,f) Animate_Play(w,f,f,1) +HBITMAP WINAPI CreateMappedBitmap(HINSTANCE,int,UINT,LPCOLORMAP,int); +HWND WINAPI CreateStatusWindowA(LONG,LPCSTR,HWND,UINT); +HWND WINAPI CreateStatusWindowW(LONG,LPCWSTR,HWND,UINT); +HWND WINAPI CreateToolbarEx(HWND,DWORD,UINT,int,HINSTANCE,UINT,LPCTBBUTTON,int,int,int,int,int,UINT); +HWND WINAPI CreateUpDownControl(DWORD,int,int,int,int,HWND,int,HINSTANCE,HWND,int,int,int); +#define DateTime_GetMonthCal(hwnd) SNDMSG(hwnd, DTM_GETMONTHCAL, 0, 0) +#define DateTime_GetMonthCalColor(hwnd, icolor) SNDMSG(hwnd, DTM_GETMONTHCAL, (WPARAM)icolor,0) +#define DateTime_GetMonthCalFont(hwnd) SNDMSG(hwnd,DTM_GETMCFONT,0,0) +#define DateTime_GetRange(hwnd,lpsystimearray) SNDMSG(hwnd,DTM_GETRANGE,0,(LPARAM)lpsystimearray) +#define DateTime_GetSystemTime(hwnd,lpsystime) SNDMSG(hwnd,DTM_GETSYSTEMTIME,0,(LPARAM)lpsystime) +#define DateTime_SetFormat(hwnd,lpszformat) SNDMSG(hwnd,DTM_SETFORMAT,0,(LPARAM)lpszformat) +#define DateTime_SetMonthCalColor(hwnd,icolor,clr) SNDMSG(hwnd,DTM_SETMCCOLOR,(WPARAM)icolor,(LPARAM)clr) +#define DateTime_SetMonthCalFont(hwnd,hfont,lparam) SNDMSG(hwnd,DTM_SETMCFONT,(WPARAM)hfont,(LPARAM)lparam) +#define DateTime_SetRange(hwnd,flags,lpsystimearray) SNDMSG(hwnd,DTM_SETRANGE,(WPARAM)flags,(LPARAM)lpsystimearray) +#define DateTime_SetSystemTime(hwnd,flag,lpsystime) SNDMSG(hwnd,DTM_SETSYSTEMTIME,(WPARAM)flag,(LPARAM)lpsystime) +void WINAPI DrawInsert(HWND,HWND,int); +void WINAPI DrawStatusTextA(HDC,LPRECT,LPCSTR,UINT); +void WINAPI DrawStatusTextW(HDC,LPRECT,LPCWSTR,UINT); +void WINAPI GetEffectiveClientRect(HWND,LPRECT,LPINT); +#define Header_GetItemCount(w) (int)SNDMSG((w),HDM_GETITEMCOUNT,0,0) +#define Header_InsertItem(w,i,phdi) (int)SNDMSG((w),HDM_INSERTITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi)) +#define Header_DeleteItem(w,i) (BOOL)SNDMSG((w),HDM_DELETEITEM,(WPARAM)(int)(i),0) +#define Header_GetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM*)(phdi)) +#define Header_SetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi)) +#define Header_Layout(w,l) (BOOL)SNDMSG((w),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT*)(l)) +#if (_WIN32_IE >= 0x0300) +#define Header_OrderToIndex(w,o) (int)SNDMSG((w),HDM_ORDERTOINDEX,(WPARAM)(o),0) +#define Header_GetItemRect(w,i,r) (BOOL)SNDMSG((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r)) +#define Header_GetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_GETORDERARRAY,(WPARAM)(l),(LPARAM)(a)) +#define Header_SetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_SETORDERARRAY,(WPARAM)(l),(LPARAM)(a)) +#endif +HDSA WINAPI DSA_Create(INT,INT); +BOOL WINAPI DSA_Destroy(HDSA); +VOID WINAPI DSA_DestroyCallback(HDSA,PFNDSAENUMCALLBACK,PVOID); +PVOID WINAPI DSA_GetItemPtr(HDSA,INT); +INT WINAPI DSA_InsertItem(HDSA,INT,PVOID); +HDPA WINAPI DPA_Create(INT); +BOOL WINAPI DPA_Destroy(HDPA); +PVOID WINAPI DPA_DeletePtr(HDPA,INT); +BOOL WINAPI DPA_DeleteAllPtrs(HDPA); +VOID WINAPI DPA_EnumCallback(HDPA,PFNDPAENUMCALLBACK,PVOID); +VOID WINAPI DPA_DestroyCallback(HDPA,PFNDPAENUMCALLBACK,PVOID); +BOOL WINAPI DPA_SetPtr(HDPA,INT,PVOID); +INT WINAPI DPA_InsertPtr(HDPA,INT,PVOID); +PVOID WINAPI DPA_GetPtr(HDPA,INT_PTR); +BOOL WINAPI DPA_Sort(HDPA,PFNDPACOMPARE,LPARAM); +INT WINAPI DPA_Search(HDPA,PVOID,INT,PFNDPACOMPARE,LPARAM,UINT); +BOOL WINAPI Str_SetPtrW(LPWSTR*,LPCWSTR); +#if (_WIN32_IE >= 0x0400) +BOOL WINAPI FlatSB_EnableScrollBar(HWND,INT,UINT); +BOOL WINAPI FlatSB_ShowScrollBar(HWND,INT,BOOL); +BOOL WINAPI FlatSB_GetScrollRange(HWND,INT,LPINT,LPINT); +BOOL WINAPI FlatSB_GetScrollInfo(HWND,INT,LPSCROLLINFO); +INT WINAPI FlatSB_GetScrollPos(HWND,INT); +BOOL WINAPI FlatSB_GetScrollProp(HWND,INT,LPINT); +#ifdef _WIN64 +BOOL WINAPI FlatSB_GetScrollPropPtr(HWND,INT,PINT_PTR); +#else +#define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp +#endif +INT WINAPI FlatSB_SetScrollPos(HWND,INT,INT,BOOL); +INT WINAPI FlatSB_SetScrollInfo(HWND,INT,LPSCROLLINFO,BOOL); +INT WINAPI FlatSB_SetScrollRange(HWND,INT,INT,INT,BOOL); +BOOL WINAPI FlatSB_SetScrollProp(HWND,UINT,INT_PTR,BOOL); +#define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp +BOOL WINAPI InitializeFlatSB(HWND); +HRESULT WINAPI UninitializeFlatSB(HWND); +#endif /* _WIN32_IE >= 0x0400 */ +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI SetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR); +BOOL WINAPI GetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR*); +BOOL WINAPI RemoveWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR); +LRESULT WINAPI DefSubclassProc(HWND,UINT,WPARAM,LPARAM); +INT WINAPI DrawShadowText(HDC,LPCWSTR,UINT,RECT*,DWORD,COLORREF,COLORREF,INT,INT); +#endif /* _WIN32_WINNT >= 0x0501 */ +int WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP); +#define ImageList_AddIcon(l,i) ImageList_ReplaceIcon(l,-1,i) +int WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF); +BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,int,int,int); +HIMAGELIST WINAPI ImageList_Create(int,int,UINT,int,int); +BOOL WINAPI ImageList_Destroy(HIMAGELIST); +BOOL WINAPI ImageList_DragEnter(HWND,int,int); +BOOL WINAPI ImageList_DragLeave(HWND); +BOOL WINAPI ImageList_DragMove(int,int); +BOOL WINAPI ImageList_DragShowNolock(BOOL); +BOOL WINAPI ImageList_Draw(HIMAGELIST,int,HDC,int,int,UINT); +BOOL WINAPI ImageList_DrawEx(HIMAGELIST,int,HDC,int,int,int,int,COLORREF,COLORREF,UINT); +void WINAPI ImageList_EndDrag(VOID); +#define ImageList_ExtractIcon(h,l,i) ImageList_GetIcon(l,i,0) +COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST); +HIMAGELIST WINAPI ImageList_GetDragImage(LPPOINT,LPPOINT); +HICON WINAPI ImageList_GetIcon(HIMAGELIST,int,UINT); +BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,int*,int*); +int WINAPI ImageList_GetImageCount(HIMAGELIST); +BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,int,IMAGEINFO*); +#define ImageList_LoadBitmap(h,l,x,G,M) ImageList_LoadImage(h,l,x,G,M,IMAGE_BITMAP,0) +HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,int,int,COLORREF,UINT,UINT); +HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,int,int,COLORREF,UINT,UINT); +HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,int,HIMAGELIST,int,int,int); +BOOL WINAPI ImageList_Remove(HIMAGELIST,int); +#define ImageList_RemoveAll(l) ImageList_Remove(l,-1) +BOOL WINAPI ImageList_Replace(HIMAGELIST,int,HBITMAP,HBITMAP); +int WINAPI ImageList_ReplaceIcon(HIMAGELIST,int,HICON); +COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF); +BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,int,int,int); +BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,int,int); +BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,int,int); +#ifdef _OBJIDL_H +HIMAGELIST WINAPI ImageList_Read(LPSTREAM); +BOOL WINAPI ImageList_Write(HIMAGELIST,LPSTREAM); +#endif +void WINAPI InitCommonControls(void); +#if (_WIN32_IE >= 0x0300) +BOOL WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX); +#endif +int WINAPI LBItemFromPt(HWND,POINT,BOOL); +#define ListView_GetBkColor(w) (COLORREF)SNDMSG((w),LVM_GETBKCOLOR,0,0) +#define ListView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),LVM_GETIMAGELIST,(i),0) +#define ListView_GetItemCount(w) (int)SNDMSG((w),LVM_GETITEMCOUNT,0,0) +#define ListView_GetItem(w,i) (BOOL)SNDMSG((w),LVM_GETITEM,0,(LPARAM)(i)) +#define ListView_SetBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETBKCOLOR,0,(LPARAM)c) +#define ListView_SetImageList(w,h,i) (HIMAGELIST)(UINT)SNDMSG((w),LVM_SETIMAGELIST,(i),(LPARAM)(h)) +#define ListView_SetItem(w,i) (BOOL)SNDMSG((w),LVM_SETITEM,0,(LPARAM)(const LV_ITEM*)(i)) +#define ListView_InsertItem(w,i) (int)SNDMSG((w),LVM_INSERTITEM,0,(LPARAM)(const LV_ITEM*)(i)) +#define ListView_DeleteItem(w,i) (BOOL)SNDMSG((w),LVM_DELETEITEM,i,0) +#define ListView_DeleteAllItems(w) (BOOL)SNDMSG((w),LVM_DELETEALLITEMS,0,0) +#define ListView_GetCallbackMask(w) (BOOL)SNDMSG((w),LVM_GETCALLBACKMASK,0,0) +#define ListView_SetCallbackMask(w,m) (BOOL)SNDMSG((w),LVM_SETCALLBACKMASK,m,0) +#define ListView_GetNextItem(w,i,f) (int)SNDMSG((w),LVM_GETNEXTITEM,i,MAKELPARAM((f),0)) +#define ListView_FindItem(w,i,p) (int)SNDMSG((w), LVM_FINDITEM,(WPARAM)i,(LPARAM)(const LV_FINDINFO*)(p)) +#define ListView_GetItemRect(w,i,p,c) (BOOL)SNDMSG((w),LVM_GETITEMRECT,i,((p)?(((LPRECT)(p))->left=(c),(LPARAM)(LPRECT)(p)):0)) +#define ListView_SetItemPosition(w,i,x,y) (BOOL)SNDMSG((w),LVM_SETITEMPOSITION,i,MAKELPARAM(x,y)) +#define ListView_GetItemPosition(w,i,p) (BOOL)SNDMSG((w),LVM_GETITEMPOSITION,i,(LPARAM)p) +#define ListView_GetItemSpacing(w,f) (DWORD)SNDMSG((w),LVM_GETITEMSPACING,f,0) +#define ListView_GetStringWidth(w,s) (int)SNDMSG((w),LVM_GETSTRINGWIDTH,0,(LPARAM)s) +#define ListView_HitTest(w,p) (int)SNDMSG((w),LVM_HITTEST,0,(LPARAM)(LV_HITTESTINFO*)(p)) +#define ListView_EnsureVisible(w,i,f) (BOOL)SNDMSG((w),LVM_ENSUREVISIBLE,i,MAKELPARAM((f),0)) +#define ListView_Scroll(w,dx,dy) (BOOL)SNDMSG((w),LVM_SCROLL,dx,dy) +#define ListView_RedrawItems(w,f,l) (BOOL)SNDMSG((w),LVM_REDRAWITEMS,f,l) +#define ListView_Arrange(w,c) (BOOL)SNDMSG((w),LVM_ARRANGE,c,0) +#define ListView_EditLabel(w,i) (HWND)SNDMSG((w),LVM_EDITLABEL,i,0) +#define ListView_GetEditControl(w) (HWND)SNDMSG((w),LVM_GETEDITCONTROL,0,0) +#define ListView_GetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_GETCOLUMN,i,(LPARAM)(LV_COLUMN*)(p)) +#define ListView_SetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_SETCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p)) +#define ListView_InsertColumn(w,i,p) (int)SNDMSG((w),LVM_INSERTCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p)) +#define ListView_DeleteColumn(w,i) (BOOL)SNDMSG((w),LVM_DELETECOLUMN,i,0) +#define ListView_GetColumnWidth(w,i) (int)SNDMSG((w),LVM_GETCOLUMNWIDTH,i,0) +#define ListView_SetColumnWidth(w,i,x) (BOOL)SNDMSG((w),LVM_SETCOLUMNWIDTH,i,MAKELPARAM((x),0)) +#define ListView_CreateDragImage(w,i,p) (HIMAGELIST)SNDMSG((w),LVM_CREATEDRAGIMAGE,i,(LPARAM)(LPPOINT)(p)) +#define ListView_GetViewRect(w,p) (BOOL)SNDMSG((w),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(p)) +#define ListView_GetTextColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTCOLOR,0,0) +#define ListView_SetTextColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(c)) +#define ListView_GetTextBkColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTBKCOLOR,0,0) +#define ListView_SetTextBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(c)) +#define ListView_GetTopIndex(w) (int)SNDMSG((w),LVM_GETTOPINDEX,0,0) +#define ListView_GetCountPerPage(w) (int)SNDMSG((w),LVM_GETCOUNTPERPAGE,0,0) +#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p)) +#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p)) +#define ListView_Update(w,i) (BOOL)SNDMSG((w),LVM_UPDATE,i,0) +#define ListView_SetItemState(w,i,d,m) \ +{ \ + LV_ITEM _lvi;\ + _lvi.stateMask=m;\ + _lvi.state=d;\ + SNDMSG((w),LVM_SETITEMSTATE,i,(LPARAM)(LV_ITEM*)&_lvi);\ +} +#define ListView_GetItemState(w,i,m) (UINT)SNDMSG((w),LVM_GETITEMSTATE,i,m) +#define ListView_GetItemText(w,i,iS,s,n) \ +{ \ + LV_ITEM _lvi;\ + _lvi.iSubItem=iS;\ + _lvi.cchTextMax=n;\ + _lvi.pszText=s;\ + SNDMSG((w),LVM_GETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\ +} +#define ListView_SetItemText(w,i,iS,s) \ +{ \ + LV_ITEM _lvi;\ + _lvi.iSubItem=iS;\ + _lvi.pszText=s;\ + SNDMSG((w),LVM_SETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\ +} +#define ListView_SetItemCount(w,n) SNDMSG((w),LVM_SETITEMCOUNT,n,0) +#define ListView_SortItems(w,f,l) (BOOL)SNDMSG((w),LVM_SORTITEMS,l,(LPARAM)f) +#define ListView_SetItemPosition32(w,i,x,y) \ +{ \ + POINT p={x,y}; \ + SNDMSG((w),LVM_SETITEMPOSITION32,i,(LPARAM)&p);\ +} +#define ListView_GetSelectedCount(w) (UINT)SNDMSG((w),LVM_GETSELECTEDCOUNT,0,0) +#define ListView_GetCheckState(w,i) ((((UINT)(SNDMSG((w),LVM_GETITEMSTATE,(WPARAM)(i),LVIS_STATEIMAGEMASK)))>>12)-1) +#define ListView_SetCheckState(w,i,f) ListView_SetItemState(w,i,INDEXTOSTATEIMAGEMASK((f)+1),LVIS_STATEIMAGEMASK) + +BOOL WINAPI MakeDragList(HWND); +void WINAPI MenuHelp(UINT,WPARAM,LPARAM,HMENU,HINSTANCE,HWND,PUINT); +#define MonthCal_GetColor(hwnd,icolor) SNDMSG(hwnd,MCM_GETCOLOR,(WPARAM)icolor,(LPARAM)0) +#define MonthCal_GetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_GETCURSEL,0,(LPARAM)lpsystime) +#define MonthCal_GetFirstDayOfWeek(hwnd) SNDMSG(hwnd,MCM_GETFIRSTDAYOFWEEK,0,0) +#define MonthCal_GetMaxSelCount(hwnd) SNDMSG(hwnd,MCM_GETMAXSELCOUNT,0,0) +#define MonthCal_GetMaxTodayWidth(hwnd) SNDMSG(hwnd,MCM_GETMAXTODAYWIDTH,0,0) +#define MonthCal_GetMinReqRect(hwnd,lpRectInfo) SNDMSG(hwnd,MCM_GETMINREQRECT,0,(LPARAM)lpRectInfo) +#define MonthCal_GetMonthDelta(hwnd) SNDMSG(hwnd,MCM_GETMONTHDELTA,0,0) +#define MonthCal_GetMonthRange(hwnd,flag,systimearray) SNDMSG(hwnd,MCM_GETMONTHRANGE,(WPARAM)flag,(LPARAM)systimearray) +#define MonthCal_GetRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETRANGE,0,(LPARAM)systimearray) +#define MonthCal_GetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETSELRANGE,0,(LPARAM)systimearray) +#define MonthCal_GetToday(hwnd,systime) SNDMSG(hwnd,MCM_GETTODAY,0,(LPARAM)systime) +#define MonthCal_GetUnicodeFormat(hwnd) SNDMSG(hwnd,MCM_GETUNICODEFORMAT,0,0) +#define MonthCal_HitTest(hwnd,pmchittest) SNDMSG(hwnd,MCM_HITTEST,0,(LPARAM)pmchittest) +#define MonthCal_SetColor(hwnd,icolor,clr) SNDMSG(hwnd,MCM_SETCOLOR,(WPARAM)icolor,(LPARAM)clr) +#define MonthCal_SetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_SETCURSEL,0,(LPARAM)lpsystime) +#define MonthCal_SetDayState(hwnd,imonths,lpdatestatearray) SNDMSG(hwnd,MCM_SETDAYSTATE,(WPARAM)imonths,(LPARAM)lpdatestatearray) +#define MonthCal_SetFirstDayOfWeek(hwnd,iday) SNDMSG(hwnd,MCM_SETFIRSTDAYOFWEEK,0,(LPARAM)iday) +#define MonthCal_SetMaxSelCount(hwnd,imax) SNDMSG(hwnd,MCM_SETMAXSELCOUNT,(WPARAM)imax,0) +#define MonthCal_SetMonthDelta(hwnd,idelta) SNDMSG(hwnd,MCM_SETMONTHDELTA,(WPARAM)idelta,0) +#define MonthCal_SetRange(hwnd,whichlimit,systimearray) SNDMSG(hwnd,MCM_SETRANGE,whichlimit,systimearray) +#define MonthCal_SetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_SETSELRANGE,0,(LPARAM)systimearray) +#define MonthCal_SetToday(hwnd,systime) SNDMSG(hwnd,MCM_SETTODAY,0,(LPARAM)systime) +#define MonthCal_SetUnicodeFormat(hwnd,unicode) SNDMSG(hwnd,MCM_SETUNICODEFORMAT,(WPARAM)unicode,0) +BOOL WINAPI ShowHideMenuCtl(HWND,UINT,PINT); +#define TabCtrl_GetItem(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEM,i,(LPARAM)(TC_ITEM*)(p)) +#define TabCtrl_SetItem(w,i,p) (BOOL)SNDMSG((w),TCM_SETITEM,i,(LPARAM)(TC_ITEM*)(p)) +#define TabCtrl_InsertItem(w,i,p) (int)SNDMSG((w),TCM_INSERTITEM,i,(LPARAM)(const TC_ITEM*)(p)) +#define TabCtrl_DeleteItem(w,i) (BOOL)SNDMSG((w),TCM_DELETEITEM,i,0) +#define TabCtrl_DeleteAllItems(w) (BOOL)SNDMSG((w),TCM_DELETEALLITEMS,0,0) +#define TabCtrl_GetItemRect(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEMRECT,i,(LPARAM)(LPRECT)(p)) +#define TabCtrl_GetCurSel(w) (int)SNDMSG((w),TCM_GETCURSEL,0,0) +#define TabCtrl_SetCurSel(w,i) (int)SNDMSG((w),TCM_SETCURSEL,i,0) +#define TabCtrl_HitTest(w,p) (int)SNDMSG((w),TCM_HITTEST,0,(LPARAM)(TC_HITTESTINFO*)(p)) +#define TabCtrl_SetItemExtra(w,c) (BOOL)SNDMSG((w),TCM_SETITEMEXTRA,c,0) +#define TabCtrl_AdjustRect(w,b,p) (int)SNDMSG((w),TCM_ADJUSTRECT,b,(LPARAM)(LPRECT)p) +#define TabCtrl_SetItemSize(w,x,y) (DWORD)SNDMSG((w),TCM_SETITEMSIZE,0,MAKELPARAM(x,y)) +#define TabCtrl_RemoveImage(w,i) (void)SNDMSG((w),TCM_REMOVEIMAGE,i,0) +#define TabCtrl_SetPadding(w,x,y) (void)SNDMSG((w),TCM_SETPADDING,0,MAKELPARAM(x,y)) +#define TabCtrl_GetRowCount(w) (int)SNDMSG((w),TCM_GETROWCOUNT,0,0) +#define TabCtrl_GetToolTips(w) (HWND)SNDMSG((w),TCM_GETTOOLTIPS,0,0) +#define TabCtrl_SetToolTips(w,t) (void)SNDMSG((w),TCM_SETTOOLTIPS,(WPARAM)t,0) +#define TabCtrl_GetCurFocus(w) (int)SNDMSG((w),TCM_GETCURFOCUS,0,0) +#define TabCtrl_SetCurFocus(w,i) (void)SNDMSG((w),TCM_SETCURFOCUS,i,0) +#define TabCtrl_GetImageList(w) (HIMAGELIST)SNDMSG((w),TCM_GETIMAGELIST,0,0) +#define TabCtrl_SetImageList(w,h) (HIMAGELIST)SNDMSG((w),TCM_SETIMAGELIST,0,(LPARAM)(UINT)(h)) +#define TabCtrl_GetItemCount(w) (int)SNDMSG((w),TCM_GETITEMCOUNT,0,0) +BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT); +#define TreeView_InsertItem(w,i) (HTREEITEM)SNDMSG((w),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(i)) +#define TreeView_DeleteItem(w,i) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(i)) +#define TreeView_DeleteAllItems(w) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT) +#define TreeView_Expand(w,i,c) (BOOL)SNDMSG((w),TVM_EXPAND,c,(LPARAM)(HTREEITEM)(i)) +#define TreeView_GetItemRect(w,i,p,c) (*(HTREEITEM*)p=(i),(BOOL)SNDMSG((w),TVM_GETITEMRECT,c,(LPARAM)(LPRECT)(p))) +#define TreeView_GetCount(w) (UINT)SNDMSG((w),TVM_GETCOUNT,0,0) +#define TreeView_GetIndent(w) (UINT)SNDMSG((w),TVM_GETINDENT,0,0) +#define TreeView_SetIndent(w,i) (BOOL)SNDMSG((w),TVM_SETINDENT,i,0) +#define TreeView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),TVM_GETIMAGELIST,i,0) +#define TreeView_SetImageList(w,h,i) (HIMAGELIST)SNDMSG((w),TVM_SETIMAGELIST,i,(LPARAM)(HIMAGELIST)(h)) +#define TreeView_GetNextItem(w,i,c) (HTREEITEM)SNDMSG((w),TVM_GETNEXTITEM,c,(LPARAM)(HTREEITEM)(i)) +#define TreeView_GetChild(w,i) TreeView_GetNextItem(w,i,TVGN_CHILD) +#define TreeView_GetNextSibling(w,i) TreeView_GetNextItem(w,i,TVGN_NEXT) +#define TreeView_GetPrevSibling(w,i) TreeView_GetNextItem(w,i,TVGN_PREVIOUS) +#define TreeView_GetParent(w,i) TreeView_GetNextItem(w,i,TVGN_PARENT) +#define TreeView_GetFirstVisible(w) TreeView_GetNextItem(w,NULL,TVGN_FIRSTVISIBLE) +#define TreeView_GetNextVisible(w,i) TreeView_GetNextItem(w,i,TVGN_NEXTVISIBLE) +#define TreeView_GetPrevVisible(w,i) TreeView_GetNextItem(w,i,TVGN_PREVIOUSVISIBLE) +#define TreeView_GetSelection(w) TreeView_GetNextItem(w,NULL,TVGN_CARET) +#define TreeView_GetDropHilight(w) TreeView_GetNextItem(w,NULL,TVGN_DROPHILITE) +#define TreeView_GetRoot(w) TreeView_GetNextItem(w,NULL,TVGN_ROOT) +#define TreeView_Select(w,i,c) (BOOL)SNDMSG((w),TVM_SELECTITEM,c,(LPARAM)(HTREEITEM)(i)) +#define TreeView_SelectItem(w,i) TreeView_Select(w,i,TVGN_CARET) +#define TreeView_SelectDropTarget(w,i) TreeView_Select(w,i,TVGN_DROPHILITE) +#define TreeView_SelectSetFirstVisible(w,i) TreeView_Select(w,i,TVGN_FIRSTVISIBLE) +#define TreeView_GetItem(w,i) (BOOL)SNDMSG((w),TVM_GETITEM,0,(LPARAM)(TV_ITEM*)(i)) +#define TreeView_SetItem(w,i) (BOOL)SNDMSG((w),TVM_SETITEM,0,(LPARAM)(const TV_ITEM*)(i)) +#define TreeView_EditLabel(w,i) (HWND)SNDMSG((w),TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)(i)) +#define TreeView_GetEditControl(w) (HWND)SNDMSG((w),TVM_GETEDITCONTROL,0,0) +#define TreeView_GetVisibleCount(w) (UINT)SNDMSG((w),TVM_GETVISIBLECOUNT,0,0) +#define TreeView_HitTest(w,p) (HTREEITEM)SNDMSG((w),TVM_HITTEST,0,(LPARAM)(LPTV_HITTESTINFO)(p)) +#define TreeView_CreateDragImage(w,i) (HIMAGELIST)SNDMSG((w),TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)(i)) +#define TreeView_SortChildren(w,i,r) (BOOL)SNDMSG((w),TVM_SORTCHILDREN,r,(LPARAM)(HTREEITEM)(i)) +#define TreeView_EnsureVisible(w,i) (BOOL)SNDMSG((w),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(i)) +#define TreeView_SortChildrenCB(w,s,r) (BOOL)SNDMSG((w),TVM_SORTCHILDRENCB,r,(LPARAM)(LPTVSORTCB)(s)) +#define TreeView_EndEditLabelNow(w,f) (BOOL)SNDMSG((w),TVM_ENDEDITLABELNOW,f,0) +#define TreeView_GetISearchString(w,s) (BOOL)SNDMSG((w),TVM_GETISEARCHSTRING,0,(LPARAM)s) +#if (_WIN32_IE >= 0x0300) +#define ListView_ApproximateViewRect(w,iw,ih,i) (DWORD)SNDMSG((w),LVM_APPROXIMATEVIEWRECT,(i),MAKELPARAM((iw),(ih))) +#define ListView_SetExtendedListViewStyle(w,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,0,(s)) +#define ListView_GetExtendedListViewStyle(w) (DWORD)SNDMSG((w),LVM_GETEXTENDEDLISTVIEWSTYLE,0,0) +#define ListView_SetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_SETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a)) +#define ListView_GetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_GETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a)) +#define ListView_GetHeader(w) (HWND)SNDMSG((w),LVM_GETHEADER,0,0) +#define ListView_GetHotCursor(w) (HCURSOR)SNDMSG((w),LVM_GETHOTCURSOR,0,0) +#define ListView_GetHotItem(w) (INT)SNDMSG((w),LVM_GETHOTITEM,0,0) +#define ListView_GetSubItemRect(w,i,is,c,p) (BOOL)SNDMSG((w),LVM_GETSUBITEMRECT,(WPARAM)(int)(i),((p)?(((LPRECT)(p))->left=(c),(((LPRECT)(p))->top=(is)),(LPARAM)(LPRECT)(p)):0)) +#define ListView_SetHotCursor(w,c) (HCURSOR)SNDMSG((w),LVM_SETHOTCURSOR,0,(LPARAM)(c)) +#define ListView_SetHotItem(w,i) (int)SNDMSG((w),LVM_SETHOTITEM,(WPARAM)(i),0) +#define ListView_SetIconSpacing(w,x,y) (DWORD)SNDMSG((w),LVM_SETICONSPACING,0,MAKELONG(x,y)) +#define ListView_SubItemHitTest(w,p) (int)SNDMSG((w),LVM_SUBITEMHITTEST,0,(LPARAM)(LPLVHITTESTINFO)(p)) +WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT); +WINBOOL WINAPI ImageList_Copy(HIMAGELIST,int,HIMAGELIST,int,UINT); +WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); +#define TabCtrl_SetMinTabWidth(hwnd, x) SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x) +#define TabCtrl_DeselectAll(hwnd, fExcludeFocus) SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0) +#define TreeView_GetToolTips(w) (HWND)SNDMSG((w),TVM_GETTOOLTIPS,0,0) +#define TreeView_SetToolTips(w,wt) (HWND)SNDMSG((w),TVM_SETTOOLTIPS,(WPARAM)(wt),0) +#endif +#if (_WIN32_IE >= 0x0400) +#define ListView_GetBkImage(h,plvbki) (BOOL)SNDMSG((h), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki)) +#define ListView_SetBkImage(h, plvbki) (BOOL)SNDMSG((h), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki)) +#define ListView_SetExtendedListViewStyleEx(w,m,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,(m),(s)) +#define ListView_SetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_SETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r)) +#define ListView_GetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_GETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r)) +#define ListView_GetNumberOfWorkAreas(w,n) (BOOL)SNDMSG((w),LVM_GETNUMBEROFWORKAREAS,0,(LPARAM)(UINT *)(pnWorkAreas)) +#define ListView_SetHoverTime(w,t) (DWORD)SNDMSG((w),LVM_SETHOVERTIME,0,(LPARAM)(t)) +#define ListView_GetHoverTime(w) (DWORD)SNDMSG((w),LVM_GETHOVERTIME,0,0) +#define ListView_GetSelectionMark(w) (INT)SNDMSG((w),LVM_GETSELECTIONMARK,0,0) +#define ListView_SetSelectionMark(w,i) (INT)SNDMSG((w),LVM_SETSELECTIONMARK,0,(LPARAM)(i)) +#define ListView_SetToolTips(w,n) (HWND)SNDMSG((w),LVM_SETTOOLTIPS,(WPARAM)(n),0) +#define ListView_GetToolTips(w) (HWND)SNDMSG((w),LVM_GETTOOLTIPS,0,0) +#define TabCtrl_HighlightItem(hwnd, i, fHighlight) SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)i, (LPARAM)MAKELONG (fHighlight, 0)) +#define TabCtrl_SetExtendedStyle(hwnd, dw) SNDMSG((hwnd), TCM_SETEXTENDEDSTYLE, 0, dw) +#define TabCtrl_GetExtendedStyle(hwnd) SNDMSG((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0) +#define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) SNDMSG((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) +#define TabCtrl_GetUnicodeFormat(hwnd) SNDMSG((hwnd), TCM_GETUNICODEFORMAT, 0, 0) +#define TreeView_GetBkColor(w) (COLORREF)SNDMSG((w),TVM_GETBKCOLOR,0,0) +#define TreeView_GetInsertMarkColor(w) (COLORREF)SNDMSG((w),TVM_GETINSERTMARKCOLOR,0,0) +#define TreeView_GetItemHeight(w) (int)SNDMSG((w),TVM_GETITEMHEIGHT,0,0) +#define TreeView_GetScrollTime(w) (UINT)SNDMSG((w),TVM_GETSCROLLTIME,0,0) +#define TreeView_GetTextColor(w) (COLORREF)SNDMSG((w),TVM_GETTEXTCOLOR,0,0) +#define TreeView_SetBkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETBKCOLOR,0,(LPARAM)(c)) +#define TreeView_SetInsertMarkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETINSERTMARKCOLOR,0,(LPARAM)(c)) +#define TreeView_SetItemHeight(w,h) (int)SNDMSG((w),TVM_SETITEMHEIGHT,(WPARAM)(h),0) +#define TreeView_SetScrollTime(w,t) (UINT)SNDMSG((w),TVM_SETSCROLLTIME,(WPARAM)(UINT)(t),0) +#define TreeView_SetTextColor(w,c) (COLORREF)SNDMSG((w),TVM_SETTEXTCOLOR,0,(LPARAM)(c)) +#define TreeView_SetInsertMark(w,i,a) (BOOL)SNDMSG((w),TVM_SETINSERTMARK,(WPARAM)(a),(LPARAM)(i)) +#define TreeView_SetUnicodeFormat(w,u) (BOOL)SNDMSG((w),TVM_SETUNICODEFORMAT,(WPARAM)(u),0) +#define TreeView_GetUnicodeFormat(w) (BOOL)SNDMSG((w),TVM_GETUNICODEFORMAT,0,0) +#endif +#if (_WIN32_IE >= 0x0500) +#define TreeView_GetItemState(w,i,m) (UINT)SNDMSG((w),TVM_GETITEMSTATE,(WPARAM)(i),(LPARAM)(m)) +#endif + +#ifdef UNICODE +typedef HDITEMW HDITEM; +typedef TOOLINFOW TOOLINFO,*PTOOLINFO,*LPTOOLINFO; +typedef TTHITTESTINFOW TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO; +typedef TOOLTIPTEXTW TOOLTIPTEXT,*LPTOOLTIPTEXT; +typedef NMTTDISPINFOW NMTTDISPINFO, *LPNMTTDISPINFO; +typedef TV_ITEMW TV_ITEM,*LPTV_ITEM; +typedef TVITEMW TVITEM,*LPTVITEM; +#if (_WIN32_IE >= 0x0400) +typedef TVITEMEXW TVITEMEX,*LPTVITEMEX; +#endif +typedef TV_INSERTSTRUCTW TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT; +typedef TVINSERTSTRUCTW TVINSERTSTRUCT,*LPTVINSERTSTRUCT; +typedef NM_TREEVIEWW NM_TREEVIEW,*LPNM_TREEVIEW; +typedef NMTREEVIEWW NMTREEVIEW,*LPNMTREEVIEW; +typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO; +#define ACM_OPEN ACM_OPENW +#define COMBOBOXEXITEM COMBOBOXEXITEMW +#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMW +#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMW +#define CBEM_INSERTITEM CBEM_INSERTITEMW +#define CBEM_SETITEM CBEM_SETITEMW +#define CBEM_GETITEM CBEM_GETITEMW +#define CBEN_ENDEDIT CBEN_ENDEDITW +#define NMCBEENDEDIT NMCBEENDEDITW +#define LPNMCBEENDEDIT LPNMCBEENDEDITW +#define PNMCBEENDEDIT PNMCBEENDEDITW +#if _WIN32_IE >= 0x0400 +#define NMCOMBOBOXEX NMCOMBOBOXEXW +#define PNMCOMBOBOXEX PNMCOMBOBOXEXW +#define CBEN_GETDISPINFO CBEN_GETDISPINFOW +#define CBEN_DRAGBEGIN CBEN_DRAGBEGINW +#define NMCBEDRAGBEGIN NMCBEDRAGBEGINW +#define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINW +#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINW +#endif /* _WIN32_IE >= 0x0400 */ +#define SB_GETTEXT SB_GETTEXTW +#define SB_SETTEXT SB_SETTEXTW +#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW +#define HDM_INSERTITEM HDM_INSERTITEMW +#define HDM_GETITEM HDM_GETITEMW +#define HDM_SETITEM HDM_SETITEMW +#define HDN_ITEMCHANGING HDN_ITEMCHANGINGW +#define HDN_ITEMCHANGED HDN_ITEMCHANGEDW +#define HDN_ITEMCLICK HDN_ITEMCLICKW +#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW +#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW +#define HDN_BEGINTRACK HDN_BEGINTRACKW +#define HDN_ENDTRACK HDN_ENDTRACKW +#define HDN_TRACK HDN_TRACKW +#if (_WIN32_IE >= 0x0300) +#define HDN_GETDISPINFO HDN_GETDISPINFOW +#endif +#define HD_NOTIFY HD_NOTIFYW +#define TBSAVEPARAMS TBSAVEPARAMSW +#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW +#define TB_SAVERESTORE TB_SAVERESTOREW +#define TB_ADDSTRING TB_ADDSTRINGW +#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW +#if _WIN32_IE >= 0x400 +#define TB_GETBUTTONINFO TB_GETBUTTONINFOW +#define TB_SETBUTTONINFO TB_SETBUTTONINFOW +#define TB_INSERTBUTTON TB_INSERTBUTTONW +#define TB_ADDBUTTONS TB_ADDBUTTONSW +#define TB_MAPACCELERATOR TB_MAPACCELERATORW +#define TBBUTTONINFO TBBUTTONINFOW +#define LPTBBUTTONINFO LPTBBUTTONINFOW +#define TBN_GETDISPINFO TBN_GETDISPINFOW +#define NMTBDISPINFO NMTBDISPINFOW +#define LPNMTBDISPINFO LPNMTBDISPINFOW +#endif +#define TBNOTIFY TBNOTIFYW +#define LPTBNOTIFY LPTBNOTIFYW +#define NMTOOLBAR NMTOOLBARW +#define LPNMTOOLBAR LPNMTOOLBARW +#define TTM_ADDTOOL TTM_ADDTOOLW +#define TTM_DELTOOL TTM_DELTOOLW +#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTW +#define TTM_GETTOOLINFO TTM_GETTOOLINFOW +#define TTM_SETTOOLINFO TTM_SETTOOLINFOW +#define TTM_HITTEST TTM_HITTESTW +#define TTM_GETTEXT TTM_GETTEXTW +#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTW +#define TTM_ENUMTOOLS TTM_ENUMTOOLSW +#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLW +#define TTN_NEEDTEXT TTN_NEEDTEXTW +#define TTN_GETDISPINFO TTN_GETDISPINFOW +#define SB_GETTEXT SB_GETTEXTW +#define SB_SETTEXT SB_SETTEXTW +#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW +#define LV_ITEM LV_ITEMW +#define LVITEM LVITEMW +#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW +#if _WIN32_IE >= 0x0400 +#define LVBKIMAGE LVBKIMAGEW +#define LPLVBKIMAGE LPLVBKIMAGEW +#define LVM_SETBKIMAGE LVM_SETBKIMAGEW +#define LVM_GETBKIMAGE LVM_GETBKIMAGEW +#endif /* _WIN32_IE >= 0x400 */ +#define LVM_GETITEM LVM_GETITEMW +#define LVM_SETITEM LVM_SETITEMW +#define LVM_INSERTITEM LVM_INSERTITEMW +#define LV_FINDINFO LV_FINDINFOW +#define LVFINDINFO LVFINDINFOW +#define LPFINDINFO LPFINDINFOW +#define LVM_FINDITEM LVM_FINDITEMW +#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW +#define LVM_EDITLABEL LVM_EDITLABELW +#define LV_COLUMN LV_COLUMNW +#define LVCOLUMN LVCOLUMNW +#define LVM_GETCOLUMN LVM_GETCOLUMNW +#define LVM_SETCOLUMN LVM_SETCOLUMNW +#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW +#define LVM_GETITEMTEXT LVM_GETITEMTEXTW +#define LVM_SETITEMTEXT LVM_SETITEMTEXTW +#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW +#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW +#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW +#define LVN_GETDISPINFO LVN_GETDISPINFOW +#define LVN_SETDISPINFO LVN_SETDISPINFOW +#define LVN_GETINFOTIP LVN_GETINFOTIPW +#define NMLVGETINFOTIP NMLVGETINFOTIPW +#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPW +#define LV_DISPINFO LV_DISPINFOW +#define NMLVDISPINFO NMLVDISPINFOW +#define TVM_INSERTITEM TVM_INSERTITEMW +#define TVM_GETITEM TVM_GETITEMW +#define TVM_SETITEM TVM_SETITEMW +#define TVM_EDITLABEL TVM_EDITLABELW +#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW +#define TV_DISPINFO NMTVDISPINFOW +#define NMTVDISPINFO NMTVDISPINFOW +#define LPNMTVDISPINFO LPNMTVDISPINFOW +#if (_WIN32_IE >= 0x0400) +#define NMTVGETINFOTIP NMTVGETINFOTIPW +#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPW +#define TVN_GETINFOTIP TVN_GETINFOTIPW +#endif +#define TVN_SELCHANGING TVN_SELCHANGINGW +#define TVN_SELCHANGED TVN_SELCHANGEDW +#define TVN_GETDISPINFO TVN_GETDISPINFOW +#define TVN_SETDISPINFO TVN_SETDISPINFOW +#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW +#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW +#define TVN_BEGINDRAG TVN_BEGINDRAGW +#define TVN_BEGINRDRAG TVN_BEGINRDRAGW +#define TVN_DELETEITEM TVN_DELETEITEMW +#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW +#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW +#define TC_ITEMHEADER TC_ITEMHEADERW +#define TC_ITEM TC_ITEMW +#define TCITEM TCITEMW +#define LPTCITEM LPTCITEMW +#define TCM_GETITEM TCM_GETITEMW +#define TCM_SETITEM TCM_SETITEMW +#define TCM_INSERTITEM TCM_INSERTITEMW +#define CreateStatusWindow CreateStatusWindowW +#define DrawStatusText DrawStatusTextW +#define ImageList_LoadImage ImageList_LoadImageW +#define DTM_SETFORMAT DTM_SETFORMATW +#define DTN_USERSTRING DTN_USERSTRINGW +#define DTN_WMKEYDOWN DTN_WMKEYDOWNW +#define DTN_FORMAT DTN_FORMATW +#define DTN_FORMATQUERY DTN_FORMATQUERYW +typedef REBARBANDINFOW REBARBANDINFO,*LPREBARBANDINFO; +#define LPCREBARBANDINFO LPCREBARBANDINFOW +#define REBARBANDINFO_V3_SIZE REBARBANDINFOW_V3_SIZE +#define RB_INSERTBAND RB_INSERTBANDW +#define RB_SETBANDINFO RB_SETBANDINFOW +#else /* UNICODE */ +typedef HDITEMA HDITEM; +typedef TOOLINFOA TOOLINFO,*PTOOLINFO,*LPTOOLINFO; +typedef TTHITTESTINFOA TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO; +typedef TOOLTIPTEXTA TOOLTIPTEXT,*LPTOOLTIPTEXT; +typedef NMTTDISPINFOA NMTTDISPINFO, *LPNMTTDISPINFO; +typedef TV_ITEMA TV_ITEM,*LPTV_ITEM; +typedef TVITEMA TVITEM,*LPTVITEM; +#if (_WIN32_IE >= 0x0400) +typedef TVITEMEXA TVITEMEX,*LPTVITEMEX; +#endif +typedef TV_INSERTSTRUCTA TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT; +typedef TVINSERTSTRUCTA TVINSERTSTRUCT,*LPTVINSERTSTRUCT; +typedef NM_TREEVIEWA NM_TREEVIEW,*LPNM_TREEVIEW; +typedef NMTREEVIEWA NMTREEVIEW,*LPNMTREEVIEW; +typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO; +#define ACM_OPEN ACM_OPENA +#define COMBOBOXEXITEM COMBOBOXEXITEMA +#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMA +#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMA +#define CBEM_INSERTITEM CBEM_INSERTITEMA +#define CBEM_SETITEM CBEM_SETITEMA +#define CBEM_GETITEM CBEM_GETITEMA +#define CBEN_ENDEDIT CBEN_ENDEDITA +#define NMCBEENDEDIT NMCBEENDEDITA +#define LPNMCBEENDEDIT LPNMCBEENDEDITA +#define PNMCBEENDEDIT PNMCBEENDEDITA +#if _WIN32_IE >= 0x0400 +#define TB_GETBUTTONINFO TB_GETBUTTONINFOA +#define TB_SETBUTTONINFO TB_SETBUTTONINFOA +#define TB_INSERTBUTTON TB_INSERTBUTTONA +#define TB_ADDBUTTONS TB_ADDBUTTONSA +#define TB_MAPACCELERATOR TB_MAPACCELERATORA +#define NMCOMBOBOXEX NMCOMBOBOXEXA +#define PNMCOMBOBOXEX PNMCOMBOBOXEXA +#define CBEN_DRAGBEGIN CBEN_DRAGBEGINA +#define CBEN_GETDISPINFO CBEN_GETDISPINFOA +#define NMCBEDRAGBEGIN NMCBEDRAGBEGINA +#define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINA +#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINA +#define TBN_GETDISPINFO TBN_GETDISPINFOA +#define NMTBDISPINFO NMTBDISPINFOA +#define LPNMTBDISPINFO LPNMTBDISPINFOA +#endif /* _WIN32_IE >= 0x0400 */ +#define SB_GETTEXT SB_GETTEXTA +#define SB_SETTEXT SB_SETTEXTA +#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA +#define HDM_INSERTITEM HDM_INSERTITEMA +#define HDM_GETITEM HDM_GETITEMA +#define HDM_SETITEM HDM_SETITEMA +#define HDN_ITEMCHANGING HDN_ITEMCHANGINGA +#define HDN_ITEMCHANGED HDN_ITEMCHANGEDA +#define HDN_ITEMCLICK HDN_ITEMCLICKA +#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKA +#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKA +#define HDN_BEGINTRACK HDN_BEGINTRACKA +#define HDN_ENDTRACK HDN_ENDTRACKA +#define HDN_TRACK HDN_TRACKA +#if (_WIN32_IE >= 0x0300) +#define HDN_GETDISPINFO HDN_GETDISPINFOA +#endif +#define HD_NOTIFY HD_NOTIFYA +#define TBSAVEPARAMS TBSAVEPARAMSA +#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA +#define TB_SAVERESTORE TB_SAVERESTOREA +#define TB_ADDSTRING TB_ADDSTRINGA +#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA +#if _WIN32_IE >= 0x400 +#define TBBUTTONINFO TBBUTTONINFOA +#define LPTBBUTTONINFO LPTBBUTTONINFOA +#endif +#define TBNOTIFY TBNOTIFYA +#define LPTBNOTIFY LPTBNOTIFYA +#define NMTOOLBAR NMTOOLBARA +#define LPNMTOOLBAR LPNMTOOLBARA +#define TTM_ADDTOOL TTM_ADDTOOLA +#define TTM_DELTOOL TTM_DELTOOLA +#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTA +#define TTM_GETTOOLINFO TTM_GETTOOLINFOA +#define TTM_SETTOOLINFO TTM_SETTOOLINFOA +#define TTM_HITTEST TTM_HITTESTA +#define TTM_GETTEXT TTM_GETTEXTA +#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTA +#define TTM_ENUMTOOLS TTM_ENUMTOOLSA +#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA +#define TTN_NEEDTEXT TTN_NEEDTEXTA +#define TTN_GETDISPINFO TTN_GETDISPINFOA +#define SB_GETTEXT SB_GETTEXTA +#define SB_SETTEXT SB_SETTEXTA +#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA +#define LV_ITEM LV_ITEMA +#define LVITEM LVITEMA +#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA +#if _WIN32_IE >= 0x0400 +#define LVBKIMAGE LVBKIMAGEA +#define LPLVBKIMAGE LPLVBKIMAGEA +#define LVM_SETBKIMAGE LVM_SETBKIMAGEA +#define LVM_GETBKIMAGE LVM_GETBKIMAGEA +#endif /* _WIN32_IE >= 0x0400 */ +#define LVM_GETITEM LVM_GETITEMA +#define LVM_SETITEM LVM_SETITEMA +#define LVM_INSERTITEM LVM_INSERTITEMA +#define LV_FINDINFO LV_FINDINFOA +#define LVFINDINFO LVFINDINFOA +#define LPFINDINFO LPFINDINFOA +#define LVM_FINDITEM LVM_FINDITEMA +#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA +#define LVM_EDITLABEL LVM_EDITLABELA +#define LV_COLUMN LV_COLUMNA +#define LVCOLUMN LVCOLUMNA +#define LVM_GETCOLUMN LVM_GETCOLUMNA +#define LVM_SETCOLUMN LVM_SETCOLUMNA +#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA +#define LVM_GETITEMTEXT LVM_GETITEMTEXTA +#define LVM_SETITEMTEXT LVM_SETITEMTEXTA +#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA +#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA +#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA +#define LVN_GETDISPINFO LVN_GETDISPINFOA +#define LVN_SETDISPINFO LVN_SETDISPINFOA +#define LVN_GETINFOTIP LVN_GETINFOTIPA +#define NMLVGETINFOTIP NMLVGETINFOTIPA +#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPA +#define LV_DISPINFO LV_DISPINFOA +#define NMLVDISPINFO NMLVDISPINFOA +#define TVM_INSERTITEM TVM_INSERTITEMA +#define TVM_GETITEM TVM_GETITEMA +#define TVM_SETITEM TVM_SETITEMA +#define TVM_EDITLABEL TVM_EDITLABELA +#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA +#define TV_DISPINFO NMTVDISPINFOA +#define NMTVDISPINFO NMTVDISPINFOA +#define LPNMTVDISPINFO LPNMTVDISPINFOA +#if (_WIN32_IE >= 0x0400) +#define NMTVGETINFOTIP NMTVGETINFOTIPA +#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPA +#define TVN_GETINFOTIP TVN_GETINFOTIPA +#endif +#define TVN_SELCHANGING TVN_SELCHANGINGA +#define TVN_SELCHANGED TVN_SELCHANGEDA +#define TVN_GETDISPINFO TVN_GETDISPINFOA +#define TVN_SETDISPINFO TVN_SETDISPINFOA +#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA +#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA +#define TVN_BEGINDRAG TVN_BEGINDRAGA +#define TVN_BEGINRDRAG TVN_BEGINRDRAGA +#define TVN_DELETEITEM TVN_DELETEITEMA +#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA +#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA +#define TC_ITEMHEADER TC_ITEMHEADERA +#define TC_ITEM TC_ITEMA +#define TCITEM TCITEMA +#define LPTCITEM LPTCITEMA +#define TCM_GETITEM TCM_GETITEMA +#define TCM_SETITEM TCM_SETITEMA +#define TCM_INSERTITEM TCM_INSERTITEMA +#define CreateStatusWindow CreateStatusWindowA +#define DrawStatusText DrawStatusTextA +#define ImageList_LoadImage ImageList_LoadImageA +#define DTM_SETFORMAT DTM_SETFORMATA +#define DTN_USERSTRING DTN_USERSTRINGA +#define DTN_WMKEYDOWN DTN_WMKEYDOWNA +#define DTN_FORMAT DTN_FORMATA +#define DTN_FORMATQUERY DTN_FORMATQUERYA +typedef REBARBANDINFOA REBARBANDINFO,*LPREBARBANDINFO; +#define LPCREBARBANDINFO LPCREBARBANDINFOA +#define REBARBANDINFO_V3_SIZE REBARBANDINFOA_V3_SIZE +#define RB_INSERTBAND RB_INSERTBANDA +#define RB_SETBANDINFO RB_SETBANDINFOA +#endif +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/commdlg.h b/reactos/w32api/include/commdlg.h new file mode 100644 index 00000000000..afe2a0cb710 --- /dev/null +++ b/reactos/w32api/include/commdlg.h @@ -0,0 +1,583 @@ +#ifndef _COMMDLG_H +#define _COMMDLG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#pragma pack(push,1) + +#define LBSELCHSTRINGA "commdlg_LBSelChangedNotify" +#define SHAREVISTRINGA "commdlg_ShareViolation" +#define FILEOKSTRINGA "commdlg_FileNameOK" +#define COLOROKSTRINGA "commdlg_ColorOK" +#define SETRGBSTRINGA "commdlg_SetRGBColor" +#define HELPMSGSTRINGA "commdlg_help" +#define FINDMSGSTRINGA "commdlg_FindReplace" +#define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify" +#define SHAREVISTRINGW L"commdlg_ShareViolation" +#define FILEOKSTRINGW L"commdlg_FileNameOK" +#define COLOROKSTRINGW L"commdlg_ColorOK" +#define SETRGBSTRINGW L"commdlg_SetRGBColor" +#define HELPMSGSTRINGW L"commdlg_help" +#define FINDMSGSTRINGW L"commdlg_FindReplace" +#ifndef CDN_FIRST +#define CDN_FIRST ((UINT)-601) /* also in commctrl.h */ +#define CDN_LAST ((UINT)-699) +#endif +#define CDN_INITDONE CDN_FIRST +#define CDN_SELCHANGE (CDN_FIRST-1U) +#define CDN_FOLDERCHANGE (CDN_FIRST-2U) +#define CDN_SHAREVIOLATION (CDN_FIRST-3U) +#define CDN_HELP (CDN_FIRST-4U) +#define CDN_FILEOK (CDN_FIRST-5U) +#define CDN_TYPECHANGE (CDN_FIRST-6U) +#define CDM_FIRST (WM_USER+100) +#define CDM_LAST (WM_USER+200) +#define CDM_GETSPEC CDM_FIRST +#define CDM_GETFILEPATH (CDM_FIRST+1) +#define CDM_GETFOLDERPATH (CDM_FIRST+2) +#define CDM_GETFOLDERIDLIST (CDM_FIRST+3) +#define CDM_SETCONTROLTEXT (CDM_FIRST+4) +#define CDM_HIDECONTROL (CDM_FIRST+5) +#define CDM_SETDEFEXT (CDM_FIRST+6) +#define CC_RGBINIT 1 +#define CC_FULLOPEN 2 +#define CC_PREVENTFULLOPEN 4 +#define CC_SHOWHELP 8 +#define CC_ENABLEHOOK 16 +#define CC_ENABLETEMPLATE 32 +#define CC_ENABLETEMPLATEHANDLE 64 +#define CC_SOLIDCOLOR 128 +#define CC_ANYCOLOR 256 +#define CF_SCREENFONTS 1 +#define CF_PRINTERFONTS 2 +#define CF_BOTH 3 +#define CF_SHOWHELP 4 +#define CF_ENABLEHOOK 8 +#define CF_ENABLETEMPLATE 16 +#define CF_ENABLETEMPLATEHANDLE 32 +#define CF_INITTOLOGFONTSTRUCT 64 +#define CF_USESTYLE 128 +#define CF_EFFECTS 256 +#define CF_APPLY 512 +#define CF_ANSIONLY 1024 +#define CF_SCRIPTSONLY CF_ANSIONLY +#define CF_NOVECTORFONTS 2048 +#define CF_NOOEMFONTS 2048 +#define CF_NOSIMULATIONS 4096 +#define CF_LIMITSIZE 8192 +#define CF_FIXEDPITCHONLY 16384 +#define CF_WYSIWYG 32768 +#define CF_FORCEFONTEXIST 65536 +#define CF_SCALABLEONLY 131072 +#define CF_TTONLY 262144 +#define CF_NOFACESEL 524288 +#define CF_NOSTYLESEL 1048576 +#define CF_NOSIZESEL 2097152 +#define CF_SELECTSCRIPT 4194304 +#define CF_NOSCRIPTSEL 8388608 +#define CF_NOVERTFONTS 0x1000000 +#define SIMULATED_FONTTYPE 0x8000 +#define PRINTER_FONTTYPE 0x4000 +#define SCREEN_FONTTYPE 0x2000 +#define BOLD_FONTTYPE 0x100 +#define ITALIC_FONTTYPE 0x0200 +#define REGULAR_FONTTYPE 0x0400 +#define WM_CHOOSEFONT_GETLOGFONT (WM_USER+1) +#define WM_CHOOSEFONT_SETLOGFONT (WM_USER+101) +#define WM_CHOOSEFONT_SETFLAGS (WM_USER+102) +#define OFN_ALLOWMULTISELECT 512 +#define OFN_CREATEPROMPT 0x2000 +#define OFN_ENABLEHOOK 32 +#define OFN_ENABLESIZING 0x800000 +#define OFN_ENABLETEMPLATE 64 +#define OFN_ENABLETEMPLATEHANDLE 128 +#define OFN_EXPLORER 0x80000 +#define OFN_EXTENSIONDIFFERENT 0x400 +#define OFN_FILEMUSTEXIST 0x1000 +#define OFN_HIDEREADONLY 4 +#define OFN_LONGNAMES 0x200000 +#define OFN_NOCHANGEDIR 8 +#define OFN_NODEREFERENCELINKS 0x100000 +#define OFN_NOLONGNAMES 0x40000 +#define OFN_NONETWORKBUTTON 0x20000 +#define OFN_NOREADONLYRETURN 0x8000 +#define OFN_NOTESTFILECREATE 0x10000 +#define OFN_NOVALIDATE 256 +#define OFN_OVERWRITEPROMPT 2 +#define OFN_PATHMUSTEXIST 0x800 +#define OFN_READONLY 1 +#define OFN_SHAREAWARE 0x4000 +#define OFN_SHOWHELP 16 +#define OFN_SHAREFALLTHROUGH 2 +#define OFN_SHARENOWARN 1 +#define OFN_SHAREWARN 0 +#define OFN_NODEREFERENCELINKS 0x100000 +#define FR_DIALOGTERM 64 +#define FR_DOWN 1 +#define FR_ENABLEHOOK 256 +#define FR_ENABLETEMPLATE 512 +#define FR_ENABLETEMPLATEHANDLE 0x2000 +#define FR_FINDNEXT 8 +#define FR_HIDEUPDOWN 0x4000 +#define FR_HIDEMATCHCASE 0x8000 +#define FR_HIDEWHOLEWORD 0x10000 +#define FR_MATCHALEFHAMZA 0x80000000 +#define FR_MATCHCASE 4 +#define FR_MATCHDIAC 0x20000000 +#define FR_MATCHKASHIDA 0x40000000 +#define FR_NOMATCHCASE 0x800 +#define FR_NOUPDOWN 0x400 +#define FR_NOWHOLEWORD 4096 +#define FR_REPLACE 16 +#define FR_REPLACEALL 32 +#define FR_SHOWHELP 128 +#define FR_WHOLEWORD 2 +#define PD_ALLPAGES 0 +#define PD_SELECTION 1 +#define PD_PAGENUMS 2 +#define PD_NOSELECTION 4 +#define PD_NOPAGENUMS 8 +#define PD_COLLATE 16 +#define PD_PRINTTOFILE 32 +#define PD_PRINTSETUP 64 +#define PD_NOWARNING 128 +#define PD_RETURNDC 256 +#define PD_RETURNIC 512 +#define PD_RETURNDEFAULT 1024 +#define PD_SHOWHELP 2048 +#define PD_ENABLEPRINTHOOK 4096 +#define PD_ENABLESETUPHOOK 8192 +#define PD_ENABLEPRINTTEMPLATE 16384 +#define PD_ENABLESETUPTEMPLATE 32768 +#define PD_ENABLEPRINTTEMPLATEHANDLE 65536 +#define PD_ENABLESETUPTEMPLATEHANDLE 0x20000 +#define PD_USEDEVMODECOPIES 0x40000 +#define PD_USEDEVMODECOPIESANDCOLLATE 0x40000 +#define PD_DISABLEPRINTTOFILE 0x80000 +#define PD_HIDEPRINTTOFILE 0x100000 +#define PD_NONETWORKBUTTON 0x200000 +#define PSD_DEFAULTMINMARGINS 0 +#define PSD_INWININIINTLMEASURE 0 +#define PSD_MINMARGINS 1 +#define PSD_MARGINS 2 +#define PSD_INTHOUSANDTHSOFINCHES 4 +#define PSD_INHUNDREDTHSOFMILLIMETERS 8 +#define PSD_DISABLEMARGINS 16 +#define PSD_DISABLEPRINTER 32 +#define PSD_NOWARNING 128 +#define PSD_DISABLEORIENTATION 256 +#define PSD_DISABLEPAPER 512 +#define PSD_RETURNDEFAULT 1024 +#define PSD_SHOWHELP 2048 +#define PSD_ENABLEPAGESETUPHOOK 8192 +#define PSD_ENABLEPAGESETUPTEMPLATE 0x8000 +#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x20000 +#define PSD_ENABLEPAGEPAINTHOOK 0x40000 +#define PSD_DISABLEPAGEPAINTING 0x80000 +#define WM_PSD_PAGESETUPDLG WM_USER +#define WM_PSD_FULLPAGERECT (WM_USER+1) +#define WM_PSD_MINMARGINRECT (WM_USER+2) +#define WM_PSD_MARGINRECT (WM_USER+3) +#define WM_PSD_GREEKTEXTRECT (WM_USER+4) +#define WM_PSD_ENVSTAMPRECT (WM_USER+5) +#define WM_PSD_YAFULLPAGERECT (WM_USER+6) +#define CD_LBSELNOITEMS (-1) +#define CD_LBSELCHANGE 0 +#define CD_LBSELSUB 1 +#define CD_LBSELADD 2 +#define DN_DEFAULTPRN 1 + +#ifndef SNDMSG +#ifdef __cplusplus +#define SNDMSG ::SendMessage +#else +#define SNDMSG SendMessage +#endif +#endif /* ifndef SNDMSG */ + +#define CommDlg_OpenSave_GetSpec(d,s,m) ((int)SNDMSG((d),CDM_GETSPEC,(m),(LPARAM)(s))) +#define CommDlg_OpenSave_GetSpecA CommDlg_OpenSave_GetSpec +#define CommDlg_OpenSave_GetSpecW CommDlg_OpenSave_GetSpec +#define CommDlg_OpenSave_GetFilePath(d,s,m) ((int)SNDMSG((d),CDM_GETFILEPATH,(m),(LPARAM)(s))) +#define CommDlg_OpenSave_GetFilePathA CommDlg_OpenSave_GetFilePath +#define CommDlg_OpenSave_GetFilePathW CommDlg_OpenSave_GetFilePath +#define CommDlg_OpenSave_GetFolderPath(d,s,m) ((int)SNDMSG((d),CDM_GETFOLDERPATH,(m),(LPARAM)(LPSTR)(s))) +#define CommDlg_OpenSave_GetFolderPathA CommDlg_OpenSave_GetFolderPath +#define CommDlg_OpenSave_GetFolderPathW CommDlg_OpenSave_GetFolderPath +#define CommDlg_OpenSave_GetFolderIDList(d,i,m) ((int)SNDMSG((d),CDM_GETFOLDERIDLIST,(m),(LPARAM)(i))) +#define CommDlg_OpenSave_SetControlText(d,i,t) ((void)SNDMSG((d),CDM_SETCONTROLTEXT,(i),(LPARAM)(t))) +#define CommDlg_OpenSave_HideControl(d,i) ((void)SNDMSG((d),CDM_HIDECONTROL,(i),0)) +#define CommDlg_OpenSave_SetDefExt(d,e) ((void)SNDMSG((d),CDM_SETDEFEXT,0,(LPARAM)(e))) + +typedef UINT (APIENTRY *__CDHOOKPROC)(HWND,UINT,WPARAM,LPARAM); +typedef __CDHOOKPROC LPCCHOOKPROC; +typedef __CDHOOKPROC LPCFHOOKPROC; +typedef __CDHOOKPROC LPFRHOOKPROC; +typedef __CDHOOKPROC LPOFNHOOKPROC; +typedef __CDHOOKPROC LPPAGEPAINTHOOK; +typedef __CDHOOKPROC LPPAGESETUPHOOK; +typedef __CDHOOKPROC LPSETUPHOOKPROC; +typedef __CDHOOKPROC LPPRINTHOOKPROC; +typedef struct tagCHOOSECOLORA { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} CHOOSECOLORA,*LPCHOOSECOLORA; +typedef struct tagCHOOSECOLORW { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} CHOOSECOLORW,*LPCHOOSECOLORW; +typedef struct tagCHOOSEFONTA { + DWORD lStructSize; + 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; +} CHOOSEFONTA,*LPCHOOSEFONTA; +typedef struct tagCHOOSEFONTW { + DWORD lStructSize; + 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; +} CHOOSEFONTW,*LPCHOOSEFONTW; +typedef struct tagDEVNAMES { + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; +} DEVNAMES,*LPDEVNAMES; +typedef struct { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} FINDREPLACEA,*LPFINDREPLACEA; +typedef struct { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} FINDREPLACEW,*LPFINDREPLACEW; +typedef struct tagOFNA { + 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; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} OPENFILENAMEA,*LPOPENFILENAMEA; +typedef struct tagOFNW { + 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; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} OPENFILENAMEW,*LPOPENFILENAMEW; +typedef struct _OFNOTIFYA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; +} OFNOTIFYA,*LPOFNOTIFYA; +typedef struct _OFNOTIFYW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; +} OFNOTIFYW,*LPOFNOTIFYW; +typedef struct tagPSDA { + DWORD lStructSize; + 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; +} PAGESETUPDLGA,*LPPAGESETUPDLGA; +typedef struct tagPSDW { + DWORD lStructSize; + 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; +} PAGESETUPDLGW,*LPPAGESETUPDLGW; +typedef struct tagPDA { + DWORD lStructSize; + 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; +} PRINTDLGA,*LPPRINTDLGA; +typedef struct tagPDW { + DWORD lStructSize; + 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; +} PRINTDLGW,*LPPRINTDLGW; +#if (WINVER >= 0x0500) && !defined (__OBJC__) +#include /* for LPUNKNOWN */ +#include /* for HPROPSHEETPAGE */ +typedef struct tagPRINTPAGERANGE { + DWORD nFromPage; + DWORD nToPage; +} PRINTPAGERANGE, *LPPRINTPAGERANGE; +typedef struct tagPDEXA { + DWORD lStructSize; + 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; +} PRINTDLGEXA, *LPPRINTDLGEXA; +typedef struct tagPDEXW { + DWORD lStructSize; + 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; +} PRINTDLGEXW, *LPPRINTDLGEXW; +#endif /* WINVER >= 0x0500 */ + +BOOL WINAPI ChooseColorA(LPCHOOSECOLORA); +BOOL WINAPI ChooseColorW(LPCHOOSECOLORW); +BOOL WINAPI ChooseFontA(LPCHOOSEFONTA); +BOOL WINAPI ChooseFontW(LPCHOOSEFONTW); +DWORD WINAPI CommDlgExtendedError(void); +HWND WINAPI FindTextA(LPFINDREPLACEA); +HWND WINAPI FindTextW(LPFINDREPLACEW); +short WINAPI GetFileTitleA(LPCSTR,LPSTR,WORD); +short WINAPI GetFileTitleW(LPCWSTR,LPWSTR,WORD); +BOOL WINAPI GetOpenFileNameA(LPOPENFILENAMEA); +BOOL WINAPI GetOpenFileNameW(LPOPENFILENAMEW); +BOOL WINAPI GetSaveFileNameA(LPOPENFILENAMEA); +BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW); +BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA); +BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW); +BOOL WINAPI PrintDlgA(LPPRINTDLGA); +BOOL WINAPI PrintDlgW(LPPRINTDLGW); +HWND WINAPI ReplaceTextA(LPFINDREPLACEA); +HWND WINAPI ReplaceTextW(LPFINDREPLACEW); +#if (WINVER >= 0x0500) && !defined (__OBJC__) +HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA); +HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW); +#endif /* WINVER >= 0x0500 */ + +#ifdef UNICODE +#define LBSELCHSTRING LBSELCHSTRINGW +#define SHAREVISTRING SHAREVISTRINGW +#define FILEOKSTRING FILEOKSTRINGW +#define COLOROKSTRING COLOROKSTRINGW +#define SETRGBSTRING SETRGBSTRINGW +#define HELPMSGSTRING HELPMSGSTRINGW +#define FINDMSGSTRING FINDMSGSTRINGW +typedef CHOOSECOLORW CHOOSECOLOR,*LPCHOOSECOLOR; +typedef CHOOSEFONTW CHOOSEFONT,*LPCHOOSEFONT; +typedef FINDREPLACEW FINDREPLACE,*LPFINDREPLACE; +typedef OPENFILENAMEW OPENFILENAME,*LPOPENFILENAME; +typedef OFNOTIFYW OFNOTIFY,*LPOFNOTIFY; +typedef PAGESETUPDLGW PAGESETUPDLG,*LPPAGESETUPDLG; +typedef PRINTDLGW PRINTDLG,*LPPRINTDLG; +#define ChooseColor ChooseColorW +#define ChooseFont ChooseFontW +#define FindText FindTextW +#define GetFileTitle GetFileTitleW +#define GetOpenFileName GetOpenFileNameW +#define GetSaveFileName GetSaveFileNameW +#define PageSetupDlg PageSetupDlgW +#define PrintDlg PrintDlgW +#define ReplaceText ReplaceTextW +#if (WINVER >= 0x0500) && !defined (__OBJC__) +typedef PRINTDLGEXW PRINTDLGEX, *LPPRINTDLGEX; +#define PrintDlgEx PrintDlgExW +#endif /* WINVER >= 0x0500 */ +#else /* UNICODE */ +#define LBSELCHSTRING LBSELCHSTRINGA +#define SHAREVISTRING SHAREVISTRINGA +#define FILEOKSTRING FILEOKSTRINGA +#define COLOROKSTRING COLOROKSTRINGA +#define SETRGBSTRING SETRGBSTRINGA +#define HELPMSGSTRING HELPMSGSTRINGA +#define FINDMSGSTRING FINDMSGSTRINGA +typedef CHOOSECOLORA CHOOSECOLOR,*LPCHOOSECOLOR; +typedef CHOOSEFONTA CHOOSEFONT,*LPCHOOSEFONT; +typedef FINDREPLACEA FINDREPLACE,*LPFINDREPLACE; +typedef OPENFILENAMEA OPENFILENAME,*LPOPENFILENAME; +typedef OFNOTIFYA OFNOTIFY,*LPOFNOTIFY; +typedef PAGESETUPDLGA PAGESETUPDLG,*LPPAGESETUPDLG; +typedef PRINTDLGA PRINTDLG,*LPPRINTDLG; +#define ChooseColor ChooseColorA +#define ChooseFont ChooseFontA +#define FindText FindTextA +#define GetFileTitle GetFileTitleA +#define GetOpenFileName GetOpenFileNameA +#define GetSaveFileName GetSaveFileNameA +#define PageSetupDlg PageSetupDlgA +#define PrintDlg PrintDlgA +#define ReplaceText ReplaceTextA +#if (WINVER >= 0x0500) && !defined (__OBJC__) +typedef PRINTDLGEXA PRINTDLGEX, *LPPRINTDLGEX; +#define PrintDlgEx PrintDlgExA +#endif /* WINVER >= 0x0500 */ +#endif /* UNICODE */ +#pragma pack(pop) +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/cpl.h b/reactos/w32api/include/cpl.h new file mode 100644 index 00000000000..aaec59734e4 --- /dev/null +++ b/reactos/w32api/include/cpl.h @@ -0,0 +1,61 @@ +#ifndef _CPL_H +#define _CPL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define WM_CPL_LAUNCH (WM_USER+1000) +#define WM_CPL_LAUNCHED (WM_USER+1001) +#define CPL_DYNAMIC_RES 0 +#define CPL_INIT 1 +#define CPL_GETCOUNT 2 +#define CPL_INQUIRE 3 +#define CPL_SELECT 4 +#define CPL_DBLCLK 5 +#define CPL_STOP 6 +#define CPL_EXIT 7 +#define CPL_NEWINQUIRE 8 +#define CPL_STARTWPARMSA 9 +#define CPL_STARTWPARMSW 10 +#define CPL_SETUP 200 +typedef LONG(APIENTRY *APPLET_PROC)(HWND,UINT,LONG,LONG); +typedef struct tagCPLINFO { + int idIcon; + int idName; + int idInfo; + LONG lData; +} CPLINFO,*LPCPLINFO; +typedef struct tagNEWCPLINFOA { + DWORD dwSize; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + CHAR szName[32]; + CHAR szInfo[64]; + CHAR szHelpFile[128]; +} NEWCPLINFOA,*LPNEWCPLINFOA; +typedef struct tagNEWCPLINFOW { + DWORD dwSize; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + WCHAR szName[32]; + WCHAR szInfo[64]; + WCHAR szHelpFile[128]; +} NEWCPLINFOW,*LPNEWCPLINFOW; +#ifdef UNICODE +#define CPL_STARTWPARMS CPL_STARTWPARMSW +typedef NEWCPLINFOW NEWCPLINFO,*LPNEWCPLINFO; +#else +#define CPL_STARTWPARMS CPL_STARTWPARMSA +typedef NEWCPLINFOA NEWCPLINFO,*LPNEWCPLINFO; +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/cplext.h b/reactos/w32api/include/cplext.h new file mode 100644 index 00000000000..34333b5664b --- /dev/null +++ b/reactos/w32api/include/cplext.h @@ -0,0 +1,12 @@ +#ifndef _CPLEXT_H +#define _CPLEXT_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#define CPLPAGE_MOUSE_BUTTONS 1 +#define CPLPAGE_MOUSE_PTRMOTION 2 +#define CPLPAGE_MOUSE_WHEEL 3 +#define CPLPAGE_KEYBOARD_SPEED 1 +#define CPLPAGE_DISPLAY_BACKGROUND 1 +#endif diff --git a/reactos/w32api/include/custcntl.h b/reactos/w32api/include/custcntl.h new file mode 100644 index 00000000000..8a9d5ff32b4 --- /dev/null +++ b/reactos/w32api/include/custcntl.h @@ -0,0 +1,102 @@ +#ifndef _CUSTCNTL_H +#define _CUSTCNTL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define CCF_NOTEXT 1 +#define CCHCCCLASS 32 +#define CCHCCDESC 32 +#define CCHCCTEXT 256 + +typedef struct tagCCSTYLEA { + DWORD flStyle; + DWORD flExtStyle; + CHAR szText[CCHCCTEXT]; + LANGID lgid; + WORD wReserved1; +} CCSTYLEA,*LPCCSTYLEA; +typedef struct tagCCSTYLEW { + DWORD flStyle; + DWORD flExtStyle; + WCHAR szText[CCHCCTEXT]; + LANGID lgid; + WORD wReserved1; +} CCSTYLEW,*LPCCSTYLEW; +typedef struct tagCCSTYLEFLAGA { + DWORD flStyle; + DWORD flStyleMask; + LPSTR pszStyle; +} CCSTYLEFLAGA,*LPCCSTYLEFLAGA; +typedef struct tagCCSTYLEFLAGW { + DWORD flStyle; + DWORD flStyleMask; + LPWSTR pszStyle; +} CCSTYLEFLAGW,*LPCCSTYLEFLAGW; +typedef BOOL(CALLBACK* LPFNCCSTYLEA)(HWND,LPCCSTYLEA); +typedef INT(CALLBACK* LPFNCCSIZETOTEXTA)(DWORD,DWORD,HFONT,LPSTR); +typedef struct tagCCINFOA { + CHAR szClass[CCHCCCLASS]; + DWORD flOptions; + CHAR szDesc[CCHCCDESC]; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + CHAR szTextDefault[CCHCCTEXT]; + INT cStyleFlags; + LPCCSTYLEFLAGA aStyleFlags; + LPFNCCSTYLEA lpfnStyle; + LPFNCCSIZETOTEXTA lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} CCINFOA,*LPCCINFOA; +typedef UINT(CALLBACK* LPFNCCINFOA)(LPCCINFOA); +typedef BOOL(CALLBACK* LPFNCCSTYLEW)(HWND,LPCCSTYLEW); +typedef INT (CALLBACK* LPFNCCSIZETOTEXTW)(DWORD,DWORD,HFONT,LPWSTR); +typedef struct tagCCINFOW { + WCHAR szClass[CCHCCCLASS]; + DWORD flOptions; + WCHAR szDesc[CCHCCDESC]; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + WCHAR szTextDefault[CCHCCTEXT]; + INT cStyleFlags; + LPCCSTYLEFLAGW aStyleFlags; + LPFNCCSTYLEW lpfnStyle; + LPFNCCSIZETOTEXTW lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} CCINFOW,*LPCCINFOW; +typedef UINT(CALLBACK* LPFNCCINFOW)(LPCCINFOW); + +UINT CALLBACK CustomControlInfoA(LPCCINFOA acci); +UINT CALLBACK CustomControlInfoW(LPCCINFOW acci); + +#ifdef UNICODE +typedef CCSTYLEW CCSTYLE,*LPCCSTYLE; +typedef CCSTYLEFLAGW CCSTYLEFLAG,*LPCCSTYLEFLAG; +typedef CCINFOW CCINFO,*LPCCINFO; +#define LPFNCCSTYLE LPFNCCSTYLEW +#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTW +#define LPFNCCINFO LPFNCCINFOW +#else +typedef CCSTYLEA CCSTYLE,*LPCCSTYLE; +typedef CCSTYLEFLAGA CCSTYLEFLAG,*LPCCSTYLEFLAG; +typedef CCINFOA CCINFO,*LPCCINFO; +#define LPFNCCSTYLE LPFNCCSTYLEA +#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTA +#define LPFNCCINFO LPFNCCINFOA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/dbt.h b/reactos/w32api/include/dbt.h new file mode 100644 index 00000000000..e804756a203 --- /dev/null +++ b/reactos/w32api/include/dbt.h @@ -0,0 +1,114 @@ +#ifndef _DBT_H +#define _DBT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define DBT_NO_DISK_SPACE 0x47 +#define DBT_CONFIGMGPRIVATE 0x7FFF +#define DBT_DEVICEARRIVAL 0x8000 +#define DBT_DEVICEQUERYREMOVE 0x8001 +#define DBT_DEVICEQUERYREMOVEFAILED 0x8002 +#define DBT_DEVICEREMOVEPENDING 0x8003 +#define DBT_DEVICEREMOVECOMPLETE 0x8004 +#define DBT_DEVICETYPESPECIFIC 0x8005 +#define DBT_DEVTYP_OEM 0 +#define DBT_DEVTYP_DEVNODE 1 +#define DBT_DEVTYP_VOLUME 2 +#define DBT_DEVTYP_PORT 3 +#define DBT_DEVTYP_NET 4 +#define DBT_APPYBEGIN 0 +#define DBT_APPYEND 1 +#define DBT_DEVNODES_CHANGED 7 +#define DBT_QUERYCHANGECONFIG 0x17 +#define DBT_CONFIGCHANGED 0x18 +#define DBT_CONFIGCHANGECANCELED 0x19 +#define DBT_MONITORCHANGE 0x1B +#define DBT_SHELLLOGGEDON 32 +#define DBT_CONFIGMGAPI32 34 +#define DBT_VXDINITCOMPLETE 35 +#define DBT_VOLLOCKQUERYLOCK 0x8041 +#define DBT_VOLLOCKLOCKTAKEN 0x8042 +#define DBT_VOLLOCKLOCKFAILED 0x8043 +#define DBT_VOLLOCKQUERYUNLOCK 0x8044 +#define DBT_VOLLOCKLOCKRELEASED 0x8045 +#define DBT_VOLLOCKUNLOCKFAILED 0x8046 +#define DBT_USERDEFINED 0xFFFF +#define DBTF_MEDIA 1 +#define DBTF_NET 2 + +/* Also defined in winuser.h */ +#define BSM_ALLCOMPONENTS 0 +#define BSM_APPLICATIONS 8 +#define BSM_ALLDESKTOPS 16 +#define BSM_INSTALLABLEDRIVERS 4 +#define BSM_NETDRIVER 2 +#define BSM_VXDS 1 +#define BSF_FLUSHDISK 0x00000004 +#define BSF_FORCEIFHUNG 0x00000020 +#define BSF_IGNORECURRENTTASK 0x00000002 +#define BSF_NOHANG 0x00000008 +#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040 +#define BSF_POSTMESSAGE 0x00000010 +#define BSF_QUERY 0x00000001 +#if (_WIN32_WINNT >= 0x0500) +#define BSF_ALLOWSFW 0x00000080 +#define BSF_SENDNOTIFYMESSAGE 0x00000100 +#endif /* (_WIN32_WINNT >= 0x0500) */ +#if (_WIN32_WINNT >= 0x0501) +#define BSF_LUID 0x00000400 +#define BSF_RETURNHDESK 0x00000200 +#endif /* (_WIN32_WINNT >= 0x0501) */ + +#define BSF_MSGSRV32ISOK_BIT 31 +#define BSF_MSGSRV32ISOK 0x80000000 + +typedef struct _DEV_BROADCAST_HDR { + DWORD dbch_size; + DWORD dbch_devicetype; + DWORD dbch_reserved; +} DEV_BROADCAST_HDR,*PDEV_BROADCAST_HDR; +typedef struct _DEV_BROADCAST_OEM { + DWORD dbco_size; + DWORD dbco_devicetype; + DWORD dbco_reserved; + DWORD dbco_identifier; + DWORD dbco_suppfunc; +} DEV_BROADCAST_OEM,*PDEV_BROADCAST_OEM; +typedef struct _DEV_BROADCAST_PORT_A { + DWORD dbcp_size; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + char dbcp_name[1]; +} DEV_BROADCAST_PORT_A, *PDEV_BROADCAST_PORT_A; +typedef struct _DEV_BROADCAST_PORT_W { + DWORD dbcp_size; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + wchar_t dbcp_name[1]; +} DEV_BROADCAST_PORT_W, *PDEV_BROADCAST_PORT_W; +typedef struct _DEV_BROADCAST_USERDEFINED { + struct _DEV_BROADCAST_HDR dbud_dbh; + char dbud_szName[1]; +} DEV_BROADCAST_USERDEFINED; +typedef struct _DEV_BROADCAST_VOLUME { + DWORD dbcv_size; + DWORD dbcv_devicetype; + DWORD dbcv_reserved; + DWORD dbcv_unitmask; + WORD dbcv_flags; +} DEV_BROADCAST_VOLUME,*PDEV_BROADCAST_VOLUME; + +#ifdef UNICODE +typedef DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT; +#else +typedef DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT; +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/dde.h b/reactos/w32api/include/dde.h new file mode 100644 index 00000000000..b13e9ce3982 --- /dev/null +++ b/reactos/w32api/include/dde.h @@ -0,0 +1,64 @@ +#ifndef _DDE_H +#define _DDE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define WM_DDE_FIRST 0x03E0 +#define WM_DDE_INITIATE (WM_DDE_FIRST) +#define WM_DDE_TERMINATE (WM_DDE_FIRST+1) +#define WM_DDE_ADVISE (WM_DDE_FIRST+2) +#define WM_DDE_UNADVISE (WM_DDE_FIRST+3) +#define WM_DDE_ACK (WM_DDE_FIRST+4) +#define WM_DDE_DATA (WM_DDE_FIRST+5) +#define WM_DDE_REQUEST (WM_DDE_FIRST+6) +#define WM_DDE_POKE (WM_DDE_FIRST+7) +#define WM_DDE_EXECUTE (WM_DDE_FIRST+8) +#define WM_DDE_LAST (WM_DDE_FIRST+8) + +#ifndef RC_INVOKED +typedef struct { + unsigned short bAppReturnCode:8,reserved:6,fBusy:1,fAck:1; +} DDEACK; +typedef struct { + unsigned short reserved:14,fDeferUpd:1,fAckReq:1; + short cfFormat; +} DDEADVISE; +typedef struct { + unsigned short unused:12,fResponse:1,fRelease:1,reserved:1,fAckReq:1; + short cfFormat; + BYTE Value[1]; +} DDEDATA; +typedef struct { + unsigned short unused:13,fRelease:1,fReserved:2; + short cfFormat; + BYTE Value[1]; +} DDEPOKE; +typedef struct { + unsigned short unused:13, + fRelease:1, + fDeferUpd:1, + fAckReq:1; + short cfFormat; +} DDELN; + +typedef struct { + unsigned short unused:12,fAck:1,fRelease:1,fReserved:1,fAckReq:1; + short cfFormat; + BYTE rgb[1]; +} DDEUP; +BOOL WINAPI DdeSetQualityOfService(HWND,const SECURITY_QUALITY_OF_SERVICE*,PSECURITY_QUALITY_OF_SERVICE); +BOOL WINAPI ImpersonateDdeClientWindow(HWND,HWND); +LPARAM WINAPI PackDDElParam(UINT,UINT_PTR,UINT_PTR); +BOOL WINAPI UnpackDDElParam(UINT,LPARAM,PUINT_PTR,PUINT_PTR); +BOOL WINAPI FreeDDElParam(UINT,LPARAM); +LPARAM WINAPI ReuseDDElParam(LPARAM,UINT,UINT,UINT_PTR,UINT_PTR); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/ddeml.h b/reactos/w32api/include/ddeml.h new file mode 100644 index 00000000000..6ae3bc12ea2 --- /dev/null +++ b/reactos/w32api/include/ddeml.h @@ -0,0 +1,314 @@ +#ifndef _DDEML_H +#define _DDEML_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define EXPENTRY CALLBACK +#define CP_WINANSI 1004 +#define CP_WINUNICODE 1200 +#define XTYPF_NOBLOCK 2 +#define XTYPF_NODATA 4 +#define XTYPF_ACKREQ 8 +#define XCLASS_MASK 0xFC00 +#define XCLASS_BOOL 0x1000 +#define XCLASS_DATA 0x2000 +#define XCLASS_FLAGS 0x4000 +#define XCLASS_NOTIFICATION 0x8000 +#define XST_NULL 0 +#define XST_INCOMPLETE 1 +#define XST_CONNECTED 2 +#define XST_INIT1 3 +#define XST_INIT2 4 +#define XST_REQSENT 5 +#define XST_DATARCVD 6 +#define XST_POKESENT 7 +#define XST_POKEACKRCVD 8 +#define XST_EXECSENT 9 +#define XST_EXECACKRCVD 10 +#define XST_ADVSENT 11 +#define XST_UNADVSENT 12 +#define XST_ADVACKRCVD 13 +#define XST_UNADVACKRCVD 14 +#define XST_ADVDATASENT 15 +#define XST_ADVDATAACKRCVD 16 +#define XTYP_ERROR (XCLASS_NOTIFICATION|XTYPF_NOBLOCK) +#define XTYP_ADVDATA (16|XCLASS_FLAGS) +#define XTYP_ADVREQ (32|XCLASS_DATA|XTYPF_NOBLOCK) +#define XTYP_ADVSTART (0x30|XCLASS_BOOL) +#define XTYP_ADVSTOP (0x0040|XCLASS_NOTIFICATION) +#define XTYP_EXECUTE (0x0050|XCLASS_FLAGS) +#define XTYP_CONNECT (0x0060|XCLASS_BOOL|XTYPF_NOBLOCK) +#define XTYP_CONNECT_CONFIRM (0x0070|XCLASS_NOTIFICATION|XTYPF_NOBLOCK) +#define XTYP_XACT_COMPLETE (0x0080|XCLASS_NOTIFICATION) +#define XTYP_POKE (0x0090|XCLASS_FLAGS) +#define XTYP_REGISTER (0x00A0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK) +#define XTYP_REQUEST (0x00B0|XCLASS_DATA) +#define XTYP_DISCONNECT (0x00C0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK) +#define XTYP_UNREGISTER (0x00D0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK) +#define XTYP_WILDCONNECT (0x00E0|XCLASS_DATA|XTYPF_NOBLOCK) +#define XTYP_MASK 0xF0 +#define XTYP_SHIFT 4 +#define TIMEOUT_ASYNC 0xFFFFFFFF +#define QID_SYNC 0xFFFFFFFF +#define ST_CONNECTED 1 +#define ST_ADVISE 2 +#define ST_ISLOCAL 4 +#define ST_BLOCKED 8 +#define ST_CLIENT 16 +#define ST_TERMINATED 32 +#define ST_INLIST 64 +#define ST_BLOCKNEXT 128 +#define ST_ISSELF 256 +#define CADV_LATEACK 0xFFFF +#define DMLERR_NO_ERROR 0 +#define DMLERR_FIRST 0x4000 +#define DMLERR_ADVACKTIMEOUT 0x4000 +#define DMLERR_BUSY 0x4001 +#define DMLERR_DATAACKTIMEOUT 0x4002 +#define DMLERR_DLL_NOT_INITIALIZED 0x4003 +#define DMLERR_DLL_USAGE 0x4004 +#define DMLERR_EXECACKTIMEOUT 0x4005 +#define DMLERR_INVALIDPARAMETER 0x4006 +#define DMLERR_LOW_MEMORY 0x4007 +#define DMLERR_MEMORY_ERROR 0x4008 +#define DMLERR_NOTPROCESSED 0x4009 +#define DMLERR_NO_CONV_ESTABLISHED 0x400a +#define DMLERR_POKEACKTIMEOUT 0x400b +#define DMLERR_POSTMSG_FAILED 0x400c +#define DMLERR_REENTRANCY 0x400d +#define DMLERR_SERVER_DIED 0x400e +#define DMLERR_SYS_ERROR 0x400f +#define DMLERR_UNADVACKTIMEOUT 0x4010 +#define DMLERR_UNFOUND_QUEUE_ID 0x4011 +#define DMLERR_LAST 0x4011 +#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 CBF_FAIL_SELFCONNECTIONS 0x1000 +#define CBF_FAIL_CONNECTIONS 0x2000 +#define CBF_FAIL_ADVISES 0x4000 +#define CBF_FAIL_EXECUTES 0x8000 +#define CBF_FAIL_POKES 0x10000 +#define CBF_FAIL_REQUESTS 0x20000 +#define CBF_FAIL_ALLSVRXACTIONS 0x3f000 +#define CBF_SKIP_CONNECT_CONFIRMS 0x40000 +#define CBF_SKIP_REGISTRATIONS 0x80000 +#define CBF_SKIP_UNREGISTRATIONS 0x100000 +#define CBF_SKIP_DISCONNECTS 0x200000 +#define CBF_SKIP_ALLNOTIFICATIONS 0x3c0000 +#define APPCMD_CLIENTONLY 0x10L +#define APPCMD_FILTERINITS 0x20L +#define APPCMD_MASK 0xFF0L +#define APPCLASS_STANDARD 0 +#define APPCLASS_MASK 0xFL +#define EC_ENABLEALL 0 +#define EC_ENABLEONE ST_BLOCKNEXT +#define EC_DISABLE ST_BLOCKED +#define EC_QUERYWAITING 2 +#define DNS_REGISTER 1 +#define DNS_UNREGISTER 2 +#define DNS_FILTERON 4 +#define DNS_FILTEROFF 8 +#define HDATA_APPOWNED 1 +#define MAX_MONITORS 4 +#define APPCLASS_MONITOR 1L +#define XTYP_MONITOR (XCLASS_NOTIFICATION|XTYPF_NOBLOCK|0xF0) +#define MF_HSZ_INFO 0x1000000 +#define MF_SENDMSGS 0x2000000 +#define MF_POSTMSGS 0x4000000 +#define MF_CALLBACKS 0x8000000 +#define MF_ERRORS 0x10000000 +#define MF_LINKS 0x20000000 +#define MF_CONV 0x40000000 +#define MF_MASK 0xFF000000 +#define MH_CREATE 1 +#define MH_KEEP 2 +#define MH_DELETE 3 +#define MH_CLEANUP 4 + +DECLARE_HANDLE(HCONVLIST); +DECLARE_HANDLE(HCONV); +DECLARE_HANDLE(HSZ); +DECLARE_HANDLE(HDDEDATA); +typedef HDDEDATA CALLBACK FNCALLBACK(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD); +typedef HDDEDATA(CALLBACK *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD); +typedef struct tagHSZPAIR { + HSZ hszSvc; + HSZ hszTopic; +} HSZPAIR, *PHSZPAIR; +typedef struct tagCONVCONTEXT { + UINT cb; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; +} CONVCONTEXT,*PCONVCONTEXT; +typedef struct tagCONVINFO { + DWORD cb; + 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; +} CONVINFO,*PCONVINFO; +typedef struct tagDDEML_MSG_HOOK_DATA { + UINT uiLo; + UINT uiHi; + DWORD cbData; + DWORD Data[8]; +} DDEML_MSG_HOOK_DATA; +typedef struct tagMONHSZSTRUCT { + UINT cb; + BOOL fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + TCHAR str[1]; +} MONHSZSTRUCT, *PMONHSZSTRUCT; +typedef struct tagMONLINKSTRUCT { + UINT cb; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; +} MONLINKSTRUCT, *PMONLINKSTRUCT; +typedef struct tagMONCONVSTRUCT { + UINT cb; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; +} MONCONVSTRUCT, *PMONCONVSTRUCT; +typedef struct tagMONCBSTRUCT { + UINT cb; + 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 Data[8]; +} MONCBSTRUCT, *PMONCBSTRUCT; +typedef struct tagMONERRSTRUCT { + UINT cb; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; +} MONERRSTRUCT, *PMONERRSTRUCT; +typedef struct tagMONMSGSTRUCT { + UINT cb; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; +} MONMSGSTRUCT, *PMONMSGSTRUCT; + +BOOL WINAPI DdeAbandonTransaction(DWORD,HCONV,DWORD); +PBYTE WINAPI DdeAccessData(HDDEDATA,PDWORD); +HDDEDATA WINAPI DdeAddData(HDDEDATA,PBYTE,DWORD,DWORD); +HDDEDATA WINAPI DdeClientTransaction(PBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,PDWORD); +int WINAPI DdeCmpStringHandles(HSZ,HSZ); +HCONV WINAPI DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT); +HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT); +HDDEDATA WINAPI DdeCreateDataHandle(DWORD,PBYTE,DWORD,DWORD,HSZ,UINT,UINT); +HSZ WINAPI DdeCreateStringHandleA(DWORD,LPSTR,int); +HSZ WINAPI DdeCreateStringHandleW(DWORD,LPWSTR,int); +BOOL WINAPI DdeDisconnect(HCONV); +BOOL WINAPI DdeDisconnectList(HCONVLIST); +BOOL WINAPI DdeEnableCallback(DWORD,HCONV,UINT); +BOOL WINAPI DdeFreeDataHandle(HDDEDATA); +BOOL WINAPI DdeFreeStringHandle(DWORD,HSZ); +DWORD WINAPI DdeGetData(HDDEDATA,PBYTE,DWORD,DWORD); +UINT WINAPI DdeGetLastError(DWORD); +BOOL WINAPI DdeImpersonateClient(HCONV); +UINT WINAPI DdeInitializeA(PDWORD,PFNCALLBACK,DWORD,DWORD); +UINT WINAPI DdeInitializeW(PDWORD,PFNCALLBACK,DWORD,DWORD); +BOOL WINAPI DdeKeepStringHandle(DWORD,HSZ); +HDDEDATA WINAPI DdeNameService(DWORD,HSZ,HSZ,UINT); +BOOL WINAPI DdePostAdvise(DWORD,HSZ,HSZ); +UINT WINAPI DdeQueryConvInfo(HCONV,DWORD,PCONVINFO); +HCONV WINAPI DdeQueryNextServer(HCONVLIST,HCONV); +DWORD WINAPI DdeQueryStringA(DWORD,HSZ,LPSTR,DWORD,int); +DWORD WINAPI DdeQueryStringW(DWORD,HSZ,LPWSTR,DWORD,int); +HCONV WINAPI DdeReconnect(HCONV); +BOOL WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD); +BOOL WINAPI DdeUnaccessData(HDDEDATA); +BOOL WINAPI DdeUninitialize(DWORD); + +#ifdef UNICODE +#define SZDDESYS_TOPIC L"System" +#define SZDDESYS_ITEM_TOPICS L"Topics" +#define SZDDESYS_ITEM_SYSITEMS L"SysItems" +#define SZDDESYS_ITEM_RTNMSG L"ReturnMessage" +#define SZDDESYS_ITEM_STATUS L"Status" +#define SZDDESYS_ITEM_FORMATS L"Formats" +#define SZDDESYS_ITEM_HELP L"Help" +#define SZDDE_ITEM_ITEMLIST L"TopicItemList" +#define DdeCreateStringHandle DdeCreateStringHandleW +#define DdeInitialize DdeInitializeW +#define DdeQueryString DdeQueryStringW +#else +#define SZDDESYS_TOPIC "System" +#define SZDDESYS_ITEM_TOPICS "Topics" +#define SZDDESYS_ITEM_SYSITEMS "SysItems" +#define SZDDESYS_ITEM_RTNMSG "ReturnMessage" +#define SZDDESYS_ITEM_STATUS "Status" +#define SZDDESYS_ITEM_FORMATS "Formats" +#define SZDDESYS_ITEM_HELP "Help" +#define SZDDE_ITEM_ITEMLIST "TopicItemList" +#define DdeCreateStringHandle DdeCreateStringHandleA +#define DdeInitialize DdeInitializeA +#define DdeQueryString DdeQueryStringA +#endif +#ifdef __cplusplus +} +#endif +#endif /* _DDEML_H */ diff --git a/reactos/w32api/include/ddk/atm.h b/reactos/w32api/include/ddk/atm.h new file mode 100644 index 00000000000..bf95bd98ad5 --- /dev/null +++ b/reactos/w32api/include/ddk/atm.h @@ -0,0 +1,510 @@ +/* + * atm.h + * + * ATM support + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __ATM_H +#define __ATM_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +typedef ULONG ATM_ADDRESSTYPE; + +#define SAP_TYPE_NSAP 1 +#define SAP_TYPE_E164 2 + +#define ATM_MEDIA_SPECIFIC 1 + +#define CALLMGR_SPECIFIC_Q2931 1 + +#define ATM_NSAP 0 +#define ATM_E164 1 + +#define ATM_MAC_ADDRESS_LENGTH 6 +#define ATM_ADDRESS_LENGTH 20 + +typedef ULONG ATM_AAL_TYPE, *PATM_AAL_TYPE; + +#define AAL_TYPE_AAL0 1 +#define AAL_TYPE_AAL1 2 +#define AAL_TYPE_AAL34 4 +#define AAL_TYPE_AAL5 8 + +#define ATM_ADDR_BLANK_CHAR L' ' +#define ATM_ADDR_E164_START_CHAR L'+' +#define ATM_ADDR_PUNCTUATION_CHAR L'.' + +typedef enum { + IE_AALParameters, + IE_TrafficDescriptor, + IE_BroadbandBearerCapability, + IE_BHLI, + IE_BLLI, + IE_CalledPartyNumber, + IE_CalledPartySubaddress, + IE_CallingPartyNumber, + IE_CallingPartySubaddress, + IE_Cause, + IE_QOSClass, + IE_TransitNetworkSelection, + IE_BroadbandSendingComplete, + IE_LIJCallId, + IE_Raw +} Q2931_IE_TYPE; + +typedef struct _Q2931_IE { + Q2931_IE_TYPE IEType; + ULONG IELength; + UCHAR IE[1]; +} Q2931_IE, *PQ2931_IE; + +typedef struct _AAL1_PARAMETERS { + UCHAR Subtype; + UCHAR CBRRate; + USHORT Multiplier; + UCHAR SourceClockRecoveryMethod; + UCHAR ErrorCorrectionMethod; + USHORT StructuredDataTransferBlocksize; + UCHAR PartiallyFilledCellsMethod; +} AAL1_PARAMETERS, *PAAL1_PARAMETERS; + +typedef struct _AAL34_PARAMETERS { + USHORT ForwardMaxCPCSSDUSize; + USHORT BackwardMaxCPCSSDUSize; + USHORT LowestMID; + USHORT HighestMID; + UCHAR SSCSType; +} AAL34_PARAMETERS, *PAAL34_PARAMETERS; + +/* AAL5_PARAMETERS.Mode constants */ +#define AAL5_MODE_MESSAGE 0x01 +#define AAL5_MODE_STREAMING 0x02 + +/* AAL5_PARAMETERS.SSCSType constants */ +#define AAL5_SSCS_NULL 0x00 +#define AAL5_SSCS_SSCOP_ASSURED 0x01 +#define AAL5_SSCS_SSCOP_NON_ASSURED 0x02 +#define AAL5_SSCS_FRAME_RELAY 0x04 + +typedef struct _AAL5_PARAMETERS { + ULONG ForwardMaxCPCSSDUSize; + ULONG BackwardMaxCPCSSDUSize; + UCHAR Mode; + UCHAR SSCSType; +} AAL5_PARAMETERS, *PAAL5_PARAMETERS; + +typedef struct _AALUSER_PARAMETERS { + ULONG UserDefined; +} AALUSER_PARAMETERS, *PAALUSER_PARAMETERS; + +typedef struct _AAL_PARAMETERS_IE { + ATM_AAL_TYPE AALType; + union { + AAL1_PARAMETERS AAL1Parameters; + AAL34_PARAMETERS AAL34Parameters; + AAL5_PARAMETERS AAL5Parameters; + AALUSER_PARAMETERS AALUserParameters; + } AALSpecificParameters; +} AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE; + + +/* FIXME: Should the union be anonymous in C++ too? If so, + can't define named types _ATM_AAL5_INFO and _ATM_AAL0_INFO + within anonymous union for C++. */ +typedef struct _ATM_AAL_OOB_INFO +{ + ATM_AAL_TYPE AalType; +#ifndef __cplusplus + _ANONYMOUS_UNION +#endif + union { + struct _ATM_AAL5_INFO { + BOOLEAN CellLossPriority; + UCHAR UserToUserIndication; + UCHAR CommonPartIndicator; + } ATM_AAL5_INFO; + + struct _ATM_AAL0_INFO { + BOOLEAN CellLossPriority; + UCHAR PayLoadTypeIdentifier; + } ATM_AAL0_INFO; +#ifndef __cplusplus + } DUMMYUNIONNAME; +#else + } u; +#endif +} ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO; + +typedef struct _ATM_ADDRESS { + ATM_ADDRESSTYPE AddressType; + ULONG NumberOfDigits; + UCHAR Address[ATM_ADDRESS_LENGTH]; +} ATM_ADDRESS, *PATM_ADDRESS; + +/* ATM_BHLI_IE.HighLayerInfoType constants */ +#define BHLI_ISO 0x00 +#define BHLI_UserSpecific 0x01 +#define BHLI_HighLayerProfile 0x02 +#define BHLI_VendorSpecificAppId 0x03 + +typedef struct _ATM_BHLI_IE { + ULONG HighLayerInfoType; + ULONG HighLayerInfoLength; + UCHAR HighLayerInfo[8]; +} ATM_BHLI_IE, *PATM_BHLI_IE; + +/* ATM_BLLI_IE.Layer2Protocol constants */ +#define BLLI_L2_ISO_1745 0x01 +#define BLLI_L2_Q921 0x02 +#define BLLI_L2_X25L 0x06 +#define BLLI_L2_X25M 0x07 +#define BLLI_L2_ELAPB 0x08 +#define BLLI_L2_HDLC_ARM 0x09 +#define BLLI_L2_HDLC_NRM 0x0A +#define BLLI_L2_HDLC_ABM 0x0B +#define BLLI_L2_LLC 0x0C +#define BLLI_L2_X75 0x0D +#define BLLI_L2_Q922 0x0E +#define BLLI_L2_USER_SPECIFIED 0x10 +#define BLLI_L2_ISO_7776 0x11 + +/* ATM_BLLI_IE.Layer3Protocol constants */ +#define BLLI_L3_X25 0x06 +#define BLLI_L3_ISO_8208 0x07 +#define BLLI_L3_X223 0x08 +#define BLLI_L3_SIO_8473 0x09 +#define BLLI_L3_T70 0x0A +#define BLLI_L3_ISO_TR9577 0x0B +#define BLLI_L3_USER_SPECIFIED 0x10 + +/* ATM_BLLI_IE.Layer3IPI constants */ +#define BLLI_L3_IPI_SNAP 0x80 +#define BLLI_L3_IPI_IP 0xCC + +typedef struct _ATM_BLLI_IE { + ULONG Layer2Protocol; + UCHAR Layer2Mode; + UCHAR Layer2WindowSize; + ULONG Layer2UserSpecifiedProtocol; + ULONG Layer3Protocol; + UCHAR Layer3Mode; + UCHAR Layer3DefaultPacketSize; + UCHAR Layer3PacketWindowSize; + ULONG Layer3UserSpecifiedProtocol; + ULONG Layer3IPI; + UCHAR SnapId[5]; +} ATM_BLLI_IE, *PATM_BLLI_IE; + +/* ATM_BROADBAND_BEARER_CAPABILITY_IE.BearerClass constants */ +#define BCOB_A 0x00 +#define BCOB_C 0x01 +#define BCOB_X 0x02 + +/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TrafficType constants */ +#define TT_NOIND 0x00 +#define TT_CBR 0x04 +#define TT_VBR 0x08 + +/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TimingRequirements constants */ +#define TR_NOIND 0x00 +#define TR_END_TO_END 0x01 +#define TR_NO_END_TO_END 0x02 + +/* ATM_BROADBAND_BEARER_CAPABILITY_IE.ClippingSusceptability constants */ +#define CLIP_NOT 0x00 +#define CLIP_SUS 0x20 + +/* ATM_BROADBAND_BEARER_CAPABILITY_IE.UserPlaneConnectionConfig constants */ +#define UP_P2P 0x00 +#define UP_P2MP 0x01 + +typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE { + UCHAR BearerClass; + UCHAR TrafficType; + UCHAR TimingRequirements; + UCHAR ClippingSusceptability; + UCHAR UserPlaneConnectionConfig; +} ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE; + +typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE { + UCHAR SendingComplete; +} ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE; + +typedef struct _ATM_CALLING_PARTY_NUMBER_IE { + ATM_ADDRESS Number; + UCHAR PresentationIndication; + UCHAR ScreeningIndicator; +} ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE; + +/* ATM_CAUSE_IE.Location constants */ +#define ATM_CAUSE_LOC_USER 0x00 +#define ATM_CAUSE_LOC_PRIVATE_LOCAL 0x01 +#define ATM_CAUSE_LOC_PUBLIC_LOCAL 0x02 +#define ATM_CAUSE_LOC_TRANSIT_NETWORK 0x03 +#define ATM_CAUSE_LOC_PUBLIC_REMOTE 0x04 +#define ATM_CAUSE_LOC_PRIVATE_REMOTE 0x05 +#define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x07 +#define ATM_CAUSE_LOC_BEYOND_INTERWORKING 0x0A + +/* ATM_CAUSE_IE.Cause constants */ +#define ATM_CAUSE_UNALLOCATED_NUMBER 0x01 +#define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x02 +#define ATM_CAUSE_NO_ROUTE_TO_DESTINATION 0x03 +#define ATM_CAUSE_VPI_VCI_UNACCEPTABLE 0x0A +#define ATM_CAUSE_NORMAL_CALL_CLEARING 0x10 +#define ATM_CAUSE_USER_BUSY 0x11 +#define ATM_CAUSE_NO_USER_RESPONDING 0x12 +#define ATM_CAUSE_CALL_REJECTED 0x15 +#define ATM_CAUSE_NUMBER_CHANGED 0x16 +#define ATM_CAUSE_USER_REJECTS_CLIR 0x17 +#define ATM_CAUSE_DESTINATION_OUT_OF_ORDER 0x1B +#define ATM_CAUSE_INVALID_NUMBER_FORMAT 0x1C +#define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE 0x1E +#define ATM_CAUSE_NORMAL_UNSPECIFIED 0x1F +#define ATM_CAUSE_VPI_VCI_UNAVAILABLE 0x23 +#define ATM_CAUSE_NETWORK_OUT_OF_ORDER 0x26 +#define ATM_CAUSE_TEMPORARY_FAILURE 0x29 +#define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED 0x2B +#define ATM_CAUSE_NO_VPI_VCI_AVAILABLE 0x2D +#define ATM_CAUSE_RESOURCE_UNAVAILABLE 0x2F +#define ATM_CAUSE_QOS_UNAVAILABLE 0x31 +#define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE 0x33 +#define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39 +#define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3A +#define ATM_CAUSE_OPTION_UNAVAILABLE 0x3F +#define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41 +#define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49 +#define ATM_CAUSE_INVALID_CALL_REFERENCE 0x51 +#define ATM_CAUSE_CHANNEL_NONEXISTENT 0x52 +#define ATM_CAUSE_INCOMPATIBLE_DESTINATION 0x58 +#define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE 0x59 +#define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B +#define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5C +#define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x5D +#define ATM_CAUSE_MANDATORY_IE_MISSING 0x60 +#define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61 +#define ATM_CAUSE_UNIMPLEMENTED_IE 0x63 +#define ATM_CAUSE_INVALID_IE_CONTENTS 0x64 +#define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE 0x65 +#define ATM_CAUSE_RECOVERY_ON_TIMEOUT 0x66 +#define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH 0x68 +#define ATM_CAUSE_PROTOCOL_ERROR 0x6F + +/* ATM_CAUSE_IE.Diagnostics constants */ +#define ATM_CAUSE_COND_UNKNOWN 0x00 +#define ATM_CAUSE_COND_PERMANENT 0x01 +#define ATM_CAUSE_COND_TRANSIENT 0x02 +#define ATM_CAUSE_REASON_USER 0x00 +#define ATM_CAUSE_REASON_IE_MISSING 0x04 +#define ATM_CAUSE_REASON_IE_INSUFFICIENT 0x08 +#define ATM_CAUSE_PU_PROVIDER 0x00 +#define ATM_CAUSE_PU_USER 0x08 +#define ATM_CAUSE_NA_NORMAL 0x00 +#define ATM_CAUSE_NA_ABNORMAL 0x04 + +typedef struct _ATM_CAUSE_IE { + UCHAR Location; + UCHAR Cause; + UCHAR DiagnosticsLength; + UCHAR Diagnostics[4]; +} ATM_CAUSE_IE, *PATM_CAUSE_IE; + + +typedef ULONG ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY; + +/* ATM_FLOW_PARAMETERS.ServiceCategory constants */ +#define ATM_SERVICE_CATEGORY_CBR 1 +#define ATM_SERVICE_CATEGORY_VBR 2 +#define ATM_SERVICE_CATEGORY_UBR 4 +#define ATM_SERVICE_CATEGORY_ABR 8 + +/* ATM_FLOW_PARAMETERS.Reserved1 constants */ +#define ATM_FLOW_PARAMS_RSVD1_MPP 0x01 + +typedef struct _ATM_FLOW_PARAMETERS { + ATM_SERVICE_CATEGORY ServiceCategory; + ULONG AverageCellRate; + ULONG PeakCellRate; + ULONG MinimumCellRate; + ULONG InitialCellRate; + ULONG BurstLengthCells; + ULONG MaxSduSize; + ULONG TransientBufferExposure; + ULONG CumulativeRMFixedRTT; + UCHAR RateIncreaseFactor; + UCHAR RateDecreaseFactor; + USHORT ACRDecreaseTimeFactor; + UCHAR MaximumCellsPerForwardRMCell; + UCHAR MaximumForwardRMCellInterval; + UCHAR CutoffDecreaseFactor; + UCHAR Reserved1; + ULONG MissingRMCellCount; + ULONG Reserved2; + ULONG Reserved3; +} ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS; + +typedef struct _ATM_VPIVCI { + ULONG Vpi; + ULONG Vci; +} ATM_VPIVCI, *PATM_VPIVCI; + +typedef struct _ATM_MEDIA_PARAMETERS { + ATM_VPIVCI ConnectionId; + ATM_AAL_TYPE AALType; + ULONG CellDelayVariationCLP0; + ULONG CellDelayVariationCLP1; + ULONG CellLossRatioCLP0; + ULONG CellLossRatioCLP1; + ULONG CellTransferDelayCLP0; + ULONG CellTransferDelayCLP1; + ULONG DefaultCLP; + ATM_FLOW_PARAMETERS Transmit; + ATM_FLOW_PARAMETERS Receive; +} ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS; + +typedef struct _ATM_PVC_SAP { + ATM_BLLI_IE Blli; + ATM_BHLI_IE Bhli; +} ATM_PVC_SAP, *PATM_PVC_SAP; + +/* ATM_QOS_CLASS_IE constants */ +#define QOS_CLASS0 0x00 +#define QOS_CLASS1 0x01 +#define QOS_CLASS2 0x02 +#define QOS_CLASS3 0x03 +#define QOS_CLASS4 0x04 + +typedef struct _ATM_QOS_CLASS_IE { + UCHAR QOSClassForward; + UCHAR QOSClassBackward; +} ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE; + +typedef struct _ATM_RAW_IE { + ULONG RawIELength; + ULONG RawIEType; + UCHAR RawIEValue[1]; +} ATM_RAW_IE, *PATM_RAW_IE; + +typedef struct _ATM_SAP { + ATM_BLLI_IE Blli; + ATM_BHLI_IE Bhli; + ULONG NumberOfAddresses; + UCHAR Addresses[1]; +} ATM_SAP, *PATM_SAP; + +typedef struct _ATM_TRAFFIC_DESCRIPTOR { + ULONG PeakCellRateCLP0; + ULONG PeakCellRateCLP01; + ULONG SustainableCellRateCLP0; + ULONG SustainableCellRateCLP01; + ULONG MaximumBurstSizeCLP0; + ULONG MaximumBurstSizeCLP01; + BOOLEAN BestEffort; + BOOLEAN Tagging; +} ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR; + +typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE { + ATM_TRAFFIC_DESCRIPTOR ForwardTD; + ATM_TRAFFIC_DESCRIPTOR BackwardTD; +} ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE; + +/* ATM_TRANSIT_NETWORK_SELECTION_IE.TypeOfNetworkId constants */ +#define TNS_TYPE_NATIONAL 0x40 + +/* ATM_TRANSIT_NETWORK_SELECTION_IE.NetworkIdPlan constants */ +#define TNS_PLAN_CARRIER_ID_CODE 0x01 + +typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE { + UCHAR TypeOfNetworkId; + UCHAR NetworkIdPlan; + UCHAR NetworkIdLength; + UCHAR NetworkId[1]; +} ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE; + +typedef struct _ATM_LIJ_CALLID_IE { + ULONG Identifier; +} ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE; + +/* Q2931_ADD_PVC.Flags constants */ +#define CO_FLAG_SIGNALING_VC 0x00000001 +#define CO_FLAG_NO_DEST_SAP 0x00000002 + +typedef struct _Q2931_ADD_PVC { + ATM_ADDRESS CalledParty; + ATM_ADDRESS CallingParty; + ATM_VPIVCI ConnectionId; + ATM_AAL_TYPE AALType; + ATM_FLOW_PARAMETERS ForwardFP; + ATM_FLOW_PARAMETERS BackwardFP; + ULONG Flags; + ATM_PVC_SAP LocalSap; + ATM_PVC_SAP DestinationSap; + BOOLEAN LIJIdPresent; + ATM_LIJ_CALLID_IE LIJId; +} Q2931_ADD_PVC, *PQ2931_ADD_PVC; + +typedef struct _Q2931_DELETE_PVC { + ATM_VPIVCI ConnectionId; +} Q2931_DELETE_PVC, *PQ2931_DELETE_PVC; + +typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE; +typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE; +typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE; + +typedef struct _Q2931_CALLMGR_PARAMETERS { + ATM_ADDRESS CalledParty; + ATM_ADDRESS CallingParty; + ULONG InfoElementCount; + UCHAR InfoElements[1]; +} Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS; + +typedef struct _ATM_VC_RATES_SUPPORTED { + ULONG MinCellRate; + ULONG MaxCellRate; +} ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED; + +typedef ULONG ATM_SERVICE_REGISTRY_TYPE; + +/* ATM_SERVICE_ADDRESS_LIST.ServiceRegistryType constants */ +#define ATM_SERVICE_REGISTRY_LECS 1 +#define ATM_SERVICE_REGISTRY_ANS 2 + +typedef struct _ATM_SERVICE_ADDRESS_LIST { + ATM_SERVICE_REGISTRY_TYPE ServiceRegistryType; + ULONG NumberOfAddressesAvailable; + ULONG NumberOfAddressesReturned; + ATM_ADDRESS Address[1]; +} ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __ATM_H */ diff --git a/reactos/w32api/include/ddk/batclass.h b/reactos/w32api/include/ddk/batclass.h new file mode 100644 index 00000000000..1beef49113f --- /dev/null +++ b/reactos/w32api/include/ddk/batclass.h @@ -0,0 +1,302 @@ +/* + * batclass.h + * + * Battery class driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __BATCLASS_H +#define __BATCLASS_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#if defined(_BATTERYCLASS_) + #define BCLASSAPI DECLSPEC_EXPORT +#else + #define BCLASSAPI DECLSPEC_IMPORT +#endif + + +/* Battery device GUIDs */ + +DEFINE_GUID(GUID_DEVICE_BATTERY, + 0x72631e54L, 0x78A4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a); + +DEFINE_GUID(BATTERY_STATUS_WMI_GUID, + 0xfc4670d1, 0xebbf, 0x416e, 0x87, 0xce, 0x37, 0x4a, 0x4e, 0xbc, 0x11, 0x1a); + +DEFINE_GUID(BATTERY_RUNTIME_WMI_GUID, + 0x535a3767, 0x1ac2, 0x49bc, 0xa0, 0x77, 0x3f, 0x7a, 0x02, 0xe4, 0x0a, 0xec); + +DEFINE_GUID(BATTERY_TEMPERATURE_WMI_GUID, + 0x1a52a14d, 0xadce, 0x4a44, 0x9a, 0x3e, 0xc8, 0xd8, 0xf1, 0x5f, 0xf2, 0xc2); + +DEFINE_GUID(BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID, + 0x40b40565, 0x96f7, 0x4435, 0x86, 0x94, 0x97, 0xe0, 0xe4, 0x39, 0x59, 0x05); + +DEFINE_GUID(BATTERY_CYCLE_COUNT_WMI_GUID, + 0xef98db24, 0x0014, 0x4c25, 0xa5, 0x0b, 0xc7, 0x24, 0xae, 0x5c, 0xd3, 0x71); + +DEFINE_GUID(BATTERY_STATIC_DATA_WMI_GUID, + 0x05e1e463, 0xe4e2, 0x4ea9, 0x80, 0xcb, 0x9b, 0xd4, 0xb3, 0xca, 0x06, 0x55); + +DEFINE_GUID(BATTERY_STATUS_CHANGE_WMI_GUID, + 0xcddfa0c3, 0x7c5b, 0x4e43, 0xa0, 0x34, 0x05, 0x9f, 0xa5, 0xb8, 0x43, 0x64); + +DEFINE_GUID(BATTERY_TAG_CHANGE_WMI_GUID, + 0x5e1f6e19, 0x8786, 0x4d23, 0x94, 0xfc, 0x9e, 0x74, 0x6b, 0xd5, 0xd8, 0x88); + + +/* BATTERY_INFORMATION.Capabilities constants */ +#define BATTERY_SET_CHARGE_SUPPORTED 0x00000001 +#define BATTERY_SET_DISCHARGE_SUPPORTED 0x00000002 +#define BATTERY_SET_RESUME_SUPPORTED 0x00000004 +#define BATTERY_IS_SHORT_TERM 0x20000000 +#define BATTERY_CAPACITY_RELATIVE 0x40000000 +#define BATTERY_SYSTEM_BATTERY 0x80000000 + +typedef struct _BATTERY_INFORMATION { + ULONG Capabilities; + UCHAR Technology; + UCHAR Reserved[3]; + UCHAR Chemistry[4]; + ULONG DesignedCapacity; + ULONG FullChargedCapacity; + ULONG DefaultAlert1; + ULONG DefaultAlert2; + ULONG CriticalBias; + ULONG CycleCount; +} BATTERY_INFORMATION, *PBATTERY_INFORMATION; + +typedef struct _BATTERY_MANUFACTURE_DATE { + UCHAR Day; + UCHAR Month; + USHORT Year; +} BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE; + +typedef struct _BATTERY_NOTIFY { + ULONG PowerState; + ULONG LowCapacity; + ULONG HighCapacity; +} BATTERY_NOTIFY, *PBATTERY_NOTIFY; + +/* BATTERY_STATUS.PowerState flags */ +#define BATTERY_POWER_ON_LINE 0x00000001 +#define BATTERY_DISCHARGING 0x00000002 +#define BATTERY_CHARGING 0x00000004 +#define BATTERY_CRITICAL 0x00000008 + +/* BATTERY_STATUS.Voltage constant */ +#define BATTERY_UNKNOWN_VOLTAGE 0xFFFFFFFF + +/* BATTERY_STATUS.Rate constant */ +#define BATTERY_UNKNOWN_RATE 0x80000000 + +typedef struct _BATTERY_STATUS { + ULONG PowerState; + ULONG Capacity; + ULONG Voltage; + LONG Rate; +} BATTERY_STATUS, *PBATTERY_STATUS; + +/* BATTERY_INFORMATION.Capacity constants */ +#define BATTERY_UNKNOWN_CAPACITY 0xFFFFFFFF + +typedef enum _BATTERY_QUERY_INFORMATION_LEVEL { + BatteryInformation = 0, + BatteryGranularityInformation, + BatteryTemperature, + BatteryEstimatedTime, + BatteryDeviceName, + BatteryManufactureDate, + BatteryManufactureName, + BatteryUniqueID, + BatterySerialNumber +} BATTERY_QUERY_INFORMATION_LEVEL; + +/* BatteryEstimatedTime constant */ +#define BATTERY_UNKNOWN_TIME 0x80000000 + +/* NTSTATUS possibly returned by BCLASS_QUERY_STATUS */ +#define BATTERY_TAG_INVALID 0 + +typedef struct _BATTERY_QUERY_INFORMATION { + ULONG BatteryTag; + BATTERY_QUERY_INFORMATION_LEVEL InformationLevel; + LONG AtRate; +} BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_INFORMATION; + +typedef enum _BATTERY_SET_INFORMATION_LEVEL { + BatteryCriticalBias = 0, + BatteryCharge, + BatteryDischarge +} BATTERY_SET_INFORMATION_LEVEL; + +#define MAX_BATTERY_STRING_SIZE 128 + +typedef struct _BATTERY_SET_INFORMATION { + ULONG BatteryTag; + BATTERY_SET_INFORMATION_LEVEL InformationLevel; + UCHAR Buffer[1]; +} BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION; + +typedef struct _BATTERY_WAIT_STATUS { + ULONG BatteryTag; + ULONG Timeout; + ULONG PowerState; + ULONG LowCapacity; + ULONG HighCapacity; +} BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS; + + +#define IOCTL_BATTERY_QUERY_TAG \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x10, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_BATTERY_QUERY_INFORMATION \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x11, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_BATTERY_SET_INFORMATION \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x12, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_BATTERY_QUERY_STATUS \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS) + + +typedef NTSTATUS DDKAPI +(*BCLASS_DISABLE_STATUS_NOTIFY)( + IN PVOID Context); + +typedef NTSTATUS DDKAPI +(*BCLASS_QUERY_INFORMATION)( + IN PVOID Context, + IN ULONG BatteryTag, + IN BATTERY_QUERY_INFORMATION_LEVEL Level, + IN LONG AtRate OPTIONAL, + OUT PVOID Buffer, + IN ULONG BufferLength, + OUT PULONG ReturnedLength); + +typedef NTSTATUS DDKAPI +(*BCLASS_QUERY_STATUS)( + IN PVOID Context, + IN ULONG BatteryTag, + OUT PBATTERY_STATUS BatteryStatus); + +typedef NTSTATUS DDKAPI +(*BCLASS_QUERY_TAG)( + IN PVOID Context, + OUT PULONG BatteryTag); + +typedef NTSTATUS DDKAPI +(*BCLASS_SET_INFORMATION)( + IN PVOID Context, + IN ULONG BatteryTag, + IN BATTERY_SET_INFORMATION_LEVEL Level, + IN PVOID Buffer OPTIONAL); + +typedef NTSTATUS DDKAPI +(*BCLASS_SET_STATUS_NOTIFY)( + IN PVOID Context, + IN ULONG BatteryTag, + IN PBATTERY_NOTIFY BatteryNotify); + + +typedef struct _BATTERY_MINIPORT_INFO { + USHORT MajorVersion; + USHORT MinorVersion; + PVOID Context; + BCLASS_QUERY_TAG QueryTag; + BCLASS_QUERY_INFORMATION QueryInformation; + BCLASS_SET_INFORMATION SetInformation; + BCLASS_QUERY_STATUS QueryStatus; + BCLASS_SET_STATUS_NOTIFY SetStatusNotify; + BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify; + PDEVICE_OBJECT Pdo; + PUNICODE_STRING DeviceName; +} BATTERY_MINIPORT_INFO, *PBATTERY_MINIPORT_INFO; + +/* BATTERY_MINIPORT_INFO.XxxVersion */ +#define BATTERY_CLASS_MAJOR_VERSION 0x0001 +#define BATTERY_CLASS_MINOR_VERSION 0x0000 + + +BCLASSAPI +NTSTATUS +DDKAPI +BatteryClassInitializeDevice( + IN PBATTERY_MINIPORT_INFO MiniportInfo, + IN PVOID *ClassData); + +BCLASSAPI +NTSTATUS +DDKAPI +BatteryClassIoctl( + IN PVOID ClassData, + IN PIRP Irp); + +BCLASSAPI +NTSTATUS +DDKAPI +BatteryClassQueryWmiDataBlock( + IN PVOID ClassData, + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN ULONG GuidIndex, + IN OUT PULONG InstanceLengthArray, + IN ULONG OutBufferSize, + OUT PUCHAR Buffer); + +BCLASSAPI +NTSTATUS +DDKAPI +BatteryClassStatusNotify( + IN PVOID ClassData); + +BCLASSAPI +NTSTATUS +DDKAPI +BatteryClassSystemControl( + IN PVOID ClassData, + IN PWMILIB_CONTEXT WmiLibContext, + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + OUT PSYSCTL_IRP_DISPOSITION Disposition); + +BCLASSAPI +NTSTATUS +DDKAPI +BatteryClassUnload( + IN PVOID ClassData); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __BATCLASS_H */ diff --git a/reactos/w32api/include/ddk/cfg.h b/reactos/w32api/include/ddk/cfg.h new file mode 100644 index 00000000000..c2250247584 --- /dev/null +++ b/reactos/w32api/include/ddk/cfg.h @@ -0,0 +1,143 @@ +/* + * cfg.h + * + * PnP Configuration Manager shared definitions between user mode and kernel mode code + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __CFG_H +#define __CFG_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#define CM_PROB_NOT_CONFIGURED 0x00000001 +#define CM_PROB_DEVLOADER_FAILED 0x00000002 +#define CM_PROB_OUT_OF_MEMORY 0x00000003 +#define CM_PROB_ENTRY_IS_WRONG_TYPE 0x00000004 +#define CM_PROB_LACKED_ARBITRATOR 0x00000005 +#define CM_PROB_BOOT_CONFIG_CONFLICT 0x00000006 +#define CM_PROB_FAILED_FILTER 0x00000007 +#define CM_PROB_DEVLOADER_NOT_FOUND 0x00000008 +#define CM_PROB_INVALID_DATA 0x00000009 +#define CM_PROB_FAILED_START 0x0000000A +#define CM_PROB_LIAR 0x0000000B +#define CM_PROB_NORMAL_CONFLICT 0x0000000C +#define CM_PROB_NOT_VERIFIED 0x0000000D +#define CM_PROB_NEED_RESTART 0x0000000E +#define CM_PROB_REENUMERATION 0x0000000F +#define CM_PROB_PARTIAL_LOG_CONF 0x00000010 +#define CM_PROB_UNKNOWN_RESOURCE 0x00000011 +#define CM_PROB_REINSTALL 0x00000012 +#define CM_PROB_REGISTRY 0x00000013 +#define CM_PROB_VXDLDR 0x00000014 +#define CM_PROB_WILL_BE_REMOVED 0x00000015 +#define CM_PROB_DISABLED 0x00000016 +#define CM_PROB_DEVLOADER_NOT_READY 0x00000017 +#define CM_PROB_DEVICE_NOT_THERE 0x00000018 +#define CM_PROB_MOVED 0x00000019 +#define CM_PROB_TOO_EARLY 0x0000001A +#define CM_PROB_NO_VALID_LOG_CONF 0x0000001B +#define CM_PROB_FAILED_INSTALL 0x0000001C +#define CM_PROB_HARDWARE_DISABLED 0x0000001D +#define CM_PROB_CANT_SHARE_IRQ 0x0000001E +#define CM_PROB_FAILED_ADD 0x0000001F +#define CM_PROB_DISABLED_SERVICE 0x00000020 +#define CM_PROB_TRANSLATION_FAILED 0x00000021 +#define CM_PROB_NO_SOFTCONFIG 0x00000022 +#define CM_PROB_BIOS_TABLE 0x00000023 +#define CM_PROB_IRQ_TRANSLATION_FAILED 0x00000024 +#define CM_PROB_FAILED_DRIVER_ENTRY 0x00000025 +#define CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD 0x00000026 +#define CM_PROB_DRIVER_FAILED_LOAD 0x00000027 +#define CM_PROB_DRIVER_SERVICE_KEY_INVALID 0x00000028 +#define CM_PROB_LEGACY_SERVICE_NO_DEVICES 0x00000029 +#define CM_PROB_DUPLICATE_DEVICE 0x0000002A +#define CM_PROB_FAILED_POST_START 0x0000002B +#define CM_PROB_HALTED 0x0000002C +#define CM_PROB_PHANTOM 0x0000002D +#define CM_PROB_SYSTEM_SHUTDOWN 0x0000002E +#define CM_PROB_HELD_FOR_EJECT 0x0000002F +#define CM_PROB_DRIVER_BLOCKED 0x00000030 +#define CM_PROB_REGISTRY_TOO_LARGE 0x00000031 + +#define LCPRI_FORCECONFIG 0x00000000 +#define LCPRI_BOOTCONFIG 0x00000001 +#define LCPRI_DESIRED 0x00002000 +#define LCPRI_NORMAL 0x00003000 +#define LCPRI_LASTBESTCONFIG 0x00003FFF +#define LCPRI_SUBOPTIMAL 0x00005000 +#define LCPRI_LASTSOFTCONFIG 0x00007FFF +#define LCPRI_RESTART 0x00008000 +#define LCPRI_REBOOT 0x00009000 +#define LCPRI_POWEROFF 0x0000A000 +#define LCPRI_HARDRECONFIG 0x0000C000 +#define LCPRI_HARDWIRED 0x0000E000 +#define LCPRI_IMPOSSIBLE 0x0000F000 +#define LCPRI_DISABLED 0x0000FFFF +#define MAX_LCPRI 0x0000FFFF + +#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */ +#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */ +#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */ +#define DN_STARTED 0x00000008 /* Is currently configured */ +#define DN_MANUAL 0x00000010 /* Manually installed */ +#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */ +#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config */ +#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */ +#define DN_LIAR 0x00000100 /* Lied about can reconfig once */ +#define DN_HAS_MARK 0x00000200 /* Not CM_Create_DevNode lately */ +#define DN_HAS_PROBLEM 0x00000400 /* Need device installer */ +#define DN_FILTERED 0x00000800 /* Is filtered */ +#define DN_MOVED 0x00001000 /* Has been moved */ +#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */ +#define DN_REMOVABLE 0x00004000 /* Can be removed */ +#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */ +#define DN_MF_PARENT 0x00010000 /* Multi function parent */ +#define DN_MF_CHILD 0x00020000 /* Multi function child */ +#define DN_WILL_BE_REMOVED 0x00040000 /* Devnode is being removed */ + +typedef enum _PNP_VETO_TYPE { + PNP_VetoTypeUnknown, + PNP_VetoLegacyDevice, + PNP_VetoPendingClose, + PNP_VetoWindowsApp, + PNP_VetoWindowsService, + PNP_VetoOutstandingOpen, + PNP_VetoDevice, + PNP_VetoDriver, + PNP_VetoIllegalDeviceRequest, + PNP_VetoInsufficientPower, + PNP_VetoNonDisableable, + PNP_VetoLegacyDriver +} PNP_VETO_TYPE, *PPNP_VETO_TYPE; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __CFG_H */ diff --git a/reactos/w32api/include/ddk/cfgmgr32.h b/reactos/w32api/include/ddk/cfgmgr32.h new file mode 100644 index 00000000000..a048bb4922f --- /dev/null +++ b/reactos/w32api/include/ddk/cfgmgr32.h @@ -0,0 +1,1533 @@ +/* + * cfgmgr32.h + * + * PnP configuration manager + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __CFGMGR32_H +#define __CFGMGR32_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#if defined(_CFGMGR32_) +#define CMAPI DECLSPEC_EXPORT +#else +#define CMAPI DECLSPEC_IMPORT +#endif + +#include "cfg.h" + +#define CR_SUCCESS 0x00000000 +#define CR_DEFAULT 0x00000001 +#define CR_OUT_OF_MEMORY 0x00000002 +#define CR_INVALID_POINTER 0x00000003 +#define CR_INVALID_FLAG 0x00000004 +#define CR_INVALID_DEVNODE 0x00000005 +#define CR_INVALID_DEVINST CR_INVALID_DEVNODE +#define CR_INVALID_RES_DES 0x00000006 +#define CR_INVALID_LOG_CONF 0x00000007 +#define CR_INVALID_ARBITRATOR 0x00000008 +#define CR_INVALID_NODELIST 0x00000009 +#define CR_DEVNODE_HAS_REQS 0x0000000A +#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS +#define CR_INVALID_RESOURCEID 0x0000000B +#define CR_DLVXD_NOT_FOUND 0x0000000C +#define CR_NO_SUCH_DEVNODE 0x0000000D +#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE +#define CR_NO_MORE_LOG_CONF 0x0000000E +#define CR_NO_MORE_RES_DES 0x0000000F +#define CR_ALREADY_SUCH_DEVNODE 0x00000010 +#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE +#define CR_INVALID_RANGE_LIST 0x00000011 +#define CR_INVALID_RANGE 0x00000012 +#define CR_FAILURE 0x00000013 +#define CR_NO_SUCH_LOGICAL_DEV 0x00000014 +#define CR_CREATE_BLOCKED 0x00000015 +#define CR_NOT_SYSTEM_VM 0x00000016 +#define CR_REMOVE_VETOED 0x00000017 +#define CR_APM_VETOED 0x00000018 +#define CR_INVALID_LOAD_TYPE 0x00000019 +#define CR_BUFFER_SMALL 0x0000001A +#define CR_NO_ARBITRATOR 0x0000001B +#define CR_NO_REGISTRY_HANDLE 0x0000001C +#define CR_REGISTRY_ERROR 0x0000001D +#define CR_INVALID_DEVICE_ID 0x0000001E +#define CR_INVALID_DATA 0x0000001F +#define CR_INVALID_API 0x00000020 +#define CR_DEVLOADER_NOT_READY 0x00000021 +#define CR_NEED_RESTART 0x00000022 +#define CR_NO_MORE_HW_PROFILES 0x00000023 +#define CR_DEVICE_NOT_THERE 0x00000024 +#define CR_NO_SUCH_VALUE 0x00000025 +#define CR_WRONG_TYPE 0x00000026 +#define CR_INVALID_PRIORITY 0x00000027 +#define CR_NOT_DISABLEABLE 0x00000028 +#define CR_FREE_RESOURCES 0x00000029 +#define CR_QUERY_VETOED 0x0000002A +#define CR_CANT_SHARE_IRQ 0x0000002B +#define CR_NO_DEPENDENT 0x0000002C +#define CR_SAME_RESOURCES 0x0000002D +#define CR_NO_SUCH_REGISTRY_KEY 0x0000002E +#define CR_INVALID_MACHINENAME 0x0000002F +#define CR_REMOTE_COMM_FAILURE 0x00000030 +#define CR_MACHINE_UNAVAILABLE 0x00000031 +#define CR_NO_CM_SERVICES 0x00000032 +#define CR_ACCESS_DENIED 0x00000033 +#define CR_CALL_NOT_IMPLEMENTED 0x00000034 +#define CR_INVALID_PROPERTY 0x00000035 +#define CR_DEVICE_INTERFACE_ACTIVE 0x00000036 +#define CR_NO_SUCH_DEVICE_INTERFACE 0x00000037 +#define CR_INVALID_REFERENCE_STRING 0x00000038 +#define CR_INVALID_CONFLICT_LIST 0x00000039 +#define CR_INVALID_INDEX 0x0000003A +#define CR_INVALID_STRUCTURE_SIZE 0x0000003B + + +typedef DWORD RETURN_TYPE; +typedef RETURN_TYPE CONFIGRET; + +typedef HANDLE HMACHINE; +typedef HMACHINE *PHMACHINE; + +typedef DWORD_PTR RES_DES; +typedef RES_DES *PRES_DES; + +typedef DWORD_PTR RANGE_ELEMENT; +typedef RANGE_ELEMENT *PRANGE_ELEMENT; + +typedef ULONG_PTR CONFLICT_LIST; +typedef CONFLICT_LIST *PCONFLICT_LIST; + +typedef DWORD_PTR LOG_CONF; +typedef LOG_CONF *PLOG_CONF; + +typedef ULONG PRIORITY; +typedef PRIORITY *PPRIORITY; + +typedef DWORD_PTR RANGE_LIST; +typedef RANGE_LIST *PRANGE_LIST; + +typedef DWORD DEVNODE, DEVINST; +typedef DEVNODE *PDEVNODE, *PDEVINST; + +typedef CHAR *DEVNODEID_A, *DEVINSTID_A; +typedef WCHAR *DEVNODEID_W, *DEVINSTID_W; + +#ifdef UNICODE +typedef DEVNODEID_W DEVNODEID; +typedef DEVINSTID_W DEVINSTID; +#else +typedef DEVNODEID_A DEVNODEID; +typedef DEVINSTID_A DEVINSTID; +#endif + +typedef ULONG REGDISPOSITION; + +typedef ULONG RESOURCEID; +typedef RESOURCEID *PRESOURCEID; + +#define CM_RESDES_WIDTH_DEFAULT 0x00000000 +#define CM_RESDES_WIDTH_32 0x00000001 +#define CM_RESDES_WIDTH_64 0x00000002 +#define CM_RESDES_WIDTH_BITS 0x00000003 + + +#define MAX_CONFIG_VALUE 9999 +#define MAX_INSTANCE_VALUE 9999 + +#define MAX_DEVICE_ID_LEN 200 +#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN + +#define MAX_CLASS_NAME_LEN 32 +#define MAX_GUID_STRING_LEN 39 +#define MAX_PROFILE_LEN 80 + + +#define ResType_All 0x00000000 +#define ResType_None 0x00000000 +#define ResType_Mem 0x00000001 +#define ResType_IO 0x00000002 +#define ResType_DMA 0x00000003 +#define ResType_IRQ 0x00000004 +#define ResType_DoNotUse 0x00000005 +#define ResType_BusNumber 0x00000006 +#define ResType_MAX 0x00000006 +#define ResType_Ignored_Bit 0x00008000 +#define ResType_ClassSpecific 0x0000FFFF +#define ResType_Reserved 0x00008000 +#define ResType_DevicePrivate 0x00008001 +#define ResType_PcCardConfig 0x00008002 +#define ResType_MfCardConfig 0x00008003 + +#define CM_GETIDLIST_FILTER_NONE 0x00000000 +#define CM_GETIDLIST_FILTER_ENUMERATOR 0x00000001 +#define CM_GETIDLIST_FILTER_SERVICE 0x00000002 +#define CM_GETIDLIST_FILTER_EJECTRELATIONS 0x00000004 +#define CM_GETIDLIST_FILTER_REMOVALRELATIONS 0x00000008 +#define CM_GETIDLIST_FILTER_POWERRELATIONS 0x00000010 +#define CM_GETIDLIST_FILTER_BUSRELATIONS 0x00000020 +#define CM_GETIDLIST_DONOTGENERATE 0x10000040 +#define CM_GETIDLIST_FILTER_BITS 0x1000007F + +#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT 0x00000000 +#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 0x00000001 +#define CM_GET_DEVICE_INTERFACE_LIST_BITS 0x00000001 + + +typedef struct BusNumber_Des_s { + DWORD BUSD_Count; + DWORD BUSD_Type; + DWORD BUSD_Flags; + ULONG BUSD_Alloc_Base; + ULONG BUSD_Alloc_End; +} BUSNUMBER_DES, *PBUSNUMBER_DES; + +typedef struct BusNumber_Range_s { + ULONG BUSR_Min; + ULONG BUSR_Max; + ULONG BUSR_nBusNumbers; + ULONG BUSR_Flags; +} BUSNUMBER_RANGE, *PBUSNUMBER_RANGE; + +#define BusNumberType_Range sizeof(BUSNUMBER_RANGE) + +typedef struct BusNumber_Resource_s { + BUSNUMBER_DES BusNumber_Header; + BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY]; +} BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE; + +typedef struct CS_Des_s { + DWORD CSD_SignatureLength; + DWORD CSD_LegacyDataOffset; + DWORD CSD_LegacyDataSize; + DWORD CSD_Flags; + GUID CSD_ClassGuid; + BYTE CSD_Signature[ANYSIZE_ARRAY]; +} CS_DES, *PCS_DES; + +typedef struct CS_Resource_s { + CS_DES CS_Header; +} CS_RESOURCE, *PCS_RESOURCE; + +typedef struct DevPrivate_Des_s { + DWORD PD_Count; + DWORD PD_Type; + DWORD PD_Data1; + DWORD PD_Data2; + DWORD PD_Data3; + DWORD PD_Flags; +} DEVPRIVATE_DES, *PDEVPRIVATE_DES; + +typedef struct DevPrivate_Range_s { + DWORD PR_Data1; + DWORD PR_Data2; + DWORD PR_Data3; +} DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE; + +#define PType_Range sizeof(DEVPRIVATE_RANGE) + +typedef struct DevPrivate_Resource_s { + DEVPRIVATE_DES PRV_Header; + DEVPRIVATE_RANGE PRV_Data[ANYSIZE_ARRAY]; +} DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE; + +/* DMA_DES.DD_Flags constants and masks */ +#define mDD_Width 0x3 +#define fDD_BYTE 0x0 +#define fDD_WORD 0x1 +#define fDD_DWORD 0x2 +#define fDD_BYTE_AND_WORD 0x3 + +#define mDD_BusMaster 0x4 +#define fDD_NoBusMaster 0x0 +#define fDD_BusMaster 0x4 + +#define mDD_Type 0x18 +#define fDD_TypeStandard 0x00 +#define fDD_TypeA 0x08 +#define fDD_TypeB 0x10 +#define fDD_TypeF 0x18 + +typedef struct DMA_Des_s { + DWORD DD_Count; + DWORD DD_Type; + DWORD DD_Flags; + ULONG DD_Alloc_Chan; +} DMA_DES, *PDMA_DES; + +typedef struct DMA_Range_s { + ULONG DR_Min; + ULONG DR_Max; + ULONG DR_Flags; +} DMA_RANGE, *PDMA_RANGE; + +#define DType_Range sizeof(DMA_RANGE) + +typedef struct DMA_Resource_s { + DMA_DES DMA_Header; + DMA_RANGE DMA_Data[ANYSIZE_ARRAY]; +} DMA_RESOURCE, *PDMA_RESOURCE; + +/* IO_DES.Type constants and masks */ +#define fIOD_PortType 0x1 +#define fIOD_Memory 0x0 +#define fIOD_IO 0x1 +#define fIOD_DECODE 0x00fc +#define fIOD_10_BIT_DECODE 0x0004 +#define fIOD_12_BIT_DECODE 0x0008 +#define fIOD_16_BIT_DECODE 0x0010 +#define fIOD_POSITIVE_DECODE 0x0020 +#define fIOD_PASSIVE_DECODE 0x0040 +#define fIOD_WINDOW_DECODE 0x0080 + +typedef struct IO_Des_s { + DWORD IOD_Count; + DWORD IOD_Type; + DWORDLONG IOD_Alloc_Base; + DWORDLONG IOD_Alloc_End; + DWORD IOD_DesFlags; +} IO_DES, *PIO_DES; + +/* IO_RANGE.IOR_Alias constants */ +#define IO_ALIAS_10_BIT_DECODE 0x00000004 +#define IO_ALIAS_12_BIT_DECODE 0x00000010 +#define IO_ALIAS_16_BIT_DECODE 0x00000000 +#define IO_ALIAS_POSITIVE_DECODE 0x000000FF + +typedef struct IO_Range_s { + DWORDLONG IOR_Align; + DWORD IOR_nPorts; + DWORDLONG IOR_Min; + DWORDLONG IOR_Max; + DWORD IOR_RangeFlags; + DWORDLONG IOR_Alias; +} IO_RANGE, *PIO_RANGE; + +#define IOType_Range sizeof(IO_RANGE) + +typedef struct IO_Resource_s { + IO_DES IO_Header; + IO_RANGE IO_Data[ANYSIZE_ARRAY]; +} IO_RESOURCE, *PIO_RESOURCE; + +/* IRQ_DES.IRQD_flags constants */ +#define mIRQD_Share 0x1 +#define fIRQD_Exclusive 0x0 +#define fIRQD_Share 0x1 + +#define fIRQD_Share_Bit 0 +#define fIRQD_Level_Bit 1 + +#define mIRQD_Edge_Level 0x2 +#define fIRQD_Level 0x0 +#define fIRQD_Edge 0x2 + +typedef struct IRQ_Des_32_s { + DWORD IRQD_Count; + DWORD IRQD_Type; + DWORD IRQD_Flags; + ULONG IRQD_Alloc_Num; + ULONG32 IRQD_Affinity; +} IRQ_DES_32, *PIRQ_DES_32; + +typedef struct IRQ_Des_64_s { + DWORD IRQD_Count; + DWORD IRQD_Type; + DWORD IRQD_Flags; + ULONG IRQD_Alloc_Num; + ULONG64 IRQD_Affinity; +} IRQ_DES_64, *PIRQ_DES_64; + +#ifdef _WIN64 +typedef IRQ_DES_64 IRQ_DES; +typedef PIRQ_DES_64 PIRQ_DES; +#else +typedef IRQ_DES_32 IRQ_DES; +typedef PIRQ_DES_32 PIRQ_DES; +#endif + +typedef struct IRQ_Range_s { + ULONG IRQR_Min; + ULONG IRQR_Max; + ULONG IRQR_Flags; +} IRQ_RANGE, *PIRQ_RANGE; + +#define IRQType_Range sizeof(IRQ_RANGE) + +typedef struct IRQ_Resource_s { + IRQ_DES IRQ_Header; + IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY]; +} IRQ_RESOURCE, *PIRQ_RESOURCE; + +/* MEM_DES.MD_Flags constants */ +#define mMD_MemoryType 0x1 +#define fMD_MemoryType mMD_MemoryType +#define fMD_ROM 0x0 +#define fMD_RAM 0x1 + +#define mMD_32_24 0x2 +#define fMD_32_24 mMD_32_24 +#define fMD_24 0x0 +#define fMD_32 0x2 + +#define mMD_Prefetchable 0x4 +#define fMD_Prefetchable mMD_Prefetchable +#define fMD_Pref mMD_Prefetchable +#define fMD_PrefetchDisallowed 0x0 +#define fMD_PrefetchAllowed 0x4 + +#define mMD_Readable 0x8 +#define fMD_Readable mMD_Readable +#define fMD_ReadAllowed 0x0 +#define fMD_ReadDisallowed 0x8 + +#define mMD_CombinedWrite 0x10 +#define fMD_CombinedWrite mMD_CombinedWrite +#define fMD_CombinedWriteDisallowed 0x0 +#define fMD_CombinedWriteAllowed 0x10 + +#define mMD_Cacheable 0x20 +#define fMD_NonCacheable 0x0 +#define fMD_Cacheable 0x20 + +typedef struct Mem_Des_s { + DWORD MD_Count; + DWORD MD_Type; + DWORDLONG MD_Alloc_Base; + DWORDLONG MD_Alloc_End; + DWORD MD_Flags; + DWORD MD_Reserved; +} MEM_DES, *PMEM_DES; + +typedef struct Mem_Range_s { + DWORDLONG MR_Align; + ULONG MR_nBytes; + DWORDLONG MR_Min; + DWORDLONG MR_Max; + DWORD MR_Flags; + DWORD MR_Reserved; +} MEM_RANGE, *PMEM_RANGE; + +#define MType_Range sizeof(MEM_RANGE) + +typedef struct Mem_Resource_s { + MEM_DES MEM_Header; + MEM_RANGE MEM_Data[ANYSIZE_ARRAY]; +} MEM_RESOURCE, *PMEM_RESOURCE; + +/* MFCARD_DES.PMF_Flags constants */ +#define fPMF_AUDIO_ENABLE 0x8 +#define mPMF_AUDIO_ENABLE fPMF_AUDIO_ENABLE + +typedef struct MfCard_Des_s { + DWORD PMF_Count; + DWORD PMF_Type; + DWORD PMF_Flags; + BYTE PMF_ConfigOptions; + BYTE PMF_IoResourceIndex; + BYTE PMF_Reserved[2]; + DWORD PMF_ConfigRegisterBase; +} MFCARD_DES, *PMFCARD_DES; + +typedef struct MfCard_Resource_s { + MFCARD_DES MfCard_Header; +} MFCARD_RESOURCE, *PMFCARD_RESOURCE; + +/* PCCARD_DES.PCD_Flags constants */ + +typedef struct PcCard_Des_s { + DWORD PCD_Count; + DWORD PCD_Type; + DWORD PCD_Flags; + BYTE PCD_ConfigIndex; + BYTE PCD_Reserved[3]; + DWORD PCD_MemoryCardBase1; + DWORD PCD_MemoryCardBase2; +} PCCARD_DES, *PPCCARD_DES; + +#define mPCD_IO_8_16 0x1 +#define fPCD_IO_8 0x0 +#define fPCD_IO_16 0x1 +#define mPCD_MEM_8_16 0x2 +#define fPCD_MEM_8 0x0 +#define fPCD_MEM_16 0x2 +#define mPCD_MEM_A_C 0xC +#define fPCD_MEM1_A 0x4 +#define fPCD_MEM2_A 0x8 +#define fPCD_IO_ZW_8 0x10 +#define fPCD_IO_SRC_16 0x20 +#define fPCD_IO_WS_16 0x40 +#define mPCD_MEM_WS 0x300 +#define fPCD_MEM_WS_ONE 0x100 +#define fPCD_MEM_WS_TWO 0x200 +#define fPCD_MEM_WS_THREE 0x300 + +#define fPCD_MEM_A 0x4 + +#define fPCD_ATTRIBUTES_PER_WINDOW 0x8000 + +#define fPCD_IO1_16 0x00010000 +#define fPCD_IO1_ZW_8 0x00020000 +#define fPCD_IO1_SRC_16 0x00040000 +#define fPCD_IO1_WS_16 0x00080000 + +#define fPCD_IO2_16 0x00100000 +#define fPCD_IO2_ZW_8 0x00200000 +#define fPCD_IO2_SRC_16 0x00400000 +#define fPCD_IO2_WS_16 0x00800000 + +#define mPCD_MEM1_WS 0x03000000 +#define fPCD_MEM1_WS_ONE 0x01000000 +#define fPCD_MEM1_WS_TWO 0x02000000 +#define fPCD_MEM1_WS_THREE 0x03000000 +#define fPCD_MEM1_16 0x04000000 + +#define mPCD_MEM2_WS 0x30000000 +#define fPCD_MEM2_WS_ONE 0x10000000 +#define fPCD_MEM2_WS_TWO 0x20000000 +#define fPCD_MEM2_WS_THREE 0x30000000 +#define fPCD_MEM2_16 0x40000000 + +#define PCD_MAX_MEMORY 2 +#define PCD_MAX_IO 2 + +typedef struct PcCard_Resource_s { + PCCARD_DES PcCard_Header; +} PCCARD_RESOURCE, *PPCCARD_RESOURCE; + + +/* CONFLICT_DETAILS.CD.ulMask constants */ +#define CM_CDMASK_DEVINST 0x00000001 +#define CM_CDMASK_RESDES 0x00000002 +#define CM_CDMASK_FLAGS 0x00000004 +#define CM_CDMASK_DESCRIPTION 0x00000008 +#define CM_CDMASK_VALID 0x0000000F + +/* CONFLICT_DETAILS.CD.ulFlags constants */ +#define CM_CDFLAGS_DRIVER 0x00000001 +#define CM_CDFLAGS_ROOT_OWNED 0x00000002 +#define CM_CDFLAGS_RESERVED 0x00000004 + +typedef struct _CONFLICT_DETAILS_A { + ULONG CD_ulSize; + ULONG CD_ulMask; + DEVINST CD_dnDevInst; + RES_DES CD_rdResDes; + ULONG CD_ulFlags; + CHAR CD_szDescription[MAX_PATH]; +} CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A; + +typedef struct _CONFLICT_DETAILS_W { + ULONG CD_ulSize; + ULONG CD_ulMask; + DEVINST CD_dnDevInst; + RES_DES CD_rdResDes; + ULONG CD_ulFlags; + WCHAR CD_szDescription[MAX_PATH]; +} CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W; + +#ifdef UNICODE +typedef CONFLICT_DETAILS_W CONFLICT_DETAILS; +typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS; +#else +typedef CONFLICT_DETAILS_A CONFLICT_DETAILS; +typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS; +#endif + + + +/* CM_Add_Empty_Log_Conf.ulFlags constants */ +#define PRIORITY_EQUAL_FIRST 0x00000008 +#define PRIORITY_EQUAL_LAST 0x00000000 +#define PRIORITY_BIT 0x00000008 + +CMAPI +CONFIGRET +WINAPI +CM_Add_Empty_Log_Conf( + OUT PLOG_CONF plcLogConf, + IN DEVINST dnDevInst, + IN PRIORITY Priority, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Add_Empty_Log_Conf_Ex( + OUT PLOG_CONF plcLogConf, + IN DEVINST dnDevInst, + IN PRIORITY Priority, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* CM_Add_ID.ulFlags constants */ +#define CM_ADD_ID_HARDWARE 0x00000000 +#define CM_ADD_ID_COMPATIBLE 0x00000001 +#define CM_ADD_ID_BITS 0x00000001 + +CMAPI +CONFIGRET +WINAPI +CM_Add_IDA( + IN DEVINST dnDevInst, + IN PSTR pszID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Add_ID_ExA( + IN DEVINST dnDevInst, + IN PSTR pszID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Add_ID_ExW( + IN DEVINST dnDevInst, + IN PWSTR pszID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Add_IDW( + IN DEVINST dnDevInst, + IN PWSTR pszID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#ifdef UNICODE +#define CM_Add_ID CM_Add_IDW +#define CM_Add_ID_Ex CM_Add_ID_ExW +#else +#define CM_Add_ID CM_Add_IDA +#define CM_Add_ID_Ex CM_Add_ID_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Add_Range */ + +CMAPI +CONFIGRET +WINAPI +CM_Add_Res_Des( + OUT PRES_DES prdResDes, + IN LOG_CONF lcLogConf, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Add_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN LOG_CONF lcLogConf, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Connect_MachineA( + IN PCSTR UNCServerName, + OUT PHMACHINE phMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Connect_MachineW( + IN PCWSTR UNCServerName, + OUT PHMACHINE phMachine); + +#ifdef UNICODE +#define CM_Connect_Machine CM_Connect_MachineW +#else +#define CM_Connect_Machine CM_Connect_MachineA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Create_DevNode */ +/* FIXME: Obsolete CM_Create_DevNodeEx */ +/* FIXME: Obsolete CM_Create_Range_List */ +/* FIXME: Obsolete CM_Delete_Class_Key */ +/* FIXME: Obsolete CM_Delete_Class_Key_Ex */ +/* FIXME: Obsolete CM_Delete_DevNode_Key */ +/* FIXME: Obsolete CM_Delete_DevNode_Key_Ex */ +/* FIXME: Obsolete CM_Delete_Range */ +/* FIXME: Obsolete CM_Detected_Resource_Conflict */ +/* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */ +/* FIXME: Obsolete CM_Disable_DevNode */ +/* FIXME: Obsolete CM_Disable_DevNodeEx */ + +CMAPI +CONFIGRET +WINAPI +CM_Disconnect_Machine( + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Enable_DevNode */ +/* FIXME: Obsolete CM_Enable_DevNodeEx */ + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Classes( + IN ULONG ulClassIndex, + OUT LPGUID ClassGuid, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Classes_Ex( + IN ULONG ulClassIndex, + OUT LPGUID ClassGuid, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_EnumeratorsA( + IN ULONG ulEnumIndex, + OUT PCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Enumerators_ExA( + IN ULONG ulEnumIndex, + OUT PCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_Enumerators_ExW( + IN ULONG ulEnumIndex, + OUT PWCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Enumerate_EnumeratorsW( + IN ULONG ulEnumIndex, + OUT PWCHAR Buffer, + IN OUT PULONG pulLength, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW +#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW +#else +#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA +#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Find_Range */ +/* FIXME: Obsolete CM_First_Range */ + +CMAPI +CONFIGRET +WINAPI +CM_Free_Log_Conf( + IN LOG_CONF lcLogConfToBeFreed, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Log_Conf_Ex( + IN LOG_CONF lcLogConfToBeFreed, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Log_Conf_Handle( + IN LOG_CONF lcLogConf); + +/* FIXME: Obsolete CM_Free_Range_List */ + +CMAPI +CONFIGRET +WINAPI +CM_Free_Res_Des( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Res_Des_Handle( + IN RES_DES rdResDes); + +CMAPI +CONFIGRET +WINAPI +CM_Free_Resource_Conflict_Handle( + IN CONFLICT_LIST clConflictList); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Child( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Child_Ex( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Get_Class_Name */ +/* FIXME: Obsolete CM_Get_Class_Name_Ex */ +/* FIXME: Obsolete CM_Get_Class_Key_Name */ +/* FIXME: Obsolete CM_Get_Class_Key_Name_Ex */ +/* FIXME: Obsolete CM_Get_Class_Registry_Property */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Depth( + OUT PULONG pulDepth, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Depth_Ex( + OUT PULONG pulDepth, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_IDA( + IN DEVINST dnDevInst, + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ExA( + IN DEVINST dnDevInst, + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ExW( + IN DEVINST dnDevInst, + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_IDW( + IN DEVINST dnDevInst, + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Get_Device_ID CM_Get_Device_IDW +#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW +#else +#define CM_Get_Device_ID CM_Get_Device_IDA +#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ListA( + IN PCSTR pszFilter, OPTIONAL + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_ExA( + IN PCSTR pszFilter, OPTIONAL + OUT PCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_ExW( + IN PCWSTR pszFilter, OPTIONAL + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_ListW( + IN PCWSTR pszFilter, OPTIONAL + OUT PWCHAR Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW +#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW +#else +#define CM_Get_Device_ID_List CM_Get_Device_ID_ListA +#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_SizeA( + OUT PULONG pulLen, + IN PCSTR pszFilter, OPTIONAL + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_Size_ExA( + OUT PULONG pulLen, + IN PCSTR pszFilter, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_Size_ExW( + OUT PULONG pulLen, + IN PCWSTR pszFilter, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_List_SizeW( + OUT PULONG pulLen, + IN PCWSTR pszFilter, OPTIONAL + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW +#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW +#else +#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA +#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_Size( + OUT PULONG pulLen, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Device_ID_Size_Ex( + OUT PULONG pulLen, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Get_Device_Interface_Alias */ +/* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */ +/* FIXME: Obsolete CM_Get_Device_Interface_List */ +/* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */ +/* FIXME: Obsolete CM_Get_Device_Interface_List_Size */ +/* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */ +/* FIXME: Obsolete CM_Get_DevNode_Custom_Property */ +/* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */ +/* FIXME: Obsolete CM_Get_DevNode_Registry_Property */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Status( + OUT PULONG pulStatus, + OUT PULONG pulProblemNumber, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_DevNode_Status_Ex( + OUT PULONG pulStatus, + OUT PULONG pulProblemNumber, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Get_DevInst_Status CM_Get_DevNode_Status +#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex + +/* CM_Get_First_Log_Conf.ulFlags constants */ +#define BASIC_LOG_CONF 0x00000000 /* Specifies the req list. */ +#define FILTERED_LOG_CONF 0x00000001 /* Specifies the filtered req list. */ +#define ALLOC_LOG_CONF 0x00000002 /* Specifies the Alloc Element. */ +#define BOOT_LOG_CONF 0x00000003 /* Specifies the RM Alloc Element. */ +#define FORCED_LOG_CONF 0x00000004 /* Specifies the Forced Log Conf */ +#define OVERRIDE_LOG_CONF 0x00000005 /* Specifies the Override req list. */ +#define NUM_LOG_CONF 0x00000006 /* Number of Log Conf type */ +#define LOG_CONF_BITS 0x00000007 /* The bits of the log conf type. */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_First_Log_Conf( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_First_Log_Conf_Ex( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Get_Global_State */ +/* FIXME: Obsolete CM_Get_Global_State_Ex */ +/* FIXME: Obsolete CM_Get_Hardware_Profile_Info */ +/* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */ +/* FIXME: Obsolete CM_Get_HW_Prof_Flags */ +/* FIXME: Obsolete CM_Get_HW_Prof_Flags_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Log_Conf_Priority( + IN LOG_CONF lcLogConf, + OUT PPRIORITY pPriority, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Log_Conf_Priority_Ex( + IN LOG_CONF lcLogConf, + OUT PPRIORITY pPriority, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Log_Conf( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN LOG_CONF lcLogConf, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Log_Conf_Ex( + OUT PLOG_CONF plcLogConf, OPTIONAL + IN LOG_CONF lcLogConf, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Res_Des( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ForResource, + OUT PRESOURCEID pResourceID, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Next_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ForResource, + OUT PRESOURCEID pResourceID, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Parent( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Parent_Ex( + OUT PDEVINST pdnDevInst, + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data( + IN RES_DES rdResDes, + OUT PVOID Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data_Ex( + IN RES_DES rdResDes, + OUT PVOID Buffer, + IN ULONG BufferLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data_Size( + OUT PULONG pulSize, + IN RES_DES rdResDes, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Res_Des_Data_Size_Ex( + OUT PULONG pulSize, + IN RES_DES rdResDes, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Resource_Conflict_Count( + IN CONFLICT_LIST clConflictList, + OUT PULONG pulCount); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Resource_Conflict_DetailsA( + IN CONFLICT_LIST clConflictList, + IN ULONG ulIndex, + IN OUT PCONFLICT_DETAILS_A pConflictDetails); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Resource_Conflict_DetailsW( + IN CONFLICT_LIST clConflictList, + IN ULONG ulIndex, + IN OUT PCONFLICT_DETAILS_W pConflictDetails); + +#ifdef UNICODE +#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW +#else +#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA +#endif /* UNICODE */ + +CMAPI +CONFIGRET +WINAPI +CM_Get_Sibling( + OUT PDEVINST pdnDevInst, + IN DEVINST DevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Get_Sibling_Ex( + OUT PDEVINST pdnDevInst, + IN DEVINST DevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +WORD +WINAPI +CM_Get_Version( + VOID); + +CMAPI +WORD +WINAPI +CM_Get_Version_Ex( + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Intersect_Range_List */ +/* FIXME: Obsolete CM_Invert_Range_List */ +/* FIXME: Obsolete CM_Is_Dock_Station_Present */ +/* FIXME: Obsolete CM_Is_Dock_Station_Present_Ex */ + +/* CM_Locate_DevNode.ulFlags constants */ +#define CM_LOCATE_DEVNODE_NORMAL 0x00000000 +#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001 +#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002 +#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004 +#define CM_LOCATE_DEVNODE_BITS 0x00000007 + +#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL +#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM +#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE +#define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION +#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNodeA( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_A pDeviceID, OPTIONAL + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNode_ExA( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_A pDeviceID, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNode_ExW( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_W pDeviceID, OPTIONAL + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Locate_DevNodeW( + OUT PDEVINST pdnDevInst, + IN DEVINSTID_W pDeviceID, OPTIONAL + IN ULONG ulFlags); + +#define CM_Locate_DevInstA CM_Locate_DevNodeA +#define CM_Locate_DevInstW CM_Locate_DevNodeW +#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA +#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW + +#ifdef UNICODE +#define CM_Locate_DevNode CM_Locate_DevNodeW +#define CM_Locate_DevInst CM_Locate_DevNodeW +#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW +#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW +#else +#define CM_Locate_DevNode CM_Locate_DevNodeA +#define CM_Locate_DevInst CM_Locate_DevNodeA +#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA +#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Merge_Range_List */ + +CMAPI +CONFIGRET +WINAPI +CM_Modify_Res_Des( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Modify_Res_Des_Ex( + OUT PRES_DES prdResDes, + IN RES_DES rdResDes, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Move_DevNode */ +/* FIXME: Obsolete CM_Move_DevNode_Ex */ +/* FIXME: Obsolete CM_Next_Range */ +/* FIXME: Obsolete CM_Open_Class_Key */ +/* FIXME: Obsolete CM_Open_Class_Key_Ex */ +/* FIXME: Obsolete CM_Open_DevNode_Key */ +/* FIXME: Obsolete CM_Open_DevNode_Key_Ex */ + +/* CM_Query_And_Remove_SubTree.ulFlags constants */ +#define CM_REMOVE_UI_OK 0x00000000 +#define CM_REMOVE_UI_NOT_OK 0x00000001 +#define CM_REMOVE_NO_RESTART 0x00000002 +#define CM_REMOVE_BITS 0x00000003 + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTreeA( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTreeW( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTree_ExA( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Query_And_Remove_SubTree_ExW( + IN DEVINST dnAncestor, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */ +/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */ +/* FIXME: Obsolete CM_Query_Remove_SubTree */ +/* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Query_Resource_Conflict_List( + OUT PCONFLICT_LIST pclConflictList, + IN DEVINST dnDevInst, + IN RESOURCEID ResourceID, + IN PCVOID ResourceData, + IN ULONG ResourceLen, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +/* CM_Reenumerate_DevNode.ulFlags constants */ +#define CM_REENUMERATE_NORMAL 0x00000000 +#define CM_REENUMERATE_SYNCHRONOUS 0x00000001 +#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002 +#define CM_REENUMERATE_ASYNCHRONOUS 0x00000004 +#define CM_REENUMERATE_BITS 0x00000007 + +CMAPI +CONFIGRET +WINAPI +CM_Reenumerate_DevNode( + IN DEVINST dnDevInst, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Reenumerate_DevNode_Ex( + IN DEVINST dnDevInst, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode +#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex + +/* FIXME: Obsolete CM_Register_Device_Driver */ +/* FIXME: Obsolete CM_Register_Device_Driver_Ex */ +/* FIXME: Obsolete CM_Register_Device_Interface */ +/* FIXME: Obsolete CM_Register_Device_Interface_Ex */ +/* FIXME: Obsolete CM_Remove_SubTree */ +/* FIXME: Obsolete CM_Remove_SubTree_Ex */ + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_EjectA( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_Eject_ExW( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_Eject_ExA( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags, + IN HMACHINE hMachine); + +CMAPI +CONFIGRET +WINAPI +CM_Request_Device_EjectW( + IN DEVINST dnDevInst, + OUT PPNP_VETO_TYPE pVetoType, + OUT LPWSTR pszVetoName, + IN ULONG ulNameLength, + IN ULONG ulFlags); + +#ifdef UNICODE +#define CM_Request_Device_Eject CM_Request_Device_EjectW +#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW +#else +#define CM_Request_Device_Eject CM_Request_Device_EjectA +#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA +#endif /* UNICODE */ + +/* FIXME: Obsolete CM_Request_Eject_PC */ +/* FIXME: Obsolete CM_Request_Eject_PC_Ex */ +/* FIXME: Obsolete CM_Run_Detection */ +/* FIXME: Obsolete CM_Run_Detection_Ex */ +/* FIXME: Obsolete CM_Set_Class_Registry_Property */ +/* FIXME: Obsolete CM_Set_DevNode_Problem */ +/* FIXME: Obsolete CM_Set_DevNode_Problem_Ex */ +/* FIXME: Obsolete CM_Set_DevNode_Registry_Property */ +/* FIXME: Obsolete CM_Set_DevNode_Registry_Property_Ex */ +/* FIXME: Obsolete CM_Set_HW_Prof */ +/* FIXME: Obsolete CM_Set_HW_Prof_Ex */ +/* FIXME: Obsolete CM_Set_HW_Prof_Flags */ +/* FIXME: Obsolete CM_Set_HW_Prof_Flags_Ex */ +/* FIXME: Obsolete CM_Setup_DevNode */ +/* FIXME: Obsolete CM_Setup_DevNode_Ex */ +/* FIXME: Obsolete CM_Test_Range_Available */ +/* FIXME: Obsolete CM_Uninstall_DevNode */ +/* FIXME: Obsolete CM_Uninstall_DevNode_Ex */ +/* FIXME: Obsolete CM_Unregister_Device_Interface */ +/* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */ + +#define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents + +CMAPI +DWORD +WINAPI +CMP_WaitNoPendingInstallEvents( + IN DWORD dwTimeout); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __CFGMGR32_H */ diff --git a/reactos/w32api/include/ddk/d4drvif.h b/reactos/w32api/include/ddk/d4drvif.h new file mode 100644 index 00000000000..fff128694bf --- /dev/null +++ b/reactos/w32api/include/ddk/d4drvif.h @@ -0,0 +1,108 @@ +/* + * d4drvif.h + * + * DOT4 driver IOCTL interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __D4DRVIF_H +#define __D4DRVIF_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "d4iface.h" + +#define FILE_DEVICE_DOT4 0x3a +#define IOCTL_DOT4_USER_BASE 2049 + +#define IOCTL_DOT4_ADD_ACTIVITY_BROADCAST \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 4, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_CLOSE_CHANNEL \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 1, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_CREATE_SOCKET \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 7, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_DESTROY_SOCKET \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 9, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_OPEN_CHANNEL \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 0, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_READ \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 2, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_REMOVE_ACTIVITY_BROADCAST \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 5, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_WAIT_ACTIVITY_BROADCAST \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 6, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_WAIT_FOR_CHANNEL \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 8, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_DOT4_WRITE \ + CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 3, METHOD_IN_DIRECT, FILE_ANY_ACCESS) + + +#define MAX_SERVICE_LENGTH 40 + +typedef struct _DOT4_DC_CREATE_DATA { + unsigned char bPsid; + CHAR pServiceName[MAX_SERVICE_LENGTH + 1]; + unsigned char bType; + ULONG ulBufferSize; + USHORT usMaxHtoPPacketSize; + USHORT usMaxPtoHPacketSize; + unsigned char bHsid; +} DOT4_DC_CREATE_DATA, *PDOT4_DC_CREATE_DATA; + +typedef struct _DOT4_DC_DESTROY_DATA { + unsigned char bHsid; +} DOT4_DC_DESTROY_DATA, *PDOT4_DC_DESTROY_DATA; + +typedef struct _DOT4_DC_OPEN_DATA { + unsigned char bHsid; + unsigned char fAddActivity; + CHANNEL_HANDLE hChannelHandle; +} DOT4_DC_OPEN_DATA, *PDOT4_DC_OPEN_DATA; + +typedef struct _DOT4_DRIVER_CMD { + CHANNEL_HANDLE hChannelHandle; + ULONG ulSize; + ULONG ulOffset; + ULONG ulTimeout; +} DOT4_DRIVER_CMD, *PDOT4_DRIVER_CMD; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __D4DRVIF_H */ diff --git a/reactos/w32api/include/ddk/d4iface.h b/reactos/w32api/include/ddk/d4iface.h new file mode 100644 index 00000000000..3cd511656b1 --- /dev/null +++ b/reactos/w32api/include/ddk/d4iface.h @@ -0,0 +1,88 @@ +/* + * d4iface.h + * + * DOT4 interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __D4IFACE_H +#define __D4IFACE_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#define DOT4_MAX_CHANNELS 128 +#define NO_TIMEOUT 0 + +#define DOT4_CHANNEL 0 +#define HP_MESSAGE_PROCESSOR 1 +#define PRINTER_CHANNEL 2 +#define SCANNER_CHANNEL 4 +#define MIO_COMMAND_PROCESSOR 5 +#define ECHO_CHANNEL 6 +#define FAX_SEND_CHANNEL 7 +#define FAX_RECV_CHANNEL 8 +#define DIAGNOSTIC_CHANNEL 9 +#define HP_RESERVED 10 +#define IMAGE_DOWNLOAD 11 +#define HOST_DATASTORE_UPLOAD 12 +#define HOST_DATASTORE_DOWNLOAD 13 +#define CONFIG_UPLOAD 14 +#define CONFIG_DOWNLOAD 15 + +#define STREAM_TYPE_CHANNEL 1 +#define PACKET_TYPE_CHANNEL 2 + +/* DOT4_ACTIVITY.ulMessage flags */ +#define DOT4_STREAM_RECEIVED 0x100 +#define DOT4_STREAM_CREDITS 0x101 +#define DOT4_MESSAGE_RECEIVED 0x102 +#define DOT4_DISCONNECT 0x103 +#define DOT4_CHANNEL_CLOSED 0x105 + +typedef unsigned long CHANNEL_HANDLE, *PCHANNEL_HANDLE; + +typedef struct _DOT4_ACTIVITY { + ULONG ulMessage; + ULONG ulByteCount; + CHANNEL_HANDLE hChannel; +} DOT4_ACTIVITY, *PDOT4_ACTIVITY; + +typedef struct _DOT4_WMI_XFER_INFO { + ULONG ulStreamBytesWritten; + ULONG ulStreamBytesRead; + ULONG ulPacketBytesWritten; + ULONG ulPacketBytesRead; +} DOT4_WMI_XFER_INFO, *PDOT4_WMI_XFER_INFO; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __D4IFACE_H */ diff --git a/reactos/w32api/include/ddk/ddkmapi.h b/reactos/w32api/include/ddk/ddkmapi.h new file mode 100644 index 00000000000..feeff87639b --- /dev/null +++ b/reactos/w32api/include/ddk/ddkmapi.h @@ -0,0 +1,338 @@ +/* + * ddkmapi.h + * + * DirectDraw support for DxApi function + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __DDKMAPI_H +#define __DDKMAPI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#if defined(_DXAPI_) + #define DXAPI DECLSPEC_EXPORT +#else + #define DXAPI DECLSPEC_IMPORT +#endif + +DXAPI +DWORD +FAR PASCAL +DxApi( + IN DWORD dwFunctionNum, + IN LPVOID lpvInBuffer, + IN DWORD cbInBuffer, + OUT LPVOID lpvOutBuffer, + OUT DWORD cbOutBuffer); + +typedef DWORD (FAR PASCAL *LPDXAPI)( + DWORD dwFunctionNum, + LPVOID lpvInBuffer, + DWORD cbInBuffer, + LPVOID lpvOutBuffer, + DWORD cbOutBuffer); + + +#define DXAPI_MAJORVERSION 1 +#define DXAPI_MINORVERSION 0 + +#define DD_FIRST_DXAPI 0x500 + +#define DD_DXAPI_GETVERSIONNUMBER (DD_FIRST_DXAPI) +#define DD_DXAPI_CLOSEHANDLE (DD_FIRST_DXAPI+1) +#define DD_DXAPI_OPENDIRECTDRAW (DD_FIRST_DXAPI+2) +#define DD_DXAPI_OPENSURFACE (DD_FIRST_DXAPI+3) +#define DD_DXAPI_OPENVIDEOPORT (DD_FIRST_DXAPI+4) +#define DD_DXAPI_GETKERNELCAPS (DD_FIRST_DXAPI+5) +#define DD_DXAPI_GET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+6) +#define DD_DXAPI_SET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+7) +#define DD_DXAPI_SET_VP_SKIP_FIELD (DD_FIRST_DXAPI+8) +#define DD_DXAPI_GET_SURFACE_STATE (DD_FIRST_DXAPI+9) +#define DD_DXAPI_SET_SURFACE_STATE (DD_FIRST_DXAPI+10) +#define DD_DXAPI_LOCK (DD_FIRST_DXAPI+11) +#define DD_DXAPI_FLIP_OVERLAY (DD_FIRST_DXAPI+12) +#define DD_DXAPI_FLIP_VP (DD_FIRST_DXAPI+13) +#define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+14) +#define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+15) +#define DD_DXAPI_REGISTER_CALLBACK (DD_FIRST_DXAPI+16) +#define DD_DXAPI_UNREGISTER_CALLBACK (DD_FIRST_DXAPI+17) +#define DD_DXAPI_GET_POLARITY (DD_FIRST_DXAPI+18) +#define DD_DXAPI_OPENVPCAPTUREDEVICE (DD_FIRST_DXAPI+19) +#define DD_DXAPI_ADDVPCAPTUREBUFFER (DD_FIRST_DXAPI+20) +#define DD_DXAPI_FLUSHVPCAPTUREBUFFERS (DD_FIRST_DXAPI+21) + + +typedef struct _DDCAPBUFFINFO { + DWORD dwFieldNumber; + DWORD bPolarity; + LARGE_INTEGER liTimeStamp; + DWORD ddRVal; +} DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO; + +/* DDADDVPCAPTUREBUFF.dwFlags constants */ +#define DDADDBUFF_SYSTEMMEMORY 0x0001 +#define DDADDBUFF_NONLOCALVIDMEM 0x0002 +#define DDADDBUFF_INVERT 0x0004 + +typedef struct _DDADDVPCAPTUREBUFF { + HANDLE hCapture; + DWORD dwFlags; + PMDL pMDL; + PKEVENT pKEvent; + LPDDCAPBUFFINFO lpBuffInfo; +} DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF; + +typedef struct _DDCLOSEHANDLE { + HANDLE hHandle; +} DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE; + +typedef struct _DDFLIPOVERLAY { + HANDLE hDirectDraw; + HANDLE hCurrentSurface; + HANDLE hTargetSurface; + DWORD dwFlags; +} DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY; + +typedef struct _DDFLIPVIDEOPORT { + HANDLE hDirectDraw; + HANDLE hVideoPort; + HANDLE hCurrentSurface; + HANDLE hTargetSurface; + DWORD dwFlags; +} DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT; + +typedef struct _DDGETAUTOFLIPIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; +} DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN; + +typedef struct _DDGETAUTOFLIPOUT { + DWORD ddRVal; + HANDLE hVideoSurface; + HANDLE hVBISurface; + BOOL bPolarity; +} DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT; + +typedef struct _DDGETPOLARITYIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; +} DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN; + +typedef struct _DDGETPOLARITYOUT { + DWORD ddRVal; + BOOL bPolarity; +} DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT; + +typedef struct _DDGETSURFACESTATEIN { + HANDLE hDirectDraw; + HANDLE hSurface; +} DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN; + +/* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */ +#define DDSTATE_BOB 0x0001 +#define DDSTATE_WEAVE 0x0002 +#define DDSTATE_EXPLICITLY_SET 0x0004 +#define DDSTATE_SOFTWARE_AUTOFLIP 0x0008 +#define DDSTATE_SKIPEVENFIELDS 0x0010 + +typedef struct _DDGETSURFACESTATEOUT { + DWORD ddRVal; + DWORD dwStateCaps; + DWORD dwStateStatus; +} DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT; + +typedef struct _DDGETFIELDNUMIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; +} DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN; + +typedef struct _DDGETFIELDNUMOUT { + DWORD ddRVal; + DWORD dwFieldNum; +} DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT; + +typedef struct _DDGETKERNELCAPSOUT { + DWORD ddRVal; + DWORD dwCaps; + DWORD dwIRQCaps; +} DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT; + +typedef struct _DDGETVERSIONNUMBER { + DWORD ddRVal; + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER; + +typedef struct _DDLOCKIN { + HANDLE hDirectDraw; + HANDLE hSurface; +} DDLOCKIN, FAR *LPDDLOCKIN; + +typedef struct _DDLOCKOUT { + DWORD ddRVal; + DWORD dwSurfHeight; + DWORD dwSurfWidth; + LONG lSurfPitch; + PVOID lpSurface; + DWORD SurfaceCaps; + DWORD dwFormatFlags; + DWORD dwFormatFourCC; + DWORD dwFormatBitCount; + _ANONYMOUS_UNION union { + DWORD dwRBitMask; + DWORD dwYBitMask; + } DUMMYUNIONNAME; + _ANONYMOUS_UNION union { + DWORD dwGBitMask; + DWORD dwUBitMask; + } DUMMYUNIONNAME2; + _ANONYMOUS_UNION union { + DWORD dwBBitMask; + DWORD dwVBitMask; + } DUMMYUNIONNAME3; +} DDLOCKOUT, FAR *LPDDLOCKOUT; + +/* LPDD_NOTIFYCALLBACK.dwFlags constants */ +#define DDNOTIFY_DISPLAY_VSYNC 0x0001 +#define DDNOTIFY_VP_VSYNC 0x0002 +#define DDNOTIFY_VP_LINE 0x0004 +#define DDNOTIFY_PRERESCHANGE 0x0008 +#define DDNOTIFY_POSTRESCHANGE 0x0010 +#define DDNOTIFY_PREDOSBOX 0x0020 +#define DDNOTIFY_POSTDOSBOX 0x0040 +#define DDNOTIFY_CLOSEDIRECTDRAW 0x0080 +#define DDNOTIFY_CLOSESURFACE 0x0100 +#define DDNOTIFY_CLOSEVIDEOPORT 0x0200 +#define DDNOTIFY_CLOSECAPTURE 0x0400 + +typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)( + DWORD dwFlags, + PVOID pContext, + DWORD dwParam1, + DWORD dwParam2); + +typedef struct _DDOPENDIRECTDRAWIN { + ULONG_PTR dwDirectDrawHandle; + LPDD_NOTIFYCALLBACK pfnDirectDrawClose; + PVOID pContext; +} DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN; + +typedef struct _DDOPENDIRECTDRAWOUT { + DWORD ddRVal; + HANDLE hDirectDraw; +} DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT; + +typedef struct _DDOPENSURFACEIN { + HANDLE hDirectDraw; + ULONG_PTR dwSurfaceHandle; + LPDD_NOTIFYCALLBACK pfnSurfaceClose; + PVOID pContext; +} DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN; + +typedef struct _DDOPENSURFACEOUT { + DWORD ddRVal; + HANDLE hSurface; +} DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT; + +typedef struct _DDOPENVIDEOPORTIN { + HANDLE hDirectDraw; + ULONG dwVideoPortHandle; + LPDD_NOTIFYCALLBACK pfnVideoPortClose; + PVOID pContext; +} DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN; + +typedef struct _DDOPENVIDEOPORTOUT { + DWORD ddRVal; + HANDLE hVideoPort; +} DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT; + +/* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */ +#define DDOPENCAPTURE_VIDEO 0x0001 +#define DDOPENCAPTURE_VBI 0x0002 + +typedef struct _DDOPENVPCAPTUREDEVICEIN { + HANDLE hDirectDraw; + HANDLE hVideoPort; + DWORD dwStartLine; + DWORD dwEndLine; + DWORD dwCaptureEveryNFields; + LPDD_NOTIFYCALLBACK pfnCaptureClose; + PVOID pContext; + DWORD dwFlags; +} DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN; + +typedef struct _DDOPENVPCAPTUREDEVICEOUT { + DWORD ddRVal; + HANDLE hCapture; +} DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT; + +/* DDREGISTERCALLBACK.dwEvents constants */ +#define DDEVENT_DISPLAY_VSYNC 0x0001 +#define DDEVENT_VP_VSYNC 0x0002 +#define DDEVENT_VP_LINE 0x0004 +#define DDEVENT_PRERESCHANGE 0x0008 +#define DDEVENT_POSTRESCHANGE 0x0010 +#define DDEVENT_PREDOSBOX 0x0020 +#define DDEVENT_POSTDOSBOX 0x0040 + +typedef struct _DDREGISTERCALLBACK { + HANDLE hDirectDraw; + ULONG dwEvents; + LPDD_NOTIFYCALLBACK pfnCallback; + ULONG_PTR dwParam1; + ULONG_PTR dwParam2; + PVOID pContext; +} DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK; + +typedef struct _DDSETSURFACETATE { + HANDLE hDirectDraw; + HANDLE hSurface; + DWORD dwState; + DWORD dwStartField; +} DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE; + +typedef struct _DDSETFIELDNUM { + HANDLE hDirectDraw; + HANDLE hVideoPort; + DWORD dwFieldNum; +} DDSETFIELDNUM, FAR *LPDDSETFIELDNUM; + +typedef struct _DDSETSKIPFIELD { + HANDLE hDirectDraw; + HANDLE hVideoPort; + DWORD dwStartField; +} DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __DDKMAPI_H */ diff --git a/reactos/w32api/include/ddk/hidclass.h b/reactos/w32api/include/ddk/hidclass.h new file mode 100644 index 00000000000..8717fc5ef29 --- /dev/null +++ b/reactos/w32api/include/ddk/hidclass.h @@ -0,0 +1,151 @@ +/* + * hidclass.h + * + * HID class driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __HIDCLASS_H +#define __HIDCLASS_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "hidpi.h" + +#define HID_REVISION 0x00000001 + +DEFINE_GUID (GUID_DEVINTERFACE_HID, \ + 0x4D1E55B2L, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30); +DEFINE_GUID (GUID_HID_INTERFACE_NOTIFY, \ + 0x2c4e2e88L, 0x25e6, 0x4c33, 0x88, 0x2f, 0x3d, 0x82, 0xe6, 0x07, 0x36, 0x81); +DEFINE_GUID (GUID_HID_INTERFACE_HIDPARSE, \ + 0xf5c315a5, 0x69ac, 0x4bc2, 0x92, 0x79, 0xd0, 0xb6, 0x45, 0x76, 0xf4, 0x4b); + +#define GUID_CLASS_INPUT GUID_DEVINTERFACE_HID + +#define GUID_CLASS_INPUT_STR "4D1E55B2-F16F-11CF-88CB-001111000030" + + +#define HID_CTL_CODE(id) \ + CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_NEITHER, FILE_ANY_ACCESS) +#define HID_BUFFER_CTL_CODE(id) \ + CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_BUFFERED, FILE_ANY_ACCESS) +#define HID_IN_CTL_CODE(id) \ + CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_IN_DIRECT, FILE_ANY_ACCESS) +#define HID_OUT_CTL_CODE(id) \ + CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + + +#define IOCTL_GET_PHYSICAL_DESCRIPTOR HID_OUT_CTL_CODE(102) +#define IOCTL_HID_FLUSH_QUEUE HID_CTL_CODE(101) +#define IOCTL_HID_GET_COLLECTION_DESCRIPTOR HID_CTL_CODE(100) +#define IOCTL_HID_GET_COLLECTION_INFORMATION HID_BUFFER_CTL_CODE(106) +#define IOCTL_HID_GET_FEATURE HID_OUT_CTL_CODE(100) +#define IOCTL_HID_GET_HARDWARE_ID HID_OUT_CTL_CODE(103) +#define IOCTL_HID_GET_INDEXED_STRING HID_OUT_CTL_CODE(120) +#define IOCTL_HID_GET_INPUT_REPORT HID_OUT_CTL_CODE(104) +#define IOCTL_HID_GET_MANUFACTURER_STRING HID_OUT_CTL_CODE(110) +#define IOCTL_GET_NUM_DEVICE_INPUT_BUFFERS HID_BUFFER_CTL_CODE(104) +#define IOCTL_HID_GET_POLL_FREQUENCY_MSEC HID_BUFFER_CTL_CODE(102) +#define IOCTL_HID_GET_PRODUCT_STRING HID_OUT_CTL_CODE(111) +#define IOCTL_HID_GET_SERIALNUMBER_STRING HID_OUT_CTL_CODE(112) +#define IOCTL_HID_SET_FEATURE HID_IN_CTL_CODE(100) +#define IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS HID_BUFFER_CTL_CODE(105) +#define IOCTL_HID_SET_OUTPUT_REPORT HID_IN_CTL_CODE(101) +#define IOCTL_HID_SET_POLL_FREQUENCY_MSEC HID_BUFFER_CTL_CODE(103) + +#define IOCTL_HID_GET_DRIVER_CONFIG HID_BUFFER_CTL_CODE(100) +#define IOCTL_HID_SET_DRIVER_CONFIG HID_BUFFER_CTL_CODE(101) +#define IOCTL_HID_GET_MS_GENRE_DESCRIPTOR HID_OUT_CTL_CODE(121) + + +enum DeviceObjectState { + DeviceObjectStarted = 0, + DeviceObjectStopped, + DeviceObjectRemoved +}; + +typedef VOID DDKAPI (*PHID_STATUS_CHANGE)( + PVOID Context, + enum DeviceObjectState State); + +typedef NTSTATUS DDKAPI (*PHIDP_GETCAPS)( + IN PHIDP_PREPARSED_DATA PreparsedData, + OUT PHIDP_CAPS Capabilities); + +typedef struct _HID_COLLECTION_INFORMATION { + ULONG DescriptorSize; + BOOLEAN Polled; + UCHAR Reserved1[1]; + USHORT VendorID; + USHORT ProductID; + USHORT VersionNumber; +} HID_COLLECTION_INFORMATION, *PHID_COLLECTION_INFORMATION; + +typedef struct _HID_DRIVER_CONFIG { + ULONG Size; + ULONG RingBufferSize; +} HID_DRIVER_CONFIG, *PHID_DRIVER_CONFIG; + +typedef struct _HID_INTERFACE_HIDPARSE { +#if 0 +/* FIXME: COM stuff */ +#ifdef __cplusplus + INTERFACE i; +#else + INTERFACE; +#endif +#endif + PHIDP_GETCAPS HidpGetCaps; +} HID_INTERFACE_HIDPARSE, *PHID_INTERFACE_HIDPARSE; + +typedef struct _HID_INTERFACE_NOTIFY_PNP { +#if 0 +/* FIXME: COM stuff */ +#ifdef __cplusplus + INTERFACE i; +#else + INTERFACE; +#endif +#endif + PHID_STATUS_CHANGE StatusChangeFn; + PVOID CallbackContext; +} HID_INTERFACE_NOTIFY_PNP, *PHID_INTERFACE_NOTIFY_PNP; + +typedef struct _HID_XFER_PACKET { + PUCHAR reportBuffer; + ULONG reportBufferLen; + UCHAR reportId; +} HID_XFER_PACKET, *PHID_XFER_PACKET; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __HIDCLASS_H */ diff --git a/reactos/w32api/include/ddk/hidpi.h b/reactos/w32api/include/ddk/hidpi.h new file mode 100644 index 00000000000..2f8ea573236 --- /dev/null +++ b/reactos/w32api/include/ddk/hidpi.h @@ -0,0 +1,608 @@ +/* + * hidpi.h + * + * Public Interface for HID parsing library. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __HIDPI_H +#define __HIDPI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "hidusage.h" + +#if defined(_HIDPI_) + #define HIDAPI DECLSPEC_EXPORT +#else + #define HIDAPI DECLSPEC_IMPORT +#endif + +typedef PUCHAR PHIDP_REPORT_DESCRIPTOR; +typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA; + +typedef struct _HIDP_UNKNOWN_TOKEN { + UCHAR Token; + UCHAR Reserved[3]; + ULONG BitField; +} HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN; + +typedef enum _HIDP_KEYBOARD_DIRECTION { + HidP_Keyboard_Break, + HidP_Keyboard_Make +} HIDP_KEYBOARD_DIRECTION; + +typedef struct _HIDP_KEYBOARD_MODIFIER_STATE { + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + ULONG LeftControl : 1; + ULONG LeftShift : 1; + ULONG LeftAlt : 1; + ULONG LeftGUI : 1; + ULONG RightControl : 1; + ULONG RightShift : 1; + ULONG RightAlt : 1; + ULONG RigthGUI : 1; + ULONG CapsLock : 1; + ULONG ScollLock : 1; + ULONG NumLock : 1; + ULONG Reserved : 21; + } DUMMYSTRUCTNAME; + ULONG ul; + } DUMMYUNIONNAME; +} HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE; + +typedef BOOLEAN (DDKAPI *PHIDP_INSERT_SCANCODES)( + IN PVOID Context, + IN PCHAR NewScanCodes, + IN ULONG Length); + +typedef struct _USAGE_AND_PAGE { + USAGE Usage; + USAGE UsagePage; +} USAGE_AND_PAGE, *PUSAGE_AND_PAGE; + +HIDAPI +NTSTATUS +DDKAPI +HidP_TranslateUsageAndPagesToI8042ScanCodes( + IN PUSAGE_AND_PAGE ChangedUsageList, + IN ULONG UsageListLength, + IN HIDP_KEYBOARD_DIRECTION KeyAction, + IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, + IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, + IN PVOID InsertCodesContext); + +HIDAPI +NTSTATUS +DDKAPI +HidP_TranslateUsagesToI8042ScanCodes( + IN PUSAGE ChangedUsageList, + IN ULONG UsageListLength, + IN HIDP_KEYBOARD_DIRECTION KeyAction, + IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, + IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, + IN PVOID InsertCodesContext); + +typedef struct _HIDP_BUTTON_CAPS { + USAGE UsagePage; + UCHAR ReportID; + BOOLEAN IsAlias; + USHORT BitField; + USHORT LinkCollection; + USAGE LinkUsage; + USAGE LinkUsagePage; + BOOLEAN IsRange; + BOOLEAN IsStringRange; + BOOLEAN IsDesignatorRange; + BOOLEAN IsAbsolute; + ULONG Reserved[10]; + _ANONYMOUS_UNION union { + struct { + USAGE UsageMin, UsageMax; + USHORT StringMin, StringMax; + USHORT DesignatorMin, DesignatorMax; + USHORT DataIndexMin, DataIndexMax; + } Range; + struct { + USAGE Usage, Reserved1; + USHORT StringIndex, Reserved2; + USHORT DesignatorIndex, Reserved3; + USHORT DataIndex, Reserved4; + } NotRange; + } DUMMYUNIONNAME; +} HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS; + +typedef struct _HIDP_CAPS { + USAGE Usage; + USAGE UsagePage; + USHORT InputReportByteLength; + USHORT OutputReportByteLength; + USHORT FeatureReportByteLength; + USHORT Reserved[17]; + USHORT NumberLinkCollectionNodes; + USHORT NumberInputButtonCaps; + USHORT NumberInputValueCaps; + USHORT NumberInputDataIndices; + USHORT NumberOutputButtonCaps; + USHORT NumberOutputValueCaps; + USHORT NumberOutputDataIndices; + USHORT NumberFeatureButtonCaps; + USHORT NumberFeatureValueCaps; + USHORT NumberFeatureDataIndices; +} HIDP_CAPS, *PHIDP_CAPS; + +typedef struct _HIDP_DATA { + USHORT DataIndex; + USHORT Reserved; + _ANONYMOUS_UNION union { + ULONG RawValue; + BOOLEAN On; + } DUMMYUNIONNAME; +} HIDP_DATA, *PHIDP_DATA; + +typedef struct _HIDP_EXTENDED_ATTRIBUTES { + UCHAR NumGlobalUnknowns; + UCHAR Reserved[3]; + PHIDP_UNKNOWN_TOKEN GlobalUnknowns; + ULONG Data[1]; +} HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES; + +#define HIDP_LINK_COLLECTION_ROOT ((USHORT) -1) +#define HIDP_LINK_COLLECTION_UNSPECIFIED ((USHORT) 0) + +typedef struct _HIDP_LINK_COLLECTION_NODE { + USAGE LinkUsage; + USAGE LinkUsagePage; + USHORT Parent; + USHORT NumberOfChildren; + USHORT NextSibling; + USHORT FirstChild; + ULONG CollectionType: 8; + ULONG IsAlias: 1; + ULONG Reserved: 23; + PVOID UserContext; +} HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE; + +typedef struct _HIDP_VALUE_CAPS { + USAGE UsagePage; + UCHAR ReportID; + BOOLEAN IsAlias; + USHORT BitField; + USHORT LinkCollection; + USAGE LinkUsage; + USAGE LinkUsagePage; + BOOLEAN IsRange; + BOOLEAN IsStringRange; + BOOLEAN IsDesignatorRange; + BOOLEAN IsAbsolute; + BOOLEAN HasNull; + UCHAR Reserved; + USHORT BitSize; + USHORT ReportCount; + USHORT Reserved2[5]; + ULONG UnitsExp; + ULONG Units; + LONG LogicalMin, LogicalMax; + LONG PhysicalMin, PhysicalMax; + _ANONYMOUS_UNION union { + struct { + USAGE UsageMin, UsageMax; + USHORT StringMin, StringMax; + USHORT DesignatorMin, DesignatorMax; + USHORT DataIndexMin, DataIndexMax; + } Range; + struct { + USAGE Usage, Reserved1; + USHORT StringIndex, Reserved2; + USHORT DesignatorIndex, Reserved3; + USHORT DataIndex, Reserved4; + } NotRange; + } DUMMYUNIONNAME; +} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS; + +typedef enum _HIDP_REPORT_TYPE { + HidP_Input, + HidP_Output, + HidP_Feature +} HIDP_REPORT_TYPE; + +#define FACILITY_HID_ERROR_CODE 0x11 + +#define HIDP_ERROR_CODES(SEV, CODE) \ + ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE))) + +#define HIDP_STATUS_SUCCESS (HIDP_ERROR_CODES(0x0, 0)) +#define HIDP_STATUS_NULL (HIDP_ERROR_CODES(0x8, 1)) +#define HIDP_STATUS_INVALID_PREPARSED_DATA (HIDP_ERROR_CODES(0xC, 1)) +#define HIDP_STATUS_INVALID_REPORT_TYPE (HIDP_ERROR_CODES(0xC, 2)) +#define HIDP_STATUS_INVALID_REPORT_LENGTH (HIDP_ERROR_CODES(0xC, 3)) +#define HIDP_STATUS_USAGE_NOT_FOUND (HIDP_ERROR_CODES(0xC, 4)) +#define HIDP_STATUS_VALUE_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 5)) +#define HIDP_STATUS_BAD_LOG_PHY_VALUES (HIDP_ERROR_CODES(0xC, 6)) +#define HIDP_STATUS_BUFFER_TOO_SMALL (HIDP_ERROR_CODES(0xC, 7)) +#define HIDP_STATUS_INTERNAL_ERROR (HIDP_ERROR_CODES(0xC, 8)) +#define HIDP_STATUS_I8042_TRANS_UNKNOWN (HIDP_ERROR_CODES(0xC, 9)) +#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID (HIDP_ERROR_CODES(0xC, 0xA)) +#define HIDP_STATUS_NOT_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xB)) +#define HIDP_STATUS_IS_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xC)) +#define HIDP_STATUS_DATA_INDEX_NOT_FOUND (HIDP_ERROR_CODES(0xC, 0xD)) +#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE)) +#define HIDP_STATUS_BUTTON_NOT_PRESSED (HIDP_ERROR_CODES(0xC, 0xF)) +#define HIDP_STATUS_REPORT_DOES_NOT_EXIST (HIDP_ERROR_CODES(0xC, 0x10)) +#define HIDP_STATUS_NOT_IMPLEMENTED (HIDP_ERROR_CODES(0xC, 0x20)) +#define HIDP_STATUS_I8242_TRANS_UNKNOWN HIDP_STATUS_I8042_TRANS_UNKNOWN + + + +/* + * NTSTATUS + * HidP_GetButtonCaps( + * IN HIDP_REPORT_TYPE ReportType, + * OUT PHIDP_BUTTON_CAPS ButtonCaps, + * IN OUT PULONG ButtonCapsLength, + * IN PHIDP_PREPARSED_DATA PreparsedData); + */ +#define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \ + HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_) + +/* + * NTSTATUS + * HidP_GetButtons( + * IN HIDP_REPORT_TYPE ReportType, + * IN USAGE UsagePage, + * IN USHORT LinkCollection, + * OUT USAGE *UsageList, + * IN OUT ULONG *UsageLength, + * IN PHIDP_PREPARSED_DATA PreparsedData, + * IN PCHAR Report, + * IN ULONG ReportLength); + */ +#define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \ + HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) + +#define HidP_GetButtonListLength(RTy, UPa, Ppd) \ + HidP_GetUsageListLength(Rty, UPa, Ppd) + + +/* + * NTSTATUS + * HidP_GetButtonsEx( + * IN HIDP_REPORT_TYPE ReportType, + * IN USHORT LinkCollection, + * OUT PUSAGE_AND_PAGE ButtonList, + * IN OUT ULONG *UsageLength, + * IN PHIDP_PREPARSED_DATA PreparsedData, + * IN PCHAR Report, + * IN ULONG ReportLength); + */ +#define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL) \ + HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL) + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetCaps( + IN PHIDP_PREPARSED_DATA PreparsedData, + OUT PHIDP_CAPS Capabilities); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetData( + IN HIDP_REPORT_TYPE ReportType, + OUT PHIDP_DATA DataList, + IN OUT PULONG DataLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetExtendedAttributes( + IN HIDP_REPORT_TYPE ReportType, + IN USHORT DataIndex, + IN PHIDP_PREPARSED_DATA PreparsedData, + OUT PHIDP_EXTENDED_ATTRIBUTES Attributes, + IN OUT PULONG LengthAttributes); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetLinkCollectionNodes( + OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes, + IN OUT PULONG LinkCollectionNodesLength, + IN PHIDP_PREPARSED_DATA PreparsedData); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetScaledUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + OUT PLONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetSpecificButtonCaps( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + OUT PHIDP_BUTTON_CAPS ButtonCaps, + IN OUT PULONG ButtonCapsLength, + IN PHIDP_PREPARSED_DATA PreparsedData); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetSpecificValueCaps( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + OUT PHIDP_VALUE_CAPS ValueCaps, + IN OUT PULONG ValueCapsLength, + IN PHIDP_PREPARSED_DATA PreparsedData); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetUsages( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + OUT USAGE *UsageList, + IN OUT ULONG *UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetUsagesEx( + IN HIDP_REPORT_TYPE ReportType, + IN USHORT LinkCollection, + OUT PUSAGE_AND_PAGE ButtonList, + IN OUT ULONG *UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + OUT PULONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_GetUsageValueArray( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + OUT PCHAR UsageValue, + IN USHORT UsageValueByteLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength); + +/* + * NTSTATUS + * HidP_GetValueCaps( + * IN HIDP_REPORT_TYPE ReportType, + * OUT PHIDP_VALUE_CAPS ValueCaps, + * IN OUT PULONG ValueCapsLength, + * IN PHIDP_PREPARSED_DATA PreparsedData); + */ +#define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \ + HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_) + +HIDAPI +NTSTATUS +DDKAPI +HidP_InitializeReportForID( + IN HIDP_REPORT_TYPE ReportType, + IN UCHAR ReportID, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength); + +/* + * BOOLEAN + * HidP_IsSameUsageAndPage( + * USAGE_AND_PAGE u1, + * USAGE_AND_PAGE u2); + */ +#define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2)) + +HIDAPI +ULONG +DDKAPI +HidP_MaxDataListLength( + IN HIDP_REPORT_TYPE ReportType, + IN PHIDP_PREPARSED_DATA PreparsedData); + +HIDAPI +ULONG +DDKAPI +HidP_MaxUsageListLength( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage OPTIONAL, + IN PHIDP_PREPARSED_DATA PreparsedData); + +/* + * NTSTATUS + * HidP_SetButtons( + * IN HIDP_REPORT_TYPE ReportType, + * IN USAGE UsagePage, + * IN USHORT LinkCollection, + * IN PUSAGE UsageList, + * IN OUT PULONG UsageLength, + * IN PHIDP_PREPARSED_DATA PreparsedData, + * IN OUT PCHAR Report, + * IN ULONG ReportLength); + */ +#define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \ + HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL) + +HIDAPI +NTSTATUS +DDKAPI +HidP_SetData( + IN HIDP_REPORT_TYPE ReportType, + IN PHIDP_DATA DataList, + IN OUT PULONG DataLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_SetScaledUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + IN LONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_SetUsages( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, /* Optional */ + IN PUSAGE UsageList, + IN OUT PULONG UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_SetUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + IN ULONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_SetUsageValueArray( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + IN PCHAR UsageValue, + IN USHORT UsageValueByteLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + OUT PCHAR Report, + IN ULONG ReportLength); + +/* + * NTSTATUS + * HidP_UnsetButtons( + * IN HIDP_REPORT_TYPE ReportType, + * IN USAGE UsagePage, + * IN USHORT LinkCollection, + * IN PUSAGE UsageList, + * IN OUT PULONG UsageLength, + * IN PHIDP_PREPARSED_DATA PreparsedData, + * IN OUT PCHAR Report, + * IN ULONG ReportLength); + */ +#define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \ + HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL) + +HIDAPI +NTSTATUS +DDKAPI +HidP_UnsetUsages( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN PUSAGE UsageList, + IN OUT PULONG UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_UsageAndPageListDifference( + IN PUSAGE_AND_PAGE PreviousUsageList, + IN PUSAGE_AND_PAGE CurrentUsageList, + OUT PUSAGE_AND_PAGE BreakUsageList, + OUT PUSAGE_AND_PAGE MakeUsageList, + IN ULONG UsageListLength); + +HIDAPI +NTSTATUS +DDKAPI +HidP_UsageListDifference( + IN PUSAGE PreviousUsageList, + IN PUSAGE CurrentUsageList, + OUT PUSAGE BreakUsageList, + OUT PUSAGE MakeUsageList, + IN ULONG UsageListLength); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __HIDPI_H */ diff --git a/reactos/w32api/include/ddk/hidusage.h b/reactos/w32api/include/ddk/hidusage.h new file mode 100644 index 00000000000..1f82af98d85 --- /dev/null +++ b/reactos/w32api/include/ddk/hidusage.h @@ -0,0 +1,210 @@ +/* + * hidusage.h + * + * HID usages + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __HIDUSAGE_H +#define __HIDUSAGE_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef USHORT USAGE, *PUSAGE; + +#define HID_USAGE_GENERIC_POINTER ((USAGE) 0x01) +#define HID_USAGE_GENERIC_MOUSE ((USAGE) 0x02) +#define HID_USAGE_GENERIC_JOYSTICK ((USAGE) 0x04) +#define HID_USAGE_GENERIC_GAMEPAD ((USAGE) 0x05) +#define HID_USAGE_GENERIC_KEYBOARD ((USAGE) 0x06) +#define HID_USAGE_GENERIC_KEYPAD ((USAGE) 0x07) +#define HID_USAGE_GENERIC_SYSTEM_CTL ((USAGE) 0x80) +#define HID_USAGE_GENERIC_X ((USAGE) 0x30) +#define HID_USAGE_GENERIC_Y ((USAGE) 0x31) +#define HID_USAGE_GENERIC_Z ((USAGE) 0x32) +#define HID_USAGE_GENERIC_RX ((USAGE) 0x33) +#define HID_USAGE_GENERIC_RY ((USAGE) 0x34) +#define HID_USAGE_GENERIC_RZ ((USAGE) 0x35) +#define HID_USAGE_GENERIC_SLIDER ((USAGE) 0x36) +#define HID_USAGE_GENERIC_DIAL ((USAGE) 0x37) +#define HID_USAGE_GENERIC_WHEEL ((USAGE) 0x38) +#define HID_USAGE_GENERIC_HATSWITCH ((USAGE) 0x39) +#define HID_USAGE_GENERIC_COUNTED_BUFFER ((USAGE) 0x3A) +#define HID_USAGE_GENERIC_BYTE_COUNT ((USAGE) 0x3B) +#define HID_USAGE_GENERIC_MOTION_WAKEUP ((USAGE) 0x3C) +#define HID_USAGE_GENERIC_VX ((USAGE) 0x40) +#define HID_USAGE_GENERIC_VY ((USAGE) 0x41) +#define HID_USAGE_GENERIC_VZ ((USAGE) 0x42) +#define HID_USAGE_GENERIC_VBRX ((USAGE) 0x43) +#define HID_USAGE_GENERIC_VBRY ((USAGE) 0x44) +#define HID_USAGE_GENERIC_VBRZ ((USAGE) 0x45) +#define HID_USAGE_GENERIC_VNO ((USAGE) 0x46) +#define HID_USAGE_GENERIC_SYSCTL_POWER ((USAGE) 0x81) +#define HID_USAGE_GENERIC_SYSCTL_SLEEP ((USAGE) 0x82) +#define HID_USAGE_GENERIC_SYSCTL_WAKE ((USAGE) 0x83) +#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU ((USAGE) 0x84) +#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU ((USAGE) 0x85) +#define HID_USAGE_GENERIC_SYSCTL_APP_MENU ((USAGE) 0x86) +#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU ((USAGE) 0x87) +#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT ((USAGE) 0x88) +#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT ((USAGE) 0x89) +#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT ((USAGE) 0x8A) +#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT ((USAGE) 0x8B) +#define HID_USAGE_GENERIC_SYSCTL_MENU_UP ((USAGE) 0x8C) +#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN ((USAGE) 0x8D) + +#define HID_USAGE_KEYBOARD_NOEVENT ((USAGE) 0x00) +#define HID_USAGE_KEYBOARD_ROLLOVER ((USAGE) 0x01) +#define HID_USAGE_KEYBOARD_POSTFAIL ((USAGE) 0x02) +#define HID_USAGE_KEYBOARD_UNDEFINED ((USAGE) 0x03) +#define HID_USAGE_KEYBOARD_aA ((USAGE) 0x04) +#define HID_USAGE_KEYBOARD_zZ ((USAGE) 0x1D) +#define HID_USAGE_KEYBOARD_ONE ((USAGE) 0x1E) +#define HID_USAGE_KEYBOARD_ZERO ((USAGE) 0x27) +#define HID_USAGE_KEYBOARD_LCTRL ((USAGE) 0xE0) +#define HID_USAGE_KEYBOARD_LSHFT ((USAGE) 0xE1) +#define HID_USAGE_KEYBOARD_LALT ((USAGE) 0xE2) +#define HID_USAGE_KEYBOARD_LGUI ((USAGE) 0xE3) +#define HID_USAGE_KEYBOARD_RCTRL ((USAGE) 0xE4) +#define HID_USAGE_KEYBOARD_RSHFT ((USAGE) 0xE5) +#define HID_USAGE_KEYBOARD_RALT ((USAGE) 0xE6) +#define HID_USAGE_KEYBOARD_RGUI ((USAGE) 0xE7) +#define HID_USAGE_KEYBOARD_SCROLL_LOCK ((USAGE) 0x47) +#define HID_USAGE_KEYBOARD_NUM_LOCK ((USAGE) 0x53) +#define HID_USAGE_KEYBOARD_CAPS_LOCK ((USAGE) 0x39) +#define HID_USAGE_KEYBOARD_F1 ((USAGE) 0x3A) +#define HID_USAGE_KEYBOARD_F12 ((USAGE) 0x45) +#define HID_USAGE_KEYBOARD_RETURN ((USAGE) 0x28) +#define HID_USAGE_KEYBOARD_ESCAPE ((USAGE) 0x29) +#define HID_USAGE_KEYBOARD_DELETE ((USAGE) 0x2A) +#define HID_USAGE_KEYBOARD_PRINT_SCREEN ((USAGE) 0x46) + +#define HID_USAGE_LED_NUM_LOCK ((USAGE) 0x01) +#define HID_USAGE_LED_CAPS_LOCK ((USAGE) 0x02) +#define HID_USAGE_LED_SCROLL_LOCK ((USAGE) 0x03) +#define HID_USAGE_LED_COMPOSE ((USAGE) 0x04) +#define HID_USAGE_LED_KANA ((USAGE) 0x05) +#define HID_USAGE_LED_POWER ((USAGE) 0x06) +#define HID_USAGE_LED_SHIFT ((USAGE) 0x07) +#define HID_USAGE_LED_DO_NOT_DISTURB ((USAGE) 0x08) +#define HID_USAGE_LED_MUTE ((USAGE) 0x09) +#define HID_USAGE_LED_TONE_ENABLE ((USAGE) 0x0A) +#define HID_USAGE_LED_HIGH_CUT_FILTER ((USAGE) 0x0B) +#define HID_USAGE_LED_LOW_CUT_FILTER ((USAGE) 0x0C) +#define HID_USAGE_LED_EQUALIZER_ENABLE ((USAGE) 0x0D) +#define HID_USAGE_LED_SOUND_FIELD_ON ((USAGE) 0x0E) +#define HID_USAGE_LED_SURROUND_FIELD_ON ((USAGE) 0x0F) +#define HID_USAGE_LED_REPEAT ((USAGE) 0x10) +#define HID_USAGE_LED_STEREO ((USAGE) 0x11) +#define HID_USAGE_LED_SAMPLING_RATE_DETECT ((USAGE) 0x12) +#define HID_USAGE_LED_SPINNING ((USAGE) 0x13) +#define HID_USAGE_LED_CAV ((USAGE) 0x14) +#define HID_USAGE_LED_CLV ((USAGE) 0x15) +#define HID_USAGE_LED_RECORDING_FORMAT_DET ((USAGE) 0x16) +#define HID_USAGE_LED_OFF_HOOK ((USAGE) 0x17) +#define HID_USAGE_LED_RING ((USAGE) 0x18) +#define HID_USAGE_LED_MESSAGE_WAITING ((USAGE) 0x19) +#define HID_USAGE_LED_DATA_MODE ((USAGE) 0x1A) +#define HID_USAGE_LED_BATTERY_OPERATION ((USAGE) 0x1B) +#define HID_USAGE_LED_BATTERY_OK ((USAGE) 0x1C) +#define HID_USAGE_LED_BATTERY_LOW ((USAGE) 0x1D) +#define HID_USAGE_LED_SPEAKER ((USAGE) 0x1E) +#define HID_USAGE_LED_HEAD_SET ((USAGE) 0x1F) +#define HID_USAGE_LED_HOLD ((USAGE) 0x20) +#define HID_USAGE_LED_MICROPHONE ((USAGE) 0x21) +#define HID_USAGE_LED_COVERAGE ((USAGE) 0x22) +#define HID_USAGE_LED_NIGHT_MODE ((USAGE) 0x23) +#define HID_USAGE_LED_SEND_CALLS ((USAGE) 0x24) +#define HID_USAGE_LED_CALL_PICKUP ((USAGE) 0x25) +#define HID_USAGE_LED_CONFERENCE ((USAGE) 0x26) +#define HID_USAGE_LED_STAND_BY ((USAGE) 0x27) +#define HID_USAGE_LED_CAMERA_ON ((USAGE) 0x28) +#define HID_USAGE_LED_CAMERA_OFF ((USAGE) 0x29) +#define HID_USAGE_LED_ON_LINE ((USAGE) 0x2A) +#define HID_USAGE_LED_OFF_LINE ((USAGE) 0x2B) +#define HID_USAGE_LED_BUSY ((USAGE) 0x2C) +#define HID_USAGE_LED_READY ((USAGE) 0x2D) +#define HID_USAGE_LED_PAPER_OUT ((USAGE) 0x2E) +#define HID_USAGE_LED_PAPER_JAM ((USAGE) 0x2F) +#define HID_USAGE_LED_REMOTE ((USAGE) 0x30) +#define HID_USAGE_LED_FORWARD ((USAGE) 0x31) +#define HID_USAGE_LED_REVERSE ((USAGE) 0x32) +#define HID_USAGE_LED_STOP ((USAGE) 0x33) +#define HID_USAGE_LED_REWIND ((USAGE) 0x34) +#define HID_USAGE_LED_FAST_FORWARD ((USAGE) 0x35) +#define HID_USAGE_LED_PLAY ((USAGE) 0x36) +#define HID_USAGE_LED_PAUSE ((USAGE) 0x37) +#define HID_USAGE_LED_RECORD ((USAGE) 0x38) +#define HID_USAGE_LED_ERROR ((USAGE) 0x39) +#define HID_USAGE_LED_SELECTED_INDICATOR ((USAGE) 0x3A) +#define HID_USAGE_LED_IN_USE_INDICATOR ((USAGE) 0x3B) +#define HID_USAGE_LED_MULTI_MODE_INDICATOR ((USAGE) 0x3C) +#define HID_USAGE_LED_INDICATOR_ON ((USAGE) 0x3D) +#define HID_USAGE_LED_INDICATOR_FLASH ((USAGE) 0x3E) +#define HID_USAGE_LED_INDICATOR_SLOW_BLINK ((USAGE) 0x3F) +#define HID_USAGE_LED_INDICATOR_FAST_BLINK ((USAGE) 0x40) +#define HID_USAGE_LED_INDICATOR_OFF ((USAGE) 0x41) +#define HID_USAGE_LED_FLASH_ON_TIME ((USAGE) 0x42) +#define HID_USAGE_LED_SLOW_BLINK_ON_TIME ((USAGE) 0x43) +#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME ((USAGE) 0x44) +#define HID_USAGE_LED_FAST_BLINK_ON_TIME ((USAGE) 0x45) +#define HID_USAGE_LED_FAST_BLINK_OFF_TIME ((USAGE) 0x46) +#define HID_USAGE_LED_INDICATOR_COLOR ((USAGE) 0x47) +#define HID_USAGE_LED_RED ((USAGE) 0x48) +#define HID_USAGE_LED_GREEN ((USAGE) 0x49) +#define HID_USAGE_LED_AMBER ((USAGE) 0x4A) +#define HID_USAGE_LED_GENERIC_INDICATOR ((USAGE) 0x3B) + +#define HID_USAGE_PAGE_UNDEFINED ((USAGE) 0x00) +#define HID_USAGE_PAGE_GENERIC ((USAGE) 0x01) +#define HID_USAGE_PAGE_SIMULATION ((USAGE) 0x02) +#define HID_USAGE_PAGE_VR ((USAGE) 0x03) +#define HID_USAGE_PAGE_SPORT ((USAGE) 0x04) +#define HID_USAGE_PAGE_GAME ((USAGE) 0x05) +#define HID_USAGE_PAGE_KEYBOARD ((USAGE) 0x07) +#define HID_USAGE_PAGE_LED ((USAGE) 0x08) +#define HID_USAGE_PAGE_BUTTON ((USAGE) 0x09) +#define HID_USAGE_PAGE_ORDINAL ((USAGE) 0x0A) +#define HID_USAGE_PAGE_TELEPHONY ((USAGE) 0x0B) +#define HID_USAGE_PAGE_CONSUMER ((USAGE) 0x0C) +#define HID_USAGE_PAGE_DIGITIZER ((USAGE) 0x0D) +#define HID_USAGE_PAGE_UNICODE ((USAGE) 0x10) +#define HID_USAGE_PAGE_ALPHANUMERIC ((USAGE) 0x14) + +#define HID_USAGE_TELEPHONY_PHONE ((USAGE) 0x01) +#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE ((USAGE) 0x02) +#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS ((USAGE) 0x03) +#define HID_USAGE_TELEPHONY_HANDSET ((USAGE) 0x04) +#define HID_USAGE_TELEPHONY_HEADSET ((USAGE) 0x05) +#define HID_USAGE_TELEPHONY_KEYPAD ((USAGE) 0x06) +#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON ((USAGE) 0x07) + +#define HID_USAGE_SIMULATION_RUDDER ((USAGE) 0xBA) +#define HID_USAGE_SIMULATION_THROTTLE ((USAGE) 0xBB) + +#ifdef __cplusplus +} +#endif + +#endif /* __HIDUSAGE_H */ diff --git a/reactos/w32api/include/ddk/mcd.h b/reactos/w32api/include/ddk/mcd.h new file mode 100644 index 00000000000..c5e2380cf4e --- /dev/null +++ b/reactos/w32api/include/ddk/mcd.h @@ -0,0 +1,147 @@ +/* + * mcd.h + * + * Media changer driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __MCD_H +#define __MCD_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "srb.h" +#include "scsi.h" +#include "ntddchgr.h" + +#if defined(_MCD_) + #define CHANGERAPI DECLSPEC_EXPORT +#else + #define CHANGERAPI DECLSPEC_IMPORT +#endif + +#ifdef DebugPrint +#undef DebugPrint +#endif + +#ifdef DBG +#define DebugPrint(x) ChangerClassDebugPrint x +#else +#define DebugPrint(x) +#endif + +#define MAXIMUM_CHANGER_INQUIRY_DATA 252 + +CHANGERAPI +PVOID +DDKAPI +ChangerClassAllocatePool( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes); + +VOID +ChangerClassDebugPrint( + ULONG DebugPrintLevel, + PCCHAR DebugMessage, + ...); + +CHANGERAPI +PVOID +DDKAPI +ChangerClassFreePool( + IN PVOID PoolToFree); + +CHANGERAPI +NTSTATUS +DDKAPI +ChangerClassSendSrbSynchronous( + IN PDEVICE_OBJECT DeviceObject, + IN PSCSI_REQUEST_BLOCK Srb, + IN PVOID Buffer, + IN ULONG BufferSize, + IN BOOLEAN WriteToDevice); + + +typedef NTSTATUS DDKAPI +(*CHANGER_INITIALIZE)( + IN PDEVICE_OBJECT DeviceObject); + +typedef ULONG DDKAPI +(*CHANGER_EXTENSION_SIZE)( + VOID); + +typedef VOID DDKAPI +(*CHANGER_ERROR_ROUTINE)( + PDEVICE_OBJECT DeviceObject, + PSCSI_REQUEST_BLOCK Srb, + NTSTATUS *Status, + BOOLEAN *Retry); + +typedef NTSTATUS DDKAPI +(*CHANGER_COMMAND_ROUTINE)( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +typedef NTSTATUS DDKAPI +(*CHANGER_PERFORM_DIAGNOSTICS)( + IN PDEVICE_OBJECT DeviceObject, + OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError); + +typedef struct _MCD_INIT_DATA { + ULONG InitDataSize; + CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize; + CHANGER_INITIALIZE ChangerInitialize; + CHANGER_ERROR_ROUTINE ChangerError; + CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics; + CHANGER_COMMAND_ROUTINE ChangerGetParameters; + CHANGER_COMMAND_ROUTINE ChangerGetStatus; + CHANGER_COMMAND_ROUTINE ChangerGetProductData; + CHANGER_COMMAND_ROUTINE ChangerSetAccess; + CHANGER_COMMAND_ROUTINE ChangerGetElementStatus; + CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus; + CHANGER_COMMAND_ROUTINE ChangerSetPosition; + CHANGER_COMMAND_ROUTINE ChangerExchangeMedium; + CHANGER_COMMAND_ROUTINE ChangerMoveMedium; + CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit; + CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags; +} MCD_INIT_DATA, *PMCD_INIT_DATA; + +CHANGERAPI +NTSTATUS +DDKAPI +ChangerClassInitialize( + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPath, + IN PMCD_INIT_DATA MCDInitData); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __MCD_H */ diff --git a/reactos/w32api/include/ddk/miniport.h b/reactos/w32api/include/ddk/miniport.h new file mode 100644 index 00000000000..01bbd23a600 --- /dev/null +++ b/reactos/w32api/include/ddk/miniport.h @@ -0,0 +1,82 @@ +/* + * miniport.h + * + * Type definitions for miniport drivers + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __MINIPORT_H +#define __MINIPORT_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define EMULATOR_READ_ACCESS 0x01 +#define EMULATOR_WRITE_ACCESS 0x02 + +typedef enum _EMULATOR_PORT_ACCESS_TYPE { + Uchar, + Ushort, + Ulong +} EMULATOR_PORT_ACCESS_TYPE, *PEMULATOR_PORT_ACCESS_TYPE; + + +typedef struct _EMULATOR_ACCESS_ENTRY { + ULONG BasePort; + ULONG NumConsecutivePorts; + EMULATOR_PORT_ACCESS_TYPE AccessType; + UCHAR AccessMode; + UCHAR StringSupport; + PVOID Routine; +} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY; + +#ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in video.h */ +#define VIDEO_ACCESS_RANGE_DEFINED +typedef struct _VIDEO_ACCESS_RANGE { + PHYSICAL_ADDRESS RangeStart; + ULONG RangeLength; + UCHAR RangeInIoSpace; + UCHAR RangeVisible; + UCHAR RangeShareable; + UCHAR RangePassive; +} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; +#endif + +typedef VOID DDKAPI +(*PBANKED_SECTION_ROUTINE)( + IN ULONG ReadBank, + IN ULONG WriteBank, + IN PVOID Context); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __MINIPORT_H */ diff --git a/reactos/w32api/include/ddk/minitape.h b/reactos/w32api/include/ddk/minitape.h new file mode 100644 index 00000000000..7540dea625c --- /dev/null +++ b/reactos/w32api/include/ddk/minitape.h @@ -0,0 +1,223 @@ +/* + * minitape.h + * + * Minitape driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ +#ifndef __MINITAPE_H +#define __MINITAPE_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#define MEDIA_ERASEABLE 0x00000001 +#define MEDIA_WRITE_ONCE 0x00000002 +#define MEDIA_READ_ONLY 0x00000004 +#define MEDIA_READ_WRITE 0x00000008 +#define MEDIA_WRITE_PROTECTED 0x00000100 +#define MEDIA_CURRENTLY_MOUNTED 0x80000000 + +typedef enum _TAPE_STATUS { + TAPE_STATUS_SEND_SRB_AND_CALLBACK, + TAPE_STATUS_CALLBACK, + TAPE_STATUS_CHECK_TEST_UNIT_READY, + TAPE_STATUS_SUCCESS, + TAPE_STATUS_INSUFFICIENT_RESOURCES, + TAPE_STATUS_NOT_IMPLEMENTED, + TAPE_STATUS_INVALID_DEVICE_REQUEST, + TAPE_STATUS_INVALID_PARAMETER, + TAPE_STATUS_MEDIA_CHANGED, + TAPE_STATUS_BUS_RESET, + TAPE_STATUS_SETMARK_DETECTED, + TAPE_STATUS_FILEMARK_DETECTED, + TAPE_STATUS_BEGINNING_OF_MEDIA, + TAPE_STATUS_END_OF_MEDIA, + TAPE_STATUS_BUFFER_OVERFLOW, + TAPE_STATUS_NO_DATA_DETECTED, + TAPE_STATUS_EOM_OVERFLOW, + TAPE_STATUS_NO_MEDIA, + TAPE_STATUS_IO_DEVICE_ERROR, + TAPE_STATUS_UNRECOGNIZED_MEDIA, + TAPE_STATUS_DEVICE_NOT_READY, + TAPE_STATUS_MEDIA_WRITE_PROTECTED, + TAPE_STATUS_DEVICE_DATA_ERROR, + TAPE_STATUS_NO_SUCH_DEVICE, + TAPE_STATUS_INVALID_BLOCK_LENGTH, + TAPE_STATUS_IO_TIMEOUT, + TAPE_STATUS_DEVICE_NOT_CONNECTED, + TAPE_STATUS_DATA_OVERRUN, + TAPE_STATUS_DEVICE_BUSY, + TAPE_STATUS_REQUIRES_CLEANING, + TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED +} TAPE_STATUS, *PTAPE_STATUS; + +#define INQUIRYDATABUFFERSIZE 36 +#ifndef _INQUIRYDATA_DEFINED /* also in scsi.h */ +#define _INQUIRYDATA_DEFINED +typedef struct _INQUIRYDATA { + UCHAR DeviceType : 5; + UCHAR DeviceTypeQualifier : 3; + UCHAR DeviceTypeModifier : 7; + UCHAR RemovableMedia : 1; + union { + UCHAR Versions; + struct { + UCHAR ANSIVersion : 3; + UCHAR ECMAVersion : 3; + UCHAR ISOVersion : 2; + }; + }; + UCHAR ResponseDataFormat : 4; + UCHAR HiSupport : 1; + UCHAR NormACA : 1; + UCHAR TerminateTask : 1; + UCHAR AERC : 1; + UCHAR AdditionalLength; + UCHAR Reserved; + UCHAR Addr16 : 1; + UCHAR Addr32 : 1; + UCHAR AckReqQ: 1; + UCHAR MediumChanger : 1; + UCHAR MultiPort : 1; + UCHAR ReservedBit2 : 1; + UCHAR EnclosureServices : 1; + UCHAR ReservedBit3 : 1; + UCHAR SoftReset : 1; + UCHAR CommandQueue : 1; + UCHAR TransferDisable : 1; + UCHAR LinkedCommands : 1; + UCHAR Synchronous : 1; + UCHAR Wide16Bit : 1; + UCHAR Wide32Bit : 1; + UCHAR RelativeAddressing : 1; + UCHAR VendorId[8]; + UCHAR ProductId[16]; + UCHAR ProductRevisionLevel[4]; + UCHAR VendorSpecific[20]; + UCHAR Reserved3[40]; +} INQUIRYDATA, *PINQUIRYDATA; +#endif + +typedef struct _MODE_CAPABILITIES_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved1 : 2; + UCHAR PageLength; + UCHAR Reserved2[2]; + UCHAR RO : 1; + UCHAR Reserved3 : 4; + UCHAR SPREV : 1; + UCHAR Reserved4 : 2; + UCHAR Reserved5 : 3; + UCHAR EFMT : 1; + UCHAR Reserved6 : 1; + UCHAR QFA : 1; + UCHAR Reserved7 : 2; + UCHAR LOCK : 1; + UCHAR LOCKED : 1; + UCHAR PREVENT : 1; + UCHAR UNLOAD : 1; + UCHAR Reserved8 : 2; + UCHAR ECC : 1; + UCHAR CMPRS : 1; + UCHAR Reserved9 : 1; + UCHAR BLK512 : 1; + UCHAR BLK1024 : 1; + UCHAR Reserved10 : 4; + UCHAR SLOWB : 1; + UCHAR MaximumSpeedSupported[2]; + UCHAR MaximumStoredDefectedListEntries[2]; + UCHAR ContinuousTransferLimit[2]; + UCHAR CurrentSpeedSelected[2]; + UCHAR BufferSize[2]; + UCHAR Reserved11[2]; +} MODE_CAPABILITIES_PAGE, *PMODE_CAPABILITIES_PAGE; + +typedef BOOLEAN DDKAPI +(*TAPE_VERIFY_INQUIRY_ROUTINE)( + IN PINQUIRYDATA InquiryData, + IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); + +typedef VOID DDKAPI +(*TAPE_EXTENSION_INIT_ROUTINE)( + IN PVOID MinitapeExtension, + IN PINQUIRYDATA InquiryData, + IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage); + +typedef VOID DDKAPI +(*TAPE_ERROR_ROUTINE)( + IN PVOID MinitapeExtension, + IN PSCSI_REQUEST_BLOCK Srb, + IN OUT PTAPE_STATUS TapeStatus); + +typedef TAPE_STATUS DDKAPI +(*TAPE_PROCESS_COMMAND_ROUTINE)( + IN OUT PVOID MinitapeExtension, + IN OUT PVOID CommandExtension, + IN OUT PVOID CommandParameters, + IN OUT PSCSI_REQUEST_BLOCK Srb, + IN ULONG CallNumber, + IN TAPE_STATUS StatusOfLastCommand, + IN OUT PULONG RetryFlags); + +#define TAPE_RETRY_MASK 0x0000FFFF +#define IGNORE_ERRORS 0x00010000 +#define RETURN_ERRORS 0x00020000 + +typedef struct _TAPE_INIT_DATA { + TAPE_VERIFY_INQUIRY_ROUTINE VerifyInquiry; + BOOLEAN QueryModeCapabilitiesPage; + ULONG MinitapeExtensionSize; + TAPE_EXTENSION_INIT_ROUTINE ExtensionInit; + ULONG DefaultTimeOutValue; + TAPE_ERROR_ROUTINE TapeError; + ULONG CommandExtensionSize; + TAPE_PROCESS_COMMAND_ROUTINE CreatePartition; + TAPE_PROCESS_COMMAND_ROUTINE Erase; + TAPE_PROCESS_COMMAND_ROUTINE GetDriveParameters; + TAPE_PROCESS_COMMAND_ROUTINE GetMediaParameters; + TAPE_PROCESS_COMMAND_ROUTINE GetPosition; + TAPE_PROCESS_COMMAND_ROUTINE GetStatus; + TAPE_PROCESS_COMMAND_ROUTINE Prepare; + TAPE_PROCESS_COMMAND_ROUTINE SetDriveParameters; + TAPE_PROCESS_COMMAND_ROUTINE SetMediaParameters; + TAPE_PROCESS_COMMAND_ROUTINE SetPosition; + TAPE_PROCESS_COMMAND_ROUTINE WriteMarks; + TAPE_PROCESS_COMMAND_ROUTINE PreProcessReadWrite; /* optional */ +} TAPE_INIT_DATA, *PTAPE_INIT_DATA; + +typedef struct _TAPE_PHYS_POSITION { + ULONG SeekBlockAddress; + ULONG SpaceBlockCount; +} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __MINITAPE_H */ diff --git a/reactos/w32api/include/ddk/mountdev.h b/reactos/w32api/include/ddk/mountdev.h new file mode 100644 index 00000000000..d22d9be7ef0 --- /dev/null +++ b/reactos/w32api/include/ddk/mountdev.h @@ -0,0 +1,84 @@ +/* + * mountdev.h + * + * Mount point manager/mounted devices interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __MOUNTDEV_H +#define __MOUNTDEV_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "mountmgr.h" + + +#define IOCTL_MOUNTDEV_QUERY_DEVICE_NAME \ + CTL_CODE(MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_MOUNTDEV_QUERY_UNIQUE_ID \ + CTL_CODE(MOUNTDEVCONTROLTYPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY \ + CTL_CODE(MOUNTDEVCONTROLTYPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME \ + CTL_CODE(MOUNTDEVCONTROLTYPE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_MOUNTDEV_LINK_CREATED \ + CTL_CODE(MOUNTDEVCONTROLTYPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_MOUNTDEV_LINK_DELETED \ + CTL_CODE(MOUNTDEVCONTROLTYPE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +typedef struct _MOUNTDEV_SUGGESTED_LINK_NAME { + BOOLEAN UseOnlyIfThereAreNoOtherLinks; + USHORT NameLength; + WCHAR Name[1]; +} MOUNTDEV_SUGGESTED_LINK_NAME, *PMOUNTDEV_SUGGESTED_LINK_NAME; + +typedef struct _MOUNTDEV_UNIQUE_ID { + USHORT UniqueIdLength; + UCHAR UniqueId[1]; +} MOUNTDEV_UNIQUE_ID, *PMOUNTDEV_UNIQUE_ID; + +typedef struct _MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT { + ULONG Size; + USHORT OldUniqueIdOffset; + USHORT OldUniqueIdLength; + USHORT NewUniqueIdOffset; + USHORT NewUniqueIdLength; +} MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __MOUNTDEV_H */ diff --git a/reactos/w32api/include/ddk/mountmgr.h b/reactos/w32api/include/ddk/mountmgr.h new file mode 100644 index 00000000000..ec5241c141a --- /dev/null +++ b/reactos/w32api/include/ddk/mountmgr.h @@ -0,0 +1,144 @@ +/* + * mountmgr.h + * + * Mount point manager interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __MOUNTMGR_H +#define __MOUNTMGR_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +DEFINE_GUID(MOUNTDEV_MOUNTED_DEVICE_GUID, + 0x53f5630d, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +#define MOUNTMGRCONTROLTYPE ((ULONG)'m') +#define MOUNTDEVCONTROLTYPE ((ULONG)'M') + +#define MOUNTMGR_DEVICE_NAME L"\\Device\\MountPointManager" +#define MOUNTMGR_DOS_DEVICE_NAME L"\\\\.\\MountPointManager" + +#define IOCTL_MOUNTMGR_CREATE_POINT \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_QUERY_POINTS \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_MOUNTMGR_DELETE_POINTS \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_CHANGE_NOTIFY \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION \ + CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS) + + +typedef struct _MOUNTDEV_NAME { + USHORT NameLength; + WCHAR Name[1]; +} MOUNTDEV_NAME, *PMOUNTDEV_NAME; + +typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO { + ULONG EpicNumber; +} MOUNTMGR_CHANGE_NOTIFY_INFO, *PMOUNTMGR_CHANGE_NOTIFY_INFO; + +typedef struct _MOUNTMGR_CREATE_POINT_INPUT { + USHORT SymbolicLinkNameOffset; + USHORT SymbolicLinkNameLength; + USHORT DeviceNameOffset; + USHORT DeviceNameLength; +} MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT; + +typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION { + BOOLEAN DriveLetterWasAssigned; + UCHAR CurrentDriveLetter; +} MOUNTMGR_DRIVE_LETTER_INFORMATION, *PMOUNTMGR_DRIVE_LETTER_INFORMATION; + +typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET { + USHORT DeviceNameLength; + WCHAR DeviceName[1]; +} MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET; + +typedef struct _MOUNTMGR_MOUNT_POINT { + ULONG SymbolicLinkNameOffset; + USHORT SymbolicLinkNameLength; + ULONG UniqueIdOffset; + USHORT UniqueIdLength; + ULONG DeviceNameOffset; + USHORT DeviceNameLength; +} MOUNTMGR_MOUNT_POINT, *PMOUNTMGR_MOUNT_POINT; + +typedef struct _MOUNTMGR_MOUNT_POINTS { + ULONG Size; + ULONG NumberOfMountPoints; + MOUNTMGR_MOUNT_POINT MountPoints[1]; +} MOUNTMGR_MOUNT_POINTS, *PMOUNTMGR_MOUNT_POINTS; + +typedef struct _MOUNTMGR_TARGET_NAME { + USHORT DeviceNameLength; + WCHAR DeviceName[1]; +} MOUNTMGR_TARGET_NAME, *PMOUNTMGR_TARGET_NAME; + +typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT { + USHORT SourceVolumeNameOffset; + USHORT SourceVolumeNameLength; + USHORT TargetVolumeNameOffset; + USHORT TargetVolumeNameLength; +} MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __MOUNTMGR_H */ diff --git a/reactos/w32api/include/ddk/ndis.h b/reactos/w32api/include/ddk/ndis.h new file mode 100644 index 00000000000..216249df48e --- /dev/null +++ b/reactos/w32api/include/ddk/ndis.h @@ -0,0 +1,5189 @@ +/* + * ndis.h + * + * Network Device Interface Specification definitions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * DEFINES: i386 - Target platform is i386 + * _NDIS_ - Define only for NDIS library + * NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers + * NDIS40 - Use NDIS 4.0 structures by default + * NDIS50 - Use NDIS 5.0 structures by default + * NDIS50_MINIPORT - Building NDIS 5.0 miniport driver + * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver + */ +#ifndef __NDIS_H +#define __NDIS_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddndis.h" +#include "netpnp.h" +#include "netevent.h" +#include + +#if defined(_NDIS_) + #define NDISAPI DECLSPEC_EXPORT +#else + #define NDISAPI DECLSPEC_IMPORT +#endif + +#if defined(NDIS50_MINIPORT) +#ifndef NDIS50 +#define NDIS50 +#endif +#endif /* NDIS50_MINIPORT */ + +#if defined(NDIS51_MINIPORT) +#ifndef NDIS51 +#define NDIS51 +#endif +#endif /* NDIS51_MINIPORT */ + +/* NDIS 3.0 is default */ +#if !defined(NDIS30) || !defined(NDIS40) || !defined(NDIS50) || !defined(NDIS51) +#define NDIS30 +#endif /* !NDIS30 || !NDIS40 || !NDIS50 || !NDIS51 */ + +#if 1 +/* FIXME: */ +typedef PVOID QUEUED_CLOSE; +#endif + +typedef ULONG NDIS_OID, *PNDIS_OID; + +typedef struct _X_FILTER FDDI_FILTER, *PFDDI_FILTER; +typedef struct _X_FILTER TR_FILTER, *PTR_FILTER; +typedef struct _X_FILTER NULL_FILTER, *PNULL_FILTER; + +typedef struct _REFERENCE { + KSPIN_LOCK SpinLock; + USHORT ReferenceCount; + BOOLEAN Closing; +} REFERENCE, * PREFERENCE; + + +/* NDIS base types */ + +typedef struct _NDIS_SPIN_LOCK { + KSPIN_LOCK SpinLock; + KIRQL OldIrql; +} NDIS_SPIN_LOCK, * PNDIS_SPIN_LOCK; + +typedef struct _NDIS_EVENT { + KEVENT Event; +} NDIS_EVENT, *PNDIS_EVENT; + +typedef PVOID NDIS_HANDLE, *PNDIS_HANDLE; +typedef int NDIS_STATUS, *PNDIS_STATUS; + +typedef ANSI_STRING NDIS_ANSI_STRING, *PNDIS_ANSI_STRING; +typedef UNICODE_STRING NDIS_STRING, *PNDIS_STRING; + +typedef MDL NDIS_BUFFER, *PNDIS_BUFFER; +typedef ULONG NDIS_ERROR_CODE, *PNDIS_ERROR_CODE; + + +/* NDIS_STATUS constants */ +#define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS) +#define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING) +#define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L) +#define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L) +#define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L) +#define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L) +#define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L) +#define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L) +#define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L) +#define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L) +#define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L) +#define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L) +#define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L) +#define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL) +#define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL) +#define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL) +#define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL) +#define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL) +#define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL) +#define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L) +#define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L) +#define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L) +#define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION +#define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L) +#define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L) +#define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L) +#define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L) + +#define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L) +#define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L) +#define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L) +#define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW) + +#define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL) +#define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES) +#define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L) +#define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L) +#define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L) +#define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L) +#define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L) +#define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L) +#define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L) +#define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL) +#define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL) +#define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL) +#define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL) +#define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL) +#define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED) +#define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL) +#define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L) +#define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L) +#define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L) +#define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L) +#define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L) +#define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L) +#define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L) +#define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L) +#define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L) +#define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L) +#define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL) +#define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL) +#define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL) +#define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL) +#define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL) +#define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL) + +#define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L) +#define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L) +#define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L) +#define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L) +#define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L) +#define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L) +#define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L) +#define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L) +#define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L) +#define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L) + +#define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L) +#define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST) +#define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE) + + +/* NDIS error codes for error logging */ + +#define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT +#define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE +#define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE +#define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND +#define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT +#define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE +#define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION +#define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT +#define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS +#define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION +#define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER +#define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER +#define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS +#define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL +#define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED + + +/* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */ +#define NDIS_MEMORY_CONTIGUOUS 0x00000001 +#define NDIS_MEMORY_NONCACHED 0x00000002 + +/* NIC attribute flags. Used by NdisMSetAttributes(Ex) */ +#define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001 +#define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002 +#define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004 +#define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008 +#define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010 +#define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020 +#define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040 +#define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080 +#define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100 +#define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200 + + +/* Lock */ + +typedef union _NDIS_RW_LOCK_REFCOUNT { + UINT RefCount; + UCHAR cacheLine[16]; +} NDIS_RW_LOCK_REFCOUNT; + +typedef struct _NDIS_RW_LOCK { + union { + struct { + KSPIN_LOCK SpinLock; + PVOID Context; + } s; + UCHAR Reserved[16]; + } u; + + NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS]; +} NDIS_RW_LOCK, *PNDIS_RW_LOCK; + +typedef struct _LOCK_STATE { + USHORT LockState; + KIRQL OldIrql; +} LOCK_STATE, *PLOCK_STATE; + + + +/* Timer */ + +typedef VOID DDKAPI +(*PNDIS_TIMER_FUNCTION)( + IN PVOID SystemSpecific1, + IN PVOID FunctionContext, + IN PVOID SystemSpecific2, + IN PVOID SystemSpecific3); + +typedef struct _NDIS_TIMER { + KTIMER Timer; + KDPC Dpc; +} NDIS_TIMER, *PNDIS_TIMER; + + + +/* Hardware */ + +typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA, *PNDIS_MCA_POS_DATA; +typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION, *PNDIS_EISA_SLOT_INFORMATION; +typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION, *PNDIS_EISA_FUNCTION_INFORMATION; +typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST, *PNDIS_RESOURCE_LIST; + +/* Hardware status codes (OID_GEN_HARDWARE_STATUS) */ +typedef enum _NDIS_HARDWARE_STATUS { + NdisHardwareStatusReady, + NdisHardwareStatusInitializing, + NdisHardwareStatusReset, + NdisHardwareStatusClosing, + NdisHardwareStatusNotReady +} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS; + +/* OID_GEN_GET_TIME_CAPS */ +typedef struct _GEN_GET_TIME_CAPS { + ULONG Flags; + ULONG ClockPrecision; +} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS; + +/* Flag bits */ +#define READABLE_LOCAL_CLOCK 0x00000001 +#define CLOCK_NETWORK_DERIVED 0x00000002 +#define CLOCK_PRECISION 0x00000004 +#define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008 +#define TIMED_SEND_CAPABLE 0x00000010 +#define TIME_STAMP_CAPABLE 0x00000020 + +/* OID_GEN_GET_NETCARD_TIME */ +typedef struct _GEN_GET_NETCARD_TIME { + ULONGLONG ReadTime; +} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME; + +/* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */ +typedef enum _NDIS_MEDIUM { + NdisMedium802_3, + NdisMedium802_5, + NdisMediumFddi, + NdisMediumWan, + NdisMediumLocalTalk, + NdisMediumDix, + NdisMediumArcnetRaw, + NdisMediumArcnet878_2, + NdisMediumAtm, + NdisMediumWirelessWan, + NdisMediumIrda, + NdisMediumBpc, + NdisMediumCoWan, + NdisMedium1394, + NdisMediumMax +} NDIS_MEDIUM, *PNDIS_MEDIUM; + +/* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */ +#define NDIS_PACKET_TYPE_DIRECTED 0x00000001 +#define NDIS_PACKET_TYPE_MULTICAST 0x00000002 +#define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004 +#define NDIS_PACKET_TYPE_BROADCAST 0x00000008 +#define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010 +#define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020 +#define NDIS_PACKET_TYPE_SMT 0x00000040 +#define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080 +#define NDIS_PACKET_TYPE_GROUP 0x00001000 +#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000 +#define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000 +#define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000 + +/* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */ +#define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001 +#define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002 +#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004 + +/* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */ +#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001 +#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002 +#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004 +#define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008 +#define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010 +#define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020 +#define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040 +#define NDIS_MAC_OPTION_RESERVED 0x80000000 + +/* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */ +typedef enum _NDIS_MEDIA_STATE { + NdisMediaStateConnected, + NdisMediaStateDisconnected +} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE; + +/* OID_GEN_SUPPORTED_GUIDS */ +typedef struct _NDIS_GUID { + GUID Guid; + union { + NDIS_OID Oid; + NDIS_STATUS Status; + } u; + ULONG Size; + ULONG Flags; +} NDIS_GUID, *PNDIS_GUID; + +#define NDIS_GUID_TO_OID 0x00000001 +#define NDIS_GUID_TO_STATUS 0x00000002 +#define NDIS_GUID_ANSI_STRING 0x00000004 +#define NDIS_GUID_UNICODE_STRING 0x00000008 +#define NDIS_GUID_ARRAY 0x00000010 + + +typedef struct _NDIS_PACKET_POOL { + NDIS_SPIN_LOCK SpinLock; + struct _NDIS_PACKET *FreeList; + UINT PacketLength; + UCHAR Buffer[1]; +} NDIS_PACKET_POOL, * PNDIS_PACKET_POOL; + +/* NDIS_PACKET_PRIVATE.Flags constants */ +#define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40 +#define fPACKET_ALLOCATED_BY_NDIS 0x80 + +typedef struct _NDIS_PACKET_PRIVATE { + UINT PhysicalCount; + UINT TotalLength; + PNDIS_BUFFER Head; + PNDIS_BUFFER Tail; + PNDIS_PACKET_POOL Pool; + UINT Count; + ULONG Flags; + BOOLEAN ValidCounts; + UCHAR NdisPacketFlags; + USHORT NdisPacketOobOffset; +} NDIS_PACKET_PRIVATE, * PNDIS_PACKET_PRIVATE; + +typedef struct _NDIS_PACKET { + NDIS_PACKET_PRIVATE Private; + union { + struct { + UCHAR MiniportReserved[2 * sizeof(PVOID)]; + UCHAR WrapperReserved[2 * sizeof(PVOID)]; + } s1; + struct { + UCHAR MiniportReservedEx[3 * sizeof(PVOID)]; + UCHAR WrapperReservedEx[sizeof(PVOID)]; + } s2; + struct { + UCHAR MacReserved[4 * sizeof(PVOID)]; + } s3; + } u; + ULONG_PTR Reserved[2]; + UCHAR ProtocolReserved[1]; +} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET; + +typedef enum _NDIS_CLASS_ID { + NdisClass802_3Priority, + NdisClassWirelessWanMbxMailbox, + NdisClassIrdaPacketInfo, + NdisClassAtmAALInfo +} NDIS_CLASS_ID; + +typedef struct MediaSpecificInformation { + UINT NextEntryOffset; + NDIS_CLASS_ID ClassId; + UINT Size; + UCHAR ClassInformation[1]; +} MEDIA_SPECIFIC_INFORMATION; + +typedef struct _NDIS_PACKET_OOB_DATA { + _ANONYMOUS_UNION union { + ULONGLONG TimeToSend; + ULONGLONG TimeSent; + } DUMMYUNIONNAME; + ULONGLONG TimeReceived; + UINT HeaderSize; + UINT SizeMediaSpecificInfo; + PVOID MediaSpecificInformation; + NDIS_STATUS Status; +} NDIS_PACKET_OOB_DATA, *PNDIS_PACKET_OOB_DATA; + +typedef struct _NDIS_PM_PACKET_PATTERN { + ULONG Priority; + ULONG Reserved; + ULONG MaskSize; + ULONG PatternOffset; + ULONG PatternSize; + ULONG PatternFlags; +} NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN; + + +/* Request types used by NdisRequest */ +typedef enum _NDIS_REQUEST_TYPE { + NdisRequestQueryInformation, + NdisRequestSetInformation, + NdisRequestQueryStatistics, + NdisRequestOpen, + NdisRequestClose, + NdisRequestSend, + NdisRequestTransferData, + NdisRequestReset, + NdisRequestGeneric1, + NdisRequestGeneric2, + NdisRequestGeneric3, + NdisRequestGeneric4 +} NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE; + +typedef struct _NDIS_REQUEST { + UCHAR MacReserved[4 * sizeof(PVOID)]; + NDIS_REQUEST_TYPE RequestType; + union _DATA { + struct QUERY_INFORMATION { + NDIS_OID Oid; + PVOID InformationBuffer; + UINT InformationBufferLength; + UINT BytesWritten; + UINT BytesNeeded; + } QUERY_INFORMATION; + struct SET_INFORMATION { + NDIS_OID Oid; + PVOID InformationBuffer; + UINT InformationBufferLength; + UINT BytesRead; + UINT BytesNeeded; + } SET_INFORMATION; + } DATA; +#if (defined(NDIS50) || defined(NDIS51)) + UCHAR NdisReserved[9 * sizeof(PVOID)]; + union { + UCHAR CallMgrReserved[2 * sizeof(PVOID)]; + UCHAR ProtocolReserved[2 * sizeof(PVOID)]; + }; + UCHAR MiniportReserved[2 * sizeof(PVOID)]; +#endif +} NDIS_REQUEST, *PNDIS_REQUEST; + + + +/* Wide Area Networks definitions */ + +typedef struct _NDIS_WAN_PACKET { + LIST_ENTRY WanPacketQueue; + PUCHAR CurrentBuffer; + ULONG CurrentLength; + PUCHAR StartBuffer; + PUCHAR EndBuffer; + PVOID ProtocolReserved1; + PVOID ProtocolReserved2; + PVOID ProtocolReserved3; + PVOID ProtocolReserved4; + PVOID MacReserved1; + PVOID MacReserved2; + PVOID MacReserved3; + PVOID MacReserved4; +} NDIS_WAN_PACKET, *PNDIS_WAN_PACKET; + + + +/* DMA channel information */ + +typedef struct _NDIS_DMA_DESCRIPTION { + BOOLEAN DemandMode; + BOOLEAN AutoInitialize; + BOOLEAN DmaChannelSpecified; + DMA_WIDTH DmaWidth; + DMA_SPEED DmaSpeed; + ULONG DmaPort; + ULONG DmaChannel; +} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION; + +typedef struct _NDIS_DMA_BLOCK { + PVOID MapRegisterBase; + KEVENT AllocationEvent; + PADAPTER_OBJECT SystemAdapterObject; + BOOLEAN InProgress; +} NDIS_DMA_BLOCK, *PNDIS_DMA_BLOCK; + + +/* Possible hardware architecture */ +typedef enum _NDIS_INTERFACE_TYPE { + NdisInterfaceInternal = Internal, + NdisInterfaceIsa = Isa, + NdisInterfaceEisa = Eisa, + NdisInterfaceMca = MicroChannel, + NdisInterfaceTurboChannel = TurboChannel, + NdisInterfacePci = PCIBus, + NdisInterfacePcMcia = PCMCIABus, + NdisInterfaceCBus = CBus, + NdisInterfaceMPIBus = MPIBus, + NdisInterfaceMPSABus = MPSABus, + NdisInterfaceProcessorInternal = ProcessorInternal, + NdisInterfaceInternalPowerBus = InternalPowerBus, + NdisInterfacePNPISABus = PNPISABus, + NdisInterfacePNPBus = PNPBus, + NdisMaximumInterfaceType +} NDIS_INTERFACE_TYPE, *PNDIS_INTERFACE_TYPE; + +#define NdisInterruptLevelSensitive LevelSensitive +#define NdisInterruptLatched Latched +typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE, *PNDIS_INTERRUPT_MODE; + + +typedef enum _NDIS_PARAMETER_TYPE { + NdisParameterInteger, + NdisParameterHexInteger, + NdisParameterString, + NdisParameterMultiString, + NdisParameterBinary +} NDIS_PARAMETER_TYPE, *PNDIS_PARAMETER_TYPE; + +typedef struct { + USHORT Length; + PVOID Buffer; +} BINARY_DATA; + +typedef struct _NDIS_CONFIGURATION_PARAMETER { + NDIS_PARAMETER_TYPE ParameterType; + union { + ULONG IntegerData; + NDIS_STRING StringData; + BINARY_DATA BinaryData; + } ParameterData; +} NDIS_CONFIGURATION_PARAMETER, *PNDIS_CONFIGURATION_PARAMETER; + + +typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS, *PNDIS_PHYSICAL_ADDRESS; + +typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT { + NDIS_PHYSICAL_ADDRESS PhysicalAddress; + UINT Length; +} NDIS_PHYSICAL_ADDRESS_UNIT, *PNDIS_PHYSICAL_ADDRESS_UNIT; + +typedef struct _NDIS_WAN_LINE_DOWN { + UCHAR RemoteAddress[6]; + UCHAR LocalAddress[6]; +} NDIS_WAN_LINE_DOWN, *PNDIS_WAN_LINE_DOWN; + +typedef struct _NDIS_WAN_LINE_UP { + ULONG LinkSpeed; + ULONG MaximumTotalSize; + NDIS_WAN_QUALITY Quality; + USHORT SendWindow; + UCHAR RemoteAddress[6]; + OUT UCHAR LocalAddress[6]; + ULONG ProtocolBufferLength; + PUCHAR ProtocolBuffer; + USHORT ProtocolType; + NDIS_STRING DeviceName; +} NDIS_WAN_LINE_UP, *PNDIS_WAN_LINE_UP; + + +typedef VOID DDKAPI +(*ADAPTER_SHUTDOWN_HANDLER)( + IN PVOID ShutdownContext); + + +typedef struct _OID_LIST OID_LIST, *POID_LIST; + +/* PnP state */ + +typedef enum _NDIS_PNP_DEVICE_STATE { + NdisPnPDeviceAdded, + NdisPnPDeviceStarted, + NdisPnPDeviceQueryStopped, + NdisPnPDeviceStopped, + NdisPnPDeviceQueryRemoved, + NdisPnPDeviceRemoved, + NdisPnPDeviceSurpriseRemoved +} NDIS_PNP_DEVICE_STATE; + +#define NDIS_DEVICE_NOT_STOPPABLE 0x00000001 +#define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002 +#define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004 +#define NDIS_DEVICE_DISABLE_PM 0x00000008 +#define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010 +#define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020 +#define NDIS_DEVICE_RESERVED 0x00000040 +#define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080 +#define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100 + + +/* OID_GEN_NETWORK_LAYER_ADDRESSES */ +typedef struct _NETWORK_ADDRESS { + USHORT AddressLength; + USHORT AddressType; + UCHAR Address[1]; +} NETWORK_ADDRESS, *PNETWORK_ADDRESS; + +typedef struct _NETWORK_ADDRESS_LIST { + LONG AddressCount; + USHORT AddressType; + NETWORK_ADDRESS Address[1]; +} NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST; + +/* Protocol types supported by NDIS */ +#define NDIS_PROTOCOL_ID_DEFAULT 0x00 +#define NDIS_PROTOCOL_ID_TCP_IP 0x02 +#define NDIS_PROTOCOL_ID_IPX 0x06 +#define NDIS_PROTOCOL_ID_NBF 0x07 +#define NDIS_PROTOCOL_ID_MAX 0x0F +#define NDIS_PROTOCOL_ID_MASK 0x0F + + +/* OID_GEN_TRANSPORT_HEADER_OFFSET */ +typedef struct _TRANSPORT_HEADER_OFFSET { + USHORT ProtocolType; + USHORT HeaderOffset; +} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET; + + +/* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */ +typedef struct _NDIS_CO_LINK_SPEED { + ULONG Outbound; + ULONG Inbound; +} NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED; + +typedef ULONG NDIS_AF, *PNDIS_AF; +#define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1) +#define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2) +#define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3) +#define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4) +#define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5) +#define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6) +#define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800) +#define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801) + +#define CO_ADDRESS_FAMILY_PROXY 0x80000000 + +typedef struct { + NDIS_AF AddressFamily; + ULONG MajorVersion; + ULONG MinorVersion; +} CO_ADDRESS_FAMILY, *PCO_ADDRESS_FAMILY; + +typedef struct _CO_FLOW_PARAMETERS { + ULONG TokenRate; + ULONG TokenBucketSize; + ULONG PeakBandwidth; + ULONG Latency; + ULONG DelayVariation; + GUARANTEE LevelOfGuarantee; + ULONG CostOfCall; + ULONG NetworkAvailability; + ULONG MaxSduSize; +} CO_FLOW_PARAMETERS, *PCO_FLOW_PARAMETERS; + +typedef struct _CO_SPECIFIC_PARAMETERS { + ULONG ParamType; + ULONG Length; + UCHAR Parameters[1]; +} CO_SPECIFIC_PARAMETERS, *PCO_SPECIFIC_PARAMETERS; + +typedef struct _CO_CALL_MANAGER_PARAMETERS { + CO_FLOW_PARAMETERS Transmit; + CO_FLOW_PARAMETERS Receive; + CO_SPECIFIC_PARAMETERS CallMgrSpecific; +} CO_CALL_MANAGER_PARAMETERS, *PCO_CALL_MANAGER_PARAMETERS; + +/* CO_MEDIA_PARAMETERS.Flags constants */ +#define RECEIVE_TIME_INDICATION 0x00000001 +#define USE_TIME_STAMPS 0x00000002 +#define TRANSMIT_VC 0x00000004 +#define RECEIVE_VC 0x00000008 +#define INDICATE_ERRED_PACKETS 0x00000010 +#define INDICATE_END_OF_TX 0x00000020 +#define RESERVE_RESOURCES_VC 0x00000040 +#define ROUND_DOWN_FLOW 0x00000080 +#define ROUND_UP_FLOW 0x00000100 + +typedef struct _CO_MEDIA_PARAMETERS { + ULONG Flags; + ULONG ReceivePriority; + ULONG ReceiveSizeHint; + CO_SPECIFIC_PARAMETERS MediaSpecific; +} CO_MEDIA_PARAMETERS, *PCO_MEDIA_PARAMETERS; + +/* CO_CALL_PARAMETERS.Flags constants */ +#define PERMANENT_VC 0x00000001 +#define CALL_PARAMETERS_CHANGED 0x00000002 +#define QUERY_CALL_PARAMETERS 0x00000004 +#define BROADCAST_VC 0x00000008 +#define MULTIPOINT_VC 0x00000010 + +typedef struct _CO_CALL_PARAMETERS { + ULONG Flags; + PCO_CALL_MANAGER_PARAMETERS CallMgrParameters; + PCO_MEDIA_PARAMETERS MediaParameters; +} CO_CALL_PARAMETERS, *PCO_CALL_PARAMETERS; + +typedef struct _CO_SAP { + ULONG SapType; + ULONG SapLength; + UCHAR Sap[1]; +} CO_SAP, *PCO_SAP; + +typedef struct _NDIS_IPSEC_PACKET_INFO { + _ANONYMOUS_UNION union { + struct { + NDIS_HANDLE OffloadHandle; + NDIS_HANDLE NextOffloadHandle; + } Transmit; + struct { + ULONG SA_DELETE_REQ : 1; + ULONG CRYPTO_DONE : 1; + ULONG NEXT_CRYPTO_DONE : 1; + ULONG CryptoStatus; + } Receive; + } DUMMYUNIONNAME; +} NDIS_IPSEC_PACKET_INFO, *PNDIS_IPSEC_PACKET_INFO; + +/* NDIS_MAC_FRAGMENT.Errors constants */ +#define WAN_ERROR_CRC 0x00000001 +#define WAN_ERROR_FRAMING 0x00000002 +#define WAN_ERROR_HARDWAREOVERRUN 0x00000004 +#define WAN_ERROR_BUFFEROVERRUN 0x00000008 +#define WAN_ERROR_TIMEOUT 0x00000010 +#define WAN_ERROR_ALIGNMENT 0x00000020 + +typedef struct _NDIS_MAC_FRAGMENT { + NDIS_HANDLE NdisLinkContext; + ULONG Errors; +} NDIS_MAC_FRAGMENT, *PNDIS_MAC_FRAGMENT; + +typedef struct _NDIS_MAC_LINE_DOWN { + NDIS_HANDLE NdisLinkContext; +} NDIS_MAC_LINE_DOWN, *PNDIS_MAC_LINE_DOWN; + +typedef struct _NDIS_MAC_LINE_UP { + ULONG LinkSpeed; + NDIS_WAN_QUALITY Quality; + USHORT SendWindow; + NDIS_HANDLE ConnectionWrapperID; + NDIS_HANDLE NdisLinkHandle; + NDIS_HANDLE NdisLinkContext; +} NDIS_MAC_LINE_UP, *PNDIS_MAC_LINE_UP; + +typedef struct _NDIS_PACKET_8021Q_INFO { + _ANONYMOUS_UNION union { + struct { + UINT32 UserPriority : 3; + UINT32 CanonicalFormatId : 1; + UINT32 VlanId : 12; + UINT32 Reserved : 16; + } TagHeader; + PVOID Value; + } DUMMYUNIONNAME; +} NDIS_PACKET_8021Q_INFO, *PNDIS_PACKET_8021Q_INFO; + +typedef enum _NDIS_PER_PACKET_INFO { + TcpIpChecksumPacketInfo, + IpSecPacketInfo, + TcpLargeSendPacketInfo, + ClassificationHandlePacketInfo, + NdisReserved, + ScatterGatherListPacketInfo, + Ieee8021QInfo, + OriginalPacketInfo, + PacketCancelId, + MaxPerPacketInfo +} NDIS_PER_PACKET_INFO, *PNDIS_PER_PACKET_INFO; + +typedef struct _NDIS_PACKET_EXTENSION { + PVOID NdisPacketInfo[MaxPerPacketInfo]; +} NDIS_PACKET_EXTENSION, *PNDIS_PACKET_EXTENSION; + +/* + * PNDIS_PACKET + * NDIS_GET_ORIGINAL_PACKET( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_ORIGINAL_PACKET(Packet) \ + NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) + +/* + * PVOID + * NDIS_GET_PACKET_CANCEL_ID( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_PACKET_CANCEL_ID(Packet) \ + NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) + +/* + * PNDIS_PACKET_EXTENSION + * NDIS_PACKET_EXTENSION_FROM_PACKET( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \ + ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \ + + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA))) + +/* + * PVOID + * NDIS_PER_PACKET_INFO_FROM_PACKET( + * IN OUT PNDIS_PACKET Packet, + * IN NDIS_PER_PACKET_INFO InfoType); + */ +#define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \ + ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \ + + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)] + +/* + * VOID + * NDIS_SET_ORIGINAL_PACKET( + * IN OUT PNDIS_PACKET Packet, + * IN PNDIS_PACKET OriginalPacket); + */ +#define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \ + NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket) + +/* + * VOID + * NDIS_SET_PACKET_CANCEL_ID( + * IN PNDIS_PACKET Packet + * IN ULONG_PTR CancelId); + */ +#define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \ + NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId) + +typedef enum _NDIS_TASK { + TcpIpChecksumNdisTask, + IpSecNdisTask, + TcpLargeSendNdisTask, + MaxNdisTask +} NDIS_TASK, *PNDIS_TASK; + +typedef struct _NDIS_TASK_IPSEC { + struct { + ULONG AH_ESP_COMBINED; + ULONG TRANSPORT_TUNNEL_COMBINED; + ULONG V4_OPTIONS; + ULONG RESERVED; + } Supported; + + struct { + ULONG MD5 : 1; + ULONG SHA_1 : 1; + ULONG Transport : 1; + ULONG Tunnel : 1; + ULONG Send : 1; + ULONG Receive : 1; + } V4AH; + + struct { + ULONG DES : 1; + ULONG RESERVED : 1; + ULONG TRIPLE_DES : 1; + ULONG NULL_ESP : 1; + ULONG Transport : 1; + ULONG Tunnel : 1; + ULONG Send : 1; + ULONG Receive : 1; + } V4ESP; +} NDIS_TASK_IPSEC, *PNDIS_TASK_IPSEC; + +typedef struct _NDIS_TASK_OFFLOAD { + ULONG Version; + ULONG Size; + NDIS_TASK Task; + ULONG OffsetNextTask; + ULONG TaskBufferLength; + UCHAR TaskBuffer[1]; +} NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD; + +/* NDIS_TASK_OFFLOAD_HEADER.Version constants */ +#define NDIS_TASK_OFFLOAD_VERSION 1 + +typedef enum _NDIS_ENCAPSULATION { + UNSPECIFIED_Encapsulation, + NULL_Encapsulation, + IEEE_802_3_Encapsulation, + IEEE_802_5_Encapsulation, + LLC_SNAP_ROUTED_Encapsulation, + LLC_SNAP_BRIDGED_Encapsulation +} NDIS_ENCAPSULATION; + +typedef struct _NDIS_ENCAPSULATION_FORMAT { + NDIS_ENCAPSULATION Encapsulation; + struct { + ULONG FixedHeaderSize : 1; + ULONG Reserved : 31; + } Flags; + ULONG EncapsulationHeaderSize; +} NDIS_ENCAPSULATION_FORMAT, *PNDIS_ENCAPSULATION_FORMAT; + +typedef struct _NDIS_TASK_TCP_IP_CHECKSUM { + struct { + ULONG IpOptionsSupported:1; + ULONG TcpOptionsSupported:1; + ULONG TcpChecksum:1; + ULONG UdpChecksum:1; + ULONG IpChecksum:1; + } V4Transmit; + + struct { + ULONG IpOptionsSupported : 1; + ULONG TcpOptionsSupported : 1; + ULONG TcpChecksum : 1; + ULONG UdpChecksum : 1; + ULONG IpChecksum : 1; + } V4Receive; + + struct { + ULONG IpOptionsSupported : 1; + ULONG TcpOptionsSupported : 1; + ULONG TcpChecksum : 1; + ULONG UdpChecksum : 1; + } V6Transmit; + + struct { + ULONG IpOptionsSupported : 1; + ULONG TcpOptionsSupported : 1; + ULONG TcpChecksum : 1; + ULONG UdpChecksum : 1; + } V6Receive; +} NDIS_TASK_TCP_IP_CHECKSUM, *PNDIS_TASK_TCP_IP_CHECKSUM; + +typedef struct _NDIS_TASK_TCP_LARGE_SEND { + ULONG Version; + ULONG MaxOffLoadSize; + ULONG MinSegmentCount; + BOOLEAN TcpOptions; + BOOLEAN IpOptions; +} NDIS_TASK_TCP_LARGE_SEND, *PNDIS_TASK_TCP_LARGE_SEND; + +typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO { + _ANONYMOUS_UNION union { + struct { + ULONG NdisPacketChecksumV4 : 1; + ULONG NdisPacketChecksumV6 : 1; + ULONG NdisPacketTcpChecksum : 1; + ULONG NdisPacketUdpChecksum : 1; + ULONG NdisPacketIpChecksum : 1; + } Transmit; + + struct { + ULONG NdisPacketTcpChecksumFailed : 1; + ULONG NdisPacketUdpChecksumFailed : 1; + ULONG NdisPacketIpChecksumFailed : 1; + ULONG NdisPacketTcpChecksumSucceeded : 1; + ULONG NdisPacketUdpChecksumSucceeded : 1; + ULONG NdisPacketIpChecksumSucceeded : 1; + ULONG NdisPacketLoopback : 1; + } Receive; + ULONG Value; + } DUMMYUNIONNAME; +} NDIS_TCP_IP_CHECKSUM_PACKET_INFO, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO; + +typedef struct _NDIS_WAN_CO_FRAGMENT { + ULONG Errors; +} NDIS_WAN_CO_FRAGMENT, *PNDIS_WAN_CO_FRAGMENT; + +typedef struct _NDIS_WAN_FRAGMENT { + UCHAR RemoteAddress[6]; + UCHAR LocalAddress[6]; +} NDIS_WAN_FRAGMENT, *PNDIS_WAN_FRAGMENT; + +typedef struct _WAN_CO_LINKPARAMS { + ULONG TransmitSpeed; + ULONG ReceiveSpeed; + ULONG SendWindow; +} WAN_CO_LINKPARAMS, *PWAN_CO_LINKPARAMS; + + +/* Call Manager */ + +typedef VOID DDKAPI +(*CM_ACTIVATE_VC_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE CallMgrVcContext, + IN PCO_CALL_PARAMETERS CallParameters); + +typedef NDIS_STATUS DDKAPI +(*CM_ADD_PARTY_HANDLER)( + IN NDIS_HANDLE CallMgrVcContext, + IN OUT PCO_CALL_PARAMETERS CallParameters, + IN NDIS_HANDLE NdisPartyHandle, + OUT PNDIS_HANDLE CallMgrPartyContext); + +typedef NDIS_STATUS DDKAPI +(*CM_CLOSE_AF_HANDLER)( + IN NDIS_HANDLE CallMgrAfContext); + +typedef NDIS_STATUS DDKAPI +(*CM_CLOSE_CALL_HANDLER)( + IN NDIS_HANDLE CallMgrVcContext, + IN NDIS_HANDLE CallMgrPartyContext OPTIONAL, + IN PVOID CloseData OPTIONAL, + IN UINT Size OPTIONAL); + +typedef NDIS_STATUS DDKAPI +(*CM_DEREG_SAP_HANDLER)( + IN NDIS_HANDLE CallMgrSapContext); + +typedef VOID DDKAPI +(*CM_DEACTIVATE_VC_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE CallMgrVcContext); + +typedef NDIS_STATUS DDKAPI +(*CM_DROP_PARTY_HANDLER)( + IN NDIS_HANDLE CallMgrPartyContext, + IN PVOID CloseData OPTIONAL, + IN UINT Size OPTIONAL); + +typedef VOID DDKAPI +(*CM_INCOMING_CALL_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE CallMgrVcContext, + IN PCO_CALL_PARAMETERS CallParameters); + +typedef NDIS_STATUS DDKAPI +(*CM_MAKE_CALL_HANDLER)( + IN NDIS_HANDLE CallMgrVcContext, + IN OUT PCO_CALL_PARAMETERS CallParameters, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL, + OUT PNDIS_HANDLE CallMgrPartyContext OPTIONAL); + +typedef NDIS_STATUS DDKAPI +(*CM_MODIFY_CALL_QOS_HANDLER)( + IN NDIS_HANDLE CallMgrVcContext, + IN PCO_CALL_PARAMETERS CallParameters); + +typedef NDIS_STATUS DDKAPI +(*CM_OPEN_AF_HANDLER)( + IN NDIS_HANDLE CallMgrBindingContext, + IN PCO_ADDRESS_FAMILY AddressFamily, + IN NDIS_HANDLE NdisAfHandle, + OUT PNDIS_HANDLE CallMgrAfContext); + +typedef NDIS_STATUS DDKAPI +(*CM_REG_SAP_HANDLER)( + IN NDIS_HANDLE CallMgrAfContext, + IN PCO_SAP Sap, + IN NDIS_HANDLE NdisSapHandle, + OUT PNDIS_HANDLE CallMgrSapContext); + +typedef NDIS_STATUS DDKAPI +(*CO_CREATE_VC_HANDLER)( + IN NDIS_HANDLE ProtocolAfContext, + IN NDIS_HANDLE NdisVcHandle, + OUT PNDIS_HANDLE ProtocolVcContext); + +typedef NDIS_STATUS DDKAPI +(*CO_DELETE_VC_HANDLER)( + IN NDIS_HANDLE ProtocolVcContext); + +typedef VOID DDKAPI +(*CO_REQUEST_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolAfContext OPTIONAL, + IN NDIS_HANDLE ProtocolVcContext OPTIONAL, + IN NDIS_HANDLE ProtocolPartyContext OPTIONAL, + IN PNDIS_REQUEST NdisRequest); + +typedef NDIS_STATUS DDKAPI +(*CO_REQUEST_HANDLER)( + IN NDIS_HANDLE ProtocolAfContext, + IN NDIS_HANDLE ProtocolVcContext OPTIONAL, + IN NDIS_HANDLE ProtocolPartyContext OPTIONAL, + IN OUT PNDIS_REQUEST NdisRequest); + +typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS { + UCHAR MajorVersion; + UCHAR MinorVersion; + USHORT Filler; + UINT Reserved; + CO_CREATE_VC_HANDLER CmCreateVcHandler; + CO_DELETE_VC_HANDLER CmDeleteVcHandler; + CM_OPEN_AF_HANDLER CmOpenAfHandler; + CM_CLOSE_AF_HANDLER CmCloseAfHandler; + CM_REG_SAP_HANDLER CmRegisterSapHandler; + CM_DEREG_SAP_HANDLER CmDeregisterSapHandler; + CM_MAKE_CALL_HANDLER CmMakeCallHandler; + CM_CLOSE_CALL_HANDLER CmCloseCallHandler; + CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler; + CM_ADD_PARTY_HANDLER CmAddPartyHandler; + CM_DROP_PARTY_HANDLER CmDropPartyHandler; + CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler; + CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler; + CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler; + CO_REQUEST_HANDLER CmRequestHandler; + CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler; +} NDIS_CALL_MANAGER_CHARACTERISTICS, *PNDIS_CALL_MANAGER_CHARACTERISTICS; + + + +/* Call Manager clients */ + +typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolAfContext, + IN NDIS_HANDLE NdisAfHandle); + +typedef VOID DDKAPI +(*CL_CLOSE_AF_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolAfContext); + +typedef VOID DDKAPI +(*CL_REG_SAP_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolSapContext, + IN PCO_SAP Sap, + IN NDIS_HANDLE NdisSapHandle); + +typedef VOID DDKAPI +(*CL_DEREG_SAP_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolSapContext); + +typedef VOID DDKAPI +(*CL_MAKE_CALL_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolVcContext, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL, + IN PCO_CALL_PARAMETERS CallParameters); + +typedef VOID DDKAPI +(*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolVcContext, + IN PCO_CALL_PARAMETERS CallParameters); + +typedef VOID DDKAPI +(*CL_CLOSE_CALL_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolVcContext, + IN NDIS_HANDLE ProtocolPartyContext OPTIONAL); + +typedef VOID DDKAPI +(*CL_ADD_PARTY_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolPartyContext, + IN NDIS_HANDLE NdisPartyHandle, + IN PCO_CALL_PARAMETERS CallParameters); + +typedef VOID DDKAPI +(*CL_DROP_PARTY_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolPartyContext); + +typedef NDIS_STATUS DDKAPI +(*CL_INCOMING_CALL_HANDLER)( + IN NDIS_HANDLE ProtocolSapContext, + IN NDIS_HANDLE ProtocolVcContext, + IN OUT PCO_CALL_PARAMETERS CallParameters); + +typedef VOID DDKAPI +(*CL_INCOMING_CALL_QOS_CHANGE_HANDLER)( + IN NDIS_HANDLE ProtocolVcContext, + IN PCO_CALL_PARAMETERS CallParameters); + +typedef VOID DDKAPI +(*CL_INCOMING_CLOSE_CALL_HANDLER)( + IN NDIS_STATUS CloseStatus, + IN NDIS_HANDLE ProtocolVcContext, + IN PVOID CloseData OPTIONAL, + IN UINT Size OPTIONAL); + +typedef VOID DDKAPI +(*CL_INCOMING_DROP_PARTY_HANDLER)( + IN NDIS_STATUS DropStatus, + IN NDIS_HANDLE ProtocolPartyContext, + IN PVOID CloseData OPTIONAL, + IN UINT Size OPTIONAL); + +typedef VOID DDKAPI +(*CL_CALL_CONNECTED_HANDLER)( + IN NDIS_HANDLE ProtocolVcContext); + + +typedef struct _NDIS_CLIENT_CHARACTERISTICS { + UCHAR MajorVersion; + UCHAR MinorVersion; + USHORT Filler; + UINT Reserved; + CO_CREATE_VC_HANDLER ClCreateVcHandler; + CO_DELETE_VC_HANDLER ClDeleteVcHandler; + CO_REQUEST_HANDLER ClRequestHandler; + CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler; + CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler; + CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler; + CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler; + CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler; + CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler; + CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler; + CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler; + CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler; + CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler; + CL_INCOMING_CALL_HANDLER ClIncomingCallHandler; + CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler; + CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler; + CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler; + CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler; +} NDIS_CLIENT_CHARACTERISTICS, *PNDIS_CLIENT_CHARACTERISTICS; + + +/* NDIS protocol structures */ + +/* Prototypes for NDIS 3.0 protocol characteristics */ + +typedef VOID DDKAPI +(*OPEN_ADAPTER_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_STATUS Status, + IN NDIS_STATUS OpenErrorStatus); + +typedef VOID DDKAPI +(*CLOSE_ADAPTER_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_STATUS Status); + +typedef VOID DDKAPI +(*RESET_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_STATUS Status); + +typedef VOID DDKAPI +(*REQUEST_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN PNDIS_REQUEST NdisRequest, + IN NDIS_STATUS Status); + +typedef VOID DDKAPI +(*STATUS_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_STATUS GeneralStatus, + IN PVOID StatusBuffer, + IN UINT StatusBufferSize); + +typedef VOID DDKAPI +(*STATUS_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext); + +typedef VOID DDKAPI +(*SEND_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN PNDIS_PACKET Packet, + IN NDIS_STATUS Status); + +typedef VOID DDKAPI +(*WAN_SEND_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN PNDIS_WAN_PACKET Packet, + IN NDIS_STATUS Status); + +typedef VOID DDKAPI +(*TRANSFER_DATA_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN PNDIS_PACKET Packet, + IN NDIS_STATUS Status, + IN UINT BytesTransferred); + +typedef VOID DDKAPI +(*WAN_TRANSFER_DATA_COMPLETE_HANDLER)( + VOID); + + +typedef NDIS_STATUS DDKAPI +(*RECEIVE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_HANDLE MacReceiveContext, + IN PVOID HeaderBuffer, + IN UINT HeaderBufferSize, + IN PVOID LookAheadBuffer, + IN UINT LookaheadBufferSize, + IN UINT PacketSize); + +typedef NDIS_STATUS DDKAPI +(*WAN_RECEIVE_HANDLER)( + IN NDIS_HANDLE NdisLinkHandle, + IN PUCHAR Packet, + IN ULONG PacketSize); + +typedef VOID DDKAPI +(*RECEIVE_COMPLETE_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext); + + +/* Protocol characteristics for NDIS 3.0 protocols */ + +#define NDIS30_PROTOCOL_CHARACTERISTICS_S \ + UCHAR MajorNdisVersion; \ + UCHAR MinorNdisVersion; \ + _ANONYMOUS_UNION union { \ + UINT Reserved; \ + UINT Flags; \ + } DUMMYUNIONNAME; \ + OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \ + CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \ + _ANONYMOUS_UNION union { \ + SEND_COMPLETE_HANDLER SendCompleteHandler; \ + WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \ + } DUMMYUNIONNAME2; \ + _ANONYMOUS_UNION union { \ + TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \ + WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \ + } DUMMYUNIONNAME3; \ + RESET_COMPLETE_HANDLER ResetCompleteHandler; \ + REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \ + _ANONYMOUS_UNION union { \ + RECEIVE_HANDLER ReceiveHandler; \ + WAN_RECEIVE_HANDLER WanReceiveHandler; \ + } DUMMYUNIONNAME4; \ + RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \ + STATUS_HANDLER StatusHandler; \ + STATUS_COMPLETE_HANDLER StatusCompleteHandler; \ + NDIS_STRING Name; + +typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS { + NDIS30_PROTOCOL_CHARACTERISTICS_S +} NDIS30_PROTOCOL_CHARACTERISTICS, *PNDIS30_PROTOCOL_CHARACTERISTICS; + + +/* Prototypes for NDIS 4.0 protocol characteristics */ + +typedef INT DDKAPI +(*RECEIVE_PACKET_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN PNDIS_PACKET Packet); + +typedef VOID DDKAPI +(*BIND_HANDLER)( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE BindContext, + IN PNDIS_STRING DeviceName, + IN PVOID SystemSpecific1, + IN PVOID SystemSpecific2); + +typedef VOID DDKAPI +(*UNBIND_HANDLER)( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_HANDLE UnbindContext); + +typedef NDIS_STATUS DDKAPI +(*PNP_EVENT_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN PNET_PNP_EVENT NetPnPEvent); + +typedef VOID DDKAPI +(*UNLOAD_PROTOCOL_HANDLER)( + VOID); + + +/* Protocol characteristics for NDIS 4.0 protocols */ + +#ifdef __cplusplus + +#define NDIS40_PROTOCOL_CHARACTERISTICS_S \ + NDIS30_PROTOCOL_CHARACTERISTICS Ndis30Chars; \ + RECEIVE_PACKET_HANDLER ReceivePacketHandler; \ + BIND_HANDLER BindAdapterHandler; \ + UNBIND_HANDLER UnbindAdapterHandler; \ + PNP_EVENT_HANDLER PnPEventHandler; \ + UNLOAD_PROTOCOL_HANDLER UnloadHandler; + +#else /* !__cplusplus */ + +#define NDIS40_PROTOCOL_CHARACTERISTICS_S \ + NDIS30_PROTOCOL_CHARACTERISTICS_S \ + RECEIVE_PACKET_HANDLER ReceivePacketHandler; \ + BIND_HANDLER BindAdapterHandler; \ + UNBIND_HANDLER UnbindAdapterHandler; \ + PNP_EVENT_HANDLER PnPEventHandler; \ + UNLOAD_PROTOCOL_HANDLER UnloadHandler; + +#endif /* __cplusplus */ + +typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS { + NDIS40_PROTOCOL_CHARACTERISTICS_S +} NDIS40_PROTOCOL_CHARACTERISTICS, *PNDIS40_PROTOCOL_CHARACTERISTICS; + +/* Prototypes for NDIS 5.0 protocol characteristics */ + +typedef VOID DDKAPI +(*CO_SEND_COMPLETE_HANDLER)( + IN NDIS_STATUS Status, + IN NDIS_HANDLE ProtocolVcContext, + IN PNDIS_PACKET Packet); + +typedef VOID DDKAPI +(*CO_STATUS_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_HANDLE ProtocolVcContext OPTIONAL, + IN NDIS_STATUS GeneralStatus, + IN PVOID StatusBuffer, + IN UINT StatusBufferSize); + +typedef UINT DDKAPI +(*CO_RECEIVE_PACKET_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN NDIS_HANDLE ProtocolVcContext, + IN PNDIS_PACKET Packet); + +typedef VOID DDKAPI +(*CO_AF_REGISTER_NOTIFY_HANDLER)( + IN NDIS_HANDLE ProtocolBindingContext, + IN PCO_ADDRESS_FAMILY AddressFamily); + +#ifdef __cplusplus \ + +#define NDIS50_PROTOCOL_CHARACTERISTICS_S \ + NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; \ + PVOID ReservedHandlers[4]; \ + CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \ + CO_STATUS_HANDLER CoStatusHandler; \ + CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \ + CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; + +#else /* !__cplusplus */ + +#define NDIS50_PROTOCOL_CHARACTERISTICS_S \ + NDIS40_PROTOCOL_CHARACTERISTICS_S \ + PVOID ReservedHandlers[4]; \ + CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \ + CO_STATUS_HANDLER CoStatusHandler; \ + CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \ + CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; + +#endif /* !__cplusplus */ + +typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS { + NDIS50_PROTOCOL_CHARACTERISTICS_S +} NDIS50_PROTOCOL_CHARACTERISTICS, *PNDIS50_PROTOCOL_CHARACTERISTICS; + +#if defined(NDIS50) || defined(NDIS51) +typedef struct _NDIS_PROTOCOL_CHARACTERISTICS { + NDIS50_PROTOCOL_CHARACTERISTICS_S; +} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS; +#elif defined(NDIS40) +typedef struct _NDIS_PROTOCOL_CHARACTERISTICS { + NDIS40_PROTOCOL_CHARACTERISTICS_S; +} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS; +#elif defined(NDIS30) +typedef struct _NDIS_PROTOCOL_CHARACTERISTICS { + NDIS30_PROTOCOL_CHARACTERISTICS_S +} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS; +#else +#error Define an NDIS version +#endif /* NDIS30 */ + + + +/* Buffer management routines */ + +NDISAPI +VOID +DDKAPI +NdisAllocateBuffer( + OUT PNDIS_STATUS Status, + OUT PNDIS_BUFFER *Buffer, + IN NDIS_HANDLE PoolHandle, + IN PVOID VirtualAddress, + IN UINT Length); + + +NDISAPI +VOID +DDKAPI +NdisAllocateBufferPool( + OUT PNDIS_STATUS Status, + OUT PNDIS_HANDLE PoolHandle, + IN UINT NumberOfDescriptors); + +NDISAPI +VOID +DDKAPI +NdisAllocatePacket( + OUT PNDIS_STATUS Status, + OUT PNDIS_PACKET *Packet, + IN NDIS_HANDLE PoolHandle); + +NDISAPI +VOID +DDKAPI +NdisAllocatePacketPool( + OUT PNDIS_STATUS Status, + OUT PNDIS_HANDLE PoolHandle, + IN UINT NumberOfDescriptors, + IN UINT ProtocolReservedLength); + +NDISAPI +VOID +DDKAPI +NdisCopyBuffer( + OUT PNDIS_STATUS Status, + OUT PNDIS_BUFFER *Buffer, + IN NDIS_HANDLE PoolHandle, + IN PVOID MemoryDescriptor, + IN UINT Offset, + IN UINT Length); + +NDISAPI +VOID +DDKAPI +NdisCopyFromPacketToPacket( + IN PNDIS_PACKET Destination, + IN UINT DestinationOffset, + IN UINT BytesToCopy, + IN PNDIS_PACKET Source, + IN UINT SourceOffset, + OUT PUINT BytesCopied); + +NDISAPI +VOID +DDKAPI +NdisDprAllocatePacket( + OUT PNDIS_STATUS Status, + OUT PNDIS_PACKET *Packet, + IN NDIS_HANDLE PoolHandle); + +NDISAPI +VOID +DDKAPI +NdisDprAllocatePacketNonInterlocked( + OUT PNDIS_STATUS Status, + OUT PNDIS_PACKET *Packet, + IN NDIS_HANDLE PoolHandle); + +NDISAPI +VOID +DDKAPI +NdisDprFreePacket( + IN PNDIS_PACKET Packet); + +NDISAPI +VOID +DDKAPI +NdisDprFreePacketNonInterlocked( + IN PNDIS_PACKET Packet); + +NDISAPI +VOID +DDKAPI +NdisFreeBufferPool( + IN NDIS_HANDLE PoolHandle); + +NDISAPI +VOID +DDKAPI +NdisFreePacket( + IN PNDIS_PACKET Packet); + +NDISAPI +VOID +DDKAPI +NdisFreePacketPool( + IN NDIS_HANDLE PoolHandle); + +NDISAPI +VOID +DDKAPI +NdisReturnPackets( + IN PNDIS_PACKET *PacketsToReturn, + IN UINT NumberOfPackets); + +NDISAPI +VOID +DDKAPI +NdisUnchainBufferAtBack( + IN OUT PNDIS_PACKET Packet, + OUT PNDIS_BUFFER *Buffer); + +NDISAPI +VOID +DDKAPI +NdisUnchainBufferAtFront( + IN OUT PNDIS_PACKET Packet, + OUT PNDIS_BUFFER *Buffer); + +NDISAPI +VOID +DDKAPI +NdisAdjustBufferLength( + IN PNDIS_BUFFER Buffer, + IN UINT Length); + +NDISAPI +ULONG +DDKAPI +NdisBufferLength( + IN PNDIS_BUFFER Buffer); + +NDISAPI +PVOID +DDKAPI +NdisBufferVirtualAddress( + IN PNDIS_BUFFER Buffer); + +NDISAPI +ULONG +DDKAPI +NDIS_BUFFER_TO_SPAN_PAGES( + IN PNDIS_BUFFER Buffer); + +NDISAPI +VOID +DDKAPI +NdisFreeBuffer( + IN PNDIS_BUFFER Buffer); + +NDISAPI +VOID +DDKAPI +NdisGetBufferPhysicalArraySize( + IN PNDIS_BUFFER Buffer, + OUT PUINT ArraySize); + +NDISAPI +VOID +DDKAPI +NdisGetFirstBufferFromPacket( + IN PNDIS_PACKET _Packet, + OUT PNDIS_BUFFER *_FirstBuffer, + OUT PVOID *_FirstBufferVA, + OUT PUINT _FirstBufferLength, + OUT PUINT _TotalBufferLength); + +NDISAPI +VOID +DDKAPI +NdisQueryBuffer( + IN PNDIS_BUFFER Buffer, + OUT PVOID *VirtualAddress OPTIONAL, + OUT PUINT Length); + +NDISAPI +VOID +DDKAPI +NdisQueryBufferOffset( + IN PNDIS_BUFFER Buffer, + OUT PUINT Offset, + OUT PUINT Length); + +NDISAPI +VOID +DDKAPI +NdisFreeBuffer( + IN PNDIS_BUFFER Buffer); + + +/* + * VOID + * NdisGetBufferPhysicalArraySize( + * IN PNDIS_BUFFER Buffer, + * OUT PUINT ArraySize); + */ +#define NdisGetBufferPhysicalArraySize(Buffer, \ + ArraySize) \ +{ \ + (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer)) \ +} + + +/* + * VOID + * NdisGetFirstBufferFromPacket( + * IN PNDIS_PACKET _Packet, + * OUT PNDIS_BUFFER * _FirstBuffer, + * OUT PVOID * _FirstBufferVA, + * OUT PUINT _FirstBufferLength, + * OUT PUINT _TotalBufferLength) + */ +#define NdisGetFirstBufferFromPacket(_Packet, \ + _FirstBuffer, \ + _FirstBufferVA, \ + _FirstBufferLength, \ + _TotalBufferLength) \ +{ \ + PNDIS_BUFFER _Buffer; \ + \ + _Buffer = (_Packet)->Private.Head; \ + *(_FirstBuffer) = _Buffer; \ + if (_Buffer != NULL) \ + { \ + *(_FirstBufferVA) = MmGetSystemAddressForMdl(_Buffer); \ + *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \ + _Buffer = _Buffer->Next; \ + *(_TotalBufferLength) = *(_FirstBufferLength); \ + while (_Buffer != NULL) { \ + *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \ + _Buffer = _Buffer->Next; \ + } \ + } \ + else \ + { \ + *(_FirstBufferVA) = 0; \ + *(_FirstBufferLength) = 0; \ + *(_TotalBufferLength) = 0; \ + } \ +} + +/* + * VOID + * NdisQueryBuffer( + * IN PNDIS_BUFFER Buffer, + * OUT PVOID *VirtualAddress OPTIONAL, + * OUT PUINT Length) + */ +#define NdisQueryBuffer(Buffer, \ + VirtualAddress, \ + Length) \ +{ \ + if (VirtualAddress) \ + *((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \ + \ + *((PUINT)Length) = MmGetMdlByteCount(Buffer); \ +} + + +/* + * VOID + * NdisQueryBufferOffset( + * IN PNDIS_BUFFER Buffer, + * OUT PUINT Offset, + * OUT PUINT Length); + */ +#define NdisQueryBufferOffset(Buffer, \ + Offset, \ + Length) \ +{ \ + *((PUINT)Offset) = MmGetMdlByteOffset(Buffer); \ + *((PUINT)Length) = MmGetMdlByteCount(Buffer); \ +} + + +/* + * PVOID + * NDIS_BUFFER_LINKAGE( + * IN PNDIS_BUFFER Buffer); + */ +#define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next; + + +/* + * VOID + * NdisChainBufferAtBack( + * IN OUT PNDIS_PACKET Packet, + * IN OUT PNDIS_BUFFER Buffer) + */ +#define NdisChainBufferAtBack(Packet, \ + Buffer) \ +{ \ + PNDIS_BUFFER NdisBuffer = (Buffer); \ + \ + while (NdisBuffer->Next != NULL) \ + NdisBuffer = NdisBuffer->Next; \ + \ + NdisBuffer->Next = NULL; \ + \ + if ((Packet)->Private.Head != NULL) \ + (Packet)->Private.Tail->Next = (Buffer); \ + else \ + (Packet)->Private.Head = (Buffer); \ + \ + (Packet)->Private.Tail = NdisBuffer; \ + (Packet)->Private.ValidCounts = FALSE; \ +} + + +/* + * VOID + * NdisChainBufferAtFront( + * IN OUT PNDIS_PACKET Packet, + * IN OUT PNDIS_BUFFER Buffer) + */ +#define NdisChainBufferAtFront(Packet, \ + Buffer) \ +{ \ + PNDIS_BUFFER _NdisBuffer = (Buffer); \ + \ + while (_NdisBuffer->Next != NULL) \ + _NdisBuffer = _NdisBuffer->Next; \ + \ + if ((Packet)->Private.Head == NULL) \ + (Packet)->Private.Tail = _NdisBuffer; \ + \ + _NdisBuffer->Next = (Packet)->Private.Head; \ + (Packet)->Private.Head = (Buffer); \ + (Packet)->Private.ValidCounts = FALSE; \ +} + + +/* + * VOID + * NdisGetNextBuffer( + * IN PNDIS_BUFFER CurrentBuffer, + * OUT PNDIS_BUFFER * NextBuffer) + */ +#define NdisGetNextBuffer(CurrentBuffer, \ + NextBuffer) \ +{ \ + *(NextBuffer) = (CurrentBuffer)->Next; \ +} + + +/* + * UINT + * NdisGetPacketFlags( + * IN PNDIS_PACKET Packet); + */ +#define NdisGetPacketFlags(Packet)(Packet)->Private.Flags; + + +/* + * VOID + * NdisClearPacketFlags( + * IN PNDIS_PACKET Packet, + * IN UINT Flags); + */ +#define NdisClearPacketFlags(Packet, Flags) \ + (Packet)->Private.Flags &= ~(Flags) + + +/* + * VOID + * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO( + * IN PNDIS_PACKET Packet, + * IN PPVOID pMediaSpecificInfo, + * IN PUINT pSizeMediaSpecificInfo); + */ +#define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \ + _pMediaSpecificInfo, \ + _pSizeMediaSpecificInfo) \ +{ \ + if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \ + !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \ + { \ + *(_pMediaSpecificInfo) = NULL; \ + *(_pSizeMediaSpecificInfo) = 0; \ + } \ + else \ + { \ + *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \ + *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \ + } \ +} + + +/* + * ULONG + * NDIS_GET_PACKET_PROTOCOL_TYPE( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \ + ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK) + +/* + * ULONG + * NDIS_GET_PACKET_HEADER_SIZE( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->HeaderSize + + +/* + * NDIS_STATUS + * NDIS_GET_PACKET_STATUS( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_PACKET_STATUS(_Packet) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->Status + + +/* + * ULONGLONG + * NDIS_GET_PACKET_TIME_RECEIVED( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->TimeReceived + + +/* + * ULONGLONG + * NDIS_GET_PACKET_TIME_SENT( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_PACKET_TIME_SENT(_Packet) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->TimeSent + + +/* + * ULONGLONG + * NDIS_GET_PACKET_TIME_TO_SEND( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->TimeToSend + + +/* + * PNDIS_PACKET_OOB_DATA + * NDIS_OOB_DATA_FROM_PACKET( + * IN PNDIS_PACKET Packet); + */ +#define NDIS_OOB_DATA_FROM_PACKET(_Packet) \ + (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset) + + +/* + * VOID + * NdisQueryPacket( + * IN PNDIS_PACKET Packet, + * OUT PUINT PhysicalBufferCount OPTIONAL, + * OUT PUINT BufferCount OPTIONAL, + * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, + * OUT PUINT TotalPacketLength OPTIONAL); + */ +#define NdisQueryPacket(Packet, \ + PhysicalBufferCount, \ + BufferCount, \ + FirstBuffer, \ + TotalPacketLength) \ +{ \ + if (FirstBuffer) \ + *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head; \ + if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount)) \ + { \ + if (!(Packet)->Private.ValidCounts) { \ + UINT _Offset; \ + UINT _PacketLength; \ + PNDIS_BUFFER _NdisBuffer; \ + UINT _PhysicalBufferCount = 0; \ + UINT _TotalPacketLength = 0; \ + UINT _Count = 0; \ + \ + for (_NdisBuffer = (Packet)->Private.Head; \ + _NdisBuffer != (PNDIS_BUFFER)NULL; \ + _NdisBuffer = _NdisBuffer->Next) \ + { \ + _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \ + NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \ + _TotalPacketLength += _PacketLength; \ + _Count++; \ + } \ + (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \ + (Packet)->Private.TotalLength = _TotalPacketLength; \ + (Packet)->Private.Count = _Count; \ + (Packet)->Private.ValidCounts = TRUE; \ + } \ + \ + if (PhysicalBufferCount) \ + *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount; \ + \ + if (BufferCount) \ + *((PUINT)BufferCount) = (Packet)->Private.Count; \ + \ + if (TotalPacketLength) \ + *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \ + } \ +} + + +/* + * VOID + * NdisRecalculatePacketCounts( + * IN OUT PNDIS_PACKET Packet); + */ +#define NdisRecalculatePacketCounts(Packet) \ +{ \ + PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \ + if (_Buffer != NULL) \ + { \ + while (_Buffer->Next != NULL) \ + { \ + ´_Buffer = _Buffer->Next; \ + } \ + (Packet)->Private.Tail = _Buffer; \ + } \ + (Packet)->Private.ValidCounts = FALSE; \ +} + + +/* + * VOID + * NdisReinitializePacket( + * IN OUT PNDIS_PACKET Packet); + */ +#define NdisReinitializePacketCounts(Packet) \ +{ \ + (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \ + (Packet)->Private.ValidCounts = FALSE; \ +} + + +/* + * VOID + * NdisSetPacketFlags( + * IN PNDIS_PACKET Packet, + * IN UINT Flags); + */ +#define NdisSetPacketFlags(Packet, Flags) \ + (Packet)->Private.Flags |= (Flags); + + +/* + * VOID + * NDIS_SET_PACKET_HEADER_SIZE( + * IN PNDIS_PACKET Packet, + * IN UINT HdrSize); + */ +#define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize) + + +/* + * VOID + * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO( + * IN PNDIS_PACKET Packet, + * IN PVOID MediaSpecificInfo, + * IN UINT SizeMediaSpecificInfo); + */ +#define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \ + _MediaSpecificInfo, \ + _SizeMediaSpecificInfo) \ +{ \ + if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \ + { \ + (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \ + (_MediaSpecificInfo); \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \ + (_SizeMediaSpecificInfo); \ + } \ +} + + +/* + * VOID + * NDIS_SET_PACKET_STATUS( + * IN PNDIS_PACKET Packet, + * IN NDIS_STATUS Status); + */ +#define NDIS_SET_PACKET_STATUS(_Packet, _Status) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status) + + +/* + * VOID + * NDIS_SET_PACKET_TIME_RECEIVED( + * IN PNDIS_PACKET Packet, + * IN ULONGLONG TimeReceived); + */ +#define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived) + + +/* + * VOID + * NDIS_SET_PACKET_TIME_SENT( + * IN PNDIS_PACKET Packet, + * IN ULONGLONG TimeSent); + */ +#define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent) + + +/* + * VOID + * NDIS_SET_PACKET_TIME_TO_SEND( + * IN PNDIS_PACKET Packet, + * IN ULONGLONG TimeToSend); + */ +#define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \ + ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ + (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend) + + +/* + * VOID + * NdisSetSendFlags( + * IN PNDIS_PACKET Packet, + * IN UINT Flags); + */ +#define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags) + + + +/* Memory management routines */ + +/* + * VOID + * NdisCreateLookaheadBufferFromSharedMemory( + * IN PVOID pSharedMemory, + * IN UINT LookaheadLength, + * OUT PVOID *pLookaheadBuffer) + */ +#define NdisCreateLookaheadBufferFromSharedMemory(_pSharedMemory, \ + _LookaheadLength, \ + _pLookaheadBuffer) \ + ((*(_pLookaheadBuffer)) = (_pSharedMemory)) + +/* + * VOID + * NdisDestroyLookaheadBufferFromSharedMemory( + * IN PVOID pLookaheadBuffer) + */ +#define NdisDestroyLookaheadBufferFromSharedMemory(_pLookaheadBuffer) + +#if defined(i386) + +/* + * VOID + * NdisMoveFromMappedMemory( + * OUT PVOID Destination, + * IN PVOID Source, + * IN ULONG Length); + */ +#define NdisMoveFromMappedMemory(Destination, Source, Length) \ + NdisMoveMappedMemory(Destination, Source, Length) + +/* + * VOID + * NdisMoveMappedMemory( + * OUT PVOID Destination, + * IN PVOID Source, + * IN ULONG Length); + */ +#define NdisMoveMappedMemory(Destination, Source, Length) \ + RtlCopyMemory(Destination, Source, Length) + +/* + * VOID + * NdisMoveToMappedMemory( + * OUT PVOID Destination, + * IN PVOID Source, + * IN ULONG Length); + */ +#define NdisMoveToMappedMemory(Destination, Source, Length) \ + NdisMoveMappedMemory(Destination, Source, Length) + +#endif /* i386 */ + +/* + * VOID + * NdisMUpdateSharedMemory( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN ULONG Length, + * IN PVOID VirtualAddress, + * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); + */ +#define NdisMUpdateSharedMemory(_H, _L, _V, _P) \ + NdisUpdateSharedMemory(_H, _L, _V, _P) + +NDISAPI +NDIS_STATUS +DDKAPI +NdisAllocateMemory( + OUT PVOID *VirtualAddress, + IN UINT Length, + IN UINT MemoryFlags, + IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); + +NDISAPI +VOID +DDKAPI +NdisFreeMemory( + IN PVOID VirtualAddress, + IN UINT Length, + IN UINT MemoryFlags); + +NDISAPI +VOID +DDKAPI +NdisImmediateReadSharedMemory( + IN NDIS_HANDLE WrapperConfigurationContext, + IN ULONG SharedMemoryAddress, + OUT PUCHAR Buffer, + IN ULONG Length); + +NDISAPI +VOID +DDKAPI +NdisImmediateWriteSharedMemory( + IN NDIS_HANDLE WrapperConfigurationContext, + IN ULONG SharedMemoryAddress, + IN PUCHAR Buffer, + IN ULONG Length); + +NDISAPI +VOID +DDKAPI +NdisMAllocateSharedMemory( + IN NDIS_HANDLE MiniportAdapterHandle, + IN ULONG Length, + IN BOOLEAN Cached, + OUT PVOID *VirtualAddress, + OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMAllocateSharedMemoryAsync( + IN NDIS_HANDLE MiniportAdapterHandle, + IN ULONG Length, + IN BOOLEAN Cached, + IN PVOID Context); + +#if defined(NDIS50) + +#define NdisUpdateSharedMemory(NdisAdapterHandle, \ + Length, \ + VirtualAddress, \ + PhysicalAddress) + +#else + +NDISAPI +VOID +DDKAPI +NdisUpdateSharedMemory( + IN NDIS_HANDLE NdisAdapterHandle, + IN ULONG Length, + IN PVOID VirtualAddress, + IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); + +#endif /* defined(NDIS50) */ + +/* + * ULONG + * NdisGetPhysicalAddressHigh( + * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); + */ +#define NdisGetPhysicalAddressHigh(PhysicalAddress) \ + ((PhysicalAddress).HighPart) + +/* + * VOID + * NdisSetPhysicalAddressHigh( + * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, + * IN ULONG Value); + */ +#define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \ + ((PhysicalAddress).HighPart) = (Value) + +/* + * ULONG + * NdisGetPhysicalAddressLow( + * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); + */ +#define NdisGetPhysicalAddressLow(PhysicalAddress) \ + ((PhysicalAddress).LowPart) + + +/* + * VOID + * NdisSetPhysicalAddressLow( + * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, + * IN ULONG Value); + */ +#define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \ + ((PhysicalAddress).LowPart) = (Value) + +/* + * VOID + * NDIS_PHYSICAL_ADDRESS_CONST( + * IN ULONG Low, + * IN LONG High); + */ +#define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \ + { {(ULONG)(Low), (LONG)(High)} } + +/* + * ULONG + * NdisEqualMemory( + * IN CONST VOID *Source1, + * IN CONST VOID *Source2, + * IN ULONG Length); + */ +#define NdisEqualMemory(Source1, Source2, Length) \ + RtlEqualMemory(Source1, Source2, Length) + +/* + * VOID + * NdisFillMemory( + * IN PVOID Destination, + * IN ULONG Length, + * IN UCHAR Fill); + */ +#define NdisFillMemory(Destination, Length, Fill) \ + RtlFillMemory(Destination, Length, Fill) + +/* + * VOID + * NdisZeroMappedMemory( + * IN PVOID Destination, + * IN ULONG Length); + */ +#define NdisZeroMappedMemory(Destination, Length) \ + RtlZeroMemory(Destination, Length) + +/* + * VOID + * NdisMoveMemory( + * OUT PVOID Destination, + * IN PVOID Source, + * IN ULONG Length); + */ +#define NdisMoveMemory(Destination, Source, Length) \ + RtlCopyMemory(Destination, Source, Length) + + +/* + * VOID + * NdisRetrieveUlong( + * IN PULONG DestinationAddress, + * IN PULONG SourceAddress); + */ +#define NdisRetrieveUlong(DestinationAddress, SourceAddress) \ + RtlRetrieveUlong(DestinationAddress, SourceAddress) + + +/* + * VOID + * NdisStoreUlong( + * IN PULONG DestinationAddress, + * IN ULONG Value); + */ +#define NdisStoreUlong(DestinationAddress, Value) \ + RtlStoreUlong(DestinationAddress, Value) + + +/* + * VOID + * NdisZeroMemory( + * IN PVOID Destination, + * IN ULONG Length) + */ +#define NdisZeroMemory(Destination, Length) \ + RtlZeroMemory(Destination, Length) + + + +/* Configuration routines */ + +NDISAPI +VOID +DDKAPI +NdisOpenConfiguration( + OUT PNDIS_STATUS Status, + OUT PNDIS_HANDLE ConfigurationHandle, + IN NDIS_HANDLE WrapperConfigurationContext); + +NDISAPI +VOID +DDKAPI +NdisReadNetworkAddress( + OUT PNDIS_STATUS Status, + OUT PVOID *NetworkAddress, + OUT PUINT NetworkAddressLength, + IN NDIS_HANDLE ConfigurationHandle); + +NDISAPI +VOID +DDKAPI +NdisReadEisaSlotInformation( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE WrapperConfigurationContext, + OUT PUINT SlotNumber, + OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData); + +NDISAPI +VOID +DDKAPI +NdisReadEisaSlotInformationEx( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE WrapperConfigurationContext, + OUT PUINT SlotNumber, + OUT PNDIS_EISA_FUNCTION_INFORMATION *EisaData, + OUT PUINT NumberOfFunctions); + +NDISAPI +ULONG +DDKAPI +NdisReadPciSlotInformation( + IN NDIS_HANDLE NdisAdapterHandle, + IN ULONG SlotNumber, + IN ULONG Offset, + IN PVOID Buffer, + IN ULONG Length); + +NDISAPI +ULONG +DDKAPI +NdisWritePciSlotInformation( + IN NDIS_HANDLE NdisAdapterHandle, + IN ULONG SlotNumber, + IN ULONG Offset, + IN PVOID Buffer, + IN ULONG Length); + + + +/* String management routines */ + +NDISAPI +NDIS_STATUS +DDKAPI +NdisAnsiStringToUnicodeString( + IN OUT PNDIS_STRING DestinationString, + IN PNDIS_ANSI_STRING SourceString); + +/* + * BOOLEAN + * NdisEqualString( + * IN PNDIS_STRING String1, + * IN PNDIS_STRING String2, + * IN BOOLEAN CaseInsensitive); + */ +#define NdisEqualString(_String1, _String2, _CaseInsensitive) \ + RtlEqualUnicodeString(_String1, _String2, _CaseInsensitive) + +NDISAPI +VOID +DDKAPI +NdisInitAnsiString( + IN OUT PNDIS_ANSI_STRING DestinationString, + IN PCSTR SourceString); + +NDISAPI +VOID +DDKAPI +NdisInitUnicodeString( + IN OUT PNDIS_STRING DestinationString, + IN PCWSTR SourceString); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisUnicodeStringToAnsiString( + IN OUT PNDIS_ANSI_STRING DestinationString, + IN PNDIS_STRING SourceString); + +#define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0) +#define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer) + + +/* Spin lock reoutines */ + +/* + * VOID + * NdisAllocateSpinLock( + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisAllocateSpinLock(_SpinLock) \ + KeInitializeSpinLock(&(_SpinLock)->SpinLock) + +/* + * VOID + * NdisFreeSpinLock( + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisFreeSpinLock(_SpinLock) + +/* + * VOID + * NdisAcquireSpinLock( + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisAcquireSpinLock(_SpinLock) \ + KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql) + +/* + * VOID + * NdisReleaseSpinLock( + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisReleaseSpinLock(_SpinLock) \ + KeReleaseSpinLock(&(_SpinLock)->SpinLock, (_SpinLock)->OldIrql) + +/* + * VOID + * NdisDprAcquireSpinLock( + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisDprAcquireSpinLock(_SpinLock) \ +{ \ + KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock); \ + (_SpinLock)->OldIrql = DISPATCH_LEVEL; \ +} + +/* + * VOID + * NdisDprReleaseSpinLock( + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisDprReleaseSpinLock(_SpinLock) \ + KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock) + + + +/* I/O routines */ + +/* + * VOID + * NdisRawReadPortBufferUchar( + * IN ULONG Port, + * OUT PUCHAR Buffer, + * IN ULONG Length); + */ +#define NdisRawReadPortBufferUchar(Port, Buffer, Length) \ + READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length)) + +/* + * VOID + * NdisRawReadPortBufferUlong( + * IN ULONG Port, + * OUT PULONG Buffer, + * IN ULONG Length); + */ +#define NdisRawReadPortBufferUlong(Port, Buffer, Length) \ + READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length)) + +/* + * VOID + * NdisRawReadPortBufferUshort( + * IN ULONG Port, + * OUT PUSHORT Buffer, + * IN ULONG Length); + */ +#define NdisRawReadPortBufferUshort(Port, Buffer, Length) \ + READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length)) + + +/* + * VOID + * NdisRawReadPortUchar( + * IN ULONG Port, + * OUT PUCHAR Data); + */ +#define NdisRawReadPortUchar(Port, Data) \ + *(Data) = READ_PORT_UCHAR((PUCHAR)(Port)) + +/* + * VOID + * NdisRawReadPortUlong( + * IN ULONG Port, + * OUT PULONG Data); + */ +#define NdisRawReadPortUlong(Port, Data) \ + *(Data) = READ_PORT_ULONG((PULONG)(Port)) + +/* + * VOID + * NdisRawReadPortUshort( + * IN ULONG Port, + * OUT PUSHORT Data); + */ +#define NdisRawReadPortUshort(Port, Data) \ + *(Data) = READ_PORT_USHORT((PUSHORT)(Port)) + + +/* + * VOID + * NdisRawWritePortBufferUchar( + * IN ULONG Port, + * IN PUCHAR Buffer, + * IN ULONG Length); + */ +#define NdisRawWritePortBufferUchar(Port, Buffer, Length) \ + WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length)) + +/* + * VOID + * NdisRawWritePortBufferUlong( + * IN ULONG Port, + * IN PULONG Buffer, + * IN ULONG Length); + */ +#define NdisRawWritePortBufferUlong(Port, Buffer, Length) \ + WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length)) + +/* + * VOID + * NdisRawWritePortBufferUshort( + * IN ULONG Port, + * IN PUSHORT Buffer, + * IN ULONG Length); + */ +#define NdisRawWritePortBufferUshort(Port, Buffer, Length) \ + WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length)) + + +/* + * VOID + * NdisRawWritePortUchar( + * IN ULONG Port, + * IN UCHAR Data); + */ +#define NdisRawWritePortUchar(Port, Data) \ + WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data)) + +/* + * VOID + * NdisRawWritePortUlong( + * IN ULONG Port, + * IN ULONG Data); + */ +#define NdisRawWritePortUlong(Port, Data) \ + WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data)) + +/* + * VOID + * NdisRawWritePortUshort( + * IN ULONG Port, + * IN USHORT Data); + */ +#define NdisRawWritePortUshort(Port, Data) \ + WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data)) + + +/* + * VOID + * NdisReadRegisterUchar( + * IN PUCHAR Register, + * OUT PUCHAR Data); + */ +#define NdisReadRegisterUchar(Register, Data) \ + *(Data) = *(Register) + +/* + * VOID + * NdisReadRegisterUlong( + * IN PULONG Register, + * OUT PULONG Data); + */ +#define NdisReadRegisterUlong(Register, Data) \ + *(Data) = *(Register) + +/* + * VOID + * NdisReadRegisterUshort( + * IN PUSHORT Register, + * OUT PUSHORT Data); + */ +#define NdisReadRegisterUshort(Register, Data) \ + *(Data) = *(Register) + +/* + * VOID + * NdisReadRegisterUchar( + * IN PUCHAR Register, + * IN UCHAR Data); + */ +#define NdisWriteRegisterUchar(Register, Data) \ + WRITE_REGISTER_UCHAR((Register), (Data)) + +/* + * VOID + * NdisReadRegisterUlong( + * IN PULONG Register, + * IN ULONG Data); + */ +#define NdisWriteRegisterUlong(Register, Data) \ + WRITE_REGISTER_ULONG((Register), (Data)) + +/* + * VOID + * NdisReadRegisterUshort( + * IN PUSHORT Register, + * IN USHORT Data); + */ +#define NdisWriteRegisterUshort(Register, Data) \ + WRITE_REGISTER_USHORT((Register), (Data)) + + +/* Linked lists */ + +/* + * VOID + * NdisInitializeListHead( + * IN PLIST_ENTRY ListHead); + */ +#define NdisInitializeListHead(_ListHead) \ + InitializeListHead(_ListHead) + +/* + * PLIST_ENTRY + * NdisInterlockedInsertHeadList( + * IN PLIST_ENTRY ListHead, + * IN PLIST_ENTRY ListEntry, + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \ + ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock) + +/* + * PLIST_ENTRY + * NdisInterlockedInsertTailList( + * IN PLIST_ENTRY ListHead, + * IN PLIST_ENTRY ListEntry, + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \ + ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock) + +/* + * PLIST_ENTRY + * NdisInterlockedRemoveHeadList( + * IN PLIST_ENTRY ListHead, + * IN PNDIS_SPIN_LOCK SpinLock); +*/ +#define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \ + ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock) + +/* + * VOID + * NdisInitializeSListHead( + * IN PSLIST_HEADER SListHead); + */ +#define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead) + +/* + * USHORT NdisQueryDepthSList( + * IN PSLIST_HEADER SListHead); + */ +#define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead) + + + +/* Interlocked routines */ + +/* + * LONG + * NdisInterlockedDecrement( + * IN PLONG Addend); + */ +#define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend) + +/* + * LONG + * NdisInterlockedIncrement( + * IN PLONG Addend); + */ +#define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend) + +/* + * VOID + * NdisInterlockedAddUlong( + * IN PULONG Addend, + * IN ULONG Increment, + * IN PNDIS_SPIN_LOCK SpinLock); + */ +#define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \ + ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock) + + + +/* Miscellaneous routines */ + +NDISAPI +VOID +DDKAPI +NdisCloseConfiguration( + IN NDIS_HANDLE ConfigurationHandle); + +NDISAPI +VOID +DDKAPI +NdisReadConfiguration( + OUT PNDIS_STATUS Status, + OUT PNDIS_CONFIGURATION_PARAMETER *ParameterValue, + IN NDIS_HANDLE ConfigurationHandle, + IN PNDIS_STRING Keyword, + IN NDIS_PARAMETER_TYPE ParameterType); + +NDISAPI +VOID +DDKAPI +NdisWriteConfiguration( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE WrapperConfigurationContext, + IN PNDIS_STRING Keyword, + IN PNDIS_CONFIGURATION_PARAMETER *ParameterValue); + +NDISAPI +VOID +DDKCDECLAPI +NdisWriteErrorLogEntry( + IN NDIS_HANDLE NdisAdapterHandle, + IN NDIS_ERROR_CODE ErrorCode, + IN ULONG NumberOfErrorValues, + IN ...); + +/* + * VOID + * NdisStallExecution( + * IN UINT MicrosecondsToStall) + */ +#define NdisStallExecution KeStallExecutionProcessor + +/* + * VOID + * NdisGetCurrentSystemTime( + * IN PLARGE_INTEGER pSystemTime); + */ +#define NdisGetCurrentSystemTime KeQuerySystemTime + +NDISAPI +VOID +DDKAPI +NdisGetCurrentProcessorCpuUsage( + OUT PULONG pCpuUsage); + + + +/* NDIS helper macros */ + +/* + * VOID + * NDIS_INIT_FUNCTION(FunctionName) + */ +#define NDIS_INIT_FUNCTION(FunctionName) \ + alloc_text(init, FunctionName) + +/* + * VOID + * NDIS_PAGABLE_FUNCTION(FunctionName) + */ +#define NDIS_PAGEABLE_FUNCTION(FunctionName) \ + alloc_text(page, FunctionName) + +#define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION + + +/* NDIS 4.0 extensions */ + +NDISAPI +VOID +DDKAPI +NdisMFreeSharedMemory( + IN NDIS_HANDLE MiniportAdapterHandle, + IN ULONG Length, + IN BOOLEAN Cached, + IN PVOID VirtualAddress, + IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); + +NDISAPI +VOID +DDKAPI +NdisMWanIndicateReceive( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_HANDLE NdisLinkContext, + IN PUCHAR PacketBuffer, + IN UINT PacketSize); + +NDISAPI +VOID +DDKAPI +NdisMWanIndicateReceiveComplete( + IN NDIS_HANDLE MiniportAdapterHandle); + +NDISAPI +VOID +DDKAPI +NdisMWanSendComplete( + IN NDIS_HANDLE MiniportAdapterHandle, + IN PNDIS_WAN_PACKET Packet, + IN NDIS_STATUS Status); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisPciAssignResources( + IN NDIS_HANDLE NdisMacHandle, + IN NDIS_HANDLE NdisWrapperHandle, + IN NDIS_HANDLE WrapperConfigurationContext, + IN ULONG SlotNumber, + OUT PNDIS_RESOURCE_LIST *AssignedResources); + + +/* NDIS 5.0 extensions */ + +NDISAPI +VOID +DDKAPI +NdisAcquireReadWriteLock( + IN PNDIS_RW_LOCK Lock, + IN BOOLEAN fWrite, + IN PLOCK_STATE LockState); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisAllocateMemoryWithTag( + OUT PVOID *VirtualAddress, + IN UINT Length, + IN ULONG Tag); + +NDISAPI +VOID +DDKAPI +NdisAllocatePacketPoolEx( + OUT PNDIS_STATUS Status, + OUT PNDIS_HANDLE PoolHandle, + IN UINT NumberOfDescriptors, + IN UINT NumberOfOverflowDescriptors, + IN UINT ProtocolReservedLength); + +NDISAPI +VOID +DDKAPI +NdisCompletePnPEvent( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisBindingHandle, + IN PNET_PNP_EVENT NetPnPEvent); + +NDISAPI +VOID +DDKAPI +NdisGetCurrentProcessorCounts( + OUT PULONG pIdleCount, + OUT PULONG pKernelAndUser, + OUT PULONG pIndex); + +NDISAPI +VOID +DDKAPI +NdisGetDriverHandle( + IN PNDIS_HANDLE NdisBindingHandle, + OUT PNDIS_HANDLE NdisDriverHandle); + +NDISAPI +PNDIS_PACKET +DDKAPI +NdisGetReceivedPacket( + IN PNDIS_HANDLE NdisBindingHandle, + IN PNDIS_HANDLE MacContext); + +NDISAPI +VOID +DDKAPI +NdisGetSystemUptime( + OUT PULONG pSystemUpTime); + +NDISAPI +VOID +DDKAPI +NdisInitializeReadWriteLock( + IN PNDIS_RW_LOCK Lock); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMDeregisterDevice( + IN NDIS_HANDLE NdisDeviceHandle); + +NDISAPI +VOID +DDKAPI +NdisMGetDeviceProperty( + IN NDIS_HANDLE MiniportAdapterHandle, + IN OUT PDEVICE_OBJECT *PhysicalDeviceObject OPTIONAL, + IN OUT PDEVICE_OBJECT *FunctionalDeviceObject OPTIONAL, + IN OUT PDEVICE_OBJECT *NextDeviceObject OPTIONAL, + IN OUT PCM_RESOURCE_LIST *AllocatedResources OPTIONAL, + IN OUT PCM_RESOURCE_LIST *AllocatedResourcesTranslated OPTIONAL); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMInitializeScatterGatherDma( + IN NDIS_HANDLE MiniportAdapterHandle, + IN BOOLEAN Dma64BitAddresses, + IN ULONG MaximumPhysicalMapping); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMPromoteMiniport( + IN NDIS_HANDLE MiniportAdapterHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMQueryAdapterInstanceName( + OUT PNDIS_STRING AdapterInstanceName, + IN NDIS_HANDLE MiniportAdapterHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMRegisterDevice( + IN NDIS_HANDLE NdisWrapperHandle, + IN PNDIS_STRING DeviceName, + IN PNDIS_STRING SymbolicName, + IN PDRIVER_DISPATCH MajorFunctions[], + OUT PDEVICE_OBJECT *pDeviceObject, + OUT NDIS_HANDLE *NdisDeviceHandle); + +NDISAPI +VOID +DDKAPI +NdisMRegisterUnloadHandler( + IN NDIS_HANDLE NdisWrapperHandle, + IN PDRIVER_UNLOAD UnloadHandler); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMRemoveMiniport( + IN NDIS_HANDLE MiniportAdapterHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMSetMiniportSecondary( + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_HANDLE PrimaryMiniportAdapterHandle); + +NDISAPI +VOID +DDKAPI +NdisOpenConfigurationKeyByIndex( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE ConfigurationHandle, + IN ULONG Index, + OUT PNDIS_STRING KeyName, + OUT PNDIS_HANDLE KeyHandle); + +NDISAPI +VOID +DDKAPI +NdisOpenConfigurationKeyByName( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE ConfigurationHandle, + IN PNDIS_STRING SubKeyName, + OUT PNDIS_HANDLE SubKeyHandle); + +NDISAPI +UINT +DDKAPI +NdisPacketPoolUsage( + IN NDIS_HANDLE PoolHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisQueryAdapterInstanceName( + OUT PNDIS_STRING AdapterInstanceName, + IN NDIS_HANDLE NdisBindingHandle); + +NDISAPI +ULONG +DDKAPI +NdisReadPcmciaAttributeMemory( + IN NDIS_HANDLE NdisAdapterHandle, + IN ULONG Offset, + IN PVOID Buffer, + IN ULONG Length); + +NDISAPI +VOID +DDKAPI +NdisReleaseReadWriteLock( + IN PNDIS_RW_LOCK Lock, + IN PLOCK_STATE LockState); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisWriteEventLogEntry( + IN PVOID LogHandle, + IN NDIS_STATUS EventCode, + IN ULONG UniqueEventValue, + IN USHORT NumStrings, + IN PVOID StringsList OPTIONAL, + IN ULONG DataSize, + IN PVOID Data OPTIONAL); + +NDISAPI +ULONG +DDKAPI +NdisWritePcmciaAttributeMemory( + IN NDIS_HANDLE NdisAdapterHandle, + IN ULONG Offset, + IN PVOID Buffer, + IN ULONG Length); + + +/* Connectionless services */ + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClAddParty( + IN NDIS_HANDLE NdisVcHandle, + IN NDIS_HANDLE ProtocolPartyContext, + IN OUT PCO_CALL_PARAMETERS CallParameters, + OUT PNDIS_HANDLE NdisPartyHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClCloseAddressFamily( + IN NDIS_HANDLE NdisAfHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClCloseCall( + IN NDIS_HANDLE NdisVcHandle, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL, + IN PVOID Buffer OPTIONAL, + IN UINT Size); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClDeregisterSap( + IN NDIS_HANDLE NdisSapHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClDropParty( + IN NDIS_HANDLE NdisPartyHandle, + IN PVOID Buffer OPTIONAL, + IN UINT Size); + +NDISAPI +VOID +DDKAPI +NdisClIncomingCallComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisVcHandle, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClMakeCall( + IN NDIS_HANDLE NdisVcHandle, + IN OUT PCO_CALL_PARAMETERS CallParameters, + IN NDIS_HANDLE ProtocolPartyContext OPTIONAL, + OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClModifyCallQoS( + IN NDIS_HANDLE NdisVcHandle, + IN PCO_CALL_PARAMETERS CallParameters); + + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClOpenAddressFamily( + IN NDIS_HANDLE NdisBindingHandle, + IN PCO_ADDRESS_FAMILY AddressFamily, + IN NDIS_HANDLE ProtocolAfContext, + IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics, + IN UINT SizeOfClCharacteristics, + OUT PNDIS_HANDLE NdisAfHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisClRegisterSap( + IN NDIS_HANDLE NdisAfHandle, + IN NDIS_HANDLE ProtocolSapContext, + IN PCO_SAP Sap, + OUT PNDIS_HANDLE NdisSapHandle); + + +/* Call Manager services */ + +NDISAPI +NDIS_STATUS +DDKAPI +NdisCmActivateVc( + IN NDIS_HANDLE NdisVcHandle, + IN OUT PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +VOID +DDKAPI +NdisCmAddPartyComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisPartyHandle, + IN NDIS_HANDLE CallMgrPartyContext OPTIONAL, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +VOID +DDKAPI +NdisCmCloseAddressFamilyComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisAfHandle); + +NDISAPI +VOID +DDKAPI +NdisCmCloseCallComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisVcHandle, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisCmDeactivateVc( + IN NDIS_HANDLE NdisVcHandle); + +NDISAPI +VOID +DDKAPI +NdisCmDeregisterSapComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisSapHandle); + +NDISAPI +VOID +DDKAPI +NdisCmDispatchCallConnected( + IN NDIS_HANDLE NdisVcHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisCmDispatchIncomingCall( + IN NDIS_HANDLE NdisSapHandle, + IN NDIS_HANDLE NdisVcHandle, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +VOID +DDKAPI +NdisCmDispatchIncomingCallQoSChange( + IN NDIS_HANDLE NdisVcHandle, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +VOID +DDKAPI +NdisCmDispatchIncomingCloseCall( + IN NDIS_STATUS CloseStatus, + IN NDIS_HANDLE NdisVcHandle, + IN PVOID Buffer OPTIONAL, + IN UINT Size); + +NDISAPI +VOID +DDKAPI +NdisCmDispatchIncomingDropParty( + IN NDIS_STATUS DropStatus, + IN NDIS_HANDLE NdisPartyHandle, + IN PVOID Buffer OPTIONAL, + IN UINT Size); + +NDISAPI +VOID +DDKAPI +NdisCmDropPartyComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisPartyHandle); + +NDISAPI +VOID +DDKAPI +NdisCmMakeCallComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisVcHandle, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL, + IN NDIS_HANDLE CallMgrPartyContext OPTIONAL, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +VOID +DDKAPI +NdisCmModifyCallQoSComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisVcHandle, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +VOID +DDKAPI +NdisCmOpenAddressFamilyComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisAfHandle, + IN NDIS_HANDLE CallMgrAfContext); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisCmRegisterAddressFamily( + IN NDIS_HANDLE NdisBindingHandle, + IN PCO_ADDRESS_FAMILY AddressFamily, + IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, + IN UINT SizeOfCmCharacteristics); + +NDISAPI +VOID +DDKAPI +NdisCmRegisterSapComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisSapHandle, + IN NDIS_HANDLE CallMgrSapContext); + + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMCmActivateVc( + IN NDIS_HANDLE NdisVcHandle, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMCmCreateVc( + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_HANDLE NdisAfHandle, + IN NDIS_HANDLE MiniportVcContext, + OUT PNDIS_HANDLE NdisVcHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMCmDeactivateVc( + IN NDIS_HANDLE NdisVcHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMCmDeleteVc( + IN NDIS_HANDLE NdisVcHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMCmRegisterAddressFamily( + IN NDIS_HANDLE MiniportAdapterHandle, + IN PCO_ADDRESS_FAMILY AddressFamily, + IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, + IN UINT SizeOfCmCharacteristics); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMCmRequest( + IN NDIS_HANDLE NdisAfHandle, + IN NDIS_HANDLE NdisVcHandle OPTIONAL, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL, + IN OUT PNDIS_REQUEST NdisRequest); + + +/* Connection-oriented services */ + +NDISAPI +NDIS_STATUS +DDKAPI +NdisCoCreateVc( + IN NDIS_HANDLE NdisBindingHandle, + IN NDIS_HANDLE NdisAfHandle OPTIONAL, + IN NDIS_HANDLE ProtocolVcContext, + IN OUT PNDIS_HANDLE NdisVcHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisCoDeleteVc( + IN NDIS_HANDLE NdisVcHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisCoRequest( + IN NDIS_HANDLE NdisBindingHandle, + IN NDIS_HANDLE NdisAfHandle OPTIONAL, + IN NDIS_HANDLE NdisVcHandle OPTIONAL, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL, + IN OUT PNDIS_REQUEST NdisRequest); + +NDISAPI +VOID +DDKAPI +NdisCoRequestComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisAfHandle, + IN NDIS_HANDLE NdisVcHandle OPTIONAL, + IN NDIS_HANDLE NdisPartyHandle OPTIONAL, + IN PNDIS_REQUEST NdisRequest); + +NDISAPI +VOID +DDKAPI +NdisCoSendPackets( + IN NDIS_HANDLE NdisVcHandle, + IN PPNDIS_PACKET PacketArray, + IN UINT NumberOfPackets); + +NDISAPI +VOID +DDKAPI +NdisMCoActivateVcComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisVcHandle, + IN PCO_CALL_PARAMETERS CallParameters); + +NDISAPI +VOID +DDKAPI +NdisMCoDeactivateVcComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisVcHandle); + +NDISAPI +VOID +DDKAPI +NdisMCoIndicateReceivePacket( + IN NDIS_HANDLE NdisVcHandle, + IN PPNDIS_PACKET PacketArray, + IN UINT NumberOfPackets); + +NDISAPI +VOID +DDKAPI +NdisMCoIndicateStatus( + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_HANDLE NdisVcHandle OPTIONAL, + IN NDIS_STATUS GeneralStatus, + IN PVOID StatusBuffer OPTIONAL, + IN ULONG StatusBufferSize); + +NDISAPI +VOID +DDKAPI +NdisMCoReceiveComplete( + IN NDIS_HANDLE MiniportAdapterHandle); + +NDISAPI +VOID +DDKAPI +NdisMCoRequestComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE MiniportAdapterHandle, + IN PNDIS_REQUEST Request); + +NDISAPI +VOID +DDKAPI +NdisMCoSendComplete( + IN NDIS_STATUS Status, + IN NDIS_HANDLE NdisVcHandle, + IN PNDIS_PACKET Packet); + + +/* NDIS 5.0 extensions for intermediate drivers */ + +NDISAPI +VOID +DDKAPI +NdisIMAssociateMiniport( + IN NDIS_HANDLE DriverHandle, + IN NDIS_HANDLE ProtocolHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisIMCancelInitializeDeviceInstance( + IN NDIS_HANDLE DriverHandle, + IN PNDIS_STRING DeviceInstance); + +NDISAPI +VOID +DDKAPI +NdisIMCopySendCompletePerPacketInfo( + IN PNDIS_PACKET DstPacket, + IN PNDIS_PACKET SrcPacket); + +NDISAPI +VOID +DDKAPI +NdisIMCopySendPerPacketInfo( + IN PNDIS_PACKET DstPacket, + IN PNDIS_PACKET SrcPacket); + +NDISAPI +VOID +DDKAPI +NdisIMDeregisterLayeredMiniport( + IN NDIS_HANDLE DriverHandle); + +NDISAPI +NDIS_HANDLE +DDKAPI +NdisIMGetBindingContext( + IN NDIS_HANDLE NdisBindingHandle); + +NDISAPI +NDIS_HANDLE +DDKAPI +NdisIMGetDeviceContext( + IN NDIS_HANDLE MiniportAdapterHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisIMInitializeDeviceInstanceEx( + IN NDIS_HANDLE DriverHandle, + IN PNDIS_STRING DriverInstance, + IN NDIS_HANDLE DeviceContext OPTIONAL); + +NDISAPI +PSINGLE_LIST_ENTRY +DDKAPI +NdisInterlockedPopEntrySList( + IN PSLIST_HEADER ListHead, + IN PKSPIN_LOCK Lock); + +NDISAPI +PSINGLE_LIST_ENTRY +DDKAPI +NdisInterlockedPushEntrySList( + IN PSLIST_HEADER ListHead, + IN PSINGLE_LIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); + +NDISAPI +VOID +DDKAPI +NdisQueryBufferSafe( + IN PNDIS_BUFFER Buffer, + OUT PVOID *VirtualAddress OPTIONAL, + OUT PUINT Length, + IN UINT Priority); + + +/* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */ + +typedef BOOLEAN DDKAPI +(*W_CHECK_FOR_HANG_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext); + +typedef VOID DDKAPI +(*W_DISABLE_INTERRUPT_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext); + +typedef VOID DDKAPI +(*W_ENABLE_INTERRUPT_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext); + +typedef VOID DDKAPI +(*W_HALT_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext); + +typedef VOID DDKAPI +(*W_HANDLE_INTERRUPT_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext); + +typedef NDIS_STATUS DDKAPI +(*W_INITIALIZE_HANDLER)( + OUT PNDIS_STATUS OpenErrorStatus, + OUT PUINT SelectedMediumIndex, + IN PNDIS_MEDIUM MediumArray, + IN UINT MediumArraySize, + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_HANDLE WrapperConfigurationContext); + +typedef VOID DDKAPI +(*W_ISR_HANDLER)( + OUT PBOOLEAN InterruptRecognized, + OUT PBOOLEAN QueueMiniportHandleInterrupt, + IN NDIS_HANDLE MiniportAdapterContext); + +typedef NDIS_STATUS DDKAPI +(*W_QUERY_INFORMATION_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_OID Oid, + IN PVOID InformationBuffer, + IN ULONG InformationBufferLength, + OUT PULONG BytesWritten, + OUT PULONG BytesNeeded); + +typedef NDIS_STATUS DDKAPI +(*W_RECONFIGURE_HANDLER)( + OUT PNDIS_STATUS OpenErrorStatus, + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_HANDLE WrapperConfigurationContext); + +typedef NDIS_STATUS DDKAPI +(*W_RESET_HANDLER)( + OUT PBOOLEAN AddressingReset, + IN NDIS_HANDLE MiniportAdapterContext); + +typedef NDIS_STATUS DDKAPI +(*W_SEND_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN PNDIS_PACKET Packet, + IN UINT Flags); + +typedef NDIS_STATUS DDKAPI +(*WM_SEND_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_HANDLE NdisLinkHandle, + IN PNDIS_WAN_PACKET Packet); + +typedef NDIS_STATUS DDKAPI +(*W_SET_INFORMATION_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_OID Oid, + IN PVOID InformationBuffer, + IN ULONG InformationBufferLength, + OUT PULONG BytesRead, + OUT PULONG BytesNeeded); + +typedef NDIS_STATUS DDKAPI +(*W_TRANSFER_DATA_HANDLER)( + OUT PNDIS_PACKET Packet, + OUT PUINT BytesTransferred, + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_HANDLE MiniportReceiveContext, + IN UINT ByteOffset, + IN UINT BytesToTransfer); + +typedef NDIS_STATUS DDKAPI +(*WM_TRANSFER_DATA_HANDLER)( + VOID); + + +/* NDIS structures available only to miniport drivers */ + +#define NDIS30_MINIPORT_CHARACTERISTICS_S \ + UCHAR MajorNdisVersion; \ + UCHAR MinorNdisVersion; \ + UINT Reserved; \ + W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \ + W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \ + W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \ + W_HALT_HANDLER HaltHandler; \ + W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \ + W_INITIALIZE_HANDLER InitializeHandler; \ + W_ISR_HANDLER ISRHandler; \ + W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \ + W_RECONFIGURE_HANDLER ReconfigureHandler; \ + W_RESET_HANDLER ResetHandler; \ + _ANONYMOUS_UNION union { \ + W_SEND_HANDLER SendHandler; \ + WM_SEND_HANDLER WanSendHandler; \ + } _UNION_NAME(u1); \ + W_SET_INFORMATION_HANDLER SetInformationHandler; \ + _ANONYMOUS_UNION union { \ + W_TRANSFER_DATA_HANDLER TransferDataHandler; \ + WM_TRANSFER_DATA_HANDLER WanTransferDataHandler; \ + } _UNION_NAME(u2); + +typedef struct _NDIS30_MINIPORT_CHARACTERISTICS { + NDIS30_MINIPORT_CHARACTERISTICS_S +} NDIS30_MINIPORT_CHARACTERISTICS, *PSNDIS30_MINIPORT_CHARACTERISTICS; + + +/* Extensions for NDIS 4.0 miniports */ + +typedef VOID DDKAPI +(*W_SEND_PACKETS_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN PPNDIS_PACKET PacketArray, + IN UINT NumberOfPackets); + +typedef VOID DDKAPI +(*W_RETURN_PACKET_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN PNDIS_PACKET Packet); + +typedef VOID DDKAPI +(*W_ALLOCATE_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN PVOID VirtualAddress, + IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress, + IN ULONG Length, + IN PVOID Context); + +#ifdef __cplusplus + +#define NDIS40_MINIPORT_CHARACTERISTICS_S \ + NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars; \ + W_RETURN_PACKET_HANDLER ReturnPacketHandler; \ + W_SEND_PACKETS_HANDLER SendPacketsHandler; \ + W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; + +#else /* !__cplusplus */ + +#define NDIS40_MINIPORT_CHARACTERISTICS_S \ + NDIS30_MINIPORT_CHARACTERISTICS_S \ + W_RETURN_PACKET_HANDLER ReturnPacketHandler; \ + W_SEND_PACKETS_HANDLER SendPacketsHandler; \ + W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; + +#endif /* !__cplusplus */ + +typedef struct _NDIS40_MINIPORT_CHARACTERISTICS { + NDIS40_MINIPORT_CHARACTERISTICS_S +} NDIS40_MINIPORT_CHARACTERISTICS, *PNDIS40_MINIPORT_CHARACTERISTICS; + + +/* Extensions for NDIS 5.0 miniports */ + +typedef NDIS_STATUS DDKAPI +(*W_CO_CREATE_VC_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_HANDLE NdisVcHandle, + OUT PNDIS_HANDLE MiniportVcContext); + +typedef NDIS_STATUS DDKAPI +(*W_CO_DELETE_VC_HANDLER)( + IN NDIS_HANDLE MiniportVcContext); + +typedef NDIS_STATUS DDKAPI +(*W_CO_ACTIVATE_VC_HANDLER)( + IN NDIS_HANDLE MiniportVcContext, + IN OUT PCO_CALL_PARAMETERS CallParameters); + +typedef NDIS_STATUS DDKAPI +(*W_CO_DEACTIVATE_VC_HANDLER)( + IN NDIS_HANDLE MiniportVcContext); + +typedef VOID DDKAPI +(*W_CO_SEND_PACKETS_HANDLER)( + IN NDIS_HANDLE MiniportVcContext, + IN PPNDIS_PACKET PacketArray, + IN UINT NumberOfPackets); + +typedef NDIS_STATUS DDKAPI +(*W_CO_REQUEST_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN NDIS_HANDLE MiniportVcContext OPTIONAL, + IN OUT PNDIS_REQUEST NdisRequest); + +#ifdef __cplusplus + +#define NDIS50_MINIPORT_CHARACTERISTICS_S \ + NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \ + W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \ + W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \ + W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \ + W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \ + W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \ + W_CO_REQUEST_HANDLER CoRequestHandler; + +#else /* !__cplusplus */ + +#define NDIS50_MINIPORT_CHARACTERISTICS_S \ + NDIS40_MINIPORT_CHARACTERISTICS_S \ + W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \ + W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \ + W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \ + W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \ + W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \ + W_CO_REQUEST_HANDLER CoRequestHandler; + +#endif /* !__cplusplus */ + +typedef struct _NDIS50_MINIPORT_CHARACTERISTICS { + NDIS50_MINIPORT_CHARACTERISTICS_S +} NDIS50_MINIPORT_CHARACTERISTICS, *PSNDIS50_MINIPORT_CHARACTERISTICS; + + +/* Extensions for NDIS 5.1 miniports */ + +typedef VOID DDKAPI +(*W_CANCEL_SEND_PACKETS_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN PVOID CancelId); + + +#if defined(NDIS51) +typedef struct _NDIS_MINIPORT_CHARACTERISTICS { + NDIS50_MINIPORT_CHARACTERISTICS_S +} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; +#elif defined(NDIS50) +typedef struct _NDIS_MINIPORT_CHARACTERISTICS { + NDIS50_MINIPORT_CHARACTERISTICS_S +} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; +#elif defined(NDIS40) +typedef struct _NDIS_MINIPORT_CHARACTERISTICS { + NDIS40_MINIPORT_CHARACTERISTICS_S +} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; +#elif defined(NDIS30) +typedef struct _NDIS_MINIPORT_CHARACTERISTICS { + NDIS30_MINIPORT_CHARACTERISTICS_S +} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; +#endif /* NDIS30 */ + + +typedef NDIS_STATUS DDKAPI +(*SEND_HANDLER)( + IN NDIS_HANDLE MacBindingHandle, + IN PNDIS_PACKET Packet); + +typedef NDIS_STATUS DDKAPI +(*TRANSFER_DATA_HANDLER)( + IN NDIS_HANDLE MacBindingHandle, + IN NDIS_HANDLE MacReceiveContext, + IN UINT ByteOffset, + IN UINT BytesToTransfer, + OUT PNDIS_PACKET Packet, + OUT PUINT BytesTransferred); + +typedef NDIS_STATUS DDKAPI +(*RESET_HANDLER)( + IN NDIS_HANDLE MacBindingHandle); + +typedef NDIS_STATUS DDKAPI +(*REQUEST_HANDLER)( + IN NDIS_HANDLE MacBindingHandle, + IN PNDIS_REQUEST NdisRequest); + + + +/* Structures available only to full MAC drivers */ + +typedef BOOLEAN DDKAPI +(*PNDIS_INTERRUPT_SERVICE)( + IN PVOID InterruptContext); + +typedef VOID DDKAPI +(*PNDIS_DEFERRED_PROCESSING)( + IN PVOID SystemSpecific1, + IN PVOID InterruptContext, + IN PVOID SystemSpecific2, + IN PVOID SystemSpecific3); + + + +typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK, *PNDIS_MINIPORT_BLOCK; +typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK, *PNDIS_PROTOCOL_BLOCK; +typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK, *PNDIS_OPEN_BLOCK; +typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK; +typedef struct _NDIS_AF_LIST NDIS_AF_LIST, *PNDIS_AF_LIST; + + +typedef struct _NDIS_MINIPORT_INTERRUPT { + PKINTERRUPT InterruptObject; + KSPIN_LOCK DpcCountLock; + PVOID MiniportIdField; + W_ISR_HANDLER MiniportIsr; + W_HANDLE_INTERRUPT_HANDLER MiniportDpc; + KDPC InterruptDpc; + PNDIS_MINIPORT_BLOCK Miniport; + UCHAR DpcCount; + BOOLEAN Filler1; + KEVENT DpcsCompletedEvent; + BOOLEAN SharedInterrupt; + BOOLEAN IsrRequested; +} NDIS_MINIPORT_INTERRUPT, *PNDIS_MINIPORT_INTERRUPT; + +typedef struct _NDIS_MINIPORT_TIMER { + KTIMER Timer; + KDPC Dpc; + PNDIS_TIMER_FUNCTION MiniportTimerFunction; + PVOID MiniportTimerContext; + PNDIS_MINIPORT_BLOCK Miniport; + struct _NDIS_MINIPORT_TIMER *NextDeferredTimer; +} NDIS_MINIPORT_TIMER, *PNDIS_MINIPORT_TIMER; + +typedef struct _NDIS_INTERRUPT { + PKINTERRUPT InterruptObject; + KSPIN_LOCK DpcCountLock; + PNDIS_INTERRUPT_SERVICE MacIsr; + PNDIS_DEFERRED_PROCESSING MacDpc; + KDPC InterruptDpc; + PVOID InterruptContext; + UCHAR DpcCount; + BOOLEAN Removing; + KEVENT DpcsCompletedEvent; +} NDIS_INTERRUPT, *PNDIS_INTERRUPT; + + +typedef struct _MAP_REGISTER_ENTRY { + PVOID MapRegister; + BOOLEAN WriteToDevice; +} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY; + + +typedef enum _NDIS_WORK_ITEM_TYPE { + NdisWorkItemRequest, + NdisWorkItemSend, + NdisWorkItemReturnPackets, + NdisWorkItemResetRequested, + NdisWorkItemResetInProgress, + NdisWorkItemHalt, + NdisWorkItemSendLoopback, + NdisWorkItemMiniportCallback, + NdisMaxWorkItems +} NDIS_WORK_ITEM_TYPE, *PNDIS_WORK_ITEM_TYPE; + +#define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems +#define NUMBER_OF_SINGLE_WORK_ITEMS 6 + +typedef struct _NDIS_MINIPORT_WORK_ITEM { + SINGLE_LIST_ENTRY Link; + NDIS_WORK_ITEM_TYPE WorkItemType; + PVOID WorkItemContext; +} NDIS_MINIPORT_WORK_ITEM, *PNDIS_MINIPORT_WORK_ITEM; + + +typedef struct _NDIS_BIND_PATHS { + UINT Number; + NDIS_STRING Paths[1]; +} NDIS_BIND_PATHS, *PNDIS_BIND_PATHS; + +#define DECLARE_UNKNOWN_STRUCT(BaseName) \ + typedef struct _##BaseName BaseName, *P##BaseName; + +#define DECLARE_UNKNOWN_PROTOTYPE(Name) \ + typedef VOID (*(Name))(VOID); + +#define ETH_LENGTH_OF_ADDRESS 6 + +DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO) + +DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE) +DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE) +DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE) + +typedef struct _ETH_FILTER { + PNDIS_SPIN_LOCK Lock; + CHAR (*MCastAddressBuf)[ETH_LENGTH_OF_ADDRESS]; + struct _NDIS_MINIPORT_BLOCK *Miniport; + UINT CombinedPacketFilter; + PETH_BINDING_INFO OpenList; + ETH_ADDRESS_CHANGE AddressChangeAction; + ETH_FILTER_CHANGE FilterChangeAction; + ETH_DEFERRED_CLOSE CloseAction; + UINT MaxMulticastAddresses; + UINT NumAddresses; + UCHAR AdapterAddress[ETH_LENGTH_OF_ADDRESS]; + UINT OldCombinedPacketFilter; + CHAR (*OldMCastAddressBuf)[ETH_LENGTH_OF_ADDRESS]; + UINT OldNumAddresses; + PETH_BINDING_INFO DirectedList; + PETH_BINDING_INFO BMList; + PETH_BINDING_INFO MCastSet; +#if defined(_NDIS_) + UINT NumOpens; + PVOID BindListLock; +#endif +} ETH_FILTER, *PETH_FILTER; + +typedef VOID DDKAPI +(*ETH_RCV_COMPLETE_HANDLER)( + IN PETH_FILTER Filter); + +typedef VOID DDKAPI +(*ETH_RCV_INDICATE_HANDLER)( + IN PETH_FILTER Filter, + IN NDIS_HANDLE MacReceiveContext, + IN PCHAR Address, + IN PVOID HeaderBuffer, + IN UINT HeaderBufferSize, + IN PVOID LookaheadBuffer, + IN UINT LookaheadBufferSize, + IN UINT PacketSize); + +typedef VOID DDKAPI +(*FDDI_RCV_COMPLETE_HANDLER)( + IN PFDDI_FILTER Filter); + +typedef VOID DDKAPI +(*FDDI_RCV_INDICATE_HANDLER)( + IN PFDDI_FILTER Filter, + IN NDIS_HANDLE MacReceiveContext, + IN PCHAR Address, + IN UINT AddressLength, + IN PVOID HeaderBuffer, + IN UINT HeaderBufferSize, + IN PVOID LookaheadBuffer, + IN UINT LookaheadBufferSize, + IN UINT PacketSize); + +typedef VOID DDKAPI +(*FILTER_PACKET_INDICATION_HANDLER)( + IN NDIS_HANDLE Miniport, + IN PPNDIS_PACKET PacketArray, + IN UINT NumberOfPackets); + +typedef VOID DDKAPI +(*TR_RCV_COMPLETE_HANDLER)( + IN PTR_FILTER Filter); + +typedef VOID DDKAPI +(*TR_RCV_INDICATE_HANDLER)( + IN PTR_FILTER Filter, + IN NDIS_HANDLE MacReceiveContext, + IN PVOID HeaderBuffer, + IN UINT HeaderBufferSize, + IN PVOID LookaheadBuffer, + IN UINT LookaheadBufferSize, + IN UINT PacketSize); + +typedef VOID DDKAPI +(*WAN_RCV_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_HANDLE NdisLinkContext); + +typedef VOID DDKAPI +(*WAN_RCV_HANDLER)( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_HANDLE NdisLinkContext, + IN PUCHAR Packet, + IN ULONG PacketSize); + +typedef VOID DDKFASTAPI +(*NDIS_M_DEQUEUE_WORK_ITEM)( + IN PNDIS_MINIPORT_BLOCK Miniport, + IN NDIS_WORK_ITEM_TYPE WorkItemType, + OUT PVOID *WorkItemContext); + +typedef NDIS_STATUS DDKFASTAPI +(*NDIS_M_QUEUE_NEW_WORK_ITEM)( + IN PNDIS_MINIPORT_BLOCK Miniport, + IN NDIS_WORK_ITEM_TYPE WorkItemType, + IN PVOID WorkItemContext); + +typedef NDIS_STATUS DDKFASTAPI +(*NDIS_M_QUEUE_WORK_ITEM)( + IN PNDIS_MINIPORT_BLOCK Miniport, + IN NDIS_WORK_ITEM_TYPE WorkItemType, + IN PVOID WorkItemContext); + +typedef VOID DDKAPI +(*NDIS_M_REQ_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_STATUS Status); + +typedef VOID DDKAPI +(*NDIS_M_RESET_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_STATUS Status, + IN BOOLEAN AddressingReset); + +typedef VOID DDKAPI +(*NDIS_M_SEND_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle, + IN PNDIS_PACKET Packet, + IN NDIS_STATUS Status); + +typedef VOID DDKAPI +(*NDIS_M_SEND_RESOURCES_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle); + +typedef BOOLEAN DDKFASTAPI +(*NDIS_M_START_SENDS)( + IN PNDIS_MINIPORT_BLOCK Miniport); + +typedef VOID DDKAPI +(*NDIS_M_STATUS_HANDLER)( + IN NDIS_HANDLE MiniportHandle, + IN NDIS_STATUS GeneralStatus, + IN PVOID StatusBuffer, + IN UINT StatusBufferSize); + +typedef VOID DDKAPI +(*NDIS_M_STS_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle); + +typedef VOID DDKAPI +(*NDIS_M_TD_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle, + IN PNDIS_PACKET Packet, + IN NDIS_STATUS Status, + IN UINT BytesTransferred); + +typedef VOID (DDKAPI *NDIS_WM_SEND_COMPLETE_HANDLER)( + IN NDIS_HANDLE MiniportAdapterHandle, + IN PVOID Packet, + IN NDIS_STATUS Status); + + +#if ARCNET + +#define ARC_SEND_BUFFERS 8 +#define ARC_HEADER_SIZE 4 + +typedef struct _NDIS_ARC_BUF { + NDIS_HANDLE ArcnetBufferPool; + PUCHAR ArcnetLookaheadBuffer; + UINT NumFree; + ARC_BUFFER_LIST ArcnetBuffers[ARC_SEND_BUFFERS]; +} NDIS_ARC_BUF, *PNDIS_ARC_BUF; + +#endif /* ARCNET */ + +#define NDIS_MINIPORT_WORK_QUEUE_SIZE 10 + +typedef struct _NDIS_LOG { + PNDIS_MINIPORT_BLOCK Miniport; + KSPIN_LOCK LogLock; + PIRP Irp; + UINT TotalSize; + UINT CurrentSize; + UINT InPtr; + UINT OutPtr; + UCHAR LogBuf[1]; +} NDIS_LOG, *PNDIS_LOG; + +typedef struct _FILTERDBS { + _ANONYMOUS_UNION union { + PETH_FILTER EthDB; + PNULL_FILTER NullDB; + } DUMMYUNIONNAME; + PTR_FILTER TrDB; + PFDDI_FILTER FddiDB; +#if ARCNET + PARC_FILTER ArcDB; +#else /* !ARCNET */ + PVOID XXXDB; +#endif /* !ARCNET */ +} FILTERDBS, *PFILTERDBS; + + +struct _NDIS_MINIPORT_BLOCK { + PVOID Signature; + PNDIS_MINIPORT_BLOCK NextMiniport; + PNDIS_M_DRIVER_BLOCK DriverHandle; + NDIS_HANDLE MiniportAdapterContext; + UNICODE_STRING MiniportName; + PNDIS_BIND_PATHS BindPaths; + NDIS_HANDLE OpenQueue; + REFERENCE Ref; + NDIS_HANDLE DeviceContext; + UCHAR Padding1; + UCHAR LockAcquired; + UCHAR PmodeOpens; + UCHAR AssignedProcessor; + KSPIN_LOCK Lock; + PNDIS_REQUEST MediaRequest; + PNDIS_MINIPORT_INTERRUPT Interrupt; + ULONG Flags; + ULONG PnPFlags; + LIST_ENTRY PacketList; + PNDIS_PACKET FirstPendingPacket; + PNDIS_PACKET ReturnPacketsQueue; + ULONG RequestBuffer; + PVOID SetMCastBuffer; + PNDIS_MINIPORT_BLOCK PrimaryMiniport; + PVOID WrapperContext; + PVOID BusDataContext; + ULONG PnPCapabilities; + PCM_RESOURCE_LIST Resources; + NDIS_TIMER WakeUpDpcTimer; + UNICODE_STRING BaseName; + UNICODE_STRING SymbolicLinkName; + ULONG CheckForHangSeconds; + USHORT CFHangTicks; + USHORT CFHangCurrentTick; + NDIS_STATUS ResetStatus; + NDIS_HANDLE ResetOpen; + FILTERDBS FilterDbs; + FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler; + NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler; + NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler; + NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler; + NDIS_MEDIUM MediaType; + ULONG BusNumber; + NDIS_INTERFACE_TYPE BusType; + NDIS_INTERFACE_TYPE AdapterType; + PDEVICE_OBJECT DeviceObject; + PDEVICE_OBJECT PhysicalDeviceObject; + PDEVICE_OBJECT NextDeviceObject; + PMAP_REGISTER_ENTRY MapRegisters; + PNDIS_AF_LIST CallMgrAfList; + PVOID MiniportThread; + PVOID SetInfoBuf; + USHORT SetInfoBufLen; + USHORT MaxSendPackets; + NDIS_STATUS FakeStatus; + PVOID LockHandler; + PUNICODE_STRING pAdapterInstanceName; + PNDIS_MINIPORT_TIMER TimerQueue; + UINT MacOptions; + PNDIS_REQUEST PendingRequest; + UINT MaximumLongAddresses; + UINT MaximumShortAddresses; + UINT CurrentLookahead; + UINT MaximumLookahead; + W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; + W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; + W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; + W_SEND_PACKETS_HANDLER SendPacketsHandler; + NDIS_M_START_SENDS DeferredSendHandler; + ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler; + TR_RCV_INDICATE_HANDLER TrRxIndicateHandler; + FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler; + ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler; + TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler; + FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler; + NDIS_M_STATUS_HANDLER StatusHandler; + NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler; + NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler; + NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler; + NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler; + NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler; + WAN_RCV_HANDLER WanRcvHandler; + WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler; +#if defined(_NDIS_) + PNDIS_MINIPORT_BLOCK NextGlobalMiniport; + SINGLE_LIST_ENTRY WorkQueue[NUMBER_OF_WORK_ITEM_TYPES]; + SINGLE_LIST_ENTRY SingleWorkItems[NUMBER_OF_SINGLE_WORK_ITEMS]; + UCHAR SendFlags; + UCHAR TrResetRing; + UCHAR ArcnetAddress; + UCHAR XState; + _ANONYMOUS_UNION union { +#if ARCNET + PNDIS_ARC_BUF ArcBuf; +#endif + PVOID BusInterface; + } DUMMYUNIONNAME; + PNDIS_LOG Log; + ULONG SlotNumber; + PCM_RESOURCE_LIST AllocatedResources; + PCM_RESOURCE_LIST AllocatedResourcesTranslated; + SINGLE_LIST_ENTRY PatternList; + NDIS_PNP_CAPABILITIES PMCapabilities; + DEVICE_CAPABILITIES DeviceCaps; + ULONG WakeUpEnable; + DEVICE_POWER_STATE CurrentDevicePowerState; + PIRP pIrpWaitWake; + SYSTEM_POWER_STATE WaitWakeSystemState; + LARGE_INTEGER VcIndex; + KSPIN_LOCK VcCountLock; + LIST_ENTRY WmiEnabledVcs; + PNDIS_GUID pNdisGuidMap; + PNDIS_GUID pCustomGuidMap; + USHORT VcCount; + USHORT cNdisGuidMap; + USHORT cCustomGuidMap; + USHORT CurrentMapRegister; + PKEVENT AllocationEvent; + USHORT BaseMapRegistersNeeded; + USHORT SGMapRegistersNeeded; + ULONG MaximumPhysicalMapping; + NDIS_TIMER MediaDisconnectTimer; + USHORT MediaDisconnectTimeOut; + USHORT InstanceNumber; + NDIS_EVENT OpenReadyEvent; + NDIS_PNP_DEVICE_STATE PnPDeviceState; + NDIS_PNP_DEVICE_STATE OldPnPDeviceState; + PGET_SET_DEVICE_DATA SetBusData; + PGET_SET_DEVICE_DATA GetBusData; + KDPC DeferredDpc; +#if 0 + /* FIXME: */ + NDIS_STATS NdisStats; +#else + ULONG NdisStats; +#endif + PNDIS_PACKET IndicatedPacket[MAXIMUM_PROCESSORS]; + PKEVENT RemoveReadyEvent; + PKEVENT AllOpensClosedEvent; + PKEVENT AllRequestsCompletedEvent; + ULONG InitTimeMs; + NDIS_MINIPORT_WORK_ITEM WorkItemBuffer[NUMBER_OF_SINGLE_WORK_ITEMS]; + PDMA_ADAPTER SystemAdapterObject; + ULONG DriverVerifyFlags; + POID_LIST OidList; + USHORT InternalResetCount; + USHORT MiniportResetCount; + USHORT MediaSenseConnectCount; + USHORT MediaSenseDisconnectCount; + PNDIS_PACKET *xPackets; + ULONG UserModeOpenReferences; + _ANONYMOUS_UNION union { + PVOID SavedSendHandler; + PVOID SavedWanSendHandler; + } DUMMYUNIONNAME2; + PVOID SavedSendPacketsHandler; + PVOID SavedCancelSendPacketsHandler; + W_SEND_PACKETS_HANDLER WSendPacketsHandler; + ULONG MiniportAttributes; + PDMA_ADAPTER SavedSystemAdapterObject; + USHORT NumOpens; + USHORT CFHangXTicks; + ULONG RequestCount; + ULONG IndicatedPacketsCount; + ULONG PhysicalMediumType; + PNDIS_REQUEST LastRequest; + LONG DmaAdapterRefCount; + PVOID FakeMac; + ULONG LockDbg; + ULONG LockDbgX; + PVOID LockThread; + ULONG InfoFlags; + KSPIN_LOCK TimerQueueLock; + PKEVENT ResetCompletedEvent; + PKEVENT QueuedBindingCompletedEvent; + PKEVENT DmaResourcesReleasedEvent; + FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler; + ULONG RegisteredInterrupts; + PNPAGED_LOOKASIDE_LIST SGListLookasideList; + ULONG ScatterGatherListSize; +#endif /* _NDIS_ */ +}; + + +/* Handler prototypes for NDIS_OPEN_BLOCK */ + +typedef NDIS_STATUS (DDKAPI *WAN_SEND_HANDLER)( + IN NDIS_HANDLE MacBindingHandle, + IN NDIS_HANDLE LinkHandle, + IN PVOID Packet); + +/* NDIS 4.0 extension */ + +typedef VOID (DDKAPI *SEND_PACKETS_HANDLER)( + IN NDIS_HANDLE MiniportAdapterContext, + IN PPNDIS_PACKET PacketArray, + IN UINT NumberOfPackets); + + +typedef struct _NDIS_COMMON_OPEN_BLOCK { + PVOID MacHandle; + NDIS_HANDLE BindingHandle; + PNDIS_MINIPORT_BLOCK MiniportHandle; + PNDIS_PROTOCOL_BLOCK ProtocolHandle; + NDIS_HANDLE ProtocolBindingContext; + PNDIS_OPEN_BLOCK MiniportNextOpen; + PNDIS_OPEN_BLOCK ProtocolNextOpen; + NDIS_HANDLE MiniportAdapterContext; + BOOLEAN Reserved1; + BOOLEAN Reserved2; + BOOLEAN Reserved3; + BOOLEAN Reserved4; + PNDIS_STRING BindDeviceName; + KSPIN_LOCK Reserved5; + PNDIS_STRING RootDeviceName; + _ANONYMOUS_UNION union { + SEND_HANDLER SendHandler; + WAN_SEND_HANDLER WanSendHandler; + } DUMMYUNIONNAME; + TRANSFER_DATA_HANDLER TransferDataHandler; + SEND_COMPLETE_HANDLER SendCompleteHandler; + TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; + RECEIVE_HANDLER ReceiveHandler; + RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; + WAN_RECEIVE_HANDLER WanReceiveHandler; + REQUEST_COMPLETE_HANDLER RequestCompleteHandler; + RECEIVE_PACKET_HANDLER ReceivePacketHandler; + SEND_PACKETS_HANDLER SendPacketsHandler; + RESET_HANDLER ResetHandler; + REQUEST_HANDLER RequestHandler; + RESET_COMPLETE_HANDLER ResetCompleteHandler; + STATUS_HANDLER StatusHandler; + STATUS_COMPLETE_HANDLER StatusCompleteHandler; +#if defined(_NDIS_) + ULONG Flags; + ULONG References; + KSPIN_LOCK SpinLock; + NDIS_HANDLE FilterHandle; + ULONG ProtocolOptions; + USHORT CurrentLookahead; + USHORT ConnectDampTicks; + USHORT DisconnectDampTicks; + W_SEND_HANDLER WSendHandler; + W_TRANSFER_DATA_HANDLER WTransferDataHandler; + W_SEND_PACKETS_HANDLER WSendPacketsHandler; + W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; + ULONG WakeUpEnable; + PKEVENT CloseCompleteEvent; + QUEUED_CLOSE QC; + ULONG AfReferences; + PNDIS_OPEN_BLOCK NextGlobalOpen; +#endif /* _NDIS_ */ +} NDIS_COMMON_OPEN_BLOCK; + +struct _NDIS_OPEN_BLOCK +{ + NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock; +#if defined(_NDIS_) + struct _NDIS_OPEN_CO + { + struct _NDIS_CO_AF_BLOCK * NextAf; + W_CO_CREATE_VC_HANDLER MiniportCoCreateVcHandler; + W_CO_REQUEST_HANDLER MiniportCoRequestHandler; + CO_CREATE_VC_HANDLER CoCreateVcHandler; + CO_DELETE_VC_HANDLER CoDeleteVcHandler; + PVOID CmActivateVcCompleteHandler; + PVOID CmDeactivateVcCompleteHandler; + PVOID CoRequestCompleteHandler; + LIST_ENTRY ActiveVcHead; + LIST_ENTRY InactiveVcHead; + LONG PendingAfNotifications; + PKEVENT AfNotifyCompleteEvent; + }; +#endif /* _NDIS_ */ +}; + + + +/* Routines for NDIS miniport drivers */ + +NDISAPI +VOID +DDKAPI +NdisInitializeWrapper( + OUT PNDIS_HANDLE NdisWrapperHandle, + IN PVOID SystemSpecific1, + IN PVOID SystemSpecific2, + IN PVOID SystemSpecific3); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMAllocateMapRegisters( + IN NDIS_HANDLE MiniportAdapterHandle, + IN UINT DmaChannel, + IN BOOLEAN Dma32BitAddresses, + IN ULONG PhysicalMapRegistersNeeded, + IN ULONG MaximumPhysicalMapping); + +/* + * VOID + * NdisMArcIndicateReceive( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN PUCHAR HeaderBuffer, + * IN PUCHAR DataBuffer, + * IN UINT Length); + */ +#define NdisMArcIndicateReceive(MiniportAdapterHandle, \ + HeaderBuffer, \ + DataBuffer, \ + Length) \ +{ \ + ArcFilterDprIndicateReceive( \ + (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.ArcDB), \ + (HeaderBuffer), \ + (DataBuffer), \ + (Length)); \ +} + +/* + * VOID + * NdisMArcIndicateReceiveComplete( + * IN NDIS_HANDLE MiniportAdapterHandle); + */ +#define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \ +{ \ + if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \ + { \ + NdisMEthIndicateReceiveComplete(_H); \ + } \ + \ + ArcFilterDprIndicateReceiveComplete( \ + ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \ +} + +NDISAPI +VOID +DDKAPI +NdisMCloseLog( + IN NDIS_HANDLE LogHandle); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMCreateLog( + IN NDIS_HANDLE MiniportAdapterHandle, + IN UINT Size, + OUT PNDIS_HANDLE LogHandle); + +NDISAPI +VOID +DDKAPI +NdisMDeregisterAdapterShutdownHandler( + IN NDIS_HANDLE MiniportHandle); + +NDISAPI +VOID +DDKAPI +NdisMDeregisterInterrupt( + IN PNDIS_MINIPORT_INTERRUPT Interrupt); + +NDISAPI +VOID +DDKAPI +NdisMDeregisterIoPortRange( + IN NDIS_HANDLE MiniportAdapterHandle, + IN UINT InitialPort, + IN UINT NumberOfPorts, + IN PVOID PortOffset); + +/* + * VOID + * NdisMEthIndicateReceive( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_HANDLE MiniportReceiveContext, + * IN PVOID HeaderBuffer, + * IN UINT HeaderBufferSize, + * IN PVOID LookaheadBuffer, + * IN UINT LookaheadBufferSize, + * IN UINT PacketSize); + */ +#define NdisMEthIndicateReceive(MiniportAdapterHandle, \ + MiniportReceiveContext, \ + HeaderBuffer, \ + HeaderBufferSize, \ + LookaheadBuffer, \ + LookaheadBufferSize, \ + PacketSize) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \ + (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.EthDB), \ + (MiniportReceiveContext), \ + (HeaderBuffer), \ + (HeaderBuffer), \ + (HeaderBufferSize), \ + (LookaheadBuffer), \ + (LookaheadBufferSize), \ + (PacketSize)); \ +} + +/* + * VOID + * NdisMEthIndicateReceiveComplete( + * IN NDIS_HANDLE MiniportAdapterHandle); + */ +#define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \ + ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.EthDB); \ +} + +/* + * VOID + * NdisMFddiIndicateReceive( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_HANDLE MiniportReceiveContext, + * IN PVOID HeaderBuffer, + * IN UINT HeaderBufferSize, + * IN PVOID LookaheadBuffer, + * IN UINT LookaheadBufferSize, + * IN UINT PacketSize); + */ +#define NdisMFddiIndicateReceive(MiniportAdapterHandle, \ + MiniportReceiveContext, \ + HeaderBuffer, \ + HeaderBufferSize, \ + LookaheadBuffer, \ + LookaheadBufferSize, \ + PacketSize) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \ + (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.FddiDB), \ + (MiniportReceiveContext), \ + (PUCHAR)(HeaderBuffer) + 1, \ + (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \ + FDDI_LENGTH_OF_LONG_ADDRESS : \ + FDDI_LENGTH_OF_SHORT_ADDRESS), \ + (HeaderBuffer), \ + (HeaderBufferSize), \ + (LookaheadBuffer), \ + (LookaheadBufferSize), \ + (PacketSize)); \ +} + + + +/* + * VOID + * NdisMFddiIndicateReceiveComplete( + * IN NDIS_HANDLE MiniportAdapterHandle); + */ +#define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \ + ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.FddiDB); \ +} + +NDISAPI +VOID +DDKAPI +NdisMFlushLog( + IN NDIS_HANDLE LogHandle); + +NDISAPI +VOID +DDKAPI +NdisMFreeMapRegisters( + IN NDIS_HANDLE MiniportAdapterHandle); + +/* + * VOID + * NdisMIndicateStatus( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_STATUS GeneralStatus, + * IN PVOID StatusBuffer, + * IN UINT StatusBufferSize); + */ + +#define NdisMIndicateStatus(MiniportAdapterHandle, \ + GeneralStatus, StatusBuffer, StatusBufferSize) \ + (*((PNDIS_MINIPORT_BLOCK)(_M))->StatusHandler)( \ + MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize) + +/* + * VOID + * NdisMIndicateStatusComplete( + * IN NDIS_HANDLE MiniportAdapterHandle); + */ +#define NdisMIndicateStatusComplete(MiniportAdapterHandle) \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \ + MiniportAdapterHandle) + +/* + * VOID + * NdisMInitializeWrapper( + * OUT PNDIS_HANDLE NdisWrapperHandle, + * IN PVOID SystemSpecific1, + * IN PVOID SystemSpecific2, + * IN PVOID SystemSpecific3); + */ +#define NdisMInitializeWrapper(NdisWrapperHandle, \ + SystemSpecific1, \ + SystemSpecific2, \ + SystemSpecific3) \ + NdisInitializeWrapper((NdisWrapperHandle), \ + (SystemSpecific1), \ + (SystemSpecific2), \ + (SystemSpecific3)) + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMMapIoSpace( + OUT PVOID *VirtualAddress, + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, + IN UINT Length); + +/* + * VOID + * NdisMQueryInformationComplete( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_STATUS Status); + */ +#define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status) + +NDISAPI +VOID +DDKAPI +NdisMRegisterAdapterShutdownHandler( + IN NDIS_HANDLE MiniportHandle, + IN PVOID ShutdownContext, + IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMRegisterInterrupt( + OUT PNDIS_MINIPORT_INTERRUPT Interrupt, + IN NDIS_HANDLE MiniportAdapterHandle, + IN UINT InterruptVector, + IN UINT InterruptLevel, + IN BOOLEAN RequestIsr, + IN BOOLEAN SharedInterrupt, + IN NDIS_INTERRUPT_MODE InterruptMode); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMRegisterIoPortRange( + OUT PVOID *PortOffset, + IN NDIS_HANDLE MiniportAdapterHandle, + IN UINT InitialPort, + IN UINT NumberOfPorts); + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMRegisterMiniport( + IN NDIS_HANDLE NdisWrapperHandle, + IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, + IN UINT CharacteristicsLength); + + +#if !defined(_NDIS_) + +/* + * VOID + * NdisMResetComplete( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_STATUS Status, + * IN BOOLEAN AddressingReset); + */ +#define NdisMResetComplete(MiniportAdapterHandle, \ + Status, \ + AddressingReset) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \ + MiniportAdapterHandle, Status, AddressingReset); \ +} + +/* + * VOID + * NdisMSendComplete( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN PNDIS_PACKET Packet, + * IN NDIS_STATUS Status); + */ +#define NdisMSendComplete(MiniportAdapterHandle, \ + Packet, \ + Status) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \ + MiniportAdapterHandle, Packet, Status); \ +} + +/* + * VOID + * NdisMSendResourcesAvailable( + * IN NDIS_HANDLE MiniportAdapterHandle); + */ +#define NdisMSendResourcesAvailable(MiniportAdapterHandle) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \ + MiniportAdapterHandle); \ +} + +/* + * VOID + * NdisMTransferDataComplete( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN PNDIS_PACKET Packet, + * IN NDIS_STATUS Status, + * IN UINT BytesTransferred); + */ +#define NdisMTransferDataComplete(MiniportAdapterHandle, \ + Packet, \ + Status, \ + BytesTransferred) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \ + MiniportAdapterHandle, Packet, Status, BytesTransferred) \ +} + +#endif /* !_NDIS_ */ + + +/* + * VOID + * NdisMSetAttributes( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_HANDLE MiniportAdapterContext, + * IN BOOLEAN BusMaster, + * IN NDIS_INTERFACE_TYPE AdapterType); + */ +#define NdisMSetAttributes(MiniportAdapterHandle, \ + MiniportAdapterContext, \ + BusMaster, \ + AdapterType) \ + NdisMSetAttributesEx(MiniportAdapterHandle, \ + MiniportAdapterContext, \ + 0, \ + (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \ + AdapterType) + +NDISAPI +VOID +DDKAPI +NdisMSetAttributesEx( + IN NDIS_HANDLE MiniportAdapterHandle, + IN NDIS_HANDLE MiniportAdapterContext, + IN UINT CheckForHangTimeInSeconds OPTIONAL, + IN ULONG AttributeFlags, + IN NDIS_INTERFACE_TYPE AdapterType); + +/* + * VOID + * NdisMSetInformationComplete( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_STATUS Status); + */ +#define NdisMSetInformationComplete(MiniportAdapterHandle, \ + Status) \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \ + MiniportAdapterHandle, Status) + +NDISAPI +VOID +DDKAPI +NdisMSleep( + IN ULONG MicrosecondsToSleep); + +NDISAPI +BOOLEAN +DDKAPI +NdisMSynchronizeWithInterrupt( + IN PNDIS_MINIPORT_INTERRUPT Interrupt, + IN PVOID SynchronizeFunction, + IN PVOID SynchronizeContext); + +/* + * VOID + * NdisMTrIndicateReceive( + * IN NDIS_HANDLE MiniportAdapterHandle, + * IN NDIS_HANDLE MiniportReceiveContext, + * IN PVOID HeaderBuffer, + * IN UINT HeaderBufferSize, + * IN PVOID LookaheadBuffer, + * IN UINT LookaheadBufferSize, + * IN UINT PacketSize); + */ +#define NdisMTrIndicateReceive(MiniportAdapterHandle, \ + MiniportReceiveContext, \ + HeaderBuffer, \ + HeaderBufferSize, \ + LookaheadBuffer, \ + LookaheadBufferSize, \ + PacketSize) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \ + (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.TrDB), \ + (MiniportReceiveContext), \ + (HeaderBuffer), \ + (HeaderBuffer), \ + (HeaderBufferSize), \ + (LookaheadBuffer), \ + (LookaheadBufferSize), \ + (PacketSize)); \ +} + +/* + * VOID + * NdisMTrIndicateReceiveComplete( + * IN NDIS_HANDLE MiniportAdapterHandle); + */ +#define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \ +{ \ + (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \ + ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.TrDB); \ +} + +NDISAPI +NDIS_STATUS +DDKAPI +NdisMWriteLogData( + IN NDIS_HANDLE LogHandle, + IN PVOID LogBuffer, + IN UINT LogBufferSize); + +NDISAPI +VOID +DDKAPI +NdisMQueryAdapterResources( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE WrapperConfigurationContext, + OUT PNDIS_RESOURCE_LIST ResourceList, + IN OUT PUINT BufferSize); + +NDISAPI +VOID +DDKAPI +NdisTerminateWrapper( + IN NDIS_HANDLE NdisWrapperHandle, + IN PVOID SystemSpecific); + +NDISAPI +VOID +DDKAPI +NdisMUnmapIoSpace( + IN NDIS_HANDLE MiniportAdapterHandle, + IN PVOID VirtualAddress, + IN UINT Length); + + + +/* NDIS intermediate miniport structures */ + +typedef VOID (DDKAPI *W_MINIPORT_CALLBACK)( + IN NDIS_HANDLE MiniportAdapterContext, + IN PVOID CallbackContext); + + + +/* Routines for intermediate miniport drivers */ + +NDISAPI +NDIS_STATUS +DDKAPI +NdisIMDeInitializeDeviceInstance( + IN NDIS_HANDLE NdisMiniportHandle); + +/* + * NDIS_STATUS + * NdisIMInitializeDeviceInstance( + * IN NDIS_HANDLE DriverHandle, + * IN PNDIS_STRING DeviceInstance); + */ +#define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \ + NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL) + +NDISAPI +NDIS_STATUS +DDKAPI +NdisIMRegisterLayeredMiniport( + IN NDIS_HANDLE NdisWrapperHandle, + IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, + IN UINT CharacteristicsLength, + OUT PNDIS_HANDLE DriverHandle); + + +/* Functions obsoleted by NDIS 5.0 */ + +NDISAPI +VOID +DDKAPI +NdisFreeDmaChannel( + IN PNDIS_HANDLE NdisDmaHandle); + +NDISAPI +VOID +DDKAPI +NdisSetupDmaTransfer( + OUT PNDIS_STATUS Status, + IN PNDIS_HANDLE NdisDmaHandle, + IN PNDIS_BUFFER Buffer, + IN ULONG Offset, + IN ULONG Length, + IN BOOLEAN WriteToDevice); + +NDISAPI +NTSTATUS +DDKAPI +NdisUpcaseUnicodeString( + OUT PUNICODE_STRING DestinationString, + IN PUNICODE_STRING SourceString); + + +/* Routines for NDIS protocol drivers */ + +NDISAPI +VOID +DDKAPI +NdisRequest( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE NdisBindingHandle, + IN PNDIS_REQUEST NdisRequest); + +NDISAPI +VOID +DDKAPI +NdisReset( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE NdisBindingHandle); + +NDISAPI +VOID +DDKAPI +NdisSend( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE NdisBindingHandle, + IN PNDIS_PACKET Packet); + +NDISAPI +VOID +DDKAPI +NdisSendPackets( + IN NDIS_HANDLE NdisBindingHandle, + IN PPNDIS_PACKET PacketArray, + IN UINT NumberOfPackets); + +NDISAPI +VOID +DDKAPI +NdisTransferData( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE NdisBindingHandle, + IN NDIS_HANDLE MacReceiveContext, + IN UINT ByteOffset, + IN UINT BytesToTransfer, + IN OUT PNDIS_PACKET Packet, + OUT PUINT BytesTransferred); + +NDISAPI +VOID +DDKAPI +NdisCloseAdapter( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE NdisBindingHandle); + +NDISAPI +VOID +DDKAPI +NdisCompleteBindAdapter( + IN NDIS_HANDLE BindAdapterContext, + IN NDIS_STATUS Status, + IN NDIS_STATUS OpenStatus); + +NDISAPI +VOID +DDKAPI +NdisCompleteUnbindAdapter( + IN NDIS_HANDLE UnbindAdapterContext, + IN NDIS_STATUS Status); + +NDISAPI +VOID +DDKAPI +NdisDeregisterProtocol( + OUT PNDIS_STATUS Status, + IN NDIS_HANDLE NdisProtocolHandle); + +NDISAPI +VOID +DDKAPI +NdisOpenAdapter( + OUT PNDIS_STATUS Status, + OUT PNDIS_STATUS OpenErrorStatus, + OUT PNDIS_HANDLE NdisBindingHandle, + OUT PUINT SelectedMediumIndex, + IN PNDIS_MEDIUM MediumArray, + IN UINT MediumArraySize, + IN NDIS_HANDLE NdisProtocolHandle, + IN NDIS_HANDLE ProtocolBindingContext, + IN PNDIS_STRING AdapterName, + IN UINT OpenOptions, + IN PSTRING AddressingInformation); + +NDISAPI +VOID +DDKAPI +NdisOpenProtocolConfiguration( + OUT PNDIS_STATUS Status, + OUT PNDIS_HANDLE ConfigurationHandle, + IN PNDIS_STRING ProtocolSection); + +NDISAPI +VOID +DDKAPI +NdisRegisterProtocol( + OUT PNDIS_STATUS Status, + OUT PNDIS_HANDLE NdisProtocolHandle, + IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics, + IN UINT CharacteristicsLength); + +/* Obsoleted in Windows XP */ + +/* Prototypes for NDIS_MAC_CHARACTERISTICS */ + +typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER)( + OUT PNDIS_STATUS OpenErrorStatus, + OUT NDIS_HANDLE *MacBindingHandle, + OUT PUINT SelectedMediumIndex, + IN PNDIS_MEDIUM MediumArray, + IN UINT MediumArraySize, + IN NDIS_HANDLE NdisBindingContext, + IN NDIS_HANDLE MacAdapterContext, + IN UINT OpenOptions, + IN PSTRING AddressingInformation OPTIONAL); + +typedef NDIS_STATUS (DDKAPI *CLOSE_ADAPTER_HANDLER)( + IN NDIS_HANDLE MacBindingHandle); + +typedef NDIS_STATUS (DDKAPI *WAN_TRANSFER_DATA_HANDLER)( + VOID); + +typedef NDIS_STATUS (DDKAPI *QUERY_GLOBAL_STATISTICS_HANDLER)( + IN NDIS_HANDLE MacAdapterContext, + IN PNDIS_REQUEST NdisRequest); + +typedef VOID (DDKAPI *UNLOAD_MAC_HANDLER)( + IN NDIS_HANDLE MacMacContext); + +typedef NDIS_STATUS (DDKAPI *ADD_ADAPTER_HANDLER)( + IN NDIS_HANDLE MacMacContext, + IN NDIS_HANDLE WrapperConfigurationContext, + IN PNDIS_STRING AdapterName); + +typedef VOID (*REMOVE_ADAPTER_HANDLER)( + IN NDIS_HANDLE MacAdapterContext); + +typedef struct _NDIS_MAC_CHARACTERISTICS { + UCHAR MajorNdisVersion; + UCHAR MinorNdisVersion; + UINT Reserved; + OPEN_ADAPTER_HANDLER OpenAdapterHandler; + CLOSE_ADAPTER_HANDLER CloseAdapterHandler; + SEND_HANDLER SendHandler; + TRANSFER_DATA_HANDLER TransferDataHandler; + RESET_HANDLER ResetHandler; + REQUEST_HANDLER RequestHandler; + QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler; + UNLOAD_MAC_HANDLER UnloadMacHandler; + ADD_ADAPTER_HANDLER AddAdapterHandler; + REMOVE_ADAPTER_HANDLER RemoveAdapterHandler; + NDIS_STRING Name; +} NDIS_MAC_CHARACTERISTICS, *PNDIS_MAC_CHARACTERISTICS; + +typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS; +typedef NDIS_WAN_MAC_CHARACTERISTICS *PNDIS_WAN_MAC_CHARACTERISTICS; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NDIS_H */ + +/* EOF */ diff --git a/reactos/w32api/include/ddk/ndisguid.h b/reactos/w32api/include/ddk/ndisguid.h new file mode 100644 index 00000000000..27b8777bfb5 --- /dev/null +++ b/reactos/w32api/include/ddk/ndisguid.h @@ -0,0 +1,439 @@ +/* + * ndisguid.h + * + * GUIDs for NDIS drivers + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NDISGUID_H +#define __NDISGUID_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_GUID(GUID_NDIS_LAN_CLASS, + 0xad498944, 0x762f, 0x11d0, 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ENUMERATE_ADAPTER, + 0x981f2d7f, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ENUMERATE_VC, + 0x981f2d82, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL, + 0x981f2d81, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_NOTIFY_ADAPTER_REMOVAL, + 0x981f2d80, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_NOTIFY_VC_ARRIVAL, + 0x182f9e0c, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_NOTIFY_VC_REMOVAL, + 0x981f2d79, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_NOTIFY_BIND, + 0x5413531c, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_NOTIFY_UNBIND, + 0x6e3ce1ec, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY, + 0xa14f1c97, 0x8839, 0x4f8a, 0x99, 0x96, 0xa2, 0x89, 0x96, 0xeb, 0xbf, 0x1d); + + +DEFINE_GUID(GUID_NDIS_802_3_CURRENT_ADDRESS, + 0x44795700, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_3_MAC_OPTIONS, + 0x44795703, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_3_MAXIMUM_LIST_SIZE, + 0x44795702, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_3_MULTICAST_LIST, + 0x44795701, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_3_PERMANENT_ADDRESS, + 0x447956ff, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT, + 0x44795704, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_3_XMIT_MORE_COLLISIONS, + 0x44795706, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_3_XMIT_ONE_COLLISION, + 0x44795705, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_CURRENT_ADDRESS, + 0x44795708, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_CURRENT_FUNCTIONAL, + 0x44795709, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_CURRENT_GROUP, + 0x4479570a, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_CURRENT_RING_STATE, + 0xacf14032, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_CURRENT_RING_STATUS, + 0x890a36ec, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_LAST_OPEN_STATUS, + 0x4479570b, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_PERMANENT_ADDRESS, + 0x44795707, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_LINE_ERRORS, + 0xacf14033, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_802_5_LOST_FRAMES, + 0xacf14034, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_802_11_ADD_WEP, + 0x4307bff0, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_AUTHENTICATION_MODE, + 0x43920a24, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_BSSID, + 0x2504b6c2, 0x1fa5, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_BSSID_LIST, + 0x69526f9a, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_BASIC_RATES, + 0x4a198516, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_CONFIGURATION, + 0x4a4df982, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_DESIRED_RATES, + 0x452ee08e, 0x2536, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_DISASSOCIATE, + 0x43671f40, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_FRAGMENTATION_THRESHOLD, + 0x69aaa7c4, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_INFRASTRUCTURE_MODE, + 0x697d5a7e, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_NETWORK_TYPES_SUPPORTED, + 0x8531d6e6, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_NETWORK_TYPE_IN_USE, + 0x857e2326, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_NUMBER_OF_ANTENNAS, + 0x01779336, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_POWER_MODE, + 0x85be837c, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_RATES_SUPPORTED, + 0x49db8722, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_REMOVE_WEP, + 0x433c345c, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_PRIVACY_FILTER, + 0x6733c4e9, 0x4792, 0x11d4, 0x97, 0xf1, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_RSSI, + 0x1507db16, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_RSSI_TRIGGER, + 0x155689b8, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_RTS_THRESHOLD, + 0x0134d07e, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_RX_ANTENNA_SELECTED, + 0x01ac07a2, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_SSID, + 0x7d2a90ea, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_STATISTICS, + 0x42bb73b0, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_TX_POWER_LEVEL, + 0x11e6ba76, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + +DEFINE_GUID(GUID_NDIS_802_11_TX_ANTENNA_SELECTED, + 0x01dbb74a, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03); + + +DEFINE_GUID(GUID_NDIS_ATM_HW_CURRENT_ADDRESS, + 0x791ad1a1, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE, + 0x791ad1a5, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE, + 0x791ad1a6, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE, + 0x791ad1a7, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE, + 0x791ad191, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS, + 0x791ad1a3, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VCS, + 0x791ad1a2, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS, + 0x791ad1a4, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_AAL_TYPES, + 0x791ad1a0, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEGORY, + 0x791ad19f, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_VC_RATES, + 0x791ad19e, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_ATM_RCV_CELLS_DROPPED, + 0x0a21480c, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_RCV_CELLS_OK, + 0x0a21480a, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_ATM_XMIT_CELLS_OK, + 0x0a21480b, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_FDDI_LONG_CURRENT_ADDR, + 0xacf14036, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE, + 0xacf14038, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_LONG_MULTICAST_LIST, + 0xacf14037, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_LONG_PERMANENT_ADDR, + 0xacf14035, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_SHORT_CURRENT_ADDR, + 0xacf1403a, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE, + 0xacf1403c, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_SHORT_MULTICAST_LIST, + 0xacf1403b, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR, + 0xacf14039, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_FDDI_ATTACHMENT_TYPE, + 0xacf1403d, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG, + 0xacf1403f, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_FRAME_ERRORS, + 0xacf14040, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_FRAMES_LOST, + 0xacf14041, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_LCT_FAILURES, + 0xacf14043, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_LCONNECTION_STATE, + 0xacf14045, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_LEM_REJECTS, + 0xacf14044, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_RING_MGT_STATE, + 0xacf14042, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_FDDI_UPSTREAM_NODE_LONG, + 0xacf1403e, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_GEN_CURRENT_LOOKAHEAD, + 0x5ec10361, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CURRENT_PACKET_FILTER, + 0x5ec10360, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_DRIVER_VERSION, + 0x5ec10362, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_HARDWARE_STATUS, + 0x5ec10354, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MEDIA_IN_USE, + 0x5ec10356, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MEDIA_SUPPORTED, + 0x5ec10355, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_LINK_SPEED, + 0x5ec10359, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MAC_OPTIONS, + 0x5ec10365, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD, + 0x5ec10357, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE, + 0x5ec10358, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS, + 0x5ec10367, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE, + 0x5ec10363, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_MEDIA_CONNECT_STATUS, + 0x5ec10366, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE, + 0x5ec1035d, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE, + 0x5ec1035b, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE, + 0x5ec1035a, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE, + 0x5ec1035c, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_VENDOR_DESCRIPTION, + 0x5ec1035f, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_VENDOR_DRIVER_VERSION, + 0x447956f9, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_VENDOR_ID, + 0x5ec1035e, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_GEN_RCV_ERROR, + 0x447956fd, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_RCV_NO_BUFFER, + 0x447956fe, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_RCV_OK, + 0x447956fb, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_XMIT_ERROR, + 0x447956fc, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_XMIT_OK, + 0x447956fa, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_GEN_CO_DRIVER_VERSION, + 0x791ad198, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_HARDWARE_STATUS, + 0x791ad192, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_LINK_SPEED, + 0x791ad195, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_MAC_OPTIONS, + 0x791ad19a, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_SUPPORTED, + 0x791ad193, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_IN_USE, + 0x791ad194, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATUS, + 0x791ad19b, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED, + 0x791ad19d, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION, + 0x791ad197, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSION, + 0x791ad19c, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_ID, + 0x791ad196, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_ERROR, + 0x0a214808, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_OK, + 0x0a214806, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER, + 0x0a214809, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR, + 0x0a214807, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_GEN_CO_XMIT_PDUS_OK, + 0x0a214805, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + + +DEFINE_GUID(GUID_NDIS_STATUS_LINK_SPEED_CHANGE, + 0x981f2d85, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_CONNECT, + 0x981f2d7d, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_DISCONNECT, + 0x981f2d7e, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDICATION, + 0x981f2d84, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_STATUS_RESET_END, + 0x981f2d77, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +DEFINE_GUID(GUID_NDIS_STATUS_RESET_START, + 0x981f2d76, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c); + +#ifdef __cplusplus +} +#endif + +#endif /* __NDISGUID_H */ diff --git a/reactos/w32api/include/ddk/ndistapi.h b/reactos/w32api/include/ddk/ndistapi.h new file mode 100644 index 00000000000..774f42af9f2 --- /dev/null +++ b/reactos/w32api/include/ddk/ndistapi.h @@ -0,0 +1,1312 @@ +/* + * ndistapi.h + * + * NDIS Telephony API + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NDISTAPI_H +#define __NDISTAPI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ndis.h" + +#ifndef NDIS_TAPI_CURRENT_VERSION +#define NDIS_TAPI_CURRENT_VERSION 0x00010003 +#endif + +typedef ULONG_PTR HTAPI_LINE; +typedef ULONG_PTR HDRV_LINE; +typedef ULONG_PTR HTAPI_CALL; +typedef ULONG_PTR HDRV_CALL; + +#define NDIS_STATUS_TAPI_ADDRESSBLOCKED ((NDIS_STATUS)0xC0012000L) +#define NDIS_STATUS_TAPI_BEARERMODEUNAVAIL ((NDIS_STATUS)0xC0012001L) +#define NDIS_STATUS_TAPI_CALLUNAVAIL ((NDIS_STATUS)0xC0012002L) +#define NDIS_STATUS_TAPI_DIALBILLING ((NDIS_STATUS)0xC0012003L) +#define NDIS_STATUS_TAPI_DIALDIALTONE ((NDIS_STATUS)0xC0012004L) +#define NDIS_STATUS_TAPI_DIALPROMPT ((NDIS_STATUS)0xC0012005L) +#define NDIS_STATUS_TAPI_DIALQUIET ((NDIS_STATUS)0xC0012006L) +#define NDIS_STATUS_TAPI_INCOMPATIBLEEXTVERSION ((NDIS_STATUS)0xC0012007L) +#define NDIS_STATUS_TAPI_INUSE ((NDIS_STATUS)0xC0012008L) +#define NDIS_STATUS_TAPI_INVALADDRESS ((NDIS_STATUS)0xC0012009L) +#define NDIS_STATUS_TAPI_INVALADDRESSID ((NDIS_STATUS)0xC001200AL) +#define NDIS_STATUS_TAPI_INVALADDRESSMODE ((NDIS_STATUS)0xC001200BL) +#define NDIS_STATUS_TAPI_INVALBEARERMODE ((NDIS_STATUS)0xC001200CL) +#define NDIS_STATUS_TAPI_INVALCALLHANDLE ((NDIS_STATUS)0xC001200DL) +#define NDIS_STATUS_TAPI_INVALCALLPARAMS ((NDIS_STATUS)0xC001200EL) +#define NDIS_STATUS_TAPI_INVALCALLSTATE ((NDIS_STATUS)0xC001200FL) +#define NDIS_STATUS_TAPI_INVALDEVICECLASS ((NDIS_STATUS)0xC0012010L) +#define NDIS_STATUS_TAPI_INVALLINEHANDLE ((NDIS_STATUS)0xC0012011L) +#define NDIS_STATUS_TAPI_INVALLINESTATE ((NDIS_STATUS)0xC0012012L) +#define NDIS_STATUS_TAPI_INVALMEDIAMODE ((NDIS_STATUS)0xC0012013L) +#define NDIS_STATUS_TAPI_INVALRATE ((NDIS_STATUS)0xC0012014L) +#define NDIS_STATUS_TAPI_NODRIVER ((NDIS_STATUS)0xC0012015L) +#define NDIS_STATUS_TAPI_OPERATIONUNAVAIL ((NDIS_STATUS)0xC0012016L) +#define NDIS_STATUS_TAPI_RATEUNAVAIL ((NDIS_STATUS)0xC0012017L) +#define NDIS_STATUS_TAPI_RESOURCEUNAVAIL ((NDIS_STATUS)0xC0012018L) +#define NDIS_STATUS_TAPI_STRUCTURETOOSMALL ((NDIS_STATUS)0xC0012019L) +#define NDIS_STATUS_TAPI_USERUSERINFOTOOBIG ((NDIS_STATUS)0xC001201AL) +#define NDIS_STATUS_TAPI_ALLOCATED ((NDIS_STATUS)0xC001201BL) +#define NDIS_STATUS_TAPI_INVALADDRESSSTATE ((NDIS_STATUS)0xC001201CL) +#define NDIS_STATUS_TAPI_INVALPARAM ((NDIS_STATUS)0xC001201DL) +#define NDIS_STATUS_TAPI_NODEVICE ((NDIS_STATUS)0xC001201EL) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_NORMAL ((NDIS_STATUS)0xC0012020L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_UNKNOWN ((NDIS_STATUS)0xC0012021L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_REJECT ((NDIS_STATUS)0xC0012022L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_PICKUP ((NDIS_STATUS)0xC0012023L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_FORWARDED ((NDIS_STATUS)0xC0012024L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_BUSY ((NDIS_STATUS)0xC0012025L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_NOANSWER ((NDIS_STATUS)0xC0012026L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_BADADDRESS ((NDIS_STATUS)0xC0012027L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_UNREACHABLE ((NDIS_STATUS)0xC0012028L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_CONGESTION ((NDIS_STATUS)0xC0012029L) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_INCOMPATIBLE ((NDIS_STATUS)0xC001202AL) +#define NDIS_STATUS_TAPI_DISCONNECTMODE_UNAVAIL ((NDIS_STATUS)0xC001202BL) +#define NDIS_STATUS_TAPI_RECV_DIGIT ((NDIS_STATUS)0x40010020L) + +#define LINE_ADDRESSSTATE 0L +#define LINE_CALLINFO 1L +#define LINE_CALLSTATE 2L +#define LINE_CLOSE 3L +#define LINE_DEVSPECIFIC 4L +#define LINE_DEVSPECIFICFEATURE 5L +#define LINE_GATHERDIGITS 6L +#define LINE_GENERATE 7L +#define LINE_LINEDEVSTATE 8L +#define LINE_MONITORDIGITS 9L +#define LINE_MONITORMEDIA 10L +#define LINE_MONITORTONE 11L +#define LINE_REPLY 12L +#define LINE_REQUEST 13L +#define LINE_CREATE 19L +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINE_AGENTSPECIFIC 21L +#define LINE_AGENTSTATUS 22L +#define LINE_APPNEWCALL 23L +#define LINE_PROXYREQUEST 24L +#define LINE_REMOVE 25L +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020002) +#define LINE_AGENTSESSIONSTATUS 27L +#define LINE_QUEUESTATUS 28L +#define LINE_AGENTSTATUSEX 29L +#define LINE_GROUPSTATUS 30L +#define LINE_PROXYSTATUS 31L +#endif +#if (TAPI_CURRENT_VERSION >= 0x00030000) +#define LINE_APPNEWCALLHUB 32L +#define LINE_CALLHUBCLOSE 33L +#define LINE_DEVSPECIFICEX 34L +#endif + +#define TSPI_MESSAGE_BASE 500L +#define LINE_NEWCALL TSPI_MESSAGE_BASE +#define LINE_CALLDEVSPECIFIC (TSPI_MESSAGE_BASE + 1L) +#define STRINGFORMAT_ASCII 0x00000001 +#define STRINGFORMAT_DBCS 0x00000002 +#define STRINGFORMAT_UNICODE 0x00000003 +#define STRINGFORMAT_BINARY 0x00000004 + +#define LINEADDRCAPFLAGS_FWDNUMRINGS 0x00000001 +#define LINEADDRCAPFLAGS_PICKUPGROUPID 0x00000002 +#define LINEADDRCAPFLAGS_SECURE 0x00000004 +#define LINEADDRCAPFLAGS_BLOCKIDDEFAULT 0x00000008 +#define LINEADDRCAPFLAGS_BLOCKIDOVERRIDE 0x00000010 +#define LINEADDRCAPFLAGS_DIALED 0x00000020 +#define LINEADDRCAPFLAGS_ORIGOFFHOOK 0x00000040 +#define LINEADDRCAPFLAGS_DESTOFFHOOK 0x00000080 +#define LINEADDRCAPFLAGS_FWDCONSULT 0x00000100 +#define LINEADDRCAPFLAGS_SETUPCONFNULL 0x00000200 +#define LINEADDRCAPFLAGS_AUTORECONNECT 0x00000400 +#define LINEADDRCAPFLAGS_COMPLETIONID 0x00000800 +#define LINEADDRCAPFLAGS_TRANSFERHELD 0x00001000 +#define LINEADDRCAPFLAGS_TRANSFERMAKE 0x00002000 +#define LINEADDRCAPFLAGS_CONFERENCEHELD 0x00004000 +#define LINEADDRCAPFLAGS_CONFERENCEMAKE 0x00008000 +#define LINEADDRCAPFLAGS_PARTIALDIAL 0x00010000 +#define LINEADDRCAPFLAGS_FWDSTATUSVALID 0x00020000 +#define LINEADDRCAPFLAGS_FWDINTEXTADDR 0x00040000 +#define LINEADDRCAPFLAGS_FWDBUSYNAADDR 0x00080000 +#define LINEADDRCAPFLAGS_ACCEPTTOALERT 0x00100000 +#define LINEADDRCAPFLAGS_CONFDROP 0x00200000 +#define LINEADDRCAPFLAGS_PICKUPCALLWAIT 0x00400000 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINEADDRCAPFLAGS_PREDICTIVEDIALER 0x00800000 +#define LINEADDRCAPFLAGS_QUEUE 0x01000000 +#define LINEADDRCAPFLAGS_ROUTEPOINT 0x02000000 +#define LINEADDRCAPFLAGS_HOLDMAKESNEW 0x04000000 +#define LINEADDRCAPFLAGS_NOINTERNALCALLS 0x08000000 +#define LINEADDRCAPFLAGS_NOEXTERNALCALLS 0x10000000 +#define LINEADDRCAPFLAGS_SETCALLINGID 0x20000000 +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) +#define LINEADDRCAPFLAGS_ACDGROUP 0x40000000 +#define LINEADDRCAPFLAGS_NOPSTNADDRESSTRANSLATION \ + 0x80000000 +#endif + +#define LINEADDRESSMODE_ADDRESSID 0x00000001 +#define LINEADDRESSMODE_DIALABLEADDR 0x00000002 +#define LINEADDRESSSHARING_PRIVATE 0x00000001 +#define LINEADDRESSSHARING_BRIDGEDEXCL 0x00000002 +#define LINEADDRESSSHARING_BRIDGEDNEW 0x00000004 +#define LINEADDRESSSHARING_BRIDGEDSHARED 0x00000008 +#define LINEADDRESSSHARING_MONITORED 0x00000010 +#define LINEADDRESSSTATE_OTHER 0x00000001 +#define LINEADDRESSSTATE_DEVSPECIFIC 0x00000002 +#define LINEADDRESSSTATE_INUSEZERO 0x00000004 +#define LINEADDRESSSTATE_INUSEONE 0x00000008 +#define LINEADDRESSSTATE_INUSEMANY 0x00000010 +#define LINEADDRESSSTATE_NUMCALLS 0x00000020 +#define LINEADDRESSSTATE_FORWARD 0x00000040 +#define LINEADDRESSSTATE_TERMINALS 0x00000080 + +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) +#define LINEADDRESSTYPE_PHONENUMBER 0x00000001 +#define LINEADDRESSTYPE_SDP 0x00000002 +#define LINEADDRESSTYPE_EMAILNAME 0x00000004 +#define LINEADDRESSTYPE_DOMAINNAME 0x00000008 +#define LINEADDRESSTYPE_IPADDRESS 0x00000010 +#endif + +#define LINEADDRFEATURE_FORWARD 0x00000001 +#define LINEADDRFEATURE_MAKECALL 0x00000002 +#define LINEADDRFEATURE_PICKUP 0x00000004 +#define LINEADDRFEATURE_SETMEDIACONTROL 0x00000008 +#define LINEADDRFEATURE_SETTERMINAL 0x00000010 +#define LINEADDRFEATURE_SETUPCONF 0x00000020 +#define LINEADDRFEATURE_UNCOMPLETECALL 0x00000040 +#define LINEADDRFEATURE_UNPARK 0x00000080 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINEADDRFEATURE_PICKUPHELD 0x00000100 +#define LINEADDRFEATURE_PICKUPGROUP 0x00000200 +#define LINEADDRFEATURE_PICKUPDIRECT 0x00000400 +#define LINEADDRFEATURE_PICKUPWAITING 0x00000800 +#define LINEADDRFEATURE_FORWARDFWD 0x00001000 +#define LINEADDRFEATURE_FORWARDDND 0x00002000 +#endif + +#define LINEANSWERMODE_NONE 0x00000001 +#define LINEANSWERMODE_DROP 0x00000002 +#define LINEANSWERMODE_HOLD 0x00000004 + +#define LINEBEARERMODE_VOICE 0x00000001 +#define LINEBEARERMODE_SPEECH 0x00000002 +#define LINEBEARERMODE_MULTIUSE 0x00000004 +#define LINEBEARERMODE_DATA 0x00000008 +#define LINEBEARERMODE_ALTSPEECHDATA 0x00000010 +#define LINEBEARERMODE_NONCALLSIGNALING 0x00000020 +#define LINEBEARERMODE_PASSTHROUGH 0x00000040 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINEBEARERMODE_RESTRICTEDDATA 0x00000080 +#endif + +#define LINEBUSYMODE_STATION 0x00000001 +#define LINEBUSYMODE_TRUNK 0x00000002 +#define LINEBUSYMODE_UNKNOWN 0x00000004 +#define LINEBUSYMODE_UNAVAIL 0x00000008 + +#define LINECALLCOMPLCOND_BUSY 0x00000001 +#define LINECALLCOMPLCOND_NOANSWER 0x00000002 + +#define LINECALLCOMPLMODE_CAMPON 0x00000001 +#define LINECALLCOMPLMODE_CALLBACK 0x00000002 +#define LINECALLCOMPLMODE_INTRUDE 0x00000004 +#define LINECALLCOMPLMODE_MESSAGE 0x00000008 + +#define LINECALLFEATURE_ACCEPT 0x00000001 +#define LINECALLFEATURE_ADDTOCONF 0x00000002 +#define LINECALLFEATURE_ANSWER 0x00000004 +#define LINECALLFEATURE_BLINDTRANSFER 0x00000008 +#define LINECALLFEATURE_COMPLETECALL 0x00000010 +#define LINECALLFEATURE_COMPLETETRANSF 0x00000020 +#define LINECALLFEATURE_DIAL 0x00000040 +#define LINECALLFEATURE_DROP 0x00000080 +#define LINECALLFEATURE_GATHERDIGITS 0x00000100 +#define LINECALLFEATURE_GENERATEDIGITS 0x00000200 +#define LINECALLFEATURE_GENERATETONE 0x00000400 +#define LINECALLFEATURE_HOLD 0x00000800 +#define LINECALLFEATURE_MONITORDIGITS 0x00001000 +#define LINECALLFEATURE_MONITORMEDIA 0x00002000 +#define LINECALLFEATURE_MONITORTONES 0x00004000 +#define LINECALLFEATURE_PARK 0x00008000 +#define LINECALLFEATURE_PREPAREADDCONF 0x00010000 +#define LINECALLFEATURE_REDIRECT 0x00020000 +#define LINECALLFEATURE_REMOVEFROMCONF 0x00040000 +#define LINECALLFEATURE_SECURECALL 0x00080000 +#define LINECALLFEATURE_SENDUSERUSER 0x00100000 +#define LINECALLFEATURE_SETCALLPARAMS 0x00200000 +#define LINECALLFEATURE_SETMEDIACONTROL 0x00400000 +#define LINECALLFEATURE_SETTERMINAL 0x00800000 +#define LINECALLFEATURE_SETUPCONF 0x01000000 +#define LINECALLFEATURE_SETUPTRANSFER 0x02000000 +#define LINECALLFEATURE_SWAPHOLD 0x04000000 +#define LINECALLFEATURE_UNHOLD 0x08000000 +#define LINECALLFEATURE_RELEASEUSERUSERINFO \ + 0x10000000 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINECALLFEATURE_SETTREATMENT 0x20000000 +#define LINECALLFEATURE_SETQOS 0x40000000 +#define LINECALLFEATURE_SETCALLDATA 0x80000000 +#endif + +#define LINECALLINFOSTATE_OTHER 0x00000001 +#define LINECALLINFOSTATE_DEVSPECIFIC 0x00000002 +#define LINECALLINFOSTATE_BEARERMODE 0x00000004 +#define LINECALLINFOSTATE_RATE 0x00000008 +#define LINECALLINFOSTATE_MEDIAMODE 0x00000010 +#define LINECALLINFOSTATE_APPSPECIFIC 0x00000020 +#define LINECALLINFOSTATE_CALLID 0x00000040 +#define LINECALLINFOSTATE_RELATEDCALLID 0x00000080 +#define LINECALLINFOSTATE_ORIGIN 0x00000100 +#define LINECALLINFOSTATE_REASON 0x00000200 +#define LINECALLINFOSTATE_COMPLETIONID 0x00000400 +#define LINECALLINFOSTATE_NUMOWNERINCR 0x00000800 +#define LINECALLINFOSTATE_NUMOWNERDECR 0x00001000 +#define LINECALLINFOSTATE_NUMMONITORS 0x00002000 +#define LINECALLINFOSTATE_TRUNK 0x00004000 +#define LINECALLINFOSTATE_CALLERID 0x00008000 +#define LINECALLINFOSTATE_CALLEDID 0x00010000 +#define LINECALLINFOSTATE_CONNECTEDID 0x00020000 +#define LINECALLINFOSTATE_REDIRECTIONID 0x00040000 +#define LINECALLINFOSTATE_REDIRECTINGID 0x00080000 +#define LINECALLINFOSTATE_DISPLAY 0x00100000 +#define LINECALLINFOSTATE_USERUSERINFO 0x00200000 +#define LINECALLINFOSTATE_HIGHLEVELCOMP 0x00400000 +#define LINECALLINFOSTATE_LOWLEVELCOMP 0x00800000 +#define LINECALLINFOSTATE_CHARGINGINFO 0x01000000 +#define LINECALLINFOSTATE_TERMINAL 0x02000000 +#define LINECALLINFOSTATE_DIALPARAMS 0x04000000 +#define LINECALLINFOSTATE_MONITORMODES 0x08000000 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINECALLINFOSTATE_TREATMENT 0x10000000 +#define LINECALLINFOSTATE_QOS 0x20000000 +#define LINECALLINFOSTATE_CALLDATA 0x40000000 +#endif + +#define LINECALLORIGIN_OUTBOUND 0x00000001 +#define LINECALLORIGIN_INTERNAL 0x00000002 +#define LINECALLORIGIN_EXTERNAL 0x00000004 +#define LINECALLORIGIN_UNKNOWN 0x00000010 +#define LINECALLORIGIN_UNAVAIL 0x00000020 +#define LINECALLORIGIN_CONFERENCE 0x00000040 +#define LINECALLORIGIN_INBOUND 0x00000080 + +#define LINECALLPARAMFLAGS_SECURE 0x00000001 +#define LINECALLPARAMFLAGS_IDLE 0x00000002 +#define LINECALLPARAMFLAGS_BLOCKID 0x00000004 +#define LINECALLPARAMFLAGS_ORIGOFFHOOK 0x00000008 +#define LINECALLPARAMFLAGS_DESTOFFHOOK 0x00000010 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINECALLPARAMFLAGS_NOHOLDCONFERENCE \ + 0x00000020 +#define LINECALLPARAMFLAGS_PREDICTIVEDIAL 0x00000040 +#define LINECALLPARAMFLAGS_ONESTEPTRANSFER \ + 0x00000080 +#endif + +#define LINECALLPARTYID_BLOCKED 0x00000001 +#define LINECALLPARTYID_OUTOFAREA 0x00000002 +#define LINECALLPARTYID_NAME 0x00000004 +#define LINECALLPARTYID_ADDRESS 0x00000008 +#define LINECALLPARTYID_PARTIAL 0x00000010 +#define LINECALLPARTYID_UNKNOWN 0x00000020 +#define LINECALLPARTYID_UNAVAIL 0x00000040 + +#define LINECALLPRIVILEGE_NONE 0x00000001 +#define LINECALLPRIVILEGE_MONITOR 0x00000002 +#define LINECALLPRIVILEGE_OWNER 0x00000004 + +#define LINECALLREASON_DIRECT 0x00000001 +#define LINECALLREASON_FWDBUSY 0x00000002 +#define LINECALLREASON_FWDNOANSWER 0x00000004 +#define LINECALLREASON_FWDUNCOND 0x00000008 +#define LINECALLREASON_PICKUP 0x00000010 +#define LINECALLREASON_UNPARK 0x00000020 +#define LINECALLREASON_REDIRECT 0x00000040 +#define LINECALLREASON_CALLCOMPLETION 0x00000080 +#define LINECALLREASON_TRANSFER 0x00000100 +#define LINECALLREASON_REMINDER 0x00000200 +#define LINECALLREASON_UNKNOWN 0x00000400 +#define LINECALLREASON_UNAVAIL 0x00000800 +#define LINECALLREASON_INTRUDE 0x00001000 +#define LINECALLREASON_PARKED 0x00002000 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINECALLREASON_CAMPEDON 0x00004000 +#define LINECALLREASON_ROUTEREQUEST 0x00008000 +#endif + +#define LINECALLSELECT_LINE 0x00000001 +#define LINECALLSELECT_ADDRESS 0x00000002 +#define LINECALLSELECT_CALL 0x00000004 +#if (NDIS_TAPI_CURRENT_VERSION > 0x00020000) +#define LINECALLSELECT_DEVICEID 0x00000008 +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) +#define LINECALLSELECT_CALLID 0x00000010 +#endif + +#define LINECALLSTATE_IDLE 0x00000001 +#define LINECALLSTATE_OFFERING 0x00000002 +#define LINECALLSTATE_ACCEPTED 0x00000004 +#define LINECALLSTATE_DIALTONE 0x00000008 +#define LINECALLSTATE_DIALING 0x00000010 +#define LINECALLSTATE_RINGBACK 0x00000020 +#define LINECALLSTATE_BUSY 0x00000040 +#define LINECALLSTATE_SPECIALINFO 0x00000080 +#define LINECALLSTATE_CONNECTED 0x00000100 +#define LINECALLSTATE_PROCEEDING 0x00000200 +#define LINECALLSTATE_ONHOLD 0x00000400 +#define LINECALLSTATE_CONFERENCED 0x00000800 +#define LINECALLSTATE_ONHOLDPENDCONF 0x00001000 +#define LINECALLSTATE_ONHOLDPENDTRANSFER 0x00002000 +#define LINECALLSTATE_DISCONNECTED 0x00004000 +#define LINECALLSTATE_UNKNOWN 0x00008000 + +#define LINEDEVCAPFLAGS_CROSSADDRCONF 0x00000001 +#define LINEDEVCAPFLAGS_HIGHLEVCOMP 0x00000002 +#define LINEDEVCAPFLAGS_LOWLEVCOMP 0x00000004 +#define LINEDEVCAPFLAGS_MEDIACONTROL 0x00000008 +#define LINEDEVCAPFLAGS_MULTIPLEADDR 0x00000010 +#define LINEDEVCAPFLAGS_CLOSEDROP 0x00000020 +#define LINEDEVCAPFLAGS_DIALBILLING 0x00000040 +#define LINEDEVCAPFLAGS_DIALQUIET 0x00000080 +#define LINEDEVCAPFLAGS_DIALDIALTONE 0x00000100 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) +#define LINEDEVCAPFLAGS_MSP 0x00000200 +#define LINEDEVCAPFLAGS_CALLHUB 0x00000400 +#define LINEDEVCAPFLAGS_CALLHUBTRACKING 0x00000800 +#define LINEDEVCAPFLAGS_PRIVATEOBJECTS 0x00001000 +#endif + +#define LINEDEVSTATE_OTHER 0x00000001 +#define LINEDEVSTATE_RINGING 0x00000002 +#define LINEDEVSTATE_CONNECTED 0x00000004 +#define LINEDEVSTATE_DISCONNECTED 0x00000008 +#define LINEDEVSTATE_MSGWAITON 0x00000010 +#define LINEDEVSTATE_MSGWAITOFF 0x00000020 +#define LINEDEVSTATE_INSERVICE 0x00000040 +#define LINEDEVSTATE_OUTOFSERVICE 0x00000080 +#define LINEDEVSTATE_MAINTENANCE 0x00000100 +#define LINEDEVSTATE_OPEN 0x00000200 +#define LINEDEVSTATE_CLOSE 0x00000400 +#define LINEDEVSTATE_NUMCALLS 0x00000800 +#define LINEDEVSTATE_NUMCOMPLETIONS 0x00001000 +#define LINEDEVSTATE_TERMINALS 0x00002000 +#define LINEDEVSTATE_ROAMMODE 0x00004000 +#define LINEDEVSTATE_BATTERY 0x00008000 +#define LINEDEVSTATE_SIGNAL 0x00010000 +#define LINEDEVSTATE_DEVSPECIFIC 0x00020000 +#define LINEDEVSTATE_REINIT 0x00040000 +#define LINEDEVSTATE_LOCK 0x00080000 + +#define LINEDEVSTATUSFLAGS_CONNECTED 0x00000001 +#define LINEDEVSTATUSFLAGS_MSGWAIT 0x00000002 +#define LINEDEVSTATUSFLAGS_INSERVICE 0x00000004 +#define LINEDEVSTATUSFLAGS_LOCKED 0x00000008 + +#define LINEDIALTONEMODE_NORMAL 0x00000001 +#define LINEDIALTONEMODE_SPECIAL 0x00000002 +#define LINEDIALTONEMODE_INTERNAL 0x00000004 +#define LINEDIALTONEMODE_EXTERNAL 0x00000008 +#define LINEDIALTONEMODE_UNKNOWN 0x00000010 +#define LINEDIALTONEMODE_UNAVAIL 0x00000020 + +#define LINEDIGITMODE_PULSE 0x00000001 +#define LINEDIGITMODE_DTMF 0x00000002 +#define LINEDIGITMODE_DTMFEND 0x00000004 + +#define LINEDISCONNECTMODE_NORMAL 0x00000001 +#define LINEDISCONNECTMODE_UNKNOWN 0x00000002 +#define LINEDISCONNECTMODE_REJECT 0x00000004 +#define LINEDISCONNECTMODE_PICKUP 0x00000008 +#define LINEDISCONNECTMODE_FORWARDED 0x00000010 +#define LINEDISCONNECTMODE_BUSY 0x00000020 +#define LINEDISCONNECTMODE_NOANSWER 0x00000040 +#define LINEDISCONNECTMODE_BADADDRESS 0x00000080 +#define LINEDISCONNECTMODE_UNREACHABLE 0x00000100 +#define LINEDISCONNECTMODE_CONGESTION 0x00000200 +#define LINEDISCONNECTMODE_INCOMPATIBLE 0x00000400 +#define LINEDISCONNECTMODE_UNAVAIL 0x00000800 +#define LINEDISCONNECTMODE_NODIALTONE 0x00001000 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINEDISCONNECTMODE_NUMBERCHANGED 0x00002000 +#define LINEDISCONNECTMODE_OUTOFORDER 0x00004000 +#define LINEDISCONNECTMODE_TEMPFAILURE 0x00008000 +#define LINEDISCONNECTMODE_QOSUNAVAIL 0x00010000 +#define LINEDISCONNECTMODE_BLOCKED 0x00020000 +#define LINEDISCONNECTMODE_DONOTDISTURB 0x00040000 +#define LINEDISCONNECTMODE_CANCELLED 0x00080000 +#endif + +#define LINEFEATURE_DEVSPECIFIC 0x00000001 +#define LINEFEATURE_DEVSPECIFICFEAT 0x00000002 +#define LINEFEATURE_FORWARD 0x00000004 +#define LINEFEATURE_MAKECALL 0x00000008 +#define LINEFEATURE_SETMEDIACONTROL 0x00000010 +#define LINEFEATURE_SETTERMINAL 0x00000020 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINEFEATURE_SETDEVSTATUS 0x00000040 +#define LINEFEATURE_FORWARDFWD 0x00000080 +#define LINEFEATURE_FORWARDDND 0x00000100 +#endif + +#define LINEFORWARDMODE_UNCOND 0x00000001 +#define LINEFORWARDMODE_UNCONDINTERNAL 0x00000002 +#define LINEFORWARDMODE_UNCONDEXTERNAL 0x00000004 +#define LINEFORWARDMODE_UNCONDSPECIFIC 0x00000008 +#define LINEFORWARDMODE_BUSY 0x00000010 +#define LINEFORWARDMODE_BUSYINTERNAL 0x00000020 +#define LINEFORWARDMODE_BUSYEXTERNAL 0x00000040 +#define LINEFORWARDMODE_BUSYSPECIFIC 0x00000080 +#define LINEFORWARDMODE_NOANSW 0x00000100 +#define LINEFORWARDMODE_NOANSWINTERNAL 0x00000200 +#define LINEFORWARDMODE_NOANSWEXTERNAL 0x00000400 +#define LINEFORWARDMODE_NOANSWSPECIFIC 0x00000800 +#define LINEFORWARDMODE_BUSYNA 0x00001000 +#define LINEFORWARDMODE_BUSYNAINTERNAL 0x00002000 +#define LINEFORWARDMODE_BUSYNAEXTERNAL 0x00004000 +#define LINEFORWARDMODE_BUSYNASPECIFIC 0x00008000 + +#define LINEGATHERTERM_BUFFERFULL 0x00000001 +#define LINEGATHERTERM_TERMDIGIT 0x00000002 +#define LINEGATHERTERM_FIRSTTIMEOUT 0x00000004 +#define LINEGATHERTERM_INTERTIMEOUT 0x00000008 +#define LINEGATHERTERM_CANCEL 0x00000010 + +#define LINEGENERATETERM_DONE 0x00000001 +#define LINEGENERATETERM_CANCEL 0x00000002 + +#define LINEMEDIACONTROL_NONE 0x00000001 +#define LINEMEDIACONTROL_START 0x00000002 +#define LINEMEDIACONTROL_RESET 0x00000004 +#define LINEMEDIACONTROL_PAUSE 0x00000008 +#define LINEMEDIACONTROL_RESUME 0x00000010 +#define LINEMEDIACONTROL_RATEUP 0x00000020 +#define LINEMEDIACONTROL_RATEDOWN 0x00000040 +#define LINEMEDIACONTROL_RATENORMAL 0x00000080 +#define LINEMEDIACONTROL_VOLUMEUP 0x00000100 +#define LINEMEDIACONTROL_VOLUMEDOWN 0x00000200 +#define LINEMEDIACONTROL_VOLUMENORMAL 0x00000400 + +#define LINEMEDIAMODE_UNKNOWN 0x00000002 +#define LINEMEDIAMODE_INTERACTIVEVOICE 0x00000004 +#define LINEMEDIAMODE_AUTOMATEDVOICE 0x00000008 +#define LINEMEDIAMODE_DATAMODEM 0x00000010 +#define LINEMEDIAMODE_G3FAX 0x00000020 +#define LINEMEDIAMODE_TDD 0x00000040 +#define LINEMEDIAMODE_G4FAX 0x00000080 +#define LINEMEDIAMODE_DIGITALDATA 0x00000100 +#define LINEMEDIAMODE_TELETEX 0x00000200 +#define LINEMEDIAMODE_VIDEOTEX 0x00000400 +#define LINEMEDIAMODE_TELEX 0x00000800 +#define LINEMEDIAMODE_MIXED 0x00001000 +#define LINEMEDIAMODE_ADSI 0x00002000 + +#define LINEMEDIAMODE_VOICEVIEW 0x00004000 +#define LAST_LINEMEDIAMODE 0x00004000 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020001) +#define LINEMEDIAMODE_VIDEO 0x00008000 +#define LAST_LINEMEDIAMODE 0x00008000 +#endif + +#define LINEPARKMODE_DIRECTED 0x00000001 +#define LINEPARKMODE_NONDIRECTED 0x00000002 + +#define LINEREMOVEFROMCONF_NONE 0x00000001 +#define LINEREMOVEFROMCONF_LAST 0x00000002 +#define LINEREMOVEFROMCONF_ANY 0x00000003 + +#define LINEREQUESTMODE_MAKECALL 0x00000001 +#define LINEREQUESTMODE_MEDIACALL 0x00000002 +#define LINEREQUESTMODE_DROP 0x00000004 + +#define LAST_LINEREQUESTMODE LINEREQUESTMODE_MEDIACALL + +#define LINEROAMMODE_UNKNOWN 0x00000001 +#define LINEROAMMODE_UNAVAIL 0x00000002 +#define LINEROAMMODE_HOME 0x00000004 +#define LINEROAMMODE_ROAMA 0x00000008 +#define LINEROAMMODE_ROAMB 0x00000010 + +#define LINESPECIALINFO_NOCIRCUIT 0x00000001 +#define LINESPECIALINFO_CUSTIRREG 0x00000002 +#define LINESPECIALINFO_REORDER 0x00000004 +#define LINESPECIALINFO_UNKNOWN 0x00000008 +#define LINESPECIALINFO_UNAVAIL 0x00000010 + +#define LINETERMDEV_PHONE 0x00000001 +#define LINETERMDEV_HEADSET 0x00000002 +#define LINETERMDEV_SPEAKER 0x00000004 + +#define LINETERMMODE_BUTTONS 0x00000001 +#define LINETERMMODE_LAMPS 0x00000002 +#define LINETERMMODE_DISPLAY 0x00000004 +#define LINETERMMODE_RINGER 0x00000008 +#define LINETERMMODE_HOOKSWITCH 0x00000010 +#define LINETERMMODE_MEDIATOLINE 0x00000020 +#define LINETERMMODE_MEDIAFROMLINE 0x00000040 +#define LINETERMMODE_MEDIABIDIRECT 0x00000080 + +#define LINETERMSHARING_PRIVATE 0x00000001 +#define LINETERMSHARING_SHAREDEXCL 0x00000002 +#define LINETERMSHARING_SHAREDCONF 0x00000004 + +#define LINETONEMODE_CUSTOM 0x00000001 +#define LINETONEMODE_RINGBACK 0x00000002 +#define LINETONEMODE_BUSY 0x00000004 +#define LINETONEMODE_BEEP 0x00000008 +#define LINETONEMODE_BILLING 0x00000010 + +#define LINETRANSFERMODE_TRANSFER 0x00000001 +#define LINETRANSFERMODE_CONFERENCE 0x00000002 + +#define LINETOLLLISTOPTION_ADD 0x00000001 +#define LINETOLLLISTOPTION_REMOVE 0x00000002 + +#define LINETRANSLATEOPTION_CARDOVERRIDE 0x00000001 + +#define LINETRANSLATERESULT_CANONICAL 0x00000001 +#define LINETRANSLATERESULT_INTERNATIONAL 0x00000002 +#define LINETRANSLATERESULT_LONGDISTANCE 0x00000004 +#define LINETRANSLATERESULT_LOCAL 0x00000008 +#define LINETRANSLATERESULT_INTOLLLIST 0x00000010 +#define LINETRANSLATERESULT_NOTINTOLLLIST 0x00000020 +#define LINETRANSLATERESULT_DIALBILLING 0x00000040 +#define LINETRANSLATERESULT_DIALQUIET 0x00000080 +#define LINETRANSLATERESULT_DIALDIALTONE 0x00000100 +#define LINETRANSLATERESULT_DIALPROMPT 0x00000200 +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) +#define LINETRANSLATERESULT_VOICEDETECT 0x00000400 +#endif + +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) +#define LINETRANSLATERESULT_NOTRANSLATION 0x00000800 +#endif + + +typedef struct _NDIS_VAR_DATA_DESC { + USHORT Length; + USHORT MaximumLength; + LONG Offset; +} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC; + +typedef struct _LINE_DIAL_PARAMS { + ULONG ulDialPause; + ULONG ulDialSpeed; + ULONG ulDigitDuration; + ULONG ulWaitForDialtone; +} LINE_DIAL_PARAMS, *PLINE_DIAL_PARAMS; + +typedef struct _LINE_ADDRESS_CAPS { + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulLineDeviceID; + ULONG ulAddressSize; + ULONG ulAddressOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; + ULONG ulAddressSharing; + ULONG ulAddressStates; + ULONG ulCallInfoStates; + ULONG ulCallerIDFlags; + ULONG ulCalledIDFlags; + ULONG ulConnectedIDFlags; + ULONG ulRedirectionIDFlags; + ULONG ulRedirectingIDFlags; + ULONG ulCallStates; + ULONG ulDialToneModes; + ULONG ulBusyModes; + ULONG ulSpecialInfo; + ULONG ulDisconnectModes; + ULONG ulMaxNumActiveCalls; + ULONG ulMaxNumOnHoldCalls; + ULONG ulMaxNumOnHoldPendingCalls; + ULONG ulMaxNumConference; + ULONG ulMaxNumTransConf; + ULONG ulAddrCapFlags; + ULONG ulCallFeatures; + ULONG ulRemoveFromConfCaps; + ULONG ulRemoveFromConfState; + ULONG ulTransferModes; + ULONG ulParkModes; + ULONG ulForwardModes; + ULONG ulMaxForwardEntries; + ULONG ulMaxSpecificEntries; + ULONG ulMinFwdNumRings; + ULONG ulMaxFwdNumRings; + ULONG ulMaxCallCompletions; + ULONG ulCallCompletionConds; + ULONG ulCallCompletionModes; + ULONG ulNumCompletionMessages; + ULONG ulCompletionMsgTextEntrySize; + ULONG ulCompletionMsgTextSize; + ULONG ulCompletionMsgTextOffset; +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00010004) + ULONG ulAddressFeatures; +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) + ULONG ulPredictiveAutoTransferStates; + ULONG ulNumCallTreatments; + ULONG ulCallTreatmentListSize; + ULONG ulCallTreatmentListOffset; + ULONG ulDeviceClassesSize; + ULONG ulDeviceClassesOffset; + ULONG ulMaxCallDataSize; + ULONG ulCallFeatures2; + ULONG ulMaxNoAnswerTimeout; + ULONG ulConnectedModes; + ULONG ulOfferingModes; + ULONG ulAvailableMediaModes; +#endif +#endif +} LINE_ADDRESS_CAPS, *PLINE_ADDRESS_CAPS; + +typedef struct _LINE_ADDRESS_STATUS { + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulNumInUse; + ULONG ulNumActiveCalls; + ULONG ulNumOnHoldCalls; + ULONG ulNumOnHoldPendCalls; + ULONG ulAddressFeatures; + ULONG ulNumRingsNoAnswer; + ULONG ulForwardNumEntries; + ULONG ulForwardSize; + ULONG ulForwardOffset; + ULONG ulTerminalModesSize; + ULONG ulTerminalModesOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; +} LINE_ADDRESS_STATUS, *PLINE_ADDRESS_STATUS; + +typedef struct _LINE_CALL_INFO { + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG hLine; + ULONG ulLineDeviceID; + ULONG ulAddressID; + ULONG ulBearerMode; + ULONG ulRate; + ULONG ulMediaMode; + ULONG ulAppSpecific; + ULONG ulCallID; + ULONG ulRelatedCallID; + ULONG ulCallParamFlags; + ULONG ulCallStates; + ULONG ulMonitorDigitModes; + ULONG ulMonitorMediaModes; + LINE_DIAL_PARAMS DialParams; + ULONG ulOrigin; + ULONG ulReason; + ULONG ulCompletionID; + ULONG ulNumOwners; + ULONG ulNumMonitors; + ULONG ulCountryCode; + ULONG ulTrunk; + ULONG ulCallerIDFlags; + ULONG ulCallerIDSize; + ULONG ulCallerIDOffset; + ULONG ulCallerIDNameSize; + ULONG ulCallerIDNameOffset; + ULONG ulCalledIDFlags; + ULONG ulCalledIDSize; + ULONG ulCalledIDOffset; + ULONG ulCalledIDNameSize; + ULONG ulCalledIDNameOffset; + ULONG ulConnectedIDFlags; + ULONG ulConnectedIDSize; + ULONG ulConnectedIDOffset; + ULONG ulConnectedIDNameSize; + ULONG ulConnectedIDNameOffset; + ULONG ulRedirectionIDFlags; + ULONG ulRedirectionIDSize; + ULONG ulRedirectionIDOffset; + ULONG ulRedirectionIDNameSize; + ULONG ulRedirectionIDNameOffset; + ULONG ulRedirectingIDFlags; + ULONG ulRedirectingIDSize; + ULONG ulRedirectingIDOffset; + ULONG ulRedirectingIDNameSize; + ULONG ulRedirectingIDNameOffset; + ULONG ulAppNameSize; + ULONG ulAppNameOffset; + ULONG ulDisplayableAddressSize; + ULONG ulDisplayableAddressOffset; + ULONG ulCalledPartySize; + ULONG ulCalledPartyOffset; + ULONG ulCommentSize; + ULONG ulCommentOffset; + ULONG ulDisplaySize; + ULONG ulDisplayOffset; + ULONG ulUserUserInfoSize; + ULONG ulUserUserInfoOffset; + ULONG ulHighLevelCompSize; + ULONG ulHighLevelCompOffset; + ULONG ulLowLevelCompSize; + ULONG ulLowLevelCompOffset; + ULONG ulChargingInfoSize; + ULONG ulChargingInfoOffset; + ULONG ulTerminalModesSize; + ULONG ulTerminalModesOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) + ULONG ulCallTreatment; + ULONG ulCallDataSize; + ULONG ulCallDataOffset; + ULONG ulSendingFlowspecSize; + ULONG ulSendingFlowspecOffset; + ULONG ulReceivingFlowspecSize; + ULONG ulReceivingFlowspecOffset; +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) + ULONG ulCallerIDAddressType; + ULONG ulCalledIDAddressType; + ULONG ulConnectedIDAddressType; + ULONG ulRedirectionIDAddressType; + ULONG ulRedirectingIDAddressType; +#endif +} LINE_CALL_INFO, *PLINE_CALL_INFO; + +typedef struct _LINE_CALL_PARAMS { + ULONG ulTotalSize; + ULONG ulBearerMode; + ULONG ulMinRate; + ULONG ulMaxRate; + ULONG ulMediaMode; + ULONG ulCallParamFlags; + ULONG ulAddressMode; + ULONG ulAddressID; + LINE_DIAL_PARAMS DialParams; + ULONG ulOrigAddressSize; + ULONG ulOrigAddressOffset; + ULONG ulDisplayableAddressSize; + ULONG ulDisplayableAddressOffset; + ULONG ulCalledPartySize; + ULONG ulCalledPartyOffset; + ULONG ulCommentSize; + ULONG ulCommentOffset; + ULONG ulUserUserInfoSize; + ULONG ulUserUserInfoOffset; + ULONG ulHighLevelCompSize; + ULONG ulHighLevelCompOffset; + ULONG ulLowLevelCompSize; + ULONG ulLowLevelCompOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) + ULONG ulPredictiveAutoTransferStates; + ULONG ulTargetAddressSize; + ULONG ulTargetAddressOffset; + ULONG ulSendingFlowspecSize; + ULONG ulSendingFlowspecOffset; + ULONG ulReceivingFlowspecSize; + ULONG ulReceivingFlowspecOffset; + ULONG ulDeviceClassSize; + ULONG ulDeviceClassOffset; + ULONG ulDeviceConfigSize; + ULONG ulDeviceConfigOffset; + ULONG ulCallDataSize; + ULONG ulCallDataOffset; + ULONG ulNoAnswerTimeout; + ULONG ulCallingPartyIDSize; + ULONG ulCallingPartyIDOffset; +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) + ULONG ulAddressType; +#endif +} LINE_CALL_PARAMS, *PLINE_CALL_PARAMS; + +typedef struct _LINE_CALL_STATUS { + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulCallState; + ULONG ulCallStateMode; + ULONG ulCallPrivilege; + ULONG ulCallFeatures; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; +} LINE_CALL_STATUS, *PLINE_CALL_STATUS; + +typedef struct _LINE_DEV_CAPS { + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulProviderInfoSize; + ULONG ulProviderInfoOffset; + ULONG ulSwitchInfoSize; + ULONG ulSwitchInfoOffset; + ULONG ulPermanentLineID; + ULONG ulLineNameSize; + ULONG ulLineNameOffset; + ULONG ulStringFormat; + ULONG ulAddressModes; + ULONG ulNumAddresses; + ULONG ulBearerModes; + ULONG ulMaxRate; + ULONG ulMediaModes; + ULONG ulGenerateToneModes; + ULONG ulGenerateToneMaxNumFreq; + ULONG ulGenerateDigitModes; + ULONG ulMonitorToneMaxNumFreq; + ULONG ulMonitorToneMaxNumEntries; + ULONG ulMonitorDigitModes; + ULONG ulGatherDigitsMinTimeout; + ULONG ulGatherDigitsMaxTimeout; + ULONG ulMedCtlDigitMaxListSize; + ULONG ulMedCtlMediaMaxListSize; + ULONG ulMedCtlToneMaxListSize; + ULONG ulMedCtlCallStateMaxListSize; + ULONG ulDevCapFlags; + ULONG ulMaxNumActiveCalls; + ULONG ulAnswerMode; + ULONG ulRingModes; + ULONG ulLineStates; + ULONG ulUUIAcceptSize; + ULONG ulUUIAnswerSize; + ULONG ulUUIMakeCallSize; + ULONG ulUUIDropSize; + ULONG ulUUISendUserUserInfoSize; + ULONG ulUUICallInfoSize; + LINE_DIAL_PARAMS MinDialParams; + LINE_DIAL_PARAMS MaxDialParams; + LINE_DIAL_PARAMS DefaultDialParams; + ULONG ulNumTerminals; + ULONG ulTerminalCapsSize; + ULONG ulTerminalCapsOffset; + ULONG ulTerminalTextEntrySize; + ULONG ulTerminalTextSize; + ULONG ulTerminalTextOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00010004) + ULONG ulLineFeatures; +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020000) + ULONG ulSettableDevStatus; + ULONG ulDeviceClassesSize; + ULONG ulDeviceClassesOffset; +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00020002) + GUID PermanentLineGuid; +#endif +#if (NDIS_TAPI_CURRENT_VERSION >= 0x00030000) + ULONG ulAddressTypes; + GUID ProtocolGuid; + ULONG ulAvailableTracking; +#endif +} LINE_DEV_CAPS, *PLINE_DEV_CAPS; + +typedef struct _LINE_DEV_STATUS { + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulNumOpens; + ULONG ulOpenMediaModes; + ULONG ulNumActiveCalls; + ULONG ulNumOnHoldCalls; + ULONG ulNumOnHoldPendCalls; + ULONG ulLineFeatures; + ULONG ulNumCallCompletions; + ULONG ulRingMode; + ULONG ulSignalLevel; + ULONG ulBatteryLevel; + ULONG ulRoamMode; + ULONG ulDevStatusFlags; + ULONG ulTerminalModesSize; + ULONG ulTerminalModesOffset; + ULONG ulDevSpecificSize; + ULONG ulDevSpecificOffset; +} LINE_DEV_STATUS, *PLINE_DEV_STATUS; + +typedef struct _LINE_EXTENSION_ID { + ULONG ulExtensionID0; + ULONG ulExtensionID1; + ULONG ulExtensionID2; + ULONG ulExtensionID3; +} LINE_EXTENSION_ID, *PLINE_EXTENSION_ID; + +typedef struct _VAR_STRING { + ULONG ulTotalSize; + ULONG ulNeededSize; + ULONG ulUsedSize; + ULONG ulStringFormat; + ULONG ulStringSize; + ULONG ulStringOffset; +} VAR_STRING, *PVAR_STRING; + +typedef struct _NDIS_TAPI_ANSWER { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; +} NDIS_TAPI_ANSWER, *PNDIS_TAPI_ANSWER; + +typedef struct _NDIS_TAPI_CLOSE { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; +} NDIS_TAPI_CLOSE, *PNDIS_TAPI_CLOSE; + +typedef struct _NDIS_TAPI_CLOSE_CALL { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; +} NDIS_TAPI_CLOSE_CALL, *PNDIS_TAPI_CLOSE_CALL; + +typedef struct _NDIS_TAPI_CONDITIONAL_MEDIA_DETECTION { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulMediaModes; + IN LINE_CALL_PARAMS LineCallParams; +} NDIS_TAPI_CONDITIONAL_MEDIA_DETECTION, *PNDIS_TAPI_CONDITIONAL_MEDIA_DETECTION; + +typedef struct _NDIS_TAPI_DROP { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; +} NDIS_TAPI_DROP, *PNDIS_TAPI_DROP; + +typedef struct _NDIS_TAPI_PROVIDER_SHUTDOWN { + IN ULONG ulRequestID; +} NDIS_TAPI_PROVIDER_SHUTDOWN, *PNDIS_TAPI_PROVIDER_SHUTDOWN; + +typedef struct _NDIS_TAPI_SET_APP_SPECIFIC { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulAppSpecific; +} NDIS_TAPI_SET_APP_SPECIFIC, *PNDIS_TAPI_SET_APP_SPECIFIC; + +typedef struct _NDIS_TAPI_SET_CALL_PARAMS { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulBearerMode; + IN ULONG ulMinRate; + IN ULONG ulMaxRate; + IN BOOLEAN bSetLineDialParams; + IN LINE_DIAL_PARAMS LineDialParams; +} NDIS_TAPI_SET_CALL_PARAMS, *PNDIS_TAPI_SET_CALL_PARAMS; + +typedef struct _NDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulMediaModes; +} NDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION, *PNDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION; + +typedef struct _NDIS_TAPI_SET_DEV_CONFIG { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + IN ULONG ulDeviceConfigSize; + IN UCHAR DeviceConfig[1]; +} NDIS_TAPI_SET_DEV_CONFIG, *PNDIS_TAPI_SET_DEV_CONFIG; + +typedef struct _NDIS_TAPI_SET_MEDIA_MODE { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulMediaMode; +} NDIS_TAPI_SET_MEDIA_MODE, *PNDIS_TAPI_SET_MEDIA_MODE; + +typedef struct _NDIS_TAPI_SET_STATUS_MESSAGES { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulLineStates; + IN ULONG ulAddressStates; +} NDIS_TAPI_SET_STATUS_MESSAGES, *PNDIS_TAPI_SET_STATUS_MESSAGES; + +typedef struct _NDIS_TAPI_ACCEPT { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; +} NDIS_TAPI_ACCEPT, *PNDIS_TAPI_ACCEPT; + +typedef struct _NDIS_TAPI_DIAL { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulDestAddressSize; + IN CHAR szDestAddress[1]; +} NDIS_TAPI_DIAL, *PNDIS_TAPI_DIAL; + +typedef struct _NDIS_TAPI_EVENT { + IN HTAPI_LINE htLine; + IN HTAPI_CALL htCall; + IN ULONG ulMsg; + IN ULONG ulParam1; + IN ULONG ulParam2; + IN ULONG ulParam3; +} NDIS_TAPI_EVENT, *PNDIS_TAPI_EVENT; + +typedef struct _NDIS_TAPI_OPEN { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN HTAPI_LINE htLine; + OUT HDRV_LINE hdLine; +} NDIS_TAPI_OPEN, *PNDIS_TAPI_OPEN; + +typedef struct _NDIS_TAPI_SECURE_CALL { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; +} NDIS_TAPI_SECURE_CALL, *PNDIS_TAPI_SECURE_CALL; + +typedef struct _NDIS_TAPI_SELECT_EXT_VERSION { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulExtVersion; +} NDIS_TAPI_SELECT_EXT_VERSION, *PNDIS_TAPI_SELECT_EXT_VERSION; + +typedef struct _NDIS_TAPI_SEND_USER_USER_INFO { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + IN ULONG ulUserUserInfoSize; + IN UCHAR UserUserInfo[1]; +} NDIS_TAPI_SEND_USER_USER_INFO, *PNDIS_TAPI_SEND_USER_USER_INFO; + + +typedef struct _NDIS_TAPI_CONFIG_DIALOG { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + IN ULONG ulLibraryNameTotalSize; + OUT ULONG ulLibraryNameNeededSize; + OUT CHAR szLibraryName[1]; +} NDIS_TAPI_CONFIG_DIALOG, *PNDIS_TAPI_CONFIG_DIALOG; + +typedef struct _NDIS_TAPI_DEV_SPECIFIC { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulAddressID; + IN HDRV_CALL hdCall; + IN OUT ULONG ulParamsSize; + IN OUT UCHAR Params[1]; +} NDIS_TAPI_DEV_SPECIFIC, *PNDIS_TAPI_DEV_SPECIFIC; + +typedef struct _NDIS_TAPI_GET_ADDRESS_CAPS { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulAddressID; + IN ULONG ulExtVersion; + OUT LINE_ADDRESS_CAPS LineAddressCaps; +} NDIS_TAPI_GET_ADDRESS_CAPS, *PNDIS_TAPI_GET_ADDRESS_CAPS; + +typedef struct _NDIS_TAPI_GET_ADDRESS_ID { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + OUT ULONG ulAddressID; + IN ULONG ulAddressMode; + IN ULONG ulAddressSize; + IN CHAR szAddress[1]; +} NDIS_TAPI_GET_ADDRESS_ID, *PNDIS_TAPI_GET_ADDRESS_ID; + +typedef struct _NDIS_TAPI_GET_ADDRESS_STATUS { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulAddressID; + OUT LINE_ADDRESS_STATUS LineAddressStatus; +} NDIS_TAPI_GET_ADDRESS_STATUS, *PNDIS_TAPI_GET_ADDRESS_STATUS; + +typedef struct _NDIS_TAPI_GET_CALL_ADDRESS_ID { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + OUT ULONG ulAddressID; +} NDIS_TAPI_GET_CALL_ADDRESS_ID, *PNDIS_TAPI_GET_CALL_ADDRESS_ID; + +typedef struct _NDIS_TAPI_GET_CALL_INFO { + ULONG ulRequestID; + IN HDRV_CALL hdCall; + OUT LINE_CALL_INFO LineCallInfo; +} NDIS_TAPI_GET_CALL_INFO, *PNDIS_TAPI_GET_CALL_INFO; + +typedef struct _NDIS_TAPI_GET_CALL_STATUS { + IN ULONG ulRequestID; + IN HDRV_CALL hdCall; + OUT LINE_CALL_STATUS LineCallStatus; +} NDIS_TAPI_GET_CALL_STATUS, *PNDIS_TAPI_GET_CALL_STATUS; + +typedef struct _NDIS_TAPI_GET_DEV_CAPS { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulExtVersion; + OUT LINE_DEV_CAPS LineDevCaps; +} NDIS_TAPI_GET_DEV_CAPS, *PNDIS_TAPI_GET_DEV_CAPS; + +typedef struct _NDIS_TAPI_GET_DEV_CONFIG { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + OUT VAR_STRING DeviceConfig; +} NDIS_TAPI_GET_DEV_CONFIG, *PNDIS_TAPI_GET_DEV_CONFIG; + +typedef struct _NDIS_TAPI_GET_EXTENSION_ID { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + OUT LINE_EXTENSION_ID LineExtensionID; +} NDIS_TAPI_GET_EXTENSION_ID, *PNDIS_TAPI_GET_EXTENSION_ID; + +typedef struct _NDIS_TAPI_GET_ID { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN ULONG ulAddressID; + IN HDRV_CALL hdCall; + IN ULONG ulSelect; + IN ULONG ulDeviceClassSize; + IN ULONG ulDeviceClassOffset; + OUT VAR_STRING DeviceID; +} NDIS_TAPI_GET_ID, *PNDIS_TAPI_GET_ID; + +typedef struct _NDIS_TAPI_GET_LINE_DEV_STATUS { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + OUT LINE_DEV_STATUS LineDevStatus; +} NDIS_TAPI_GET_LINE_DEV_STATUS, *PNDIS_TAPI_GET_LINE_DEV_STATUS; + +typedef struct _NDIS_TAPI_MAKE_CALL { + IN ULONG ulRequestID; + IN HDRV_LINE hdLine; + IN HTAPI_CALL htCall; + OUT HDRV_CALL hdCall; + IN ULONG ulDestAddressSize; + IN ULONG ulDestAddressOffset; + IN BOOLEAN bUseDefaultLineCallParams; + IN LINE_CALL_PARAMS LineCallParams; +} NDIS_TAPI_MAKE_CALL, *PNDIS_TAPI_MAKE_CALL; + +typedef struct _NDIS_TAPI_NEGOTIATE_EXT_VERSION { + IN ULONG ulRequestID; + IN ULONG ulDeviceID; + IN ULONG ulLowVersion; + IN ULONG ulHighVersion; + OUT ULONG ulExtVersion; +} NDIS_TAPI_NEGOTIATE_EXT_VERSION, *PNDIS_TAPI_NEGOTIATE_EXT_VERSION; + +typedef struct _NDIS_TAPI_PROVIDER_INITIALIZE { + IN ULONG ulRequestID; + IN ULONG ulDeviceIDBase; + OUT ULONG ulNumLineDevs; + OUT ULONG ulProviderID; +} NDIS_TAPI_PROVIDER_INITIALIZE, *PNDIS_TAPI_PROVIDER_INITIALIZE; + + +#define CO_TAPI_VERSION NDIS_TAPI_CURRENT_VERSION + +#define CO_TAPI_FLAG_OUTGOING_CALL 0x00000001 +#define CO_TAPI_FLAG_INCOMING_CALL 0x00000002 +#define CO_TAPI_FLAG_USE_DEFAULT_CALLPARAMS 0x00000004 + +#define AF_TAPI_SAP_TYPE 0x00008000 + +typedef struct _CO_TAPI_ADDRESS_CAPS { + IN ULONG ulLineID; + IN ULONG ulAddressID; + OUT ULONG ulFlags; + OUT LINE_ADDRESS_CAPS LineAddressCaps; +} CO_TAPI_ADDRESS_CAPS, *PCO_TAPI_ADDRESS_CAPS; + +/* CO_TAPI_CM_CAPS.ulFlags constants */ +#define CO_TAPI_FLAG_PER_LINE_CAPS 0x00000001 + +typedef struct _CO_TAPI_CM_CAPS { + OUT ULONG ulCoTapiVersion; + OUT ULONG ulNumLines; + OUT ULONG ulFlags; +} CO_TAPI_CM_CAPS, *PCO_TAPI_CM_CAPS; + +typedef struct _CO_TAPI_CALL_DIAGNOSTICS { + OUT ULONG ulOrigin; + OUT ULONG ulReason; + OUT NDIS_VAR_DATA_DESC DiagInfo; +} CO_TAPI_CALL_DIAGNOSTICS, *PCO_TAPI_CALL_DIAGNOSTICS; + + +/* CO_TAPI_LINE_CAPS.ulFlags constants */ +#define CO_TAPI_FLAG_PER_ADDRESS_CAPS 0x00000001 + +typedef struct _CO_TAPI_LINE_CAPS { + IN ULONG ulLineID; + OUT ULONG ulFlags; + OUT LINE_DEV_CAPS LineDevCaps; +} CO_TAPI_LINE_CAPS, *PCO_TAPI_LINE_CAPS; + +typedef struct _CO_TAPI_TRANSLATE_NDIS_CALLPARAMS { + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC NdisCallParams; + OUT NDIS_VAR_DATA_DESC LineCallInfo; +} CO_TAPI_TRANSLATE_NDIS_CALLPARAMS, *PCO_TAPI_TRANSLATE_NDIS_CALLPARAMS; + +typedef struct _CO_TAPI_TRANSLATE_TAPI_CALLPARAMS { + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC DestAddress; + IN NDIS_VAR_DATA_DESC LineCallParams; + OUT NDIS_VAR_DATA_DESC NdisCallParams; +} CO_TAPI_TRANSLATE_TAPI_CALLPARAMS, *PCO_TAPI_TRANSLATE_TAPI_CALLPARAMS; + +/* CO_TAPI_TRANSLATE_SAP.ulLineID constants */ +#define CO_TAPI_LINE_ID_UNSPECIFIED 0xFFFFFFFF + +/* CO_TAPI_TRANSLATE_SAP.ulAddressID constants */ +#define CO_TAPI_ADDRESS_ID_UNSPECIFIED 0xFFFFFFFF + +typedef struct _CO_TAPI_TRANSLATE_SAP { + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulMediaModes; + IN ULONG Reserved; + OUT ULONG NumberOfSaps; + OUT NDIS_VAR_DATA_DESC NdisSapParams[1]; +} CO_AF_TAPI_SAP, *PCO_AF_TAPI_SAP; + +typedef struct _CO_AF_TAPI_INCOMING_CALL_PARAMETERS { + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC LineCallInfo; +} CO_AF_TAPI_INCOMING_CALL_PARAMETERS, *PCO_AF_TAPI_INCOMING_CALL_PARAMETERS; + +typedef struct _CO_AF_TAPI_MAKE_CALL_PARAMETERS { + IN ULONG ulLineID; + IN ULONG ulAddressID; + IN ULONG ulFlags; + IN NDIS_VAR_DATA_DESC DestAddress; + IN NDIS_VAR_DATA_DESC LineCallParams; +} CO_AF_TAPI_MAKE_CALL_PARAMETERS, *PCO_AF_TAPI_MAKE_CALL_PARAMETERS; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NDISTAPI_H */ diff --git a/reactos/w32api/include/ddk/ndiswan.h b/reactos/w32api/include/ddk/ndiswan.h new file mode 100644 index 00000000000..a3156d5a98c --- /dev/null +++ b/reactos/w32api/include/ddk/ndiswan.h @@ -0,0 +1,255 @@ +/* + * ndiswan.h + * + * Definitions for NDIS WAN miniport drivers + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NDISWAN_H +#define __NDISWAN_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ndis.h" + +#define NDIS_USE_WAN_WRAPPER 0x00000001 + +#define NDIS_STATUS_TAPI_INDICATION ((NDIS_STATUS)0x40010080L) + +/* NDIS_WAN_INFO.FramingBits constants */ +#define RAS_FRAMING 0x00000001 +#define RAS_COMPRESSION 0x00000002 + +#define ARAP_V1_FRAMING 0x00000004 +#define ARAP_V2_FRAMING 0x00000008 +#define ARAP_FRAMING (ARAP_V1_FRAMING | ARAP_V2_FRAMING) + +#define PPP_MULTILINK_FRAMING 0x00000010 +#define PPP_SHORT_SEQUENCE_HDR_FORMAT 0x00000020 +#define PPP_MC_MULTILINK_FRAMING 0x00000040 + +#define PPP_FRAMING 0x00000100 +#define PPP_COMPRESS_ADDRESS_CONTROL 0x00000200 +#define PPP_COMPRESS_PROTOCOL_FIELD 0x00000400 +#define PPP_ACCM_SUPPORTED 0x00000800 + +#define SLIP_FRAMING 0x00001000 +#define SLIP_VJ_COMPRESSION 0x00002000 +#define SLIP_VJ_AUTODETECT 0x00004000 + +#define MEDIA_NRZ_ENCODING 0x00010000 +#define MEDIA_NRZI_ENCODING 0x00020000 +#define MEDIA_NLPID 0x00040000 + +#define RFC_1356_FRAMING 0x00100000 +#define RFC_1483_FRAMING 0x00200000 +#define RFC_1490_FRAMING 0x00400000 +#define LLC_ENCAPSULATION 0x00800000 + +#define SHIVA_FRAMING 0x01000000 +#define NBF_PRESERVE_MAC_ADDRESS 0x01000000 + +#define PASS_THROUGH_MODE 0x10000000 +#define RAW_PASS_THROUGH_MODE 0x20000000 + +#define TAPI_PROVIDER 0x80000000 + +typedef struct _NDIS_WAN_INFO { + OUT ULONG MaxFrameSize; + OUT ULONG MaxTransmit; + OUT ULONG HeaderPadding; + OUT ULONG TailPadding; + OUT ULONG Endpoints; + OUT UINT MemoryFlags; + OUT NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress; + OUT ULONG FramingBits; + OUT ULONG DesiredACCM; +} NDIS_WAN_INFO, *PNDIS_WAN_INFO; + +typedef struct _NDIS_WAN_GET_LINK_INFO { + IN NDIS_HANDLE NdisLinkHandle; + OUT ULONG MaxSendFrameSize; + OUT ULONG MaxRecvFrameSize; + OUT ULONG HeaderPadding; + OUT ULONG TailPadding; + OUT ULONG SendFramingBits; + OUT ULONG RecvFramingBits; + OUT ULONG SendCompressionBits; + OUT ULONG RecvCompressionBits; + OUT ULONG SendACCM; + OUT ULONG RecvACCM; +} NDIS_WAN_GET_LINK_INFO, *PNDIS_WAN_GET_LINK_INFO; + +typedef struct _NDIS_WAN_SET_LINK_INFO { + IN NDIS_HANDLE NdisLinkHandle; + IN ULONG MaxSendFrameSize; + IN ULONG MaxRecvFrameSize; + IN ULONG HeaderPadding; + IN ULONG TailPadding; + IN ULONG SendFramingBits; + IN ULONG RecvFramingBits; + IN ULONG SendCompressionBits; + IN ULONG RecvCompressionBits; + IN ULONG SendACCM; + IN ULONG RecvACCM; +} NDIS_WAN_SET_LINK_INFO, *PNDIS_WAN_SET_LINK_INFO; + +/* NDIS_WAN_COMPRESS_INFO.MSCompType constants */ +#define NDISWAN_COMPRESSION 0x00000001 +#define NDISWAN_ENCRYPTION 0x00000010 +#define NDISWAN_40_ENCRYPTION 0x00000020 +#define NDISWAN_128_ENCRYPTION 0x00000040 +#define NDISWAN_56_ENCRYPTION 0x00000080 +#define NDISWAN_HISTORY_LESS 0x01000000 + +/* NDIS_WAN_COMPRESS_INFO.CompType constants */ +#define COMPTYPE_OUI 0 +#define COMPTYPE_NT31RAS 254 +#define COMPTYPE_NONE 255 + +typedef struct _NDIS_WAN_COMPRESS_INFO { + UCHAR SessionKey[8]; + ULONG MSCompType; + UCHAR CompType; + USHORT CompLength; + _ANONYMOUS_UNION union { + struct { + UCHAR CompOUI[3]; + UCHAR CompSubType; + UCHAR CompValues[32]; + } Proprietary; + struct { + UCHAR CompValues[32]; + } Public; + } DUMMYUNIONNAME; +} NDIS_WAN_COMPRESS_INFO; + +typedef NDIS_WAN_COMPRESS_INFO *PNDIS_WAN_COMPRESS_INFO; + +typedef struct _NDIS_WAN_GET_COMP_INFO { + IN NDIS_HANDLE NdisLinkHandle; + OUT NDIS_WAN_COMPRESS_INFO SendCapabilities; + OUT NDIS_WAN_COMPRESS_INFO RecvCapabilities; +} NDIS_WAN_GET_COMP_INFO, *PNDIS_WAN_GET_COMP_INFO; + +typedef struct _NDIS_WAN_SET_COMP_INFO { + IN NDIS_HANDLE NdisLinkHandle; + IN NDIS_WAN_COMPRESS_INFO SendCapabilities; + IN NDIS_WAN_COMPRESS_INFO RecvCapabilities; +} NDIS_WAN_SET_COMP_INFO, *PNDIS_WAN_SET_COMP_INFO; + +typedef struct _NDIS_WAN_GET_STATS_INFO { + IN NDIS_HANDLE NdisLinkHandle; + OUT ULONG BytesSent; + OUT ULONG BytesRcvd; + OUT ULONG FramesSent; + OUT ULONG FramesRcvd; + OUT ULONG CRCErrors; + OUT ULONG TimeoutErrors; + OUT ULONG AlignmentErrors; + OUT ULONG SerialOverrunErrors; + OUT ULONG FramingErrors; + OUT ULONG BufferOverrunErrors; + OUT ULONG BytesTransmittedUncompressed; + OUT ULONG BytesReceivedUncompressed; + OUT ULONG BytesTransmittedCompressed; + OUT ULONG BytesReceivedCompressed; +} NDIS_WAN_GET_STATS_INFO, *PNDIS_WAN_GET_STATS_INFO; + +#define NdisMWanInitializeWrapper(NdisWrapperHandle, \ + SystemSpecific1, \ + SystemSpecific2, \ + SystemSpecific3) \ +{ \ + NdisMInitializeWrapper(NdisWrapperHandle, \ + SystemSpecific1, \ + SystemSpecific2, \ + SystemSpecific3); \ +} + +typedef struct _NDIS_WAN_CO_INFO { + OUT ULONG MaxFrameSize; + OUT ULONG MaxSendWindow; + OUT ULONG FramingBits; + OUT ULONG DesiredACCM; +} NDIS_WAN_CO_INFO, *PNDIS_WAN_CO_INFO; + +typedef struct _NDIS_WAN_CO_GET_LINK_INFO { + OUT ULONG MaxSendFrameSize; + OUT ULONG MaxRecvFrameSize; + OUT ULONG SendFramingBits; + OUT ULONG RecvFramingBits; + OUT ULONG SendCompressionBits; + OUT ULONG RecvCompressionBits; + OUT ULONG SendACCM; + OUT ULONG RecvACCM; +} NDIS_WAN_CO_GET_LINK_INFO, *PNDIS_WAN_CO_GET_LINK_INFO; + +typedef struct _NDIS_WAN_CO_SET_LINK_INFO { + IN ULONG MaxSendFrameSize; + IN ULONG MaxRecvFrameSize; + IN ULONG SendFramingBits; + IN ULONG RecvFramingBits; + IN ULONG SendCompressionBits; + IN ULONG RecvCompressionBits; + IN ULONG SendACCM; + IN ULONG RecvACCM; +} NDIS_WAN_CO_SET_LINK_INFO, *PNDIS_WAN_CO_SET_LINK_INFO; + +typedef struct _NDIS_WAN_CO_GET_COMP_INFO { + OUT NDIS_WAN_COMPRESS_INFO SendCapabilities; + OUT NDIS_WAN_COMPRESS_INFO RecvCapabilities; +} NDIS_WAN_CO_GET_COMP_INFO, *PNDIS_WAN_CO_GET_COMP_INFO; + +typedef struct _NDIS_WAN_CO_SET_COMP_INFO { + IN NDIS_WAN_COMPRESS_INFO SendCapabilities; + IN NDIS_WAN_COMPRESS_INFO RecvCapabilities; +} NDIS_WAN_CO_SET_COMP_INFO, *PNDIS_WAN_CO_SET_COMP_INFO; + +typedef struct _NDIS_WAN_CO_GET_STATS_INFO { + OUT ULONG BytesSent; + OUT ULONG BytesRcvd; + OUT ULONG FramesSent; + OUT ULONG FramesRcvd; + OUT ULONG CRCErrors; + OUT ULONG TimeoutErrors; + OUT ULONG AlignmentErrors; + OUT ULONG SerialOverrunErrors; + OUT ULONG FramingErrors; + OUT ULONG BufferOverrunErrors; + OUT ULONG BytesTransmittedUncompressed; + OUT ULONG BytesReceivedUncompressed; + OUT ULONG BytesTransmittedCompressed; + OUT ULONG BytesReceivedCompressed; +} NDIS_WAN_CO_GET_STATS_INFO, *PNDIS_WAN_CO_GET_STATS_INFO; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NDISWAN_H */ diff --git a/reactos/w32api/include/ddk/netevent.h b/reactos/w32api/include/ddk/netevent.h new file mode 100644 index 00000000000..0cf66e03217 --- /dev/null +++ b/reactos/w32api/include/ddk/netevent.h @@ -0,0 +1,42 @@ +/* + * netevent.h + * + * Network events + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NETEVENT_H +#define __NETEVENT_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define EVENT_TRANSPORT_REGISTER_FAILED 0xC000232CL + +#define EVENT_TRANSPORT_ADAPTER_NOT_FOUND 0xC000232EL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __NETEVENT_H */ diff --git a/reactos/w32api/include/ddk/netpnp.h b/reactos/w32api/include/ddk/netpnp.h new file mode 100644 index 00000000000..32f305d0323 --- /dev/null +++ b/reactos/w32api/include/ddk/netpnp.h @@ -0,0 +1,73 @@ +/* + * netpnp.h + * + * Network Plug and Play event support + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NETPNP_H +#define __NETPNP_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +typedef enum _NET_PNP_EVENT_CODE { + NetEventSetPower, + NetEventQueryPower, + NetEventQueryRemoveDevice, + NetEventCancelRemoveDevice, + NetEventReconfigure, + NetEventBindList, + NetEventBindsComplete, + NetEventPnPCapabilities, + NetEventMaximum +} NET_PNP_EVENT_CODE, *PNET_PNP_EVENT_CODE; + +typedef struct _NET_PNP_EVENT { + NET_PNP_EVENT_CODE NetEvent; + PVOID Buffer; + ULONG BufferLength; + ULONG_PTR NdisReserved[4]; + ULONG_PTR TransportReserved[4]; + ULONG_PTR TdiReserved[4]; + ULONG_PTR TdiClientReserved[4]; +} NET_PNP_EVENT, *PNET_PNP_EVENT; + +typedef enum _NET_DEVICE_POWER_STATE { + NetDeviceStateUnspecified, + NetDeviceStateD0, + NetDeviceStateD1, + NetDeviceStateD2, + NetDeviceStateD3, + NetDeviceStateMaximum +} NET_DEVICE_POWER_STATE, *PNET_DEVICE_POWER_STATE; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NETPNP_H */ diff --git a/reactos/w32api/include/ddk/newdev.h b/reactos/w32api/include/ddk/newdev.h new file mode 100644 index 00000000000..7f618ded045 --- /dev/null +++ b/reactos/w32api/include/ddk/newdev.h @@ -0,0 +1,70 @@ +/* + * newdev.h + * + * Driver installation DLL interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NEWDEV_H +#define __NEWDEV_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +/* UpdateDriverForPlugAndPlayDevices.InstallFlags constants */ +#define INSTALLFLAG_FORCE 0x00000001 +#define INSTALLFLAG_READONLY 0x00000002 +#define INSTALLFLAG_NONINTERACTIVE 0x00000004 +#define INSTALLFLAG_BITS 0x00000007 + +BOOL WINAPI +UpdateDriverForPlugAndPlayDevicesA( + HWND hwndParent, + LPCSTR HardwareId, + LPCSTR FullInfPath, + DWORD InstallFlags, + PBOOL bRebootRequired OPTIONAL); + +BOOL WINAPI +UpdateDriverForPlugAndPlayDevicesW( + HWND hwndParent, + LPCWSTR HardwareId, + LPCWSTR FullInfPath, + DWORD InstallFlags, + PBOOL bRebootRequired OPTIONAL); + +#ifdef UNICODE +#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesW +#else +#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesA +#endif /* UNICODE */ + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NEWDEV_H */ diff --git a/reactos/w32api/include/ddk/ntapi.h b/reactos/w32api/include/ddk/ntapi.h new file mode 100644 index 00000000000..a9a6b6e5ccb --- /dev/null +++ b/reactos/w32api/include/ddk/ntapi.h @@ -0,0 +1,2887 @@ +/* + * ntapi.h + * + * Windows NT Native API + * + * Most structures in this file is obtained from Windows NT/2000 Native API + * Reference by Gary Nebbett, ISBN 1578701996. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTAPI_H +#define __NTAPI_H + +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include +#include +#include "ntddk.h" +#include "ntpoapi.h" + +typedef struct _PEB *PPEB; + +/* FIXME: Unknown definitions */ +typedef PVOID POBJECT_TYPE_LIST; +typedef PVOID PEXECUTION_STATE; +typedef PVOID PLANGID; + + +/* System information and control */ + +typedef enum _SYSTEM_INFORMATION_CLASS { + SystemInformationClassMin = 0, + SystemBasicInformation = 0, + SystemProcessorInformation = 1, + SystemPerformanceInformation = 2, + SystemTimeOfDayInformation = 3, + SystemPathInformation = 4, + SystemNotImplemented1 = 4, + SystemProcessInformation = 5, + SystemProcessesAndThreadsInformation = 5, + SystemCallCountInfoInformation = 6, + SystemCallCounts = 6, + SystemDeviceInformation = 7, + SystemConfigurationInformation = 7, + SystemProcessorPerformanceInformation = 8, + SystemProcessorTimes = 8, + SystemFlagsInformation = 9, + SystemGlobalFlag = 9, + SystemCallTimeInformation = 10, + SystemNotImplemented2 = 10, + SystemModuleInformation = 11, + SystemLocksInformation = 12, + SystemLockInformation = 12, + SystemStackTraceInformation = 13, + SystemNotImplemented3 = 13, + SystemPagedPoolInformation = 14, + SystemNotImplemented4 = 14, + SystemNonPagedPoolInformation = 15, + SystemNotImplemented5 = 15, + SystemHandleInformation = 16, + SystemObjectInformation = 17, + SystemPageFileInformation = 18, + SystemPagefileInformation = 18, + SystemVdmInstemulInformation = 19, + SystemInstructionEmulationCounts = 19, + SystemVdmBopInformation = 20, + SystemInvalidInfoClass1 = 20, + SystemFileCacheInformation = 21, + SystemCacheInformation = 21, + SystemPoolTagInformation = 22, + SystemInterruptInformation = 23, + SystemProcessorStatistics = 23, + SystemDpcBehaviourInformation = 24, + SystemDpcInformation = 24, + SystemFullMemoryInformation = 25, + SystemNotImplemented6 = 25, + SystemLoadImage = 26, + SystemUnloadImage = 27, + SystemTimeAdjustmentInformation = 28, + SystemTimeAdjustment = 28, + SystemSummaryMemoryInformation = 29, + SystemNotImplemented7 = 29, + SystemNextEventIdInformation = 30, + SystemNotImplemented8 = 30, + SystemEventIdsInformation = 31, + SystemNotImplemented9 = 31, + SystemCrashDumpInformation = 32, + SystemExceptionInformation = 33, + SystemCrashDumpStateInformation = 34, + SystemKernelDebuggerInformation = 35, + SystemContextSwitchInformation = 36, + SystemRegistryQuotaInformation = 37, + SystemLoadAndCallImage = 38, + SystemPrioritySeparation = 39, + SystemPlugPlayBusInformation = 40, + SystemNotImplemented10 = 40, + SystemDockInformation = 41, + SystemNotImplemented11 = 41, + /* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */ + SystemInvalidInfoClass2 = 42, + SystemProcessorSpeedInformation = 43, + SystemInvalidInfoClass3 = 43, + SystemCurrentTimeZoneInformation = 44, + SystemTimeZoneInformation = 44, + SystemLookasideInformation = 45, + SystemSetTimeSlipEvent = 46, + SystemCreateSession = 47, + SystemDeleteSession = 48, + SystemInvalidInfoClass4 = 49, + SystemRangeStartInformation = 50, + SystemVerifierInformation = 51, + SystemAddVerifier = 52, + SystemSessionProcessesInformation = 53, + SystemInformationClassMax +} SYSTEM_INFORMATION_CLASS; + +typedef struct _SYSTEM_BASIC_INFORMATION { + ULONG Unknown; + ULONG MaximumIncrement; + ULONG PhysicalPageSize; + ULONG NumberOfPhysicalPages; + ULONG LowestPhysicalPage; + ULONG HighestPhysicalPage; + ULONG AllocationGranularity; + ULONG LowestUserAddress; + ULONG HighestUserAddress; + ULONG ActiveProcessors; + UCHAR NumberProcessors; +} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; + +typedef struct _SYSTEM_PROCESSOR_INFORMATION { + USHORT ProcessorArchitecture; + USHORT ProcessorLevel; + USHORT ProcessorRevision; + USHORT Unknown; + ULONG FeatureBits; +} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION; + +typedef struct _SYSTEM_PERFORMANCE_INFORMATION { + LARGE_INTEGER IdleTime; + LARGE_INTEGER ReadTransferCount; + LARGE_INTEGER WriteTransferCount; + LARGE_INTEGER OtherTransferCount; + ULONG ReadOperationCount; + ULONG WriteOperationCount; + ULONG OtherOperationCount; + ULONG AvailablePages; + ULONG TotalCommittedPages; + ULONG TotalCommitLimit; + ULONG PeakCommitment; + ULONG PageFaults; + ULONG WriteCopyFaults; + ULONG TransitionFaults; + ULONG CacheTransitionFaults; + ULONG DemandZeroFaults; + ULONG PagesRead; + ULONG PageReadIos; + ULONG CacheReads; + ULONG CacheIos; + ULONG PagefilePagesWritten; + ULONG PagefilePageWriteIos; + ULONG MappedFilePagesWritten; + ULONG MappedFilePageWriteIos; + ULONG PagedPoolUsage; + ULONG NonPagedPoolUsage; + ULONG PagedPoolAllocs; + ULONG PagedPoolFrees; + ULONG NonPagedPoolAllocs; + ULONG NonPagedPoolFrees; + ULONG TotalFreeSystemPtes; + ULONG SystemCodePage; + ULONG TotalSystemDriverPages; + ULONG TotalSystemCodePages; + ULONG SmallNonPagedLookasideListAllocateHits; + ULONG SmallPagedLookasideListAllocateHits; + ULONG Reserved3; + ULONG MmSystemCachePage; + ULONG PagedPoolPage; + ULONG SystemDriverPage; + ULONG FastReadNoWait; + ULONG FastReadWait; + ULONG FastReadResourceMiss; + ULONG FastReadNotPossible; + ULONG FastMdlReadNoWait; + ULONG FastMdlReadWait; + ULONG FastMdlReadResourceMiss; + ULONG FastMdlReadNotPossible; + ULONG MapDataNoWait; + ULONG MapDataWait; + ULONG MapDataNoWaitMiss; + ULONG MapDataWaitMiss; + ULONG PinMappedDataCount; + ULONG PinReadNoWait; + ULONG PinReadWait; + ULONG PinReadNoWaitMiss; + ULONG PinReadWaitMiss; + ULONG CopyReadNoWait; + ULONG CopyReadWait; + ULONG CopyReadNoWaitMiss; + ULONG CopyReadWaitMiss; + ULONG MdlReadNoWait; + ULONG MdlReadWait; + ULONG MdlReadNoWaitMiss; + ULONG MdlReadWaitMiss; + ULONG ReadAheadIos; + ULONG LazyWriteIos; + ULONG LazyWritePages; + ULONG DataFlushes; + ULONG DataPages; + ULONG ContextSwitches; + ULONG FirstLevelTbFills; + ULONG SecondLevelTbFills; + ULONG SystemCalls; +} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; + +typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION { + LARGE_INTEGER BootTime; + LARGE_INTEGER CurrentTime; + LARGE_INTEGER TimeZoneBias; + ULONG CurrentTimeZoneId; +} SYSTEM_TIME_OF_DAY_INFORMATION, *PSYSTEM_TIME_OF_DAY_INFORMATION; + +typedef struct _VM_COUNTERS { + ULONG PeakVirtualSize; + ULONG VirtualSize; + ULONG PageFaultCount; + ULONG PeakWorkingSetSize; + ULONG WorkingSetSize; + ULONG QuotaPeakPagedPoolUsage; + ULONG QuotaPagedPoolUsage; + ULONG QuotaPeakNonPagedPoolUsage; + ULONG QuotaNonPagedPoolUsage; + ULONG PagefileUsage; + ULONG PeakPagefileUsage; +} VM_COUNTERS; + +typedef enum _THREAD_STATE { + StateInitialized, + StateReady, + StateRunning, + StateStandby, + StateTerminated, + StateWait, + StateTransition, + StateUnknown +} THREAD_STATE; + +typedef struct _SYSTEM_THREADS { + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER CreateTime; + ULONG WaitTime; + PVOID StartAddress; + CLIENT_ID ClientId; + KPRIORITY Priority; + KPRIORITY BasePriority; + ULONG ContextSwitchCount; + THREAD_STATE State; + KWAIT_REASON WaitReason; +} SYSTEM_THREADS, *PSYSTEM_THREADS; + +typedef struct _SYSTEM_PROCESSES { + ULONG NextEntryDelta; + ULONG ThreadCount; + ULONG Reserved1[6]; + LARGE_INTEGER CreateTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER KernelTime; + UNICODE_STRING ProcessName; + KPRIORITY BasePriority; + ULONG ProcessId; + ULONG InheritedFromProcessId; + ULONG HandleCount; + ULONG Reserved2[2]; + VM_COUNTERS VmCounters; + IO_COUNTERS IoCounters; + SYSTEM_THREADS Threads[1]; +} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES; + +typedef struct _SYSTEM_CALLS_INFORMATION { + ULONG Size; + ULONG NumberOfDescriptorTables; + ULONG NumberOfRoutinesInTable[1]; + ULONG CallCounts[ANYSIZE_ARRAY]; +} SYSTEM_CALLS_INFORMATION, *PSYSTEM_CALLS_INFORMATION; + +typedef struct _SYSTEM_CONFIGURATION_INFORMATION { + ULONG DiskCount; + ULONG FloppyCount; + ULONG CdRomCount; + ULONG TapeCount; + ULONG SerialCount; + ULONG ParallelCount; +} SYSTEM_CONFIGURATION_INFORMATION, *PSYSTEM_CONFIGURATION_INFORMATION; + +typedef struct _SYSTEM_PROCESSOR_TIMES { + LARGE_INTEGER IdleTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER DpcTime; + LARGE_INTEGER InterruptTime; + ULONG InterruptCount; +} SYSTEM_PROCESSOR_TIMES, *PSYSTEM_PROCESSOR_TIMES; + +/* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */ +#define FLG_STOP_ON_EXCEPTION 0x00000001 +#define FLG_SHOW_LDR_SNAPS 0x00000002 +#define FLG_DEBUG_INITIAL_COMMAND 0x00000004 +#define FLG_STOP_ON_HUNG_GUI 0x00000008 +#define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010 +#define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020 +#define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040 +#define FLG_HEAP_VALIDATE_ALL 0x00000080 +#define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100 +#define FLG_POOL_ENABLE_FREE_CHECK 0x00000200 +#define FLG_POOL_ENABLE_TAGGING 0x00000400 +#define FLG_HEAP_ENABLE_TAGGING 0x00000800 +#define FLG_USER_STACK_TRACE_DB 0x00001000 +#define FLG_KERNEL_STACK_TRACE_DB 0x00002000 +#define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000 +#define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000 +#define FLG_IGNORE_DEBUG_PRIV 0x00010000 +#define FLG_ENABLE_CSRDEBUG 0x00020000 +#define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000 +#define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000 +#define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000 +#define FLG_HEAP_DISABLE_COALESCING 0x00200000 +#define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000 +#define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000 +#define FLG_ENABLE_DBGPRINT_BUFFERING 0x08000000 + +typedef struct _SYSTEM_GLOBAL_FLAG { + ULONG GlobalFlag; +} SYSTEM_GLOBAL_FLAG, *PSYSTEM_GLOBAL_FLAG; + +typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY { + ULONG Unknown1; + ULONG Unknown2; + PVOID Base; + ULONG Size; + ULONG Flags; + USHORT Index; + /* Length of module name not including the path, this + field contains valid value only for NTOSKRNL module */ + USHORT NameLength; + USHORT LoadCount; + USHORT PathLength; + CHAR ImageName[256]; +} SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY; + +typedef struct _SYSTEM_MODULE_INFORMATION { + ULONG Count; + SYSTEM_MODULE_INFORMATION_ENTRY Module[1]; +} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; + +typedef struct _SYSTEM_LOCK_INFORMATION { + PVOID Address; + USHORT Type; + USHORT Reserved1; + ULONG ExclusiveOwnerThreadId; + ULONG ActiveCount; + ULONG ContentionCount; + ULONG Reserved2[2]; + ULONG NumberOfSharedWaiters; + ULONG NumberOfExclusiveWaiters; +} SYSTEM_LOCK_INFORMATION, *PSYSTEM_LOCK_INFORMATION; + +/*SYSTEM_HANDLE_INFORMATION.Flags cosntants */ +#define PROTECT_FROM_CLOSE 0x01 +#define INHERIT 0x02 + +typedef struct _SYSTEM_HANDLE_INFORMATION { + ULONG ProcessId; + UCHAR ObjectTypeNumber; + UCHAR Flags; + USHORT Handle; + PVOID Object; + ACCESS_MASK GrantedAccess; +} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; + +typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION { + ULONG NextEntryOffset; + ULONG ObjectCount; + ULONG HandleCount; + ULONG TypeNumber; + ULONG InvalidAttributes; + GENERIC_MAPPING GenericMapping; + ACCESS_MASK ValidAccessMask; + POOL_TYPE PoolType; + UCHAR Unknown; + UNICODE_STRING Name; +} SYSTEM_OBJECT_TYPE_INFORMATION, *PSYSTEM_OBJECT_TYPE_INFORMATION; + +/* SYSTEM_OBJECT_INFORMATION.Flags constants */ +#define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY 0x40 +#define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20 +#define FLG_SYSOBJINFO_PERMANENT 0x10 +#define FLG_SYSOBJINFO_EXCLUSIVE 0x08 +#define FLG_SYSOBJINFO_CREATOR_INFO 0x04 +#define FLG_SYSOBJINFO_KERNEL_MODE 0x02 + +typedef struct _SYSTEM_OBJECT_INFORMATION { + ULONG NextEntryOffset; + PVOID Object; + ULONG CreatorProcessId; + USHORT Unknown; + USHORT Flags; + ULONG PointerCount; + ULONG HandleCount; + ULONG PagedPoolUsage; + ULONG NonPagedPoolUsage; + ULONG ExclusiveProcessId; + PSECURITY_DESCRIPTOR SecurityDescriptor; + UNICODE_STRING Name; +} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION; + +typedef struct _SYSTEM_PAGEFILE_INFORMATION { + ULONG NextEntryOffset; + ULONG CurrentSize; + ULONG TotalUsed; + ULONG PeakUsed; + UNICODE_STRING FileName; +} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; + +typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION { + ULONG SegmentNotPresent; + ULONG TwoByteOpcode; + ULONG ESprefix; + ULONG CSprefix; + ULONG SSprefix; + ULONG DSprefix; + ULONG FSPrefix; + ULONG GSprefix; + ULONG OPER32prefix; + ULONG ADDR32prefix; + ULONG INSB; + ULONG INSW; + ULONG OUTSB; + ULONG OUTSW; + ULONG PUSHFD; + ULONG POPFD; + ULONG INTnn; + ULONG INTO; + ULONG IRETD; + ULONG INBimm; + ULONG INWimm; + ULONG OUTBimm; + ULONG OUTWimm; + ULONG INB; + ULONG INW; + ULONG OUTB; + ULONG OUTW; + ULONG LOCKprefix; + ULONG REPNEprefix; + ULONG REPprefix; + ULONG HLT; + ULONG CLI; + ULONG STI; + ULONG GenericInvalidOpcode; +} SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION; + +typedef struct _SYSTEM_POOL_TAG_INFORMATION { + CHAR Tag[4]; + ULONG PagedPoolAllocs; + ULONG PagedPoolFrees; + ULONG PagedPoolUsage; + ULONG NonPagedPoolAllocs; + ULONG NonPagedPoolFrees; + ULONG NonPagedPoolUsage; +} SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION; + +typedef struct _SYSTEM_PROCESSOR_STATISTICS { + ULONG ContextSwitches; + ULONG DpcCount; + ULONG DpcRequestRate; + ULONG TimeIncrement; + ULONG DpcBypassCount; + ULONG ApcBypassCount; +} SYSTEM_PROCESSOR_STATISTICS, *PSYSTEM_PROCESSOR_STATISTICS; + +typedef struct _SYSTEM_DPC_INFORMATION { + ULONG Reserved; + ULONG MaximumDpcQueueDepth; + ULONG MinimumDpcRate; + ULONG AdjustDpcThreshold; + ULONG IdealDpcRate; +} SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION; + +typedef struct _SYSTEM_LOAD_IMAGE { + UNICODE_STRING ModuleName; + PVOID ModuleBase; + PVOID SectionPointer; + PVOID EntryPoint; + PVOID ExportDirectory; +} SYSTEM_LOAD_IMAGE, *PSYSTEM_LOAD_IMAGE; + +typedef struct _SYSTEM_UNLOAD_IMAGE { + PVOID ModuleBase; +} SYSTEM_UNLOAD_IMAGE, *PSYSTEM_UNLOAD_IMAGE; + +typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT { + ULONG TimeAdjustment; + ULONG MaximumIncrement; + BOOLEAN TimeSynchronization; +} SYSTEM_QUERY_TIME_ADJUSTMENT, *PSYSTEM_QUERY_TIME_ADJUSTMENT; + +typedef struct _SYSTEM_SET_TIME_ADJUSTMENT { + ULONG TimeAdjustment; + BOOLEAN TimeSynchronization; +} SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT; + +typedef struct _SYSTEM_CRASH_DUMP_INFORMATION { + HANDLE CrashDumpSectionHandle; + HANDLE Unknown; +} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION; + +typedef struct _SYSTEM_EXCEPTION_INFORMATION { + ULONG AlignmentFixupCount; + ULONG ExceptionDispatchCount; + ULONG FloatingEmulationCount; + ULONG Reserved; +} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; + +typedef struct _SYSTEM_CRASH_DUMP_STATE_INFORMATION { + ULONG CrashDumpSectionExists; + ULONG Unknown; +} SYSTEM_CRASH_DUMP_STATE_INFORMATION, *PSYSTEM_CRASH_DUMP_STATE_INFORMATION; + +typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION { + BOOLEAN DebuggerEnabled; + BOOLEAN DebuggerNotPresent; +} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; + +typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION { + ULONG ContextSwitches; + ULONG ContextSwitchCounters[11]; +} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION; + +typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { + ULONG RegistryQuota; + ULONG RegistryQuotaInUse; + ULONG PagedPoolSize; +} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; + +typedef struct _SYSTEM_LOAD_AND_CALL_IMAGE { + UNICODE_STRING ModuleName; +} SYSTEM_LOAD_AND_CALL_IMAGE, *PSYSTEM_LOAD_AND_CALL_IMAGE; + +typedef struct _SYSTEM_PRIORITY_SEPARATION { + ULONG PrioritySeparation; +} SYSTEM_PRIORITY_SEPARATION, *PSYSTEM_PRIORITY_SEPARATION; + +typedef struct _SYSTEM_TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR StandardName[32]; + LARGE_INTEGER StandardDate; + LONG StandardBias; + WCHAR DaylightName[32]; + LARGE_INTEGER DaylightDate; + LONG DaylightBias; +} SYSTEM_TIME_ZONE_INFORMATION, *PSYSTEM_TIME_ZONE_INFORMATION; + +typedef struct _SYSTEM_LOOKASIDE_INFORMATION { + USHORT Depth; + USHORT MaximumDepth; + ULONG TotalAllocates; + ULONG AllocateMisses; + ULONG TotalFrees; + ULONG FreeMisses; + POOL_TYPE Type; + ULONG Tag; + ULONG Size; +} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; + +typedef struct _SYSTEM_SET_TIME_SLIP_EVENT { + HANDLE TimeSlipEvent; +} SYSTEM_SET_TIME_SLIP_EVENT, *PSYSTEM_SET_TIME_SLIP_EVENT; + +typedef struct _SYSTEM_CREATE_SESSION { + ULONG SessionId; +} SYSTEM_CREATE_SESSION, *PSYSTEM_CREATE_SESSION; + +typedef struct _SYSTEM_DELETE_SESSION { + ULONG SessionId; +} SYSTEM_DELETE_SESSION, *PSYSTEM_DELETE_SESSION; + +typedef struct _SYSTEM_RANGE_START_INFORMATION { + PVOID SystemRangeStart; +} SYSTEM_RANGE_START_INFORMATION, *PSYSTEM_RANGE_START_INFORMATION; + +typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION { + ULONG SessionId; + ULONG BufferSize; + PVOID Buffer; +} SYSTEM_SESSION_PROCESSES_INFORMATION, *PSYSTEM_SESSION_PROCESSES_INFORMATION; + +typedef struct _SYSTEM_POOL_BLOCK { + BOOLEAN Allocated; + USHORT Unknown; + ULONG Size; + CHAR Tag[4]; +} SYSTEM_POOL_BLOCK, *PSYSTEM_POOL_BLOCK; + +typedef struct _SYSTEM_POOL_BLOCKS_INFORMATION { + ULONG PoolSize; + PVOID PoolBase; + USHORT Unknown; + ULONG NumberOfBlocks; + SYSTEM_POOL_BLOCK PoolBlocks[1]; +} SYSTEM_POOL_BLOCKS_INFORMATION, *PSYSTEM_POOL_BLOCKS_INFORMATION; + +typedef struct _SYSTEM_MEMORY_USAGE { + PVOID Name; + USHORT Valid; + USHORT Standby; + USHORT Modified; + USHORT PageTables; +} SYSTEM_MEMORY_USAGE, *PSYSTEM_MEMORY_USAGE; + +typedef struct _SYSTEM_MEMORY_USAGE_INFORMATION { + ULONG Reserved; + PVOID EndOfData; + SYSTEM_MEMORY_USAGE MemoryUsage[1]; +} SYSTEM_MEMORY_USAGE_INFORMATION, *PSYSTEM_MEMORY_USAGE_INFORMATION; + +NTOSAPI +NTSTATUS +NTAPI +NtQuerySystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN OUT PVOID SystemInformation, + IN ULONG SystemInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwQuerySystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN OUT PVOID SystemInformation, + IN ULONG SystemInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetSystemInformation( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN OUT PVOID SystemInformation, + IN ULONG SystemInformationLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwQuerySystemEnvironmentValue( + IN PUNICODE_STRING Name, + OUT PVOID Value, + IN ULONG ValueLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetSystemEnvironmentValue( + IN PUNICODE_STRING Name, + IN PUNICODE_STRING Value); + +typedef enum _SHUTDOWN_ACTION { + ShutdownNoReboot, + ShutdownReboot, + ShutdownPowerOff +} SHUTDOWN_ACTION; + +NTOSAPI +NTSTATUS +NTAPI +NtShutdownSystem( + IN SHUTDOWN_ACTION Action); + +typedef enum _DEBUG_CONTROL_CODE { + DebugGetTraceInformation = 1, + DebugSetInternalBreakpoint, + DebugSetSpecialCall, + DebugClearSpecialCalls, + DebugQuerySpecialCalls, + DebugDbgBreakPoint, + DebugMaximum +} DEBUG_CONTROL_CODE; + + +NTOSAPI +NTSTATUS +NTAPI +ZwSystemDebugControl( + IN DEBUG_CONTROL_CODE ControlCode, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength, + OUT PULONG ReturnLength OPTIONAL); + + + +/* Objects, Object directories, and symbolic links */ + +typedef enum _OBJECT_INFORMATION_CLASS { + ObjectBasicInformation, + ObjectNameInformation, + ObjectTypeInformation, + ObjectAllTypesInformation, + ObjectHandleInformation +} OBJECT_INFORMATION_CLASS; + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryObject( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + OUT PVOID ObjectInformation, + IN ULONG ObjectInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetInformationObject( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + IN PVOID ObjectInformation, + IN ULONG ObjectInformationLength); + +/* OBJECT_BASIC_INFORMATION.Attributes constants */ +/* also in winbase.h */ +#define HANDLE_FLAG_INHERIT 0x01 +#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02 +/* end winbase.h */ +#define PERMANENT 0x10 +#define EXCLUSIVE 0x20 + +typedef struct _OBJECT_BASIC_INFORMATION { + ULONG Attributes; + ACCESS_MASK GrantedAccess; + ULONG HandleCount; + ULONG PointerCount; + ULONG PagedPoolUsage; + ULONG NonPagedPoolUsage; + ULONG Reserved[3]; + ULONG NameInformationLength; + ULONG TypeInformationLength; + ULONG SecurityDescriptorLength; + LARGE_INTEGER CreateTime; +} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; +#if 0 +/* FIXME: Enable later */ +typedef struct _OBJECT_TYPE_INFORMATION { + UNICODE_STRING Name; + ULONG ObjectCount; + ULONG HandleCount; + ULONG Reserved1[4]; + ULONG PeakObjectCount; + ULONG PeakHandleCount; + ULONG Reserved2[4]; + ULONG InvalidAttributes; + GENERIC_MAPPING GenericMapping; + ULONG ValidAccess; + UCHAR Unknown; + BOOLEAN MaintainHandleDatabase; + POOL_TYPE PoolType; + ULONG PagedPoolUsage; + ULONG NonPagedPoolUsage; +} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; + +typedef struct _OBJECT_ALL_TYPES_INFORMATION { + ULONG NumberOfTypes; + OBJECT_TYPE_INFORMATION TypeInformation; +} OBJECT_ALL_TYPES_INFORMATION, *POBJECT_ALL_TYPES_INFORMATION; +#endif +typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION { + BOOLEAN Inherit; + BOOLEAN ProtectFromClose; +} OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION; + +NTOSAPI +NTSTATUS +NTAPI +NtDuplicateObject( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN HANDLE TargetProcessHandle, + OUT PHANDLE TargetHandle OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG Attributes, + IN ULONG Options); + +NTOSAPI +NTSTATUS +NTAPI +ZwDuplicateObject( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN HANDLE TargetProcessHandle, + OUT PHANDLE TargetHandle OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG Attributes, + IN ULONG Options); + +NTOSAPI +NTSTATUS +NTAPI +NtQuerySecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG SecurityDescriptorLength, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwQuerySecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG SecurityDescriptorLength, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +NtSetSecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetSecurityObject( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor); + +NTOSAPI +NTSTATUS +NTAPI +ZwOpenDirectoryObject( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryDirectoryObject( + IN HANDLE DirectoryHandle, + OUT PVOID Buffer, + IN ULONG BufferLength, + IN BOOLEAN ReturnSingleEntry, + IN BOOLEAN RestartScan, + IN OUT PULONG Context, + OUT PULONG ReturnLength OPTIONAL); + +typedef struct _DIRECTORY_BASIC_INFORMATION { + UNICODE_STRING ObjectName; + UNICODE_STRING ObjectTypeName; +} DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION; + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateSymbolicLinkObject( + OUT PHANDLE SymbolicLinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PUNICODE_STRING TargetName); + + + + +/* Virtual memory */ + +typedef enum _MEMORY_INFORMATION_CLASS { +MemoryBasicInformation, +MemoryWorkingSetList, +MemorySectionName, +MemoryBasicVlmInformation +} MEMORY_INFORMATION_CLASS; + +NTOSAPI +NTSTATUS +NTAPI +NtAllocateVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN OUT PULONG AllocationSize, + IN ULONG AllocationType, + IN ULONG Protect); + +NTOSAPI +NTSTATUS +NTAPI +ZwAllocateVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN OUT PULONG AllocationSize, + IN ULONG AllocationType, + IN ULONG Protect); + +NTOSAPI +NTSTATUS +NTAPI +NtFreeVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG FreeSize, + IN ULONG FreeType); + +NTOSAPI +NTSTATUS +NTAPI +ZwFreeVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG FreeSize, + IN ULONG FreeType); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN MEMORY_INFORMATION_CLASS MemoryInformationClass, + OUT PVOID MemoryInformation, + IN ULONG MemoryInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +/* MEMORY_WORKING_SET_LIST.WorkingSetList constants */ +#define WSLE_PAGE_READONLY 0x001 +#define WSLE_PAGE_EXECUTE 0x002 +#define WSLE_PAGE_READWRITE 0x004 +#define WSLE_PAGE_EXECUTE_READ 0x003 +#define WSLE_PAGE_WRITECOPY 0x005 +#define WSLE_PAGE_EXECUTE_READWRITE 0x006 +#define WSLE_PAGE_EXECUTE_WRITECOPY 0x007 +#define WSLE_PAGE_SHARE_COUNT_MASK 0x0E0 +#define WSLE_PAGE_SHAREABLE 0x100 + +typedef struct _MEMORY_WORKING_SET_LIST { + ULONG NumberOfPages; + ULONG WorkingSetList[1]; +} MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST; + +typedef struct _MEMORY_SECTION_NAME { + UNICODE_STRING SectionFileName; +} MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME; + +/* Zw[Lock|Unlock]VirtualMemory.LockType constants */ +#define LOCK_VM_IN_WSL 0x01 +#define LOCK_VM_IN_RAM 0x02 + +NTOSAPI +NTSTATUS +NTAPI +ZwLockVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG LockSize, + IN ULONG LockType); + +NTOSAPI +NTSTATUS +NTAPI +ZwUnlockVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG LockSize, + IN ULONG LockType); + +NTOSAPI +NTSTATUS +NTAPI +ZwReadVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + OUT PVOID Buffer, + IN ULONG BufferLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwWriteVirtualMemory( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN PVOID Buffer, + IN ULONG BufferLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwProtectVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG ProtectSize, + IN ULONG NewProtect, + OUT PULONG OldProtect); + +NTOSAPI +NTSTATUS +NTAPI +ZwFlushVirtualMemory( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG FlushSize, + OUT PIO_STATUS_BLOCK IoStatusBlock); + +NTOSAPI +NTSTATUS +NTAPI +ZwAllocateUserPhysicalPages( + IN HANDLE ProcessHandle, + IN PULONG NumberOfPages, + OUT PULONG PageFrameNumbers); + +NTOSAPI +NTSTATUS +NTAPI +ZwFreeUserPhysicalPages( + IN HANDLE ProcessHandle, + IN OUT PULONG NumberOfPages, + IN PULONG PageFrameNumbers); + +NTOSAPI +NTSTATUS +NTAPI +ZwMapUserPhysicalPages( + IN PVOID BaseAddress, + IN PULONG NumberOfPages, + IN PULONG PageFrameNumbers); + +NTOSAPI +NTSTATUS +NTAPI +ZwMapUserPhysicalPagesScatter( + IN PVOID *BaseAddresses, + IN PULONG NumberOfPages, + IN PULONG PageFrameNumbers); + +NTOSAPI +NTSTATUS +NTAPI +ZwGetWriteWatch( + IN HANDLE ProcessHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN ULONG RegionSize, + OUT PULONG Buffer, + IN OUT PULONG BufferEntries, + OUT PULONG Granularity); + +NTOSAPI +NTSTATUS +NTAPI +ZwResetWriteWatch( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN ULONG RegionSize); + + + + +/* Sections */ + +typedef enum _SECTION_INFORMATION_CLASS { + SectionBasicInformation, + SectionImageInformation +} SECTION_INFORMATION_CLASS; + +NTOSAPI +NTSTATUS +NTAPI +NtCreateSection( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PLARGE_INTEGER SectionSize OPTIONAL, + IN ULONG Protect, + IN ULONG Attributes, + IN HANDLE FileHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateSection( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PLARGE_INTEGER SectionSize OPTIONAL, + IN ULONG Protect, + IN ULONG Attributes, + IN HANDLE FileHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwQuerySection( + IN HANDLE SectionHandle, + IN SECTION_INFORMATION_CLASS SectionInformationClass, + OUT PVOID SectionInformation, + IN ULONG SectionInformationLength, + OUT PULONG ResultLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwExtendSection( + IN HANDLE SectionHandle, + IN PLARGE_INTEGER SectionSize); + +NTOSAPI +NTSTATUS +NTAPI +ZwAreMappedFilesTheSame( + IN PVOID Address1, + IN PVOID Address2); + + + + +/* Threads */ + +typedef struct _USER_STACK { + PVOID FixedStackBase; + PVOID FixedStackLimit; + PVOID ExpandableStackBase; + PVOID ExpandableStackLimit; + PVOID ExpandableStackBottom; +} USER_STACK, *PUSER_STACK; + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateThread( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ProcessHandle, + OUT PCLIENT_ID ClientId, + IN PCONTEXT ThreadContext, + IN PUSER_STACK UserStack, + IN BOOLEAN CreateSuspended); + +NTOSAPI +NTSTATUS +NTAPI +NtOpenThread( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId); + +NTOSAPI +NTSTATUS +NTAPI +ZwOpenThread( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId); + +NTOSAPI +NTSTATUS +NTAPI +ZwTerminateThread( + IN HANDLE ThreadHandle OPTIONAL, + IN NTSTATUS ExitStatus); + +NTOSAPI +NTSTATUS +NTAPI +NtQueryInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +NtSetInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + IN PVOID ThreadInformation, + IN ULONG ThreadInformationLength); + +typedef struct _THREAD_BASIC_INFORMATION { + NTSTATUS ExitStatus; + PNT_TIB TebBaseAddress; + CLIENT_ID ClientId; + KAFFINITY AffinityMask; + KPRIORITY Priority; + KPRIORITY BasePriority; +} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; + +typedef struct _KERNEL_USER_TIMES { + LARGE_INTEGER CreateTime; + LARGE_INTEGER ExitTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; +} KERNEL_USER_TIMES, *PKERNEL_USER_TIMES; + +NTOSAPI +NTSTATUS +NTAPI +ZwSuspendThread( + IN HANDLE ThreadHandle, + OUT PULONG PreviousSuspendCount OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwResumeThread( + IN HANDLE ThreadHandle, + OUT PULONG PreviousSuspendCount OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwGetContextThread( + IN HANDLE ThreadHandle, + OUT PCONTEXT Context); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetContextThread( + IN HANDLE ThreadHandle, + IN PCONTEXT Context); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueueApcThread( + IN HANDLE ThreadHandle, + IN PKNORMAL_ROUTINE ApcRoutine, + IN PVOID ApcContext OPTIONAL, + IN PVOID Argument1 OPTIONAL, + IN PVOID Argument2 OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwTestAlert( + VOID); + +NTOSAPI +NTSTATUS +NTAPI +ZwAlertThread( + IN HANDLE ThreadHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwAlertResumeThread( + IN HANDLE ThreadHandle, + OUT PULONG PreviousSuspendCount OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwRegisterThreadTerminatePort( + IN HANDLE PortHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwImpersonateThread( + IN HANDLE ThreadHandle, + IN HANDLE TargetThreadHandle, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos); + +NTOSAPI +NTSTATUS +NTAPI +ZwImpersonateAnonymousToken( + IN HANDLE ThreadHandle); + + + + +/* Processes */ + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE InheritFromProcessHandle, + IN BOOLEAN InheritHandles, + IN HANDLE SectionHandle OPTIONAL, + IN HANDLE DebugPort OPTIONAL, + IN HANDLE ExceptionPort OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE InheritFromProcessHandle, + IN BOOLEAN InheritHandles, + IN HANDLE SectionHandle OPTIONAL, + IN HANDLE DebugPort OPTIONAL, + IN HANDLE ExceptionPort OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwTerminateProcess( + IN HANDLE ProcessHandle OPTIONAL, + IN NTSTATUS ExitStatus); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +NtSetInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + IN PVOID ProcessInformation, + IN ULONG ProcessInformationLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + IN PVOID ProcessInformation, + IN ULONG ProcessInformationLength); + +typedef struct _PROCESS_BASIC_INFORMATION { + NTSTATUS ExitStatus; + PPEB PebBaseAddress; + KAFFINITY AffinityMask; + KPRIORITY BasePriority; + ULONG UniqueProcessId; + ULONG InheritedFromUniqueProcessId; +} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; + +typedef struct _PROCESS_ACCESS_TOKEN { + HANDLE Token; + HANDLE Thread; +} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; + +/* DefaultHardErrorMode constants */ +/* also in winbase.h */ +#define SEM_FAILCRITICALERRORS 0x0001 +#define SEM_NOGPFAULTERRORBOX 0x0002 +#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004 +#define SEM_NOOPENFILEERRORBOX 0x8000 +/* end winbase.h */ +typedef struct _POOLED_USAGE_AND_LIMITS { + ULONG PeakPagedPoolUsage; + ULONG PagedPoolUsage; + ULONG PagedPoolLimit; + ULONG PeakNonPagedPoolUsage; + ULONG NonPagedPoolUsage; + ULONG NonPagedPoolLimit; + ULONG PeakPagefileUsage; + ULONG PagefileUsage; + ULONG PagefileLimit; +} POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS; + +typedef struct _PROCESS_WS_WATCH_INFORMATION { + PVOID FaultingPc; + PVOID FaultingVa; +} PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION; + +/* PROCESS_PRIORITY_CLASS.PriorityClass constants */ +#define PC_IDLE 1 +#define PC_NORMAL 2 +#define PC_HIGH 3 +#define PC_REALTIME 4 +#define PC_BELOW_NORMAL 5 +#define PC_ABOVE_NORMAL 6 + +typedef struct _PROCESS_PRIORITY_CLASS { + BOOLEAN Foreground; + UCHAR PriorityClass; +} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS; + +/* PROCESS_DEVICEMAP_INFORMATION.DriveType constants */ +#define DRIVE_UNKNOWN 0 +#define DRIVE_NO_ROOT_DIR 1 +#define DRIVE_REMOVABLE 2 +#define DRIVE_FIXED 3 +#define DRIVE_REMOTE 4 +#define DRIVE_CDROM 5 +#define DRIVE_RAMDISK 6 + +typedef struct _PROCESS_DEVICEMAP_INFORMATION { + _ANONYMOUS_UNION union { + struct { + HANDLE DirectoryHandle; + } Set; + struct { + ULONG DriveMap; + UCHAR DriveType[32]; + } Query; + } DUMMYUNIONNAME; +} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; + +typedef struct _PROCESS_SESSION_INFORMATION { + ULONG SessionId; +} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION; + +typedef struct _RTL_USER_PROCESS_PARAMETERS { + ULONG AllocationSize; + ULONG Size; + ULONG Flags; + ULONG DebugFlags; + HANDLE hConsole; + ULONG ProcessGroup; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; + UNICODE_STRING CurrentDirectoryName; + HANDLE CurrentDirectoryHandle; + UNICODE_STRING DllPath; + UNICODE_STRING ImagePathName; + UNICODE_STRING CommandLine; + PWSTR Environment; + ULONG dwX; + ULONG dwY; + ULONG dwXSize; + ULONG dwYSize; + ULONG dwXCountChars; + ULONG dwYCountChars; + ULONG dwFillAttribute; + ULONG dwFlags; + ULONG wShowWindow; + UNICODE_STRING WindowTitle; + UNICODE_STRING DesktopInfo; + UNICODE_STRING ShellInfo; + UNICODE_STRING RuntimeInfo; +} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; + +NTSTATUS +NTAPI +RtlCreateProcessParameters( + OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters, + IN PUNICODE_STRING ImageFile, + IN PUNICODE_STRING DllPath OPTIONAL, + IN PUNICODE_STRING CurrentDirectory OPTIONAL, + IN PUNICODE_STRING CommandLine OPTIONAL, + IN PWSTR Environment OPTIONAL, + IN PUNICODE_STRING WindowTitle OPTIONAL, + IN PUNICODE_STRING DesktopInfo OPTIONAL, + IN PUNICODE_STRING ShellInfo OPTIONAL, + IN PUNICODE_STRING RuntimeInfo OPTIONAL); + +NTSTATUS +NTAPI +RtlDestroyProcessParameters( + IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters); + +typedef struct _DEBUG_BUFFER { + HANDLE SectionHandle; + PVOID SectionBase; + PVOID RemoteSectionBase; + ULONG SectionBaseDelta; + HANDLE EventPairHandle; + ULONG Unknown[2]; + HANDLE RemoteThreadHandle; + ULONG InfoClassMask; + ULONG SizeOfInfo; + ULONG AllocatedSize; + ULONG SectionSize; + PVOID ModuleInformation; + PVOID BackTraceInformation; + PVOID HeapInformation; + PVOID LockInformation; + PVOID Reserved[8]; +} DEBUG_BUFFER, *PDEBUG_BUFFER; + +PDEBUG_BUFFER +NTAPI +RtlCreateQueryDebugBuffer( + IN ULONG Size, + IN BOOLEAN EventPair); + +/* RtlQueryProcessDebugInformation.DebugInfoClassMask constants */ +#define PDI_MODULES 0x01 +#define PDI_BACKTRACE 0x02 +#define PDI_HEAPS 0x04 +#define PDI_HEAP_TAGS 0x08 +#define PDI_HEAP_BLOCKS 0x10 +#define PDI_LOCKS 0x20 + +NTSTATUS +NTAPI +RtlQueryProcessDebugInformation( + IN ULONG ProcessId, + IN ULONG DebugInfoClassMask, + IN OUT PDEBUG_BUFFER DebugBuffer); + +NTSTATUS +NTAPI +RtlDestroyQueryDebugBuffer( + IN PDEBUG_BUFFER DebugBuffer); + +/* DEBUG_MODULE_INFORMATION.Flags constants */ +#define LDRP_STATIC_LINK 0x00000002 +#define LDRP_IMAGE_DLL 0x00000004 +#define LDRP_LOAD_IN_PROGRESS 0x00001000 +#define LDRP_UNLOAD_IN_PROGRESS 0x00002000 +#define LDRP_ENTRY_PROCESSED 0x00004000 +#define LDRP_ENTRY_INSERTED 0x00008000 +#define LDRP_CURRENT_LOAD 0x00010000 +#define LDRP_FAILED_BUILTIN_LOAD 0x00020000 +#define LDRP_DONT_CALL_FOR_THREADS 0x00040000 +#define LDRP_PROCESS_ATTACH_CALLED 0x00080000 +#define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000 +#define LDRP_IMAGE_NOT_AT_BASE 0x00200000 +#define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000 + +typedef struct _DEBUG_MODULE_INFORMATION { + ULONG Reserved[2]; + ULONG Base; + ULONG Size; + ULONG Flags; + USHORT Index; + USHORT Unknown; + USHORT LoadCount; + USHORT ModuleNameOffset; + CHAR ImageName[256]; +} DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION; + +typedef struct _DEBUG_HEAP_INFORMATION { + ULONG Base; + ULONG Flags; + USHORT Granularity; + USHORT Unknown; + ULONG Allocated; + ULONG Committed; + ULONG TagCount; + ULONG BlockCount; + ULONG Reserved[7]; + PVOID Tags; + PVOID Blocks; +} DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION; + +typedef struct _DEBUG_LOCK_INFORMATION { + PVOID Address; + USHORT Type; + USHORT CreatorBackTraceIndex; + ULONG OwnerThreadId; + ULONG ActiveCount; + ULONG ContentionCount; + ULONG EntryCount; + ULONG RecursionCount; + ULONG NumberOfSharedWaiters; + ULONG NumberOfExclusiveWaiters; +} DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION; + + + +/* Jobs */ + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateJobObject( + OUT PHANDLE JobHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +NTAPI +ZwOpenJobObject( + OUT PHANDLE JobHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +NTAPI +ZwTerminateJobObject( + IN HANDLE JobHandle, + IN NTSTATUS ExitStatus); + +NTOSAPI +NTSTATUS +NTAPI +ZwAssignProcessToJobObject( + IN HANDLE JobHandle, + IN HANDLE ProcessHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryInformationJobObject( + IN HANDLE JobHandle, + IN JOBOBJECTINFOCLASS JobInformationClass, + OUT PVOID JobInformation, + IN ULONG JobInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetInformationJobObject( + IN HANDLE JobHandle, + IN JOBOBJECTINFOCLASS JobInformationClass, + IN PVOID JobInformation, + IN ULONG JobInformationLength); + + +/* Tokens */ + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateToken( +OUT PHANDLE TokenHandle, +IN ACCESS_MASK DesiredAccess, +IN POBJECT_ATTRIBUTES ObjectAttributes, +IN TOKEN_TYPE Type, +IN PLUID AuthenticationId, +IN PLARGE_INTEGER ExpirationTime, +IN PTOKEN_USER User, +IN PTOKEN_GROUPS Groups, +IN PTOKEN_PRIVILEGES Privileges, +IN PTOKEN_OWNER Owner, +IN PTOKEN_PRIMARY_GROUP PrimaryGroup, +IN PTOKEN_DEFAULT_DACL DefaultDacl, +IN PTOKEN_SOURCE Source +); + +NTOSAPI +NTSTATUS +NTAPI +NtOpenProcessToken( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE TokenHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwOpenProcessToken( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE TokenHandle); + +NTOSAPI +NTSTATUS +NTAPI +NtOpenThreadToken( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + OUT PHANDLE TokenHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwOpenThreadToken( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + OUT PHANDLE TokenHandle); + +NTOSAPI +NTSTATUS +NTAPI +NtDuplicateToken( + IN HANDLE ExistingTokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN EffectiveOnly, + IN TOKEN_TYPE TokenType, + OUT PHANDLE NewTokenHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwDuplicateToken( + IN HANDLE ExistingTokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN EffectiveOnly, + IN TOKEN_TYPE TokenType, + OUT PHANDLE NewTokenHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwFilterToken( + IN HANDLE ExistingTokenHandle, + IN ULONG Flags, + IN PTOKEN_GROUPS SidsToDisable, + IN PTOKEN_PRIVILEGES PrivilegesToDelete, + IN PTOKEN_GROUPS SidsToRestricted, + OUT PHANDLE NewTokenHandle); + +NTOSAPI +NTSTATUS +NTAPI +NtAdjustPrivilegesToken( + IN HANDLE TokenHandle, + IN BOOLEAN DisableAllPrivileges, + IN PTOKEN_PRIVILEGES NewState, + IN ULONG BufferLength, + OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwAdjustPrivilegesToken( + IN HANDLE TokenHandle, + IN BOOLEAN DisableAllPrivileges, + IN PTOKEN_PRIVILEGES NewState, + IN ULONG BufferLength, + OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwAdjustGroupsToken( + IN HANDLE TokenHandle, + IN BOOLEAN ResetToDefault, + IN PTOKEN_GROUPS NewState, + IN ULONG BufferLength, + OUT PTOKEN_GROUPS PreviousState OPTIONAL, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +NtQueryInformationToken( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryInformationToken( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetInformationToken( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + IN PVOID TokenInformation, + IN ULONG TokenInformationLength); + + + + +/* Time */ + +NTOSAPI +NTSTATUS +NTAPI +ZwQuerySystemTime( + OUT PLARGE_INTEGER CurrentTime); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetSystemTime( + IN PLARGE_INTEGER NewTime, + OUT PLARGE_INTEGER OldTime OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryPerformanceCounter( + OUT PLARGE_INTEGER PerformanceCount, + OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryPerformanceCounter( + OUT PLARGE_INTEGER PerformanceCount, + OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryTimerResolution( + OUT PULONG CoarsestResolution, + OUT PULONG FinestResolution, + OUT PULONG ActualResolution); + +NTOSAPI +NTSTATUS +NTAPI +ZwDelayExecution( + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Interval); + +NTOSAPI +NTSTATUS +NTAPI +ZwYieldExecution( + VOID); + +NTOSAPI +ULONG +NTAPI +ZwGetTickCount( + VOID); + + + + +/* Execution profiling */ + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateProfile( + OUT PHANDLE ProfileHandle, + IN HANDLE ProcessHandle, + IN PVOID Base, + IN ULONG Size, + IN ULONG BucketShift, + IN PULONG Buffer, + IN ULONG BufferLength, + IN KPROFILE_SOURCE Source, + IN ULONG ProcessorMask); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetIntervalProfile( + IN ULONG Interval, + IN KPROFILE_SOURCE Source); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryIntervalProfile( + IN KPROFILE_SOURCE Source, + OUT PULONG Interval); + +NTOSAPI +NTSTATUS +NTAPI +ZwStartProfile( + IN HANDLE ProfileHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwStopProfile( + IN HANDLE ProfileHandle); + + + + +/* Local Procedure Call (LPC) */ + +typedef struct _LPC_MESSAGE { + USHORT DataSize; + USHORT MessageSize; + USHORT MessageType; + USHORT VirtualRangesOffset; + CLIENT_ID ClientId; + ULONG MessageId; + ULONG SectionSize; + UCHAR Data[ANYSIZE_ARRAY]; +} LPC_MESSAGE, *PLPC_MESSAGE; + +typedef enum _LPC_TYPE { + LPC_NEW_MESSAGE, + LPC_REQUEST, + LPC_REPLY, + LPC_DATAGRAM, + LPC_LOST_REPLY, + LPC_PORT_CLOSED, + LPC_CLIENT_DIED, + LPC_EXCEPTION, + LPC_DEBUG_EVENT, + LPC_ERROR_EVENT, + LPC_CONNECTION_REQUEST, + LPC_CONNECTION_REFUSED, + LPC_MAXIMUM +} LPC_TYPE; + +typedef struct _LPC_SECTION_WRITE { + ULONG Length; + HANDLE SectionHandle; + ULONG SectionOffset; + ULONG ViewSize; + PVOID ViewBase; + PVOID TargetViewBase; +} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE; + +typedef struct _LPC_SECTION_READ { + ULONG Length; + ULONG ViewSize; + PVOID ViewBase; +} LPC_SECTION_READ, *PLPC_SECTION_READ; + +NTOSAPI +NTSTATUS +NTAPI +ZwCreatePort( + OUT PHANDLE PortHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG MaxDataSize, + IN ULONG MaxMessageSize, + IN ULONG Reserved); + +NTOSAPI +NTSTATUS +NTAPI +ZwCreateWaitablePort( + OUT PHANDLE PortHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG MaxDataSize, + IN ULONG MaxMessageSize, + IN ULONG Reserved); + +NTOSAPI +NTSTATUS +NTAPI +NtConnectPort( + OUT PHANDLE PortHandle, + IN PUNICODE_STRING PortName, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL, + IN OUT PLPC_SECTION_READ ReadSection OPTIONAL, + OUT PULONG MaxMessageSize OPTIONAL, + IN OUT PVOID ConnectData OPTIONAL, + IN OUT PULONG ConnectDataLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwConnectPort( + OUT PHANDLE PortHandle, + IN PUNICODE_STRING PortName, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL, + IN OUT PLPC_SECTION_READ ReadSection OPTIONAL, + OUT PULONG MaxMessageSize OPTIONAL, + IN OUT PVOID ConnectData OPTIONAL, + IN OUT PULONG ConnectDataLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwConnectPort( + OUT PHANDLE PortHandle, + IN PUNICODE_STRING PortName, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL, + IN OUT PLPC_SECTION_READ ReadSection OPTIONAL, + OUT PULONG MaxMessageSize OPTIONAL, + IN OUT PVOID ConnectData OPTIONAL, + IN OUT PULONG ConnectDataLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwListenPort( + IN HANDLE PortHandle, + OUT PLPC_MESSAGE Message); + +NTOSAPI +NTSTATUS +NTAPI +ZwAcceptConnectPort( + OUT PHANDLE PortHandle, + IN ULONG PortIdentifier, + IN PLPC_MESSAGE Message, + IN BOOLEAN Accept, + IN OUT PLPC_SECTION_WRITE WriteSection OPTIONAL, + IN OUT PLPC_SECTION_READ ReadSection OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwCompleteConnectPort( + IN HANDLE PortHandle); + +NTOSAPI +NTSTATUS +NTAPI +NtRequestPort( + IN HANDLE PortHandle, + IN PLPC_MESSAGE RequestMessage); + +NTOSAPI +NTSTATUS +NTAPI +NtRequestWaitReplyPort( + IN HANDLE PortHandle, + IN PLPC_MESSAGE RequestMessage, + OUT PLPC_MESSAGE ReplyMessage); + +NTOSAPI +NTSTATUS +NTAPI +ZwRequestWaitReplyPort( + IN HANDLE PortHandle, + IN PLPC_MESSAGE RequestMessage, + OUT PLPC_MESSAGE ReplyMessage); + +NTOSAPI +NTSTATUS +NTAPI +ZwReplyPort( + IN HANDLE PortHandle, + IN PLPC_MESSAGE ReplyMessage); + +NTOSAPI +NTSTATUS +NTAPI +ZwReplyWaitReplyPort( + IN HANDLE PortHandle, + IN OUT PLPC_MESSAGE ReplyMessage); + +NTOSAPI +NTSTATUS +NTAPI +ZwReplyWaitReceivePort( + IN HANDLE PortHandle, + OUT PULONG PortIdentifier OPTIONAL, + IN PLPC_MESSAGE ReplyMessage OPTIONAL, + OUT PLPC_MESSAGE Message); + +NTOSAPI +NTSTATUS +NTAPI +ZwReplyWaitReceivePortEx( + IN HANDLE PortHandle, + OUT PULONG PortIdentifier OPTIONAL, + IN PLPC_MESSAGE ReplyMessage OPTIONAL, + OUT PLPC_MESSAGE Message, + IN PLARGE_INTEGER Timeout); + +NTOSAPI +NTSTATUS +NTAPI +ZwReadRequestData( + IN HANDLE PortHandle, + IN PLPC_MESSAGE Message, + IN ULONG Index, + OUT PVOID Buffer, + IN ULONG BufferLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwWriteRequestData( + IN HANDLE PortHandle, + IN PLPC_MESSAGE Message, + IN ULONG Index, + IN PVOID Buffer, + IN ULONG BufferLength, + OUT PULONG ReturnLength OPTIONAL); + +typedef enum _PORT_INFORMATION_CLASS { + PortBasicInformation +} PORT_INFORMATION_CLASS; + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryInformationPort( + IN HANDLE PortHandle, + IN PORT_INFORMATION_CLASS PortInformationClass, + OUT PVOID PortInformation, + IN ULONG PortInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwImpersonateClientOfPort( + IN HANDLE PortHandle, + IN PLPC_MESSAGE Message); + + + + +/* Files */ + +NTOSAPI +NTSTATUS +NTAPI +NtDeleteFile( + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +NTAPI +ZwDeleteFile( + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +NTAPI +ZwFlushBuffersFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock); + +NTOSAPI +NTSTATUS +NTAPI +ZwCancelIoFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock); + +NTOSAPI +NTSTATUS +NTAPI +ZwReadFileScatter( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PFILE_SEGMENT_ELEMENT Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwWriteFileGather( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PFILE_SEGMENT_ELEMENT Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + + + + +/* Registry keys */ + +NTOSAPI +NTSTATUS +NTAPI +ZwSaveKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwSaveMergedKeys( + IN HANDLE KeyHandle1, + IN HANDLE KeyHandle2, + IN HANDLE FileHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwRestoreKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Flags); + +NTOSAPI +NTSTATUS +NTAPI +ZwLoadKey( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN POBJECT_ATTRIBUTES FileObjectAttributes); + +NTOSAPI +NTSTATUS +NTAPI +ZwLoadKey2( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN POBJECT_ATTRIBUTES FileObjectAttributes, + IN ULONG Flags); + +NTOSAPI +NTSTATUS +NTAPI +ZwUnloadKey( + IN POBJECT_ATTRIBUTES KeyObjectAttributes); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryOpenSubKeys( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + OUT PULONG NumberOfKeys); + +NTOSAPI +NTSTATUS +NTAPI +ZwReplaceKey( + IN POBJECT_ATTRIBUTES NewFileObjectAttributes, + IN HANDLE KeyHandle, + IN POBJECT_ATTRIBUTES OldFileObjectAttributes); + +typedef enum _KEY_SET_INFORMATION_CLASS { + KeyLastWriteTimeInformation +} KEY_SET_INFORMATION_CLASS; + +NTOSAPI +NTSTATUS +NTAPI +ZwSetInformationKey( + IN HANDLE KeyHandle, + IN KEY_SET_INFORMATION_CLASS KeyInformationClass, + IN PVOID KeyInformation, + IN ULONG KeyInformationLength); + +typedef struct _KEY_LAST_WRITE_TIME_INFORMATION { + LARGE_INTEGER LastWriteTime; +} KEY_LAST_WRITE_TIME_INFORMATION, *PKEY_LAST_WRITE_TIME_INFORMATION; + +typedef struct _KEY_NAME_INFORMATION { + ULONG NameLength; + WCHAR Name[1]; +} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION; + +NTOSAPI +NTSTATUS +NTAPI +ZwNotifyChangeKey( + IN HANDLE KeyHandle, + IN HANDLE EventHandle OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG NotifyFilter, + IN BOOLEAN WatchSubtree, + IN PVOID Buffer, + IN ULONG BufferLength, + IN BOOLEAN Asynchronous); + +/* ZwNotifyChangeMultipleKeys.Flags constants */ +#define REG_MONITOR_SINGLE_KEY 0x00 +#define REG_MONITOR_SECOND_KEY 0x01 + +NTOSAPI +NTSTATUS +NTAPI +ZwNotifyChangeMultipleKeys( + IN HANDLE KeyHandle, + IN ULONG Flags, + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN HANDLE EventHandle OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG NotifyFilter, + IN BOOLEAN WatchSubtree, + IN PVOID Buffer, + IN ULONG BufferLength, + IN BOOLEAN Asynchronous); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryMultipleValueKey( + IN HANDLE KeyHandle, + IN OUT PKEY_VALUE_ENTRY ValueList, + IN ULONG NumberOfValues, + OUT PVOID Buffer, + IN OUT PULONG Length, + OUT PULONG ReturnLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwInitializeRegistry( + IN BOOLEAN Setup); + + + + +/* Security and auditing */ + +NTOSAPI +NTSTATUS +NTAPI +ZwPrivilegeCheck( + IN HANDLE TokenHandle, + IN PPRIVILEGE_SET RequiredPrivileges, + OUT PBOOLEAN Result); + +NTOSAPI +NTSTATUS +NTAPI +ZwPrivilegeObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN HANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted); + +NTOSAPI +NTSTATUS +NTAPI +ZwPrivilegeObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN HANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted); + +NTOSAPI +NTSTATUS +NTAPI +ZwAccessCheck( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + IN PPRIVILEGE_SET PrivilegeSet, + IN PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PBOOLEAN AccessStatus); + +NTOSAPI +NTSTATUS +NTAPI +ZwAccessCheckAndAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PBOOLEAN AccessStatus, + OUT PBOOLEAN GenerateOnClose); + +NTOSAPI +NTSTATUS +NTAPI +ZwAccessCheckByType( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID PrincipalSelfSid, + IN HANDLE TokenHandle, + IN ULONG DesiredAccess, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN PPRIVILEGE_SET PrivilegeSet, + IN PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PULONG AccessStatus); + +typedef enum _AUDIT_EVENT_TYPE { + AuditEventObjectAccess, + AuditEventDirectoryServiceAccess +} AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE; + +NTOSAPI +NTSTATUS +NTAPI +ZwAccessCheckByTypeAndAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PULONG AccessStatus, + OUT PBOOLEAN GenerateOnClose); + +NTOSAPI +NTSTATUS +NTAPI +ZwAccessCheckByTypeResultList( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID PrincipalSelfSid, + IN HANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN PPRIVILEGE_SET PrivilegeSet, + IN PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccessList, + OUT PULONG AccessStatusList); + +NTOSAPI +NTSTATUS +NTAPI +ZwAccessCheckByTypeResultListAndAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccessList, + OUT PULONG AccessStatusList, + OUT PULONG GenerateOnClose); + +NTOSAPI +NTSTATUS +NTAPI +ZwAccessCheckByTypeResultListAndAuditAlarmByHandle( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN HANDLE TokenHandle, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccessList, + OUT PULONG AccessStatusList, + OUT PULONG GenerateOnClose); + +NTOSAPI +NTSTATUS +NTAPI +ZwOpenObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID *HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN ACCESS_MASK GrantedAccess, + IN PPRIVILEGE_SET Privileges OPTIONAL, + IN BOOLEAN ObjectCreation, + IN BOOLEAN AccessGranted, + OUT PBOOLEAN GenerateOnClose); + +NTOSAPI +NTSTATUS +NTAPI +ZwCloseObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN BOOLEAN GenerateOnClose); + +NTOSAPI +NTSTATUS +NTAPI +ZwDeleteObjectAuditAlarm( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN BOOLEAN GenerateOnClose); + + + + +/* Plug and play and power management */ + +NTOSAPI +NTSTATUS +NTAPI +ZwRequestWakeupLatency( + IN LATENCY_TIME Latency); + +NTOSAPI +NTSTATUS +NTAPI +ZwRequestDeviceWakeup( + IN HANDLE DeviceHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwCancelDeviceWakeupRequest( + IN HANDLE DeviceHandle); + +NTOSAPI +BOOLEAN +NTAPI +ZwIsSystemResumeAutomatic( + VOID); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetThreadExecutionState( + IN EXECUTION_STATE ExecutionState, + OUT PEXECUTION_STATE PreviousExecutionState); + +NTOSAPI +NTSTATUS +NTAPI +ZwGetDevicePowerState( + IN HANDLE DeviceHandle, + OUT PDEVICE_POWER_STATE DevicePowerState); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetSystemPowerState( + IN POWER_ACTION SystemAction, + IN SYSTEM_POWER_STATE MinSystemState, + IN ULONG Flags); + +NTOSAPI +NTSTATUS +NTAPI +ZwInitiatePowerAction( + IN POWER_ACTION SystemAction, + IN SYSTEM_POWER_STATE MinSystemState, + IN ULONG Flags, + IN BOOLEAN Asynchronous); + +NTOSAPI +NTSTATUS +NTAPI +ZwPowerInformation( + IN POWER_INFORMATION_LEVEL PowerInformationLevel, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwPlugPlayControl( + IN ULONG ControlCode, + IN OUT PVOID Buffer, + IN ULONG BufferLength); + +NTOSAPI +NTSTATUS +NTAPI +ZwGetPlugPlayEvent( + IN ULONG Reserved1, + IN ULONG Reserved2, + OUT PVOID Buffer, + IN ULONG BufferLength); + + + + +/* Miscellany */ + +NTOSAPI +NTSTATUS +NTAPI +ZwRaiseException( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PCONTEXT Context, + IN BOOLEAN SearchFrames); + +NTOSAPI +NTSTATUS +NTAPI +ZwContinue( + IN PCONTEXT Context, + IN BOOLEAN TestAlert); + +NTOSAPI +NTSTATUS +NTAPI +ZwW32Call( + IN ULONG RoutineIndex, + IN PVOID Argument, + IN ULONG ArgumentLength, + OUT PVOID *Result OPTIONAL, + OUT PULONG ResultLength OPTIONAL); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetLowWaitHighThread( + VOID); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetHighWaitLowThread( + VOID); + +NTOSAPI +NTSTATUS +NTAPI +ZwLoadDriver( + IN PUNICODE_STRING DriverServiceName); + +NTOSAPI +NTSTATUS +NTAPI +ZwUnloadDriver( + IN PUNICODE_STRING DriverServiceName); + +NTOSAPI +NTSTATUS +NTAPI +ZwFlushInstructionCache( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress OPTIONAL, + IN ULONG FlushSize); + +NTOSAPI +NTSTATUS +NTAPI +ZwFlushWriteBuffer( + VOID); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryDefaultLocale( + IN BOOLEAN ThreadOrSystem, + OUT PLCID Locale); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetDefaultLocale( + IN BOOLEAN ThreadOrSystem, + IN LCID Locale); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryDefaultUILanguage( + OUT PLANGID LanguageId); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetDefaultUILanguage( + IN LANGID LanguageId); + +NTOSAPI +NTSTATUS +NTAPI +ZwQueryInstallUILanguage( + OUT PLANGID LanguageId); + +NTOSAPI +NTSTATUS +NTAPI +NtAllocateLocallyUniqueId( + OUT PLUID Luid); + +NTOSAPI +NTSTATUS +NTAPI +NtAllocateUuids( + OUT PLARGE_INTEGER UuidLastTimeAllocated, + OUT PULONG UuidDeltaTime, + OUT PULONG UuidSequenceNumber, + OUT PUCHAR UuidSeed); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetUuidSeed( + IN PUCHAR UuidSeed); + +typedef enum _HARDERROR_RESPONSE_OPTION { + OptionAbortRetryIgnore, + OptionOk, + OptionOkCancel, + OptionRetryCancel, + OptionYesNo, + OptionYesNoCancel, + OptionShutdownSystem +} HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION; + +typedef enum _HARDERROR_RESPONSE { + ResponseReturnToCaller, + ResponseNotHandled, + ResponseAbort, + ResponseCancel, + ResponseIgnore, + ResponseNo, + ResponseOk, + ResponseRetry, + ResponseYes +} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; + +NTOSAPI +NTSTATUS +NTAPI +ZwRaiseHardError( + IN NTSTATUS Status, + IN ULONG NumberOfArguments, + IN ULONG StringArgumentsMask, + IN PULONG Arguments, + IN HARDERROR_RESPONSE_OPTION ResponseOption, + OUT PHARDERROR_RESPONSE Response); + +NTOSAPI +NTSTATUS +NTAPI +ZwSetDefaultHardErrorPort( + IN HANDLE PortHandle); + +NTOSAPI +NTSTATUS +NTAPI +ZwDisplayString( + IN PUNICODE_STRING String); + +NTOSAPI +NTSTATUS +NTAPI +ZwCreatePagingFile( + IN PUNICODE_STRING FileName, + IN PULARGE_INTEGER InitialSize, + IN PULARGE_INTEGER MaximumSize, + IN ULONG Reserved); + +typedef USHORT RTL_ATOM, *PRTL_ATOM; + +NTOSAPI +NTSTATUS +NTAPI +NtAddAtom( + IN PWSTR AtomName, + IN ULONG AtomNameLength, + OUT PRTL_ATOM Atom); + +NTOSAPI +NTSTATUS +NTAPI +NtFindAtom( + IN PWSTR AtomName, + IN ULONG AtomNameLength, + OUT PRTL_ATOM Atom); + +NTOSAPI +NTSTATUS +NTAPI +NtDeleteAtom( + IN RTL_ATOM Atom); + +typedef enum _ATOM_INFORMATION_CLASS { + AtomBasicInformation, + AtomListInformation +} ATOM_INFORMATION_CLASS; + +NTOSAPI +NTSTATUS +NTAPI +NtQueryInformationAtom( + IN RTL_ATOM Atom, + IN ATOM_INFORMATION_CLASS AtomInformationClass, + OUT PVOID AtomInformation, + IN ULONG AtomInformationLength, + OUT PULONG ReturnLength OPTIONAL); + +typedef struct _ATOM_BASIC_INFORMATION { + USHORT ReferenceCount; + USHORT Pinned; + USHORT NameLength; + WCHAR Name[1]; +} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; + +typedef struct _ATOM_LIST_INFORMATION { + ULONG NumberOfAtoms; + ATOM Atoms[1]; +} ATOM_LIST_INFORMATION, *PATOM_LIST_INFORMATION; + +NTOSAPI +NTSTATUS +NTAPI +ZwSetLdtEntries( + IN ULONG Selector1, + IN LDT_ENTRY LdtEntry1, + IN ULONG Selector2, + IN LDT_ENTRY LdtEntry2); + +NTOSAPI +NTSTATUS +NTAPI +NtVdmControl( + IN ULONG ControlCode, + IN PVOID ControlData); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTAPI_H */ diff --git a/reactos/w32api/include/ddk/ntdd8042.h b/reactos/w32api/include/ddk/ntdd8042.h new file mode 100644 index 00000000000..7696c8e2734 --- /dev/null +++ b/reactos/w32api/include/ddk/ntdd8042.h @@ -0,0 +1,218 @@ +/* + * ntdd8042.h + * + * i8042 IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDD8042_H +#define __NTDD8042_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddkbd.h" +#include "ntddmou.h" + + +#define IOCTL_INTERNAL_I8042_CONTROLLER_WRITE_BUFFER \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF2, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_I8042_KEYBOARD_START_INFORMATION \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_I8042_KEYBOARD_WRITE_BUFFER \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_I8042_HOOK_MOUSE \ + CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_I8042_MOUSE_START_INFORMATION \ + CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER \ + CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define I8042_POWER_SYS_BUTTON 0x0001 +#define I8042_SLEEP_SYS_BUTTON 0x0002 +#define I8042_WAKE_SYS_BUTTON 0x0004 +#define I8042_SYS_BUTTONS (I8042_POWER_SYS_BUTTON | \ + I8042_SLEEP_SYS_BUTTON | \ + I8042_WAKE_SYS_BUTTON) + +typedef enum _TRANSMIT_STATE { + Idle = 0, + SendingBytes +} TRANSMIT_STATE; + +typedef struct _OUTPUT_PACKET { + PUCHAR Bytes; + ULONG CurrentByte; + ULONG ByteCount; + TRANSMIT_STATE State; +} OUTPUT_PACKET, *POUTPUT_PACKET; + +typedef enum _KEYBOARD_SCAN_STATE { + Normal, + GotE0, + GotE1 +} KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE; + +typedef enum _MOUSE_STATE { + MouseIdle, + XMovement, + YMovement, + ZMovement, + MouseExpectingACK, + MouseResetting +} MOUSE_STATE, *PMOUSE_STATE; + +typedef enum _MOUSE_RESET_SUBSTATE { + ExpectingReset, + ExpectingResetId, + ExpectingGetDeviceIdACK, + ExpectingGetDeviceIdValue, + ExpectingSetResolutionDefaultACK, + ExpectingSetResolutionDefaultValueACK, + ExpectingSetResolutionACK, + ExpectingSetResolutionValueACK, + ExpectingSetScaling1to1ACK, + ExpectingSetScaling1to1ACK2, + ExpectingSetScaling1to1ACK3, + ExpectingReadMouseStatusACK, + ExpectingReadMouseStatusByte1, + ExpectingReadMouseStatusByte2, + ExpectingReadMouseStatusByte3, + StartPnPIdDetection, + ExpectingLoopSetSamplingRateACK, + ExpectingLoopSetSamplingRateValueACK, + ExpectingPnpIdByte1, + ExpectingPnpIdByte2, + ExpectingPnpIdByte3, + ExpectingPnpIdByte4, + ExpectingPnpIdByte5, + ExpectingPnpIdByte6, + ExpectingPnpIdByte7, + EnableWheel, + Enable5Buttons, + ExpectingGetDeviceId2ACK, + ExpectingGetDeviceId2Value, + ExpectingSetSamplingRateACK, + ExpectingSetSamplingRateValueACK, + ExpectingEnableACK, + ExpectingFinalResolutionACK, + ExpectingFinalResolutionValueACK, + ExpectingGetDeviceIdDetectACK, + ExpectingGetDeviceIdDetectValue, + CustomHookStateMinimum = 100, + CustomHookStateMaximum = 999, + I8042ReservedMinimum = 1000 +} MOUSE_RESET_SUBSTATE, *PMOUSE_RESET_SUBSTATE; + +typedef struct _INTERNAL_I8042_START_INFORMATION { + ULONG Size; + PKINTERRUPT InterruptObject; + ULONG Reserved[8]; +} INTERNAL_I8042_START_INFORMATION, *PINTERNAL_I8042_START_INFORMATION; + +typedef VOID DDKAPI +(*PI8042_ISR_WRITE_PORT)( + IN PVOID Context, + IN UCHAR Value); + +typedef VOID DDKAPI +(*PI8042_QUEUE_PACKET)( + IN PVOID Context); + +typedef NTSTATUS DDKAPI +(*PI8042_SYNCH_READ_PORT) ( + IN PVOID Context, + OUT PUCHAR Value, + IN BOOLEAN WaitForACK); + +typedef NTSTATUS DDKAPI +(*PI8042_SYNCH_WRITE_PORT)( + IN PVOID Context, + IN UCHAR Value, + IN BOOLEAN WaitForACK); + + +typedef NTSTATUS DDKAPI +(*PI8042_KEYBOARD_INITIALIZATION_ROUTINE)( + IN PVOID InitializationContext, + IN PVOID SynchFuncContext, + IN PI8042_SYNCH_READ_PORT ReadPort, + IN PI8042_SYNCH_WRITE_PORT WritePort, + OUT PBOOLEAN TurnTranslationOn); + +typedef BOOLEAN DDKAPI +(*PI8042_KEYBOARD_ISR)( + PVOID IsrContext, + PKEYBOARD_INPUT_DATA CurrentInput, + POUTPUT_PACKET CurrentOutput, + UCHAR StatusByte, + PUCHAR Byte, + PBOOLEAN ContinueProcessing, + PKEYBOARD_SCAN_STATE ScanState); + +typedef struct _INTERNAL_I8042_HOOK_KEYBOARD { + OUT PVOID Context; + OUT PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine; + OUT PI8042_KEYBOARD_ISR IsrRoutine; + IN PI8042_ISR_WRITE_PORT IsrWritePort; + IN PI8042_QUEUE_PACKET QueueKeyboardPacket; + IN PVOID CallContext; +} INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD; + +typedef BOOLEAN DDKAPI +(*PI8042_MOUSE_ISR)( + PVOID IsrContext, + PMOUSE_INPUT_DATA CurrentInput, + POUTPUT_PACKET CurrentOutput, + UCHAR StatusByte, + PUCHAR Byte, + PBOOLEAN ContinueProcessing, + PMOUSE_STATE MouseState, + PMOUSE_RESET_SUBSTATE ResetSubState); + +typedef struct _INTERNAL_I8042_HOOK_MOUSE { + OUT PVOID Context; + OUT PI8042_MOUSE_ISR IsrRoutine; + IN PI8042_ISR_WRITE_PORT IsrWritePort; + IN PI8042_QUEUE_PACKET QueueMousePacket; + IN PVOID CallContext; +} INTERNAL_I8042_HOOK_MOUSE, *PINTERNAL_I8042_HOOK_MOUSE; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDD8042_H */ diff --git a/reactos/w32api/include/ddk/ntddbeep.h b/reactos/w32api/include/ddk/ntddbeep.h new file mode 100644 index 00000000000..b82b6274eaf --- /dev/null +++ b/reactos/w32api/include/ddk/ntddbeep.h @@ -0,0 +1,59 @@ +/* + * ntddbeep.h + * + * Beep device IOCTL interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDBEEP_H +#define __NTDDBEEP_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define DD_BEEP_DEVICE_NAME "\\Device\\Beep" +#define DD_BEEP_DEVICE_NAME_U L"\\Device\\Beep" + +#define IOCTL_BEEP_SET \ + CTL_CODE(FILE_DEVICE_BEEP, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) + +typedef struct _BEEP_SET_PARAMETERS { + ULONG Frequency; + ULONG Duration; +} BEEP_SET_PARAMETERS, *PBEEP_SET_PARAMETERS; + +#define BEEP_FREQUENCY_MINIMUM 0x25 +#define BEEP_FREQUENCY_MAXIMUM 0x7FFF + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDBEEP_H */ diff --git a/reactos/w32api/include/ddk/ntddcdrm.h b/reactos/w32api/include/ddk/ntddcdrm.h new file mode 100644 index 00000000000..82bf815c2b4 --- /dev/null +++ b/reactos/w32api/include/ddk/ntddcdrm.h @@ -0,0 +1,352 @@ +/* + * ntddcdrm.h + * + * CDROM IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDCDRM_H +#define __NTDDCDRM_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddstor.h" + + +#define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM + +#define IOCTL_CDROM_CHECK_VERIFY \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_FIND_NEW_DEVICES \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_GET_CONTROL \ + CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_GET_DRIVE_GEOMETRY \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_GET_LAST_SESSION \ + CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_GET_VOLUME \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_PAUSE_AUDIO \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_PLAY_AUDIO_MSF \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_RAW_READ \ + CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS) + +#define IOCTL_CDROM_READ_Q_CHANNEL \ + CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_READ_TOC \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_READ_TOC_EX \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_RESUME_AUDIO \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_SEEK_AUDIO_MSF \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_SET_VOLUME \ + CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_SIMBAD \ + CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CDROM_STOP_AUDIO \ + CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) + + +#define MAXIMUM_NUMBER_TRACKS 100 +#define MAXIMUM_CDROM_SIZE 804 +#define MINIMUM_CDROM_READ_TOC_EX_SIZE 2 + +typedef struct _TRACK_DATA { + UCHAR Reserved; + UCHAR Control : 4; + UCHAR Adr : 4; + UCHAR TrackNumber; + UCHAR Reserved1; + UCHAR Address[4]; +} TRACK_DATA, *PTRACK_DATA; + +/* CDROM_DISK_DATA.DiskData flags */ +#define CDROM_DISK_AUDIO_TRACK 0x00000001 +#define CDROM_DISK_DATA_TRACK 0x00000002 + +typedef struct _CDROM_DISK_DATA { + ULONG DiskData; +} CDROM_DISK_DATA, *PCDROM_DISK_DATA; + +typedef struct _CDROM_PLAY_AUDIO_MSF { + UCHAR StartingM; + UCHAR StartingS; + UCHAR StartingF; + UCHAR EndingM; + UCHAR EndingS; + UCHAR EndingF; +} CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF; + +/* CDROM_READ_TOC_EX.Format constants */ +#define CDROM_READ_TOC_EX_FORMAT_TOC 0x00 +#define CDROM_READ_TOC_EX_FORMAT_SESSION 0x01 +#define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02 +#define CDROM_READ_TOC_EX_FORMAT_PMA 0x03 +#define CDROM_READ_TOC_EX_FORMAT_ATIP 0x04 +#define CDROM_READ_TOC_EX_FORMAT_CDTEXT 0x05 + +typedef struct _CDROM_READ_TOC_EX { + UCHAR Format : 4; + UCHAR Reserved1 : 3; + UCHAR Msf : 1; + UCHAR SessionTrack; + UCHAR Reserved2; + UCHAR Reserved3; +} CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX; + +typedef struct _CDROM_SEEK_AUDIO_MSF { + UCHAR M; + UCHAR S; + UCHAR F; +} CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF; + +/* CDROM_SUB_Q_DATA_FORMAT.Format constants */ +#define IOCTL_CDROM_SUB_Q_CHANNEL 0x00 +#define IOCTL_CDROM_CURRENT_POSITION 0x01 +#define IOCTL_CDROM_MEDIA_CATALOG 0x02 +#define IOCTL_CDROM_TRACK_ISRC 0x03 + +typedef struct _CDROM_SUB_Q_DATA_FORMAT { + UCHAR Format; + UCHAR Track; +} CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT; + +typedef struct _CDROM_TOC { + UCHAR Length[2]; + UCHAR FirstTrack; + UCHAR LastTrack; + TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS]; +} CDROM_TOC, *PCDROM_TOC; + +#define CDROM_TOC_SIZE sizeof(CDROM_TOC) + +typedef struct _CDROM_TOC_ATIP_DATA_BLOCK { + UCHAR CdrwReferenceSpeed : 3; + UCHAR Reserved3 : 1; + UCHAR WritePower : 3; + UCHAR True1 : 1; + UCHAR Reserved4 : 6; + UCHAR UnrestrictedUse : 1; + UCHAR Reserved5 : 1; + UCHAR A3Valid : 1; + UCHAR A2Valid : 1; + UCHAR A1Valid : 1; + UCHAR Reserved6 : 3; + UCHAR IsCdrw : 1; + UCHAR True2 : 1; + UCHAR Reserved7; + UCHAR LeadInMsf[3]; + UCHAR Reserved8; + UCHAR LeadOutMsf[3]; + UCHAR Reserved9; + UCHAR A1Values[3]; + UCHAR Reserved10; + UCHAR A2Values[3]; + UCHAR Reserved11; + UCHAR A3Values[3]; + UCHAR Reserved12; +} CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK; + +typedef struct _CDROM_TOC_ATIP_DATA { + UCHAR Length[2]; + UCHAR Reserved1; + UCHAR Reserved2; + CDROM_TOC_ATIP_DATA_BLOCK Descriptors[0]; +} CDROM_TOC_ATIP_DATA, *PCDROM_TOC_ATIP_DATA; + +/* CDROM_TOC_CD_TEXT_DATA_BLOCK.PackType constants */ +#define CDROM_CD_TEXT_PACK_ALBUM_NAME 0x80 +#define CDROM_CD_TEXT_PACK_PERFORMER 0x81 +#define CDROM_CD_TEXT_PACK_SONGWRITER 0x82 +#define CDROM_CD_TEXT_PACK_COMPOSER 0x83 +#define CDROM_CD_TEXT_PACK_ARRANGER 0x84 +#define CDROM_CD_TEXT_PACK_MESSAGES 0x85 +#define CDROM_CD_TEXT_PACK_DISC_ID 0x86 +#define CDROM_CD_TEXT_PACK_GENRE 0x87 +#define CDROM_CD_TEXT_PACK_TOC_INFO 0x88 +#define CDROM_CD_TEXT_PACK_TOC_INFO2 0x89 +#define CDROM_CD_TEXT_PACK_UPC_EAN 0x8e +#define CDROM_CD_TEXT_PACK_SIZE_INFO 0x8f + +typedef struct _CDROM_TOC_CD_TEXT_DATA_BLOCK { + UCHAR PackType; + UCHAR TrackNumber : 7; + UCHAR ExtensionFlag : 1; + UCHAR SequenceNumber; + UCHAR CharacterPosition : 4; + UCHAR BlockNumber : 3; + UCHAR Unicode : 1; + _ANONYMOUS_UNION union { + UCHAR Text[12]; + WCHAR WText[6]; + } DUMMYUNIONNAME; + UCHAR CRC[2]; +} CDROM_TOC_CD_TEXT_DATA_BLOCK, *PCDROM_TOC_CD_TEXT_DATA_BLOCK; + +typedef struct _CDROM_TOC_CD_TEXT_DATA { + UCHAR Length[2]; + UCHAR Reserved1; + UCHAR Reserved2; + CDROM_TOC_CD_TEXT_DATA_BLOCK Descriptors[0]; +} CDROM_TOC_CD_TEXT_DATA, *PCDROM_TOC_CD_TEXT_DATA; + +/* CDROM_TOC_FULL_TOC_DATA_BLOCK.Adr constants */ +#define ADR_NO_MODE_INFORMATION 0x0 +#define ADR_ENCODES_CURRENT_POSITION 0x1 +#define ADR_ENCODES_MEDIA_CATALOG 0x2 +#define ADR_ENCODES_ISRC 0x3 + +typedef struct _CDROM_TOC_FULL_TOC_DATA_BLOCK { + UCHAR SessionNumber; + UCHAR Control : 4; + UCHAR Adr : 4; + UCHAR Reserved1; + UCHAR Point; + UCHAR MsfExtra[3]; + UCHAR Zero; + UCHAR Msf[3]; +} CDROM_TOC_FULL_TOC_DATA_BLOCK, *PCDROM_TOC_FULL_TOC_DATA_BLOCK; + +typedef struct _CDROM_TOC_FULL_TOC_DATA { + UCHAR Length[2]; + UCHAR FirstCompleteSession; + UCHAR LastCompleteSession; + CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0]; +} CDROM_TOC_FULL_TOC_DATA, *PCDROM_TOC_FULL_TOC_DATA; + +typedef struct _CDROM_TOC_PMA_DATA { + UCHAR Length[2]; + UCHAR Reserved1; + UCHAR Reserved2; + CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0]; +} CDROM_TOC_PMA_DATA, *PCDROM_TOC_PMA_DATA; + +/* SUB_Q_HEADER.AudioStatus constants */ +#define AUDIO_STATUS_NOT_SUPPORTED 0x00 +#define AUDIO_STATUS_IN_PROGRESS 0x11 +#define AUDIO_STATUS_PAUSED 0x12 +#define AUDIO_STATUS_PLAY_COMPLETE 0x13 +#define AUDIO_STATUS_PLAY_ERROR 0x14 +#define AUDIO_STATUS_NO_STATUS 0x15 + +typedef struct _SUB_Q_HEADER { + UCHAR Reserved; + UCHAR AudioStatus; + UCHAR DataLength[2]; +} SUB_Q_HEADER, *PSUB_Q_HEADER; + +typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER { + SUB_Q_HEADER Header; + UCHAR FormatCode; + UCHAR Reserved[3]; + UCHAR Reserved1 : 7; + UCHAR Mcval :1; + UCHAR MediaCatalog[15]; +} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER; + +typedef struct _SUB_Q_TRACK_ISRC { + SUB_Q_HEADER Header; + UCHAR FormatCode; + UCHAR Reserved0; + UCHAR Track; + UCHAR Reserved1; + UCHAR Reserved2 : 7; + UCHAR Tcval : 1; + UCHAR TrackIsrc[15]; +} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC; + +typedef struct _SUB_Q_CURRENT_POSITION { + SUB_Q_HEADER Header; + UCHAR FormatCode; + UCHAR Control : 4; + UCHAR ADR : 4; + UCHAR TrackNumber; + UCHAR IndexNumber; + UCHAR AbsoluteAddress[4]; + UCHAR TrackRelativeAddress[4]; +} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION; + +typedef union _SUB_Q_CHANNEL_DATA { + SUB_Q_CURRENT_POSITION CurrentPosition; + SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog; + SUB_Q_TRACK_ISRC TrackIsrc; +} SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA; + +/* CDROM_AUDIO_CONTROL.LbaFormat constants */ +#define AUDIO_WITH_PREEMPHASIS 0x1 +#define DIGITAL_COPY_PERMITTED 0x2 +#define AUDIO_DATA_TRACK 0x4 +#define TWO_FOUR_CHANNEL_AUDIO 0x8 + +typedef struct _CDROM_AUDIO_CONTROL { + UCHAR LbaFormat; + USHORT LogicalBlocksPerSecond; +} CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL; + +typedef struct _VOLUME_CONTROL { + UCHAR PortVolume[4]; +} VOLUME_CONTROL, *PVOLUME_CONTROL; + +typedef enum _TRACK_MODE_TYPE { + YellowMode2, + XAForm2, + CDDA +} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE; + +typedef struct __RAW_READ_INFO { + LARGE_INTEGER DiskOffset; + ULONG SectorCount; + TRACK_MODE_TYPE TrackMode; +} RAW_READ_INFO, *PRAW_READ_INFO; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDCDRM_H */ diff --git a/reactos/w32api/include/ddk/ntddcdvd.h b/reactos/w32api/include/ddk/ntddcdvd.h new file mode 100644 index 00000000000..48a106badcc --- /dev/null +++ b/reactos/w32api/include/ddk/ntddcdvd.h @@ -0,0 +1,214 @@ +/* + * ntddcdvd.h + * + * DVD IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDCDVD_H +#define __NTDDCDVD_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddstor.h" + + +#define IOCTL_DVD_BASE FILE_DEVICE_DVD + +#define IOCTL_DVD_END_SESSION \ + CTL_CODE(IOCTL_DVD_BASE, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DVD_GET_REGION \ + CTL_CODE(IOCTL_DVD_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DVD_READ_KEY \ + CTL_CODE(IOCTL_DVD_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DVD_READ_STRUCTURE \ + CTL_CODE(IOCTL_DVD_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DVD_SEND_KEY \ + CTL_CODE(IOCTL_DVD_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DVD_START_SESSION \ + CTL_CODE(IOCTL_DVD_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DVD_SET_READ_AHEAD \ + CTL_CODE(IOCTL_DVD_BASE, 0x0404, METHOD_BUFFERED, FILE_READ_ACCESS) + + +typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID; + +typedef struct _STORAGE_SET_READ_AHEAD { + LARGE_INTEGER TriggerAddress; + LARGE_INTEGER TargetAddress; +} STORAGE_SET_READ_AHEAD, *PSTORAGE_SET_READ_AHEAD; + +typedef enum DVD_STRUCTURE_FORMAT { + DvdPhysicalDescriptor, + DvdCopyrightDescriptor, + DvdDiskKeyDescriptor, + DvdBCADescriptor, + DvdManufacturerDescriptor, + DvdMaxDescriptor +} DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT; + +typedef struct DVD_READ_STRUCTURE { + LARGE_INTEGER BlockByteOffset; + DVD_STRUCTURE_FORMAT Format; + DVD_SESSION_ID SessionId; + UCHAR LayerNumber; +} DVD_READ_STRUCTURE, *PDVD_READ_STRUCTURE; + +typedef struct _DVD_DESCRIPTOR_HEADER { + USHORT Length; + UCHAR Reserved[2]; + UCHAR Data[0]; +} DVD_DESCRIPTOR_HEADER, *PDVD_DESCRIPTOR_HEADER; + +typedef struct _DVD_LAYER_DESCRIPTOR { + UCHAR BookVersion : 4; + UCHAR BookType : 4; + UCHAR MinimumRate : 4; + UCHAR DiskSize : 4; + UCHAR LayerType : 4; + UCHAR TrackPath : 1; + UCHAR NumberOfLayers : 2; + UCHAR Reserved1 : 1; + UCHAR TrackDensity : 4; + UCHAR LinearDensity : 4; + ULONG StartingDataSector; + ULONG EndDataSector; + ULONG EndLayerZeroSector; + UCHAR Reserved5 : 7; + UCHAR BCAFlag : 1; + UCHAR Reserved6; +} DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR; + +typedef struct _DVD_COPYRIGHT_DESCRIPTOR { + UCHAR CopyrightProtectionType; + UCHAR RegionManagementInformation; + USHORT Reserved; +} DVD_COPYRIGHT_DESCRIPTOR, *PDVD_COPYRIGHT_DESCRIPTOR; + +typedef struct _DVD_DISK_KEY_DESCRIPTOR { + UCHAR DiskKeyData[2048]; +} DVD_DISK_KEY_DESCRIPTOR, *PDVD_DISK_KEY_DESCRIPTOR; + +typedef enum _DVD_KEY_TYPE { + DvdChallengeKey = 0x01, + DvdBusKey1, + DvdBusKey2, + DvdTitleKey, + DvdAsf, + DvdSetRpcKey = 0x6, + DvdGetRpcKey = 0x8, + DvdDiskKey = 0x80, + DvdInvalidateAGID = 0x3f +} DVD_KEY_TYPE; + +typedef struct _DVD_COPY_PROTECT_KEY { + ULONG KeyLength; + DVD_SESSION_ID SessionId; + DVD_KEY_TYPE KeyType; + ULONG KeyFlags; + union { + HANDLE FileHandle; + LARGE_INTEGER TitleOffset; + } Parameters; + UCHAR KeyData[0]; +} DVD_COPY_PROTECT_KEY, *PDVD_COPY_PROTECT_KEY; + +#define DVD_CHALLENGE_KEY_LENGTH (12 + sizeof(DVD_COPY_PROTECT_KEY)) +#define DVD_BUS_KEY_LENGTH (8 + sizeof(DVD_COPY_PROTECT_KEY)) +#define DVD_TITLE_KEY_LENGTH (8 + sizeof(DVD_COPY_PROTECT_KEY)) +#define DVD_DISK_KEY_LENGTH (2048 + sizeof(DVD_COPY_PROTECT_KEY)) +#define DVD_RPC_KEY_LENGTH (sizeof(DVD_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY)) +#define DVD_SET_RPC_KEY_LENGTH (sizeof(DVD_SET_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY)) +#define DVD_ASF_LENGTH (sizeof(DVD_ASF) + sizeof(DVD_COPY_PROTECT_KEY)) + +#define DVD_END_ALL_SESSIONS ((DVD_SESSION_ID) 0xffffffff) + + +#define DVD_CGMS_RESERVED_MASK 0x00000078 + +#define DVD_CGMS_COPY_PROTECT_MASK 0x00000018 +#define DVD_CGMS_COPY_PERMITTED 0x00000000 +#define DVD_CGMS_COPY_ONCE 0x00000010 +#define DVD_CGMS_NO_COPY 0x00000018 + +#define DVD_COPYRIGHT_MASK 0x00000040 +#define DVD_NOT_COPYRIGHTED 0x00000000 +#define DVD_COPYRIGHTED 0x00000040 + +#define DVD_SECTOR_PROTECT_MASK 0x00000020 +#define DVD_SECTOR_NOT_PROTECTED 0x00000000 +#define DVD_SECTOR_PROTECTED 0x00000020 + + +typedef struct _DVD_BCA_DESCRIPTOR { + UCHAR BCAInformation[0]; +} DVD_BCA_DESCRIPTOR, *PDVD_BCA_DESCRIPTOR; + +typedef struct _DVD_MANUFACTURER_DESCRIPTOR { + UCHAR ManufacturingInformation[2048]; +} DVD_MANUFACTURER_DESCRIPTOR, *PDVD_MANUFACTURER_DESCRIPTOR; + +typedef struct _DVD_RPC_KEY { + UCHAR UserResetsAvailable : 3; + UCHAR ManufacturerResetsAvailable : 3; + UCHAR TypeCode : 2; + UCHAR RegionMask; + UCHAR RpcScheme; + UCHAR Reserved2[1]; +} DVD_RPC_KEY, *PDVD_RPC_KEY; + +typedef struct _DVD_SET_RPC_KEY { + UCHAR PreferredDriveRegionCode; + UCHAR Reserved[3]; +} DVD_SET_RPC_KEY, *PDVD_SET_RPC_KEY; + +typedef struct _DVD_ASF { + UCHAR Reserved0[3]; + UCHAR SuccessFlag : 1; + UCHAR Reserved1 : 7; +} DVD_ASF, *PDVD_ASF; + +typedef struct _DVD_REGION { + UCHAR CopySystem; + UCHAR RegionData; + UCHAR SystemRegion; + UCHAR ResetCount; +} DVD_REGION, *PDVD_REGION; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDCDVD_H */ diff --git a/reactos/w32api/include/ddk/ntddchgr.h b/reactos/w32api/include/ddk/ntddchgr.h new file mode 100644 index 00000000000..7cd6cfafdfc --- /dev/null +++ b/reactos/w32api/include/ddk/ntddchgr.h @@ -0,0 +1,358 @@ +/* + * ntddchgr.h + * + * Media changer IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDCHGR_H +#define __NTDDCHGR_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddstor.h" + + +#define DD_CHANGER_DEVICE_NAME "\\Device\\Changer" +#define DD_CHANGER_DEVICE_NAME_U L"\\Device\\Changer" + +#define IOCTL_CHANGER_BASE FILE_DEVICE_CHANGER + +#define IOCTL_CHANGER_EXCHANGE_MEDIUM \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CHANGER_GET_ELEMENT_STATUS \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_CHANGER_GET_PARAMETERS \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CHANGER_GET_PRODUCT_DATA \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CHANGER_GET_STATUS \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CHANGER_MOVE_MEDIUM \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CHANGER_QUERY_VOLUME_TAGS \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_CHANGER_REINITIALIZE_TRANSPORT \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_CHANGER_SET_ACCESS \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_CHANGER_SET_POSITION \ + CTL_CODE(IOCTL_CHANGER_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS) + + +#define MAX_VOLUME_ID_SIZE 36 +#define MAX_VOLUME_TEMPLATE_SIZE 40 + +typedef enum _ELEMENT_TYPE { + AllElements, + ChangerTransport, + ChangerSlot, + ChangerIEPort, + ChangerDrive, + ChangerDoor, + ChangerKeypad, + ChangerMaxElement +} ELEMENT_TYPE, *PELEMENT_TYPE; + +typedef struct _CHANGER_ELEMENT { + ELEMENT_TYPE ElementType; + ULONG ElementAddress; +} CHANGER_ELEMENT, *PCHANGER_ELEMENT; + +typedef struct _CHANGER_ELEMENT_LIST { + CHANGER_ELEMENT Element; + ULONG NumberOfElements; +} CHANGER_ELEMENT_LIST, *PCHANGER_ELEMENT_LIST; + +typedef struct _CHANGER_INITIALIZE_ELEMENT_STATUS { + CHANGER_ELEMENT_LIST ElementList; + BOOLEAN BarCodeScan; +} CHANGER_INITIALIZE_ELEMENT_STATUS, *PCHANGER_INITIALIZE_ELEMENT_STATUS; + +typedef struct _CHANGER_READ_ELEMENT_STATUS { + CHANGER_ELEMENT_LIST ElementList; + BOOLEAN VolumeTagInfo; +} CHANGER_READ_ELEMENT_STATUS, *PCHANGER_READ_ELEMENT_STATUS; + + +typedef struct _CHANGER_SET_POSITION { + CHANGER_ELEMENT Transport; + CHANGER_ELEMENT Destination; + BOOLEAN Flip; +} CHANGER_SET_POSITION, *PCHANGER_SET_POSITION; + +typedef struct _CHANGER_EXCHANGE_MEDIUM { + CHANGER_ELEMENT Transport; + CHANGER_ELEMENT Source; + CHANGER_ELEMENT Destination1; + CHANGER_ELEMENT Destination2; + BOOLEAN Flip1; + BOOLEAN Flip2; +} CHANGER_EXCHANGE_MEDIUM, *PCHANGER_EXCHANGE_MEDIUM; + +typedef struct _CHANGER_MOVE_MEDIUM { + CHANGER_ELEMENT Transport; + CHANGER_ELEMENT Source; + CHANGER_ELEMENT Destination; + BOOLEAN Flip; +} CHANGER_MOVE_MEDIUM, *PCHANGER_MOVE_MEDIUM; + +#define VENDOR_ID_LENGTH 8 +#define PRODUCT_ID_LENGTH 16 +#define REVISION_LENGTH 4 +#define SERIAL_NUMBER_LENGTH 32 + +typedef struct _CHANGER_PRODUCT_DATA { + UCHAR VendorId[VENDOR_ID_LENGTH]; + UCHAR ProductId[PRODUCT_ID_LENGTH]; + UCHAR Revision[REVISION_LENGTH]; + UCHAR SerialNumber[SERIAL_NUMBER_LENGTH]; + UCHAR DeviceType; +} CHANGER_PRODUCT_DATA, *PCHANGER_PRODUCT_DATA; + +/* CHANGER_SET_ACCESS.Control constants */ +#define LOCK_ELEMENT 0 +#define UNLOCK_ELEMENT 1 +#define EXTEND_IEPORT 2 +#define RETRACT_IEPORT 3 + +typedef struct _CHANGER_SET_ACCESS { + CHANGER_ELEMENT Element; + ULONG Control; +} CHANGER_SET_ACCESS, *PCHANGER_SET_ACCESS; + + +typedef enum _CHANGER_DEVICE_PROBLEM_TYPE { + DeviceProblemNone, + DeviceProblemHardware, + DeviceProblemCHMError, + DeviceProblemDoorOpen, + DeviceProblemCalibrationError, + DeviceProblemTargetFailure, + DeviceProblemCHMMoveError, + DeviceProblemCHMZeroError, + DeviceProblemCartridgeInsertError, + DeviceProblemPositionError, + DeviceProblemSensorError, + DeviceProblemCartridgeEjectError, + DeviceProblemGripperError, + DeviceProblemDriveError +} CHANGER_DEVICE_PROBLEM_TYPE, *PCHANGER_DEVICE_PROBLEM_TYPE; + +/* CHANGER_ELEMENT_STATUS(_EX).Flags constants */ +#define ELEMENT_STATUS_FULL 0x00000001 +#define ELEMENT_STATUS_IMPEXP 0x00000002 +#define ELEMENT_STATUS_EXCEPT 0x00000004 +#define ELEMENT_STATUS_ACCESS 0x00000008 +#define ELEMENT_STATUS_EXENAB 0x00000010 +#define ELEMENT_STATUS_INENAB 0x00000020 +#define ELEMENT_STATUS_PRODUCT_DATA 0x00000040 +#define ELEMENT_STATUS_LUN_VALID 0x00001000 +#define ELEMENT_STATUS_ID_VALID 0x00002000 +#define ELEMENT_STATUS_NOT_BUS 0x00008000 +#define ELEMENT_STATUS_INVERT 0x00400000 +#define ELEMENT_STATUS_SVALID 0x00800000 +#define ELEMENT_STATUS_PVOLTAG 0x10000000 +#define ELEMENT_STATUS_AVOLTAG 0x20000000 + +/* CHANGER_ELEMENT_STATUS(_EX).ExceptionCode constants */ +#define ERROR_LABEL_UNREADABLE 0x00000001 +#define ERROR_LABEL_QUESTIONABLE 0x00000002 +#define ERROR_SLOT_NOT_PRESENT 0x00000004 +#define ERROR_DRIVE_NOT_INSTALLED 0x00000008 +#define ERROR_TRAY_MALFUNCTION 0x00000010 +#define ERROR_INIT_STATUS_NEEDED 0x00000011 +#define ERROR_UNHANDLED_ERROR 0xFFFFFFFF + +typedef struct _CHANGER_ELEMENT_STATUS { + CHANGER_ELEMENT Element; + CHANGER_ELEMENT SrcElementAddress; + ULONG Flags; + ULONG ExceptionCode; + UCHAR TargetId; + UCHAR Lun; + USHORT Reserved; + UCHAR PrimaryVolumeID[MAX_VOLUME_ID_SIZE]; + UCHAR AlternateVolumeID[MAX_VOLUME_ID_SIZE]; +} CHANGER_ELEMENT_STATUS, *PCHANGER_ELEMENT_STATUS; + +typedef struct _CHANGER_ELEMENT_STATUS_EX { + CHANGER_ELEMENT Element; + CHANGER_ELEMENT SrcElementAddress; + ULONG Flags; + ULONG ExceptionCode; + UCHAR TargetId; + UCHAR Lun; + USHORT Reserved; + UCHAR PrimaryVolumeID[MAX_VOLUME_ID_SIZE]; + UCHAR AlternateVolumeID[MAX_VOLUME_ID_SIZE]; + UCHAR VendorIdentification[VENDOR_ID_LENGTH]; + UCHAR ProductIdentification[PRODUCT_ID_LENGTH]; + UCHAR SerialNumber[SERIAL_NUMBER_LENGTH]; +} CHANGER_ELEMENT_STATUS_EX, *PCHANGER_ELEMENT_STATUS_EX; + +/* CHANGER_SEND_VOLUME_TAG_INFORMATION.ActionCode constants */ +#define SEARCH_ALL 0x0 +#define SEARCH_PRIMARY 0x1 +#define SEARCH_ALTERNATE 0x2 +#define SEARCH_ALL_NO_SEQ 0x4 +#define SEARCH_PRI_NO_SEQ 0x5 +#define SEARCH_ALT_NO_SEQ 0x6 +#define ASSERT_PRIMARY 0x8 +#define ASSERT_ALTERNATE 0x9 +#define REPLACE_PRIMARY 0xA +#define REPLACE_ALTERNATE 0xB +#define UNDEFINE_PRIMARY 0xC +#define UNDEFINE_ALTERNATE 0xD + +typedef struct _CHANGER_SEND_VOLUME_TAG_INFORMATION { + CHANGER_ELEMENT StartingElement; + ULONG ActionCode; + UCHAR VolumeIDTemplate[MAX_VOLUME_TEMPLATE_SIZE]; +} CHANGER_SEND_VOLUME_TAG_INFORMATION, *PCHANGER_SEND_VOLUME_TAG_INFORMATION; + +/* GET_CHANGER_PARAMETERS.Features0 constants */ +#define CHANGER_BAR_CODE_SCANNER_INSTALLED 0x00000001 +#define CHANGER_INIT_ELEM_STAT_WITH_RANGE 0x00000002 +#define CHANGER_CLOSE_IEPORT 0x00000004 +#define CHANGER_OPEN_IEPORT 0x00000008 +#define CHANGER_STATUS_NON_VOLATILE 0x00000010 +#define CHANGER_EXCHANGE_MEDIA 0x00000020 +#define CHANGER_CLEANER_SLOT 0x00000040 +#define CHANGER_LOCK_UNLOCK 0x00000080 +#define CHANGER_CARTRIDGE_MAGAZINE 0x00000100 +#define CHANGER_MEDIUM_FLIP 0x00000200 +#define CHANGER_POSITION_TO_ELEMENT 0x00000400 +#define CHANGER_REPORT_IEPORT_STATE 0x00000800 +#define CHANGER_STORAGE_DRIVE 0x00001000 +#define CHANGER_STORAGE_IEPORT 0x00002000 +#define CHANGER_STORAGE_SLOT 0x00004000 +#define CHANGER_STORAGE_TRANSPORT 0x00008000 +#define CHANGER_DRIVE_CLEANING_REQUIRED 0x00010000 +#define CHANGER_PREDISMOUNT_EJECT_REQUIRED 0x00020000 +#define CHANGER_CLEANER_ACCESS_NOT_VALID 0x00040000 +#define CHANGER_PREMOUNT_EJECT_REQUIRED 0x00080000 +#define CHANGER_VOLUME_IDENTIFICATION 0x00100000 +#define CHANGER_VOLUME_SEARCH 0x00200000 +#define CHANGER_VOLUME_ASSERT 0x00400000 +#define CHANGER_VOLUME_REPLACE 0x00800000 +#define CHANGER_VOLUME_UNDEFINE 0x01000000 +#define CHANGER_SERIAL_NUMBER_VALID 0x04000000 +#define CHANGER_DEVICE_REINITIALIZE_CAPABLE 0x08000000 +#define CHANGER_KEYPAD_ENABLE_DISABLE 0x10000000 +#define CHANGER_DRIVE_EMPTY_ON_DOOR_ACCESS 0x20000000 +#define CHANGER_RESERVED_BIT 0x80000000 + +/* GET_CHANGER_PARAMETERS.Features1 constants */ +#define CHANGER_PREDISMOUNT_ALIGN_TO_SLOT 0x80000001 +#define CHANGER_PREDISMOUNT_ALIGN_TO_DRIVE 0x80000002 +#define CHANGER_CLEANER_AUTODISMOUNT 0x80000004 +#define CHANGER_TRUE_EXCHANGE_CAPABLE 0x80000008 +#define CHANGER_SLOTS_USE_TRAYS 0x80000010 +#define CHANGER_RTN_MEDIA_TO_ORIGINAL_ADDR 0x80000020 +#define CHANGER_CLEANER_OPS_NOT_SUPPORTED 0x80000040 +#define CHANGER_IEPORT_USER_CONTROL_OPEN 0x80000080 +#define CHANGER_IEPORT_USER_CONTROL_CLOSE 0x80000100 +#define CHANGER_MOVE_EXTENDS_IEPORT 0x80000200 +#define CHANGER_MOVE_RETRACTS_IEPORT 0x80000400 + +/* GET_CHANGER_PARAMETERS.MoveFrom,ExchangeFrom,PositionCapabilities constants */ +#define CHANGER_TO_TRANSPORT 0x01 +#define CHANGER_TO_SLOT 0x02 +#define CHANGER_TO_IEPORT 0x04 +#define CHANGER_TO_DRIVE 0x08 + +/* GET_CHANGER_PARAMETERS.LockUnlockCapabilities constants */ +#define LOCK_UNLOCK_IEPORT 0x01 +#define LOCK_UNLOCK_DOOR 0x02 +#define LOCK_UNLOCK_KEYPAD 0x04 + +typedef struct _GET_CHANGER_PARAMETERS { + ULONG Size; + USHORT NumberTransportElements; + USHORT NumberStorageElements; + USHORT NumberCleanerSlots; + USHORT NumberIEElements; + USHORT NumberDataTransferElements; + USHORT NumberOfDoors; + USHORT FirstSlotNumber; + USHORT FirstDriveNumber; + USHORT FirstTransportNumber; + USHORT FirstIEPortNumber; + USHORT FirstCleanerSlotAddress; + USHORT MagazineSize; + ULONG DriveCleanTimeout; + ULONG Features0; + ULONG Features1; + UCHAR MoveFromTransport; + UCHAR MoveFromSlot; + UCHAR MoveFromIePort; + UCHAR MoveFromDrive; + UCHAR ExchangeFromTransport; + UCHAR ExchangeFromSlot; + UCHAR ExchangeFromIePort; + UCHAR ExchangeFromDrive; + UCHAR LockUnlockCapabilities; + UCHAR PositionCapabilities; + UCHAR Reserved1[2]; + ULONG Reserved2[2]; +} GET_CHANGER_PARAMETERS, * PGET_CHANGER_PARAMETERS; + +typedef struct READ_ELEMENT_ADDRESS_INFO { + ULONG NumberOfElements; + CHANGER_ELEMENT_STATUS ElementStatus[1]; +} READ_ELEMENT_ADDRESS_INFO, *PREAD_ELEMENT_ADDRESS_INFO; + +typedef struct _TAPE_WMI_OPERATIONS { + ULONG Method; + ULONG DataBufferSize; + PVOID DataBuffer; +} TAPE_WMI_OPERATIONS, *PTAPE_WMI_OPERATIONS; + +typedef struct _WMI_CHANGER_PROBLEM_DEVICE_ERROR { + ULONG ChangerProblemType; +} WMI_CHANGER_PROBLEM_DEVICE_ERROR, *PWMI_CHANGER_PROBLEM_DEVICE_ERROR; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDCHGR_H */ diff --git a/reactos/w32api/include/ddk/ntdddisk.h b/reactos/w32api/include/ddk/ntdddisk.h new file mode 100644 index 00000000000..205046928f9 --- /dev/null +++ b/reactos/w32api/include/ddk/ntdddisk.h @@ -0,0 +1,522 @@ +/* + * ntdddisk.h + * + * Disk IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDDISK_H +#define __NTDDDISK_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddstor.h" + + +#define DD_DISK_DEVICE_NAME "\\Device\\UNKNOWN" +#define DD_DISK_DEVICE_NAME_U L"\\Device\\UNKNOWN" + +#define IOCTL_DISK_BASE FILE_DEVICE_DISK + +#define IOCTL_DISK_CHECK_VERIFY \ + CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DISK_CONTROLLER_NUMBER \ + CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_CREATE_DISK \ + CTL_CODE(IOCTL_DISK_BASE, 0x0016, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_DELETE_DRIVE_LAYOUT \ + CTL_CODE(IOCTL_DISK_BASE, 0x0040, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_FIND_NEW_DEVICES \ + CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DISK_FORMAT_TRACKS \ + CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_FORMAT_TRACKS_EX \ + CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_GET_CACHE_INFORMATION \ + CTL_CODE(IOCTL_DISK_BASE, 0x0035, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DISK_GET_DRIVE_GEOMETRY \ + CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX \ + CTL_CODE(IOCTL_DISK_BASE, 0x0028, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_GET_DRIVE_LAYOUT \ + CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX \ + CTL_CODE(IOCTL_DISK_BASE, 0x0014, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_GET_MEDIA_TYPES \ + CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_GET_LENGTH_INFO \ + CTL_CODE(IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DISK_GET_PARTITION_INFO \ + CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DISK_GET_PARTITION_INFO_EX \ + CTL_CODE(IOCTL_DISK_BASE, 0x0012, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_GROW_PARTITION \ + CTL_CODE(IOCTL_DISK_BASE, 0x0034, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_INTERNAL_CLEAR_VERIFY \ + CTL_CODE(IOCTL_DISK_BASE, 0x0101, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_DISK_INTERNAL_SET_VERIFY \ + CTL_CODE(IOCTL_DISK_BASE, 0x0100, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_DISK_IS_WRITABLE \ + CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_PERFORMANCE \ + CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_PERFORMANCE_OFF \ + CTL_CODE(IOCTL_DISK_BASE, 0x0018, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_DISK_REASSIGN_BLOCKS \ + CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_RESERVE \ + CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_DISK_SET_CACHE_INFORMATION \ + CTL_CODE(IOCTL_DISK_BASE, 0x0036, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_SET_DRIVE_LAYOUT \ + CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX \ + CTL_CODE(IOCTL_DISK_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_SET_PARTITION_INFO \ + CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_SET_PARTITION_INFO_EX \ + CTL_CODE(IOCTL_DISK_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_UPDATE_DRIVE_SIZE \ + CTL_CODE(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_DISK_VERIFY \ + CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define SMART_GET_VERSION \ + CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define SMART_RCV_DRIVE_DATA \ + CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define SMART_SEND_DRIVE_COMMAND \ + CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + + +#define PARTITION_ENTRY_UNUSED 0x00 +#define PARTITION_FAT_12 0x01 +#define PARTITION_XENIX_1 0x02 +#define PARTITION_XENIX_2 0x03 +#define PARTITION_FAT_16 0x04 +#define PARTITION_EXTENDED 0x05 +#define PARTITION_HUGE 0x06 +#define PARTITION_IFS 0x07 +#define PARTITION_OS2BOOTMGR 0x0A +#define PARTITION_FAT32 0x0B +#define PARTITION_FAT32_XINT13 0x0C +#define PARTITION_XINT13 0x0E +#define PARTITION_XINT13_EXTENDED 0x0F +#define PARTITION_PREP 0x41 +#define PARTITION_LDM 0x42 +#define PARTITION_UNIX 0x63 +#define VALID_NTFT 0xC0 +#define PARTITION_NTFT 0x80 + +#define IsFTPartition( PartitionType ) \ + (((PartitionType) & PARTITION_NTFT) && \ + IsRecognizedPartition(PartitionType)) + +#define IsContainerPartition(PartitionType) \ + (((PartitionType) == PARTITION_EXTENDED) || \ + ((PartitionType) == PARTITION_XINT13_EXTENDED)) + +#define IsRecognizedPartition(PartitionType) ( \ + (((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_FAT_12)) || \ + (((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_HUGE)) || \ + (((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_IFS)) || \ + (((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_FAT32)) || \ + (((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_FAT32_XINT13)) || \ + (((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_XINT13)) || \ + ((PartitionType) == PARTITION_FAT_12) || \ + ((PartitionType) == PARTITION_FAT_16) || \ + ((PartitionType) == PARTITION_HUGE) || \ + ((PartitionType) == PARTITION_IFS) || \ + ((PartitionType) == PARTITION_FAT32) || \ + ((PartitionType) == PARTITION_FAT32_XINT13) || \ + ((PartitionType) == PARTITION_XINT13)) + +#define WMI_DISK_GEOMETRY_GUID \ + {0x25007f51, 0x57c2, 0x11d1, {0xa5, 0x28, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0x10}} + +typedef USHORT BAD_TRACK_NUMBER; +typedef USHORT *PBAD_TRACK_NUMBER; + +typedef 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 +} MEDIA_TYPE, *PMEDIA_TYPE; + +typedef enum _DETECTION_TYPE { + DetectNone, + DetectInt13, + DetectExInt13 +} DETECTION_TYPE; + +typedef struct _DISK_CONTROLLER_NUMBER { + ULONG ControllerNumber; + ULONG DiskNumber; +} DISK_CONTROLLER_NUMBER, *PDISK_CONTROLLER_NUMBER; + +typedef struct _DISK_INT13_INFO { + USHORT DriveSelect; + ULONG MaxCylinders; + USHORT SectorsPerTrack; + USHORT MaxHeads; + USHORT NumberDrives; +} DISK_INT13_INFO, *PDISK_INT13_INFO; + +typedef struct _DISK_EX_INT13_INFO { + USHORT ExBufferSize; + USHORT ExFlags; + ULONG ExCylinders; + ULONG ExHeads; + ULONG ExSectorsPerTrack; + ULONG64 ExSectorsPerDrive; + USHORT ExSectorSize; + USHORT ExReserved; +} DISK_EX_INT13_INFO, *PDISK_EX_INT13_INFO; + +typedef struct _DISK_DETECTION_INFO { + ULONG SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; +} DISK_DETECTION_INFO, *PDISK_DETECTION_INFO; + +typedef struct _DISK_GEOMETRY { + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + ULONG TracksPerCylinder; + ULONG SectorsPerTrack; + ULONG BytesPerSector; +} DISK_GEOMETRY, *PDISK_GEOMETRY; + +typedef struct _DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + UCHAR Data[1]; +} DISK_GEOMETRY_EX, *PDISK_GEOMETRY_EX; + +#define DiskGeometryGetPartition(Geometry) \ + ((PDISK_PARTITION_INFO)((Geometry) + 1)) + +#define DiskGeometryGetDetect(Geometry)\ + ((PDISK_DETECTION_INFO)(((PBYTE)DiskGeometryGetPartition(Geometry) + \ + DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo))) + +typedef struct _PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; +} PARTITION_INFORMATION, *PPARTITION_INFORMATION; + +typedef struct _PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + ULONG64 Attributes; + WCHAR Name [36]; +} PARTITION_INFORMATION_GPT, *PPARTITION_INFORMATION_GPT; + +typedef struct _DISK_PARTITION_INFO { + ULONG SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + struct { + ULONG Signature; + ULONG CheckSum; + } Mbr; + struct { + GUID DiskId; + } Gpt; + } DUMMYUNIONNAME; +} DISK_PARTITION_INFO, *PDISK_PARTITION_INFO; + +typedef struct _DISK_PERFORMANCE { + LARGE_INTEGER BytesRead; + LARGE_INTEGER BytesWritten; + LARGE_INTEGER ReadTime; + LARGE_INTEGER WriteTime; + LARGE_INTEGER IdleTime; + ULONG ReadCount; + ULONG WriteCount; + ULONG QueueDepth; + ULONG SplitCount; + LARGE_INTEGER QueryTime; + ULONG StorageDeviceNumber; + WCHAR StorageManagerName[8]; +} DISK_PERFORMANCE, *PDISK_PERFORMANCE; + +typedef struct _PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + ULONG PartitionNumber; + BOOLEAN RewritePartition; + _ANONYMOUS_UNION union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + } DUMMYUNIONNAME; +} PARTITION_INFORMATION_EX, *PPARTITION_INFORMATION_EX; + +typedef struct _FORMAT_EX_PARAMETERS { + MEDIA_TYPE MediaType; + ULONG StartCylinderNumber; + ULONG EndCylinderNumber; + ULONG StartHeadNumber; + ULONG EndHeadNumber; + USHORT FormatGapLength; + USHORT SectorsPerTrack; + USHORT SectorNumber[1]; +} FORMAT_EX_PARAMETERS, *PFORMAT_EX_PARAMETERS; + +typedef struct _FORMAT_PARAMETERS { + MEDIA_TYPE MediaType; + ULONG StartCylinderNumber; + ULONG EndCylinderNumber; + ULONG StartHeadNumber; + ULONG EndHeadNumber; +} FORMAT_PARAMETERS, *PFORMAT_PARAMETERS; + +typedef struct _GET_LENGTH_INFORMATION { + LARGE_INTEGER Length; +} GET_LENGTH_INFORMATION, *PGET_LENGTH_INFORMATION; + +typedef struct _REASSIGN_BLOCKS { + WORD Reserved; + WORD Count; + DWORD BlockNumber[1]; +} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS; + +typedef struct _SET_PARTITION_INFORMATION { + UCHAR PartitionType; +} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION; + +typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR; +typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT; + +typedef struct _SET_PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + SET_PARTITION_INFORMATION_MBR Mbr; + SET_PARTITION_INFORMATION_GPT Gpt; + } DUMMYUNIONNAME; +} SET_PARTITION_INFORMATION_EX, *PSET_PARTITION_INFORMATION_EX; + +typedef struct _VERIFY_INFORMATION { + LARGE_INTEGER StartingOffset; + DWORD Length; +} VERIFY_INFORMATION, *PVERIFY_INFORMATION; + +typedef enum { + EqualPriority, + KeepPrefetchedData, + KeepReadData +} DISK_CACHE_RETENTION_PRIORITY; + +typedef struct _DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + USHORT DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + _ANONYMOUS_UNION union { + struct { + USHORT Minimum; + USHORT Maximum; + USHORT MaximumBlocks; + } ScalarPrefetch; + struct { + USHORT Minimum; + USHORT Maximum; + } BlockPrefetch; + } DUMMYUNIONNAME; +} DISK_CACHE_INFORMATION, *PDISK_CACHE_INFORMATION; + +typedef struct _DISK_GROW_PARTITION { + ULONG PartitionNumber; + LARGE_INTEGER BytesToGrow; +} DISK_GROW_PARTITION, *PDISK_GROW_PARTITION; + +/* GETVERSIONINPARAMS.fCapabilities constants */ +#define CAP_ATA_ID_CMD 1 +#define CAP_ATAPI_ID_CMD 2 +#define CAP_SMART_CMD 4 + +typedef struct _GETVERSIONINPARAMS { + UCHAR bVersion; + UCHAR bRevision; + UCHAR bReserved; + UCHAR bIDEDeviceMap; + ULONG fCapabilities; + ULONG dwReserved[4]; +} GETVERSIONINPARAMS, *PGETVERSIONINPARAMS, *LPGETVERSIONINPARAMS; + +/* IDEREGS.bCommandReg constants */ +#define ATAPI_ID_CMD 0xA1 +#define ID_CMD 0xEC +#define SMART_CMD 0xB0 + +#define SMART_CYL_LOW 0x4F +#define SMART_CYL_HI 0xC2 + +typedef struct _IDEREGS { + UCHAR bFeaturesReg; + UCHAR bSectorCountReg; + UCHAR bSectorNumberReg; + UCHAR bCylLowReg; + UCHAR bCylHighReg; + UCHAR bDriveHeadReg; + UCHAR bCommandReg; + UCHAR bReserved; +} IDEREGS, *PIDEREGS, *LPIDEREGS; + +typedef struct _SENDCMDINPARAMS { + ULONG cBufferSize; + IDEREGS irDriveRegs; + UCHAR bDriveNumber; + UCHAR bReserved[3]; + ULONG dwReserved[4]; + UCHAR bBuffer[1]; +} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS; + +/* DRIVERSTATUS.bDriverError constants */ +#define SMART_NO_ERROR 0 +#define SMART_IDE_ERROR 1 +#define SMART_INVALID_FLAG 2 +#define SMART_INVALID_COMMAND 3 +#define SMART_INVALID_BUFFER 4 +#define SMART_INVALID_DRIVE 5 +#define SMART_INVALID_IOCTL 6 +#define SMART_ERROR_NO_MEM 7 +#define SMART_INVALID_REGISTER 8 +#define SMART_NOT_SUPPORTED 9 +#define SMART_NO_IDE_DEVICE 10 + +#define SMART_OFFLINE_ROUTINE_OFFLINE 0 +#define SMART_SHORT_SELFTEST_OFFLINE 1 +#define SMART_EXTENDED_SELFTEST_OFFLINE 2 +#define SMART_ABORT_OFFLINE_SELFTEST 127 +#define SMART_SHORT_SELFTEST_CAPTIVE 129 +#define SMART_EXTENDED_SELFTEST_CAPTIVE 130 + +typedef struct _DRIVERSTATUS { + UCHAR bDriverError; + UCHAR bIDEError; + UCHAR bReserved[2]; + ULONG dwReserved[2]; +} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS; + +#define READ_ATTRIBUTE_BUFFER_SIZE 512 +#define IDENTIFY_BUFFER_SIZE 512 +#define READ_THRESHOLD_BUFFER_SIZE 512 +#define SMART_LOG_SECTOR_SIZE 512 + +typedef struct _SENDCMDOUTPARAMS { + ULONG cBufferSize; + DRIVERSTATUS DriverStatus; + UCHAR bBuffer[1]; +} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS; + +#define READ_ATTRIBUTES 0xD0 +#define READ_THRESHOLDS 0xD1 +#define ENABLE_DISABLE_AUTOSAVE 0xD2 +#define SAVE_ATTRIBUTE_VALUES 0xD3 +#define EXECUTE_OFFLINE_DIAGS 0xD4 +#define SMART_READ_LOG 0xD5 +#define SMART_WRITE_LOG 0xd6 +#define ENABLE_SMART 0xD8 +#define DISABLE_SMART 0xD9 +#define RETURN_SMART_STATUS 0xDA +#define ENABLE_DISABLE_AUTO_OFFLINE 0xDB + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDDISK_H */ diff --git a/reactos/w32api/include/ddk/ntddk.h b/reactos/w32api/include/ddk/ntddk.h new file mode 100644 index 00000000000..480ff0ccfac --- /dev/null +++ b/reactos/w32api/include/ddk/ntddk.h @@ -0,0 +1,90 @@ +/* + * ntddk.h + * + * Windows Device Driver Kit + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * DEFINES: + * DBG - Debugging enabled/disabled (0/1) + * POOL_TAGGING - Enable pool tagging + * _X86_ - X86 environment + */ + +#ifndef __NTDDK_H +#define __NTDDK_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include +#include +#include +#include + +/* Base types, structures and definitions */ +typedef short CSHORT; +typedef CONST int CINT; +typedef CONST char *PCSZ; + +#ifndef STATIC +#define STATIC static +#endif + +#ifndef CALLBACK +#define CALLBACK +#endif + +#ifndef DECL_IMPORT +#define DECL_IMPORT __attribute__((dllimport)) +#endif + +#ifndef DECL_EXPORT +#define DECL_EXPORT __attribute__((dllexport)) +#endif + +/* Windows NT status codes */ +#include "ntstatus.h" + +/* Windows NT definitions exported to user mode */ +#include + +/* Windows Device Driver Kit */ +#include "winddk.h" + +/* Definitions only in Windows XP */ +#include "winxp.h" + +/* Definitions only in Windows 2000 */ +#include "win2k.h" + +/* Definitions only in Windows NT 4 */ +#include "winnt4.h" + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDK_H */ diff --git a/reactos/w32api/include/ddk/ntddkbd.h b/reactos/w32api/include/ddk/ntddkbd.h new file mode 100644 index 00000000000..9a1a358a371 --- /dev/null +++ b/reactos/w32api/include/ddk/ntddkbd.h @@ -0,0 +1,140 @@ +/* + * ntddkbd.h + * + * Keyboard IOCTL interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDKBD_H +#define __NTDDKBD_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define DD_KEYBOARD_DEVICE_NAME "\\Device\\KeyboardClass" +#define DD_KEYBOARD_DEVICE_NAME_U L"\\Device\\KeyboardClass" + +#define IOCTL_KEYBOARD_QUERY_ATTRIBUTES \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_KEYBOARD_QUERY_INDICATORS \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0020, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_KEYBOARD_QUERY_TYPEMATIC \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_KEYBOARD_SET_TYPEMATIC \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0001, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_KEYBOARD_SET_INDICATORS \ + CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +DEFINE_GUID(GUID_DEVINTERFACE_KEYBOARD, \ + 0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd); + +#define KEYBOARD_ERROR_VALUE_BASE 10000 + +/* KEYBOARD_INPUT_DATA.MakeCode constants */ +#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF + +/* KEYBOARD_INPUT_DATA.Flags constants */ +#define KEY_MAKE 0 +#define KEY_BREAK 1 +#define KEY_E0 2 +#define KEY_E1 4 + +typedef struct _KEYBOARD_INPUT_DATA { + USHORT UnitId; + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + ULONG ExtraInformation; +} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA; + + +typedef struct _KEYBOARD_TYPEMATIC_PARAMETERS { + USHORT UnitId; + USHORT Rate; + USHORT Delay; +} KEYBOARD_TYPEMATIC_PARAMETERS, *PKEYBOARD_TYPEMATIC_PARAMETERS; + +typedef struct _KEYBOARD_ID { + UCHAR Type; + UCHAR Subtype; +} KEYBOARD_ID, *PKEYBOARD_ID; + +#define ENHANCED_KEYBOARD(Id) ((Id).Type == 2 || (Id).Type == 4 || FAREAST_KEYBOARD(Id)) +#define FAREAST_KEYBOARD(Id) ((Id).Type == 7 || (Id).Type == 8) + +typedef struct _KEYBOARD_INDICATOR_PARAMETERS { + USHORT UnitId; + USHORT LedFlags; +} KEYBOARD_INDICATOR_PARAMETERS, *PKEYBOARD_INDICATOR_PARAMETERS; + +typedef struct _INDICATOR_LIST { + USHORT MakeCode; + USHORT IndicatorFlags; +} INDICATOR_LIST, *PINDICATOR_LIST; + +typedef struct _KEYBOARD_INDICATOR_TRANSLATION { + USHORT NumberOfIndicatorKeys; + INDICATOR_LIST IndicatorList[1]; +} KEYBOARD_INDICATOR_TRANSLATION, *PKEYBOARD_INDICATOR_TRANSLATION; + +typedef struct _KEYBOARD_ATTRIBUTES { + KEYBOARD_ID KeyboardIdentifier; + USHORT KeyboardMode; + USHORT NumberOfFunctionKeys; + USHORT NumberOfIndicators; + USHORT NumberOfKeysTotal; + ULONG InputDataQueueLength; + KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMinimum; + KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMaximum; +} KEYBOARD_ATTRIBUTES, *PKEYBOARD_ATTRIBUTES; + +typedef struct _KEYBOARD_UNIT_ID_PARAMETER { + USHORT UnitId; +} KEYBOARD_UNIT_ID_PARAMETER, *PKEYBOARD_UNIT_ID_PARAMETER; + +typedef struct _KEYBOARD_IME_STATUS { + USHORT UnitId; + ULONG ImeOpen; + ULONG ImeConvMode; +} KEYBOARD_IME_STATUS, *PKEYBOARD_IME_STATUS; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDKBD_H */ diff --git a/reactos/w32api/include/ddk/ntddmou.h b/reactos/w32api/include/ddk/ntddmou.h new file mode 100644 index 00000000000..457b9d96e9e --- /dev/null +++ b/reactos/w32api/include/ddk/ntddmou.h @@ -0,0 +1,120 @@ +/* + * ntddmou.h + * + * Mouse device IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDMOU_H +#define __NTDDMOU_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define DD_MOUSE_DEVICE_NAME "\\Device\\PointerClass" +#define DD_MOUSE_DEVICE_NAME_U L"\\Device\\PointerClass" + +#define IOCTL_MOUSE_QUERY_ATTRIBUTES \ + CTL_CODE(FILE_DEVICE_MOUSE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) + +DEFINE_GUID(GUID_DEVINTERFACE_MOUSE, \ + 0x378de44c, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd); + +#define MOUSE_ERROR_VALUE_BASE 20000 + +/* MOUSE_INPUT_DATA.ButtonFlags constants */ +#define MOUSE_LEFT_BUTTON_DOWN 0x0001 +#define MOUSE_LEFT_BUTTON_UP 0x0002 +#define MOUSE_RIGHT_BUTTON_DOWN 0x0004 +#define MOUSE_RIGHT_BUTTON_UP 0x0008 +#define MOUSE_MIDDLE_BUTTON_DOWN 0x0010 +#define MOUSE_MIDDLE_BUTTON_UP 0x0020 +#define MOUSE_BUTTON_4_DOWN 0x0040 +#define MOUSE_BUTTON_4_UP 0x0080 +#define MOUSE_BUTTON_5_DOWN 0x0100 +#define MOUSE_BUTTON_5_UP 0x0200 +#define MOUSE_WHEEL 0x0400 + +#define MOUSE_BUTTON_1_DOWN MOUSE_LEFT_BUTTON_DOWN +#define MOUSE_BUTTON_1_UP MOUSE_LEFT_BUTTON_UP +#define MOUSE_BUTTON_2_DOWN MOUSE_RIGHT_BUTTON_DOWN +#define MOUSE_BUTTON_2_UP MOUSE_RIGHT_BUTTON_UP +#define MOUSE_BUTTON_3_DOWN MOUSE_MIDDLE_BUTTON_DOWN +#define MOUSE_BUTTON_3_UP MOUSE_MIDDLE_BUTTON_UP + +/* MOUSE_INPUT_DATA.Flags constants */ +#define MOUSE_MOVE_RELATIVE 0 +#define MOUSE_MOVE_ABSOLUTE 1 +#define MOUSE_VIRTUAL_DESKTOP 0x02 +#define MOUSE_ATTRIBUTES_CHANGED 0x04 + +typedef struct _MOUSE_INPUT_DATA { + USHORT UnitId; + USHORT Flags; + _ANONYMOUS_UNION union { + ULONG Buttons; + _ANONYMOUS_STRUCT struct { + USHORT ButtonFlags; + USHORT ButtonData; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + ULONG RawButtons; + LONG LastX; + LONG LastY; + ULONG ExtraInformation; +} MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA; + +typedef struct _MOUSE_UNIT_ID_PARAMETER { + USHORT UnitId; +} MOUSE_UNIT_ID_PARAMETER, *PMOUSE_UNIT_ID_PARAMETER; + +/* MOUSE_ATTRIBUTES.MouseIdentifier constants */ +#define MOUSE_INPORT_HARDWARE 0x0001 +#define MOUSE_I8042_HARDWARE 0x0002 +#define MOUSE_SERIAL_HARDWARE 0x0004 +#define BALLPOINT_I8042_HARDWARE 0x0008 +#define BALLPOINT_SERIAL_HARDWARE 0x0010 +#define WHEELMOUSE_I8042_HARDWARE 0x0020 +#define WHEELMOUSE_SERIAL_HARDWARE 0x0040 +#define MOUSE_HID_HARDWARE 0x0080 +#define WHEELMOUSE_HID_HARDWARE 0x0100 + +typedef struct _MOUSE_ATTRIBUTES { + USHORT MouseIdentifier; + USHORT NumberOfButtons; + USHORT SampleRate; + ULONG InputDataQueueLength; +} MOUSE_ATTRIBUTES, *PMOUSE_ATTRIBUTES; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDMOU_H */ diff --git a/reactos/w32api/include/ddk/ntddndis.h b/reactos/w32api/include/ddk/ntddndis.h new file mode 100644 index 00000000000..06b2cd04540 --- /dev/null +++ b/reactos/w32api/include/ddk/ntddndis.h @@ -0,0 +1,188 @@ +/* + * ntddndis.h + * + * NDIS device driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDNDIS_H +#define __NTDDNDIS_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum _NDIS_WAN_QUALITY { + NdisWanRaw, + NdisWanErrorControl, + NdisWanReliable +} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY; + +typedef enum _NDIS_DEVICE_POWER_STATE { + NdisDeviceStateUnspecified = 0, + NdisDeviceStateD0, + NdisDeviceStateD1, + NdisDeviceStateD2, + NdisDeviceStateD3, + NdisDeviceStateMaximum +} NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE; + +typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES { + NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp; + NDIS_DEVICE_POWER_STATE MinPatternWakeUp; + NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp; +} NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES; + +/* NDIS_PNP_CAPABILITIES.Flags constants */ +#define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001 +#define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002 +#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004 + +typedef struct _NDIS_PNP_CAPABILITIES { + ULONG Flags; + NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities; +} NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES; + +/* Required Object IDs (OIDs) */ +#define OID_GEN_SUPPORTED_LIST 0x00010101 +#define OID_GEN_HARDWARE_STATUS 0x00010102 +#define OID_GEN_MEDIA_SUPPORTED 0x00010103 +#define OID_GEN_MEDIA_IN_USE 0x00010104 +#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105 +#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106 +#define OID_GEN_LINK_SPEED 0x00010107 +#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108 +#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109 +#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A +#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B +#define OID_GEN_VENDOR_ID 0x0001010C +#define OID_GEN_VENDOR_DESCRIPTION 0x0001010D +#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E +#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F +#define OID_GEN_DRIVER_VERSION 0x00010110 +#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111 +#define OID_GEN_PROTOCOL_OPTIONS 0x00010112 +#define OID_GEN_MAC_OPTIONS 0x00010113 +#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114 +#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115 +#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116 +#define OID_GEN_SUPPORTED_GUIDS 0x00010117 +#define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118 +#define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119 +#define OID_GEN_MACHINE_NAME 0x0001021A +#define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021B +#define OID_GEN_VLAN_ID 0x0001021C + +/* Optional OIDs */ +#define OID_GEN_MEDIA_CAPABILITIES 0x00010201 +#define OID_GEN_PHYSICAL_MEDIUM 0x00010202 + +/* Required statistics OIDs */ +#define OID_GEN_XMIT_OK 0x00020101 +#define OID_GEN_RCV_OK 0x00020102 +#define OID_GEN_XMIT_ERROR 0x00020103 +#define OID_GEN_RCV_ERROR 0x00020104 +#define OID_GEN_RCV_NO_BUFFER 0x00020105 + +/* Optional statistics OIDs */ +#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201 +#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202 +#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203 +#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204 +#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205 +#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206 +#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207 +#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208 +#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209 +#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A +#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B +#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C +#define OID_GEN_RCV_CRC_ERROR 0x0002020D +#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E +#define OID_GEN_GET_TIME_CAPS 0x0002020F +#define OID_GEN_GET_NETCARD_TIME 0x00020210 +#define OID_GEN_NETCARD_LOAD 0x00020211 +#define OID_GEN_DEVICE_PROFILE 0x00020212 +#define OID_GEN_INIT_TIME_MS 0x00020213 +#define OID_GEN_RESET_COUNTS 0x00020214 +#define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215 +#define OID_GEN_FRIENDLY_NAME 0x00020216 +#define OID_GEN_MINIPORT_INFO 0x00020217 +#define OID_GEN_RESET_VERIFY_PARAMETERS 0x00020218 + +/* IEEE 802.3 (Ethernet) OIDs */ +#define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001 + +#define OID_802_3_PERMANENT_ADDRESS 0x01010101 +#define OID_802_3_CURRENT_ADDRESS 0x01010102 +#define OID_802_3_MULTICAST_LIST 0x01010103 +#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 +#define OID_802_3_MAC_OPTIONS 0x01010105 +#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101 +#define OID_802_3_XMIT_ONE_COLLISION 0x01020102 +#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103 +#define OID_802_3_XMIT_DEFERRED 0x01020201 +#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202 +#define OID_802_3_RCV_OVERRUN 0x01020203 +#define OID_802_3_XMIT_UNDERRUN 0x01020204 +#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205 +#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206 +#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207 + +/* OID_GEN_MINIPORT_INFO constants */ +#define NDIS_MINIPORT_BUS_MASTER 0x00000001 +#define NDIS_MINIPORT_WDM_DRIVER 0x00000002 +#define NDIS_MINIPORT_SG_LIST 0x00000004 +#define NDIS_MINIPORT_SUPPORTS_MEDIA_QUERY 0x00000008 +#define NDIS_MINIPORT_INDICATES_PACKETS 0x00000010 +#define NDIS_MINIPORT_IGNORE_PACKET_QUEUE 0x00000020 +#define NDIS_MINIPORT_IGNORE_REQUEST_QUEUE 0x00000040 +#define NDIS_MINIPORT_IGNORE_TOKEN_RING_ERRORS 0x00000080 +#define NDIS_MINIPORT_INTERMEDIATE_DRIVER 0x00000100 +#define NDIS_MINIPORT_IS_NDIS_5 0x00000200 +#define NDIS_MINIPORT_IS_CO 0x00000400 +#define NDIS_MINIPORT_DESERIALIZE 0x00000800 +#define NDIS_MINIPORT_REQUIRES_MEDIA_POLLING 0x00001000 +#define NDIS_MINIPORT_SUPPORTS_MEDIA_SENSE 0x00002000 +#define NDIS_MINIPORT_NETBOOT_CARD 0x00004000 +#define NDIS_MINIPORT_PM_SUPPORTED 0x00008000 +#define NDIS_MINIPORT_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00010000 +#define NDIS_MINIPORT_USES_SAFE_BUFFER_APIS 0x00020000 +#define NDIS_MINIPORT_HIDDEN 0x00040000 +#define NDIS_MINIPORT_SWENUM 0x00080000 +#define NDIS_MINIPORT_SURPRISE_REMOVE_OK 0x00100000 +#define NDIS_MINIPORT_NO_HALT_ON_SUSPEND 0x00200000 +#define NDIS_MINIPORT_HARDWARE_DEVICE 0x00400000 +#define NDIS_MINIPORT_SUPPORTS_CANCEL_SEND_PACKETS 0x00800000 +#define NDIS_MINIPORT_64BITS_DMA 0x01000000 + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDNDIS_H */ diff --git a/reactos/w32api/include/ddk/ntddpar.h b/reactos/w32api/include/ddk/ntddpar.h new file mode 100644 index 00000000000..2f88c39c432 --- /dev/null +++ b/reactos/w32api/include/ddk/ntddpar.h @@ -0,0 +1,124 @@ +/* + * ntddpar.h + * + * Parallel port driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDPAR_H +#define __NTDDPAR_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +/* Parallel port device GUIDs */ + +DEFINE_GUID (GUID_DEVINTERFACE_PARALLEL, + 0x97F76EF0, 0xF883, 0x11D0, 0xAF, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x84, 0x5C); +DEFINE_GUID (GUID_DEVINTERFACE_PARCLASS, + 0x811FC6A5, 0xF728, 0x11D0, 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1); + +#define GUID_PARALLEL_DEVICE GUID_DEVINTERFACE_PARALLEL +#define GUID_PARCLASS_DEVICE GUID_DEVINTERFACE_PARCLASS + + +#define IOCTL_IEEE1284_GET_MODE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_IEEE1284_NEGOTIATE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_GET_DEFAULT_MODES \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_GET_DEVICE_CAPS \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_IS_PORT_FREE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_QUERY_DEVICE_ID \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_QUERY_DEVICE_ID_SIZE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_QUERY_INFORMATION \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_QUERY_LOCATION \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_QUERY_RAW_DEVICE_ID \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_SET_INFORMATION \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_SET_READ_ADDRESS \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_PAR_SET_WRITE_ADDRESS \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) + +typedef struct _PAR_DEVICE_ID_SIZE_INFORMATION { + ULONG DeviceIdSize; +} PAR_DEVICE_ID_SIZE_INFORMATION, *PPAR_DEVICE_ID_SIZE_INFORMATION; + +#define PARALLEL_INIT 0x01 +#define PARALLEL_AUTOFEED 0x02 +#define PARALLEL_PAPER_EMPTY 0x04 +#define PARALLEL_OFF_LINE 0x08 +#define PARALLEL_POWER_OFF 0x10 +#define PARALLEL_NOT_CONNECTED 0x20 +#define PARALLEL_BUSY 0x40 +#define PARALLEL_SELECTED 0x80 + +typedef struct _PAR_QUERY_INFORMATION { + UCHAR Status; +} PAR_QUERY_INFORMATION, *PPAR_QUERY_INFORMATION; + +typedef struct _PAR_SET_INFORMATION { + UCHAR Init; +} PAR_SET_INFORMATION, *PPAR_SET_INFORMATION; + +typedef struct _PARCLASS_NEGOTIATION_MASK { + USHORT usReadMask; + USHORT usWriteMask; +} PARCLASS_NEGOTIATION_MASK, *PPARCLASS_NEGOTIATION_MASK; + +#define NONE 0x0000 +#define CENTRONICS 0x0001 +#define IEEE_COMPATIBILITY 0x0002 +#define NIBBLE 0x0004 +#define CHANNEL_NIBBLE 0x0008 +#define BYTE_BIDIR 0x0010 +#define EPP_HW 0x0020 +#define EPP_SW 0x0040 +#define EPP_ANY 0x0060 +#define BOUNDED_ECP 0x0080 +#define ECP_HW_NOIRQ 0x0100 +#define ECP_HW_IRQ 0x0200 +#define ECP_SW 0x0400 +#define ECP_ANY 0x0780 + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDPAR_H */ diff --git a/reactos/w32api/include/ddk/ntddpcm.h b/reactos/w32api/include/ddk/ntddpcm.h new file mode 100644 index 00000000000..f16e33d3507 --- /dev/null +++ b/reactos/w32api/include/ddk/ntddpcm.h @@ -0,0 +1,170 @@ +/* + * ntddpcm.h + * + * PCMCIA IOCTL interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDPCM_H +#define __NTDDPCM_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER + +#define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia" +#define DD_PCMCIA_DEVICE_NAME_U L"\\\\.\\Pcmcia" + +#define IOCTL_GET_TUPLE_DATA \ + CTL_CODE(IOCTL_PCMCIA_BASE, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_SOCKET_INFORMATION \ + CTL_CODE(IOCTL_PCMCIA_BASE, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define DEVICE_IDENTIFIER_LENGTH 64 +#define DRIVER_NAME_LENGTH 32 +#define MANUFACTURER_NAME_LENGTH 64 + +#define PcmciaInvalidControllerType 0xffffffff + +typedef struct _TUPLE_REQUEST { + USHORT Socket; +} TUPLE_REQUEST, *PTUPLE_REQUEST; + +typedef enum _PCMCIA_CONTROLLER_CLASS { + PcmciaInvalidControllerClass = -1, + PcmciaIntelCompatible, + PcmciaCardBusCompatible, + PcmciaElcController, + PcmciaDatabook, + PcmciaPciPcmciaBridge, + PcmciaCirrusLogic, + PcmciaTI, + PcmciaTopic, + PcmciaRicoh, + PcmciaDatabookCB, + PcmciaOpti, + PcmciaTrid, + PcmciaO2Micro, + PcmciaNEC, + PcmciaNEC_98 +} PCMCIA_CONTROLLER_CLASS, *PPCMCIA_CONTROLLER_CLASS; + +typedef struct _PCMCIA_SOCKET_INFORMATION { + USHORT Socket; + USHORT TupleCrc; + UCHAR Manufacturer[MANUFACTURER_NAME_LENGTH]; + UCHAR Identifier[DEVICE_IDENTIFIER_LENGTH]; + UCHAR DriverName[DRIVER_NAME_LENGTH]; + UCHAR DeviceFunctionId; + UCHAR Reserved; + UCHAR CardInSocket; + UCHAR CardEnabled; + ULONG ControllerType; +} PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION; + +#define PcmciaClassFromControllerType(type) ((PCMCIA_CONTROLLER_CLASS)((type) & 0xff)) +#define PcmciaModelFromControllerType(type) (((type) >> 8) & 0x3ffff) +#define PcmciaRevisionFromControllerType(type) ((type) >> 26) + + +DEFINE_GUID(GUID_PCMCIA_INTERFACE_STANDARD, \ + 0xbed5dadfL, 0x38fb, 0x11d1, 0x94, 0x62, 0x00, 0xc0, 0x4f, 0xb9, 0x60, 0xee); + +typedef ULONG MEMORY_SPACE; + +typedef ULONG STDCALL +(*PPCMCIA_READ_WRITE_CONFIG)( + IN PVOID Context, + IN ULONG WhichSpace, + IN PUCHAR Buffer, + IN ULONG Offset, + IN ULONG Length); + +#define PCCARD_PCI_CONFIGURATION_SPACE 0 +#define PCCARD_ATTRIBUTE_MEMORY 1 +#define PCCARD_COMMON_MEMORY 2 +#define PCCARD_ATTRIBUTE_MEMORY_INDIRECT 3 +#define PCCARD_COMMON_MEMORY_INDIRECT 4 + +typedef struct _PCMCIA_BUS_INTERFACE_STANDARD { + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PPCMCIA_READ_WRITE_CONFIG ReadConfig; + PPCMCIA_READ_WRITE_CONFIG WriteConfig; +} PCMCIA_BUS_INTERFACE_STANDARD, *PPCMCIA_BUS_INTERFACE_STANDARD; + +#define PCMCIA_MEMORY_8BIT_ACCESS 0 +#define PCMCIA_MEMORY_16BIT_ACCESS 1 + +typedef BOOLEAN STDCALL +(*PPCMCIA_MODIFY_MEMORY_WINDOW)( + IN PVOID Context, + IN ULONGLONG HostBase, + IN ULONGLONG CardBase, + IN BOOLEAN Enable, + IN ULONG WindowSize OPTIONAL, + IN UCHAR AccessSpeed OPTIONAL, + IN UCHAR BusWidth OPTIONAL, + IN BOOLEAN IsAttributeMemory OPTIONAL); + +#define PCMCIA_VPP_0V 0 +#define PCMCIA_VPP_12V 1 +#define PCMCIA_VPP_IS_VCC 2 + +typedef BOOLEAN STDCALL +(*PPCMCIA_SET_VPP)( + IN PVOID Context, + IN UCHAR VppLevel); + +typedef BOOLEAN STDCALL +(*PPCMCIA_IS_WRITE_PROTECTED)( + IN PVOID Context); + +typedef struct _PCMCIA_INTERFACE_STANDARD { + USHORT Size; + USHORT Version; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PVOID Context; + PPCMCIA_MODIFY_MEMORY_WINDOW ModifyMemoryWindow; + PPCMCIA_SET_VPP SetVpp; + PPCMCIA_IS_WRITE_PROTECTED IsWriteProtected; +} PCMCIA_INTERFACE_STANDARD, *PPCMCIA_INTERFACE_STANDARD; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDPCM_H */ diff --git a/reactos/w32api/include/ddk/ntddscsi.h b/reactos/w32api/include/ddk/ntddscsi.h new file mode 100644 index 00000000000..c580ae3c60a --- /dev/null +++ b/reactos/w32api/include/ddk/ntddscsi.h @@ -0,0 +1,176 @@ +/* + * ntddscsi.h + * + * SCSI port IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDSCSI_H +#define __NTDDSCSI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort" +#define DD_SCSI_DEVICE_NAME_U L"\\Device\\ScsiPort" + +#define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER + +#define IOCTL_SCSI_GET_INQUIRY_DATA \ + CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_SCSI_GET_CAPABILITIES \ + CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_SCSI_GET_ADDRESS \ + CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_SCSI_MINIPORT \ + CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_SCSI_PASS_THROUGH \ + CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_SCSI_PASS_THROUGH_DIRECT \ + CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_SCSI_RESCAN_BUS \ + CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +DEFINE_GUID(ScsiRawInterfaceGuid, \ + 0x53f56309L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(WmiScsiAddressGuid, \ + 0x53f5630fL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +typedef struct _SCSI_PASS_THROUGH { + USHORT Length; + UCHAR ScsiStatus; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + UCHAR CdbLength; + UCHAR SenseInfoLength; + UCHAR DataIn; + ULONG DataTransferLength; + ULONG TimeOutValue; + ULONG_PTR DataBufferOffset; + ULONG SenseInfoOffset; + UCHAR Cdb[16]; +} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH; + +typedef struct _SCSI_PASS_THROUGH_DIRECT { + USHORT Length; + UCHAR ScsiStatus; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + UCHAR CdbLength; + UCHAR SenseInfoLength; + UCHAR DataIn; + ULONG DataTransferLength; + ULONG TimeOutValue; + PVOID DataBuffer; + ULONG SenseInfoOffset; + UCHAR Cdb[16]; +} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT; + +typedef struct _SRB_IO_CONTROL { + ULONG HeaderLength; + UCHAR Signature[8]; + ULONG Timeout; + ULONG ControlCode; + ULONG ReturnCode; + ULONG Length; +} SRB_IO_CONTROL, *PSRB_IO_CONTROL; + +typedef struct _SCSI_ADDRESS { + ULONG Length; + UCHAR PortNumber; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; +} SCSI_ADDRESS, *PSCSI_ADDRESS; + +typedef struct _SCSI_BUS_DATA { + UCHAR NumberOfLogicalUnits; + UCHAR InitiatorBusId; + ULONG InquiryDataOffset; +}SCSI_BUS_DATA, *PSCSI_BUS_DATA; + +typedef struct _SCSI_ADAPTER_BUS_INFO { + UCHAR NumberOfBuses; + SCSI_BUS_DATA BusData[1]; +} SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO; + +typedef struct _IO_SCSI_CAPABILITIES { + ULONG Length; + ULONG MaximumTransferLength; + ULONG MaximumPhysicalPages; + ULONG SupportedAsynchronousEvents; + ULONG AlignmentMask; + BOOLEAN TaggedQueuing; + BOOLEAN AdapterScansDown; + BOOLEAN AdapterUsesPio; +} IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES; + +typedef struct _SCSI_INQUIRY_DATA { + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + BOOLEAN DeviceClaimed; + ULONG InquiryDataLength; + ULONG NextInquiryDataOffset; + UCHAR InquiryData[1]; +} SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA; + +#define SCSI_IOCTL_DATA_OUT 0 +#define SCSI_IOCTL_DATA_IN 1 +#define SCSI_IOCTL_DATA_UNSPECIFIED 2 + +typedef struct _DUMP_POINTERS { + PADAPTER_OBJECT AdapterObject; + PVOID MappedRegisterBase; + PVOID DumpData; + PVOID CommonBufferVa; + LARGE_INTEGER CommonBufferPa; + ULONG CommonBufferSize; + BOOLEAN AllocateCommonBuffers; + BOOLEAN UseDiskDump; + UCHAR Spare1[2]; + PVOID DeviceObject; +} DUMP_POINTERS, *PDUMP_POINTERS; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDSCSI_H */ diff --git a/reactos/w32api/include/ddk/ntddser.h b/reactos/w32api/include/ddk/ntddser.h new file mode 100644 index 00000000000..1a3fb1c092c --- /dev/null +++ b/reactos/w32api/include/ddk/ntddser.h @@ -0,0 +1,454 @@ +/* + * ntddser.h + * + * Serial port driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDSER_H +#define __NTDDSER_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +/* GUIDs */ + +DEFINE_GUID(GUID_DEVINTERFACE_COMPORT, + 0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73); + +DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR, + 0x4D36E978L, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); + +#define IOCTL_SERIAL_CLEAR_STATS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 36, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_CLR_DTR \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_CLR_RTS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_CONFIG_SIZE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_BAUD_RATE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_CHARS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_COMMSTATUS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 27, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_DTRRTS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_HANDFLOW \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_LINE_CONTROL \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_MODEM_CONTROL \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_MODEMSTATUS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_PROPERTIES \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 29, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_STATS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 35, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_TIMEOUTS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_GET_WAIT_MASK \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 16, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_IMMEDIATE_CHAR \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_LSRMST_INSERT \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_PURGE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_RESET_DEVICE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_BAUD_RATE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_BREAK_ON \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_BREAK_OFF \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_CHARS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_DTR \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_FIFO_CONTROL \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_HANDFLOW \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_LINE_CONTROL \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_MODEM_CONTROL \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_QUEUE_SIZE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_RTS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_TIMEOUTS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_WAIT_MASK \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_XOFF \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_SET_XON \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_WAIT_ON_MASK \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 18, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_XOFF_COUNTER \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 28, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_INTERNAL_CANCEL_WAIT_WAKE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_INTERNAL_DO_WAIT_WAKE \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERIAL_INTERNAL_RESTORE_SETTINGS \ + CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_SERENUM_PORT_DESC \ + CTL_CODE (FILE_DEVICE_SERENUM, 130, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_SERENUM_GET_PORT_NAME \ + CTL_CODE (FILE_DEVICE_SERENUM, 131, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_SERENUM_REMOVE_SELF \ + CTL_CODE (FILE_DEVICE_SERENUM, 129, METHOD_NEITHER, FILE_ANY_ACCESS) + + +typedef struct _SERIAL_BAUD_RATE { + ULONG BaudRate; +} SERIAL_BAUD_RATE, *PSERIAL_BAUD_RATE; + +/* SERIAL_BAUD_RATE.BaudRate constants */ +#define SERIAL_BAUD_075 0x00000001 +#define SERIAL_BAUD_110 0x00000002 +#define SERIAL_BAUD_134_5 0x00000004 +#define SERIAL_BAUD_150 0x00000008 +#define SERIAL_BAUD_300 0x00000010 +#define SERIAL_BAUD_600 0x00000020 +#define SERIAL_BAUD_1200 0x00000040 +#define SERIAL_BAUD_1800 0x00000080 +#define SERIAL_BAUD_2400 0x00000100 +#define SERIAL_BAUD_4800 0x00000200 +#define SERIAL_BAUD_7200 0x00000400 +#define SERIAL_BAUD_9600 0x00000800 +#define SERIAL_BAUD_14400 0x00001000 +#define SERIAL_BAUD_19200 0x00002000 +#define SERIAL_BAUD_38400 0x00004000 +#define SERIAL_BAUD_56K 0x00008000 +#define SERIAL_BAUD_128K 0x00010000 +#define SERIAL_BAUD_115200 0x00020000 +#define SERIAL_BAUD_57600 0x00040000 +#define SERIAL_BAUD_USER 0x10000000 + +typedef struct _SERIAL_CHARS { + UCHAR EofChar; + UCHAR ErrorChar; + UCHAR BreakChar; + UCHAR EventChar; + UCHAR XonChar; + UCHAR XoffChar; +} SERIAL_CHARS, *PSERIAL_CHARS; + +typedef struct _SERIAL_STATUS { + ULONG Errors; + ULONG HoldReasons; + ULONG AmountInInQueue; + ULONG AmountInOutQueue; + BOOLEAN EofReceived; + BOOLEAN WaitForImmediate; +} SERIAL_STATUS, *PSERIAL_STATUS; + +typedef struct _SERIAL_HANDFLOW { + ULONG ControlHandShake; + ULONG FlowReplace; + LONG XonLimit; + LONG XoffLimit; +} SERIAL_HANDFLOW, *PSERIAL_HANDFLOW; + +#define SERIAL_DTR_MASK 0x00000003 +#define SERIAL_DTR_CONTROL 0x00000001 +#define SERIAL_DTR_HANDSHAKE 0x00000002 +#define SERIAL_CTS_HANDSHAKE 0x00000008 +#define SERIAL_DSR_HANDSHAKE 0x00000010 +#define SERIAL_DCD_HANDSHAKE 0x00000020 +#define SERIAL_OUT_HANDSHAKEMASK 0x00000038 +#define SERIAL_DSR_SENSITIVITY 0x00000040 +#define SERIAL_ERROR_ABORT 0x80000000 +#define SERIAL_CONTROL_INVALID 0x7fffff84 +#define SERIAL_AUTO_TRANSMIT 0x00000001 +#define SERIAL_AUTO_RECEIVE 0x00000002 +#define SERIAL_ERROR_CHAR 0x00000004 +#define SERIAL_NULL_STRIPPING 0x00000008 +#define SERIAL_BREAK_CHAR 0x00000010 +#define SERIAL_RTS_MASK 0x000000c0 +#define SERIAL_RTS_CONTROL 0x00000040 +#define SERIAL_RTS_HANDSHAKE 0x00000080 +#define SERIAL_TRANSMIT_TOGGLE 0x000000c0 +#define SERIAL_XOFF_CONTINUE 0x80000000 +#define SERIAL_FLOW_INVALID 0x7fffff20 + +typedef struct _SERIAL_LINE_CONTROL { + UCHAR StopBits; + UCHAR Parity; + UCHAR WordLength; +} SERIAL_LINE_CONTROL, *PSERIAL_LINE_CONTROL; + +/* SERIAL_LINE_CONTROL.StopBits constants */ +#define STOP_BIT_1 0x00 +#define STOP_BITS_1_5 0x01 +#define STOP_BITS_2 0x02 + +/* SERIAL_LINE_CONTROL.Parity constants */ +#define NO_PARITY 0x00 +#define ODD_PARITY 0x01 +#define EVEN_PARITY 0x02 +#define MARK_PARITY 0x03 +#define SPACE_PARITY 0x04 + +/* IOCTL_SERIAL_(GET_MODEM_CONTROL, SET_MODEM_CONTROL) flags */ +#define SERIAL_IOC_MCR_DTR 0x00000001 +#define SERIAL_IOC_MCR_RTS 0x00000002 +#define SERIAL_IOC_MCR_OUT1 0x00000004 +#define SERIAL_IOC_MCR_OUT2 0x00000008 +#define SERIAL_IOC_MCR_LOOP 0x00000010 + +typedef struct _SERIAL_COMMPROP { + USHORT PacketLength; + USHORT PacketVersion; + ULONG ServiceMask; + ULONG Reserved1; + ULONG MaxTxQueue; + ULONG MaxRxQueue; + ULONG MaxBaud; + ULONG ProvSubType; + ULONG ProvCapabilities; + ULONG SettableParams; + ULONG SettableBaud; + USHORT SettableData; + USHORT SettableStopParity; + ULONG CurrentTxQueue; + ULONG CurrentRxQueue; + ULONG ProvSpec1; + ULONG ProvSpec2; + WCHAR ProvChar[1]; +} SERIAL_COMMPROP, *PSERIAL_COMMPROP; + +/* SERIAL_COMMPROP.SettableParams flags */ +#define SERIAL_SP_PARITY 0x0001 +#define SERIAL_SP_BAUD 0x0002 +#define SERIAL_SP_DATABITS 0x0004 +#define SERIAL_SP_STOPBITS 0x0008 +#define SERIAL_SP_HANDSHAKING 0x0010 +#define SERIAL_SP_PARITY_CHECK 0x0020 +#define SERIAL_SP_CARRIER_DETECT 0x0040 + +/* SERIAL_COMMPROP.ProvCapabilities flags */ +#define SERIAL_PCF_DTRDSR 0x00000001 +#define SERIAL_PCF_RTSCTS 0x00000002 +#define SERIAL_PCF_CD 0x00000004 +#define SERIAL_PCF_PARITY_CHECK 0x00000008 +#define SERIAL_PCF_XONXOFF 0x00000010 +#define SERIAL_PCF_SETXCHAR 0x00000020 +#define SERIAL_PCF_TOTALTIMEOUTS 0x00000040 +#define SERIAL_PCF_INTTIMEOUTS 0x00000080 +#define SERIAL_PCF_SPECIALCHARS 0x00000100 +#define SERIAL_PCF_16BITMODE 0x00000200 + +/* SERIAL_COMMPROP.SettableData flags */ +#define SERIAL_DATABITS_5 0x0001 +#define SERIAL_DATABITS_6 0x0002 +#define SERIAL_DATABITS_7 0x0004 +#define SERIAL_DATABITS_8 0x0008 +#define SERIAL_DATABITS_16 0x0010 +#define SERIAL_DATABITS_16X 0x0020 + +/* SERIAL_COMMPROP.SettableStopParity flags */ +#define SERIAL_STOPBITS_10 0x0001 +#define SERIAL_STOPBITS_15 0x0002 +#define SERIAL_STOPBITS_20 0x0004 +#define SERIAL_PARITY_NONE 0x0100 +#define SERIAL_PARITY_ODD 0x0200 +#define SERIAL_PARITY_EVEN 0x0400 +#define SERIAL_PARITY_MARK 0x0800 +#define SERIAL_PARITY_SPACE 0x1000 + +typedef struct _SERIALPERF_STATS { + ULONG ReceivedCount; + ULONG TransmittedCount; + ULONG FrameErrorCount; + ULONG SerialOverrunErrorCount; + ULONG BufferOverrunErrorCount; + ULONG ParityErrorCount; +} SERIALPERF_STATS, *PSERIALPERF_STATS; + +typedef struct _SERIAL_TIMEOUTS { + ULONG ReadIntervalTimeout; + ULONG ReadTotalTimeoutMultiplier; + ULONG ReadTotalTimeoutConstant; + ULONG WriteTotalTimeoutMultiplier; + ULONG WriteTotalTimeoutConstant; +} SERIAL_TIMEOUTS, *PSERIAL_TIMEOUTS; + +/* IOCTL_SERIAL_(GET_WAIT_MASK, SET_WAIT_MASK, WAIT_ON_MASK) flags */ +#define SERIAL_EV_RXCHAR 0x0001 +#define SERIAL_EV_RXFLAG 0x0002 +#define SERIAL_EV_TXEMPTY 0x0004 +#define SERIAL_EV_CTS 0x0008 +#define SERIAL_EV_DSR 0x0010 +#define SERIAL_EV_RLSD 0x0020 +#define SERIAL_EV_BREAK 0x0040 +#define SERIAL_EV_ERR 0x0080 +#define SERIAL_EV_RING 0x0100 +#define SERIAL_EV_PERR 0x0200 +#define SERIAL_EV_RX80FULL 0x0400 +#define SERIAL_EV_EVENT1 0x0800 +#define SERIAL_EV_EVENT2 0x1000 + +/* IOCTL_SERIAL_LSRMST_INSERT constants */ +#define SERIAL_LSRMST_LSR_DATA 0x01 +#define SERIAL_LSRMST_LSR_NODATA 0x02 +#define SERIAL_LSRMST_MST 0x03 +#define SERIAL_LSRMST_ESCAPE 0x00 + +/* IOCTL_SERIAL_PURGE constants */ +#define SERIAL_PURGE_TXABORT 0x00000001 +#define SERIAL_PURGE_RXABORT 0x00000002 +#define SERIAL_PURGE_TXCLEAR 0x00000004 +#define SERIAL_PURGE_RXCLEAR 0x00000008 + +/* IOCTL_SERIAL_SET_FIFO_CONTROL constants */ +#define SERIAL_IOC_FCR_FIFO_ENABLE 0x00000001 +#define SERIAL_IOC_FCR_RCVR_RESET 0x00000002 +#define SERIAL_IOC_FCR_XMIT_RESET 0x00000004 +#define SERIAL_IOC_FCR_DMA_MODE 0x00000008 +#define SERIAL_IOC_FCR_RES1 0x00000010 +#define SERIAL_IOC_FCR_RES2 0x00000020 +#define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB 0x00000040 +#define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB 0x00000080 + +typedef struct _SERIAL_QUEUE_SIZE { + ULONG InSize; + ULONG OutSize; +} SERIAL_QUEUE_SIZE, *PSERIAL_QUEUE_SIZE; + +typedef struct _SERIAL_XOFF_COUNTER { + ULONG Timeout; + LONG Counter; + UCHAR XoffChar; +} SERIAL_XOFF_COUNTER, *PSERIAL_XOFF_COUNTER; + +typedef struct _SERIAL_BASIC_SETTINGS { + SERIAL_TIMEOUTS Timeouts; + SERIAL_HANDFLOW HandFlow; + ULONG RxFifo; + ULONG TxFifo; +} SERIAL_BASIC_SETTINGS, *PSERIAL_BASIC_SETTINGS; + +typedef struct _SERENUM_PORT_DESC { + ULONG Size; + PVOID PortHandle; + PHYSICAL_ADDRESS PortAddress; + USHORT Reserved[1]; +} SERENUM_PORT_DESC, *PSERENUM_PORT_DESC; + +typedef UCHAR STDCALL +(*PSERENUM_READPORT)( + PVOID SerPortAddress); + +typedef VOID STDCALL +(*PSERENUM_WRITEPORT)( + PVOID SerPortAddress, + UCHAR Value); + +typedef enum _SERENUM_PORTION { + SerenumFirstHalf, + SerenumSecondHalf, + SerenumWhole +} SERENUM_PORTION; + +typedef struct _SERENUM_PORT_PARAMETERS { + ULONG Size; + PSERENUM_READPORT ReadAccessor; + PSERENUM_WRITEPORT WriteAccessor; + PVOID SerPortAddress; + PVOID HardwareHandle; + SERENUM_PORTION Portion; + USHORT NumberAxis; + USHORT Reserved[3]; +} SERENUM_PORT_PARAMETERS, *PSERENUM_PORT_PARAMETERS; + +#define SERIAL_ERROR_BREAK 0x00000001 +#define SERIAL_ERROR_FRAMING 0x00000002 +#define SERIAL_ERROR_OVERRUN 0x00000004 +#define SERIAL_ERROR_QUEUEOVERRUN 0x00000008 +#define SERIAL_ERROR_PARITY 0x00000010 + +#define SERIAL_SP_UNSPECIFIED 0x00000000 +#define SERIAL_SP_RS232 0x00000001 +#define SERIAL_SP_PARALLEL 0x00000002 +#define SERIAL_SP_RS422 0x00000003 +#define SERIAL_SP_RS423 0x00000004 +#define SERIAL_SP_RS449 0x00000005 +#define SERIAL_SP_MODEM 0X00000006 +#define SERIAL_SP_FAX 0x00000021 +#define SERIAL_SP_SCANNER 0x00000022 +#define SERIAL_SP_BRIDGE 0x00000100 +#define SERIAL_SP_LAT 0x00000101 +#define SERIAL_SP_TELNET 0x00000102 +#define SERIAL_SP_X25 0x00000103 +#define SERIAL_SP_SERIALCOMM 0x00000001 + +#define SERIAL_TX_WAITING_FOR_CTS 0x00000001 +#define SERIAL_TX_WAITING_FOR_DSR 0x00000002 +#define SERIAL_TX_WAITING_FOR_DCD 0x00000004 +#define SERIAL_TX_WAITING_FOR_XON 0x00000008 +#define SERIAL_TX_WAITING_XOFF_SENT 0x00000010 +#define SERIAL_TX_WAITING_ON_BREAK 0x00000020 +#define SERIAL_RX_WAITING_FOR_DSR 0x00000040 + +#define SERIAL_DTR_STATE 0x00000001 +#define SERIAL_RTS_STATE 0x00000002 +#define SERIAL_CTS_STATE 0x00000010 +#define SERIAL_DSR_STATE 0x00000020 +#define SERIAL_RI_STATE 0x00000040 +#define SERIAL_DCD_STATE 0x00000080 + +typedef struct _SERIALCONFIG { + ULONG Size; + USHORT Version; + ULONG SubType; + ULONG ProvOffset; + ULONG ProviderSize; + WCHAR ProviderData[1]; +} SERIALCONFIG,*PSERIALCONFIG; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDSER_H */ diff --git a/reactos/w32api/include/ddk/ntddstor.h b/reactos/w32api/include/ddk/ntddstor.h new file mode 100644 index 00000000000..6875cd190cc --- /dev/null +++ b/reactos/w32api/include/ddk/ntddstor.h @@ -0,0 +1,338 @@ +/* + * ntddstor.h + * + * Storage class IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDSTOR_H +#define __NTDDSTOR_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE + +#define IOCTL_STORAGE_CHECK_VERIFY \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_CHECK_VERIFY2 \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_EJECT_MEDIA \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_EJECTION_CONTROL \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_FIND_NEW_DEVICES \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_GET_DEVICE_NUMBER \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0304, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_GET_MEDIA_TYPES \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_LOAD_MEDIA \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_LOAD_MEDIA2 \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_MCN_CONTROL \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_MEDIA_REMOVAL \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_PREDICT_FAILURE \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_QUERY_PROPERTY \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_RELEASE \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_RESERVE \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_RESET_BUS \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_STORAGE_RESET_DEVICE \ + CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + + +DEFINE_GUID(GUID_DEVINTERFACE_DISK, + 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_CDROM, + 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_PARTITION, + 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_TAPE, + 0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_WRITEONCEDISK, + 0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_VOLUME, + 0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER, + 0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY, + 0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER, + 0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + +DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT, + 0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); + + +typedef enum _STORAGE_MEDIA_TYPE { + DDS_4mm = 0x20, + MiniQic, + Travan, + QIC, + MP_8mm, + AME_8mm, + AIT1_8mm, + DLT, + NCTP, + IBM_3480, + IBM_3490E, + IBM_Magstar_3590, + IBM_Magstar_MP, + STK_DATA_D3, + SONY_DTF, + DV_6mm, + DMI, + SONY_D2, + CLEANER_CARTRIDGE, + CD_ROM, + CD_R, + CD_RW, + DVD_ROM, + DVD_R, + DVD_RW, + MO_3_RW, + MO_5_WO, + MO_5_RW, + MO_5_LIMDOW, + PC_5_WO, + PC_5_RW, + PD_5_RW, + ABL_5_WO, + PINNACLE_APEX_5_RW, + SONY_12_WO, + PHILIPS_12_WO, + HITACHI_12_WO, + CYGNET_12_WO, + KODAK_14_WO, + MO_NFR_525, + NIKON_12_RW, + IOMEGA_ZIP, + IOMEGA_JAZ, + SYQUEST_EZ135, + SYQUEST_EZFLYER, + SYQUEST_SYJET, + AVATAR_F2, + MP2_8mm, + DST_S, + DST_M, + DST_L, + VXATape_1, + VXATape_2, + STK_9840, + LTO_Ultrium, + LTO_Accelis, + DVD_RAM, + AIT_8mm, + ADR_1, + ADR_2 +} STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE; + +typedef enum _STORAGE_BUS_TYPE { + BusTypeUnknown = 0x00, + BusTypeScsi, + BusTypeAtapi, + BusTypeAta, + BusType1394, + BusTypeSsa, + BusTypeFibre, + BusTypeUsb, + BusTypeRAID, + BusTypeMaxReserved = 0x7F +} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE; + +/* DEVICE_MEDIA_INFO.DeviceSpecific.DiskInfo.MediaCharacteristics constants */ +#define MEDIA_ERASEABLE 0x00000001 +#define MEDIA_WRITE_ONCE 0x00000002 +#define MEDIA_READ_ONLY 0x00000004 +#define MEDIA_READ_WRITE 0x00000008 +#define MEDIA_WRITE_PROTECTED 0x00000100 +#define MEDIA_CURRENTLY_MOUNTED 0x80000000 + +typedef struct _DEVICE_MEDIA_INFO { + union { + struct { + LARGE_INTEGER Cylinders; + STORAGE_MEDIA_TYPE MediaType; + ULONG TracksPerCylinder; + ULONG SectorsPerTrack; + ULONG BytesPerSector; + ULONG NumberMediaSides; + ULONG MediaCharacteristics; + } DiskInfo; + struct { + LARGE_INTEGER Cylinders; + STORAGE_MEDIA_TYPE MediaType; + ULONG TracksPerCylinder; + ULONG SectorsPerTrack; + ULONG BytesPerSector; + ULONG NumberMediaSides; + ULONG MediaCharacteristics; + } RemovableDiskInfo; + struct { + STORAGE_MEDIA_TYPE MediaType; + ULONG MediaCharacteristics; + ULONG CurrentBlockSize; + STORAGE_BUS_TYPE BusType; + union { + struct { + UCHAR MediumType; + UCHAR DensityCode; + } ScsiInformation; + } BusSpecificData; + } TapeInfo; + } DeviceSpecific; +} DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO; + +typedef struct _GET_MEDIA_TYPES { + ULONG DeviceType; + ULONG MediaInfoCount; + DEVICE_MEDIA_INFO MediaInfo[1]; +} GET_MEDIA_TYPES, *PGET_MEDIA_TYPES; + +typedef struct _STORAGE_ADAPTER_DESCRIPTOR { + ULONG Version; + ULONG Size; + ULONG MaximumTransferLength; + ULONG MaximumPhysicalPages; + ULONG AlignmentMask; + BOOLEAN AdapterUsesPio; + BOOLEAN AdapterScansDown; + BOOLEAN CommandQueueing; + BOOLEAN AcceleratedTransfer; + STORAGE_BUS_TYPE BusType; + USHORT BusMajorVersion; + USHORT BusMinorVersion; +} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR; + +typedef struct _STORAGE_BUS_RESET_REQUEST { + UCHAR PathId; +} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST; + +typedef struct _STORAGE_DESCRIPTOR_HEADER { + ULONG Version; + ULONG Size; +} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER; + +typedef struct _STORAGE_DEVICE_DESCRIPTOR { + ULONG Version; + ULONG Size; + UCHAR DeviceType; + UCHAR DeviceTypeModifier; + BOOLEAN RemovableMedia; + BOOLEAN CommandQueueing; + ULONG VendorIdOffset; + ULONG ProductIdOffset; + ULONG ProductRevisionOffset; + ULONG SerialNumberOffset; + STORAGE_BUS_TYPE BusType; + ULONG RawPropertiesLength; + UCHAR RawDeviceProperties[1]; +} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR; + +typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR { + ULONG Version; + ULONG Size; + ULONG NumberOfIdentifiers; + UCHAR Identifiers[1]; +} STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR; + +typedef struct _STORAGE_DEVICE_NUMBER { + DEVICE_TYPE DeviceType; + ULONG DeviceNumber; + ULONG PartitionNumber; +} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER; + +typedef struct _STORAGE_PREDICT_FAILURE { + ULONG PredictFailure; + UCHAR VendorSpecific[512]; +} STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE; + +typedef enum _STORAGE_PROPERTY_ID { + StorageDeviceProperty = 0, + StorageAdapterProperty, + StorageDeviceIdProperty +} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID; + +typedef enum _STORAGE_QUERY_TYPE { + PropertyStandardQuery = 0, + PropertyExistsQuery, + PropertyMaskQuery, + PropertyQueryMaxDefined +} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE; + +typedef struct _STORAGE_PROPERTY_QUERY { + STORAGE_PROPERTY_ID PropertyId; + STORAGE_QUERY_TYPE QueryType; + UCHAR AdditionalParameters[1]; +} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDSTOR_H */ diff --git a/reactos/w32api/include/ddk/ntddtape.h b/reactos/w32api/include/ddk/ntddtape.h new file mode 100644 index 00000000000..4cc88691f6a --- /dev/null +++ b/reactos/w32api/include/ddk/ntddtape.h @@ -0,0 +1,84 @@ +/* + * ntddtape.h + * + * Tape device IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDTAPE_H +#define __NTDDTAPE_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddstor.h" + + +#define DD_TAPE_DEVICE_NAME "\\Device\\Tape" +#define DD_TAPE_DEVICE_NAME_U L"\\Device\\Tape" + +#define IOCTL_TAPE_BASE FILE_DEVICE_TAPE + +#define IOCTL_TAPE_CHECK_VERIFY CTL_CODE(IOCTL_TAPE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_CREATE_PARTITION CTL_CODE(IOCTL_TAPE_BASE, 0x000a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_TAPE_ERASE CTL_CODE(IOCTL_TAPE_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_TAPE_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_GET_DRIVE_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_GET_MEDIA_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_GET_POSITION CTL_CODE(IOCTL_TAPE_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_GET_STATUS CTL_CODE(IOCTL_TAPE_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS ) + +#define IOCTL_TAPE_PREPARE CTL_CODE(IOCTL_TAPE_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_SET_DRIVE_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_TAPE_SET_MEDIA_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_SET_POSITION CTL_CODE(IOCTL_TAPE_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_TAPE_WRITE_MARKS CTL_CODE(IOCTL_TAPE_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + + +typedef enum _TAPE_DRIVE_PROBLEM_TYPE { + TapeDriveProblemNone, + TapeDriveReadWriteWarning, + TapeDriveReadWriteError, + TapeDriveReadWarning, + TapeDriveWriteWarning, + TapeDriveReadError, + TapeDriveWriteError, + TapeDriveHardwareError, + TapeDriveUnsupportedMedia, + TapeDriveScsiConnectionError, + TapeDriveTimetoClean, + TapeDriveCleanDriveNow, + TapeDriveMediaLifeExpired, + TapeDriveSnappedTape +} TAPE_DRIVE_PROBLEM_TYPE; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDTAPE_H */ diff --git a/reactos/w32api/include/ddk/ntddtdi.h b/reactos/w32api/include/ddk/ntddtdi.h new file mode 100644 index 00000000000..5ff5ad0643f --- /dev/null +++ b/reactos/w32api/include/ddk/ntddtdi.h @@ -0,0 +1,66 @@ +/* + * ntddtdi.h + * + * TDI IOCTL interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDTDI_H +#define __NTDDTDI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define DD_TDI_DEVICE_NAME "\\Device\\UNKNOWN" +#define DD_TDI_DEVICE_NAME_U L"\\Device\\UNKNOWN" + +#define _TDI_CONTROL_CODE(Request, Method) \ + CTL_CODE(FILE_DEVICE_TRANSPORT, Request, Method, FILE_ANY_ACCESS) + +#define IOCTL_TDI_ACCEPT _TDI_CONTROL_CODE(0, METHOD_BUFFERED) +#define IOCTL_TDI_CONNECT _TDI_CONTROL_CODE(1, METHOD_BUFFERED) +#define IOCTL_TDI_DISCONNECT _TDI_CONTROL_CODE(2, METHOD_BUFFERED) +#define IOCTL_TDI_LISTEN _TDI_CONTROL_CODE(3, METHOD_BUFFERED) +#define IOCTL_TDI_QUERY_INFORMATION _TDI_CONTROL_CODE(4, METHOD_OUT_DIRECT) +#define IOCTL_TDI_RECEIVE _TDI_CONTROL_CODE(5, METHOD_OUT_DIRECT) +#define IOCTL_TDI_RECEIVE_DATAGRAM _TDI_CONTROL_CODE(6, METHOD_OUT_DIRECT) +#define IOCTL_TDI_SEND _TDI_CONTROL_CODE(7, METHOD_IN_DIRECT) +#define IOCTL_TDI_SEND_DATAGRAM _TDI_CONTROL_CODE(8, METHOD_IN_DIRECT) +#define IOCTL_TDI_SET_EVENT_HANDLER _TDI_CONTROL_CODE(9, METHOD_BUFFERED) +#define IOCTL_TDI_SET_INFORMATION _TDI_CONTROL_CODE(10, METHOD_IN_DIRECT) +#define IOCTL_TDI_ASSOCIATE_ADDRESS _TDI_CONTROL_CODE(11, METHOD_BUFFERED) +#define IOCTL_TDI_DISASSOCIATE_ADDRESS _TDI_CONTROL_CODE(12, METHOD_BUFFERED) +#define IOCTL_TDI_ACTION _TDI_CONTROL_CODE(13, METHOD_OUT_DIRECT) + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDTDI_H */ diff --git a/reactos/w32api/include/ddk/ntddvdeo.h b/reactos/w32api/include/ddk/ntddvdeo.h new file mode 100644 index 00000000000..e8afdbc2c7e --- /dev/null +++ b/reactos/w32api/include/ddk/ntddvdeo.h @@ -0,0 +1,444 @@ +/* + * ntddvdeo.h + * + * Definitions for video devices + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDVDEO_H +#define __NTDDVDEO_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define VIDEO_DEVICE_NAME "DISPLAY%d" +#define WVIDEO_DEVICE_NAME L"DISPLAY%d" + +#define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo" + +DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \ + 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99); + + +#define IOCTL_VIDEO_DISABLE_CURSOR \ + CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_DISABLE_POINTER \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_ENABLE_CURSOR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_ENABLE_POINTER \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_GET_BANK_SELECT_CODE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_GET_CHILD_STATE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_GET_POWER_MANAGEMENT \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_LOAD_AND_SET_FONT \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_MAP_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_AVAIL_MODES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_CURRENT_MODE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_CURSOR_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_CURSOR_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_POINTER_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_POINTER_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_RESET_DEVICE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SAVE_HARDWARE_STATE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_COLOR_REGISTERS \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CURRENT_MODE \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CURSOR_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_CURSOR_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_PALETTE_REGISTERS \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_POINTER_ATTR \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_POINTER_POSITION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SET_POWER_MANAGEMENT \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_SWITCH_DUALVIEW \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \ + CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS) + + + +typedef struct _VIDEO_MEMORY { + PVOID RequestedVirtualAddress; +} VIDEO_MEMORY, *PVIDEO_MEMORY; + +typedef struct _VIDEO_MEMORY_INFORMATION { + PVOID VideoRamBase; + ULONG VideoRamLength; + PVOID FrameBufferBase; + ULONG FrameBufferLength; +} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION; + +/* VIDEO_MODE.RequestedMode */ +#define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000 +#define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000 + +typedef struct _VIDEO_MODE { + ULONG RequestedMode; +} VIDEO_MODE, *PVIDEO_MODE; + +/* VIDEO_MODE_INFORMATION.AttributeFlags */ +#define VIDEO_MODE_COLOR 0x0001 +#define VIDEO_MODE_GRAPHICS 0x0002 +#define VIDEO_MODE_PALETTE_DRIVEN 0x0004 +#define VIDEO_MODE_MANAGED_PALETTE 0x0008 +#define VIDEO_MODE_INTERLACED 0x0010 +#define VIDEO_MODE_NO_OFF_SCREEN 0x0020 +#define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040 +#define VIDEO_MODE_BANKED 0x0080 +#define VIDEO_MODE_LINEAR 0x0100 + +typedef struct _VIDEO_MODE_INFORMATION { + ULONG Length; + ULONG ModeIndex; + ULONG VisScreenWidth; + ULONG VisScreenHeight; + ULONG ScreenStride; + ULONG NumberOfPlanes; + ULONG BitsPerPlane; + ULONG Frequency; + ULONG XMillimeter; + ULONG YMillimeter; + ULONG NumberRedBits; + ULONG NumberGreenBits; + ULONG NumberBlueBits; + ULONG RedMask; + ULONG GreenMask; + ULONG BlueMask; + ULONG AttributeFlags; + ULONG VideoMemoryBitmapWidth; + ULONG VideoMemoryBitmapHeight; + ULONG DriverSpecificAttributeFlags; +} VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION; + +typedef struct _VIDEO_NUM_MODES { + ULONG NumModes; + ULONG ModeInformationLength; +} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES; + +typedef enum _VIDEO_POWER_STATE { + VideoPowerUnspecified = 0, + VideoPowerOn = 1, + VideoPowerStandBy, + VideoPowerSuspend, + VideoPowerOff, + VideoPowerHibernate, + VideoPowerShutdown, + VideoPowerMaximum +} VIDEO_POWER_STATE, *PVIDEO_POWER_STATE; + +typedef struct _VIDEO_POWER_MANAGEMENT { + ULONG Length; + ULONG DPMSVersion; + ULONG PowerState; +} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT; + +typedef struct _VIDEO_PUBLIC_ACCESS_RANGES { + ULONG InIoSpace; + ULONG MappedInIoSpace; + PVOID VirtualAddress; +} VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES; + +typedef struct _VIDEO_SHARE_MEMORY { + HANDLE ProcessHandle; + ULONG ViewOffset; + ULONG ViewSize; + PVOID RequestedVirtualAddress; +} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY; + +typedef struct _VIDEO_SHARE_MEMORY_INFORMATION { + ULONG SharedViewOffset; + ULONG SharedViewSize; + PVOID VirtualAddress; +} VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION; + +/* VIDEO_BANK_SELECT.BankingFlags constants */ +#define PLANAR_HC 0x00000001 + +/* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */ +typedef enum _VIDEO_BANK_TYPE { + VideoNotBanked = 0, + VideoBanked1RW, + VideoBanked1R1W, + VideoBanked2RW, + NumVideoBankTypes +} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE; + +typedef struct _VIDEO_BANK_SELECT { + ULONG Length; + ULONG Size; + ULONG BankingFlags; + ULONG BankingType; + ULONG PlanarHCBankingType; + ULONG BitmapWidthInBytes; + ULONG BitmapSize; + ULONG Granularity; + ULONG PlanarHCGranularity; + ULONG CodeOffset; + ULONG PlanarHCBankCodeOffset; + ULONG PlanarHCEnableCodeOffset; + ULONG PlanarHCDisableCodeOffset; +} VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT; + +typedef struct _VIDEO_LOAD_FONT_INFORMATION { + USHORT WidthInPixels; + USHORT HeightInPixels; + ULONG FontSize; + UCHAR Font[1]; +} VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION; + +/* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */ +#define VIDEO_DEVICE_COLOR 0x00000001 +#define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002 + +typedef struct _VIDEO_COLOR_CAPABILITIES { + ULONG Length; + ULONG AttributeFlags; + LONG RedPhosphoreDecay; + LONG GreenPhosphoreDecay; + LONG BluePhosphoreDecay; + LONG WhiteChromaticity_x; + LONG WhiteChromaticity_y; + LONG WhiteChromaticity_Y; + LONG RedChromaticity_x; + LONG RedChromaticity_y; + LONG GreenChromaticity_x; + LONG GreenChromaticity_y; + LONG BlueChromaticity_x; + LONG BlueChromaticity_y; + LONG WhiteGamma; + LONG RedGamma; + LONG GreenGamma; + LONG BlueGamma; +} VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES; + +typedef struct _VIDEO_CURSOR_ATTRIBUTES { + USHORT Width; + USHORT Height; + SHORT Column; + SHORT Row; + UCHAR Rate; + UCHAR Enable; +} VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES; + +typedef struct _VIDEO_CURSOR_POSITION { + SHORT Column; + SHORT Row; +} VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION; + +typedef struct _VIDEO_POINTER_ATTRIBUTES { + ULONG Flags; + ULONG Width; + ULONG Height; + ULONG WidthInBytes; + ULONG Enable; + SHORT Column; + SHORT Row; + UCHAR Pixels[1]; +} VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES; + +/* VIDEO_POINTER_CAPABILITIES.Flags */ +#define VIDEO_MODE_ASYNC_POINTER 0x01 +#define VIDEO_MODE_MONO_POINTER 0x02 +#define VIDEO_MODE_COLOR_POINTER 0x04 +#define VIDEO_MODE_ANIMATE_START 0x08 +#define VIDEO_MODE_ANIMATE_UPDATE 0x10 + +typedef struct _VIDEO_POINTER_CAPABILITIES { + ULONG Flags; + ULONG MaxWidth; + ULONG MaxHeight; + ULONG HWPtrBitmapStart; + ULONG HWPtrBitmapEnd; +} VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES; + +typedef struct _VIDEO_POINTER_POSITION { + SHORT Column; + SHORT Row; +} VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION; + + +/* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */ +#define VIDEO_STATE_NON_STANDARD_VGA 0x00000001 +#define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002 +#define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004 + +typedef struct _VIDEO_HARDWARE_STATE_HEADER { + ULONG Length; + UCHAR PortValue[0x30]; + ULONG AttribIndexDataState; + ULONG BasicSequencerOffset; + ULONG BasicCrtContOffset; + ULONG BasicGraphContOffset; + ULONG BasicAttribContOffset; + ULONG BasicDacOffset; + ULONG BasicLatchesOffset; + ULONG ExtendedSequencerOffset; + ULONG ExtendedCrtContOffset; + ULONG ExtendedGraphContOffset; + ULONG ExtendedAttribContOffset; + ULONG ExtendedDacOffset; + ULONG ExtendedValidatorStateOffset; + ULONG ExtendedMiscDataOffset; + ULONG PlaneLength; + ULONG Plane1Offset; + ULONG Plane2Offset; + ULONG Plane3Offset; + ULONG Plane4Offset; + ULONG VGAStateFlags; + ULONG DIBOffset; + ULONG DIBBitsPerPixel; + ULONG DIBXResolution; + ULONG DIBYResolution; + ULONG DIBXlatOffset; + ULONG DIBXlatLength; + ULONG VesaInfoOffset; + PVOID FrameBufferData; +} VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER; + +typedef struct _VIDEO_CLUTDATA { + UCHAR Red; + UCHAR Green; + UCHAR Blue; + UCHAR Unused; +} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA; + +typedef struct { + USHORT NumEntries; + USHORT FirstEntry; + union { + VIDEO_CLUTDATA RgbArray; + ULONG RgbLong; + } LookupTable[1]; +} VIDEO_CLUT, *PVIDEO_CLUT; + +typedef struct _VIDEO_PALETTE_DATA { + USHORT NumEntries; + USHORT FirstEntry; + USHORT Colors[1]; +} VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA; + +typedef struct _VIDEO_HARDWARE_STATE { + PVIDEO_HARDWARE_STATE_HEADER StateHeader; + ULONG StateLength; +} VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE; + +#define VIDEO_CHILD_ACTIVE 0x00000001 +#define VIDEO_CHILD_DETACHED 0x00000002 +#define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000 +#define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000 + +#define VIDEO_DUALVIEW_REMOVABLE 0x00000001 +#define VIDEO_DUALVIEW_PRIMARY 0x80000000 +#define VIDEO_DUALVIEW_SECONDARY 0x40000000 + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDVDEO_H */ diff --git a/reactos/w32api/include/ddk/ntddvol.h b/reactos/w32api/include/ddk/ntddvol.h new file mode 100644 index 00000000000..a5d9064be4a --- /dev/null +++ b/reactos/w32api/include/ddk/ntddvol.h @@ -0,0 +1,146 @@ +/* + * ntddvol.h + * + * Volume IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTDDVOL_H +#define __NTDDVOL_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define IOCTL_VOLUME_BASE ((ULONG) 'V') + +#define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL \ + CTL_CODE(IOCTL_VOLUME_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL \ + CTL_CODE(IOCTL_VOLUME_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_READ_PLEX \ + CTL_CODE(IOCTL_VOLUME_BASE, 11, METHOD_OUT_DIRECT, FILE_READ_ACCESS) + +#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS \ + CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_IS_CLUSTERED \ + CTL_CODE(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_QUERY_VOLUME_NUMBER \ + CTL_CODE(IOCTL_VOLUME_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_IS_PARTITION \ + CTL_CODE(IOCTL_VOLUME_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_SET_GPT_ATTRIBUTES \ + CTL_CODE(IOCTL_VOLUME_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_GET_GPT_ATTRIBUTES \ + CTL_CODE(IOCTL_VOLUME_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE \ + CTL_CODE(IOCTL_VOLUME_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_ONLINE \ + CTL_CODE(IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_VOLUME_OFFLINE \ + CTL_CODE(IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_VOLUME_IS_OFFLINE \ + CTL_CODE(IOCTL_VOLUME_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_IS_IO_CAPABLE \ + CTL_CODE(IOCTL_VOLUME_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_VOLUME_QUERY_FAILOVER_SET \ + CTL_CODE(IOCTL_VOLUME_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +typedef struct _VOLUME_LOGICAL_OFFSET { + LONGLONG LogicalOffset; +} VOLUME_LOGICAL_OFFSET, *PVOLUME_LOGICAL_OFFSET; + +typedef struct _VOLUME_PHYSICAL_OFFSET { + ULONG DiskNumber; + LONGLONG Offset; +} VOLUME_PHYSICAL_OFFSET, *PVOLUME_PHYSICAL_OFFSET; + +typedef struct _VOLUME_PHYSICAL_OFFSETS { + ULONG NumberOfPhysicalOffsets; + VOLUME_PHYSICAL_OFFSET PhysicalOffset[1]; +} VOLUME_PHYSICAL_OFFSETS, *PVOLUME_PHYSICAL_OFFSETS; + +typedef struct _VOLUME_READ_PLEX_INPUT { + LARGE_INTEGER ByteOffset; + ULONG Length; + ULONG PlexNumber; +} VOLUME_READ_PLEX_INPUT, *PVOLUME_READ_PLEX_INPUT; + +typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION { + ULONGLONG GptAttributes; +} VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION; + +typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION { + ULONGLONG GptAttributes; + BOOLEAN RevertOnClose; + BOOLEAN ApplyToAllConnectedVolumes; + USHORT Reserved1; + ULONG Reserved2; +} VOLUME_SET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION; + +typedef struct _DISK_EXTENT { + ULONG DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} DISK_EXTENT, *PDISK_EXTENT; + +typedef struct _VOLUME_DISK_EXTENTS { + ULONG NumberOfDiskExtents; + DISK_EXTENT Extents[1]; +} VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS; + +typedef struct _VOLUME_NUMBER { + ULONG VolumeNumber; + WCHAR VolumeManagerName[8]; +} VOLUME_NUMBER, *PVOLUME_NUMBER; + +typedef struct _VOLUME_FAILOVER_SET { + ULONG NumberOfDisks; + ULONG DiskNumbers[1]; +} VOLUME_FAILOVER_SET, *PVOLUME_FAILOVER_SET; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTDDVOL_H */ diff --git a/reactos/w32api/include/ddk/ntifs.h b/reactos/w32api/include/ddk/ntifs.h new file mode 100644 index 00000000000..b09c1630615 --- /dev/null +++ b/reactos/w32api/include/ddk/ntifs.h @@ -0,0 +1,4691 @@ +/* + * ntifs.h + * + * Windows NT Filesystem Driver Developer Kit + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Bo Brantén + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef _NTIFS_ +#define _NTIFS_ +#define _GNU_NTIFS_ + +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntapi.h" + +#define VER_PRODUCTBUILD 10000 + +#ifndef NTSYSAPI +#define NTSYSAPI +#endif + +#ifndef NTKERNELAPI +#define NTKERNELAPI STDCALL +#endif + +typedef struct _SE_EXPORTS *PSE_EXPORTS; + +extern PUCHAR *FsRtlLegalAnsiCharacterArray; +extern PSE_EXPORTS SeExports; +extern PACL SePublicDefaultDacl; +extern PACL SeSystemDefaultDacl; + +#define ANSI_DOS_STAR ('<') +#define ANSI_DOS_QM ('>') +#define ANSI_DOS_DOT ('"') + +#define DOS_STAR (L'<') +#define DOS_QM (L'>') +#define DOS_DOT (L'"') + +/* also in winnt.h */ +#define ACCESS_ALLOWED_ACE_TYPE (0x0) +#define ACCESS_DENIED_ACE_TYPE (0x1) +#define SYSTEM_AUDIT_ACE_TYPE (0x2) +#define SYSTEM_ALARM_ACE_TYPE (0x3) + +#define COMPRESSION_FORMAT_NONE (0x0000) +#define COMPRESSION_FORMAT_DEFAULT (0x0001) +#define COMPRESSION_FORMAT_LZNT1 (0x0002) +#define COMPRESSION_ENGINE_STANDARD (0x0000) +#define COMPRESSION_ENGINE_MAXIMUM (0x0100) +#define COMPRESSION_ENGINE_HIBER (0x0200) + +#define FILE_ACTION_ADDED 0x00000001 +#define FILE_ACTION_REMOVED 0x00000002 +#define FILE_ACTION_MODIFIED 0x00000003 +#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 +#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 +#define FILE_ACTION_ADDED_STREAM 0x00000006 +#define FILE_ACTION_REMOVED_STREAM 0x00000007 +#define FILE_ACTION_MODIFIED_STREAM 0x00000008 +#define FILE_ACTION_REMOVED_BY_DELETE 0x00000009 +#define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A +#define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B +/* end winnt.h */ + +#define FILE_EA_TYPE_BINARY 0xfffe +#define FILE_EA_TYPE_ASCII 0xfffd +#define FILE_EA_TYPE_BITMAP 0xfffb +#define FILE_EA_TYPE_METAFILE 0xfffa +#define FILE_EA_TYPE_ICON 0xfff9 +#define FILE_EA_TYPE_EA 0xffee +#define FILE_EA_TYPE_MVMT 0xffdf +#define FILE_EA_TYPE_MVST 0xffde +#define FILE_EA_TYPE_ASN1 0xffdd +#define FILE_EA_TYPE_FAMILY_IDS 0xff01 + +#define FILE_NEED_EA 0x00000080 + +/* also in winnt.h */ +#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 +#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 +#define FILE_NOTIFY_CHANGE_NAME 0x00000003 +#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 +#define FILE_NOTIFY_CHANGE_SIZE 0x00000008 +#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 +#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 +#define FILE_NOTIFY_CHANGE_CREATION 0x00000040 +#define FILE_NOTIFY_CHANGE_EA 0x00000080 +#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 +#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200 +#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400 +#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800 +#define FILE_NOTIFY_VALID_MASK 0x00000fff +/* end winnt.h */ + +#define FILE_OPLOCK_BROKEN_TO_LEVEL_2 0x00000007 +#define FILE_OPLOCK_BROKEN_TO_NONE 0x00000008 + +#define FILE_OPBATCH_BREAK_UNDERWAY 0x00000009 + +#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 +#define FILE_CASE_PRESERVED_NAMES 0x00000002 +#define FILE_UNICODE_ON_DISK 0x00000004 +#define FILE_PERSISTENT_ACLS 0x00000008 +#define FILE_FILE_COMPRESSION 0x00000010 +#define FILE_VOLUME_QUOTAS 0x00000020 +#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 +#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 +#define FS_LFN_APIS 0x00004000 +#define FILE_VOLUME_IS_COMPRESSED 0x00008000 +#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 +#define FILE_SUPPORTS_ENCRYPTION 0x00020000 +#define FILE_NAMED_STREAMS 0x00040000 + +#define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000 +#define FILE_PIPE_MESSAGE_TYPE 0x00000001 + +#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000 +#define FILE_PIPE_MESSAGE_MODE 0x00000001 + +#define FILE_PIPE_QUEUE_OPERATION 0x00000000 +#define FILE_PIPE_COMPLETE_OPERATION 0x00000001 + +#define FILE_PIPE_INBOUND 0x00000000 +#define FILE_PIPE_OUTBOUND 0x00000001 +#define FILE_PIPE_FULL_DUPLEX 0x00000002 + +#define FILE_PIPE_DISCONNECTED_STATE 0x00000001 +#define FILE_PIPE_LISTENING_STATE 0x00000002 +#define FILE_PIPE_CONNECTED_STATE 0x00000003 +#define FILE_PIPE_CLOSING_STATE 0x00000004 + +#define FILE_PIPE_CLIENT_END 0x00000000 +#define FILE_PIPE_SERVER_END 0x00000001 + +#define FILE_PIPE_READ_DATA 0x00000000 +#define FILE_PIPE_WRITE_SPACE 0x00000001 + +#define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */ +#define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT) +#define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT) +#define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT +#define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM +#define FILE_STORAGE_TYPE_MASK 0x000f0000 +#define FILE_STORAGE_TYPE_SHIFT 16 + +#define FILE_VC_QUOTA_NONE 0x00000000 +#define FILE_VC_QUOTA_TRACK 0x00000001 +#define FILE_VC_QUOTA_ENFORCE 0x00000002 +#define FILE_VC_QUOTA_MASK 0x00000003 + +#define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004 +#define FILE_VC_CONTENT_INDEX_DISABLED 0x00000008 + +#define FILE_VC_LOG_QUOTA_THRESHOLD 0x00000010 +#define FILE_VC_LOG_QUOTA_LIMIT 0x00000020 +#define FILE_VC_LOG_VOLUME_THRESHOLD 0x00000040 +#define FILE_VC_LOG_VOLUME_LIMIT 0x00000080 + +#define FILE_VC_QUOTAS_INCOMPLETE 0x00000100 +#define FILE_VC_QUOTAS_REBUILDING 0x00000200 + +#define FILE_VC_VALID_MASK 0x000003ff + +#define FSRTL_FLAG_FILE_MODIFIED (0x01) +#define FSRTL_FLAG_FILE_LENGTH_CHANGED (0x02) +#define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04) +#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08) +#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10) +#define FSRTL_FLAG_USER_MAPPED_FILE (0x20) +#define FSRTL_FLAG_EOF_ADVANCE_ACTIVE (0x80) + +#define FSRTL_FLAG2_DO_MODIFIED_WRITE (0x01) + +#define FSRTL_FSP_TOP_LEVEL_IRP (0x01) +#define FSRTL_CACHE_TOP_LEVEL_IRP (0x02) +#define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03) +#define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04) +#define FSRTL_MAX_TOP_LEVEL_IRP_FLAG (0x04) + +#define FSRTL_VOLUME_DISMOUNT 1 +#define FSRTL_VOLUME_DISMOUNT_FAILED 2 +#define FSRTL_VOLUME_LOCK 3 +#define FSRTL_VOLUME_LOCK_FAILED 4 +#define FSRTL_VOLUME_UNLOCK 5 +#define FSRTL_VOLUME_MOUNT 6 + +#define FSRTL_WILD_CHARACTER 0x08 + +#ifdef _X86_ +#define HARDWARE_PTE HARDWARE_PTE_X86 +#define PHARDWARE_PTE PHARDWARE_PTE_X86 +#else +#define HARDWARE_PTE ULONG +#define PHARDWARE_PTE PULONG +#endif + +#define IO_CHECK_CREATE_PARAMETERS 0x0200 +#define IO_ATTACH_DEVICE 0x0400 + +#define IO_ATTACH_DEVICE_API 0x80000000 +/* also in winnt.h */ +#define IO_COMPLETION_QUERY_STATE 0x0001 +#define IO_COMPLETION_MODIFY_STATE 0x0002 +#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +/* end winnt.h */ +#define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE 64 +#define IO_FILE_OBJECT_PAGED_POOL_CHARGE 1024 + +#define IO_TYPE_APC 18 +#define IO_TYPE_DPC 19 +#define IO_TYPE_DEVICE_QUEUE 20 +#define IO_TYPE_EVENT_PAIR 21 +#define IO_TYPE_INTERRUPT 22 +#define IO_TYPE_PROFILE 23 + +#define IRP_BEING_VERIFIED 0x10 + +#define MAILSLOT_CLASS_FIRSTCLASS 1 +#define MAILSLOT_CLASS_SECONDCLASS 2 + +#define MAILSLOT_SIZE_AUTO 0 + +#define MAP_PROCESS 1L +#define MAP_SYSTEM 2L +#define MEM_DOS_LIM 0x40000000 +/* also in winnt.h */ +#define MEM_IMAGE SEC_IMAGE +/* end winnt.h */ +#define OB_TYPE_TYPE 1 +#define OB_TYPE_DIRECTORY 2 +#define OB_TYPE_SYMBOLIC_LINK 3 +#define OB_TYPE_TOKEN 4 +#define OB_TYPE_PROCESS 5 +#define OB_TYPE_THREAD 6 +#define OB_TYPE_EVENT 7 +#define OB_TYPE_EVENT_PAIR 8 +#define OB_TYPE_MUTANT 9 +#define OB_TYPE_SEMAPHORE 10 +#define OB_TYPE_TIMER 11 +#define OB_TYPE_PROFILE 12 +#define OB_TYPE_WINDOW_STATION 13 +#define OB_TYPE_DESKTOP 14 +#define OB_TYPE_SECTION 15 +#define OB_TYPE_KEY 16 +#define OB_TYPE_PORT 17 +#define OB_TYPE_ADAPTER 18 +#define OB_TYPE_CONTROLLER 19 +#define OB_TYPE_DEVICE 20 +#define OB_TYPE_DRIVER 21 +#define OB_TYPE_IO_COMPLETION 22 +#define OB_TYPE_FILE 23 + +#define PIN_WAIT (1) +#define PIN_EXCLUSIVE (2) +#define PIN_NO_READ (4) +#define PIN_IF_BCB (8) + +#define PORT_CONNECT 0x0001 +#define PORT_ALL_ACCESS (STANDARD_RIGHTS_ALL |\ + PORT_CONNECT) +/* also in winnt.h */ +#define SEC_BASED 0x00200000 +#define SEC_NO_CHANGE 0x00400000 +#define SEC_FILE 0x00800000 +#define SEC_IMAGE 0x01000000 +#define SEC_VLM 0x02000000 +#define SEC_RESERVE 0x04000000 +#define SEC_COMMIT 0x08000000 +#define SEC_NOCACHE 0x10000000 + +#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} +#define SECURITY_WORLD_RID (0x00000000L) + +#define SID_REVISION 1 + +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) + +#define 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) + +#define TOKEN_READ (STANDARD_RIGHTS_READ |\ + TOKEN_QUERY) + +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) + +#define TOKEN_SOURCE_LENGTH 8 +/* end winnt.h */ + +#define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x01 +#define TOKEN_HAS_BACKUP_PRIVILEGE 0x02 +#define TOKEN_HAS_RESTORE_PRIVILEGE 0x04 +#define TOKEN_HAS_ADMIN_GROUP 0x08 +#define TOKEN_IS_RESTRICTED 0x10 + +#define VACB_MAPPING_GRANULARITY (0x40000) +#define VACB_OFFSET_SHIFT (18) + +#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) + + +#define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#if (VER_PRODUCTBUILD >= 1381) + +#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS) + +#endif /* (VER_PRODUCTBUILD >= 1381) */ + +#if (VER_PRODUCTBUILD >= 2195) + +#define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_READ_DATA) +#define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA) +#define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +#define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA) + +#define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_PIPE_ASSIGN_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_DISCONNECT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_PEEK CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_PIPE_QUERY_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_PIPE_WAIT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_SET_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_PIPE_INTERNAL_READ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA) +#define FSCTL_PIPE_INTERNAL_WRITE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA) +#define FSCTL_PIPE_INTERNAL_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA) +#define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA) + +#define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS) + +typedef PVOID PEJOB; +typedef PVOID OPLOCK, *POPLOCK; +typedef PVOID PWOW64_PROCESS; + +typedef struct _CACHE_MANAGER_CALLBACKS *PCACHE_MANAGER_CALLBACKS; +typedef struct _EPROCESS_QUOTA_BLOCK *PEPROCESS_QUOTA_BLOCK; +typedef struct _FILE_GET_QUOTA_INFORMATION *PFILE_GET_QUOTA_INFORMATION; +typedef struct _HANDLE_TABLE *PHANDLE_TABLE; +typedef struct _KEVENT_PAIR *PKEVENT_PAIR; +typedef struct _KPROCESS *PKPROCESS; +typedef struct _KQUEUE *PKQUEUE; +typedef struct _KTRAP_FRAME *PKTRAP_FRAME; +typedef struct _MAILSLOT_CREATE_PARAMETERS *PMAILSLOT_CREATE_PARAMETERS; +typedef struct _MMWSL *PMMWSL; +typedef struct _NAMED_PIPE_CREATE_PARAMETERS *PNAMED_PIPE_CREATE_PARAMETERS; +typedef struct _OBJECT_DIRECTORY *POBJECT_DIRECTORY; +typedef struct _PAGEFAULT_HISTORY *PPAGEFAULT_HISTORY; +typedef struct _PS_IMPERSONATION_INFORMATION *PPS_IMPERSONATION_INFORMATION; +typedef struct _SECTION_OBJECT *PSECTION_OBJECT; +typedef struct _SHARED_CACHE_MAP *PSHARED_CACHE_MAP; +typedef struct _TERMINATION_PORT *PTERMINATION_PORT; +typedef struct _VACB *PVACB; +typedef struct _VAD_HEADER *PVAD_HEADER; + +typedef struct _NOTIFY_SYNC +{ + ULONG Unknown0; + ULONG Unknown1; + ULONG Unknown2; + USHORT Unknown3; + USHORT Unknown4; + ULONG Unknown5; + ULONG Unknown6; + ULONG Unknown7; + ULONG Unknown8; + ULONG Unknown9; + ULONG Unknown10; +} NOTIFY_SYNC, * PNOTIFY_SYNC; + +typedef enum _FAST_IO_POSSIBLE { + FastIoIsNotPossible, + FastIoIsPossible, + FastIoIsQuestionable +} FAST_IO_POSSIBLE; + +typedef enum _FILE_STORAGE_TYPE { + StorageTypeDefault = 1, + StorageTypeDirectory, + StorageTypeFile, + StorageTypeJunctionPoint, + StorageTypeCatalog, + StorageTypeStructuredStorage, + StorageTypeEmbedding, + StorageTypeStream +} FILE_STORAGE_TYPE; + +typedef enum _IO_COMPLETION_INFORMATION_CLASS { + IoCompletionBasicInformation +} IO_COMPLETION_INFORMATION_CLASS; + +typedef enum _OBJECT_INFO_CLASS { + ObjectBasicInfo, + ObjectNameInfo, + ObjectTypeInfo, + ObjectAllTypesInfo, + ObjectProtectionInfo +} OBJECT_INFO_CLASS; + +typedef struct _HARDWARE_PTE_X86 { + ULONG Valid : 1; + ULONG Write : 1; + ULONG Owner : 1; + ULONG WriteThrough : 1; + ULONG CacheDisable : 1; + ULONG Accessed : 1; + ULONG Dirty : 1; + ULONG LargePage : 1; + ULONG Global : 1; + ULONG CopyOnWrite : 1; + ULONG Prototype : 1; + ULONG reserved : 1; + ULONG PageFrameNumber : 20; +} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86; + +typedef struct _KAPC_STATE { + LIST_ENTRY ApcListHead[2]; + PKPROCESS Process; + BOOLEAN KernelApcInProgress; + BOOLEAN KernelApcPending; + BOOLEAN UserApcPending; +} KAPC_STATE, *PKAPC_STATE; + +typedef struct _KGDTENTRY { + USHORT LimitLow; + USHORT BaseLow; + union { + struct { + UCHAR BaseMid; + UCHAR Flags1; + UCHAR Flags2; + UCHAR BaseHi; + } Bytes; + struct { + ULONG BaseMid : 8; + ULONG Type : 5; + ULONG Dpl : 2; + ULONG Pres : 1; + ULONG LimitHi : 4; + ULONG Sys : 1; + ULONG Reserved_0 : 1; + ULONG Default_Big : 1; + ULONG Granularity : 1; + ULONG BaseHi : 8; + } Bits; + } HighWord; +} KGDTENTRY, *PKGDTENTRY; + +typedef struct _KIDTENTRY { + USHORT Offset; + USHORT Selector; + USHORT Access; + USHORT ExtendedOffset; +} KIDTENTRY, *PKIDTENTRY; + +#if (VER_PRODUCTBUILD >= 2600) + +typedef struct _MMSUPPORT_FLAGS { + ULONG SessionSpace : 1; + ULONG BeingTrimmed : 1; + ULONG SessionLeader : 1; + ULONG TrimHard : 1; + ULONG WorkingSetHard : 1; + ULONG AddressSpaceBeingDeleted : 1; + ULONG Available : 10; + ULONG AllowWorkingSetAdjustment : 8; + ULONG MemoryPriority : 8; +} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS; + +#else + +typedef struct _MMSUPPORT_FLAGS { + ULONG SessionSpace : 1; + ULONG BeingTrimmed : 1; + ULONG ProcessInSession : 1; + ULONG SessionLeader : 1; + ULONG TrimHard : 1; + ULONG WorkingSetHard : 1; + ULONG WriteWatch : 1; + ULONG Filler : 25; +} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS; + +#endif + +#if (VER_PRODUCTBUILD >= 2600) + +typedef struct _MMSUPPORT { + LARGE_INTEGER LastTrimTime; + MMSUPPORT_FLAGS Flags; + ULONG PageFaultCount; + ULONG PeakWorkingSetSize; + ULONG WorkingSetSize; + ULONG MinimumWorkingSetSize; + ULONG MaximumWorkingSetSize; + PMMWSL VmWorkingSetList; + LIST_ENTRY WorkingSetExpansionLinks; + ULONG Claim; + ULONG NextEstimationSlot; + ULONG NextAgingSlot; + ULONG EstimatedAvailable; + ULONG GrowthSinceLastEstimate; +} MMSUPPORT, *PMMSUPPORT; + +#else + +typedef struct _MMSUPPORT { + LARGE_INTEGER LastTrimTime; + ULONG LastTrimFaultCount; + ULONG PageFaultCount; + ULONG PeakWorkingSetSize; + ULONG WorkingSetSize; + ULONG MinimumWorkingSetSize; + ULONG MaximumWorkingSetSize; + PMMWSL VmWorkingSetList; + LIST_ENTRY WorkingSetExpansionLinks; + BOOLEAN AllowWorkingSetAdjustment; + BOOLEAN AddressSpaceBeingDeleted; + UCHAR ForegroundSwitchCount; + UCHAR MemoryPriority; +#if (VER_PRODUCTBUILD >= 2195) + union { + ULONG LongFlags; + MMSUPPORT_FLAGS Flags; + } u; + ULONG Claim; + ULONG NextEstimationSlot; + ULONG NextAgingSlot; + ULONG EstimatedAvailable; + ULONG GrowthSinceLastEstimate; +#endif /* (VER_PRODUCTBUILD >= 2195) */ +} MMSUPPORT, *PMMSUPPORT; + +#endif + +typedef struct _SE_AUDIT_PROCESS_CREATION_INFO { + POBJECT_NAME_INFORMATION ImageFileName; +} SE_AUDIT_PROCESS_CREATION_INFO, *PSE_AUDIT_PROCESS_CREATION_INFO; + +typedef struct _BITMAP_RANGE { + LIST_ENTRY Links; + LARGE_INTEGER BasePage; + ULONG FirstDirtyPage; + ULONG LastDirtyPage; + ULONG DirtyPages; + PULONG Bitmap; +} BITMAP_RANGE, *PBITMAP_RANGE; + +typedef struct _CACHE_UNINITIALIZE_EVENT { + struct _CACHE_UNINITIALIZE_EVENT *Next; + KEVENT Event; +} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT; + +typedef struct _CC_FILE_SIZES { + LARGE_INTEGER AllocationSize; + LARGE_INTEGER FileSize; + LARGE_INTEGER ValidDataLength; +} CC_FILE_SIZES, *PCC_FILE_SIZES; + +typedef struct _COMPRESSED_DATA_INFO { + USHORT CompressionFormatAndEngine; + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved; + USHORT NumberOfChunks; + ULONG CompressedChunkSizes[ANYSIZE_ARRAY]; +} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO; + +typedef struct _DEVICE_MAP { + POBJECT_DIRECTORY DosDevicesDirectory; + POBJECT_DIRECTORY GlobalDosDevicesDirectory; + ULONG ReferenceCount; + ULONG DriveMap; + UCHAR DriveType[32]; +} DEVICE_MAP, *PDEVICE_MAP; + +#if (VER_PRODUCTBUILD >= 2600) + +typedef struct _EX_FAST_REF { + _ANONYMOUS_UNION union { + PVOID Object; + ULONG RefCnt : 3; + ULONG Value; + } DUMMYUNIONNAME; +} EX_FAST_REF, *PEX_FAST_REF; + +typedef struct _EX_PUSH_LOCK { + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + ULONG Waiting : 1; + ULONG Exclusive : 1; + ULONG Shared : 30; + } DUMMYSTRUCTNAME; + ULONG Value; + PVOID Ptr; + } DUMMYUNIONNAME; +} EX_PUSH_LOCK, *PEX_PUSH_LOCK; + +typedef struct _EX_RUNDOWN_REF { + _ANONYMOUS_UNION union { + ULONG Count; + PVOID Ptr; + } DUMMYUNIONNAME; +} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF; + +#endif + +typedef struct _EPROCESS_QUOTA_ENTRY { + ULONG Usage; + ULONG Limit; + ULONG Peak; + ULONG Return; +} EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY; + +typedef struct _EPROCESS_QUOTA_BLOCK { + EPROCESS_QUOTA_ENTRY QuotaEntry[3]; + LIST_ENTRY QuotaList; + ULONG ReferenceCount; + ULONG ProcessCount; +} EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK; + +/* + * When needing these parameters cast your PIO_STACK_LOCATION to + * PEXTENDED_IO_STACK_LOCATION + */ +#if !defined(_ALPHA_) +#include +#endif +typedef struct _EXTENDED_IO_STACK_LOCATION { + + /* Included for padding */ + UCHAR MajorFunction; + UCHAR MinorFunction; + UCHAR Flags; + UCHAR Control; + + union { + + struct { + PIO_SECURITY_CONTEXT SecurityContext; + ULONG Options; + USHORT Reserved; + USHORT ShareAccess; + PMAILSLOT_CREATE_PARAMETERS Parameters; + } CreateMailslot; + + struct { + PIO_SECURITY_CONTEXT SecurityContext; + ULONG Options; + USHORT Reserved; + USHORT ShareAccess; + PNAMED_PIPE_CREATE_PARAMETERS Parameters; + } CreatePipe; + + struct { + ULONG OutputBufferLength; + ULONG InputBufferLength; + ULONG FsControlCode; + PVOID Type3InputBuffer; + } FileSystemControl; + + struct { + PLARGE_INTEGER Length; + ULONG Key; + LARGE_INTEGER ByteOffset; + } LockControl; + + struct { + ULONG Length; + ULONG CompletionFilter; + } NotifyDirectory; + + struct { + ULONG Length; + PUNICODE_STRING FileName; + FILE_INFORMATION_CLASS FileInformationClass; + ULONG FileIndex; + } QueryDirectory; + + struct { + ULONG Length; + PVOID EaList; + ULONG EaListLength; + ULONG EaIndex; + } QueryEa; + + struct { + ULONG Length; + PSID StartSid; + PFILE_GET_QUOTA_INFORMATION SidList; + ULONG SidListLength; + } QueryQuota; + + struct { + ULONG Length; + } SetEa; + + struct { + ULONG Length; + } SetQuota; + + struct { + ULONG Length; + FS_INFORMATION_CLASS FsInformationClass; + } SetVolume; + + } Parameters; + PDEVICE_OBJECT DeviceObject; + PFILE_OBJECT FileObject; + PIO_COMPLETION_ROUTINE CompletionRoutine; + PVOID Context; + +} EXTENDED_IO_STACK_LOCATION, *PEXTENDED_IO_STACK_LOCATION; +#if !defined(_ALPHA_) +#include +#endif + +typedef struct _FILE_ACCESS_INFORMATION { + ACCESS_MASK AccessFlags; +} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION; + +typedef struct _FILE_ALLOCATION_INFORMATION { + LARGE_INTEGER AllocationSize; +} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION; + +typedef struct _FILE_BOTH_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + CCHAR ShortNameLength; + WCHAR ShortName[12]; + WCHAR FileName[1]; +} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION; + +typedef struct _FILE_COMPLETION_INFORMATION { + HANDLE Port; + ULONG Key; +} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION; + +typedef struct _FILE_COMPRESSION_INFORMATION { + LARGE_INTEGER CompressedFileSize; + USHORT CompressionFormat; + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved[3]; +} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION; + +typedef struct _FILE_COPY_ON_WRITE_INFORMATION { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_COPY_ON_WRITE_INFORMATION, *PFILE_COPY_ON_WRITE_INFORMATION; + +typedef struct _FILE_DIRECTORY_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION; + +typedef struct _FILE_FULL_DIRECTORY_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + WCHAR FileName[0]; +} FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION; + +typedef struct _FILE_BOTH_DIRECTORY_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + CHAR ShortNameLength; + WCHAR ShortName[12]; + WCHAR FileName[0]; +} FILE_BOTH_DIRECTORY_INFORMATION, *PFILE_BOTH_DIRECTORY_INFORMATION; + +typedef struct _FILE_EA_INFORMATION { + ULONG EaSize; +} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION; + +typedef struct _FILE_FS_ATTRIBUTE_INFORMATION { + ULONG FileSystemAttributes; + ULONG MaximumComponentNameLength; + ULONG FileSystemNameLength; + WCHAR FileSystemName[1]; +} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION; + +typedef struct _FILE_FS_CONTROL_INFORMATION { + LARGE_INTEGER FreeSpaceStartFiltering; + LARGE_INTEGER FreeSpaceThreshold; + LARGE_INTEGER FreeSpaceStopFiltering; + LARGE_INTEGER DefaultQuotaThreshold; + LARGE_INTEGER DefaultQuotaLimit; + ULONG FileSystemControlFlags; +} FILE_FS_CONTROL_INFORMATION, *PFILE_FS_CONTROL_INFORMATION; + +typedef struct _FILE_FS_FULL_SIZE_INFORMATION { + LARGE_INTEGER TotalAllocationUnits; + LARGE_INTEGER CallerAvailableAllocationUnits; + LARGE_INTEGER ActualAvailableAllocationUnits; + ULONG SectorsPerAllocationUnit; + ULONG BytesPerSector; +} FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION; + +typedef struct _FILE_FS_LABEL_INFORMATION { + ULONG VolumeLabelLength; + WCHAR VolumeLabel[1]; +} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION; + +#if (VER_PRODUCTBUILD >= 2195) + +typedef struct _FILE_FS_OBJECT_ID_INFORMATION { + UCHAR ObjectId[16]; + UCHAR ExtendedInfo[48]; +} FILE_FS_OBJECT_ID_INFORMATION, *PFILE_FS_OBJECT_ID_INFORMATION; + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +typedef struct _FILE_FS_SIZE_INFORMATION { + LARGE_INTEGER TotalAllocationUnits; + LARGE_INTEGER AvailableAllocationUnits; + ULONG SectorsPerAllocationUnit; + ULONG BytesPerSector; +} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; + +typedef struct _FILE_FS_VOLUME_INFORMATION { + LARGE_INTEGER VolumeCreationTime; + ULONG VolumeSerialNumber; + ULONG VolumeLabelLength; + BOOLEAN SupportsObjects; + WCHAR VolumeLabel[1]; +} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; + +typedef struct _FILE_FULL_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + WCHAR FileName[1]; +} FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION; + +typedef struct _FILE_GET_EA_INFORMATION { + ULONG NextEntryOffset; + UCHAR EaNameLength; + CHAR EaName[1]; +} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION; + +typedef struct _FILE_GET_QUOTA_INFORMATION { + ULONG NextEntryOffset; + ULONG SidLength; + SID Sid; +} FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION; + +typedef struct _FILE_INTERNAL_INFORMATION { + LARGE_INTEGER IndexNumber; +} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION; + +typedef struct _FILE_LINK_INFORMATION { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION; + +typedef struct _FILE_LOCK_INFO { + LARGE_INTEGER StartingByte; + LARGE_INTEGER Length; + BOOLEAN ExclusiveLock; + ULONG Key; + PFILE_OBJECT FileObject; + PEPROCESS Process; + LARGE_INTEGER EndingByte; +} FILE_LOCK_INFO, *PFILE_LOCK_INFO; + +/* raw internal file lock struct returned from FsRtlGetNextFileLock */ +typedef struct _FILE_SHARED_LOCK_ENTRY { + PVOID Unknown1; + PVOID Unknown2; + FILE_LOCK_INFO FileLock; +} FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY; + +/* raw internal file lock struct returned from FsRtlGetNextFileLock */ +typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY { + LIST_ENTRY ListEntry; + PVOID Unknown1; + PVOID Unknown2; + FILE_LOCK_INFO FileLock; +} FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY; + +typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) ( + IN PVOID Context, + IN PIRP Irp +); + +typedef VOID (NTAPI *PUNLOCK_ROUTINE) ( + IN PVOID Context, + IN PFILE_LOCK_INFO FileLockInfo +); + +typedef struct _FILE_LOCK { + PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine; + PUNLOCK_ROUTINE UnlockRoutine; + BOOLEAN FastIoIsQuestionable; + BOOLEAN Pad[3]; + PVOID LockInformation; + FILE_LOCK_INFO LastReturnedLockInfo; + PVOID LastReturnedLock; +} FILE_LOCK, *PFILE_LOCK; + +typedef struct _FILE_MAILSLOT_PEEK_BUFFER { + ULONG ReadDataAvailable; + ULONG NumberOfMessages; + ULONG MessageLength; +} FILE_MAILSLOT_PEEK_BUFFER, *PFILE_MAILSLOT_PEEK_BUFFER; + +typedef struct _FILE_MAILSLOT_QUERY_INFORMATION { + ULONG MaximumMessageSize; + ULONG MailslotQuota; + ULONG NextMessageSize; + ULONG MessagesAvailable; + LARGE_INTEGER ReadTimeout; +} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION; + +typedef struct _FILE_MAILSLOT_SET_INFORMATION { + LARGE_INTEGER ReadTimeout; +} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION; + +typedef struct _FILE_MODE_INFORMATION { + ULONG Mode; +} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION; + +typedef struct _FILE_ALL_INFORMATION { + FILE_BASIC_INFORMATION BasicInformation; + FILE_STANDARD_INFORMATION StandardInformation; + FILE_INTERNAL_INFORMATION InternalInformation; + FILE_EA_INFORMATION EaInformation; + FILE_ACCESS_INFORMATION AccessInformation; + FILE_POSITION_INFORMATION PositionInformation; + FILE_MODE_INFORMATION ModeInformation; + FILE_ALIGNMENT_INFORMATION AlignmentInformation; + FILE_NAME_INFORMATION NameInformation; +} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION; + +typedef struct _FILE_NAMES_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION; + +typedef struct _FILE_OBJECTID_INFORMATION { + LONGLONG FileReference; + UCHAR ObjectId[16]; + _ANONYMOUS_UNION union { + struct { + UCHAR BirthVolumeId[16]; + UCHAR BirthObjectId[16]; + UCHAR DomainId[16]; + } ; + UCHAR ExtendedInfo[48]; + } DUMMYUNIONNAME; +} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION; + +typedef struct _FILE_OLE_CLASSID_INFORMATION { + GUID ClassId; +} FILE_OLE_CLASSID_INFORMATION, *PFILE_OLE_CLASSID_INFORMATION; + +typedef struct _FILE_OLE_ALL_INFORMATION { + FILE_BASIC_INFORMATION BasicInformation; + FILE_STANDARD_INFORMATION StandardInformation; + FILE_INTERNAL_INFORMATION InternalInformation; + FILE_EA_INFORMATION EaInformation; + FILE_ACCESS_INFORMATION AccessInformation; + FILE_POSITION_INFORMATION PositionInformation; + FILE_MODE_INFORMATION ModeInformation; + FILE_ALIGNMENT_INFORMATION AlignmentInformation; + USN LastChangeUsn; + USN ReplicationUsn; + LARGE_INTEGER SecurityChangeTime; + FILE_OLE_CLASSID_INFORMATION OleClassIdInformation; + FILE_OBJECTID_INFORMATION ObjectIdInformation; + FILE_STORAGE_TYPE StorageType; + ULONG OleStateBits; + ULONG OleId; + ULONG NumberOfStreamReferences; + ULONG StreamIndex; + ULONG SecurityId; + BOOLEAN ContentIndexDisable; + BOOLEAN InheritContentIndexDisable; + FILE_NAME_INFORMATION NameInformation; +} FILE_OLE_ALL_INFORMATION, *PFILE_OLE_ALL_INFORMATION; + +typedef struct _FILE_OLE_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + FILE_STORAGE_TYPE StorageType; + GUID OleClassId; + ULONG OleStateBits; + BOOLEAN ContentIndexDisable; + BOOLEAN InheritContentIndexDisable; + WCHAR FileName[1]; +} FILE_OLE_DIR_INFORMATION, *PFILE_OLE_DIR_INFORMATION; + +typedef struct _FILE_OLE_INFORMATION { + LARGE_INTEGER SecurityChangeTime; + FILE_OLE_CLASSID_INFORMATION OleClassIdInformation; + FILE_OBJECTID_INFORMATION ObjectIdInformation; + FILE_STORAGE_TYPE StorageType; + ULONG OleStateBits; + BOOLEAN ContentIndexDisable; + BOOLEAN InheritContentIndexDisable; +} FILE_OLE_INFORMATION, *PFILE_OLE_INFORMATION; + +typedef struct _FILE_OLE_STATE_BITS_INFORMATION { + ULONG StateBits; + ULONG StateBitsMask; +} FILE_OLE_STATE_BITS_INFORMATION, *PFILE_OLE_STATE_BITS_INFORMATION; + +typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER { + HANDLE EventHandle; + ULONG KeyValue; +} FILE_PIPE_ASSIGN_EVENT_BUFFER, *PFILE_PIPE_ASSIGN_EVENT_BUFFER; + +typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER { + PVOID ClientSession; + PVOID ClientProcess; +} FILE_PIPE_CLIENT_PROCESS_BUFFER, *PFILE_PIPE_CLIENT_PROCESS_BUFFER; + +typedef struct _FILE_PIPE_EVENT_BUFFER { + ULONG NamedPipeState; + ULONG EntryType; + ULONG ByteCount; + ULONG KeyValue; + ULONG NumberRequests; +} FILE_PIPE_EVENT_BUFFER, *PFILE_PIPE_EVENT_BUFFER; + +typedef struct _FILE_PIPE_INFORMATION { + ULONG ReadMode; + ULONG CompletionMode; +} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION; + +typedef struct _FILE_PIPE_LOCAL_INFORMATION { + ULONG NamedPipeType; + ULONG NamedPipeConfiguration; + ULONG MaximumInstances; + ULONG CurrentInstances; + ULONG InboundQuota; + ULONG ReadDataAvailable; + ULONG OutboundQuota; + ULONG WriteQuotaAvailable; + ULONG NamedPipeState; + ULONG NamedPipeEnd; +} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION; + +typedef struct _FILE_PIPE_REMOTE_INFORMATION { + LARGE_INTEGER CollectDataTime; + ULONG MaximumCollectionCount; +} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION; + +typedef struct _FILE_PIPE_WAIT_FOR_BUFFER { + LARGE_INTEGER Timeout; + ULONG NameLength; + BOOLEAN TimeoutSpecified; + WCHAR Name[1]; +} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER; + +typedef struct _FILE_QUOTA_INFORMATION { + ULONG NextEntryOffset; + ULONG SidLength; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER QuotaUsed; + LARGE_INTEGER QuotaThreshold; + LARGE_INTEGER QuotaLimit; + SID Sid; +} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION; + +typedef struct _FILE_RENAME_INFORMATION { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; + +typedef struct _FILE_STREAM_INFORMATION { + ULONG NextEntryOffset; + ULONG StreamNameLength; + LARGE_INTEGER StreamSize; + LARGE_INTEGER StreamAllocationSize; + WCHAR StreamName[1]; +} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION; + +typedef struct _FILE_TRACKING_INFORMATION { + HANDLE DestinationFile; + ULONG ObjectInformationLength; + CHAR ObjectInformation[1]; +} FILE_TRACKING_INFORMATION, *PFILE_TRACKING_INFORMATION; + +typedef struct _FSRTL_COMMON_FCB_HEADER { + CSHORT NodeTypeCode; + CSHORT NodeByteSize; + UCHAR Flags; + UCHAR IsFastIoPossible; +#if (VER_PRODUCTBUILD >= 1381) + UCHAR Flags2; + UCHAR Reserved; +#endif /* (VER_PRODUCTBUILD >= 1381) */ + PERESOURCE Resource; + PERESOURCE PagingIoResource; + LARGE_INTEGER AllocationSize; + LARGE_INTEGER FileSize; + LARGE_INTEGER ValidDataLength; +} FSRTL_COMMON_FCB_HEADER, *PFSRTL_COMMON_FCB_HEADER; + +typedef struct _GENERATE_NAME_CONTEXT { + USHORT Checksum; + BOOLEAN CheckSumInserted; + UCHAR NameLength; + WCHAR NameBuffer[8]; + ULONG ExtensionLength; + WCHAR ExtensionBuffer[4]; + ULONG LastIndexValue; +} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT; + +typedef struct _HANDLE_TABLE_ENTRY { + PVOID Object; + ULONG ObjectAttributes; + ULONG GrantedAccess; + USHORT GrantedAccessIndex; + USHORT CreatorBackTraceIndex; + ULONG NextFreeTableEntry; +} HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY; + +typedef struct _MAPPING_PAIR { + ULONGLONG Vcn; + ULONGLONG Lcn; +} MAPPING_PAIR, *PMAPPING_PAIR; + +typedef struct _GET_RETRIEVAL_DESCRIPTOR { + ULONG NumberOfPairs; + ULONGLONG StartVcn; + MAPPING_PAIR Pair[1]; +} GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR; + +typedef struct _IO_CLIENT_EXTENSION { + struct _IO_CLIENT_EXTENSION *NextExtension; + PVOID ClientIdentificationAddress; +} IO_CLIENT_EXTENSION, *PIO_CLIENT_EXTENSION; + +typedef struct _IO_COMPLETION_BASIC_INFORMATION { + LONG Depth; +} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION; + +typedef struct _KEVENT_PAIR { + USHORT Type; + USHORT Size; + KEVENT Event1; + KEVENT Event2; +} KEVENT_PAIR, *PKEVENT_PAIR; + +typedef struct _KQUEUE { + DISPATCHER_HEADER Header; + LIST_ENTRY EntryListHead; + ULONG CurrentCount; + ULONG MaximumCount; + LIST_ENTRY ThreadListHead; +} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE; + +typedef struct _MAILSLOT_CREATE_PARAMETERS { + ULONG MailslotQuota; + ULONG MaximumMessageSize; + LARGE_INTEGER ReadTimeout; + BOOLEAN TimeoutSpecified; +} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS; + +typedef struct _MBCB { + CSHORT NodeTypeCode; + CSHORT NodeIsInZone; + ULONG PagesToWrite; + ULONG DirtyPages; + ULONG Reserved; + LIST_ENTRY BitmapRanges; + LONGLONG ResumeWritePage; + BITMAP_RANGE BitmapRange1; + BITMAP_RANGE BitmapRange2; + BITMAP_RANGE BitmapRange3; +} MBCB, *PMBCB; + +typedef struct _MOVEFILE_DESCRIPTOR { + HANDLE FileHandle; + ULONG Reserved; + LARGE_INTEGER StartVcn; + LARGE_INTEGER TargetLcn; + ULONG NumVcns; + ULONG Reserved1; +} MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR; + +typedef struct _NAMED_PIPE_CREATE_PARAMETERS { + ULONG NamedPipeType; + ULONG ReadMode; + ULONG CompletionMode; + ULONG MaximumInstances; + ULONG InboundQuota; + ULONG OutboundQuota; + LARGE_INTEGER DefaultTimeout; + BOOLEAN TimeoutSpecified; +} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS; + +typedef struct _OBJECT_BASIC_INFO { + ULONG Attributes; + ACCESS_MASK GrantedAccess; + ULONG HandleCount; + ULONG ReferenceCount; + ULONG PagedPoolUsage; + ULONG NonPagedPoolUsage; + ULONG Reserved[3]; + ULONG NameInformationLength; + ULONG TypeInformationLength; + ULONG SecurityDescriptorLength; + LARGE_INTEGER CreateTime; +} OBJECT_BASIC_INFO, *POBJECT_BASIC_INFO; + +typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO { + BOOLEAN Inherit; + BOOLEAN ProtectFromClose; +} OBJECT_HANDLE_ATTRIBUTE_INFO, *POBJECT_HANDLE_ATTRIBUTE_INFO; + +typedef struct _OBJECT_NAME_INFO { + UNICODE_STRING ObjectName; + WCHAR ObjectNameBuffer[1]; +} OBJECT_NAME_INFO, *POBJECT_NAME_INFO; + +typedef struct _OBJECT_PROTECTION_INFO { + BOOLEAN Inherit; + BOOLEAN ProtectHandle; +} OBJECT_PROTECTION_INFO, *POBJECT_PROTECTION_INFO; + +typedef struct _OBJECT_TYPE_INFO { + UNICODE_STRING ObjectTypeName; + UCHAR Unknown[0x58]; + WCHAR ObjectTypeNameBuffer[1]; +} OBJECT_TYPE_INFO, *POBJECT_TYPE_INFO; + +typedef struct _OBJECT_ALL_TYPES_INFO { + ULONG NumberOfObjectTypes; + OBJECT_TYPE_INFO ObjectsTypeInfo[1]; +} OBJECT_ALL_TYPES_INFO, *POBJECT_ALL_TYPES_INFO; + +typedef struct _PAGEFAULT_HISTORY { + ULONG CurrentIndex; + ULONG MaxIndex; + KSPIN_LOCK SpinLock; + PVOID Reserved; + PROCESS_WS_WATCH_INFORMATION WatchInfo[1]; +} PAGEFAULT_HISTORY, *PPAGEFAULT_HISTORY; + +typedef struct _PATHNAME_BUFFER { + ULONG PathNameLength; + WCHAR Name[1]; +} PATHNAME_BUFFER, *PPATHNAME_BUFFER; + +#if (VER_PRODUCTBUILD >= 2600) + +typedef struct _PRIVATE_CACHE_MAP_FLAGS { + ULONG DontUse : 16; + ULONG ReadAheadActive : 1; + ULONG ReadAheadEnabled : 1; + ULONG Available : 14; +} PRIVATE_CACHE_MAP_FLAGS, *PPRIVATE_CACHE_MAP_FLAGS; + +typedef struct _PRIVATE_CACHE_MAP { + _ANONYMOUS_UNION union { + CSHORT NodeTypeCode; + PRIVATE_CACHE_MAP_FLAGS Flags; + ULONG UlongFlags; + } DUMMYUNIONNAME; + ULONG ReadAheadMask; + PFILE_OBJECT FileObject; + LARGE_INTEGER FileOffset1; + LARGE_INTEGER BeyondLastByte1; + LARGE_INTEGER FileOffset2; + LARGE_INTEGER BeyondLastByte2; + LARGE_INTEGER ReadAheadOffset[2]; + ULONG ReadAheadLength[2]; + KSPIN_LOCK ReadAheadSpinLock; + LIST_ENTRY PrivateLinks; +} PRIVATE_CACHE_MAP, *PPRIVATE_CACHE_MAP; + +#endif + +typedef struct _PS_IMPERSONATION_INFORMATION { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; +} PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION; + +typedef struct _PUBLIC_BCB { + CSHORT NodeTypeCode; + CSHORT NodeByteSize; + ULONG MappedLength; + LARGE_INTEGER MappedFileOffset; +} PUBLIC_BCB, *PPUBLIC_BCB; + +typedef struct _QUERY_PATH_REQUEST { + ULONG PathNameLength; + PIO_SECURITY_CONTEXT SecurityContext; + WCHAR FilePathName[1]; +} QUERY_PATH_REQUEST, *PQUERY_PATH_REQUEST; + +typedef struct _QUERY_PATH_RESPONSE { + ULONG LengthAccepted; +} QUERY_PATH_RESPONSE, *PQUERY_PATH_RESPONSE; + +typedef struct _RETRIEVAL_POINTERS_BUFFER { + ULONG ExtentCount; + LARGE_INTEGER StartingVcn; + struct { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } Extents[1]; +} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER; + +typedef struct _RTL_SPLAY_LINKS { + struct _RTL_SPLAY_LINKS *Parent; + struct _RTL_SPLAY_LINKS *LeftChild; + struct _RTL_SPLAY_LINKS *RightChild; +} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS; + +typedef struct _SE_EXPORTS { + + LUID SeCreateTokenPrivilege; + LUID SeAssignPrimaryTokenPrivilege; + LUID SeLockMemoryPrivilege; + LUID SeIncreaseQuotaPrivilege; + LUID SeUnsolicitedInputPrivilege; + LUID SeTcbPrivilege; + LUID SeSecurityPrivilege; + LUID SeTakeOwnershipPrivilege; + LUID SeLoadDriverPrivilege; + LUID SeCreatePagefilePrivilege; + LUID SeIncreaseBasePriorityPrivilege; + LUID SeSystemProfilePrivilege; + LUID SeSystemtimePrivilege; + LUID SeProfileSingleProcessPrivilege; + LUID SeCreatePermanentPrivilege; + LUID SeBackupPrivilege; + LUID SeRestorePrivilege; + LUID SeShutdownPrivilege; + LUID SeDebugPrivilege; + LUID SeAuditPrivilege; + LUID SeSystemEnvironmentPrivilege; + LUID SeChangeNotifyPrivilege; + LUID SeRemoteShutdownPrivilege; + + PSID SeNullSid; + PSID SeWorldSid; + PSID SeLocalSid; + PSID SeCreatorOwnerSid; + PSID SeCreatorGroupSid; + + PSID SeNtAuthoritySid; + PSID SeDialupSid; + PSID SeNetworkSid; + PSID SeBatchSid; + PSID SeInteractiveSid; + PSID SeLocalSystemSid; + PSID SeAliasAdminsSid; + PSID SeAliasUsersSid; + PSID SeAliasGuestsSid; + PSID SeAliasPowerUsersSid; + PSID SeAliasAccountOpsSid; + PSID SeAliasSystemOpsSid; + PSID SeAliasPrintOpsSid; + PSID SeAliasBackupOpsSid; + + PSID SeAuthenticatedUsersSid; + + PSID SeRestrictedSid; + PSID SeAnonymousLogonSid; + + LUID SeUndockPrivilege; + LUID SeSyncAgentPrivilege; + LUID SeEnableDelegationPrivilege; + +} SE_EXPORTS, *PSE_EXPORTS; + +typedef struct _SECTION_BASIC_INFORMATION { + PVOID BaseAddress; + ULONG Attributes; + LARGE_INTEGER Size; +} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION; + +typedef struct _SECTION_IMAGE_INFORMATION { + PVOID EntryPoint; + ULONG Unknown1; + ULONG StackReserve; + ULONG StackCommit; + ULONG Subsystem; + USHORT MinorSubsystemVersion; + USHORT MajorSubsystemVersion; + ULONG Unknown2; + ULONG Characteristics; + USHORT ImageNumber; + BOOLEAN Executable; + UCHAR Unknown3; + ULONG Unknown4[3]; +} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION; + +#if (VER_PRODUCTBUILD >= 2600) + +typedef struct _SHARED_CACHE_MAP { + CSHORT NodeTypeCode; + CSHORT NodeByteSize; + ULONG OpenCount; + LARGE_INTEGER FileSize; + LIST_ENTRY BcbList; + LARGE_INTEGER SectionSize; + LARGE_INTEGER ValidDataLength; + LARGE_INTEGER ValidDataGoal; + PVACB InitialVacbs[4]; + PVACB *Vacbs; + PFILE_OBJECT FileObject; + PVACB ActiveVacb; + PVOID NeedToZero; + ULONG ActivePage; + ULONG NeedToZeroPage; + KSPIN_LOCK ActiveVacbSpinLock; + ULONG VacbActiveCount; + ULONG DirtyPages; + LIST_ENTRY SharedCacheMapLinks; + ULONG Flags; + NTSTATUS Status; + PMBCB Mbcb; + PVOID Section; + PKEVENT CreateEvent; + PKEVENT WaitOnActiveCount; + ULONG PagesToWrite; + LONGLONG BeyondLastFlush; + PCACHE_MANAGER_CALLBACKS Callbacks; + PVOID LazyWriteContext; + LIST_ENTRY PrivateList; + PVOID LogHandle; + PVOID FlushToLsnRoutine; + ULONG DirtyPageThreshold; + ULONG LazyWritePassCount; + PCACHE_UNINITIALIZE_EVENT UninitializeEvent; + PVACB NeedToZeroVacb; + KSPIN_LOCK BcbSpinLock; + PVOID Reserved; + KEVENT Event; + EX_PUSH_LOCK VacbPushLock; + PRIVATE_CACHE_MAP PrivateCacheMap; +} SHARED_CACHE_MAP, *PSHARED_CACHE_MAP; + +#endif + +typedef struct _STARTING_VCN_INPUT_BUFFER { + LARGE_INTEGER StartingVcn; +} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER; + +typedef struct _SYSTEM_CACHE_INFORMATION { + ULONG CurrentSize; + ULONG PeakSize; + ULONG PageFaultCount; + ULONG MinimumWorkingSet; + ULONG MaximumWorkingSet; + ULONG Unused[4]; +} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION; + +typedef struct _TERMINATION_PORT { + struct _TERMINATION_PORT* Next; + PVOID Port; +} TERMINATION_PORT, *PTERMINATION_PORT; + +typedef struct _SECURITY_CLIENT_CONTEXT { + SECURITY_QUALITY_OF_SERVICE SecurityQos; + PACCESS_TOKEN ClientToken; + BOOLEAN DirectlyAccessClientToken; + BOOLEAN DirectAccessEffectiveOnly; + BOOLEAN ServerIsRemote; + TOKEN_CONTROL ClientTokenControl; +} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT; + +typedef struct _TUNNEL { + FAST_MUTEX Mutex; + PRTL_SPLAY_LINKS Cache; + LIST_ENTRY TimerQueue; + USHORT NumEntries; +} TUNNEL, *PTUNNEL; + +typedef struct _VACB { + PVOID BaseAddress; + PSHARED_CACHE_MAP SharedCacheMap; + union { + LARGE_INTEGER FileOffset; + USHORT ActiveCount; + } Overlay; + LIST_ENTRY LruList; +} VACB, *PVACB; + +typedef struct _VAD_HEADER { + PVOID StartVPN; + PVOID EndVPN; + PVAD_HEADER ParentLink; + PVAD_HEADER LeftLink; + PVAD_HEADER RightLink; + ULONG Flags; /* LSB = CommitCharge */ + PVOID ControlArea; + PVOID FirstProtoPte; + PVOID LastPTE; + ULONG Unknown; + LIST_ENTRY Secured; +} VAD_HEADER, *PVAD_HEADER; + +NTKERNELAPI +BOOLEAN +NTAPI +CcCanIWrite ( + IN PFILE_OBJECT FileObject, + IN ULONG BytesToWrite, + IN BOOLEAN Wait, + IN BOOLEAN Retrying +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcCopyRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcCopyWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN PVOID Buffer +); + +#define CcCopyWriteWontFlush(FO, FOFF, LEN) ((LEN) <= 0x10000) + +typedef VOID (NTAPI *PCC_POST_DEFERRED_WRITE) ( + IN PVOID Context1, + IN PVOID Context2 +); + +NTKERNELAPI +VOID +NTAPI +CcDeferWrite ( + IN PFILE_OBJECT FileObject, + IN PCC_POST_DEFERRED_WRITE PostRoutine, + IN PVOID Context1, + IN PVOID Context2, + IN ULONG BytesToWrite, + IN BOOLEAN Retrying +); + +NTKERNELAPI +VOID +NTAPI +CcFastCopyRead ( + IN PFILE_OBJECT FileObject, + IN ULONG FileOffset, + IN ULONG Length, + IN ULONG PageCount, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus +); + +NTKERNELAPI +VOID +NTAPI +CcFastCopyWrite ( + IN PFILE_OBJECT FileObject, + IN ULONG FileOffset, + IN ULONG Length, + IN PVOID Buffer +); + +NTKERNELAPI +VOID +NTAPI +CcFlushCache ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN PLARGE_INTEGER FileOffset OPTIONAL, + IN ULONG Length, + OUT PIO_STATUS_BLOCK IoStatus OPTIONAL +); + +typedef VOID (*PDIRTY_PAGE_ROUTINE) ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN PLARGE_INTEGER OldestLsn, + IN PLARGE_INTEGER NewestLsn, + IN PVOID Context1, + IN PVOID Context2 +); + +NTKERNELAPI +LARGE_INTEGER +NTAPI +CcGetDirtyPages ( + IN PVOID LogHandle, + IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine, + IN PVOID Context1, + IN PVOID Context2 +); + +NTKERNELAPI +PFILE_OBJECT +NTAPI +CcGetFileObjectFromBcb ( + IN PVOID Bcb +); + +NTKERNELAPI +PFILE_OBJECT +NTAPI +CcGetFileObjectFromSectionPtrs ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer +); + +#define CcGetFileSizePointer(FO) ( \ + ((PLARGE_INTEGER)((FO)->SectionObjectPointer->SharedCacheMap) + 1) \ +) + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +LARGE_INTEGER +NTAPI +CcGetFlushedValidData ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN BOOLEAN BcbListHeld +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +LARGE_INTEGER +CcGetLsnForFileObject ( + IN PFILE_OBJECT FileObject, + OUT PLARGE_INTEGER OldestLsn OPTIONAL +); + +typedef BOOLEAN (NTAPI *PACQUIRE_FOR_LAZY_WRITE) ( + IN PVOID Context, + IN BOOLEAN Wait +); + +typedef VOID (NTAPI *PRELEASE_FROM_LAZY_WRITE) ( + IN PVOID Context +); + +typedef BOOLEAN (NTAPI *PACQUIRE_FOR_READ_AHEAD) ( + IN PVOID Context, + IN BOOLEAN Wait +); + +typedef VOID (NTAPI *PRELEASE_FROM_READ_AHEAD) ( + IN PVOID Context +); + +typedef struct _CACHE_MANAGER_CALLBACKS { + PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite; + PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite; + PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead; + PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead; +} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS; + +NTKERNELAPI +VOID +NTAPI +CcInitializeCacheMap ( + IN PFILE_OBJECT FileObject, + IN PCC_FILE_SIZES FileSizes, + IN BOOLEAN PinAccess, + IN PCACHE_MANAGER_CALLBACKS Callbacks, + IN PVOID LazyWriteContext +); + +#define CcIsFileCached(FO) ( \ + ((FO)->SectionObjectPointer != NULL) && \ + (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \ +) + +NTKERNELAPI +BOOLEAN +NTAPI +CcIsThereDirtyData ( + IN PVPB Vpb +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcMapData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + OUT PVOID *Bcb, + OUT PVOID *Buffer +); + +NTKERNELAPI +VOID +NTAPI +CcMdlRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus +); + +NTKERNELAPI +VOID +NTAPI +CcMdlReadComplete ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain +); + +NTKERNELAPI +VOID +NTAPI +CcMdlWriteComplete ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcPinMappedData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, +#if (VER_PRODUCTBUILD >= 2195) + IN ULONG Flags, +#else + IN BOOLEAN Wait, +#endif + IN OUT PVOID *Bcb +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcPinRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, +#if (VER_PRODUCTBUILD >= 2195) + IN ULONG Flags, +#else + IN BOOLEAN Wait, +#endif + OUT PVOID *Bcb, + OUT PVOID *Buffer +); + +NTKERNELAPI +VOID +NTAPI +CcPrepareMdlWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcPreparePinWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Zero, +#if (VER_PRODUCTBUILD >= 2195) + IN ULONG Flags, +#else + IN BOOLEAN Wait, +#endif + OUT PVOID *Bcb, + OUT PVOID *Buffer +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcPurgeCacheSection ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN PLARGE_INTEGER FileOffset OPTIONAL, + IN ULONG Length, + IN BOOLEAN UninitializeCacheMaps +); + +#define CcReadAhead(FO, FOFF, LEN) ( \ + if ((LEN) >= 256) { \ + CcScheduleReadAhead((FO), (FOFF), (LEN)); \ + } \ +) + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +PVOID +NTAPI +CcRemapBcb ( + IN PVOID Bcb +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +VOID +NTAPI +CcRepinBcb ( + IN PVOID Bcb +); + +NTKERNELAPI +VOID +NTAPI +CcScheduleReadAhead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length +); + +NTKERNELAPI +VOID +NTAPI +CcSetAdditionalCacheAttributes ( + IN PFILE_OBJECT FileObject, + IN BOOLEAN DisableReadAhead, + IN BOOLEAN DisableWriteBehind +); + +NTKERNELAPI +VOID +NTAPI +CcSetBcbOwnerPointer ( + IN PVOID Bcb, + IN PVOID OwnerPointer +); + +NTKERNELAPI +VOID +NTAPI +CcSetDirtyPageThreshold ( + IN PFILE_OBJECT FileObject, + IN ULONG DirtyPageThreshold +); + +NTKERNELAPI +VOID +NTAPI +CcSetDirtyPinnedData ( + IN PVOID BcbVoid, + IN PLARGE_INTEGER Lsn OPTIONAL +); + +NTKERNELAPI +VOID +NTAPI +CcSetFileSizes ( + IN PFILE_OBJECT FileObject, + IN PCC_FILE_SIZES FileSizes +); + +typedef VOID (NTAPI *PFLUSH_TO_LSN) ( + IN PVOID LogHandle, + IN PLARGE_INTEGER Lsn +); + +NTKERNELAPI +VOID +NTAPI +CcSetLogHandleForFile ( + IN PFILE_OBJECT FileObject, + IN PVOID LogHandle, + IN PFLUSH_TO_LSN FlushToLsnRoutine +); + +NTKERNELAPI +VOID +NTAPI +CcSetReadAheadGranularity ( + IN PFILE_OBJECT FileObject, + IN ULONG Granularity /* default: PAGE_SIZE */ + /* allowed: 2^n * PAGE_SIZE */ +); + +NTKERNELAPI +BOOLEAN +NTAPI +CcUninitializeCacheMap ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER TruncateSize OPTIONAL, + IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL +); + +NTKERNELAPI +VOID +NTAPI +CcUnpinData ( + IN PVOID Bcb +); + +NTKERNELAPI +VOID +NTAPI +CcUnpinDataForThread ( + IN PVOID Bcb, + IN ERESOURCE_THREAD ResourceThreadId +); + +NTKERNELAPI +VOID +NTAPI +CcUnpinRepinnedBcb ( + IN PVOID Bcb, + IN BOOLEAN WriteThrough, + OUT PIO_STATUS_BLOCK IoStatus +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +CcWaitForCurrentLazyWriterActivity ( + VOID +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +BOOLEAN +NTAPI +CcZeroData ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER StartOffset, + IN PLARGE_INTEGER EndOffset, + IN BOOLEAN Wait +); + +NTKERNELAPI +VOID +NTAPI +ExDisableResourceBoostLite ( + IN PERESOURCE Resource +); + +NTKERNELAPI +ULONG +NTAPI +ExQueryPoolBlockSize ( + IN PVOID PoolBlock, + OUT PBOOLEAN QuotaCharged +); + +#define FlagOn(x, f) ((x) & (f)) + +NTKERNELAPI +VOID +NTAPI +FsRtlAddToTunnelCache ( + IN PTUNNEL Cache, + IN ULONGLONG DirectoryKey, + IN PUNICODE_STRING ShortName, + IN PUNICODE_STRING LongName, + IN BOOLEAN KeyByShortName, + IN ULONG DataLength, + IN PVOID Data +); + +#if (VER_PRODUCTBUILD >= 2195) + +PFILE_LOCK +NTAPI +FsRtlAllocateFileLock ( + IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL, + IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePool ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes +); + +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePoolWithQuota ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes +); + +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePoolWithQuotaTag ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes, + IN ULONG Tag +); + +NTKERNELAPI +PVOID +NTAPI +FsRtlAllocatePoolWithTag ( + IN POOL_TYPE PoolType, + IN ULONG NumberOfBytes, + IN ULONG Tag +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlAreNamesEqual ( + IN PUNICODE_STRING Name1, + IN PUNICODE_STRING Name2, + IN BOOLEAN IgnoreCase, + IN PWCHAR UpcaseTable OPTIONAL +); + +#define FsRtlAreThereCurrentFileLocks(FL) ( \ + ((FL)->FastIoIsQuestionable) \ +) + +/* + FsRtlCheckLockForReadAccess: + + All this really does is pick out the lock parameters from the irp (io stack + location?), get IoGetRequestorProcess, and pass values on to + FsRtlFastCheckLockForRead. +*/ +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCheckLockForReadAccess ( + IN PFILE_LOCK FileLock, + IN PIRP Irp +); + +/* + FsRtlCheckLockForWriteAccess: + + All this really does is pick out the lock parameters from the irp (io stack + location?), get IoGetRequestorProcess, and pass values on to + FsRtlFastCheckLockForWrite. +*/ +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCheckLockForWriteAccess ( + IN PFILE_LOCK FileLock, + IN PIRP Irp +); + +typedef +VOID NTAPI +(*POPLOCK_WAIT_COMPLETE_ROUTINE) ( + IN PVOID Context, + IN PIRP Irp +); + +typedef +VOID NTAPI +(*POPLOCK_FS_PREPOST_IRP) ( + IN PVOID Context, + IN PIRP Irp +); + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlCheckOplock ( + IN POPLOCK Oplock, + IN PIRP Irp, + IN PVOID Context, + IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, + IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCopyRead ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCopyWrite ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + IN PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlCurrentBatchOplock ( + IN POPLOCK Oplock +); + +NTKERNELAPI +VOID +NTAPI +FsRtlDeleteKeyFromTunnelCache ( + IN PTUNNEL Cache, + IN ULONGLONG DirectoryKey +); + +NTKERNELAPI +VOID +NTAPI +FsRtlDeleteTunnelCache ( + IN PTUNNEL Cache +); + +NTKERNELAPI +VOID +NTAPI +FsRtlDeregisterUncProvider ( + IN HANDLE Handle +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlDoesNameContainWildCards ( + IN PUNICODE_STRING Name +); + +#define FsRtlEnterFileSystem KeEnterCriticalRegion + +#define FsRtlExitFileSystem KeLeaveCriticalRegion + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlFastCheckLockForRead ( + IN PFILE_LOCK FileLock, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + IN ULONG Key, + IN PFILE_OBJECT FileObject, + IN PEPROCESS Process +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlFastCheckLockForWrite ( + IN PFILE_LOCK FileLock, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + IN ULONG Key, + IN PFILE_OBJECT FileObject, + IN PEPROCESS Process +); + +#define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \ + FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \ +) + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlFastUnlockAll ( + IN PFILE_LOCK FileLock, + IN PFILE_OBJECT FileObject, + IN PEPROCESS Process, + IN PVOID Context OPTIONAL +); +/* ret: STATUS_RANGE_NOT_LOCKED */ + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlFastUnlockAllByKey ( + IN PFILE_LOCK FileLock, + IN PFILE_OBJECT FileObject, + IN PEPROCESS Process, + IN ULONG Key, + IN PVOID Context OPTIONAL +); +/* ret: STATUS_RANGE_NOT_LOCKED */ + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlFastUnlockSingle ( + IN PFILE_LOCK FileLock, + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + IN PEPROCESS Process, + IN ULONG Key, + IN PVOID Context OPTIONAL, + IN BOOLEAN AlreadySynchronized +); +/* ret: STATUS_RANGE_NOT_LOCKED */ + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlFindInTunnelCache ( + IN PTUNNEL Cache, + IN ULONGLONG DirectoryKey, + IN PUNICODE_STRING Name, + OUT PUNICODE_STRING ShortName, + OUT PUNICODE_STRING LongName, + IN OUT PULONG DataLength, + OUT PVOID Data +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +VOID +NTAPI +FsRtlFreeFileLock ( + IN PFILE_LOCK FileLock +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlGetFileSize ( + IN PFILE_OBJECT FileObject, + IN OUT PLARGE_INTEGER FileSize +); + +/* + FsRtlGetNextFileLock: + + ret: NULL if no more locks + + Internals: + FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and + FileLock->LastReturnedLock as storage. + LastReturnedLock is a pointer to the 'raw' lock inkl. double linked + list, and FsRtlGetNextFileLock needs this to get next lock on subsequent + calls with Restart = FALSE. +*/ +NTKERNELAPI +PFILE_LOCK_INFO +NTAPI +FsRtlGetNextFileLock ( + IN PFILE_LOCK FileLock, + IN BOOLEAN Restart +); + +NTKERNELAPI +VOID +NTAPI +FsRtlInitializeFileLock ( + IN PFILE_LOCK FileLock, + IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL, + IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL +); + +NTKERNELAPI +VOID +NTAPI +FsRtlInitializeOplock ( + IN OUT POPLOCK Oplock +); + +NTKERNELAPI +VOID +NTAPI +FsRtlInitializeTunnelCache ( + IN PTUNNEL Cache +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlIsNameInExpression ( + IN PUNICODE_STRING Expression, + IN PUNICODE_STRING Name, + IN BOOLEAN IgnoreCase, + IN PWCHAR UpcaseTable OPTIONAL +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlIsNtstatusExpected ( + IN NTSTATUS Ntstatus +); + +#define FsRtlIsUnicodeCharacterWild(C) ( \ + (((C) >= 0x40) ? \ + FALSE : \ + FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \ +) + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlMdlReadComplete ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlMdlReadCompleteDev ( + IN PFILE_OBJECT FileObject, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlMdlWriteComplete ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlMdlWriteCompleteDev ( + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject +); + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlNormalizeNtstatus ( + IN NTSTATUS Exception, + IN NTSTATUS GenericException +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyChangeDirectory ( + IN PNOTIFY_SYNC NotifySync, + IN PVOID FsContext, + IN PSTRING FullDirectoryName, + IN PLIST_ENTRY NotifyList, + IN BOOLEAN WatchTree, + IN ULONG CompletionFilter, + IN PIRP NotifyIrp +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyCleanup ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PVOID FsContext +); + +typedef BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) ( + IN PVOID NotifyContext, + IN PVOID TargetContext, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyFullChangeDirectory ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PVOID FsContext, + IN PSTRING FullDirectoryName, + IN BOOLEAN WatchTree, + IN BOOLEAN IgnoreBuffer, + IN ULONG CompletionFilter, + IN PIRP NotifyIrp, + IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyFullReportChange ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PSTRING FullTargetName, + IN USHORT TargetNameOffset, + IN PSTRING StreamName OPTIONAL, + IN PSTRING NormalizedParentName OPTIONAL, + IN ULONG FilterMatch, + IN ULONG Action, + IN PVOID TargetContext +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyInitializeSync ( + IN PNOTIFY_SYNC NotifySync +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyReportChange ( + IN PNOTIFY_SYNC NotifySync, + IN PLIST_ENTRY NotifyList, + IN PSTRING FullTargetName, + IN PUSHORT FileNamePartLength, + IN ULONG FilterMatch +); + +NTKERNELAPI +VOID +NTAPI +FsRtlNotifyUninitializeSync ( + IN PNOTIFY_SYNC NotifySync +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlNotifyVolumeEvent ( + IN PFILE_OBJECT FileObject, + IN ULONG EventCode +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlOplockFsctrl ( + IN POPLOCK Oplock, + IN PIRP Irp, + IN ULONG OpenCount +); + +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlOplockIsFastIoPossible ( + IN POPLOCK Oplock +); + +/* + FsRtlPrivateLock: + + ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED + + Internals: + -Calls IoCompleteRequest if Irp + -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES +*/ +NTKERNELAPI +BOOLEAN +NTAPI +FsRtlPrivateLock ( + IN PFILE_LOCK FileLock, + IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + IN PEPROCESS Process, + IN ULONG Key, + IN BOOLEAN FailImmediately, + IN BOOLEAN ExclusiveLock, + OUT PIO_STATUS_BLOCK IoStatus, + IN PIRP Irp OPTIONAL, + IN PVOID Context, + IN BOOLEAN AlreadySynchronized +); + +/* + FsRtlProcessFileLock: + + ret: + -STATUS_INVALID_DEVICE_REQUEST + -STATUS_RANGE_NOT_LOCKED from unlock routines. + -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock + (redirected IoStatus->Status). + + Internals: + -switch ( Irp->CurrentStackLocation->MinorFunction ) + lock: return FsRtlPrivateLock; + unlocksingle: return FsRtlFastUnlockSingle; + unlockall: return FsRtlFastUnlockAll; + unlockallbykey: return FsRtlFastUnlockAllByKey; + default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST; + return STATUS_INVALID_DEVICE_REQUEST; + + -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines. + -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock. +*/ +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlProcessFileLock ( + IN PFILE_LOCK FileLock, + IN PIRP Irp, + IN PVOID Context OPTIONAL +); + +NTKERNELAPI +NTSTATUS +NTAPI +FsRtlRegisterUncProvider ( + IN OUT PHANDLE MupHandle, + IN PUNICODE_STRING RedirectorDeviceName, + IN BOOLEAN MailslotsSupported +); + +NTKERNELAPI +VOID +NTAPI +FsRtlUninitializeFileLock ( + IN PFILE_LOCK FileLock +); + +NTKERNELAPI +VOID +NTAPI +FsRtlUninitializeOplock ( + IN OUT POPLOCK Oplock +); + +NTSYSAPI +VOID +NTAPI +HalDisplayString ( + IN PCHAR String +); + +NTSYSAPI +VOID +NTAPI +HalQueryRealTimeClock ( + IN OUT PTIME_FIELDS TimeFields +); + +NTSYSAPI +VOID +NTAPI +HalSetRealTimeClock ( + IN PTIME_FIELDS TimeFields +); + +#define InitializeMessageHeader(m, l, t) { \ + (m)->Length = (USHORT)(l); \ + (m)->DataLength = (USHORT)(l - sizeof( LPC_MESSAGE )); \ + (m)->MessageType = (USHORT)(t); \ + (m)->DataInfoOffset = 0; \ +} + +NTKERNELAPI +VOID +NTAPI +IoAcquireVpbSpinLock ( + OUT PKIRQL Irql +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoCheckDesiredAccess ( + IN OUT PACCESS_MASK DesiredAccess, + IN ACCESS_MASK GrantedAccess +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoCheckEaBufferValidity ( + IN PFILE_FULL_EA_INFORMATION EaBuffer, + IN ULONG EaLength, + OUT PULONG ErrorOffset +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoCheckFunctionAccess ( + IN ACCESS_MASK GrantedAccess, + IN UCHAR MajorFunction, + IN UCHAR MinorFunction, + IN ULONG IoControlCode, + IN PFILE_INFORMATION_CLASS FileInformationClass OPTIONAL, + IN PFS_INFORMATION_CLASS FsInformationClass OPTIONAL +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +IoCheckQuotaBufferValidity ( + IN PFILE_QUOTA_INFORMATION QuotaBuffer, + IN ULONG QuotaLength, + OUT PULONG ErrorOffset +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +PFILE_OBJECT +NTAPI +IoCreateStreamFileObject ( + IN PFILE_OBJECT FileObject OPTIONAL, + IN PDEVICE_OBJECT DeviceObject OPTIONAL +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +PFILE_OBJECT +NTAPI +IoCreateStreamFileObjectLite ( + IN PFILE_OBJECT FileObject OPTIONAL, + IN PDEVICE_OBJECT DeviceObject OPTIONAL +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +BOOLEAN +NTAPI +IoFastQueryNetworkAttributes ( + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ACCESS_MASK DesiredAccess, + IN ULONG OpenOptions, + OUT PIO_STATUS_BLOCK IoStatus, + OUT PFILE_NETWORK_OPEN_INFORMATION Buffer +); + +NTKERNELAPI +PDEVICE_OBJECT +NTAPI +IoGetAttachedDevice ( + IN PDEVICE_OBJECT DeviceObject +); + +NTKERNELAPI +PDEVICE_OBJECT +NTAPI +IoGetBaseFileSystemDeviceObject ( + IN PFILE_OBJECT FileObject +); + +NTKERNELAPI +PEPROCESS +NTAPI +IoGetRequestorProcess ( + IN PIRP Irp +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +ULONG +NTAPI +IoGetRequestorProcessId ( + IN PIRP Irp +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +PIRP +NTAPI +IoGetTopLevelIrp ( + VOID +); + +#define IoIsFileOpenedExclusively(FileObject) ( \ + (BOOLEAN) !( \ + (FileObject)->SharedRead || \ + (FileObject)->SharedWrite || \ + (FileObject)->SharedDelete \ + ) \ +) + +NTKERNELAPI +BOOLEAN +NTAPI +IoIsOperationSynchronous ( + IN PIRP Irp +); + +NTKERNELAPI +BOOLEAN +NTAPI +IoIsSystemThread ( + IN PETHREAD Thread +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +BOOLEAN +NTAPI +IoIsValidNameGraftingBuffer ( + IN PIRP Irp, + IN PREPARSE_DATA_BUFFER ReparseBuffer +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +NTSTATUS +NTAPI +IoPageRead ( + IN PFILE_OBJECT FileObject, + IN PMDL Mdl, + IN PLARGE_INTEGER Offset, + IN PKEVENT Event, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoQueryFileInformation ( + IN PFILE_OBJECT FileObject, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN ULONG Length, + OUT PVOID FileInformation, + OUT PULONG ReturnedLength +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoQueryVolumeInformation ( + IN PFILE_OBJECT FileObject, + IN FS_INFORMATION_CLASS FsInformationClass, + IN ULONG Length, + OUT PVOID FsInformation, + OUT PULONG ReturnedLength +); + +NTKERNELAPI +VOID +NTAPI +IoRegisterFileSystem ( + IN OUT PDEVICE_OBJECT DeviceObject +); + +#if (VER_PRODUCTBUILD >= 1381) + +typedef VOID (NTAPI *PDRIVER_FS_NOTIFICATION) ( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN DriverActive +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoRegisterFsRegistrationChange ( + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine +); + +#endif /* (VER_PRODUCTBUILD >= 1381) */ + +NTKERNELAPI +VOID +NTAPI +IoReleaseVpbSpinLock ( + IN KIRQL Irql +); + +NTKERNELAPI +VOID +NTAPI +IoSetDeviceToVerify ( + IN PETHREAD Thread, + IN PDEVICE_OBJECT DeviceObject +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoSetInformation ( + IN PFILE_OBJECT FileObject, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN ULONG Length, + IN PVOID FileInformation +); + +NTKERNELAPI +VOID +NTAPI +IoSetTopLevelIrp ( + IN PIRP Irp +); + +NTKERNELAPI +NTSTATUS +NTAPI +IoSynchronousPageWrite ( + IN PFILE_OBJECT FileObject, + IN PMDL Mdl, + IN PLARGE_INTEGER FileOffset, + IN PKEVENT Event, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +NTKERNELAPI +PEPROCESS +NTAPI +IoThreadToProcess ( + IN PETHREAD Thread +); + +NTKERNELAPI +VOID +NTAPI +IoUnregisterFileSystem ( + IN OUT PDEVICE_OBJECT DeviceObject +); + +#if (VER_PRODUCTBUILD >= 1381) + +NTKERNELAPI +NTSTATUS +NTAPI +IoUnregisterFsRegistrationChange ( + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine +); + +#endif /* (VER_PRODUCTBUILD >= 1381) */ + +NTKERNELAPI +NTSTATUS +NTAPI +IoVerifyVolume ( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN AllowRawMount +); + +NTKERNELAPI +VOID +NTAPI +KeAttachProcess ( + IN PEPROCESS Process +); + +NTKERNELAPI +VOID +NTAPI +KeDetachProcess ( + VOID +); + +NTKERNELAPI +VOID +NTAPI +KeInitializeQueue ( + IN PRKQUEUE Queue, + IN ULONG Count OPTIONAL +); + +NTKERNELAPI +LONG +NTAPI +KeInsertHeadQueue ( + IN PRKQUEUE Queue, + IN PLIST_ENTRY Entry +); + +NTKERNELAPI +LONG +NTAPI +KeInsertQueue ( + IN PRKQUEUE Queue, + IN PLIST_ENTRY Entry +); + +NTKERNELAPI +BOOLEAN +NTAPI +KeInsertQueueApc ( + IN PKAPC Apc, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2, + IN KPRIORITY PriorityBoost +); + +NTKERNELAPI +LONG +NTAPI +KeReadStateQueue ( + IN PRKQUEUE Queue +); + +NTKERNELAPI +PLIST_ENTRY +NTAPI +KeRemoveQueue ( + IN PRKQUEUE Queue, + IN KPROCESSOR_MODE WaitMode, + IN PLARGE_INTEGER Timeout OPTIONAL +); + +NTKERNELAPI +PLIST_ENTRY +NTAPI +KeRundownQueue ( + IN PRKQUEUE Queue +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +VOID +NTAPI +KeStackAttachProcess ( + IN PKPROCESS Process, + OUT PKAPC_STATE ApcState +); + +NTKERNELAPI +VOID +NTAPI +KeUnstackDetachProcess ( + IN PKAPC_STATE ApcState +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +BOOLEAN +NTAPI +MmCanFileBeTruncated ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN PLARGE_INTEGER NewFileSize +); + +NTKERNELAPI +BOOLEAN +NTAPI +MmFlushImageSection ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN MMFLUSH_TYPE FlushType +); + +NTKERNELAPI +BOOLEAN +NTAPI +MmForceSectionClosed ( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN BOOLEAN DelayClose +); + +#if (VER_PRODUCTBUILD >= 1381) + +NTKERNELAPI +BOOLEAN +NTAPI +MmIsRecursiveIoFault ( + VOID +); + +#else + +#define MmIsRecursiveIoFault() ( \ + (PsGetCurrentThread()->DisablePageFaultClustering) | \ + (PsGetCurrentThread()->ForwardClusterOnly) \ +) + +#endif + +NTKERNELAPI +NTSTATUS +NTAPI +MmMapViewOfSection ( + IN PVOID SectionObject, + IN PEPROCESS Process, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN ULONG CommitSize, + IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PULONG ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG Protect +); + +NTKERNELAPI +BOOLEAN +NTAPI +MmSetAddressRangeModified ( + IN PVOID Address, + IN ULONG Length +); + +NTKERNELAPI +NTSTATUS +NTAPI +ObCreateObject ( + IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL, + IN POBJECT_TYPE ObjectType, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + IN OUT PVOID ParseContext OPTIONAL, + IN ULONG ObjectSize, + IN ULONG PagedPoolCharge OPTIONAL, + IN ULONG NonPagedPoolCharge OPTIONAL, + OUT PVOID *Object +); + +NTKERNELAPI +ULONG +NTAPI +ObGetObjectPointerCount ( + IN PVOID Object +); + +NTKERNELAPI +NTSTATUS +NTAPI +ObInsertObject ( + IN PVOID Object, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG AdditionalReferences, + OUT PVOID *ReferencedObject OPTIONAL, + OUT PHANDLE Handle +); + +NTKERNELAPI +VOID +NTAPI +ObMakeTemporaryObject ( + IN PVOID Object +); + +NTKERNELAPI +NTSTATUS +NTAPI +ObOpenObjectByPointer ( + IN PVOID Object, + IN ULONG HandleAttributes, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + OUT PHANDLE Handle +); + +NTKERNELAPI +NTSTATUS +NTAPI +ObQueryNameString ( + IN PVOID Object, + OUT POBJECT_NAME_INFORMATION ObjectNameInfo, + IN ULONG Length, + OUT PULONG ReturnLength +); + +NTKERNELAPI +NTSTATUS +NTAPI +ObQueryObjectAuditingByHandle ( + IN HANDLE Handle, + OUT PBOOLEAN GenerateOnClose +); + +NTKERNELAPI +NTSTATUS +NTAPI +ObReferenceObjectByName ( + IN PUNICODE_STRING ObjectName, + IN ULONG Attributes, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType, + IN KPROCESSOR_MODE AccessMode, + IN OUT PVOID ParseContext OPTIONAL, + OUT PVOID *Object +); + +NTKERNELAPI +VOID +NTAPI +PsChargePoolQuota ( + IN PEPROCESS Process, + IN POOL_TYPE PoolType, + IN ULONG Amount +); + +#define PsDereferenceImpersonationToken(T) \ + {if (ARGUMENT_PRESENT(T)) { \ + (ObDereferenceObject((T))); \ + } else { \ + ; \ + } \ +} + +#define PsDereferencePrimaryToken(T) (ObDereferenceObject((T))) + +NTKERNELAPI +ULONGLONG +NTAPI +PsGetProcessExitTime ( + VOID +); + +NTKERNELAPI +BOOLEAN +NTAPI +PsIsThreadTerminating ( + IN PETHREAD Thread +); + +NTKERNELAPI +NTSTATUS +NTAPI +PsLookupProcessByProcessId ( + IN PVOID ProcessId, + OUT PEPROCESS *Process +); + +NTKERNELAPI +NTSTATUS +NTAPI +PsLookupProcessThreadByCid ( + IN PCLIENT_ID Cid, + OUT PEPROCESS *Process OPTIONAL, + OUT PETHREAD *Thread +); + +NTKERNELAPI +NTSTATUS +NTAPI +PsLookupThreadByThreadId ( + IN PVOID UniqueThreadId, + OUT PETHREAD *Thread +); + +NTKERNELAPI +PACCESS_TOKEN +NTAPI +PsReferenceImpersonationToken ( + IN PETHREAD Thread, + OUT PBOOLEAN CopyOnUse, + OUT PBOOLEAN EffectiveOnly, + OUT PSECURITY_IMPERSONATION_LEVEL Level +); + +NTKERNELAPI +HANDLE +NTAPI +PsReferencePrimaryToken ( + IN PEPROCESS Process +); + +NTKERNELAPI +VOID +NTAPI +PsReturnPoolQuota ( + IN PEPROCESS Process, + IN POOL_TYPE PoolType, + IN ULONG Amount +); + +NTKERNELAPI +VOID +NTAPI +PsRevertToSelf ( + VOID +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlAbsoluteToSelfRelativeSD ( + IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, + IN OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor, + IN PULONG BufferLength +); + +NTSYSAPI +PVOID +NTAPI +RtlAllocateHeap ( + IN HANDLE HeapHandle, + IN ULONG Flags, + IN ULONG Size +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlCompressBuffer ( + IN USHORT CompressionFormatAndEngine, + IN PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + OUT PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN ULONG UncompressedChunkSize, + OUT PULONG FinalCompressedSize, + IN PVOID WorkSpace +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlCompressChunks ( + IN PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + OUT PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo, + IN ULONG CompressedDataInfoLength, + IN PVOID WorkSpace +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlConvertSidToUnicodeString ( + OUT PUNICODE_STRING DestinationString, + IN PSID Sid, + IN BOOLEAN AllocateDestinationString +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlCopySid ( + IN ULONG Length, + IN PSID Destination, + IN PSID Source +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlDecompressBuffer ( + IN USHORT CompressionFormat, + OUT PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + IN PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + OUT PULONG FinalUncompressedSize +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlDecompressChunks ( + OUT PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + IN PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN PUCHAR CompressedTail, + IN ULONG CompressedTailSize, + IN PCOMPRESSED_DATA_INFO CompressedDataInfo +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlDecompressFragment ( + IN USHORT CompressionFormat, + OUT PUCHAR UncompressedFragment, + IN ULONG UncompressedFragmentSize, + IN PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN ULONG FragmentOffset, + OUT PULONG FinalUncompressedSize, + IN PVOID WorkSpace +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlDescribeChunk ( + IN USHORT CompressionFormat, + IN OUT PUCHAR *CompressedBuffer, + IN PUCHAR EndOfCompressedBufferPlus1, + OUT PUCHAR *ChunkBuffer, + OUT PULONG ChunkSize +); + +NTSYSAPI +BOOLEAN +NTAPI +RtlEqualSid ( + IN PSID Sid1, + IN PSID Sid2 +); + +NTSYSAPI +VOID +NTAPI +RtlFillMemoryUlong ( + IN PVOID Destination, + IN ULONG Length, + IN ULONG Fill +); + +NTSYSAPI +BOOLEAN +NTAPI +RtlFreeHeap ( + IN HANDLE HeapHandle, + IN ULONG Flags, + IN PVOID P +); + +NTSYSAPI +VOID +NTAPI +RtlGenerate8dot3Name ( + IN PUNICODE_STRING Name, + IN BOOLEAN AllowExtendedCharacters, + IN OUT PGENERATE_NAME_CONTEXT Context, + OUT PUNICODE_STRING Name8dot3 +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlGetCompressionWorkSpaceSize ( + IN USHORT CompressionFormatAndEngine, + OUT PULONG CompressBufferWorkSpaceSize, + OUT PULONG CompressFragmentWorkSpaceSize +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlGetDaclSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PBOOLEAN DaclPresent, + OUT PACL *Dacl, + OUT PBOOLEAN DaclDefaulted +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlGetGroupSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PSID *Group, + OUT PBOOLEAN GroupDefaulted +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlGetOwnerSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PSID *Owner, + OUT PBOOLEAN OwnerDefaulted +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlInitializeSid ( + IN OUT PSID Sid, + IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, + IN UCHAR SubAuthorityCount +); + +NTSYSAPI +BOOLEAN +NTAPI +RtlIsNameLegalDOS8Dot3 ( + IN PUNICODE_STRING UnicodeName, + IN PANSI_STRING AnsiName, + PBOOLEAN Unknown +); + +NTSYSAPI +ULONG +NTAPI +RtlLengthRequiredSid ( + IN UCHAR SubAuthorityCount +); + +NTSYSAPI +ULONG +NTAPI +RtlLengthSid ( + IN PSID Sid +); + +NTSYSAPI +ULONG +NTAPI +RtlNtStatusToDosError ( + IN NTSTATUS Status +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlReserveChunk ( + IN USHORT CompressionFormat, + IN OUT PUCHAR *CompressedBuffer, + IN PUCHAR EndOfCompressedBufferPlus1, + OUT PUCHAR *ChunkBuffer, + IN ULONG ChunkSize +); + +NTSYSAPI +VOID +NTAPI +RtlSecondsSince1970ToTime ( + IN ULONG SecondsSince1970, + OUT PLARGE_INTEGER Time +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +RtlSelfRelativeToAbsoluteSD ( + IN PSECURITY_DESCRIPTOR SelfRelativeSD, + OUT PSECURITY_DESCRIPTOR AbsoluteSD, + IN PULONG AbsoluteSDSize, + IN PACL Dacl, + IN PULONG DaclSize, + IN PACL Sacl, + IN PULONG SaclSize, + IN PSID Owner, + IN PULONG OwnerSize, + IN PSID PrimaryGroup, + IN PULONG PrimaryGroupSize +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +RtlSetGroupSecurityDescriptor ( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID Group, + IN BOOLEAN GroupDefaulted +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlSetOwnerSecurityDescriptor ( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID Owner, + IN BOOLEAN OwnerDefaulted +); + +NTSYSAPI +NTSTATUS +NTAPI +RtlSetSaclSecurityDescriptor ( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN SaclPresent, + IN PACL Sacl, + IN BOOLEAN SaclDefaulted +); + +NTSYSAPI +PUCHAR +NTAPI +RtlSubAuthorityCountSid ( + IN PSID Sid +); + +NTSYSAPI +PULONG +NTAPI +RtlSubAuthoritySid ( + IN PSID Sid, + IN ULONG SubAuthority +); + +NTSYSAPI +BOOLEAN +NTAPI +RtlValidSid ( + IN PSID Sid +); + +NTKERNELAPI +NTSTATUS +NTAPI +SeAppendPrivileges ( + PACCESS_STATE AccessState, + PPRIVILEGE_SET Privileges +); + +NTKERNELAPI +BOOLEAN +NTAPI +SeAuditingFileEvents ( + IN BOOLEAN AccessGranted, + IN PSECURITY_DESCRIPTOR SecurityDescriptor +); + +NTKERNELAPI +BOOLEAN +NTAPI +SeAuditingFileOrGlobalEvents ( + IN BOOLEAN AccessGranted, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext +); + +NTKERNELAPI +VOID +NTAPI +SeCaptureSubjectContext ( + OUT PSECURITY_SUBJECT_CONTEXT SubjectContext +); + +NTKERNELAPI +NTSTATUS +NTAPI +SeCreateAccessState ( + OUT PACCESS_STATE AccessState, + IN PVOID AuxData, + IN ACCESS_MASK AccessMask, + IN PGENERIC_MAPPING Mapping +); + +NTKERNELAPI +NTSTATUS +NTAPI +SeCreateClientSecurity ( + IN PETHREAD Thread, + IN PSECURITY_QUALITY_OF_SERVICE QualityOfService, + IN BOOLEAN RemoteClient, + OUT PSECURITY_CLIENT_CONTEXT ClientContext +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +SeCreateClientSecurityFromSubjectContext ( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext, + IN PSECURITY_QUALITY_OF_SERVICE QualityOfService, + IN BOOLEAN ServerIsRemote, + OUT PSECURITY_CLIENT_CONTEXT ClientContext +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +#define SeDeleteClientSecurity(C) { \ + if (SeTokenType((C)->ClientToken) == TokenPrimary) { \ + PsDereferencePrimaryToken( (C)->ClientToken ); \ + } else { \ + PsDereferenceImpersonationToken( (C)->ClientToken ); \ + } \ +} + +NTKERNELAPI +VOID +NTAPI +SeDeleteObjectAuditAlarm ( + IN PVOID Object, + IN HANDLE Handle +); + +#define SeEnableAccessToExports() SeExports = *(PSE_EXPORTS *)SeExports; + +NTKERNELAPI +VOID +NTAPI +SeFreePrivileges ( + IN PPRIVILEGE_SET Privileges +); + +NTKERNELAPI +VOID +NTAPI +SeImpersonateClient ( + IN PSECURITY_CLIENT_CONTEXT ClientContext, + IN PETHREAD ServerThread OPTIONAL +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +SeImpersonateClientEx ( + IN PSECURITY_CLIENT_CONTEXT ClientContext, + IN PETHREAD ServerThread OPTIONAL +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +VOID +NTAPI +SeLockSubjectContext ( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext +); + +NTKERNELAPI +NTSTATUS +NTAPI +SeMarkLogonSessionForTerminationNotification ( + IN PLUID LogonId +); + +NTKERNELAPI +VOID +NTAPI +SeOpenObjectAuditAlarm ( + IN PUNICODE_STRING ObjectTypeName, + IN PVOID Object OPTIONAL, + IN PUNICODE_STRING AbsoluteObjectName OPTIONAL, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PACCESS_STATE AccessState, + IN BOOLEAN ObjectCreated, + IN BOOLEAN AccessGranted, + IN KPROCESSOR_MODE AccessMode, + OUT PBOOLEAN GenerateOnClose +); + +NTKERNELAPI +VOID +NTAPI +SeOpenObjectForDeleteAuditAlarm ( + IN PUNICODE_STRING ObjectTypeName, + IN PVOID Object OPTIONAL, + IN PUNICODE_STRING AbsoluteObjectName OPTIONAL, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PACCESS_STATE AccessState, + IN BOOLEAN ObjectCreated, + IN BOOLEAN AccessGranted, + IN KPROCESSOR_MODE AccessMode, + OUT PBOOLEAN GenerateOnClose +); + +NTKERNELAPI +BOOLEAN +NTAPI +SePrivilegeCheck ( + IN OUT PPRIVILEGE_SET RequiredPrivileges, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext, + IN KPROCESSOR_MODE AccessMode +); + +NTKERNELAPI +NTSTATUS +NTAPI +SeQueryAuthenticationIdToken ( + IN PACCESS_TOKEN Token, + OUT PLUID LogonId +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +SeQueryInformationToken ( + IN PACCESS_TOKEN Token, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID *TokenInformation +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +NTSTATUS +NTAPI +SeQuerySecurityDescriptorInfo ( + IN PSECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OUT PULONG Length, + IN PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +SeQuerySessionIdToken ( + IN PACCESS_TOKEN Token, + IN PULONG SessionId +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +#define SeQuerySubjectContextToken( SubjectContext ) \ + ( ARGUMENT_PRESENT( \ + ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken \ + ) ? \ + ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken : \ + ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->PrimaryToken ) + +typedef NTSTATUS (*PSE_LOGON_SESSION_TERMINATED_ROUTINE) ( + IN PLUID LogonId +); + +NTKERNELAPI +NTSTATUS +NTAPI +SeRegisterLogonSessionTerminatedRoutine ( + IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine +); + +NTKERNELAPI +VOID +NTAPI +SeReleaseSubjectContext ( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext +); + +NTKERNELAPI +VOID +NTAPI +SeSetAccessStateGenericMapping ( + PACCESS_STATE AccessState, + PGENERIC_MAPPING GenericMapping +); + +NTKERNELAPI +NTSTATUS +NTAPI +SeSetSecurityDescriptorInfo ( + IN PVOID Object OPTIONAL, + IN PSECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + IN POOL_TYPE PoolType, + IN PGENERIC_MAPPING GenericMapping +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTKERNELAPI +NTSTATUS +NTAPI +SeSetSecurityDescriptorInfoEx ( + IN PVOID Object OPTIONAL, + IN PSECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR ModificationDescriptor, + IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + IN ULONG AutoInheritFlags, + IN POOL_TYPE PoolType, + IN PGENERIC_MAPPING GenericMapping +); + +NTKERNELAPI +BOOLEAN +NTAPI +SeTokenIsAdmin ( + IN PACCESS_TOKEN Token +); + +NTKERNELAPI +BOOLEAN +NTAPI +SeTokenIsRestricted ( + IN PACCESS_TOKEN Token +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTKERNELAPI +TOKEN_TYPE +NTAPI +SeTokenType ( + IN PACCESS_TOKEN Token +); + +NTKERNELAPI +VOID +NTAPI +SeUnlockSubjectContext ( + IN PSECURITY_SUBJECT_CONTEXT SubjectContext +); + +NTKERNELAPI +NTSTATUS +SeUnregisterLogonSessionTerminatedRoutine ( + IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwAdjustPrivilegesToken ( + IN HANDLE TokenHandle, + IN BOOLEAN DisableAllPrivileges, + IN PTOKEN_PRIVILEGES NewState, + IN ULONG BufferLength, + OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL, + OUT PULONG ReturnLength +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwAlertThread ( + IN HANDLE ThreadHandle +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwAllocateVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN OUT PULONG RegionSize, + IN ULONG AllocationType, + IN ULONG Protect +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwAccessCheckAndAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PBOOLEAN AccessStatus, + OUT PBOOLEAN GenerateOnClose +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwCancelIoFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwClearEvent ( + IN HANDLE EventHandle +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwCloseObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN PVOID HandleId, + IN BOOLEAN GenerateOnClose +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwCreateSection ( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN PLARGE_INTEGER MaximumSize OPTIONAL, + IN ULONG SectionPageProtection, + IN ULONG AllocationAttributes, + IN HANDLE FileHandle OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwCreateSymbolicLinkObject ( + OUT PHANDLE SymbolicLinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PUNICODE_STRING TargetName +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDeleteFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDeleteValueKey ( + IN HANDLE Handle, + IN PUNICODE_STRING Name +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDeviceIoControlFile ( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDisplayString ( + IN PUNICODE_STRING String +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDuplicateObject ( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN HANDLE TargetProcessHandle OPTIONAL, + OUT PHANDLE TargetHandle OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Options +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwDuplicateToken ( + IN HANDLE ExistingTokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN EffectiveOnly, + IN TOKEN_TYPE TokenType, + OUT PHANDLE NewTokenHandle +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwFlushInstructionCache ( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress OPTIONAL, + IN ULONG FlushSize +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwFlushVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG FlushSize, + OUT PIO_STATUS_BLOCK IoStatusBlock +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwFreeVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG RegionSize, + IN ULONG FreeType +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwFsControlFile ( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG FsControlCode, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwInitiatePowerAction ( + IN POWER_ACTION SystemAction, + IN SYSTEM_POWER_STATE MinSystemState, + IN ULONG Flags, + IN BOOLEAN Asynchronous +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwLoadDriver ( + /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\" */ + IN PUNICODE_STRING RegistryPath +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwLoadKey ( + IN POBJECT_ATTRIBUTES KeyObjectAttributes, + IN POBJECT_ATTRIBUTES FileObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwNotifyChangeKey ( + IN HANDLE KeyHandle, + IN HANDLE EventHandle OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG NotifyFilter, + IN BOOLEAN WatchSubtree, + IN PVOID Buffer, + IN ULONG BufferLength, + IN BOOLEAN Asynchronous +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenDirectoryObject ( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenEvent ( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenProcess ( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenProcessToken ( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE TokenHandle +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenThread ( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwOpenThreadToken ( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + OUT PHANDLE TokenHandle +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwPowerInformation ( + IN POWER_INFORMATION_LEVEL PowerInformationLevel, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwPulseEvent ( + IN HANDLE EventHandle, + OUT PULONG PreviousState OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryDefaultLocale ( + IN BOOLEAN ThreadOrSystem, + OUT PLCID Locale +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryDirectoryFile ( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN BOOLEAN ReturnSingleEntry, + IN PUNICODE_STRING FileName OPTIONAL, + IN BOOLEAN RestartScan +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryDirectoryObject ( + IN HANDLE DirectoryHandle, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN BOOLEAN RestartScan, + IN OUT PULONG Context, + OUT PULONG ReturnLength OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID EaList OPTIONAL, + IN ULONG EaListLength, + IN PULONG EaIndex OPTIONAL, + IN BOOLEAN RestartScan +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryInformationProcess ( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT PULONG ReturnLength OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryInformationToken ( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryObject ( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + OUT PVOID ObjectInformation, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQuerySection ( + IN HANDLE SectionHandle, + IN SECTION_INFORMATION_CLASS SectionInformationClass, + OUT PVOID SectionInformation, + IN ULONG SectionInformationLength, + OUT PULONG ResultLength OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQuerySecurityObject ( + IN HANDLE FileHandle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Length, + OUT PULONG ResultLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQuerySystemInformation ( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT PVOID SystemInformation, + IN ULONG Length, + OUT PULONG ReturnLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwQueryVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwReplaceKey ( + IN POBJECT_ATTRIBUTES NewFileObjectAttributes, + IN HANDLE KeyHandle, + IN POBJECT_ATTRIBUTES OldFileObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwResetEvent ( + IN HANDLE EventHandle, + OUT PULONG PreviousState OPTIONAL +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwRestoreKey ( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Flags +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwSaveKey ( + IN HANDLE KeyHandle, + IN HANDLE FileHandle +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetDefaultLocale ( + IN BOOLEAN ThreadOrSystem, + IN LCID Locale +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetDefaultUILanguage ( + IN LANGID LanguageId +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetEvent ( + IN HANDLE EventHandle, + OUT PULONG PreviousState OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetInformationObject ( + IN HANDLE ObjectHandle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + IN PVOID ObjectInformation, + IN ULONG ObjectInformationLength +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetInformationProcess ( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + IN PVOID ProcessInformation, + IN ULONG ProcessInformationLength +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetSecurityObject ( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetSystemInformation ( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN PVOID SystemInformation, + IN ULONG Length +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetSystemTime ( + IN PLARGE_INTEGER NewTime, + OUT PLARGE_INTEGER OldTime OPTIONAL +); + +#if (VER_PRODUCTBUILD >= 2195) + +NTSYSAPI +NTSTATUS +NTAPI +ZwSetVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass +); + +#endif /* (VER_PRODUCTBUILD >= 2195) */ + +NTSYSAPI +NTSTATUS +NTAPI +ZwTerminateProcess ( + IN HANDLE ProcessHandle OPTIONAL, + IN NTSTATUS ExitStatus +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwUnloadDriver ( + /* "\\Registry\\Machine\\System\\CurrentControlSet\\Services\\" */ + IN PUNICODE_STRING RegistryPath +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwUnloadKey ( + IN POBJECT_ATTRIBUTES KeyObjectAttributes +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwWaitForSingleObject ( + IN HANDLE Handle, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwWaitForMultipleObjects ( + IN ULONG HandleCount, + IN PHANDLE Handles, + IN WAIT_TYPE WaitType, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL +); + +NTSYSAPI +NTSTATUS +NTAPI +ZwYieldExecution ( + VOID +); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* _NTIFS_ */ diff --git a/reactos/w32api/include/ddk/ntpoapi.h b/reactos/w32api/include/ddk/ntpoapi.h new file mode 100644 index 00000000000..d33de714037 --- /dev/null +++ b/reactos/w32api/include/ddk/ntpoapi.h @@ -0,0 +1,234 @@ +/* + * ntpoapi.h + * + * APIs for power management. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __NTPOAPI_H +#define __NTPOAPI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "batclass.h" + +#define POWER_PERF_SCALE 100 +#define PERF_LEVEL_TO_PERCENT(x) (((x) * 1000) / (POWER_PERF_SCALE * 10)) +#define PERCENT_TO_PERF_LEVEL(x) (((x) * POWER_PERF_SCALE * 10) / 1000) + +typedef struct _PROCESSOR_IDLE_TIMES { + ULONGLONG StartTime; + ULONGLONG EndTime; + ULONG IdleHandlerReserved[4]; +} PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES; + +typedef BOOLEAN DDKFASTAPI +(*PPROCESSOR_IDLE_HANDLER)( + IN OUT PPROCESSOR_IDLE_TIMES IdleTimes); + +typedef struct _PROCESSOR_IDLE_HANDLER_INFO { + ULONG HardwareLatency; + PPROCESSOR_IDLE_HANDLER Handler; +} PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO; + +typedef VOID DDKFASTAPI +(*PSET_PROCESSOR_THROTTLE)( + IN UCHAR Throttle); + +typedef NTSTATUS DDKFASTAPI +(*PSET_PROCESSOR_THROTTLE2)( + IN UCHAR Throttle); + +#define MAX_IDLE_HANDLERS 3 + +typedef struct _PROCESSOR_STATE_HANDLER { + UCHAR ThrottleScale; + BOOLEAN ThrottleOnIdle; + PSET_PROCESSOR_THROTTLE SetThrottle; + ULONG NumIdleHandlers; + PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; +} PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER; + +typedef enum _POWER_STATE_HANDLER_TYPE { + PowerStateSleeping1, + PowerStateSleeping2, + PowerStateSleeping3, + PowerStateSleeping4, + PowerStateSleeping4Firmware, + PowerStateShutdownReset, + PowerStateShutdownOff, + PowerStateMaximum +} POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE; + +typedef NTSTATUS DDKAPI +(*PENTER_STATE_SYSTEM_HANDLER)( + IN PVOID SystemContext); + +typedef NTSTATUS DDKAPI +(*PENTER_STATE_HANDLER)( + IN PVOID Context, + IN PENTER_STATE_SYSTEM_HANDLER SystemHandler OPTIONAL, + IN PVOID SystemContext, + IN LONG NumberProcessors, + IN VOLATILE PLONG Number); + +typedef struct _POWER_STATE_HANDLER { + POWER_STATE_HANDLER_TYPE Type; + BOOLEAN RtcWake; + UCHAR Spare[3]; + PENTER_STATE_HANDLER Handler; + PVOID Context; +} POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER; + +typedef NTSTATUS STDCALL +(*PENTER_STATE_NOTIFY_HANDLER)( + IN POWER_STATE_HANDLER_TYPE State, + IN PVOID Context, + IN BOOLEAN Entering); + +typedef struct _POWER_STATE_NOTIFY_HANDLER { + PENTER_STATE_NOTIFY_HANDLER Handler; + PVOID Context; +} POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER; + +NTOSAPI +NTSTATUS +DDKAPI +NtPowerInformation( + IN POWER_INFORMATION_LEVEL InformationLevel, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength); + +#define PROCESSOR_STATE_TYPE_PERFORMANCE 1 +#define PROCESSOR_STATE_TYPE_THROTTLE 2 + +typedef struct _PROCESSOR_PERF_LEVEL { + UCHAR PercentFrequency; + UCHAR Reserved; + USHORT Flags; +} PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL; + +typedef struct _PROCESSOR_PERF_STATE { + UCHAR PercentFrequency; + UCHAR MinCapacity; + USHORT Power; + UCHAR IncreaseLevel; + UCHAR DecreaseLevel; + USHORT Flags; + ULONG IncreaseTime; + ULONG DecreaseTime; + ULONG IncreaseCount; + ULONG DecreaseCount; + ULONGLONG PerformanceTime; +} PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE; + +typedef struct _PROCESSOR_STATE_HANDLER2 { + ULONG NumIdleHandlers; + PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS]; + PSET_PROCESSOR_THROTTLE2 SetPerfLevel; + ULONG HardwareLatency; + UCHAR NumPerfStates; + PROCESSOR_PERF_LEVEL PerfLevel[1]; +} PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2; + + +NTOSAPI +NTSTATUS +DDKAPI +NtSetThreadExecutionState( + IN EXECUTION_STATE esFlags, + OUT EXECUTION_STATE *PreviousFlags); + +NTOSAPI +NTSTATUS +DDKAPI +NtRequestWakeupLatency( + IN LATENCY_TIME latency); + +NTOSAPI +NTSTATUS +DDKAPI +NtInitiatePowerAction( + IN POWER_ACTION SystemAction, + IN SYSTEM_POWER_STATE MinSystemState, + IN ULONG Flags, + IN BOOLEAN Asynchronous); + +NTOSAPI +NTSTATUS +DDKAPI +NtSetSystemPowerState( + IN POWER_ACTION SystemAction, + IN SYSTEM_POWER_STATE MinSystemState, + IN ULONG Flags); + +NTOSAPI +NTSTATUS +DDKAPI +NtGetDevicePowerState( + IN HANDLE Device, + OUT DEVICE_POWER_STATE *State); + +NTOSAPI +NTSTATUS +DDKAPI +NtCancelDeviceWakeupRequest( + IN HANDLE Device); + +NTOSAPI +BOOLEAN +DDKAPI +NtIsSystemResumeAutomatic( + VOID); + +NTOSAPI +NTSTATUS +DDKAPI +NtRequestDeviceWakeup( + IN HANDLE Device); + +#define WINLOGON_LOCK_ON_SLEEP 0x00000001 + +typedef struct _PROCESSOR_POWER_INFORMATION { + ULONG Number; + ULONG MaxMhz; + ULONG CurrentMhz; + ULONG MhzLimit; + ULONG MaxIdleState; + ULONG CurrentIdleState; +} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION; + + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __NTPOAPI_H */ diff --git a/reactos/w32api/include/ddk/ntstatus.h b/reactos/w32api/include/ddk/ntstatus.h new file mode 100644 index 00000000000..d325d9f1144 --- /dev/null +++ b/reactos/w32api/include/ddk/ntstatus.h @@ -0,0 +1,1105 @@ +/* + * ntstatus.h + * + * Windows NT status codes + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef _NTSTATUS_H +#define _NTSTATUS_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(STATUS_SUCCESS) +#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) +#endif /* !STATUS_SUCCESS */ +#define FACILITY_DEBUGGER 0x1 +#define FACILITY_RPC_RUNTIME 0x2 +#define FACILITY_RPC_STUBS 0x3 +#define FACILITY_IO_ERROR_CODE 0x4 +#define FACILITY_TERMINAL_SERVER 0xA +#define FACILITY_USB_ERROR_CODE 0x10 +#define FACILITY_HID_ERROR_CODE 0x11 +#define FACILITY_FIREWIRE_ERROR_CODE 0x12 +#define FACILITY_CLUSTER_ERROR_CODE 0x13 +#define FACILITY_ACPI_ERROR_CODE 0x14 +#define FACILITY_SXS_ERROR_CODE 0x15 +#define STATUS_SEVERITY_SUCCESS 0x0 +#define STATUS_SEVERITY_INFORMATIONAL 0x1 +#define STATUS_SEVERITY_WARNING 0x2 +#define STATUS_SEVERITY_ERROR 0x3 +#define STATUS_WAIT_0 ((NTSTATUS)0x00000000L) +#define STATUS_WAIT_1 ((NTSTATUS)0x00000001L) +#define STATUS_WAIT_2 ((NTSTATUS)0x00000002L) +#define STATUS_WAIT_3 ((NTSTATUS)0x00000003L) +#define STATUS_WAIT_63 ((NTSTATUS)0x0000003FL) +#define STATUS_ABANDONED ((NTSTATUS)0x00000080L) +#define STATUS_ABANDONED_WAIT_0 ((NTSTATUS)0x00000080L) +#define STATUS_ABANDONED_WAIT_63 ((NTSTATUS)0x000000BFL) +#define STATUS_USER_APC ((NTSTATUS)0x000000C0L) +#define STATUS_KERNEL_APC ((NTSTATUS)0x00000100L) +#define STATUS_ALERTED ((NTSTATUS)0x00000101L) +#define STATUS_TIMEOUT ((NTSTATUS)0x00000102L) +#define STATUS_PENDING ((NTSTATUS)0x00000103L) +#define STATUS_REPARSE ((NTSTATUS)0x00000104L) +#define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L) +#define STATUS_NOT_ALL_ASSIGNED ((NTSTATUS)0x00000106L) +#define STATUS_SOME_NOT_MAPPED ((NTSTATUS)0x00000107L) +#define STATUS_OPLOCK_BREAK_IN_PROGRESS ((NTSTATUS)0x00000108L) +#define STATUS_VOLUME_MOUNTED ((NTSTATUS)0x00000109L) +#define STATUS_RXACT_COMMITTED ((NTSTATUS)0x0000010AL) +#define STATUS_NOTIFY_CLEANUP ((NTSTATUS)0x0000010BL) +#define STATUS_NOTIFY_ENUM_DIR ((NTSTATUS)0x0000010CL) +#define STATUS_NO_QUOTAS_FOR_ACCOUNT ((NTSTATUS)0x0000010DL) +#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED ((NTSTATUS)0x0000010EL) +#define STATUS_PAGE_FAULT_TRANSITION ((NTSTATUS)0x00000110L) +#define STATUS_PAGE_FAULT_DEMAND_ZERO ((NTSTATUS)0x00000111L) +#define STATUS_PAGE_FAULT_COPY_ON_WRITE ((NTSTATUS)0x00000112L) +#define STATUS_PAGE_FAULT_GUARD_PAGE ((NTSTATUS)0x00000113L) +#define STATUS_PAGE_FAULT_PAGING_FILE ((NTSTATUS)0x00000114L) +#define STATUS_CACHE_PAGE_LOCKED ((NTSTATUS)0x00000115L) +#define STATUS_CRASH_DUMP ((NTSTATUS)0x00000116L) +#define STATUS_BUFFER_ALL_ZEROS ((NTSTATUS)0x00000117L) +#define STATUS_REPARSE_OBJECT ((NTSTATUS)0x00000118L) +#define STATUS_RESOURCE_REQUIREMENTS_CHANGED ((NTSTATUS)0x00000119L) +#define STATUS_TRANSLATION_COMPLETE ((NTSTATUS)0x00000120L) +#define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY ((NTSTATUS)0x00000121L) +#define STATUS_NOTHING_TO_TERMINATE ((NTSTATUS)0x00000122L) +#define STATUS_PROCESS_NOT_IN_JOB ((NTSTATUS)0x00000123L) +#define STATUS_PROCESS_IN_JOB ((NTSTATUS)0x00000124L) +#define STATUS_OBJECT_NAME_EXISTS ((NTSTATUS)0x40000000L) +#define STATUS_THREAD_WAS_SUSPENDED ((NTSTATUS)0x40000001L) +#define STATUS_WORKING_SET_LIMIT_RANGE ((NTSTATUS)0x40000002L) +#define STATUS_IMAGE_NOT_AT_BASE ((NTSTATUS)0x40000003L) +#define STATUS_RXACT_STATE_CREATED ((NTSTATUS)0x40000004L) +#define STATUS_SEGMENT_NOTIFICATION ((NTSTATUS)0x40000005L) +#define STATUS_LOCAL_USER_SESSION_KEY ((NTSTATUS)0x40000006L) +#define STATUS_BAD_CURRENT_DIRECTORY ((NTSTATUS)0x40000007L) +#define STATUS_SERIAL_MORE_WRITES ((NTSTATUS)0x40000008L) +#define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009L) +#define STATUS_FT_READ_RECOVERY_FROM_BACKUP ((NTSTATUS)0x4000000AL) +#define STATUS_FT_WRITE_RECOVERY ((NTSTATUS)0x4000000BL) +#define STATUS_SERIAL_COUNTER_TIMEOUT ((NTSTATUS)0x4000000CL) +#define STATUS_NULL_LM_PASSWORD ((NTSTATUS)0x4000000DL) +#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS)0x4000000EL) +#define STATUS_RECEIVE_PARTIAL ((NTSTATUS)0x4000000FL) +#define STATUS_RECEIVE_EXPEDITED ((NTSTATUS)0x40000010L) +#define STATUS_RECEIVE_PARTIAL_EXPEDITED ((NTSTATUS)0x40000011L) +#define STATUS_EVENT_DONE ((NTSTATUS)0x40000012L) +#define STATUS_EVENT_PENDING ((NTSTATUS)0x40000013L) +#define STATUS_CHECKING_FILE_SYSTEM ((NTSTATUS)0x40000014L) +#define STATUS_FATAL_APP_EXIT ((NTSTATUS)0x40000015L) +#define STATUS_PREDEFINED_HANDLE ((NTSTATUS)0x40000016L) +#define STATUS_WAS_UNLOCKED ((NTSTATUS)0x40000017L) +#define STATUS_SERVICE_NOTIFICATION ((NTSTATUS)0x40000018L) +#define STATUS_WAS_LOCKED ((NTSTATUS)0x40000019L) +#define STATUS_LOG_HARD_ERROR ((NTSTATUS)0x4000001AL) +#define STATUS_ALREADY_WIN32 ((NTSTATUS)0x4000001BL) +#define STATUS_WX86_UNSIMULATE ((NTSTATUS)0x4000001CL) +#define STATUS_WX86_CONTINUE ((NTSTATUS)0x4000001DL) +#define STATUS_WX86_SINGLE_STEP ((NTSTATUS)0x4000001EL) +#define STATUS_WX86_BREAKPOINT ((NTSTATUS)0x4000001FL) +#define STATUS_WX86_EXCEPTION_CONTINUE ((NTSTATUS)0x40000020L) +#define STATUS_WX86_EXCEPTION_LASTCHANCE ((NTSTATUS)0x40000021L) +#define STATUS_WX86_EXCEPTION_CHAIN ((NTSTATUS)0x40000022L) +#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE ((NTSTATUS)0x40000023L) +#define STATUS_NO_YIELD_PERFORMED ((NTSTATUS)0x40000024L) +#define STATUS_TIMER_RESUME_IGNORED ((NTSTATUS)0x40000025L) +#define STATUS_ARBITRATION_UNHANDLED ((NTSTATUS)0x40000026L) +#define STATUS_CARDBUS_NOT_SUPPORTED ((NTSTATUS)0x40000027L) +#define STATUS_WX86_CREATEWX86TIB ((NTSTATUS)0x40000028L) +#define STATUS_MP_PROCESSOR_MISMATCH ((NTSTATUS)0x40000029L) +#define STATUS_HIBERNATED ((NTSTATUS)0x4000002AL) +#define STATUS_RESUME_HIBERNATION ((NTSTATUS)0x4000002BL) +#define STATUS_GUARD_PAGE_VIOLATION ((NTSTATUS)0x80000001L) +#define STATUS_DATATYPE_MISALIGNMENT ((NTSTATUS)0x80000002L) +#define STATUS_BREAKPOINT ((NTSTATUS)0x80000003L) +#define STATUS_SINGLE_STEP ((NTSTATUS)0x80000004L) +#define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005L) +#define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L) +#define STATUS_WAKE_SYSTEM_DEBUGGER ((NTSTATUS)0x80000007L) +#define STATUS_HANDLES_CLOSED ((NTSTATUS)0x8000000AL) +#define STATUS_NO_INHERITANCE ((NTSTATUS)0x8000000BL) +#define STATUS_GUID_SUBSTITUTION_MADE ((NTSTATUS)0x8000000CL) +#define STATUS_PARTIAL_COPY ((NTSTATUS)0x8000000DL) +#define STATUS_DEVICE_PAPER_EMPTY ((NTSTATUS)0x8000000EL) +#define STATUS_DEVICE_POWERED_OFF ((NTSTATUS)0x8000000FL) +#define STATUS_DEVICE_OFF_LINE ((NTSTATUS)0x80000010L) +#define STATUS_DEVICE_BUSY ((NTSTATUS)0x80000011L) +#define STATUS_NO_MORE_EAS ((NTSTATUS)0x80000012L) +#define STATUS_INVALID_EA_NAME ((NTSTATUS)0x80000013L) +#define STATUS_EA_LIST_INCONSISTENT ((NTSTATUS)0x80000014L) +#define STATUS_INVALID_EA_FLAG ((NTSTATUS)0x80000015L) +#define STATUS_VERIFY_REQUIRED ((NTSTATUS)0x80000016L) +#define STATUS_EXTRANEOUS_INFORMATION ((NTSTATUS)0x80000017L) +#define STATUS_RXACT_COMMIT_NECESSARY ((NTSTATUS)0x80000018L) +#define STATUS_NO_MORE_ENTRIES ((NTSTATUS)0x8000001AL) +#define STATUS_FILEMARK_DETECTED ((NTSTATUS)0x8000001BL) +#define STATUS_MEDIA_CHANGED ((NTSTATUS)0x8000001CL) +#define STATUS_BUS_RESET ((NTSTATUS)0x8000001DL) +#define STATUS_END_OF_MEDIA ((NTSTATUS)0x8000001EL) +#define STATUS_BEGINNING_OF_MEDIA ((NTSTATUS)0x8000001FL) +#define STATUS_MEDIA_CHECK ((NTSTATUS)0x80000020L) +#define STATUS_SETMARK_DETECTED ((NTSTATUS)0x80000021L) +#define STATUS_NO_DATA_DETECTED ((NTSTATUS)0x80000022L) +#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES ((NTSTATUS)0x80000023L) +#define STATUS_SERVER_HAS_OPEN_HANDLES ((NTSTATUS)0x80000024L) +#define STATUS_ALREADY_DISCONNECTED ((NTSTATUS)0x80000025L) +#define STATUS_LONGJUMP ((NTSTATUS)0x80000026L) +#define STATUS_CLEANER_CARTRIDGE_INSTALLED ((NTSTATUS)0x80000027L) +#define STATUS_PLUGPLAY_QUERY_VETOED ((NTSTATUS)0x80000028L) +#define STATUS_UNWIND_CONSOLIDATE ((NTSTATUS)0x80000029L) +#define STATUS_CLUSTER_NODE_ALREADY_UP ((NTSTATUS)0x80130001L) +#define STATUS_CLUSTER_NODE_ALREADY_DOWN ((NTSTATUS)0x80130002L) +#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE ((NTSTATUS)0x80130003L) +#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE ((NTSTATUS)0x80130004L) +#define STATUS_CLUSTER_NODE_ALREADY_MEMBER ((NTSTATUS)0x80130005L) +#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L) +#define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L) +#define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L) +#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L) +#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L) +#define STATUS_IN_PAGE_ERROR ((NTSTATUS)0xC0000006L) +#define STATUS_PAGEFILE_QUOTA ((NTSTATUS)0xC0000007L) +#define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008L) +#define STATUS_BAD_INITIAL_STACK ((NTSTATUS)0xC0000009L) +#define STATUS_BAD_INITIAL_PC ((NTSTATUS)0xC000000AL) +#define STATUS_INVALID_CID ((NTSTATUS)0xC000000BL) +#define STATUS_TIMER_NOT_CANCELED ((NTSTATUS)0xC000000CL) +#define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL) +#define STATUS_NO_SUCH_DEVICE ((NTSTATUS)0xC000000EL) +#define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000FL) +#define STATUS_INVALID_DEVICE_REQUEST ((NTSTATUS)0xC0000010L) +#define STATUS_END_OF_FILE ((NTSTATUS)0xC0000011L) +#define STATUS_WRONG_VOLUME ((NTSTATUS)0xC0000012L) +#define STATUS_NO_MEDIA_IN_DEVICE ((NTSTATUS)0xC0000013L) +#define STATUS_UNRECOGNIZED_MEDIA ((NTSTATUS)0xC0000014L) +#define STATUS_NONEXISTENT_SECTOR ((NTSTATUS)0xC0000015L) +#define STATUS_MORE_PROCESSING_REQUIRED ((NTSTATUS)0xC0000016L) +#define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017L) +#define STATUS_CONFLICTING_ADDRESSES ((NTSTATUS)0xC0000018L) +#define STATUS_NOT_MAPPED_VIEW ((NTSTATUS)0xC0000019L) +#define STATUS_UNABLE_TO_FREE_VM ((NTSTATUS)0xC000001AL) +#define STATUS_UNABLE_TO_DELETE_SECTION ((NTSTATUS)0xC000001BL) +#define STATUS_INVALID_SYSTEM_SERVICE ((NTSTATUS)0xC000001CL) +#define STATUS_ILLEGAL_INSTRUCTION ((NTSTATUS)0xC000001DL) +#define STATUS_INVALID_LOCK_SEQUENCE ((NTSTATUS)0xC000001EL) +#define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001FL) +#define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020L) +#define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021L) +#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L) +#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L) +#define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024L) +#define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025L) +#define STATUS_INVALID_DISPOSITION ((NTSTATUS)0xC0000026L) +#define STATUS_UNWIND ((NTSTATUS)0xC0000027L) +#define STATUS_BAD_STACK ((NTSTATUS)0xC0000028L) +#define STATUS_INVALID_UNWIND_TARGET ((NTSTATUS)0xC0000029L) +#define STATUS_NOT_LOCKED ((NTSTATUS)0xC000002AL) +#define STATUS_PARITY_ERROR ((NTSTATUS)0xC000002BL) +#define STATUS_UNABLE_TO_DECOMMIT_VM ((NTSTATUS)0xC000002CL) +#define STATUS_NOT_COMMITTED ((NTSTATUS)0xC000002DL) +#define STATUS_INVALID_PORT_ATTRIBUTES ((NTSTATUS)0xC000002EL) +#define STATUS_PORT_MESSAGE_TOO_LONG ((NTSTATUS)0xC000002FL) +#define STATUS_INVALID_PARAMETER_MIX ((NTSTATUS)0xC0000030L) +#define STATUS_INVALID_QUOTA_LOWER ((NTSTATUS)0xC0000031L) +#define STATUS_DISK_CORRUPT_ERROR ((NTSTATUS)0xC0000032L) +#define STATUS_OBJECT_NAME_INVALID ((NTSTATUS)0xC0000033L) +#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L) +#define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035L) +#define STATUS_PORT_DISCONNECTED ((NTSTATUS)0xC0000037L) +#define STATUS_DEVICE_ALREADY_ATTACHED ((NTSTATUS)0xC0000038L) +#define STATUS_OBJECT_PATH_INVALID ((NTSTATUS)0xC0000039L) +#define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS)0xC000003AL) +#define STATUS_OBJECT_PATH_SYNTAX_BAD ((NTSTATUS)0xC000003BL) +#define STATUS_DATA_OVERRUN ((NTSTATUS)0xC000003CL) +#define STATUS_DATA_LATE_ERROR ((NTSTATUS)0xC000003DL) +#define STATUS_DATA_ERROR ((NTSTATUS)0xC000003EL) +#define STATUS_CRC_ERROR ((NTSTATUS)0xC000003FL) +#define STATUS_SECTION_TOO_BIG ((NTSTATUS)0xC0000040L) +#define STATUS_PORT_CONNECTION_REFUSED ((NTSTATUS)0xC0000041L) +#define STATUS_INVALID_PORT_HANDLE ((NTSTATUS)0xC0000042L) +#define STATUS_SHARING_VIOLATION ((NTSTATUS)0xC0000043L) +#define STATUS_QUOTA_EXCEEDED ((NTSTATUS)0xC0000044L) +#define STATUS_INVALID_PAGE_PROTECTION ((NTSTATUS)0xC0000045L) +#define STATUS_MUTANT_NOT_OWNED ((NTSTATUS)0xC0000046L) +#define STATUS_SEMAPHORE_LIMIT_EXCEEDED ((NTSTATUS)0xC0000047L) +#define STATUS_PORT_ALREADY_SET ((NTSTATUS)0xC0000048L) +#define STATUS_SECTION_NOT_IMAGE ((NTSTATUS)0xC0000049L) +#define STATUS_SUSPEND_COUNT_EXCEEDED ((NTSTATUS)0xC000004AL) +#define STATUS_THREAD_IS_TERMINATING ((NTSTATUS)0xC000004BL) +#define STATUS_BAD_WORKING_SET_LIMIT ((NTSTATUS)0xC000004CL) +#define STATUS_INCOMPATIBLE_FILE_MAP ((NTSTATUS)0xC000004DL) +#define STATUS_SECTION_PROTECTION ((NTSTATUS)0xC000004EL) +#define STATUS_EAS_NOT_SUPPORTED ((NTSTATUS)0xC000004FL) +#define STATUS_EA_TOO_LARGE ((NTSTATUS)0xC0000050L) +#define STATUS_NONEXISTENT_EA_ENTRY ((NTSTATUS)0xC0000051L) +#define STATUS_NO_EAS_ON_FILE ((NTSTATUS)0xC0000052L) +#define STATUS_EA_CORRUPT_ERROR ((NTSTATUS)0xC0000053L) +#define STATUS_FILE_LOCK_CONFLICT ((NTSTATUS)0xC0000054L) +#define STATUS_LOCK_NOT_GRANTED ((NTSTATUS)0xC0000055L) +#define STATUS_DELETE_PENDING ((NTSTATUS)0xC0000056L) +#define STATUS_CTL_FILE_NOT_SUPPORTED ((NTSTATUS)0xC0000057L) +#define STATUS_UNKNOWN_REVISION ((NTSTATUS)0xC0000058L) +#define STATUS_REVISION_MISMATCH ((NTSTATUS)0xC0000059L) +#define STATUS_INVALID_OWNER ((NTSTATUS)0xC000005AL) +#define STATUS_INVALID_PRIMARY_GROUP ((NTSTATUS)0xC000005BL) +#define STATUS_NO_IMPERSONATION_TOKEN ((NTSTATUS)0xC000005CL) +#define STATUS_CANT_DISABLE_MANDATORY ((NTSTATUS)0xC000005DL) +#define STATUS_NO_LOGON_SERVERS ((NTSTATUS)0xC000005EL) +#define STATUS_NO_SUCH_LOGON_SESSION ((NTSTATUS)0xC000005FL) +#define STATUS_NO_SUCH_PRIVILEGE ((NTSTATUS)0xC0000060L) +#define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061L) +#define STATUS_INVALID_ACCOUNT_NAME ((NTSTATUS)0xC0000062L) +#define STATUS_USER_EXISTS ((NTSTATUS)0xC0000063L) +#define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064L) +#define STATUS_GROUP_EXISTS ((NTSTATUS)0xC0000065L) +#define STATUS_NO_SUCH_GROUP ((NTSTATUS)0xC0000066L) +#define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067L) +#define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068L) +#define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069L) +#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL) +#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006BL) +#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006CL) +#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL) +#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL) +#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006FL) +#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070L) +#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L) +#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L) +#define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073L) +#define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074L) +#define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075L) +#define STATUS_INVALID_SUB_AUTHORITY ((NTSTATUS)0xC0000076L) +#define STATUS_INVALID_ACL ((NTSTATUS)0xC0000077L) +#define STATUS_INVALID_SID ((NTSTATUS)0xC0000078L) +#define STATUS_INVALID_SECURITY_DESCR ((NTSTATUS)0xC0000079L) +#define STATUS_PROCEDURE_NOT_FOUND ((NTSTATUS)0xC000007AL) +#define STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS)0xC000007BL) +#define STATUS_NO_TOKEN ((NTSTATUS)0xC000007CL) +#define STATUS_BAD_INHERITANCE_ACL ((NTSTATUS)0xC000007DL) +#define STATUS_RANGE_NOT_LOCKED ((NTSTATUS)0xC000007EL) +#define STATUS_DISK_FULL ((NTSTATUS)0xC000007FL) +#define STATUS_SERVER_DISABLED ((NTSTATUS)0xC0000080L) +#define STATUS_SERVER_NOT_DISABLED ((NTSTATUS)0xC0000081L) +#define STATUS_TOO_MANY_GUIDS_REQUESTED ((NTSTATUS)0xC0000082L) +#define STATUS_GUIDS_EXHAUSTED ((NTSTATUS)0xC0000083L) +#define STATUS_INVALID_ID_AUTHORITY ((NTSTATUS)0xC0000084L) +#define STATUS_AGENTS_EXHAUSTED ((NTSTATUS)0xC0000085L) +#define STATUS_INVALID_VOLUME_LABEL ((NTSTATUS)0xC0000086L) +#define STATUS_SECTION_NOT_EXTENDED ((NTSTATUS)0xC0000087L) +#define STATUS_NOT_MAPPED_DATA ((NTSTATUS)0xC0000088L) +#define STATUS_RESOURCE_DATA_NOT_FOUND ((NTSTATUS)0xC0000089L) +#define STATUS_RESOURCE_TYPE_NOT_FOUND ((NTSTATUS)0xC000008AL) +#define STATUS_RESOURCE_NAME_NOT_FOUND ((NTSTATUS)0xC000008BL) +#define STATUS_ARRAY_BOUNDS_EXCEEDED ((NTSTATUS)0xC000008CL) +#define STATUS_FLOAT_DENORMAL_OPERAND ((NTSTATUS)0xC000008DL) +#define STATUS_FLOAT_DIVIDE_BY_ZERO ((NTSTATUS)0xC000008EL) +#define STATUS_FLOAT_INEXACT_RESULT ((NTSTATUS)0xC000008FL) +#define STATUS_FLOAT_INVALID_OPERATION ((NTSTATUS)0xC0000090L) +#define STATUS_FLOAT_OVERFLOW ((NTSTATUS)0xC0000091L) +#define STATUS_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000092L) +#define STATUS_FLOAT_UNDERFLOW ((NTSTATUS)0xC0000093L) +#define STATUS_INTEGER_DIVIDE_BY_ZERO ((NTSTATUS)0xC0000094L) +#define STATUS_INTEGER_OVERFLOW ((NTSTATUS)0xC0000095L) +#define STATUS_PRIVILEGED_INSTRUCTION ((NTSTATUS)0xC0000096L) +#define STATUS_TOO_MANY_PAGING_FILES ((NTSTATUS)0xC0000097L) +#define STATUS_FILE_INVALID ((NTSTATUS)0xC0000098L) +#define STATUS_ALLOTTED_SPACE_EXCEEDED ((NTSTATUS)0xC0000099L) +#define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009AL) +#define STATUS_DFS_EXIT_PATH_FOUND ((NTSTATUS)0xC000009BL) +#define STATUS_DEVICE_DATA_ERROR ((NTSTATUS)0xC000009CL) +#define STATUS_DEVICE_NOT_CONNECTED ((NTSTATUS)0xC000009DL) +#define STATUS_DEVICE_POWER_FAILURE ((NTSTATUS)0xC000009EL) +#define STATUS_FREE_VM_NOT_AT_BASE ((NTSTATUS)0xC000009FL) +#define STATUS_MEMORY_NOT_ALLOCATED ((NTSTATUS)0xC00000A0L) +#define STATUS_WORKING_SET_QUOTA ((NTSTATUS)0xC00000A1L) +#define STATUS_MEDIA_WRITE_PROTECTED ((NTSTATUS)0xC00000A2L) +#define STATUS_DEVICE_NOT_READY ((NTSTATUS)0xC00000A3L) +#define STATUS_INVALID_GROUP_ATTRIBUTES ((NTSTATUS)0xC00000A4L) +#define STATUS_BAD_IMPERSONATION_LEVEL ((NTSTATUS)0xC00000A5L) +#define STATUS_CANT_OPEN_ANONYMOUS ((NTSTATUS)0xC00000A6L) +#define STATUS_BAD_VALIDATION_CLASS ((NTSTATUS)0xC00000A7L) +#define STATUS_BAD_TOKEN_TYPE ((NTSTATUS)0xC00000A8L) +#define STATUS_BAD_MASTER_BOOT_RECORD ((NTSTATUS)0xC00000A9L) +#define STATUS_INSTRUCTION_MISALIGNMENT ((NTSTATUS)0xC00000AAL) +#define STATUS_INSTANCE_NOT_AVAILABLE ((NTSTATUS)0xC00000ABL) +#define STATUS_PIPE_NOT_AVAILABLE ((NTSTATUS)0xC00000ACL) +#define STATUS_INVALID_PIPE_STATE ((NTSTATUS)0xC00000ADL) +#define STATUS_PIPE_BUSY ((NTSTATUS)0xC00000AEL) +#define STATUS_ILLEGAL_FUNCTION ((NTSTATUS)0xC00000AFL) +#define STATUS_PIPE_DISCONNECTED ((NTSTATUS)0xC00000B0L) +#define STATUS_PIPE_CLOSING ((NTSTATUS)0xC00000B1L) +#define STATUS_PIPE_CONNECTED ((NTSTATUS)0xC00000B2L) +#define STATUS_PIPE_LISTENING ((NTSTATUS)0xC00000B3L) +#define STATUS_INVALID_READ_MODE ((NTSTATUS)0xC00000B4L) +#define STATUS_IO_TIMEOUT ((NTSTATUS)0xC00000B5L) +#define STATUS_FILE_FORCED_CLOSED ((NTSTATUS)0xC00000B6L) +#define STATUS_PROFILING_NOT_STARTED ((NTSTATUS)0xC00000B7L) +#define STATUS_PROFILING_NOT_STOPPED ((NTSTATUS)0xC00000B8L) +#define STATUS_COULD_NOT_INTERPRET ((NTSTATUS)0xC00000B9L) +#define STATUS_FILE_IS_A_DIRECTORY ((NTSTATUS)0xC00000BAL) +#define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BBL) +#define STATUS_REMOTE_NOT_LISTENING ((NTSTATUS)0xC00000BCL) +#define STATUS_DUPLICATE_NAME ((NTSTATUS)0xC00000BDL) +#define STATUS_BAD_NETWORK_PATH ((NTSTATUS)0xC00000BEL) +#define STATUS_NETWORK_BUSY ((NTSTATUS)0xC00000BFL) +#define STATUS_DEVICE_DOES_NOT_EXIST ((NTSTATUS)0xC00000C0L) +#define STATUS_TOO_MANY_COMMANDS ((NTSTATUS)0xC00000C1L) +#define STATUS_ADAPTER_HARDWARE_ERROR ((NTSTATUS)0xC00000C2L) +#define STATUS_INVALID_NETWORK_RESPONSE ((NTSTATUS)0xC00000C3L) +#define STATUS_UNEXPECTED_NETWORK_ERROR ((NTSTATUS)0xC00000C4L) +#define STATUS_BAD_REMOTE_ADAPTER ((NTSTATUS)0xC00000C5L) +#define STATUS_PRINT_QUEUE_FULL ((NTSTATUS)0xC00000C6L) +#define STATUS_NO_SPOOL_SPACE ((NTSTATUS)0xC00000C7L) +#define STATUS_PRINT_CANCELLED ((NTSTATUS)0xC00000C8L) +#define STATUS_NETWORK_NAME_DELETED ((NTSTATUS)0xC00000C9L) +#define STATUS_NETWORK_ACCESS_DENIED ((NTSTATUS)0xC00000CAL) +#define STATUS_BAD_DEVICE_TYPE ((NTSTATUS)0xC00000CBL) +#define STATUS_BAD_NETWORK_NAME ((NTSTATUS)0xC00000CCL) +#define STATUS_TOO_MANY_NAMES ((NTSTATUS)0xC00000CDL) +#define STATUS_TOO_MANY_SESSIONS ((NTSTATUS)0xC00000CEL) +#define STATUS_SHARING_PAUSED ((NTSTATUS)0xC00000CFL) +#define STATUS_REQUEST_NOT_ACCEPTED ((NTSTATUS)0xC00000D0L) +#define STATUS_REDIRECTOR_PAUSED ((NTSTATUS)0xC00000D1L) +#define STATUS_NET_WRITE_FAULT ((NTSTATUS)0xC00000D2L) +#define STATUS_PROFILING_AT_LIMIT ((NTSTATUS)0xC00000D3L) +#define STATUS_NOT_SAME_DEVICE ((NTSTATUS)0xC00000D4L) +#define STATUS_FILE_RENAMED ((NTSTATUS)0xC00000D5L) +#define STATUS_VIRTUAL_CIRCUIT_CLOSED ((NTSTATUS)0xC00000D6L) +#define STATUS_NO_SECURITY_ON_OBJECT ((NTSTATUS)0xC00000D7L) +#define STATUS_CANT_WAIT ((NTSTATUS)0xC00000D8L) +#define STATUS_PIPE_EMPTY ((NTSTATUS)0xC00000D9L) +#define STATUS_CANT_ACCESS_DOMAIN_INFO ((NTSTATUS)0xC00000DAL) +#define STATUS_CANT_TERMINATE_SELF ((NTSTATUS)0xC00000DBL) +#define STATUS_INVALID_SERVER_STATE ((NTSTATUS)0xC00000DCL) +#define STATUS_INVALID_DOMAIN_STATE ((NTSTATUS)0xC00000DDL) +#define STATUS_INVALID_DOMAIN_ROLE ((NTSTATUS)0xC00000DEL) +#define STATUS_NO_SUCH_DOMAIN ((NTSTATUS)0xC00000DFL) +#define STATUS_DOMAIN_EXISTS ((NTSTATUS)0xC00000E0L) +#define STATUS_DOMAIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00000E1L) +#define STATUS_OPLOCK_NOT_GRANTED ((NTSTATUS)0xC00000E2L) +#define STATUS_INVALID_OPLOCK_PROTOCOL ((NTSTATUS)0xC00000E3L) +#define STATUS_INTERNAL_DB_CORRUPTION ((NTSTATUS)0xC00000E4L) +#define STATUS_INTERNAL_ERROR ((NTSTATUS)0xC00000E5L) +#define STATUS_GENERIC_NOT_MAPPED ((NTSTATUS)0xC00000E6L) +#define STATUS_BAD_DESCRIPTOR_FORMAT ((NTSTATUS)0xC00000E7L) +#define STATUS_INVALID_USER_BUFFER ((NTSTATUS)0xC00000E8L) +#define STATUS_UNEXPECTED_IO_ERROR ((NTSTATUS)0xC00000E9L) +#define STATUS_UNEXPECTED_MM_CREATE_ERR ((NTSTATUS)0xC00000EAL) +#define STATUS_UNEXPECTED_MM_MAP_ERROR ((NTSTATUS)0xC00000EBL) +#define STATUS_UNEXPECTED_MM_EXTEND_ERR ((NTSTATUS)0xC00000ECL) +#define STATUS_NOT_LOGON_PROCESS ((NTSTATUS)0xC00000EDL) +#define STATUS_LOGON_SESSION_EXISTS ((NTSTATUS)0xC00000EEL) +#define STATUS_INVALID_PARAMETER_1 ((NTSTATUS)0xC00000EFL) +#define STATUS_INVALID_PARAMETER_2 ((NTSTATUS)0xC00000F0L) +#define STATUS_INVALID_PARAMETER_3 ((NTSTATUS)0xC00000F1L) +#define STATUS_INVALID_PARAMETER_4 ((NTSTATUS)0xC00000F2L) +#define STATUS_INVALID_PARAMETER_5 ((NTSTATUS)0xC00000F3L) +#define STATUS_INVALID_PARAMETER_6 ((NTSTATUS)0xC00000F4L) +#define STATUS_INVALID_PARAMETER_7 ((NTSTATUS)0xC00000F5L) +#define STATUS_INVALID_PARAMETER_8 ((NTSTATUS)0xC00000F6L) +#define STATUS_INVALID_PARAMETER_9 ((NTSTATUS)0xC00000F7L) +#define STATUS_INVALID_PARAMETER_10 ((NTSTATUS)0xC00000F8L) +#define STATUS_INVALID_PARAMETER_11 ((NTSTATUS)0xC00000F9L) +#define STATUS_INVALID_PARAMETER_12 ((NTSTATUS)0xC00000FAL) +#define STATUS_REDIRECTOR_NOT_STARTED ((NTSTATUS)0xC00000FBL) +#define STATUS_REDIRECTOR_STARTED ((NTSTATUS)0xC00000FCL) +#define STATUS_STACK_OVERFLOW ((NTSTATUS)0xC00000FDL) +#define STATUS_NO_SUCH_PACKAGE ((NTSTATUS)0xC00000FEL) +#define STATUS_BAD_FUNCTION_TABLE ((NTSTATUS)0xC00000FFL) +#define STATUS_VARIABLE_NOT_FOUND ((NTSTATUS)0xC0000100L) +#define STATUS_DIRECTORY_NOT_EMPTY ((NTSTATUS)0xC0000101L) +#define STATUS_FILE_CORRUPT_ERROR ((NTSTATUS)0xC0000102L) +#define STATUS_NOT_A_DIRECTORY ((NTSTATUS)0xC0000103L) +#define STATUS_BAD_LOGON_SESSION_STATE ((NTSTATUS)0xC0000104L) +#define STATUS_LOGON_SESSION_COLLISION ((NTSTATUS)0xC0000105L) +#define STATUS_NAME_TOO_LONG ((NTSTATUS)0xC0000106L) +#define STATUS_FILES_OPEN ((NTSTATUS)0xC0000107L) +#define STATUS_CONNECTION_IN_USE ((NTSTATUS)0xC0000108L) +#define STATUS_MESSAGE_NOT_FOUND ((NTSTATUS)0xC0000109L) +#define STATUS_PROCESS_IS_TERMINATING ((NTSTATUS)0xC000010AL) +#define STATUS_INVALID_LOGON_TYPE ((NTSTATUS)0xC000010BL) +#define STATUS_NO_GUID_TRANSLATION ((NTSTATUS)0xC000010CL) +#define STATUS_CANNOT_IMPERSONATE ((NTSTATUS)0xC000010DL) +#define STATUS_IMAGE_ALREADY_LOADED ((NTSTATUS)0xC000010EL) +#define STATUS_ABIOS_NOT_PRESENT ((NTSTATUS)0xC000010FL) +#define STATUS_ABIOS_LID_NOT_EXIST ((NTSTATUS)0xC0000110L) +#define STATUS_ABIOS_LID_ALREADY_OWNED ((NTSTATUS)0xC0000111L) +#define STATUS_ABIOS_NOT_LID_OWNER ((NTSTATUS)0xC0000112L) +#define STATUS_ABIOS_INVALID_COMMAND ((NTSTATUS)0xC0000113L) +#define STATUS_ABIOS_INVALID_LID ((NTSTATUS)0xC0000114L) +#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE ((NTSTATUS)0xC0000115L) +#define STATUS_ABIOS_INVALID_SELECTOR ((NTSTATUS)0xC0000116L) +#define STATUS_NO_LDT ((NTSTATUS)0xC0000117L) +#define STATUS_INVALID_LDT_SIZE ((NTSTATUS)0xC0000118L) +#define STATUS_INVALID_LDT_OFFSET ((NTSTATUS)0xC0000119L) +#define STATUS_INVALID_LDT_DESCRIPTOR ((NTSTATUS)0xC000011AL) +#define STATUS_INVALID_IMAGE_NE_FORMAT ((NTSTATUS)0xC000011BL) +#define STATUS_RXACT_INVALID_STATE ((NTSTATUS)0xC000011CL) +#define STATUS_RXACT_COMMIT_FAILURE ((NTSTATUS)0xC000011DL) +#define STATUS_MAPPED_FILE_SIZE_ZERO ((NTSTATUS)0xC000011EL) +#define STATUS_TOO_MANY_OPENED_FILES ((NTSTATUS)0xC000011FL) +#define STATUS_CANCELLED ((NTSTATUS)0xC0000120L) +#define STATUS_CANNOT_DELETE ((NTSTATUS)0xC0000121L) +#define STATUS_INVALID_COMPUTER_NAME ((NTSTATUS)0xC0000122L) +#define STATUS_FILE_DELETED ((NTSTATUS)0xC0000123L) +#define STATUS_SPECIAL_ACCOUNT ((NTSTATUS)0xC0000124L) +#define STATUS_SPECIAL_GROUP ((NTSTATUS)0xC0000125L) +#define STATUS_SPECIAL_USER ((NTSTATUS)0xC0000126L) +#define STATUS_MEMBERS_PRIMARY_GROUP ((NTSTATUS)0xC0000127L) +#define STATUS_FILE_CLOSED ((NTSTATUS)0xC0000128L) +#define STATUS_TOO_MANY_THREADS ((NTSTATUS)0xC0000129L) +#define STATUS_THREAD_NOT_IN_PROCESS ((NTSTATUS)0xC000012AL) +#define STATUS_TOKEN_ALREADY_IN_USE ((NTSTATUS)0xC000012BL) +#define STATUS_PAGEFILE_QUOTA_EXCEEDED ((NTSTATUS)0xC000012CL) +#define STATUS_COMMITMENT_LIMIT ((NTSTATUS)0xC000012DL) +#define STATUS_INVALID_IMAGE_LE_FORMAT ((NTSTATUS)0xC000012EL) +#define STATUS_INVALID_IMAGE_NOT_MZ ((NTSTATUS)0xC000012FL) +#define STATUS_INVALID_IMAGE_PROTECT ((NTSTATUS)0xC0000130L) +#define STATUS_INVALID_IMAGE_WIN_16 ((NTSTATUS)0xC0000131L) +#define STATUS_LOGON_SERVER_CONFLICT ((NTSTATUS)0xC0000132L) +#define STATUS_TIME_DIFFERENCE_AT_DC ((NTSTATUS)0xC0000133L) +#define STATUS_SYNCHRONIZATION_REQUIRED ((NTSTATUS)0xC0000134L) +#define STATUS_DLL_NOT_FOUND ((NTSTATUS)0xC0000135L) +#define STATUS_OPEN_FAILED ((NTSTATUS)0xC0000136L) +#define STATUS_IO_PRIVILEGE_FAILED ((NTSTATUS)0xC0000137L) +#define STATUS_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000138L) +#define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000139L) +#define STATUS_CONTROL_C_EXIT ((NTSTATUS)0xC000013AL) +#define STATUS_LOCAL_DISCONNECT ((NTSTATUS)0xC000013BL) +#define STATUS_REMOTE_DISCONNECT ((NTSTATUS)0xC000013CL) +#define STATUS_REMOTE_RESOURCES ((NTSTATUS)0xC000013DL) +#define STATUS_LINK_FAILED ((NTSTATUS)0xC000013EL) +#define STATUS_LINK_TIMEOUT ((NTSTATUS)0xC000013FL) +#define STATUS_INVALID_CONNECTION ((NTSTATUS)0xC0000140L) +#define STATUS_INVALID_ADDRESS ((NTSTATUS)0xC0000141L) +#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L) +#define STATUS_MISSING_SYSTEMFILE ((NTSTATUS)0xC0000143L) +#define STATUS_UNHANDLED_EXCEPTION ((NTSTATUS)0xC0000144L) +#define STATUS_APP_INIT_FAILURE ((NTSTATUS)0xC0000145L) +#define STATUS_PAGEFILE_CREATE_FAILED ((NTSTATUS)0xC0000146L) +#define STATUS_NO_PAGEFILE ((NTSTATUS)0xC0000147L) +#define STATUS_INVALID_LEVEL ((NTSTATUS)0xC0000148L) +#define STATUS_WRONG_PASSWORD_CORE ((NTSTATUS)0xC0000149L) +#define STATUS_ILLEGAL_FLOAT_CONTEXT ((NTSTATUS)0xC000014AL) +#define STATUS_PIPE_BROKEN ((NTSTATUS)0xC000014BL) +#define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014CL) +#define STATUS_REGISTRY_IO_FAILED ((NTSTATUS)0xC000014DL) +#define STATUS_NO_EVENT_PAIR ((NTSTATUS)0xC000014EL) +#define STATUS_UNRECOGNIZED_VOLUME ((NTSTATUS)0xC000014FL) +#define STATUS_SERIAL_NO_DEVICE_INITED ((NTSTATUS)0xC0000150L) +#define STATUS_NO_SUCH_ALIAS ((NTSTATUS)0xC0000151L) +#define STATUS_MEMBER_NOT_IN_ALIAS ((NTSTATUS)0xC0000152L) +#define STATUS_MEMBER_IN_ALIAS ((NTSTATUS)0xC0000153L) +#define STATUS_ALIAS_EXISTS ((NTSTATUS)0xC0000154L) +#define STATUS_LOGON_NOT_GRANTED ((NTSTATUS)0xC0000155L) +#define STATUS_TOO_MANY_SECRETS ((NTSTATUS)0xC0000156L) +#define STATUS_SECRET_TOO_LONG ((NTSTATUS)0xC0000157L) +#define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158L) +#define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159L) +#define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015AL) +#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015BL) +#define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015CL) +#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015DL) +#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015EL) +#define STATUS_FT_MISSING_MEMBER ((NTSTATUS)0xC000015FL) +#define STATUS_ILL_FORMED_SERVICE_ENTRY ((NTSTATUS)0xC0000160L) +#define STATUS_ILLEGAL_CHARACTER ((NTSTATUS)0xC0000161L) +#define STATUS_UNMAPPABLE_CHARACTER ((NTSTATUS)0xC0000162L) +#define STATUS_UNDEFINED_CHARACTER ((NTSTATUS)0xC0000163L) +#define STATUS_FLOPPY_VOLUME ((NTSTATUS)0xC0000164L) +#define STATUS_FLOPPY_ID_MARK_NOT_FOUND ((NTSTATUS)0xC0000165L) +#define STATUS_FLOPPY_WRONG_CYLINDER ((NTSTATUS)0xC0000166L) +#define STATUS_FLOPPY_UNKNOWN_ERROR ((NTSTATUS)0xC0000167L) +#define STATUS_FLOPPY_BAD_REGISTERS ((NTSTATUS)0xC0000168L) +#define STATUS_DISK_RECALIBRATE_FAILED ((NTSTATUS)0xC0000169L) +#define STATUS_DISK_OPERATION_FAILED ((NTSTATUS)0xC000016AL) +#define STATUS_DISK_RESET_FAILED ((NTSTATUS)0xC000016BL) +#define STATUS_SHARED_IRQ_BUSY ((NTSTATUS)0xC000016CL) +#define STATUS_FT_ORPHANING ((NTSTATUS)0xC000016DL) +#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT ((NTSTATUS)0xC000016EL) +#define STATUS_PARTITION_FAILURE ((NTSTATUS)0xC0000172L) +#define STATUS_INVALID_BLOCK_LENGTH ((NTSTATUS)0xC0000173L) +#define STATUS_DEVICE_NOT_PARTITIONED ((NTSTATUS)0xC0000174L) +#define STATUS_UNABLE_TO_LOCK_MEDIA ((NTSTATUS)0xC0000175L) +#define STATUS_UNABLE_TO_UNLOAD_MEDIA ((NTSTATUS)0xC0000176L) +#define STATUS_EOM_OVERFLOW ((NTSTATUS)0xC0000177L) +#define STATUS_NO_MEDIA ((NTSTATUS)0xC0000178L) +#define STATUS_NO_SUCH_MEMBER ((NTSTATUS)0xC000017AL) +#define STATUS_INVALID_MEMBER ((NTSTATUS)0xC000017BL) +#define STATUS_KEY_DELETED ((NTSTATUS)0xC000017CL) +#define STATUS_NO_LOG_SPACE ((NTSTATUS)0xC000017DL) +#define STATUS_TOO_MANY_SIDS ((NTSTATUS)0xC000017EL) +#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000017FL) +#define STATUS_KEY_HAS_CHILDREN ((NTSTATUS)0xC0000180L) +#define STATUS_CHILD_MUST_BE_VOLATILE ((NTSTATUS)0xC0000181L) +#define STATUS_DEVICE_CONFIGURATION_ERROR ((NTSTATUS)0xC0000182L) +#define STATUS_DRIVER_INTERNAL_ERROR ((NTSTATUS)0xC0000183L) +#define STATUS_INVALID_DEVICE_STATE ((NTSTATUS)0xC0000184L) +#define STATUS_IO_DEVICE_ERROR ((NTSTATUS)0xC0000185L) +#define STATUS_DEVICE_PROTOCOL_ERROR ((NTSTATUS)0xC0000186L) +#define STATUS_BACKUP_CONTROLLER ((NTSTATUS)0xC0000187L) +#define STATUS_LOG_FILE_FULL ((NTSTATUS)0xC0000188L) +#define STATUS_TOO_LATE ((NTSTATUS)0xC0000189L) +#define STATUS_NO_TRUST_LSA_SECRET ((NTSTATUS)0xC000018AL) +#define STATUS_NO_TRUST_SAM_ACCOUNT ((NTSTATUS)0xC000018BL) +#define STATUS_TRUSTED_DOMAIN_FAILURE ((NTSTATUS)0xC000018CL) +#define STATUS_TRUSTED_RELATIONSHIP_FAILURE ((NTSTATUS)0xC000018DL) +#define STATUS_EVENTLOG_FILE_CORRUPT ((NTSTATUS)0xC000018EL) +#define STATUS_EVENTLOG_CANT_START ((NTSTATUS)0xC000018FL) +#define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190L) +#define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191L) +#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192L) +#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L) +#define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194L) +#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195L) +#define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196L) +#define STATUS_EVENTLOG_FILE_CHANGED ((NTSTATUS)0xC0000197L) +#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ((NTSTATUS)0xC0000198L) +#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT ((NTSTATUS)0xC0000199L) +#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT ((NTSTATUS)0xC000019AL) +#define STATUS_DOMAIN_TRUST_INCONSISTENT ((NTSTATUS)0xC000019BL) +#define STATUS_FS_DRIVER_REQUIRED ((NTSTATUS)0xC000019CL) +#define STATUS_NO_USER_SESSION_KEY ((NTSTATUS)0xC0000202L) +#define STATUS_USER_SESSION_DELETED ((NTSTATUS)0xC0000203L) +#define STATUS_RESOURCE_LANG_NOT_FOUND ((NTSTATUS)0xC0000204L) +#define STATUS_INSUFF_SERVER_RESOURCES ((NTSTATUS)0xC0000205L) +#define STATUS_INVALID_BUFFER_SIZE ((NTSTATUS)0xC0000206L) +#define STATUS_INVALID_ADDRESS_COMPONENT ((NTSTATUS)0xC0000207L) +#define STATUS_INVALID_ADDRESS_WILDCARD ((NTSTATUS)0xC0000208L) +#define STATUS_TOO_MANY_ADDRESSES ((NTSTATUS)0xC0000209L) +#define STATUS_ADDRESS_ALREADY_EXISTS ((NTSTATUS)0xC000020AL) +#define STATUS_ADDRESS_CLOSED ((NTSTATUS)0xC000020BL) +#define STATUS_CONNECTION_DISCONNECTED ((NTSTATUS)0xC000020CL) +#define STATUS_CONNECTION_RESET ((NTSTATUS)0xC000020DL) +#define STATUS_TOO_MANY_NODES ((NTSTATUS)0xC000020EL) +#define STATUS_TRANSACTION_ABORTED ((NTSTATUS)0xC000020FL) +#define STATUS_TRANSACTION_TIMED_OUT ((NTSTATUS)0xC0000210L) +#define STATUS_TRANSACTION_NO_RELEASE ((NTSTATUS)0xC0000211L) +#define STATUS_TRANSACTION_NO_MATCH ((NTSTATUS)0xC0000212L) +#define STATUS_TRANSACTION_RESPONDED ((NTSTATUS)0xC0000213L) +#define STATUS_TRANSACTION_INVALID_ID ((NTSTATUS)0xC0000214L) +#define STATUS_TRANSACTION_INVALID_TYPE ((NTSTATUS)0xC0000215L) +#define STATUS_NOT_SERVER_SESSION ((NTSTATUS)0xC0000216L) +#define STATUS_NOT_CLIENT_SESSION ((NTSTATUS)0xC0000217L) +#define STATUS_CANNOT_LOAD_REGISTRY_FILE ((NTSTATUS)0xC0000218L) +#define STATUS_DEBUG_ATTACH_FAILED ((NTSTATUS)0xC0000219L) +#define STATUS_SYSTEM_PROCESS_TERMINATED ((NTSTATUS)0xC000021AL) +#define STATUS_DATA_NOT_ACCEPTED ((NTSTATUS)0xC000021BL) +#define STATUS_NO_BROWSER_SERVERS_FOUND ((NTSTATUS)0xC000021CL) +#define STATUS_VDM_HARD_ERROR ((NTSTATUS)0xC000021DL) +#define STATUS_DRIVER_CANCEL_TIMEOUT ((NTSTATUS)0xC000021EL) +#define STATUS_REPLY_MESSAGE_MISMATCH ((NTSTATUS)0xC000021FL) +#define STATUS_MAPPED_ALIGNMENT ((NTSTATUS)0xC0000220L) +#define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221L) +#define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222L) +#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223L) +#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224L) +#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L) +#define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226L) +#define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227L) +#define STATUS_STACK_OVERFLOW_READ ((NTSTATUS)0xC0000228L) +#define STATUS_FAIL_CHECK ((NTSTATUS)0xC0000229L) +#define STATUS_DUPLICATE_OBJECTID ((NTSTATUS)0xC000022AL) +#define STATUS_OBJECTID_EXISTS ((NTSTATUS)0xC000022BL) +#define STATUS_CONVERT_TO_LARGE ((NTSTATUS)0xC000022CL) +#define STATUS_RETRY ((NTSTATUS)0xC000022DL) +#define STATUS_FOUND_OUT_OF_SCOPE ((NTSTATUS)0xC000022EL) +#define STATUS_ALLOCATE_BUCKET ((NTSTATUS)0xC000022FL) +#define STATUS_PROPSET_NOT_FOUND ((NTSTATUS)0xC0000230L) +#define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231L) +#define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232L) +#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233L) +#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L) +#define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235L) +#define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236L) +#define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237L) +#define STATUS_ADDRESS_ALREADY_ASSOCIATED ((NTSTATUS)0xC0000238L) +#define STATUS_ADDRESS_NOT_ASSOCIATED ((NTSTATUS)0xC0000239L) +#define STATUS_CONNECTION_INVALID ((NTSTATUS)0xC000023AL) +#define STATUS_CONNECTION_ACTIVE ((NTSTATUS)0xC000023BL) +#define STATUS_NETWORK_UNREACHABLE ((NTSTATUS)0xC000023CL) +#define STATUS_HOST_UNREACHABLE ((NTSTATUS)0xC000023DL) +#define STATUS_PROTOCOL_UNREACHABLE ((NTSTATUS)0xC000023EL) +#define STATUS_PORT_UNREACHABLE ((NTSTATUS)0xC000023FL) +#define STATUS_REQUEST_ABORTED ((NTSTATUS)0xC0000240L) +#define STATUS_CONNECTION_ABORTED ((NTSTATUS)0xC0000241L) +#define STATUS_BAD_COMPRESSION_BUFFER ((NTSTATUS)0xC0000242L) +#define STATUS_USER_MAPPED_FILE ((NTSTATUS)0xC0000243L) +#define STATUS_AUDIT_FAILED ((NTSTATUS)0xC0000244L) +#define STATUS_TIMER_RESOLUTION_NOT_SET ((NTSTATUS)0xC0000245L) +#define STATUS_CONNECTION_COUNT_LIMIT ((NTSTATUS)0xC0000246L) +#define STATUS_LOGIN_TIME_RESTRICTION ((NTSTATUS)0xC0000247L) +#define STATUS_LOGIN_WKSTA_RESTRICTION ((NTSTATUS)0xC0000248L) +#define STATUS_IMAGE_MP_UP_MISMATCH ((NTSTATUS)0xC0000249L) +#define STATUS_INSUFFICIENT_LOGON_INFO ((NTSTATUS)0xC0000250L) +#define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS)0xC0000251L) +#define STATUS_BAD_SERVICE_ENTRYPOINT ((NTSTATUS)0xC0000252L) +#define STATUS_LPC_REPLY_LOST ((NTSTATUS)0xC0000253L) +#define STATUS_IP_ADDRESS_CONFLICT1 ((NTSTATUS)0xC0000254L) +#define STATUS_IP_ADDRESS_CONFLICT2 ((NTSTATUS)0xC0000255L) +#define STATUS_REGISTRY_QUOTA_LIMIT ((NTSTATUS)0xC0000256L) +#define STATUS_PATH_NOT_COVERED ((NTSTATUS)0xC0000257L) +#define STATUS_NO_CALLBACK_ACTIVE ((NTSTATUS)0xC0000258L) +#define STATUS_LICENSE_QUOTA_EXCEEDED ((NTSTATUS)0xC0000259L) +#define STATUS_PWD_TOO_SHORT ((NTSTATUS)0xC000025AL) +#define STATUS_PWD_TOO_RECENT ((NTSTATUS)0xC000025BL) +#define STATUS_PWD_HISTORY_CONFLICT ((NTSTATUS)0xC000025CL) +#define STATUS_PLUGPLAY_NO_DEVICE ((NTSTATUS)0xC000025EL) +#define STATUS_UNSUPPORTED_COMPRESSION ((NTSTATUS)0xC000025FL) +#define STATUS_INVALID_HW_PROFILE ((NTSTATUS)0xC0000260L) +#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH ((NTSTATUS)0xC0000261L) +#define STATUS_DRIVER_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000262L) +#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000263L) +#define STATUS_RESOURCE_NOT_OWNED ((NTSTATUS)0xC0000264L) +#define STATUS_TOO_MANY_LINKS ((NTSTATUS)0xC0000265L) +#define STATUS_QUOTA_LIST_INCONSISTENT ((NTSTATUS)0xC0000266L) +#define STATUS_FILE_IS_OFFLINE ((NTSTATUS)0xC0000267L) +#define STATUS_EVALUATION_EXPIRATION ((NTSTATUS)0xC0000268L) +#define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS)0xC0000269L) +#define STATUS_LICENSE_VIOLATION ((NTSTATUS)0xC000026AL) +#define STATUS_DLL_INIT_FAILED_LOGOFF ((NTSTATUS)0xC000026BL) +#define STATUS_DRIVER_UNABLE_TO_LOAD ((NTSTATUS)0xC000026CL) +#define STATUS_DFS_UNAVAILABLE ((NTSTATUS)0xC000026DL) +#define STATUS_VOLUME_DISMOUNTED ((NTSTATUS)0xC000026EL) +#define STATUS_WX86_INTERNAL_ERROR ((NTSTATUS)0xC000026FL) +#define STATUS_WX86_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000270L) +#define STATUS_VALIDATE_CONTINUE ((NTSTATUS)0xC0000271L) +#define STATUS_NO_MATCH ((NTSTATUS)0xC0000272L) +#define STATUS_NO_MORE_MATCHES ((NTSTATUS)0xC0000273L) +#define STATUS_NOT_A_REPARSE_POINT ((NTSTATUS)0xC0000275L) +#define STATUS_IO_REPARSE_TAG_INVALID ((NTSTATUS)0xC0000276L) +#define STATUS_IO_REPARSE_TAG_MISMATCH ((NTSTATUS)0xC0000277L) +#define STATUS_IO_REPARSE_DATA_INVALID ((NTSTATUS)0xC0000278L) +#define STATUS_IO_REPARSE_TAG_NOT_HANDLED ((NTSTATUS)0xC0000279L) +#define STATUS_REPARSE_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000280L) +#define STATUS_DIRECTORY_IS_A_REPARSE_POINT ((NTSTATUS)0xC0000281L) +#define STATUS_RANGE_LIST_CONFLICT ((NTSTATUS)0xC0000282L) +#define STATUS_SOURCE_ELEMENT_EMPTY ((NTSTATUS)0xC0000283L) +#define STATUS_DESTINATION_ELEMENT_FULL ((NTSTATUS)0xC0000284L) +#define STATUS_ILLEGAL_ELEMENT_ADDRESS ((NTSTATUS)0xC0000285L) +#define STATUS_MAGAZINE_NOT_PRESENT ((NTSTATUS)0xC0000286L) +#define STATUS_REINITIALIZATION_NEEDED ((NTSTATUS)0xC0000287L) +#define STATUS_DEVICE_REQUIRES_CLEANING ((NTSTATUS)0x80000288L) +#define STATUS_DEVICE_DOOR_OPEN ((NTSTATUS)0x80000289L) +#define STATUS_ENCRYPTION_FAILED ((NTSTATUS)0xC000028AL) +#define STATUS_DECRYPTION_FAILED ((NTSTATUS)0xC000028BL) +#define STATUS_RANGE_NOT_FOUND ((NTSTATUS)0xC000028CL) +#define STATUS_NO_RECOVERY_POLICY ((NTSTATUS)0xC000028DL) +#define STATUS_NO_EFS ((NTSTATUS)0xC000028EL) +#define STATUS_WRONG_EFS ((NTSTATUS)0xC000028FL) +#define STATUS_NO_USER_KEYS ((NTSTATUS)0xC0000290L) +#define STATUS_FILE_NOT_ENCRYPTED ((NTSTATUS)0xC0000291L) +#define STATUS_NOT_EXPORT_FORMAT ((NTSTATUS)0xC0000292L) +#define STATUS_FILE_ENCRYPTED ((NTSTATUS)0xC0000293L) +#define STATUS_WAKE_SYSTEM ((NTSTATUS)0x40000294L) +#define STATUS_WMI_GUID_NOT_FOUND ((NTSTATUS)0xC0000295L) +#define STATUS_WMI_INSTANCE_NOT_FOUND ((NTSTATUS)0xC0000296L) +#define STATUS_WMI_ITEMID_NOT_FOUND ((NTSTATUS)0xC0000297L) +#define STATUS_WMI_TRY_AGAIN ((NTSTATUS)0xC0000298L) +#define STATUS_SHARED_POLICY ((NTSTATUS)0xC0000299L) +#define STATUS_POLICY_OBJECT_NOT_FOUND ((NTSTATUS)0xC000029AL) +#define STATUS_POLICY_ONLY_IN_DS ((NTSTATUS)0xC000029BL) +#define STATUS_VOLUME_NOT_UPGRADED ((NTSTATUS)0xC000029CL) +#define STATUS_REMOTE_STORAGE_NOT_ACTIVE ((NTSTATUS)0xC000029DL) +#define STATUS_REMOTE_STORAGE_MEDIA_ERROR ((NTSTATUS)0xC000029EL) +#define STATUS_NO_TRACKING_SERVICE ((NTSTATUS)0xC000029FL) +#define STATUS_SERVER_SID_MISMATCH ((NTSTATUS)0xC00002A0L) +#define STATUS_DS_NO_ATTRIBUTE_OR_VALUE ((NTSTATUS)0xC00002A1L) +#define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX ((NTSTATUS)0xC00002A2L) +#define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED ((NTSTATUS)0xC00002A3L) +#define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS ((NTSTATUS)0xC00002A4L) +#define STATUS_DS_BUSY ((NTSTATUS)0xC00002A5L) +#define STATUS_DS_UNAVAILABLE ((NTSTATUS)0xC00002A6L) +#define STATUS_DS_NO_RIDS_ALLOCATED ((NTSTATUS)0xC00002A7L) +#define STATUS_DS_NO_MORE_RIDS ((NTSTATUS)0xC00002A8L) +#define STATUS_DS_INCORRECT_ROLE_OWNER ((NTSTATUS)0xC00002A9L) +#define STATUS_DS_RIDMGR_INIT_ERROR ((NTSTATUS)0xC00002AAL) +#define STATUS_DS_OBJ_CLASS_VIOLATION ((NTSTATUS)0xC00002ABL) +#define STATUS_DS_CANT_ON_NON_LEAF ((NTSTATUS)0xC00002ACL) +#define STATUS_DS_CANT_ON_RDN ((NTSTATUS)0xC00002ADL) +#define STATUS_DS_CANT_MOD_OBJ_CLASS ((NTSTATUS)0xC00002AEL) +#define STATUS_DS_CROSS_DOM_MOVE_FAILED ((NTSTATUS)0xC00002AFL) +#define STATUS_DS_GC_NOT_AVAILABLE ((NTSTATUS)0xC00002B0L) +#define STATUS_DIRECTORY_SERVICE_REQUIRED ((NTSTATUS)0xC00002B1L) +#define STATUS_REPARSE_ATTRIBUTE_CONFLICT ((NTSTATUS)0xC00002B2L) +#define STATUS_CANT_ENABLE_DENY_ONLY ((NTSTATUS)0xC00002B3L) +#define STATUS_FLOAT_MULTIPLE_FAULTS ((NTSTATUS)0xC00002B4L) +#define STATUS_FLOAT_MULTIPLE_TRAPS ((NTSTATUS)0xC00002B5L) +#define STATUS_DEVICE_REMOVED ((NTSTATUS)0xC00002B6L) +#define STATUS_JOURNAL_DELETE_IN_PROGRESS ((NTSTATUS)0xC00002B7L) +#define STATUS_JOURNAL_NOT_ACTIVE ((NTSTATUS)0xC00002B8L) +#define STATUS_NOINTERFACE ((NTSTATUS)0xC00002B9L) +#define STATUS_DS_ADMIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00002C1L) +#define STATUS_DRIVER_FAILED_SLEEP ((NTSTATUS)0xC00002C2L) +#define STATUS_MUTUAL_AUTHENTICATION_FAILED ((NTSTATUS)0xC00002C3L) +#define STATUS_CORRUPT_SYSTEM_FILE ((NTSTATUS)0xC00002C4L) +#define STATUS_DATATYPE_MISALIGNMENT_ERROR ((NTSTATUS)0xC00002C5L) +#define STATUS_WMI_READ_ONLY ((NTSTATUS)0xC00002C6L) +#define STATUS_WMI_SET_FAILURE ((NTSTATUS)0xC00002C7L) +#define STATUS_COMMITMENT_MINIMUM ((NTSTATUS)0xC00002C8L) +#define STATUS_REG_NAT_CONSUMPTION ((NTSTATUS)0xC00002C9L) +#define STATUS_TRANSPORT_FULL ((NTSTATUS)0xC00002CAL) +#define STATUS_DS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002CBL) +#define STATUS_ONLY_IF_CONNECTED ((NTSTATUS)0xC00002CCL) +#define STATUS_DS_SENSITIVE_GROUP_VIOLATION ((NTSTATUS)0xC00002CDL) +#define STATUS_PNP_RESTART_ENUMERATION ((NTSTATUS)0xC00002CEL) +#define STATUS_JOURNAL_ENTRY_DELETED ((NTSTATUS)0xC00002CFL) +#define STATUS_DS_CANT_MOD_PRIMARYGROUPID ((NTSTATUS)0xC00002D0L) +#define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE ((NTSTATUS)0xC00002D1L) +#define STATUS_PNP_REBOOT_REQUIRED ((NTSTATUS)0xC00002D2L) +#define STATUS_POWER_STATE_INVALID ((NTSTATUS)0xC00002D3L) +#define STATUS_DS_INVALID_GROUP_TYPE ((NTSTATUS)0xC00002D4L) +#define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D5L) +#define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN ((NTSTATUS)0xC00002D6L) +#define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D7L) +#define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC00002D8L) +#define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER ((NTSTATUS)0xC00002D9L) +#define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER ((NTSTATUS)0xC00002DAL) +#define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER ((NTSTATUS)0xC00002DBL) +#define STATUS_DS_HAVE_PRIMARY_MEMBERS ((NTSTATUS)0xC00002DCL) +#define STATUS_WMI_NOT_SUPPORTED ((NTSTATUS)0xC00002DDL) +#define STATUS_INSUFFICIENT_POWER ((NTSTATUS)0xC00002DEL) +#define STATUS_SAM_NEED_BOOTKEY_PASSWORD ((NTSTATUS)0xC00002DFL) +#define STATUS_SAM_NEED_BOOTKEY_FLOPPY ((NTSTATUS)0xC00002E0L) +#define STATUS_DS_CANT_START ((NTSTATUS)0xC00002E1L) +#define STATUS_DS_INIT_FAILURE ((NTSTATUS)0xC00002E2L) +#define STATUS_SAM_INIT_FAILURE ((NTSTATUS)0xC00002E3L) +#define STATUS_DS_GC_REQUIRED ((NTSTATUS)0xC00002E4L) +#define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY ((NTSTATUS)0xC00002E5L) +#define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS ((NTSTATUS)0xC00002E6L) +#define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED ((NTSTATUS)0xC00002E7L) +#define STATUS_MULTIPLE_FAULT_VIOLATION ((NTSTATUS)0xC00002E8L) +#define STATUS_CURRENT_DOMAIN_NOT_ALLOWED ((NTSTATUS)0xC00002E9L) +#define STATUS_CANNOT_MAKE ((NTSTATUS)0xC00002EAL) +#define STATUS_SYSTEM_SHUTDOWN ((NTSTATUS)0xC00002EBL) +#define STATUS_DS_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002ECL) +#define STATUS_DS_SAM_INIT_FAILURE_CONSOLE ((NTSTATUS)0xC00002EDL) +#define STATUS_UNFINISHED_CONTEXT_DELETED ((NTSTATUS)0xC00002EEL) +#define STATUS_NO_TGT_REPLY ((NTSTATUS)0xC00002EFL) +#define STATUS_OBJECTID_NOT_FOUND ((NTSTATUS)0xC00002F0L) +#define STATUS_NO_IP_ADDRESSES ((NTSTATUS)0xC00002F1L) +#define STATUS_WRONG_CREDENTIAL_HANDLE ((NTSTATUS)0xC00002F2L) +#define STATUS_CRYPTO_SYSTEM_INVALID ((NTSTATUS)0xC00002F3L) +#define STATUS_MAX_REFERRALS_EXCEEDED ((NTSTATUS)0xC00002F4L) +#define STATUS_MUST_BE_KDC ((NTSTATUS)0xC00002F5L) +#define STATUS_STRONG_CRYPTO_NOT_SUPPORTED ((NTSTATUS)0xC00002F6L) +#define STATUS_TOO_MANY_PRINCIPALS ((NTSTATUS)0xC00002F7L) +#define STATUS_NO_PA_DATA ((NTSTATUS)0xC00002F8L) +#define STATUS_PKINIT_NAME_MISMATCH ((NTSTATUS)0xC00002F9L) +#define STATUS_SMARTCARD_LOGON_REQUIRED ((NTSTATUS)0xC00002FAL) +#define STATUS_KDC_INVALID_REQUEST ((NTSTATUS)0xC00002FBL) +#define STATUS_KDC_UNABLE_TO_REFER ((NTSTATUS)0xC00002FCL) +#define STATUS_KDC_UNKNOWN_ETYPE ((NTSTATUS)0xC00002FDL) +#define STATUS_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FEL) +#define STATUS_SERVER_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FFL) +#define STATUS_NOT_SUPPORTED_ON_SBS ((NTSTATUS)0xC0000300L) +#define STATUS_WMI_GUID_DISCONNECTED ((NTSTATUS)0xC0000301L) +#define STATUS_WMI_ALREADY_DISABLED ((NTSTATUS)0xC0000302L) +#define STATUS_WMI_ALREADY_ENABLED ((NTSTATUS)0xC0000303L) +#define STATUS_MFT_TOO_FRAGMENTED ((NTSTATUS)0xC0000304L) +#define STATUS_COPY_PROTECTION_FAILURE ((NTSTATUS)0xC0000305L) +#define STATUS_CSS_AUTHENTICATION_FAILURE ((NTSTATUS)0xC0000306L) +#define STATUS_CSS_KEY_NOT_PRESENT ((NTSTATUS)0xC0000307L) +#define STATUS_CSS_KEY_NOT_ESTABLISHED ((NTSTATUS)0xC0000308L) +#define STATUS_CSS_SCRAMBLED_SECTOR ((NTSTATUS)0xC0000309L) +#define STATUS_CSS_REGION_MISMATCH ((NTSTATUS)0xC000030AL) +#define STATUS_CSS_RESETS_EXHAUSTED ((NTSTATUS)0xC000030BL) +#define STATUS_PKINIT_FAILURE ((NTSTATUS)0xC0000320L) +#define STATUS_SMARTCARD_SUBSYSTEM_FAILURE ((NTSTATUS)0xC0000321L) +#define STATUS_NO_KERB_KEY ((NTSTATUS)0xC0000322L) +#define STATUS_HOST_DOWN ((NTSTATUS)0xC0000350L) +#define STATUS_UNSUPPORTED_PREAUTH ((NTSTATUS)0xC0000351L) +#define STATUS_EFS_ALG_BLOB_TOO_BIG ((NTSTATUS)0xC0000352L) +#define STATUS_PORT_NOT_SET ((NTSTATUS)0xC0000353L) +#define STATUS_DEBUGGER_INACTIVE ((NTSTATUS)0xC0000354L) +#define STATUS_DS_VERSION_CHECK_FAILURE ((NTSTATUS)0xC0000355L) +#define STATUS_AUDITING_DISABLED ((NTSTATUS)0xC0000356L) +#define STATUS_PRENT4_MACHINE_ACCOUNT ((NTSTATUS)0xC0000357L) +#define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER ((NTSTATUS)0xC0000358L) +#define STATUS_INVALID_IMAGE_WIN_32 ((NTSTATUS)0xC0000359L) +#define STATUS_INVALID_IMAGE_WIN_64 ((NTSTATUS)0xC000035AL) +#define STATUS_BAD_BINDINGS ((NTSTATUS)0xC000035BL) +#define STATUS_NETWORK_SESSION_EXPIRED ((NTSTATUS)0xC000035CL) +#define STATUS_APPHELP_BLOCK ((NTSTATUS)0xC000035DL) +#define STATUS_ALL_SIDS_FILTERED ((NTSTATUS)0xC000035EL) +#define STATUS_NOT_SAFE_MODE_DRIVER ((NTSTATUS)0xC000035FL) +#define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT ((NTSTATUS)0xC0000361L) +#define STATUS_ACCESS_DISABLED_BY_POLICY_PATH ((NTSTATUS)0xC0000362L) +#define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER ((NTSTATUS)0xC0000363L) +#define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER ((NTSTATUS)0xC0000364L) +#define STATUS_FAILED_DRIVER_ENTRY ((NTSTATUS)0xC0000365L) +#define STATUS_DEVICE_ENUMERATION_ERROR ((NTSTATUS)0xC0000366L) +#define STATUS_WAIT_FOR_OPLOCK ((NTSTATUS)0x00000367L) +#define STATUS_MOUNT_POINT_NOT_RESOLVED ((NTSTATUS)0xC0000368L) +#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER ((NTSTATUS)0xC0000369L) +#define STATUS_MCA_OCCURED ((NTSTATUS)0xC000036AL) +#define STATUS_DRIVER_BLOCKED_CRITICAL ((NTSTATUS)0xC000036BL) +#define STATUS_DRIVER_BLOCKED ((NTSTATUS)0xC000036CL) +#define STATUS_DRIVER_DATABASE_ERROR ((NTSTATUS)0xC000036DL) +#define STATUS_SYSTEM_HIVE_TOO_LARGE ((NTSTATUS)0xC000036EL) +#define STATUS_INVALID_IMPORT_OF_NON_DLL ((NTSTATUS)0xC000036FL) +#define STATUS_DS_SHUTTING_DOWN ((NTSTATUS)0x40000370L) +#define STATUS_SMARTCARD_WRONG_PIN ((NTSTATUS)0xC0000380L) +#define STATUS_SMARTCARD_CARD_BLOCKED ((NTSTATUS)0xC0000381L) +#define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED ((NTSTATUS)0xC0000382L) +#define STATUS_SMARTCARD_NO_CARD ((NTSTATUS)0xC0000383L) +#define STATUS_SMARTCARD_NO_KEY_CONTAINER ((NTSTATUS)0xC0000384L) +#define STATUS_SMARTCARD_NO_CERTIFICATE ((NTSTATUS)0xC0000385L) +#define STATUS_SMARTCARD_NO_KEYSET ((NTSTATUS)0xC0000386L) +#define STATUS_SMARTCARD_IO_ERROR ((NTSTATUS)0xC0000387L) +#define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388L) +#define STATUS_SMARTCARD_CERT_REVOKED ((NTSTATUS)0xC0000389L) +#define STATUS_ISSUING_CA_UNTRUSTED ((NTSTATUS)0xC000038AL) +#define STATUS_REVOCATION_OFFLINE_C ((NTSTATUS)0xC000038BL) +#define STATUS_PKINIT_CLIENT_FAILURE ((NTSTATUS)0xC000038CL) +#define STATUS_SMARTCARD_CERT_EXPIRED ((NTSTATUS)0xC000038DL) +#define STATUS_DRIVER_FAILED_PRIOR_UNLOAD ((NTSTATUS)0xC000038EL) +#define STATUS_WOW_ASSERTION ((NTSTATUS)0xC0009898L) +#define RPC_NT_INVALID_STRING_BINDING ((NTSTATUS)0xC0020001L) +#define RPC_NT_WRONG_KIND_OF_BINDING ((NTSTATUS)0xC0020002L) +#define RPC_NT_INVALID_BINDING ((NTSTATUS)0xC0020003L) +#define RPC_NT_PROTSEQ_NOT_SUPPORTED ((NTSTATUS)0xC0020004L) +#define RPC_NT_INVALID_RPC_PROTSEQ ((NTSTATUS)0xC0020005L) +#define RPC_NT_INVALID_STRING_UUID ((NTSTATUS)0xC0020006L) +#define RPC_NT_INVALID_ENDPOINT_FORMAT ((NTSTATUS)0xC0020007L) +#define RPC_NT_INVALID_NET_ADDR ((NTSTATUS)0xC0020008L) +#define RPC_NT_NO_ENDPOINT_FOUND ((NTSTATUS)0xC0020009L) +#define RPC_NT_INVALID_TIMEOUT ((NTSTATUS)0xC002000AL) +#define RPC_NT_OBJECT_NOT_FOUND ((NTSTATUS)0xC002000BL) +#define RPC_NT_ALREADY_REGISTERED ((NTSTATUS)0xC002000CL) +#define RPC_NT_TYPE_ALREADY_REGISTERED ((NTSTATUS)0xC002000DL) +#define RPC_NT_ALREADY_LISTENING ((NTSTATUS)0xC002000EL) +#define RPC_NT_NO_PROTSEQS_REGISTERED ((NTSTATUS)0xC002000FL) +#define RPC_NT_NOT_LISTENING ((NTSTATUS)0xC0020010L) +#define RPC_NT_UNKNOWN_MGR_TYPE ((NTSTATUS)0xC0020011L) +#define RPC_NT_UNKNOWN_IF ((NTSTATUS)0xC0020012L) +#define RPC_NT_NO_BINDINGS ((NTSTATUS)0xC0020013L) +#define RPC_NT_NO_PROTSEQS ((NTSTATUS)0xC0020014L) +#define RPC_NT_CANT_CREATE_ENDPOINT ((NTSTATUS)0xC0020015L) +#define RPC_NT_OUT_OF_RESOURCES ((NTSTATUS)0xC0020016L) +#define RPC_NT_SERVER_UNAVAILABLE ((NTSTATUS)0xC0020017L) +#define RPC_NT_SERVER_TOO_BUSY ((NTSTATUS)0xC0020018L) +#define RPC_NT_INVALID_NETWORK_OPTIONS ((NTSTATUS)0xC0020019L) +#define RPC_NT_NO_CALL_ACTIVE ((NTSTATUS)0xC002001AL) +#define RPC_NT_CALL_FAILED ((NTSTATUS)0xC002001BL) +#define RPC_NT_CALL_FAILED_DNE ((NTSTATUS)0xC002001CL) +#define RPC_NT_PROTOCOL_ERROR ((NTSTATUS)0xC002001DL) +#define RPC_NT_UNSUPPORTED_TRANS_SYN ((NTSTATUS)0xC002001FL) +#define RPC_NT_UNSUPPORTED_TYPE ((NTSTATUS)0xC0020021L) +#define RPC_NT_INVALID_TAG ((NTSTATUS)0xC0020022L) +#define RPC_NT_INVALID_BOUND ((NTSTATUS)0xC0020023L) +#define RPC_NT_NO_ENTRY_NAME ((NTSTATUS)0xC0020024L) +#define RPC_NT_INVALID_NAME_SYNTAX ((NTSTATUS)0xC0020025L) +#define RPC_NT_UNSUPPORTED_NAME_SYNTAX ((NTSTATUS)0xC0020026L) +#define RPC_NT_UUID_NO_ADDRESS ((NTSTATUS)0xC0020028L) +#define RPC_NT_DUPLICATE_ENDPOINT ((NTSTATUS)0xC0020029L) +#define RPC_NT_UNKNOWN_AUTHN_TYPE ((NTSTATUS)0xC002002AL) +#define RPC_NT_MAX_CALLS_TOO_SMALL ((NTSTATUS)0xC002002BL) +#define RPC_NT_STRING_TOO_LONG ((NTSTATUS)0xC002002CL) +#define RPC_NT_PROTSEQ_NOT_FOUND ((NTSTATUS)0xC002002DL) +#define RPC_NT_PROCNUM_OUT_OF_RANGE ((NTSTATUS)0xC002002EL) +#define RPC_NT_BINDING_HAS_NO_AUTH ((NTSTATUS)0xC002002FL) +#define RPC_NT_UNKNOWN_AUTHN_SERVICE ((NTSTATUS)0xC0020030L) +#define RPC_NT_UNKNOWN_AUTHN_LEVEL ((NTSTATUS)0xC0020031L) +#define RPC_NT_INVALID_AUTH_IDENTITY ((NTSTATUS)0xC0020032L) +#define RPC_NT_UNKNOWN_AUTHZ_SERVICE ((NTSTATUS)0xC0020033L) +#define EPT_NT_INVALID_ENTRY ((NTSTATUS)0xC0020034L) +#define EPT_NT_CANT_PERFORM_OP ((NTSTATUS)0xC0020035L) +#define EPT_NT_NOT_REGISTERED ((NTSTATUS)0xC0020036L) +#define RPC_NT_NOTHING_TO_EXPORT ((NTSTATUS)0xC0020037L) +#define RPC_NT_INCOMPLETE_NAME ((NTSTATUS)0xC0020038L) +#define RPC_NT_INVALID_VERS_OPTION ((NTSTATUS)0xC0020039L) +#define RPC_NT_NO_MORE_MEMBERS ((NTSTATUS)0xC002003AL) +#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED ((NTSTATUS)0xC002003BL) +#define RPC_NT_INTERFACE_NOT_FOUND ((NTSTATUS)0xC002003CL) +#define RPC_NT_ENTRY_ALREADY_EXISTS ((NTSTATUS)0xC002003DL) +#define RPC_NT_ENTRY_NOT_FOUND ((NTSTATUS)0xC002003EL) +#define RPC_NT_NAME_SERVICE_UNAVAILABLE ((NTSTATUS)0xC002003FL) +#define RPC_NT_INVALID_NAF_ID ((NTSTATUS)0xC0020040L) +#define RPC_NT_CANNOT_SUPPORT ((NTSTATUS)0xC0020041L) +#define RPC_NT_NO_CONTEXT_AVAILABLE ((NTSTATUS)0xC0020042L) +#define RPC_NT_INTERNAL_ERROR ((NTSTATUS)0xC0020043L) +#define RPC_NT_ZERO_DIVIDE ((NTSTATUS)0xC0020044L) +#define RPC_NT_ADDRESS_ERROR ((NTSTATUS)0xC0020045L) +#define RPC_NT_FP_DIV_ZERO ((NTSTATUS)0xC0020046L) +#define RPC_NT_FP_UNDERFLOW ((NTSTATUS)0xC0020047L) +#define RPC_NT_FP_OVERFLOW ((NTSTATUS)0xC0020048L) +#define RPC_NT_NO_MORE_ENTRIES ((NTSTATUS)0xC0030001L) +#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL ((NTSTATUS)0xC0030002L) +#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE ((NTSTATUS)0xC0030003L) +#define RPC_NT_SS_IN_NULL_CONTEXT ((NTSTATUS)0xC0030004L) +#define RPC_NT_SS_CONTEXT_MISMATCH ((NTSTATUS)0xC0030005L) +#define RPC_NT_SS_CONTEXT_DAMAGED ((NTSTATUS)0xC0030006L) +#define RPC_NT_SS_HANDLES_MISMATCH ((NTSTATUS)0xC0030007L) +#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE ((NTSTATUS)0xC0030008L) +#define RPC_NT_NULL_REF_POINTER ((NTSTATUS)0xC0030009L) +#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE ((NTSTATUS)0xC003000AL) +#define RPC_NT_BYTE_COUNT_TOO_SMALL ((NTSTATUS)0xC003000BL) +#define RPC_NT_BAD_STUB_DATA ((NTSTATUS)0xC003000CL) +#define RPC_NT_CALL_IN_PROGRESS ((NTSTATUS)0xC0020049L) +#define RPC_NT_NO_MORE_BINDINGS ((NTSTATUS)0xC002004AL) +#define RPC_NT_GROUP_MEMBER_NOT_FOUND ((NTSTATUS)0xC002004BL) +#define EPT_NT_CANT_CREATE ((NTSTATUS)0xC002004CL) +#define RPC_NT_INVALID_OBJECT ((NTSTATUS)0xC002004DL) +#define RPC_NT_NO_INTERFACES ((NTSTATUS)0xC002004FL) +#define RPC_NT_CALL_CANCELLED ((NTSTATUS)0xC0020050L) +#define RPC_NT_BINDING_INCOMPLETE ((NTSTATUS)0xC0020051L) +#define RPC_NT_COMM_FAILURE ((NTSTATUS)0xC0020052L) +#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL ((NTSTATUS)0xC0020053L) +#define RPC_NT_NO_PRINC_NAME ((NTSTATUS)0xC0020054L) +#define RPC_NT_NOT_RPC_ERROR ((NTSTATUS)0xC0020055L) +#define RPC_NT_UUID_LOCAL_ONLY ((NTSTATUS)0x40020056L) +#define RPC_NT_SEC_PKG_ERROR ((NTSTATUS)0xC0020057L) +#define RPC_NT_NOT_CANCELLED ((NTSTATUS)0xC0020058L) +#define RPC_NT_INVALID_ES_ACTION ((NTSTATUS)0xC0030059L) +#define RPC_NT_WRONG_ES_VERSION ((NTSTATUS)0xC003005AL) +#define RPC_NT_WRONG_STUB_VERSION ((NTSTATUS)0xC003005BL) +#define RPC_NT_INVALID_PIPE_OBJECT ((NTSTATUS)0xC003005CL) +#define RPC_NT_INVALID_PIPE_OPERATION ((NTSTATUS)0xC003005DL) +#define RPC_NT_WRONG_PIPE_VERSION ((NTSTATUS)0xC003005EL) +#define RPC_NT_PIPE_CLOSED ((NTSTATUS)0xC003005FL) +#define RPC_NT_PIPE_DISCIPLINE_ERROR ((NTSTATUS)0xC0030060L) +#define RPC_NT_PIPE_EMPTY ((NTSTATUS)0xC0030061L) +#define RPC_NT_INVALID_ASYNC_HANDLE ((NTSTATUS)0xC0020062L) +#define RPC_NT_INVALID_ASYNC_CALL ((NTSTATUS)0xC0020063L) +#define RPC_NT_SEND_INCOMPLETE ((NTSTATUS)0x400200AFL) +#define STATUS_ACPI_INVALID_OPCODE ((NTSTATUS)0xC0140001L) +#define STATUS_ACPI_STACK_OVERFLOW ((NTSTATUS)0xC0140002L) +#define STATUS_ACPI_ASSERT_FAILED ((NTSTATUS)0xC0140003L) +#define STATUS_ACPI_INVALID_INDEX ((NTSTATUS)0xC0140004L) +#define STATUS_ACPI_INVALID_ARGUMENT ((NTSTATUS)0xC0140005L) +#define STATUS_ACPI_FATAL ((NTSTATUS)0xC0140006L) +#define STATUS_ACPI_INVALID_SUPERNAME ((NTSTATUS)0xC0140007L) +#define STATUS_ACPI_INVALID_ARGTYPE ((NTSTATUS)0xC0140008L) +#define STATUS_ACPI_INVALID_OBJTYPE ((NTSTATUS)0xC0140009L) +#define STATUS_ACPI_INVALID_TARGETTYPE ((NTSTATUS)0xC014000AL) +#define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT ((NTSTATUS)0xC014000BL) +#define STATUS_ACPI_ADDRESS_NOT_MAPPED ((NTSTATUS)0xC014000CL) +#define STATUS_ACPI_INVALID_EVENTTYPE ((NTSTATUS)0xC014000DL) +#define STATUS_ACPI_HANDLER_COLLISION ((NTSTATUS)0xC014000EL) +#define STATUS_ACPI_INVALID_DATA ((NTSTATUS)0xC014000FL) +#define STATUS_ACPI_INVALID_REGION ((NTSTATUS)0xC0140010L) +#define STATUS_ACPI_INVALID_ACCESS_SIZE ((NTSTATUS)0xC0140011L) +#define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK ((NTSTATUS)0xC0140012L) +#define STATUS_ACPI_ALREADY_INITIALIZED ((NTSTATUS)0xC0140013L) +#define STATUS_ACPI_NOT_INITIALIZED ((NTSTATUS)0xC0140014L) +#define STATUS_ACPI_INVALID_MUTEX_LEVEL ((NTSTATUS)0xC0140015L) +#define STATUS_ACPI_MUTEX_NOT_OWNED ((NTSTATUS)0xC0140016L) +#define STATUS_ACPI_MUTEX_NOT_OWNER ((NTSTATUS)0xC0140017L) +#define STATUS_ACPI_RS_ACCESS ((NTSTATUS)0xC0140018L) +#define STATUS_ACPI_INVALID_TABLE ((NTSTATUS)0xC0140019L) +#define STATUS_ACPI_REG_HANDLER_FAILED ((NTSTATUS)0xC0140020L) +#define STATUS_ACPI_POWER_REQUEST_FAILED ((NTSTATUS)0xC0140021L) +#define STATUS_CTX_WINSTATION_NAME_INVALID ((NTSTATUS)0xC00A0001L) +#define STATUS_CTX_INVALID_PD ((NTSTATUS)0xC00A0002L) +#define STATUS_CTX_PD_NOT_FOUND ((NTSTATUS)0xC00A0003L) +#define STATUS_CTX_CDM_CONNECT ((NTSTATUS)0x400A0004L) +#define STATUS_CTX_CDM_DISCONNECT ((NTSTATUS)0x400A0005L) +#define STATUS_CTX_CLOSE_PENDING ((NTSTATUS)0xC00A0006L) +#define STATUS_CTX_NO_OUTBUF ((NTSTATUS)0xC00A0007L) +#define STATUS_CTX_MODEM_INF_NOT_FOUND ((NTSTATUS)0xC00A0008L) +#define STATUS_CTX_INVALID_MODEMNAME ((NTSTATUS)0xC00A0009L) +#define STATUS_CTX_RESPONSE_ERROR ((NTSTATUS)0xC00A000AL) +#define STATUS_CTX_MODEM_RESPONSE_TIMEOUT ((NTSTATUS)0xC00A000BL) +#define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER ((NTSTATUS)0xC00A000CL) +#define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE ((NTSTATUS)0xC00A000DL) +#define STATUS_CTX_MODEM_RESPONSE_BUSY ((NTSTATUS)0xC00A000EL) +#define STATUS_CTX_MODEM_RESPONSE_VOICE ((NTSTATUS)0xC00A000FL) +#define STATUS_CTX_TD_ERROR ((NTSTATUS)0xC00A0010L) +#define STATUS_CTX_LICENSE_CLIENT_INVALID ((NTSTATUS)0xC00A0012L) +#define STATUS_CTX_LICENSE_NOT_AVAILABLE ((NTSTATUS)0xC00A0013L) +#define STATUS_CTX_LICENSE_EXPIRED ((NTSTATUS)0xC00A0014L) +#define STATUS_CTX_WINSTATION_NOT_FOUND ((NTSTATUS)0xC00A0015L) +#define STATUS_CTX_WINSTATION_NAME_COLLISION ((NTSTATUS)0xC00A0016L) +#define STATUS_CTX_WINSTATION_BUSY ((NTSTATUS)0xC00A0017L) +#define STATUS_CTX_BAD_VIDEO_MODE ((NTSTATUS)0xC00A0018L) +#define STATUS_CTX_GRAPHICS_INVALID ((NTSTATUS)0xC00A0022L) +#define STATUS_CTX_NOT_CONSOLE ((NTSTATUS)0xC00A0024L) +#define STATUS_CTX_CLIENT_QUERY_TIMEOUT ((NTSTATUS)0xC00A0026L) +#define STATUS_CTX_CONSOLE_DISCONNECT ((NTSTATUS)0xC00A0027L) +#define STATUS_CTX_CONSOLE_CONNECT ((NTSTATUS)0xC00A0028L) +#define STATUS_CTX_SHADOW_DENIED ((NTSTATUS)0xC00A002AL) +#define STATUS_CTX_WINSTATION_ACCESS_DENIED ((NTSTATUS)0xC00A002BL) +#define STATUS_CTX_INVALID_WD ((NTSTATUS)0xC00A002EL) +#define STATUS_CTX_WD_NOT_FOUND ((NTSTATUS)0xC00A002FL) +#define STATUS_CTX_SHADOW_INVALID ((NTSTATUS)0xC00A0030L) +#define STATUS_CTX_SHADOW_DISABLED ((NTSTATUS)0xC00A0031L) +#define STATUS_RDP_PROTOCOL_ERROR ((NTSTATUS)0xC00A0032L) +#define STATUS_CTX_CLIENT_LICENSE_NOT_SET ((NTSTATUS)0xC00A0033L) +#define STATUS_CTX_CLIENT_LICENSE_IN_USE ((NTSTATUS)0xC00A0034L) +#define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE ((NTSTATUS)0xC00A0035L) +#define STATUS_CTX_SHADOW_NOT_RUNNING ((NTSTATUS)0xC00A0036L) +#define STATUS_PNP_BAD_MPS_TABLE ((NTSTATUS)0xC0040035L) +#define STATUS_PNP_TRANSLATION_FAILED ((NTSTATUS)0xC0040036L) +#define STATUS_PNP_IRQ_TRANSLATION_FAILED ((NTSTATUS)0xC0040037L) +#define STATUS_SXS_SECTION_NOT_FOUND ((NTSTATUS)0xC0150001L) +#define STATUS_SXS_CANT_GEN_ACTCTX ((NTSTATUS)0xC0150002L) +#define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT ((NTSTATUS)0xC0150003L) +#define STATUS_SXS_ASSEMBLY_NOT_FOUND ((NTSTATUS)0xC0150004L) +#define STATUS_SXS_MANIFEST_FORMAT_ERROR ((NTSTATUS)0xC0150005L) +#define STATUS_SXS_MANIFEST_PARSE_ERROR ((NTSTATUS)0xC0150006L) +#define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED ((NTSTATUS)0xC0150007L) +#define STATUS_SXS_KEY_NOT_FOUND ((NTSTATUS)0xC0150008L) +#define STATUS_SXS_VERSION_CONFLICT ((NTSTATUS)0xC0150009L) +#define STATUS_SXS_WRONG_SECTION_TYPE ((NTSTATUS)0xC015000AL) +#define STATUS_SXS_THREAD_QUERIES_DISABLED ((NTSTATUS)0xC015000BL) +#define STATUS_SXS_ASSEMBLY_MISSING ((NTSTATUS)0xC015000CL) +#define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT ((NTSTATUS)0x4015000DL) +#define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET ((NTSTATUS)0xC015000EL) +#define STATUS_SXS_EARLY_DEACTIVATION ((NTSTATUS)0xC015000FL) +#define STATUS_SXS_INVALID_DEACTIVATION ((NTSTATUS)0xC0150010L) +#define STATUS_SXS_MULTIPLE_DEACTIVATION ((NTSTATUS)0xC0150011L) +#define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY ((NTSTATUS)0xC0150012L) +#define STATUS_SXS_PROCESS_TERMINATION_REQUESTED ((NTSTATUS)0xC0150013L) +#define STATUS_CLUSTER_INVALID_NODE ((NTSTATUS)0xC0130001L) +#define STATUS_CLUSTER_NODE_EXISTS ((NTSTATUS)0xC0130002L) +#define STATUS_CLUSTER_JOIN_IN_PROGRESS ((NTSTATUS)0xC0130003L) +#define STATUS_CLUSTER_NODE_NOT_FOUND ((NTSTATUS)0xC0130004L) +#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND ((NTSTATUS)0xC0130005L) +#define STATUS_CLUSTER_NETWORK_EXISTS ((NTSTATUS)0xC0130006L) +#define STATUS_CLUSTER_NETWORK_NOT_FOUND ((NTSTATUS)0xC0130007L) +#define STATUS_CLUSTER_NETINTERFACE_EXISTS ((NTSTATUS)0xC0130008L) +#define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND ((NTSTATUS)0xC0130009L) +#define STATUS_CLUSTER_INVALID_REQUEST ((NTSTATUS)0xC013000AL) +#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER ((NTSTATUS)0xC013000BL) +#define STATUS_CLUSTER_NODE_DOWN ((NTSTATUS)0xC013000CL) +#define STATUS_CLUSTER_NODE_UNREACHABLE ((NTSTATUS)0xC013000DL) +#define STATUS_CLUSTER_NODE_NOT_MEMBER ((NTSTATUS)0xC013000EL) +#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS ((NTSTATUS)0xC013000FL) +#define STATUS_CLUSTER_INVALID_NETWORK ((NTSTATUS)0xC0130010L) +#define STATUS_CLUSTER_NO_NET_ADAPTERS ((NTSTATUS)0xC0130011L) +#define STATUS_CLUSTER_NODE_UP ((NTSTATUS)0xC0130012L) +#define STATUS_CLUSTER_NODE_PAUSED ((NTSTATUS)0xC0130013L) +#define STATUS_CLUSTER_NODE_NOT_PAUSED ((NTSTATUS)0xC0130014L) +#define STATUS_CLUSTER_NO_SECURITY_CONTEXT ((NTSTATUS)0xC0130015L) +#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL ((NTSTATUS)0xC0130016L) +#define STATUS_CLUSTER_POISONED ((NTSTATUS)0xC0130017L) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/reactos/w32api/include/ddk/parallel.h b/reactos/w32api/include/ddk/parallel.h new file mode 100644 index 00000000000..1c7d72f1084 --- /dev/null +++ b/reactos/w32api/include/ddk/parallel.h @@ -0,0 +1,282 @@ +/* + * parallel.h + * + * ParPort driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __PARALLEL_H +#define __PARALLEL_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddpar.h" + + +#define DD_PARALLEL_PORT_BASE_NAME "ParallelPort" +#define DD_PARALLEL_PORT_BASE_NAME_U L"ParallelPort" + +#define IOCTL_INTERNAL_DESELECT_DEVICE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_GET_MORE_PARALLEL_PORT_INFO \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_INIT_1284_3_BUS \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_CLEAR_CHIP_MODE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_PORT_FREE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 40, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARALLEL_SET_CHIP_MODE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_RELEASE_PARALLEL_PORT_INFO \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_SELECT_DEVICE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +typedef struct _PARALLEL_1284_COMMAND { + UCHAR ID; + UCHAR Port; + ULONG CommandFlags; +} PARALLEL_1284_COMMAND, *PPARALLEL_1284_COMMAND; + +/* PARALLEL_1284_COMMAND.CommandFlags */ +#define PAR_END_OF_CHAIN_DEVICE 0x00000001 +#define PAR_HAVE_PORT_KEEP_PORT 0x00000002 + +typedef struct _MORE_PARALLEL_PORT_INFORMATION { + INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + ULONG InterruptLevel; + ULONG InterruptVector; + KAFFINITY InterruptAffinity; + KINTERRUPT_MODE InterruptMode; +} MORE_PARALLEL_PORT_INFORMATION, *PMORE_PARALLEL_PORT_INFORMATION; + +typedef NTSTATUS DDKAPI +(*PPARALLEL_SET_CHIP_MODE)( + IN PVOID SetChipContext, + IN UCHAR ChipMode); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_CLEAR_CHIP_MODE)( + IN PVOID ClearChipContext, + IN UCHAR ChipMode); + +typedef NTSTATUS DDKAPI +(*PPARCHIP_CLEAR_CHIP_MODE)( + IN PVOID ClearChipContext, + IN UCHAR ChipMode); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_TRY_SELECT_ROUTINE)( + IN PVOID TrySelectContext, + IN PVOID TrySelectCommand); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_DESELECT_ROUTINE)( + IN PVOID DeselectContext, + IN PVOID DeselectCommand); + +/* PARALLEL_PNP_INFORMATION.HardwareCapabilities */ +#define PPT_NO_HARDWARE_PRESENT 0x00000000 +#define PPT_ECP_PRESENT 0x00000001 +#define PPT_EPP_PRESENT 0x00000002 +#define PPT_EPP_32_PRESENT 0x00000004 +#define PPT_BYTE_PRESENT 0x00000008 +#define PPT_BIDI_PRESENT 0x00000008 +#define PPT_1284_3_PRESENT 0x00000010 + +typedef struct _PARALLEL_PNP_INFORMATION { + PHYSICAL_ADDRESS OriginalEcpController; + PUCHAR EcpController; + ULONG SpanOfEcpController; + ULONG PortNumber; + ULONG HardwareCapabilities; + PPARALLEL_SET_CHIP_MODE TrySetChipMode; + PPARALLEL_CLEAR_CHIP_MODE ClearChipMode; + ULONG FifoDepth; + ULONG FifoWidth; + PHYSICAL_ADDRESS EppControllerPhysicalAddress; + ULONG SpanOfEppController; + ULONG Ieee1284_3DeviceCount; + PPARALLEL_TRY_SELECT_ROUTINE TrySelectDevice; + PPARALLEL_DESELECT_ROUTINE DeselectDevice; + PVOID Context; + ULONG CurrentMode; + PWSTR PortName; +} PARALLEL_PNP_INFORMATION, *PPARALLEL_PNP_INFORMATION; + +typedef BOOLEAN DDKAPI +(*PPARALLEL_TRY_ALLOCATE_ROUTINE)( + IN PVOID TryAllocateContext); + +typedef VOID DDKAPI +(*PPARALLEL_FREE_ROUTINE)( + IN PVOID FreeContext); + +typedef ULONG DDKAPI +(*PPARALLEL_QUERY_WAITERS_ROUTINE)( + IN PVOID QueryAllocsContext); + +typedef struct _PARALLEL_PORT_INFORMATION { + PHYSICAL_ADDRESS OriginalController; + PUCHAR Controller; + ULONG SpanOfController; + PPARALLEL_TRY_ALLOCATE_ROUTINE TryAllocatePort; + PPARALLEL_FREE_ROUTINE FreePort; + PPARALLEL_QUERY_WAITERS_ROUTINE QueryNumWaiters; + PVOID Context; +} PARALLEL_PORT_INFORMATION, *PPARALLEL_PORT_INFORMATION; + +/* PARALLEL_CHIP_MODE.ModeFlags */ +#define INITIAL_MODE 0x00 +#define PARCHIP_ECR_ARBITRATOR 0x01 + +typedef struct _PARALLEL_CHIP_MODE { + UCHAR ModeFlags; + BOOLEAN success; +} PARALLEL_CHIP_MODE, *PPARALLEL_CHIP_MODE; + +typedef VOID DDKAPI +(*PPARALLEL_DEFERRED_ROUTINE)( + IN PVOID DeferredContext); + +typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE { + PKSERVICE_ROUTINE InterruptServiceRoutine; + PVOID InterruptServiceContext; + PPARALLEL_DEFERRED_ROUTINE DeferredPortCheckRoutine; + PVOID DeferredPortCheckContext; +} PARALLEL_INTERRUPT_SERVICE_ROUTINE, *PPARALLEL_INTERRUPT_SERVICE_ROUTINE; + + +#define IOCTL_INTERNAL_DISCONNECT_IDLE \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_LOCK_PORT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_LOCK_PORT_NO_SELECT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 52, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARCLASS_CONNECT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_PARCLASS_DISCONNECT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_UNLOCK_PORT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT \ + CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 53, METHOD_BUFFERED, FILE_ANY_ACCESS) + +typedef USHORT DDKAPI +(*PDETERMINE_IEEE_MODES)( + IN PVOID Context); + +typedef enum _PARALLEL_SAFETY { + SAFE_MODE, + UNSAFE_MODE +} PARALLEL_SAFETY; + +typedef NTSTATUS DDKAPI +(*PNEGOTIATE_IEEE_MODE)( + IN PVOID Context, + IN USHORT ModeMaskFwd, + IN USHORT ModeMaskRev, + IN PARALLEL_SAFETY ModeSafety, + IN BOOLEAN IsForward); + +typedef NTSTATUS DDKAPI +(*PTERMINATE_IEEE_MODE)( + IN PVOID Context); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_IEEE_FWD_TO_REV)( + IN PVOID Context); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_IEEE_REV_TO_FWD)( + IN PVOID Context); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_READ)( + IN PVOID Context, + OUT PVOID Buffer, + IN ULONG NumBytesToRead, + OUT PULONG NumBytesRead, + IN UCHAR Channel); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_WRITE)( + IN PVOID Context, + OUT PVOID Buffer, + IN ULONG NumBytesToWrite, + OUT PULONG NumBytesWritten, + IN UCHAR Channel); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_TRYSELECT_DEVICE)( + IN PVOID Context, + IN PARALLEL_1284_COMMAND Command); + +typedef NTSTATUS DDKAPI +(*PPARALLEL_DESELECT_DEVICE)( + IN PVOID Context, + IN PARALLEL_1284_COMMAND Command); + +typedef struct _PARCLASS_INFORMATION { + PUCHAR Controller; + PUCHAR EcrController; + ULONG SpanOfController; + PDETERMINE_IEEE_MODES DetermineIeeeModes; + PNEGOTIATE_IEEE_MODE NegotiateIeeeMode; + PTERMINATE_IEEE_MODE TerminateIeeeMode; + PPARALLEL_IEEE_FWD_TO_REV IeeeFwdToRevMode; + PPARALLEL_IEEE_REV_TO_FWD IeeeRevToFwdMode; + PPARALLEL_READ ParallelRead; + PPARALLEL_WRITE ParallelWrite; + PVOID ParclassContext; + ULONG HardwareCapabilities; + ULONG FifoDepth; + ULONG FifoWidth; + PPARALLEL_TRYSELECT_DEVICE ParallelTryselect; + PPARALLEL_DESELECT_DEVICE ParallelDeSelect; +} PARCLASS_INFORMATION, *PPARCLASS_INFORMATION; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __PARALLEL_H */ diff --git a/reactos/w32api/include/ddk/pfhook.h b/reactos/w32api/include/ddk/pfhook.h new file mode 100644 index 00000000000..571b63ef66b --- /dev/null +++ b/reactos/w32api/include/ddk/pfhook.h @@ -0,0 +1,81 @@ +/* + * pfhook.h + * + * Packet filter API + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __PFHOOK_H +#define __PFHOOK_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define DD_IPFLTRDRVR_DEVICE_NAME L"\\Device\\IPFILTERDRIVER" + +#define INVALID_PF_IF_INDEX 0xffffffff +#define ZERO_PF_IP_ADDR 0 + +typedef ULONG IPAddr; + +typedef enum _PF_FORWARD_ACTION { + PF_FORWARD = 0, + PF_DROP = 1, + PF_PASS = 2, + PF_ICMP_ON_DROP = 3 +} PF_FORWARD_ACTION; + +typedef PF_FORWARD_ACTION STDCALL +(*PacketFilterExtensionPtr)( + IN unsigned char *PacketHeader, + IN unsigned char *Packet, + IN unsigned int PacketLength, + IN unsigned int RecvInterfaceIndex, + IN unsigned int SendInterfaceIndex, + IN IPAddr RecvLinkNextHop, + IN IPAddr SendLinkNextHop); + +typedef struct _PF_SET_EXTENSION_HOOK_INFO { + PacketFilterExtensionPtr ExtensionPointer; +} PF_SET_EXTENSION_HOOK_INFO, *PPF_SET_EXTENSION_HOOK_INFO; + +#define FSCTL_IPFLTRDRVR_BASE FILE_DEVICE_NETWORK + +#define _IPFLTRDRVR_CTL_CODE(function, method, access) \ + CTL_CODE(FSCTL_IPFLTRDRVR_BASE, function, method, access) + +#define IOCTL_PF_SET_EXTENSION_POINTER \ + _IPFLTRDRVR_CTL_CODE(22, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __PFHOOK_H */ diff --git a/reactos/w32api/include/ddk/poclass.h b/reactos/w32api/include/ddk/poclass.h new file mode 100644 index 00000000000..8de537884e7 --- /dev/null +++ b/reactos/w32api/include/ddk/poclass.h @@ -0,0 +1,123 @@ +/* + * poclass.h + * + * Power policy driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __POCLASS_H +#define __POCLASS_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "batclass.h" + + +DEFINE_GUID(GUID_CLASS_INPUT, + 0x4D1E55B2L, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30); + +DEFINE_GUID(GUID_DEVICE_LID, + 0x4AFA3D52L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57); + +DEFINE_GUID(GUID_DEVICE_MEMORY, + 0x3fd0f03dL, 0x92e0, 0x45fb, 0xb7, 0x5c, 0x5e, 0xd8, 0xff, 0xb0, 0x10, 0x21); + +DEFINE_GUID(GUID_DEVICE_MESSAGE_INDICATOR, + 0XCD48A365L, 0xfa94, 0x4ce2, 0xa2, 0x32, 0xa1, 0xb7, 0x64, 0xe5, 0xd8, 0xb4); + +DEFINE_GUID(GUID_DEVICE_PROCESSOR, + 0x97fadb10L, 0x4e33, 0x40ae, 0x35, 0x9c, 0x8b, 0xef, 0x02, 0x9d, 0xbd, 0xd0); + +DEFINE_GUID(GUID_DEVICE_SYS_BUTTON, + 0x4AFA3D53L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57); + +DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE, + 0x4AFA3D51L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57); + + +#define IOCTL_GET_PROCESSOR_OBJ_INFO \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x60, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_GET_SYS_BUTTON_CAPS \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x50, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_GET_SYS_BUTTON_EVENT \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x51, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_SET_SYS_MESSAGE_INDICATOR \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x70, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_NOTIFY_SWITCH_EVENT \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_THERMAL_QUERY_INFORMATION \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x20, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_THERMAL_SET_COOLING_POLICY \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x21, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define IOCTL_QUERY_LID \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x30, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_RUN_ACTIVE_COOLING_METHOD \ + CTL_CODE(FILE_DEVICE_BATTERY, 0x22, METHOD_BUFFERED, FILE_WRITE_ACCESS) + +#define SYS_BUTTON_POWER 0x00000001 +#define SYS_BUTTON_SLEEP 0x00000002 +#define SYS_BUTTON_LID 0x00000004 +#define SYS_BUTTON_WAKE 0x80000000 + +#define MAX_ACTIVE_COOLING_LEVELS 10 +#define ACTIVE_COOLING 0 +#define PASSIVE_COOLING 1 + +typedef struct _THERMAL_INFORMATION { + ULONG ThermalStamp; + ULONG ThermalConstant1; + ULONG ThermalConstant2; + KAFFINITY Processors; + ULONG SamplingPeriod; + ULONG CurrentTemperature; + ULONG PassiveTripPoint; + ULONG CriticalTripPoint; + UCHAR ActiveTripPointCount; + ULONG ActiveTripPoint[MAX_ACTIVE_COOLING_LEVELS]; +} THERMAL_INFORMATION, *PTHERMAL_INFORMATION; + +typedef struct _PROCESSOR_OBJECT_INFO { + ULONG PhysicalID; + ULONG PBlkAddress; + UCHAR PBlkLength; +} PROCESSOR_OBJECT_INFO, *PPROCESSOR_OBJECT_INFO; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __POCLASS_H */ diff --git a/reactos/w32api/include/ddk/scsi.h b/reactos/w32api/include/ddk/scsi.h new file mode 100644 index 00000000000..727ba6c3e4a --- /dev/null +++ b/reactos/w32api/include/ddk/scsi.h @@ -0,0 +1,1698 @@ +/* + * scsi.h + * + * SCSI port and class interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __SCSI_H +#define __SCSI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +typedef union _CDB { + struct _CDB6GENERIC { + UCHAR OperationCode; + UCHAR Immediate : 1; + UCHAR CommandUniqueBits : 4; + UCHAR LogicalUnitNumber : 3; + UCHAR CommandUniqueBytes[3]; + UCHAR Link : 1; + UCHAR Flag : 1; + UCHAR Reserved : 4; + UCHAR VendorUnique : 2; + } CDB6GENERIC, *PCDB6GENERIC; + + struct _CDB6READWRITE { + UCHAR OperationCode; + UCHAR LogicalBlockMsb1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR LogicalBlockMsb0; + UCHAR LogicalBlockLsb; + UCHAR TransferBlocks; + UCHAR Control; + } CDB6READWRITE, *PCDB6READWRITE; + + struct _CDB6INQUIRY { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR PageCode; + UCHAR IReserved; + UCHAR AllocationLength; + UCHAR Control; + } CDB6INQUIRY, *PCDB6INQUIRY; + + struct _CDB6INQUIRY3 { + UCHAR OperationCode; + UCHAR EnableVitalProductData : 1; + UCHAR CommandSupportData : 1; + UCHAR Reserved1 : 6; + UCHAR PageCode; + UCHAR Reserved2; + UCHAR AllocationLength; + UCHAR Control; + } CDB6INQUIRY3, *PCDB6INQUIRY3; + + struct _CDB6VERIFY { + UCHAR OperationCode; + UCHAR Fixed : 1; + UCHAR ByteCompare : 1; + UCHAR Immediate : 1; + UCHAR Reserved : 2; + UCHAR LogicalUnitNumber : 3; + UCHAR VerificationLength[3]; + UCHAR Control; + } CDB6VERIFY, *PCDB6VERIFY; + + struct _CDB6FORMAT { + UCHAR OperationCode; + UCHAR FormatControl : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR FReserved1; + UCHAR InterleaveMsb; + UCHAR InterleaveLsb; + UCHAR FReserved2; + } CDB6FORMAT, *PCDB6FORMAT; + + struct _CDB10 { + UCHAR OperationCode; + UCHAR RelativeAddress : 1; + UCHAR Reserved1 : 2; + UCHAR ForceUnitAccess : 1; + UCHAR DisablePageOut : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR LogicalBlockByte0; + UCHAR LogicalBlockByte1; + UCHAR LogicalBlockByte2; + UCHAR LogicalBlockByte3; + UCHAR Reserved2; + UCHAR TransferBlocksMsb; + UCHAR TransferBlocksLsb; + UCHAR Control; + } CDB10, *PCDB10; + + struct _CDB12 { + UCHAR OperationCode; + UCHAR RelativeAddress : 1; + UCHAR Reserved1 : 2; + UCHAR ForceUnitAccess : 1; + UCHAR DisablePageOut : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR LogicalBlock[4]; + UCHAR TransferLength[4]; + UCHAR Reserved2; + UCHAR Control; + } CDB12, *PCDB12; + + struct _PAUSE_RESUME { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2[6]; + UCHAR Action; + UCHAR Control; + } PAUSE_RESUME, *PPAUSE_RESUME; + + struct _READ_TOC { + UCHAR OperationCode; + UCHAR Reserved0 : 1; + UCHAR Msf : 1; + UCHAR Reserved1 : 3; + UCHAR LogicalUnitNumber : 3; + UCHAR Format2 : 4; + UCHAR Reserved2 : 4; + UCHAR Reserved3[3]; + UCHAR StartingTrack; + UCHAR AllocationLength[2]; + UCHAR Control : 6; + UCHAR Format : 2; + } READ_TOC, *PREAD_TOC; + + struct _READ_DISK_INFORMATION { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR Reserved2[5]; + UCHAR AllocationLength[2]; + UCHAR Control; + } READ_DISK_INFORMATION, *PREAD_DISK_INFORMATION; + + struct _READ_TRACK_INFORMATION { + UCHAR OperationCode; + UCHAR Track : 1; + UCHAR Reserved1 : 3; + UCHAR Reserved2 : 1; + UCHAR Lun : 3; + UCHAR BlockAddress[4]; + UCHAR Reserved3; + UCHAR AllocationLength[2]; + UCHAR Control; + } READ_TRACK_INFORMATION, *PREAD_TRACK_INFORMATION; + + struct _RESERVE_TRACK_RZONE { + UCHAR OperationCode; + UCHAR Reserved1[4]; + UCHAR ReservationSize[4]; + UCHAR Control; + } RESERVE_TRACK_RZONE, *PRESERVE_TRACK_RZONE; + + struct _SEND_OPC_INFORMATION { + UCHAR OperationCode; + UCHAR DoOpc : 1; + UCHAR Reserved : 7; + UCHAR Reserved1[5]; + UCHAR ParameterListLength[2]; + UCHAR Reserved2; + } SEND_OPC_INFORMATION, *PSEND_OPC_INFORMATION; + + struct _CLOSE_TRACK { + UCHAR OperationCode; + UCHAR Immediate : 1; + UCHAR Reserved1 : 7; + UCHAR Track : 1; + UCHAR Session : 1; + UCHAR Reserved2 : 6; + UCHAR Reserved3; + UCHAR TrackNumber[2]; + UCHAR Reserved4[3]; + UCHAR Control; + } CLOSE_TRACK, *PCLOSE_TRACK; + + struct _SEND_CUE_SHEET { + UCHAR OperationCode; + UCHAR Reserved[5]; + UCHAR CueSheetSize[3]; + UCHAR Control; + } SEND_CUE_SHEET, *PSEND_CUE_SHEET; + + struct _READ_HEADER { + UCHAR OperationCode; + UCHAR Reserved1 : 1; + UCHAR Msf : 1; + UCHAR Reserved2 : 3; + UCHAR Lun : 3; + UCHAR LogicalBlockAddress[4]; + UCHAR Reserved3; + UCHAR AllocationLength[2]; + UCHAR Control; + } READ_HEADER, *PREAD_HEADER; + + struct _PLAY_AUDIO { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR StartingBlockAddress[4]; + UCHAR Reserved2; + UCHAR PlayLength[2]; + UCHAR Control; + } PLAY_AUDIO, *PPLAY_AUDIO; + + struct _PLAY_AUDIO_MSF { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2; + UCHAR StartingM; + UCHAR StartingS; + UCHAR StartingF; + UCHAR EndingM; + UCHAR EndingS; + UCHAR EndingF; + UCHAR Control; + } PLAY_AUDIO_MSF, *PPLAY_AUDIO_MSF; + +/* FIXME: Should the union be anonymous in C++ too? If so, + can't define named types _LBA and _MSF within anonymous union + for C++. */ + struct _PLAY_CD { + UCHAR OperationCode; + UCHAR Reserved1 : 1; + UCHAR CMSF : 1; + UCHAR ExpectedSectorType : 3; + UCHAR Lun : 3; +#ifndef __cplusplus + _ANONYMOUS_UNION +#endif + union { + struct _LBA { + UCHAR StartingBlockAddress[4]; + UCHAR PlayLength[4]; + } LBA; + + struct _MSF { + UCHAR Reserved1; + UCHAR StartingM; + UCHAR StartingS; + UCHAR StartingF; + UCHAR EndingM; + UCHAR EndingS; + UCHAR EndingF; + UCHAR Reserved2; + } MSF; + #ifndef __cplusplus + }DUMMYUNIONNAME; + #else + }u; + #endif + + UCHAR Audio : 1; + UCHAR Composite : 1; + UCHAR Port1 : 1; + UCHAR Port2 : 1; + UCHAR Reserved2 : 3; + UCHAR Speed : 1; + UCHAR Control; + } PLAY_CD, *PPLAY_CD; + + struct _SCAN_CD { + UCHAR OperationCode; + UCHAR RelativeAddress : 1; + UCHAR Reserved1 : 3; + UCHAR Direct : 1; + UCHAR Lun : 3; + UCHAR StartingAddress[4]; + UCHAR Reserved2[3]; + UCHAR Reserved3 : 6; + UCHAR Type : 2; + UCHAR Reserved4; + UCHAR Control; + } SCAN_CD, *PSCAN_CD; + + struct _STOP_PLAY_SCAN { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR Reserved2[7]; + UCHAR Control; + } STOP_PLAY_SCAN, *PSTOP_PLAY_SCAN; + + struct _SUBCHANNEL { + UCHAR OperationCode; + UCHAR Reserved0 : 1; + UCHAR Msf : 1; + UCHAR Reserved1 : 3; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2 : 6; + UCHAR SubQ : 1; + UCHAR Reserved3 : 1; + UCHAR Format; + UCHAR Reserved4[2]; + UCHAR TrackNumber; + UCHAR AllocationLength[2]; + UCHAR Control; + } SUBCHANNEL, *PSUBCHANNEL; + + struct _READ_CD { + UCHAR OperationCode; + UCHAR RelativeAddress : 1; + UCHAR Reserved0 : 1; + UCHAR ExpectedSectorType : 3; + UCHAR Lun : 3; + UCHAR StartingLBA[4]; + UCHAR TransferBlocks[3]; + UCHAR Reserved2 : 1; + UCHAR ErrorFlags : 2; + UCHAR IncludeEDC : 1; + UCHAR IncludeUserData : 1; + UCHAR HeaderCode : 2; + UCHAR IncludeSyncData : 1; + UCHAR SubChannelSelection : 3; + UCHAR Reserved3 : 5; + UCHAR Control; + } READ_CD, *PREAD_CD; + + struct _READ_CD_MSF { + UCHAR OperationCode; + UCHAR RelativeAddress : 1; + UCHAR Reserved1 : 1; + UCHAR ExpectedSectorType : 3; + UCHAR Lun : 3; + UCHAR Reserved2; + UCHAR StartingM; + UCHAR StartingS; + UCHAR StartingF; + UCHAR EndingM; + UCHAR EndingS; + UCHAR EndingF; + UCHAR Reserved3; + UCHAR Reserved4 : 1; + UCHAR ErrorFlags : 2; + UCHAR IncludeEDC : 1; + UCHAR IncludeUserData : 1; + UCHAR HeaderCode : 2; + UCHAR IncludeSyncData : 1; + UCHAR SubChannelSelection : 3; + UCHAR Reserved5 : 5; + UCHAR Control; + } READ_CD_MSF, *PREAD_CD_MSF; + + struct _PLXTR_READ_CDDA { + UCHAR OperationCode; + UCHAR Reserved0 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR LogicalBlockByte0; + UCHAR LogicalBlockByte1; + UCHAR LogicalBlockByte2; + UCHAR LogicalBlockByte3; + UCHAR TransferBlockByte0; + UCHAR TransferBlockByte1; + UCHAR TransferBlockByte2; + UCHAR TransferBlockByte3; + UCHAR SubCode; + UCHAR Control; + } PLXTR_READ_CDDA, *PPLXTR_READ_CDDA; + + struct _NEC_READ_CDDA { + UCHAR OperationCode; + UCHAR Reserved0; + UCHAR LogicalBlockByte0; + UCHAR LogicalBlockByte1; + UCHAR LogicalBlockByte2; + UCHAR LogicalBlockByte3; + UCHAR Reserved1; + UCHAR TransferBlockByte0; + UCHAR TransferBlockByte1; + UCHAR Control; + } NEC_READ_CDDA, *PNEC_READ_CDDA; + + struct _MODE_SENSE { + UCHAR OperationCode; + UCHAR Reserved1 : 3; + UCHAR Dbd : 1; + UCHAR Reserved2 : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR PageCode : 6; + UCHAR Pc : 2; + UCHAR Reserved3; + UCHAR AllocationLength; + UCHAR Control; + } MODE_SENSE, *PMODE_SENSE; + + struct _MODE_SENSE10 { + UCHAR OperationCode; + UCHAR Reserved1 : 3; + UCHAR Dbd : 1; + UCHAR Reserved2 : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR PageCode : 6; + UCHAR Pc : 2; + UCHAR Reserved3[4]; + UCHAR AllocationLength[2]; + UCHAR Control; + } MODE_SENSE10, *PMODE_SENSE10; + + struct _MODE_SELECT { + UCHAR OperationCode; + UCHAR SPBit : 1; + UCHAR Reserved1 : 3; + UCHAR PFBit : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2[2]; + UCHAR ParameterListLength; + UCHAR Control; + } MODE_SELECT, *PMODE_SELECT; + + struct _MODE_SELECT10 { + UCHAR OperationCode; + UCHAR SPBit : 1; + UCHAR Reserved1 : 3; + UCHAR PFBit : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2[5]; + UCHAR ParameterListLength[2]; + UCHAR Control; + } MODE_SELECT10, *PMODE_SELECT10; + + struct _LOCATE { + UCHAR OperationCode; + UCHAR Immediate : 1; + UCHAR CPBit : 1; + UCHAR BTBit : 1; + UCHAR Reserved1 : 2; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved3; + UCHAR LogicalBlockAddress[4]; + UCHAR Reserved4; + UCHAR Partition; + UCHAR Control; + } LOCATE, *PLOCATE; + + struct _LOGSENSE { + UCHAR OperationCode; + UCHAR SPBit : 1; + UCHAR PPCBit : 1; + UCHAR Reserved1 : 3; + UCHAR LogicalUnitNumber : 3; + UCHAR PageCode : 6; + UCHAR PCBit : 2; + UCHAR Reserved2; + UCHAR Reserved3; + UCHAR ParameterPointer[2]; + UCHAR AllocationLength[2]; + UCHAR Control; + } LOGSENSE, *PLOGSENSE; + + struct _LOGSELECT { + UCHAR OperationCode; + UCHAR SPBit : 1; + UCHAR PCRBit : 1; + UCHAR Reserved1 : 3; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved : 6; + UCHAR PCBit : 2; + UCHAR Reserved2[4]; + UCHAR ParameterListLength[2]; + UCHAR Control; + } LOGSELECT, *PLOGSELECT; + + struct _PRINT { + UCHAR OperationCode; + UCHAR Reserved : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR TransferLength[3]; + UCHAR Control; + } PRINT, *PPRINT; + + struct _SEEK { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR LogicalBlockAddress[4]; + UCHAR Reserved2[3]; + UCHAR Control; + } SEEK, *PSEEK; + + struct _ERASE { + UCHAR OperationCode; + UCHAR Long : 1; + UCHAR Immediate : 1; + UCHAR Reserved1 : 3; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2[3]; + UCHAR Control; + } ERASE, *PERASE; + + struct _START_STOP { + UCHAR OperationCode; + UCHAR Immediate: 1; + UCHAR Reserved1 : 4; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2[2]; + UCHAR Start : 1; + UCHAR LoadEject : 1; + UCHAR Reserved3 : 6; + UCHAR Control; + } START_STOP, *PSTART_STOP; + + struct _MEDIA_REMOVAL { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR Reserved2[2]; + + UCHAR Prevent : 1; + UCHAR Persistant : 1; + UCHAR Reserved3 : 6; + + UCHAR Control; + } MEDIA_REMOVAL, *PMEDIA_REMOVAL; + + struct _SEEK_BLOCK { + UCHAR OperationCode; + UCHAR Immediate : 1; + UCHAR Reserved1 : 7; + UCHAR BlockAddress[3]; + UCHAR Link : 1; + UCHAR Flag : 1; + UCHAR Reserved2 : 4; + UCHAR VendorUnique : 2; + } SEEK_BLOCK, *PSEEK_BLOCK; + + struct _REQUEST_BLOCK_ADDRESS { + UCHAR OperationCode; + UCHAR Reserved1[3]; + UCHAR AllocationLength; + UCHAR Link : 1; + UCHAR Flag : 1; + UCHAR Reserved2 : 4; + UCHAR VendorUnique : 2; + } REQUEST_BLOCK_ADDRESS, *PREQUEST_BLOCK_ADDRESS; + + struct _PARTITION { + UCHAR OperationCode; + UCHAR Immediate : 1; + UCHAR Sel: 1; + UCHAR PartitionSelect : 6; + UCHAR Reserved1[3]; + UCHAR Control; + } PARTITION, *PPARTITION; + + struct _WRITE_TAPE_MARKS { + UCHAR OperationCode; + UCHAR Immediate : 1; + UCHAR WriteSetMarks: 1; + UCHAR Reserved : 3; + UCHAR LogicalUnitNumber : 3; + UCHAR TransferLength[3]; + UCHAR Control; + } WRITE_TAPE_MARKS, *PWRITE_TAPE_MARKS; + + struct _SPACE_TAPE_MARKS { + UCHAR OperationCode; + UCHAR Code : 3; + UCHAR Reserved : 2; + UCHAR LogicalUnitNumber : 3; + UCHAR NumMarksMSB ; + UCHAR NumMarks; + UCHAR NumMarksLSB; + union { + UCHAR value; + struct { + UCHAR Link : 1; + UCHAR Flag : 1; + UCHAR Reserved : 4; + UCHAR VendorUnique : 2; + } Fields; + } Byte6; + } SPACE_TAPE_MARKS, *PSPACE_TAPE_MARKS; + + struct _READ_POSITION { + UCHAR Operation; + UCHAR BlockType : 1; + UCHAR Reserved1 : 4; + UCHAR Lun : 3; + UCHAR Reserved2[7]; + UCHAR Control; + } READ_POSITION, *PREAD_POSITION; + + struct _CDB6READWRITETAPE { + UCHAR OperationCode; + UCHAR VendorSpecific : 5; + UCHAR Reserved : 3; + UCHAR TransferLenMSB; + UCHAR TransferLen; + UCHAR TransferLenLSB; + UCHAR Link : 1; + UCHAR Flag : 1; + UCHAR Reserved1 : 4; + UCHAR VendorUnique : 2; + } CDB6READWRITETAPE, *PCDB6READWRITETAPE; + + struct _INIT_ELEMENT_STATUS { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNubmer : 3; + UCHAR Reserved2[3]; + UCHAR Reserved3 : 7; + UCHAR NoBarCode : 1; + } INIT_ELEMENT_STATUS, *PINIT_ELEMENT_STATUS; + + struct _INITIALIZE_ELEMENT_RANGE { + UCHAR OperationCode; + UCHAR Range : 1; + UCHAR Reserved1 : 4; + UCHAR LogicalUnitNubmer : 3; + UCHAR FirstElementAddress[2]; + UCHAR Reserved2[2]; + UCHAR NumberOfElements[2]; + UCHAR Reserved3; + UCHAR Reserved4 : 7; + UCHAR NoBarCode : 1; + } INITIALIZE_ELEMENT_RANGE, *PINITIALIZE_ELEMENT_RANGE; + + struct _POSITION_TO_ELEMENT { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR TransportElementAddress[2]; + UCHAR DestinationElementAddress[2]; + UCHAR Reserved2[2]; + UCHAR Flip : 1; + UCHAR Reserved3 : 7; + UCHAR Control; + } POSITION_TO_ELEMENT, *PPOSITION_TO_ELEMENT; + + struct _MOVE_MEDIUM { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR TransportElementAddress[2]; + UCHAR SourceElementAddress[2]; + UCHAR DestinationElementAddress[2]; + UCHAR Reserved2[2]; + UCHAR Flip : 1; + UCHAR Reserved3 : 7; + UCHAR Control; + } MOVE_MEDIUM, *PMOVE_MEDIUM; + + struct _EXCHANGE_MEDIUM { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR LogicalUnitNumber : 3; + UCHAR TransportElementAddress[2]; + UCHAR SourceElementAddress[2]; + UCHAR Destination1ElementAddress[2]; + UCHAR Destination2ElementAddress[2]; + UCHAR Flip1 : 1; + UCHAR Flip2 : 1; + UCHAR Reserved3 : 6; + UCHAR Control; + } EXCHANGE_MEDIUM, *PEXCHANGE_MEDIUM; + + struct _READ_ELEMENT_STATUS { + UCHAR OperationCode; + UCHAR ElementType : 4; + UCHAR VolTag : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR StartingElementAddress[2]; + UCHAR NumberOfElements[2]; + UCHAR Reserved1; + UCHAR AllocationLength[3]; + UCHAR Reserved2; + UCHAR Control; + } READ_ELEMENT_STATUS, *PREAD_ELEMENT_STATUS; + + struct _SEND_VOLUME_TAG { + UCHAR OperationCode; + UCHAR ElementType : 4; + UCHAR Reserved1 : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR StartingElementAddress[2]; + UCHAR Reserved2; + UCHAR ActionCode : 5; + UCHAR Reserved3 : 3; + UCHAR Reserved4[2]; + UCHAR ParameterListLength[2]; + UCHAR Reserved5; + UCHAR Control; + } SEND_VOLUME_TAG, *PSEND_VOLUME_TAG; + + struct _REQUEST_VOLUME_ELEMENT_ADDRESS { + UCHAR OperationCode; + UCHAR ElementType : 4; + UCHAR VolTag : 1; + UCHAR LogicalUnitNumber : 3; + UCHAR StartingElementAddress[2]; + UCHAR NumberElements[2]; + UCHAR Reserved1; + UCHAR AllocationLength[3]; + UCHAR Reserved2; + UCHAR Control; + } REQUEST_VOLUME_ELEMENT_ADDRESS, *PREQUEST_VOLUME_ELEMENT_ADDRESS; + + struct _LOAD_UNLOAD { + UCHAR OperationCode; + UCHAR Immediate : 1; + UCHAR Reserved1 : 4; + UCHAR Lun : 3; + UCHAR Reserved2[2]; + UCHAR Start : 1; + UCHAR LoadEject : 1; + UCHAR Reserved3: 6; + UCHAR Reserved4[3]; + UCHAR Slot; + UCHAR Reserved5[3]; + } LOAD_UNLOAD, *PLOAD_UNLOAD; + + struct _MECH_STATUS { + UCHAR OperationCode; + UCHAR Reserved : 5; + UCHAR Lun : 3; + UCHAR Reserved1[6]; + UCHAR AllocationLength[2]; + UCHAR Reserved2[1]; + UCHAR Control; + } MECH_STATUS, *PMECH_STATUS; + + struct _SYNCHRONIZE_CACHE10 { + + UCHAR OperationCode; + + UCHAR RelAddr : 1; + UCHAR Immediate : 1; + UCHAR Reserved : 3; + UCHAR Lun : 3; + + UCHAR LogicalBlockAddress[4]; + UCHAR Reserved2; + UCHAR BlockCount[2]; + UCHAR Control; + } SYNCHRONIZE_CACHE10, *PSYNCHRONIZE_CACHE10; + + struct _GET_EVENT_STATUS_NOTIFICATION { + UCHAR OperationCode; + + UCHAR Immediate : 1; + UCHAR Reserved : 4; + UCHAR Lun : 3; + + UCHAR Reserved2[2]; + UCHAR NotificationClassRequest; + UCHAR Reserved3[2]; + UCHAR EventListLength[2]; + + UCHAR Control; + } GET_EVENT_STATUS_NOTIFICATION, *PGET_EVENT_STATUS_NOTIFICATION; + + struct _READ_DVD_STRUCTURE { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR RMDBlockNumber[4]; + UCHAR LayerNumber; + UCHAR Format; + UCHAR AllocationLength[2]; + UCHAR Reserved3 : 6; + UCHAR AGID : 2; + UCHAR Control; + } READ_DVD_STRUCTURE, *PREAD_DVD_STRUCTURE; + + struct _SEND_DVD_STRUCTURE { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR Reserved2[5]; + UCHAR Format; + UCHAR ParameterListLength[2]; + UCHAR Reserved3; + UCHAR Control; + } SEND_DVD_STRUCTURE, *PSEND_DVD_STRUCTURE; + + struct _SEND_KEY { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR Reserved2[6]; + UCHAR ParameterListLength[2]; + UCHAR KeyFormat : 6; + UCHAR AGID : 2; + UCHAR Control; + } SEND_KEY, *PSEND_KEY; + + struct _REPORT_KEY { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR LogicalBlockAddress[4]; + UCHAR Reserved2[2]; + UCHAR AllocationLength[2]; + UCHAR KeyFormat : 6; + UCHAR AGID : 2; + UCHAR Control; + } REPORT_KEY, *PREPORT_KEY; + + struct _SET_READ_AHEAD { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR TriggerLBA[4]; + UCHAR ReadAheadLBA[4]; + UCHAR Reserved2; + UCHAR Control; + } SET_READ_AHEAD, *PSET_READ_AHEAD; + + struct _READ_FORMATTED_CAPACITIES { + UCHAR OperationCode; + UCHAR Reserved1 : 5; + UCHAR Lun : 3; + UCHAR Reserved2[5]; + UCHAR AllocationLength[2]; + UCHAR Control; + } READ_FORMATTED_CAPACITIES, *PREAD_FORMATTED_CAPACITIES; + + struct _REPORT_LUNS { + UCHAR OperationCode; + UCHAR Reserved1[5]; + UCHAR AllocationLength[4]; + UCHAR Reserved2[1]; + UCHAR Control; + } REPORT_LUNS, *PREPORT_LUNS; + + struct _PERSISTENT_RESERVE_IN { + UCHAR OperationCode; + UCHAR ServiceAction : 5; + UCHAR Reserved1 : 3; + UCHAR Reserved2[5]; + UCHAR AllocationLength[2]; + UCHAR Control; + } PERSISTENT_RESERVE_IN, *PPERSISTENT_RESERVE_IN; + + struct _PERSISTENT_RESERVE_OUT { + UCHAR OperationCode; + UCHAR ServiceAction : 5; + UCHAR Reserved1 : 3; + UCHAR Type : 4; + UCHAR Scope : 4; + UCHAR Reserved2[4]; + UCHAR ParameterListLength[2]; + UCHAR Control; + } PERSISTENT_RESERVE_OUT, *PPERSISTENT_RESERVE_OUT; + + struct _GET_CONFIGURATION { + UCHAR OperationCode; + UCHAR RequestType : 1; + UCHAR Reserved1 : 7; + UCHAR StartingFeature[2]; + UCHAR Reserved2[3]; + UCHAR AllocationLength[2]; + UCHAR Control; + } GET_CONFIGURATION, *PGET_CONFIGURATION; + + struct _SET_CD_SPEED { + UCHAR OperationCode; + UCHAR Reserved1; + UCHAR ReadSpeed[2]; + UCHAR WriteSpeed[2]; + UCHAR Reserved2[5]; + UCHAR Control; + } SET_CD_SPEED, *PSET_CD_SPEED; + + ULONG AsUlong[4]; + UCHAR AsByte[16]; +} CDB, *PCDB; + +#ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */ +#define _INQUIRYDATA_DEFINED + +#define INQUIRYDATABUFFERSIZE 36 + +typedef struct _INQUIRYDATA { + UCHAR DeviceType : 5; + UCHAR DeviceTypeQualifier : 3; + UCHAR DeviceTypeModifier : 7; + UCHAR RemovableMedia : 1; + _ANONYMOUS_UNION union { + UCHAR Versions; + _ANONYMOUS_STRUCT struct { + UCHAR ANSIVersion : 3; + UCHAR ECMAVersion : 3; + UCHAR ISOVersion : 2; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + UCHAR ResponseDataFormat : 4; + UCHAR HiSupport : 1; + UCHAR NormACA : 1; + UCHAR TerminateTask : 1; + UCHAR AERC : 1; + UCHAR AdditionalLength; + UCHAR Reserved; + UCHAR Addr16 : 1; + UCHAR Addr32 : 1; + UCHAR AckReqQ: 1; + UCHAR MediumChanger : 1; + UCHAR MultiPort : 1; + UCHAR ReservedBit2 : 1; + UCHAR EnclosureServices : 1; + UCHAR ReservedBit3 : 1; + UCHAR SoftReset : 1; + UCHAR CommandQueue : 1; + UCHAR TransferDisable : 1; + UCHAR LinkedCommands : 1; + UCHAR Synchronous : 1; + UCHAR Wide16Bit : 1; + UCHAR Wide32Bit : 1; + UCHAR RelativeAddressing : 1; + UCHAR VendorId[8]; + UCHAR ProductId[16]; + UCHAR ProductRevisionLevel[4]; + UCHAR VendorSpecific[20]; + UCHAR Reserved3[40]; +} INQUIRYDATA, *PINQUIRYDATA; +#endif + +/* INQUIRYDATA.DeviceType constants */ +#define DIRECT_ACCESS_DEVICE 0x00 +#define SEQUENTIAL_ACCESS_DEVICE 0x01 +#define PRINTER_DEVICE 0x02 +#define PROCESSOR_DEVICE 0x03 +#define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04 +#define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05 +#define SCANNER_DEVICE 0x06 +#define OPTICAL_DEVICE 0x07 +#define MEDIUM_CHANGER 0x08 +#define COMMUNICATION_DEVICE 0x09 +#define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F +#define DEVICE_QUALIFIER_NOT_SUPPORTED 0x03 + +/* INQUIRYDATA.DeviceTypeQualifier constants */ +#define DEVICE_CONNECTED 0x00 + +#define SCSISTAT_GOOD 0x00 +#define SCSISTAT_CHECK_CONDITION 0x02 +#define SCSISTAT_CONDITION_MET 0x04 +#define SCSISTAT_BUSY 0x08 +#define SCSISTAT_INTERMEDIATE 0x10 +#define SCSISTAT_INTERMEDIATE_COND_MET 0x14 +#define SCSISTAT_RESERVATION_CONFLICT 0x18 +#define SCSISTAT_COMMAND_TERMINATED 0x22 +#define SCSISTAT_QUEUE_FULL 0x28 + +/* Mode Sense/Select page constants */ +#define MODE_PAGE_ERROR_RECOVERY 0x01 +#define MODE_PAGE_DISCONNECT 0x02 +#define MODE_PAGE_FORMAT_DEVICE 0x03 +#define MODE_PAGE_RIGID_GEOMETRY 0x04 +#define MODE_PAGE_FLEXIBILE 0x05 +#define MODE_PAGE_WRITE_PARAMETERS 0x05 +#define MODE_PAGE_VERIFY_ERROR 0x07 +#define MODE_PAGE_CACHING 0x08 +#define MODE_PAGE_PERIPHERAL 0x09 +#define MODE_PAGE_CONTROL 0x0A +#define MODE_PAGE_MEDIUM_TYPES 0x0B +#define MODE_PAGE_NOTCH_PARTITION 0x0C +#define MODE_PAGE_CD_AUDIO_CONTROL 0x0E +#define MODE_PAGE_DATA_COMPRESS 0x0F +#define MODE_PAGE_DEVICE_CONFIG 0x10 +#define MODE_PAGE_MEDIUM_PARTITION 0x11 +#define MODE_PAGE_CDVD_FEATURE_SET 0x18 +#define MODE_PAGE_POWER_CONDITION 0x1A +#define MODE_PAGE_FAULT_REPORTING 0x1C +#define MODE_PAGE_CDVD_INACTIVITY 0x1D +#define MODE_PAGE_ELEMENT_ADDRESS 0x1D +#define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E +#define MODE_PAGE_DEVICE_CAPABILITIES 0x1F +#define MODE_PAGE_CAPABILITIES 0x2A +#define MODE_SENSE_RETURN_ALL 0x3f +#define MODE_SENSE_CURRENT_VALUES 0x00 +#define MODE_SENSE_CHANGEABLE_VALUES 0x40 +#define MODE_SENSE_DEFAULT_VAULES 0x80 +#define MODE_SENSE_SAVED_VALUES 0xc0 + +/* SCSI CDB operation codes */ +#define SCSIOP_TEST_UNIT_READY 0x00 +#define SCSIOP_REZERO_UNIT 0x01 +#define SCSIOP_REWIND 0x01 +#define SCSIOP_REQUEST_BLOCK_ADDR 0x02 +#define SCSIOP_REQUEST_SENSE 0x03 +#define SCSIOP_FORMAT_UNIT 0x04 +#define SCSIOP_READ_BLOCK_LIMITS 0x05 +#define SCSIOP_REASSIGN_BLOCKS 0x07 +#define SCSIOP_INIT_ELEMENT_STATUS 0x07 +#define SCSIOP_READ6 0x08 +#define SCSIOP_RECEIVE 0x08 +#define SCSIOP_WRITE6 0x0A +#define SCSIOP_PRINT 0x0A +#define SCSIOP_SEND 0x0A +#define SCSIOP_SEEK6 0x0B +#define SCSIOP_TRACK_SELECT 0x0B +#define SCSIOP_SLEW_PRINT 0x0B +#define SCSIOP_SEEK_BLOCK 0x0C +#define SCSIOP_PARTITION 0x0D +#define SCSIOP_READ_REVERSE 0x0F +#define SCSIOP_WRITE_FILEMARKS 0x10 +#define SCSIOP_FLUSH_BUFFER 0x10 +#define SCSIOP_SPACE 0x11 +#define SCSIOP_INQUIRY 0x12 +#define SCSIOP_VERIFY6 0x13 +#define SCSIOP_RECOVER_BUF_DATA 0x14 +#define SCSIOP_MODE_SELECT 0x15 +#define SCSIOP_RESERVE_UNIT 0x16 +#define SCSIOP_RELEASE_UNIT 0x17 +#define SCSIOP_COPY 0x18 +#define SCSIOP_ERASE 0x19 +#define SCSIOP_MODE_SENSE 0x1A +#define SCSIOP_START_STOP_UNIT 0x1B +#define SCSIOP_STOP_PRINT 0x1B +#define SCSIOP_LOAD_UNLOAD 0x1B +#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C +#define SCSIOP_SEND_DIAGNOSTIC 0x1D +#define SCSIOP_MEDIUM_REMOVAL 0x1E + +#define SCSIOP_READ_FORMATTED_CAPACITY 0x23 +#define SCSIOP_READ_CAPACITY 0x25 +#define SCSIOP_READ 0x28 +#define SCSIOP_WRITE 0x2A +#define SCSIOP_SEEK 0x2B +#define SCSIOP_LOCATE 0x2B +#define SCSIOP_POSITION_TO_ELEMENT 0x2B +#define SCSIOP_WRITE_VERIFY 0x2E +#define SCSIOP_VERIFY 0x2F +#define SCSIOP_SEARCH_DATA_HIGH 0x30 +#define SCSIOP_SEARCH_DATA_EQUAL 0x31 +#define SCSIOP_SEARCH_DATA_LOW 0x32 +#define SCSIOP_SET_LIMITS 0x33 +#define SCSIOP_READ_POSITION 0x34 +#define SCSIOP_SYNCHRONIZE_CACHE 0x35 +#define SCSIOP_COMPARE 0x39 +#define SCSIOP_COPY_COMPARE 0x3A +#define SCSIOP_WRITE_DATA_BUFF 0x3B +#define SCSIOP_READ_DATA_BUFF 0x3C +#define SCSIOP_CHANGE_DEFINITION 0x40 +#define SCSIOP_READ_SUB_CHANNEL 0x42 +#define SCSIOP_READ_TOC 0x43 +#define SCSIOP_READ_HEADER 0x44 +#define SCSIOP_PLAY_AUDIO 0x45 +#define SCSIOP_GET_CONFIGURATION 0x46 +#define SCSIOP_PLAY_AUDIO_MSF 0x47 +#define SCSIOP_PLAY_TRACK_INDEX 0x48 +#define SCSIOP_PLAY_TRACK_RELATIVE 0x49 +#define SCSIOP_GET_EVENT_STATUS 0x4A +#define SCSIOP_PAUSE_RESUME 0x4B +#define SCSIOP_LOG_SELECT 0x4C +#define SCSIOP_LOG_SENSE 0x4D +#define SCSIOP_STOP_PLAY_SCAN 0x4E +#define SCSIOP_READ_DISK_INFORMATION 0x51 +#define SCSIOP_READ_TRACK_INFORMATION 0x52 +#define SCSIOP_RESERVE_TRACK_RZONE 0x53 +#define SCSIOP_SEND_OPC_INFORMATION 0x54 +#define SCSIOP_MODE_SELECT10 0x55 +#define SCSIOP_MODE_SENSE10 0x5A +#define SCSIOP_CLOSE_TRACK_SESSION 0x5B +#define SCSIOP_READ_BUFFER_CAPACITY 0x5C +#define SCSIOP_SEND_CUE_SHEET 0x5D +#define SCSIOP_PERSISTENT_RESERVE_IN 0x5E +#define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F + +#define SCSIOP_REPORT_LUNS 0xA0 +#define SCSIOP_BLANK 0xA1 +#define SCSIOP_SEND_KEY 0xA3 +#define SCSIOP_REPORT_KEY 0xA4 +#define SCSIOP_MOVE_MEDIUM 0xA5 +#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6 +#define SCSIOP_EXCHANGE_MEDIUM 0xA6 +#define SCSIOP_SET_READ_AHEAD 0xA7 +#define SCSIOP_READ_DVD_STRUCTURE 0xAD +#define SCSIOP_REQUEST_VOL_ELEMENT 0xB5 +#define SCSIOP_SEND_VOLUME_TAG 0xB6 +#define SCSIOP_READ_ELEMENT_STATUS 0xB8 +#define SCSIOP_READ_CD_MSF 0xB9 +#define SCSIOP_SCAN_CD 0xBA +#define SCSIOP_SET_CD_SPEED 0xBB +#define SCSIOP_PLAY_CD 0xBC +#define SCSIOP_MECHANISM_STATUS 0xBD +#define SCSIOP_READ_CD 0xBE +#define SCSIOP_SEND_DVD_STRUCTURE 0xBF +#define SCSIOP_INIT_ELEMENT_RANGE 0xE7 + +#define SCSIOP_DENON_EJECT_DISC 0xE6 +#define SCSIOP_DENON_STOP_AUDIO 0xE7 +#define SCSIOP_DENON_PLAY_AUDIO 0xE8 +#define SCSIOP_DENON_READ_TOC 0xE9 +#define SCSIOP_DENON_READ_SUBCODE 0xEB + +#define SCSIMESS_MODIFY_DATA_POINTER 0x00 +#define SCSIMESS_SYNCHRONOUS_DATA_REQ 0x01 +#define SCSIMESS_WIDE_DATA_REQUEST 0x03 + +#define SCSIMESS_MODIFY_DATA_LENGTH 5 +#define SCSIMESS_SYNCH_DATA_LENGTH 3 +#define SCSIMESS_WIDE_DATA_LENGTH 2 + +#define SCSIMESS_ABORT 0x06 +#define SCSIMESS_ABORT_WITH_TAG 0x0D +#define SCSIMESS_BUS_DEVICE_RESET 0x0C +#define SCSIMESS_CLEAR_QUEUE 0x0E +#define SCSIMESS_COMMAND_COMPLETE 0x00 +#define SCSIMESS_DISCONNECT 0x04 +#define SCSIMESS_EXTENDED_MESSAGE 0x01 +#define SCSIMESS_IDENTIFY 0x80 +#define SCSIMESS_IDENTIFY_WITH_DISCON 0xC0 +#define SCSIMESS_IGNORE_WIDE_RESIDUE 0x23 +#define SCSIMESS_INITIATE_RECOVERY 0x0F +#define SCSIMESS_INIT_DETECTED_ERROR 0x05 +#define SCSIMESS_LINK_CMD_COMP 0x0A +#define SCSIMESS_LINK_CMD_COMP_W_FLAG 0x0B +#define SCSIMESS_MESS_PARITY_ERROR 0x09 +#define SCSIMESS_MESSAGE_REJECT 0x07 +#define SCSIMESS_NO_OPERATION 0x08 +#define SCSIMESS_HEAD_OF_QUEUE_TAG 0x21 +#define SCSIMESS_ORDERED_QUEUE_TAG 0x22 +#define SCSIMESS_SIMPLE_QUEUE_TAG 0x20 +#define SCSIMESS_RELEASE_RECOVERY 0x10 +#define SCSIMESS_RESTORE_POINTERS 0x03 +#define SCSIMESS_SAVE_DATA_POINTER 0x02 +#define SCSIMESS_TERMINATE_IO_PROCESS 0x11 + +#define CDB_FORCE_MEDIA_ACCESS 0x08 + +#define CDB_RETURN_ON_COMPLETION 0 +#define CDB_RETURN_IMMEDIATE 1 + +#define CDB_INQUIRY_EVPD 0x01 + +#define LUN0_FORMAT_SAVING_DEFECT_LIST 0 +#define USE_DEFAULTMSB 0 +#define USE_DEFAULTLSB 0 + +#define START_UNIT_CODE 0x01 +#define STOP_UNIT_CODE 0x00 + +typedef struct _SENSE_DATA { + UCHAR ErrorCode : 7; + UCHAR Valid : 1; + UCHAR SegmentNumber; + UCHAR SenseKey : 4; + UCHAR Reserved : 1; + UCHAR IncorrectLength : 1; + UCHAR EndOfMedia : 1; + UCHAR FileMark : 1; + UCHAR Information[4]; + UCHAR AdditionalSenseLength; + UCHAR CommandSpecificInformation[4]; + UCHAR AdditionalSenseCode; + UCHAR AdditionalSenseCodeQualifier; + UCHAR FieldReplaceableUnitCode; + UCHAR SenseKeySpecific[3]; +} SENSE_DATA, *PSENSE_DATA; + +#define SENSE_BUFFER_SIZE 18 + +/* Sense codes */ +#define SCSI_SENSE_NO_SENSE 0x00 +#define SCSI_SENSE_RECOVERED_ERROR 0x01 +#define SCSI_SENSE_NOT_READY 0x02 +#define SCSI_SENSE_MEDIUM_ERROR 0x03 +#define SCSI_SENSE_HARDWARE_ERROR 0x04 +#define SCSI_SENSE_ILLEGAL_REQUEST 0x05 +#define SCSI_SENSE_UNIT_ATTENTION 0x06 +#define SCSI_SENSE_DATA_PROTECT 0x07 +#define SCSI_SENSE_BLANK_CHECK 0x08 +#define SCSI_SENSE_UNIQUE 0x09 +#define SCSI_SENSE_COPY_ABORTED 0x0A +#define SCSI_SENSE_ABORTED_COMMAND 0x0B +#define SCSI_SENSE_EQUAL 0x0C +#define SCSI_SENSE_VOL_OVERFLOW 0x0D +#define SCSI_SENSE_MISCOMPARE 0x0E +#define SCSI_SENSE_RESERVED 0x0F + +/* Additional tape bit */ +#define SCSI_ILLEGAL_LENGTH 0x20 +#define SCSI_EOM 0x40 +#define SCSI_FILE_MARK 0x80 + +/* Additional Sense codes */ +#define SCSI_ADSENSE_NO_SENSE 0x00 +#define SCSI_ADSENSE_NO_SEEK_COMPLETE 0x02 +#define SCSI_ADSENSE_LUN_NOT_READY 0x04 +#define SCSI_ADSENSE_WRITE_ERROR 0x0C +#define SCSI_ADSENSE_TRACK_ERROR 0x14 +#define SCSI_ADSENSE_SEEK_ERROR 0x15 +#define SCSI_ADSENSE_REC_DATA_NOECC 0x17 +#define SCSI_ADSENSE_REC_DATA_ECC 0x18 +#define SCSI_ADSENSE_ILLEGAL_COMMAND 0x20 +#define SCSI_ADSENSE_ILLEGAL_BLOCK 0x21 +#define SCSI_ADSENSE_INVALID_CDB 0x24 +#define SCSI_ADSENSE_INVALID_LUN 0x25 +#define SCSI_ADSENSE_WRITE_PROTECT 0x27 +#define SCSI_ADSENSE_MEDIUM_CHANGED 0x28 +#define SCSI_ADSENSE_BUS_RESET 0x29 +#define SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION 0x2E +#define SCSI_ADSENSE_INVALID_MEDIA 0x30 +#define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE 0x3a +#define SCSI_ADSENSE_POSITION_ERROR 0x3b +#define SCSI_ADSENSE_OPERATOR_REQUEST 0x5a +#define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x5d +#define SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK 0x64 +#define SCSI_ADSENSE_COPY_PROTECTION_FAILURE 0x6f +#define SCSI_ADSENSE_POWER_CALIBRATION_ERROR 0x73 +#define SCSI_ADSENSE_VENDOR_UNIQUE 0x80 +#define SCSI_ADSENSE_MUSIC_AREA 0xA0 +#define SCSI_ADSENSE_DATA_AREA 0xA1 +#define SCSI_ADSENSE_VOLUME_OVERFLOW 0xA7 + +#define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE 0x00 +#define SCSI_SENSEQ_BECOMING_READY 0x01 +#define SCSI_SENSEQ_INIT_COMMAND_REQUIRED 0x02 +#define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED 0x03 +#define SCSI_SENSEQ_FORMAT_IN_PROGRESS 0x04 +#define SCSI_SENSEQ_REBUILD_IN_PROGRESS 0x05 +#define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS 0x06 +#define SCSI_SENSEQ_OPERATION_IN_PROGRESS 0x07 +#define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS 0x08 +#define SCSI_SENSEQ_LOSS_OF_STREAMING 0x09 +#define SCSI_SENSEQ_PADDING_BLOCKS_ADDED 0x0A + + +#define FILE_DEVICE_SCSI 0x0000001b + +#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011) +#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012) +#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013) + +/* SMART support in ATAPI */ +#define IOCTL_SCSI_MINIPORT_SMART_VERSION ((FILE_DEVICE_SCSI << 16) + 0x0500) +#define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501) +#define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS ((FILE_DEVICE_SCSI << 16) + 0x0502) +#define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS ((FILE_DEVICE_SCSI << 16) + 0x0503) +#define IOCTL_SCSI_MINIPORT_ENABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0504) +#define IOCTL_SCSI_MINIPORT_DISABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0505) +#define IOCTL_SCSI_MINIPORT_RETURN_STATUS ((FILE_DEVICE_SCSI << 16) + 0x0506) +#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE ((FILE_DEVICE_SCSI << 16) + 0x0507) +#define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES ((FILE_DEVICE_SCSI << 16) + 0x0508) +#define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS ((FILE_DEVICE_SCSI << 16) + 0x0509) +#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE ((FILE_DEVICE_SCSI << 16) + 0x050a) +#define IOCTL_SCSI_MINIPORT_READ_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050b) +#define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050c) + +/* CLUSTER support */ +#define IOCTL_SCSI_MINIPORT_NOT_QUORUM_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0520) +#define IOCTL_SCSI_MINIPORT_NOT_CLUSTER_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0521) + +/* Read Capacity Data. Returned in Big Endian format */ +typedef struct _READ_CAPACITY_DATA { + ULONG LogicalBlockAddress; + ULONG BytesPerBlock; +} READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA; + +/* Read Block Limits Data. Returned in Big Endian format */ +typedef struct _READ_BLOCK_LIMITS { + UCHAR Reserved; + UCHAR BlockMaximumSize[3]; + UCHAR BlockMinimumSize[2]; +} READ_BLOCK_LIMITS_DATA, *PREAD_BLOCK_LIMITS_DATA; + + +typedef struct _MODE_PARAMETER_HEADER { + UCHAR ModeDataLength; + UCHAR MediumType; + UCHAR DeviceSpecificParameter; + UCHAR BlockDescriptorLength; +}MODE_PARAMETER_HEADER, *PMODE_PARAMETER_HEADER; + +typedef struct _MODE_PARAMETER_HEADER10 { + UCHAR ModeDataLength[2]; + UCHAR MediumType; + UCHAR DeviceSpecificParameter; + UCHAR Reserved[2]; + UCHAR BlockDescriptorLength[2]; +} MODE_PARAMETER_HEADER10, *PMODE_PARAMETER_HEADER10; + +#define MODE_FD_SINGLE_SIDE 0x01 +#define MODE_FD_DOUBLE_SIDE 0x02 +#define MODE_FD_MAXIMUM_TYPE 0x1E +#define MODE_DSP_FUA_SUPPORTED 0x10 +#define MODE_DSP_WRITE_PROTECT 0x80 + +typedef struct _MODE_PARAMETER_BLOCK { + UCHAR DensityCode; + UCHAR NumberOfBlocks[3]; + UCHAR Reserved; + UCHAR BlockLength[3]; +} MODE_PARAMETER_BLOCK, *PMODE_PARAMETER_BLOCK; + +typedef struct _MODE_DISCONNECT_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved : 1; + UCHAR PageSavable : 1; + UCHAR PageLength; + UCHAR BufferFullRatio; + UCHAR BufferEmptyRatio; + UCHAR BusInactivityLimit[2]; + UCHAR BusDisconnectTime[2]; + UCHAR BusConnectTime[2]; + UCHAR MaximumBurstSize[2]; + UCHAR DataTransferDisconnect : 2; + UCHAR Reserved2[3]; +}MODE_DISCONNECT_PAGE, *PMODE_DISCONNECT_PAGE; + +typedef struct _MODE_CACHING_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved : 1; + UCHAR PageSavable : 1; + UCHAR PageLength; + UCHAR ReadDisableCache : 1; + UCHAR MultiplicationFactor : 1; + UCHAR WriteCacheEnable : 1; + UCHAR Reserved2 : 5; + UCHAR WriteRetensionPriority : 4; + UCHAR ReadRetensionPriority : 4; + UCHAR DisablePrefetchTransfer[2]; + UCHAR MinimumPrefetch[2]; + UCHAR MaximumPrefetch[2]; + UCHAR MaximumPrefetchCeiling[2]; +}MODE_CACHING_PAGE, *PMODE_CACHING_PAGE; + +typedef struct _MODE_CDROM_WRITE_PARAMETERS_PAGE { + UCHAR PageLength; + UCHAR WriteType : 4; + UCHAR TestWrite : 1; + UCHAR LinkSizeValid : 1; + UCHAR BufferUnderrunFreeEnabled : 1; + UCHAR Reserved2 : 1; + UCHAR TrackMode : 4; + UCHAR Copy : 1; + UCHAR FixedPacket : 1; + UCHAR MultiSession : 2; + UCHAR DataBlockType : 4; + UCHAR Reserved3 : 4; + UCHAR LinkSize; + UCHAR Reserved4; + UCHAR HostApplicationCode : 6; + UCHAR Reserved5 : 2; + UCHAR SessionFormat; + UCHAR Reserved6; + UCHAR PacketSize[4]; + UCHAR AudioPauseLength[2]; + UCHAR Reserved7 : 7; + UCHAR MediaCatalogNumberValid : 1; + UCHAR MediaCatalogNumber[13]; + UCHAR MediaCatalogNumberZero; + UCHAR MediaCatalogNumberAFrame; + UCHAR Reserved8 : 7; + UCHAR ISRCValid : 1; + UCHAR ISRCCountry[2]; + UCHAR ISRCOwner[3]; + UCHAR ISRCRecordingYear[2]; + UCHAR ISRCSerialNumber[5]; + UCHAR ISRCZero; + UCHAR ISRCAFrame; + UCHAR ISRCReserved; + UCHAR SubHeaderData[4]; +} MODE_CDROM_WRITE_PARAMETERS_PAGE, *PMODE_CDROM_WRITE_PARAMETERS_PAGE; + +typedef struct _MODE_FLEXIBLE_DISK_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved : 1; + UCHAR PageSavable : 1; + UCHAR PageLength; + UCHAR TransferRate[2]; + UCHAR NumberOfHeads; + UCHAR SectorsPerTrack; + UCHAR BytesPerSector[2]; + UCHAR NumberOfCylinders[2]; + UCHAR StartWritePrecom[2]; + UCHAR StartReducedCurrent[2]; + UCHAR StepRate[2]; + UCHAR StepPluseWidth; + UCHAR HeadSettleDelay[2]; + UCHAR MotorOnDelay; + UCHAR MotorOffDelay; + UCHAR Reserved2 : 5; + UCHAR MotorOnAsserted : 1; + UCHAR StartSectorNumber : 1; + UCHAR TrueReadySignal : 1; + UCHAR StepPlusePerCyclynder : 4; + UCHAR Reserved3 : 4; + UCHAR WriteCompenstation; + UCHAR HeadLoadDelay; + UCHAR HeadUnloadDelay; + UCHAR Pin2Usage : 4; + UCHAR Pin34Usage : 4; + UCHAR Pin1Usage : 4; + UCHAR Pin4Usage : 4; + UCHAR MediumRotationRate[2]; + UCHAR Reserved4[2]; +} MODE_FLEXIBLE_DISK_PAGE, *PMODE_FLEXIBLE_DISK_PAGE; + +typedef struct _MODE_FORMAT_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved : 1; + UCHAR PageSavable : 1; + UCHAR PageLength; + UCHAR TracksPerZone[2]; + UCHAR AlternateSectorsPerZone[2]; + UCHAR AlternateTracksPerZone[2]; + UCHAR AlternateTracksPerLogicalUnit[2]; + UCHAR SectorsPerTrack[2]; + UCHAR BytesPerPhysicalSector[2]; + UCHAR Interleave[2]; + UCHAR TrackSkewFactor[2]; + UCHAR CylinderSkewFactor[2]; + UCHAR Reserved2 : 4; + UCHAR SurfaceFirst : 1; + UCHAR RemovableMedia : 1; + UCHAR HardSectorFormating : 1; + UCHAR SoftSectorFormating : 1; + UCHAR Reserved3[3]; +} MODE_FORMAT_PAGE, *PMODE_FORMAT_PAGE; + +typedef struct _MODE_RIGID_GEOMETRY_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved : 1; + UCHAR PageSavable : 1; + UCHAR PageLength; + UCHAR NumberOfCylinders[3]; + UCHAR NumberOfHeads; + UCHAR StartWritePrecom[3]; + UCHAR StartReducedCurrent[3]; + UCHAR DriveStepRate[2]; + UCHAR LandZoneCyclinder[3]; + UCHAR RotationalPositionLock : 2; + UCHAR Reserved2 : 6; + UCHAR RotationOffset; + UCHAR Reserved3; + UCHAR RoataionRate[2]; + UCHAR Reserved4[2]; +} MODE_RIGID_GEOMETRY_PAGE, *PMODE_RIGID_GEOMETRY_PAGE; + +typedef struct _MODE_READ_WRITE_RECOVERY_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved1 : 1; + UCHAR PSBit : 1; + UCHAR PageLength; + UCHAR DCRBit : 1; + UCHAR DTEBit : 1; + UCHAR PERBit : 1; + UCHAR EERBit : 1; + UCHAR RCBit : 1; + UCHAR TBBit : 1; + UCHAR ARRE : 1; + UCHAR AWRE : 1; + UCHAR ReadRetryCount; + UCHAR Reserved4[4]; + UCHAR WriteRetryCount; + UCHAR Reserved5[3]; +} MODE_READ_WRITE_RECOVERY_PAGE, *PMODE_READ_WRITE_RECOVERY_PAGE; + +typedef struct _MODE_READ_RECOVERY_PAGE { + UCHAR PageCode : 6; + UCHAR Reserved1 : 1; + UCHAR PSBit : 1; + UCHAR PageLength; + UCHAR DCRBit : 1; + UCHAR DTEBit : 1; + UCHAR PERBit : 1; + UCHAR Reserved2 : 1; + UCHAR RCBit : 1; + UCHAR TBBit : 1; + UCHAR Reserved3 : 2; + UCHAR ReadRetryCount; + UCHAR Reserved4[4]; +} MODE_READ_RECOVERY_PAGE, *PMODE_READ_RECOVERY_PAGE; + +typedef struct _MODE_INFO_EXCEPTIONS { + UCHAR PageCode : 6; + UCHAR Reserved1 : 1; + UCHAR PSBit : 1; + UCHAR PageLength; + _ANONYMOUS_UNION union { + UCHAR Flags; + _ANONYMOUS_STRUCT struct { + UCHAR LogErr : 1; + UCHAR Reserved2 : 1; + UCHAR Test : 1; + UCHAR Dexcpt : 1; + UCHAR Reserved3 : 3; + UCHAR Perf : 1; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + UCHAR ReportMethod : 4; + UCHAR Reserved4 : 4; + UCHAR IntervalTimer[4]; + UCHAR ReportCount[4]; +} MODE_INFO_EXCEPTIONS, *PMODE_INFO_EXCEPTIONS; + +/* CDROM audio control */ +#define CDB_AUDIO_PAUSE 0x00 +#define CDB_AUDIO_RESUME 0x01 +#define CDB_DEVICE_START 0x11 +#define CDB_DEVICE_STOP 0x10 +#define CDB_EJECT_MEDIA 0x10 +#define CDB_LOAD_MEDIA 0x01 +#define CDB_SUBCHANNEL_HEADER 0x00 +#define CDB_SUBCHANNEL_BLOCK 0x01 + +#define CDROM_AUDIO_CONTROL_PAGE 0x0E +#define MODE_SELECT_IMMEDIATE 0x04 +#define MODE_SELECT_PFBIT 0x10 + +#define CDB_USE_MSF 0x01 + +typedef struct _PORT_OUTPUT { + UCHAR ChannelSelection; + UCHAR Volume; +} PORT_OUTPUT, *PPORT_OUTPUT; + +typedef struct _AUDIO_OUTPUT { + UCHAR CodePage; + UCHAR ParameterLength; + UCHAR Immediate; + UCHAR Reserved[2]; + UCHAR LbaFormat; + UCHAR LogicalBlocksPerSecond[2]; + PORT_OUTPUT PortOutput[4]; +} AUDIO_OUTPUT, *PAUDIO_OUTPUT; + +/* Multisession CDROMs */ +#define GET_LAST_SESSION 0x01 +#define GET_SESSION_DATA 0x02; + +/* Atapi 2.5 changers */ +typedef struct _MECHANICAL_STATUS_INFORMATION_HEADER { + UCHAR CurrentSlot : 5; + UCHAR ChangerState : 2; + UCHAR Fault : 1; + UCHAR Reserved : 5; + UCHAR MechanismState : 3; + UCHAR CurrentLogicalBlockAddress[3]; + UCHAR NumberAvailableSlots; + UCHAR SlotTableLength[2]; +} MECHANICAL_STATUS_INFORMATION_HEADER, *PMECHANICAL_STATUS_INFORMATION_HEADER; + +typedef struct _SLOT_TABLE_INFORMATION { + UCHAR DiscChanged : 1; + UCHAR Reserved : 6; + UCHAR DiscPresent : 1; + UCHAR Reserved2[3]; +} SLOT_TABLE_INFORMATION, *PSLOT_TABLE_INFORMATION; + +typedef struct _MECHANICAL_STATUS { + MECHANICAL_STATUS_INFORMATION_HEADER MechanicalStatusHeader; + SLOT_TABLE_INFORMATION SlotTableInfo[1]; +} MECHANICAL_STATUS, *PMECHANICAL_STATUS; + + +/* Tape definitions */ +typedef struct _TAPE_POSITION_DATA { + UCHAR Reserved1 : 2; + UCHAR BlockPositionUnsupported : 1; + UCHAR Reserved2 : 3; + UCHAR EndOfPartition : 1; + UCHAR BeginningOfPartition : 1; + UCHAR PartitionNumber; + USHORT Reserved3; + UCHAR FirstBlock[4]; + UCHAR LastBlock[4]; + UCHAR Reserved4; + UCHAR NumberOfBlocks[3]; + UCHAR NumberOfBytes[4]; +} TAPE_POSITION_DATA, *PTAPE_POSITION_DATA; + +/* This structure is used to convert little endian ULONGs + to SCSI CDB big endians values. */ +typedef union _EIGHT_BYTE { + _ANONYMOUS_STRUCT struct { + UCHAR Byte0; + UCHAR Byte1; + UCHAR Byte2; + UCHAR Byte3; + UCHAR Byte4; + UCHAR Byte5; + UCHAR Byte6; + UCHAR Byte7; + } DUMMYSTRUCTNAME; + ULONGLONG AsULongLong; +} EIGHT_BYTE, *PEIGHT_BYTE; + +typedef union _FOUR_BYTE { + _ANONYMOUS_STRUCT struct { + UCHAR Byte0; + UCHAR Byte1; + UCHAR Byte2; + UCHAR Byte3; + } DUMMYSTRUCTNAME; + ULONG AsULong; +} FOUR_BYTE, *PFOUR_BYTE; + +typedef union _TWO_BYTE { + _ANONYMOUS_STRUCT struct { + UCHAR Byte0; + UCHAR Byte1; + } DUMMYSTRUCTNAME; + USHORT AsUShort; +} TWO_BYTE, *PTWO_BYTE; + +/* Byte reversing macro for converting between + big- and little-endian formats */ +#define REVERSE_BYTES_QUAD(Destination, Source) { \ + PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \ + PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \ + _val1->Byte7 = _val2->Byte0; \ + _val1->Byte6 = _val2->Byte1; \ + _val1->Byte5 = _val2->Byte2; \ + _val1->Byte4 = _val2->Byte3; \ + _val1->Byte3 = _val2->Byte4; \ + _val1->Byte2 = _val2->Byte5; \ + _val1->Byte1 = _val2->Byte6; \ + _val1->Byte0 = _val2->Byte7; \ +} + +#define REVERSE_BYTES(Destination, Source) { \ + PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \ + PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \ + _val1->Byte3 = _val2->Byte0; \ + _val1->Byte2 = _val2->Byte1; \ + _val1->Byte1 = _val2->Byte2; \ + _val1->Byte0 = _val2->Byte3; \ +} + +#define REVERSE_BYTES_SHORT(Destination, Source) { \ + PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \ + PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \ + _val1->Byte1 = _val2->Byte0; \ + _val1->Byte0 = _val2->Byte1; \ +} + +#define REVERSE_SHORT(Short) { \ + UCHAR _val; \ + PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \ + _val = _val2->Byte0; \ + _val2->Byte0 = _val2->Byte1; \ + _val2->Byte1 = _val; \ +} + +#define REVERSE_LONG(Long) { \ + UCHAR _val; \ + PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \ + _val = _val2->Byte3; \ + _val2->Byte3 = _val2->Byte0; \ + _val2->Byte0 = _val; \ + _val = _val2->Byte2; \ + _val2->Byte2 = _val2->Byte1; \ + _val2->Byte1 = _val; \ +} + +#define WHICH_BIT(Data, Bit) { \ + UCHAR _val; \ + for (_val = 0; _val < 32; _val++) { \ + if (((Data) >> _val) == 1) { \ + break; \ + } \ + } \ + assert(_val != 32); \ + (Bit) = _val; \ +} + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __SCSI_H */ diff --git a/reactos/w32api/include/ddk/scsiscan.h b/reactos/w32api/include/ddk/scsiscan.h new file mode 100644 index 00000000000..8d32ad34209 --- /dev/null +++ b/reactos/w32api/include/ddk/scsiscan.h @@ -0,0 +1,135 @@ +/* + * scsiscan.h + * + * SCSI scanner driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __SCSISCAN_H +#define __SCSISCAN_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define IOCTL_SCSISCAN_CMD \ + CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_CMD_CODE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_SCSISCAN_LOCKDEVICE \ + CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_LOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_SCSISCAN_SET_TIMEOUT \ + CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_SET_TIMEOUT, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_SCSISCAN_GET_INFO \ + CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_GET_INFO, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + +#define IOCTL_SCSISCAN_UNLOCKDEVICE \ + CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_UNLOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS) + + +/* SCSISCAN_CMD.SrbFlags constants */ +#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008 +#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020 +#define SRB_FLAGS_DATA_IN 0x00000040 +#define SRB_FLAGS_DATA_OUT 0x00000080 +#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000 + +/* SCSISCAN_CMD.pSrbStatus constants */ +#define SRB_STATUS_PENDING 0x00 +#define SRB_STATUS_SUCCESS 0x01 +#define SRB_STATUS_ABORTED 0x02 +#define SRB_STATUS_ABORT_FAILED 0x03 +#define SRB_STATUS_ERROR 0x04 +#define SRB_STATUS_BUSY 0x05 +#define SRB_STATUS_INVALID_REQUEST 0x06 +#define SRB_STATUS_INVALID_PATH_ID 0x07 +#define SRB_STATUS_NO_DEVICE 0x08 +#define SRB_STATUS_TIMEOUT 0x09 +#define SRB_STATUS_SELECTION_TIMEOUT 0x0A +#define SRB_STATUS_COMMAND_TIMEOUT 0x0B +#define SRB_STATUS_MESSAGE_REJECTED 0x0D +#define SRB_STATUS_BUS_RESET 0x0E +#define SRB_STATUS_PARITY_ERROR 0x0F +#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10 +#define SRB_STATUS_NO_HBA 0x11 +#define SRB_STATUS_DATA_OVERRUN 0x12 +#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13 +#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14 +#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15 +#define SRB_STATUS_REQUEST_FLUSHED 0x16 +#define SRB_STATUS_INVALID_LUN 0x20 +#define SRB_STATUS_INVALID_TARGET_ID 0x21 +#define SRB_STATUS_BAD_FUNCTION 0x22 +#define SRB_STATUS_ERROR_RECOVERY 0x23 +#define SRB_STATUS_QUEUE_FROZEN 0x40 +#define SRB_STATUS_AUTOSENSE_VALID 0x80 + +#define SRB_STATUS(Status) (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN)) + +typedef struct _SCSISCAN_CMD { + ULONG Reserved1; + ULONG Size; + ULONG SrbFlags; + UCHAR CdbLength; + UCHAR SenseLength; + UCHAR Reserved2; + UCHAR Reserved3; + ULONG TransferLength; + UCHAR Cdb[16]; + PUCHAR pSrbStatus; + PUCHAR pSenseBuffer; +} SCSISCAN_CMD, *PSCSISCAN_CMD; + +#define MAX_STRING 128 + +/* SCSISCAN_INFO.Flags constants */ +#define SCSISCAN_RESERVED 0x000 +#define SCSISCAN_CMD_CODE 0x004 +#define SCSISCAN_LOCKDEVICE 0x005 +#define SCSISCAN_UNLOCKDEVICE 0x006 +#define SCSISCAN_SET_TIMEOUT 0x007 +#define SCSISCAN_GET_INFO 0x008 + +typedef struct _SCSISCAN_INFO { + ULONG Size; + ULONG Flags; + UCHAR PortNumber; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + UCHAR AdapterName[MAX_STRING]; + ULONG Reserved; +} SCSISCAN_INFO, *PSCSISCAN_INFO; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __SCSISCAN_H */ diff --git a/reactos/w32api/include/ddk/scsiwmi.h b/reactos/w32api/include/ddk/scsiwmi.h new file mode 100644 index 00000000000..684271593fe --- /dev/null +++ b/reactos/w32api/include/ddk/scsiwmi.h @@ -0,0 +1,215 @@ +/* + * scsiwmi.h + * + * SCSI WMILIB interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __SCSIWMI_H +#define __SCSIWMI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "srb.h" + + +typedef struct _SCSIWMI_REQUEST_CONTEXT { + PVOID UserContext; + ULONG BufferSize; + PUCHAR Buffer; + UCHAR MinorFunction; + UCHAR ReturnStatus; + ULONG ReturnSize; +} SCSIWMI_REQUEST_CONTEXT, *PSCSIWMI_REQUEST_CONTEXT; + +#ifdef _GUID_DEFINED +# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead +#endif + +#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) +#define GUID_DEFINED +typedef struct _GUID { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[ 8 ]; +} GUID; +#endif + +#ifndef _LPCGUID_DEFINED +#define _LPCGUID_DEFINED +typedef const GUID *LPCGUID; +#endif + +typedef struct _SCSIWMIGUIDREGINFO { + LPCGUID Guid; + ULONG InstanceCount; + ULONG Flags; +} SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO; + +typedef UCHAR DDKAPI +(*PSCSIWMI_QUERY_REGINFO)( + IN PVOID DeviceContext, + IN PSCSIWMI_REQUEST_CONTEXT RequestContext, + OUT PWCHAR *MofResourceName); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_QUERY_DATABLOCK)( + IN PVOID Context, + IN PSCSIWMI_REQUEST_CONTEXT DispatchContext, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG InstanceCount, + IN OUT PULONG InstanceLengthArray, + IN ULONG BufferAvail, + OUT PUCHAR Buffer); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_SET_DATABLOCK)( + IN PVOID DeviceContext, + IN PSCSIWMI_REQUEST_CONTEXT RequestContext, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG BufferSize, + IN PUCHAR Buffer); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_SET_DATAITEM)( + IN PVOID DeviceContext, + IN PSCSIWMI_REQUEST_CONTEXT RequestContext, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG DataItemId, + IN ULONG BufferSize, + IN PUCHAR Buffer); + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_EXECUTE_METHOD)( + IN PVOID DeviceContext, + IN PSCSIWMI_REQUEST_CONTEXT RequestContext, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG MethodId, + IN ULONG InBufferSize, + IN ULONG OutBufferSize, + IN OUT PUCHAR Buffer); + +typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL { + ScsiWmiEventControl, + ScsiWmiDataBlockControl +} SCSIWMI_ENABLE_DISABLE_CONTROL; + +typedef BOOLEAN DDKAPI +(*PSCSIWMI_FUNCTION_CONTROL)( + IN PVOID DeviceContext, + IN PSCSIWMI_REQUEST_CONTEXT RequestContext, + IN ULONG GuidIndex, + IN SCSIWMI_ENABLE_DISABLE_CONTROL Function, + IN BOOLEAN Enable); + +typedef struct _SCSIWMILIB_CONTEXT { + ULONG GuidCount; + PSCSIWMIGUIDREGINFO GuidList; + PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo; + PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock; + PSCSIWMI_SET_DATABLOCK SetWmiDataBlock; + PSCSIWMI_SET_DATAITEM SetWmiDataItem; + PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod; + PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl; +} SCSI_WMILIB_CONTEXT, *PSCSI_WMILIB_CONTEXT; + +SCSIPORTAPI +BOOLEAN +DDKAPI +ScsiPortWmiDispatchFunction( + IN PSCSI_WMILIB_CONTEXT WmiLibInfo, + IN UCHAR MinorFunction, + IN PVOID DeviceContext, + IN PSCSIWMI_REQUEST_CONTEXT RequestContext, + IN PVOID DataPath, + IN ULONG BufferSize, + IN PVOID Buffer); + +#define ScsiPortWmiFireAdapterEvent( \ + HwDeviceExtension, \ + Guid, \ + InstanceIndex, \ + EventDataSize, \ + EventData) \ + ScsiPortWmiFireLogicalUnitEvent( \ + HwDeviceExtension, \ + 0xff, \ + 0, \ + 0, \ + Guid, \ + InstanceIndex, \ + EventDataSize, \ + EventData) + +/* + * ULONG + * ScsiPortWmiGetReturnSize( + * PSCSIWMI_REQUEST_CONTEXT RequestContext); + */ +#define ScsiPortWmiGetReturnSize(RequestContext) \ + ((RequestContext)->ReturnSize) + +/* UCHAR + * ScsiPortWmiGetReturnStatus( + * PSCSIWMI_REQUEST_CONTEXT RequestContext); + */ +#define ScsiPortWmiGetReturnStatus(RequestContext) \ + ((RequestContext)->ReturnStatus) + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWmiPostProcess( + IN PSCSIWMI_REQUEST_CONTEXT RequestContext, + IN UCHAR SrbStatus, + IN ULONG BufferUsed); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWmiFireLogicalUnitEvent( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN LPGUID Guid, + IN ULONG InstanceIndex, + IN ULONG EventDataSize, + IN PVOID EventData); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __SCSIWMI_H */ diff --git a/reactos/w32api/include/ddk/smbus.h b/reactos/w32api/include/ddk/smbus.h new file mode 100644 index 00000000000..5444d374d66 --- /dev/null +++ b/reactos/w32api/include/ddk/smbus.h @@ -0,0 +1,194 @@ +/* + * smbus.h + * + * System Management Bus driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __SMBUS_H +#define __SMBUS_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#if !defined(SMBCLASS) + #define SMBCLASSAPI DECLSPEC_IMPORT +#else + #define SMBCLASSAPI DECLSPEC_EXPORT +#endif + +#define SMB_BUS_REQUEST \ + CTL_CODE(FILE_DEVICE_UNKNOWN, 0, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define SMB_DEREGISTER_ALARM_NOTIFY \ + CTL_CODE(FILE_DEVICE_UNKNOWN, 2, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define SMB_REGISTER_ALARM_NOTIFY \ + CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_NEITHER, FILE_ANY_ACCESS) + + +struct _SMB_CLASS; + +#define SMB_MAX_DATA_SIZE 32 + +/* SMB_REQUEST.Status constants */ +#define SMB_STATUS_OK 0x00 +#define SMB_UNKNOWN_FAILURE 0x07 +#define SMB_ADDRESS_NOT_ACKNOWLEDGED 0x10 +#define SMB_DEVICE_ERROR 0x11 +#define SMB_COMMAND_ACCESS_DENIED 0x12 +#define SMB_UNKNOWN_ERROR 0x13 +#define SMB_DEVICE_ACCESS_DENIED 0x17 +#define SMB_TIMEOUT 0x18 +#define SMB_UNSUPPORTED_PROTOCOL 0x19 +#define SMB_BUS_BUSY 0x1A + +/* SMB_REQUEST.Protocol constants */ +#define SMB_WRITE_QUICK 0x00 +#define SMB_READ_QUICK 0x01 +#define SMB_SEND_BYTE 0x02 +#define SMB_RECEIVE_BYTE 0x03 +#define SMB_WRITE_BYTE 0x04 +#define SMB_READ_BYTE 0x05 +#define SMB_WRITE_WORD 0x06 +#define SMB_READ_WORD 0x07 +#define SMB_WRITE_BLOCK 0x08 +#define SMB_READ_BLOCK 0x09 +#define SMB_PROCESS_CALL 0x0A +#define SMB_MAXIMUM_PROTOCOL 0x0A + +typedef struct _SMB_REQUEST { + UCHAR Status; + UCHAR Protocol; + UCHAR Address; + UCHAR Command; + UCHAR BlockLength; + UCHAR Data[SMB_MAX_DATA_SIZE]; +} SMB_REQUEST, *PSMB_REQUEST; + +typedef VOID STDCALL +(*SMB_ALARM_NOTIFY)( + PVOID Context, + UCHAR Address, + USHORT Data); + +typedef struct _SMB_REGISTER_ALARM { + UCHAR MinAddress; + UCHAR MaxAddress; + SMB_ALARM_NOTIFY NotifyFunction; + PVOID NotifyContext; +} SMB_REGISTER_ALARM, *PSMB_REGISTER_ALARM; + +/* SMB_CLASS.XxxVersion constants */ +#define SMB_CLASS_MAJOR_VERSION 0x0001 +#define SMB_CLASS_MINOR_VERSION 0x0000 + +typedef NTSTATUS DDKAPI +(*SMB_RESET_DEVICE)( + IN struct _SMB_CLASS *SmbClass, + IN PVOID SmbMiniport); + +typedef VOID DDKAPI +(*SMB_START_IO)( + IN struct _SMB_CLASS *SmbClass, + IN PVOID SmbMiniport); + +typedef NTSTATUS DDKAPI +(*SMB_STOP_DEVICE)( + IN struct _SMB_CLASS *SmbClass, + IN PVOID SmbMiniport); + +typedef struct _SMB_CLASS { + USHORT MajorVersion; + USHORT MinorVersion; + PVOID Miniport; + PDEVICE_OBJECT DeviceObject; + PDEVICE_OBJECT PDO; + PDEVICE_OBJECT LowerDeviceObject; + PIRP CurrentIrp; + PSMB_REQUEST CurrentSmb; + SMB_RESET_DEVICE ResetDevice; + SMB_START_IO StartIo; + SMB_STOP_DEVICE StopDevice; +} SMB_CLASS, *PSMB_CLASS; + +SMBCLASSAPI +VOID +DDKAPI +SmbClassAlarm( + IN PSMB_CLASS SmbClass, + IN UCHAR Address, + IN USHORT Data); + +SMBCLASSAPI +VOID +DDKAPI +SmbClassCompleteRequest( + IN PSMB_CLASS SmbClass); + +typedef NTSTATUS DDKAPI +(*PSMB_INITIALIZE_MINIPORT)( + IN PSMB_CLASS SmbClass, + IN PVOID MiniportExtension, + IN PVOID MiniportContext); + +SMBCLASSAPI +NTSTATUS +DDKAPI +SmbClassCreateFdo( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT PDO, + IN ULONG MiniportExtensionSize, + IN PSMB_INITIALIZE_MINIPORT MiniportInitialize, + IN PVOID MiniportContext, + OUT PDEVICE_OBJECT *FDO); + +SMBCLASSAPI +NTSTATUS +DDKAPI +SmbClassInitializeDevice( + IN ULONG MajorVersion, + IN ULONG MinorVersion, + IN PDRIVER_OBJECT DriverObject); + +SMBCLASSAPI +VOID +DDKAPI +SmbClassLockDevice( + IN PSMB_CLASS SmbClass); + +SMBCLASSAPI +VOID +DDKAPI +SmbClassUnlockDevice( + IN PSMB_CLASS SmbClass); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __SMBUS_H */ diff --git a/reactos/w32api/include/ddk/srb.h b/reactos/w32api/include/ddk/srb.h new file mode 100644 index 00000000000..93563f283b3 --- /dev/null +++ b/reactos/w32api/include/ddk/srb.h @@ -0,0 +1,757 @@ +/* + * scsi.h + * + * Interface between SCSI miniport drivers and the SCSI port driver. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __SRB_H +#define __SRB_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#if defined(_SCSIPORT_) + #define SCSIPORTAPI DECLSPEC_EXPORT +#else + #define SCSIPORTAPI DECLSPEC_IMPORT +#endif + +#ifdef DBG +#define DebugPrint(x) ScsiDebugPrint x +#else +#define DebugPrint(x) +#endif + +typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS; + +#define SP_UNINITIALIZED_VALUE ((ULONG) ~0) +#define SP_UNTAGGED ((UCHAR) ~0) + +#define SRB_SIMPLE_TAG_REQUEST 0x20 +#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21 +#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22 + +#define SRB_STATUS_QUEUE_FROZEN 0x40 +#define SRB_STATUS_AUTOSENSE_VALID 0x80 + +#define SRB_STATUS(Status) \ + (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN)) + +#define MAXIMUM_CDB_SIZE 12 + +#ifdef DBG +#define SCSI_PORT_SIGNATURE 0x54524f50 +#endif + + +#define SCSI_MAXIMUM_LOGICAL_UNITS 8 +#define SCSI_MAXIMUM_TARGETS_PER_BUS 128 +#define SCSI_MAXIMUM_LUNS_PER_TARGET 255 +#define SCSI_MAXIMUM_BUSES 8 +#define SCSI_MINIMUM_PHYSICAL_BREAKS 16 +#define SCSI_MAXIMUM_PHYSICAL_BREAKS 255 +#define SCSI_MAXIMUM_TARGETS 8 + +#define SRB_FUNCTION_WMI 0x17 + +#define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x0001 + +#define SP_BUS_PARITY_ERROR 0x0001 +#define SP_UNEXPECTED_DISCONNECT 0x0002 +#define SP_INVALID_RESELECTION 0x0003 +#define SP_BUS_TIME_OUT 0x0004 +#define SP_PROTOCOL_ERROR 0x0005 +#define SP_INTERNAL_ADAPTER_ERROR 0x0006 +#define SP_REQUEST_TIMEOUT 0x0007 +#define SP_IRQ_NOT_RESPONDING 0x0008 +#define SP_BAD_FW_WARNING 0x0009 +#define SP_BAD_FW_ERROR 0x000a +#define SP_LOST_WMI_MINIPORT_REQUEST 0x000b + +/* SCSI_REQUEST_BLOCK.Function constants */ +#define SRB_FUNCTION_EXECUTE_SCSI 0x00 +#define SRB_FUNCTION_CLAIM_DEVICE 0x01 +#define SRB_FUNCTION_IO_CONTROL 0x02 +#define SRB_FUNCTION_RECEIVE_EVENT 0x03 +#define SRB_FUNCTION_RELEASE_QUEUE 0x04 +#define SRB_FUNCTION_ATTACH_DEVICE 0x05 +#define SRB_FUNCTION_RELEASE_DEVICE 0x06 +#define SRB_FUNCTION_SHUTDOWN 0x07 +#define SRB_FUNCTION_FLUSH 0x08 +#define SRB_FUNCTION_ABORT_COMMAND 0x10 +#define SRB_FUNCTION_RELEASE_RECOVERY 0x11 +#define SRB_FUNCTION_RESET_BUS 0x12 +#define SRB_FUNCTION_RESET_DEVICE 0x13 +#define SRB_FUNCTION_TERMINATE_IO 0x14 +#define SRB_FUNCTION_FLUSH_QUEUE 0x15 +#define SRB_FUNCTION_REMOVE_DEVICE 0x16 +#define SRB_FUNCTION_WMI 0x17 +#define SRB_FUNCTION_LOCK_QUEUE 0x18 +#define SRB_FUNCTION_UNLOCK_QUEUE 0x19 +#define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20 + +/* SCSI_REQUEST_BLOCK.SrbStatus constants */ +#define SRB_STATUS_PENDING 0x00 +#define SRB_STATUS_SUCCESS 0x01 +#define SRB_STATUS_ABORTED 0x02 +#define SRB_STATUS_ABORT_FAILED 0x03 +#define SRB_STATUS_ERROR 0x04 +#define SRB_STATUS_BUSY 0x05 +#define SRB_STATUS_INVALID_REQUEST 0x06 +#define SRB_STATUS_INVALID_PATH_ID 0x07 +#define SRB_STATUS_NO_DEVICE 0x08 +#define SRB_STATUS_TIMEOUT 0x09 +#define SRB_STATUS_SELECTION_TIMEOUT 0x0A +#define SRB_STATUS_COMMAND_TIMEOUT 0x0B +#define SRB_STATUS_MESSAGE_REJECTED 0x0D +#define SRB_STATUS_BUS_RESET 0x0E +#define SRB_STATUS_PARITY_ERROR 0x0F +#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10 +#define SRB_STATUS_NO_HBA 0x11 +#define SRB_STATUS_DATA_OVERRUN 0x12 +#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13 +#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14 +#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15 +#define SRB_STATUS_REQUEST_FLUSHED 0x16 +#define SRB_STATUS_INVALID_LUN 0x20 +#define SRB_STATUS_INVALID_TARGET_ID 0x21 +#define SRB_STATUS_BAD_FUNCTION 0x22 +#define SRB_STATUS_ERROR_RECOVERY 0x23 +#define SRB_STATUS_NOT_POWERED 0x24 +#define SRB_STATUS_INTERNAL_ERROR 0x30 + +/* SCSI_REQUEST_BLOCK.SrbFlags constants */ +#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002 +#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004 +#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008 +#define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010 +#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020 +#define SRB_FLAGS_DATA_IN 0x00000040 +#define SRB_FLAGS_DATA_OUT 0x00000080 +#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000 +#define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) +#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100 +#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200 +#define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400 +#define SRB_FLAGS_IS_ACTIVE 0x00010000 +#define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000 +#define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000 +#define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000 +#define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000 +#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000 +#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000 +#define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000 +#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000 +#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000 + +typedef struct _SCSI_REQUEST_BLOCK { + USHORT Length; + UCHAR Function; + UCHAR SrbStatus; + UCHAR ScsiStatus; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + UCHAR QueueTag; + UCHAR QueueAction; + UCHAR CdbLength; + UCHAR SenseInfoBufferLength; + ULONG SrbFlags; + ULONG DataTransferLength; + ULONG TimeOutValue; + PVOID DataBuffer; + PVOID SenseInfoBuffer; + struct _SCSI_REQUEST_BLOCK *NextSrb; + PVOID OriginalRequest; + PVOID SrbExtension; + _ANONYMOUS_UNION union { + ULONG InternalStatus; + ULONG QueueSortKey; + } DUMMYUNIONNAME; +#if defined(_WIN64) + ULONG Reserved; +#endif + UCHAR Cdb[16]; +} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK; + +#define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK) + +typedef struct _ACCESS_RANGE { + SCSI_PHYSICAL_ADDRESS RangeStart; + ULONG RangeLength; + BOOLEAN RangeInMemory; +} ACCESS_RANGE, *PACCESS_RANGE; + +/* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */ +#define SCSI_DMA64_MINIPORT_SUPPORTED 0x01 +#define SCSI_DMA64_SYSTEM_SUPPORTED 0x80 + +typedef struct _PORT_CONFIGURATION_INFORMATION { + ULONG Length; + ULONG SystemIoBusNumber; + INTERFACE_TYPE AdapterInterfaceType; + ULONG BusInterruptLevel; + ULONG BusInterruptVector; + KINTERRUPT_MODE InterruptMode; + ULONG MaximumTransferLength; + ULONG NumberOfPhysicalBreaks; + ULONG DmaChannel; + ULONG DmaPort; + DMA_WIDTH DmaWidth; + DMA_SPEED DmaSpeed; + ULONG AlignmentMask; + ULONG NumberOfAccessRanges; + ACCESS_RANGE (*AccessRanges)[]; + PVOID Reserved; + UCHAR NumberOfBuses; + UCHAR InitiatorBusId[8]; + BOOLEAN ScatterGather; + BOOLEAN Master; + BOOLEAN CachesData; + BOOLEAN AdapterScansDown; + BOOLEAN AtdiskPrimaryClaimed; + BOOLEAN AtdiskSecondaryClaimed; + BOOLEAN Dma32BitAddresses; + BOOLEAN DemandMode; + BOOLEAN MapBuffers; + BOOLEAN NeedPhysicalAddresses; + BOOLEAN TaggedQueueing; + BOOLEAN AutoRequestSense; + BOOLEAN MultipleRequestPerLu; + BOOLEAN ReceiveEvent; + BOOLEAN RealModeInitialized; + BOOLEAN BufferAccessScsiPortControlled; + UCHAR MaximumNumberOfTargets; + UCHAR ReservedUchars[2]; + ULONG SlotNumber; + ULONG BusInterruptLevel2; + ULONG BusInterruptVector2; + KINTERRUPT_MODE InterruptMode2; + ULONG DmaChannel2; + ULONG DmaPort2; + DMA_WIDTH DmaWidth2; + DMA_SPEED DmaSpeed2; + ULONG DeviceExtensionSize; + ULONG SpecificLuExtensionSize; + ULONG SrbExtensionSize; + UCHAR Dma64BitAddresses; + BOOLEAN ResetTargetSupported; + UCHAR MaximumNumberOfLogicalUnits; + BOOLEAN WmiDataProvider; +} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION; + +#define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION) + +typedef enum _SCSI_NOTIFICATION_TYPE { + RequestComplete, + NextRequest, + NextLuRequest, + ResetDetected, + CallDisableInterrupts, + CallEnableInterrupts, + RequestTimerCall, + BusChangeDetected, + WMIEvent, + WMIReregister +} SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE; + +#ifdef __GNUC__ +__extension__ /* enums limited to range of integer */ +#endif +typedef enum _SCSI_ADAPTER_CONTROL_TYPE { + ScsiQuerySupportedControlTypes = 0, + ScsiStopAdapter, + ScsiRestartAdapter, + ScsiSetBootConfig, + ScsiSetRunningConfig, + ScsiAdapterControlMax, + MakeAdapterControlTypeSizeOfUlong = 0xffffffff +} SCSI_ADAPTER_CONTROL_TYPE, *PSCSI_ADAPTER_CONTROL_TYPE; + +typedef enum _SCSI_ADAPTER_CONTROL_STATUS { + ScsiAdapterControlSuccess = 0, + ScsiAdapterControlUnsuccessful +} SCSI_ADAPTER_CONTROL_STATUS, *PSCSI_ADAPTER_CONTROL_STATUS; + +typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST { + ULONG MaxControlType; + BOOLEAN SupportedTypeList[0]; +} SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST; + +typedef SCSI_ADAPTER_CONTROL_STATUS DDKAPI +(*PHW_ADAPTER_CONTROL)( + IN PVOID DeviceExtension, + IN SCSI_ADAPTER_CONTROL_TYPE ControlType, + IN PVOID Parameters); + +typedef BOOLEAN DDKAPI +(*PHW_ADAPTER_STATE)( + IN PVOID DeviceExtension, + IN PVOID Context, + IN BOOLEAN SaveState); + +#define SP_RETURN_NOT_FOUND 0 +#define SP_RETURN_FOUND 1 +#define SP_RETURN_ERROR 2 +#define SP_RETURN_BAD_CONFIG 3 + +typedef ULONG DDKAPI +(*PHW_FIND_ADAPTER)( + IN PVOID DeviceExtension, + IN PVOID HwContext, + IN PVOID BusInformation, + IN PCHAR ArgumentString, + IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, + OUT PBOOLEAN Again); + +typedef BOOLEAN DDKAPI +(*PHW_INITIALIZE)( + IN PVOID DeviceExtension); + +typedef BOOLEAN DDKAPI +(*PHW_INTERRUPT)( + IN PVOID DeviceExtension); + +typedef BOOLEAN DDKAPI +(*PHW_RESET_BUS)( + IN PVOID DeviceExtension, + IN ULONG PathId); + +typedef VOID DDKAPI +(*PHW_DMA_STARTED)( + IN PVOID DeviceExtension); + +typedef BOOLEAN DDKAPI +(*PHW_STARTIO)( + IN PVOID DeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb); + +typedef VOID DDKAPI +(*PHW_TIMER)( + IN PVOID DeviceExtension); + +typedef struct _HW_INITIALIZATION_DATA { + ULONG HwInitializationDataSize; + INTERFACE_TYPE AdapterInterfaceType; + PHW_INITIALIZE HwInitialize; + PHW_STARTIO HwStartIo; + PHW_INTERRUPT HwInterrupt; + PHW_FIND_ADAPTER HwFindAdapter; + PHW_RESET_BUS HwResetBus; + PHW_DMA_STARTED HwDmaStarted; + PHW_ADAPTER_STATE HwAdapterState; + ULONG DeviceExtensionSize; + ULONG SpecificLuExtensionSize; + ULONG SrbExtensionSize; + ULONG NumberOfAccessRanges; + PVOID Reserved; + BOOLEAN MapBuffers; + BOOLEAN NeedPhysicalAddresses; + BOOLEAN TaggedQueueing; + BOOLEAN AutoRequestSense; + BOOLEAN MultipleRequestPerLu; + BOOLEAN ReceiveEvent; + USHORT VendorIdLength; + PVOID VendorId; + USHORT ReservedUshort; + USHORT DeviceIdLength; + PVOID DeviceId; + PHW_ADAPTER_CONTROL HwAdapterControl; +} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA; + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortCompleteRequest( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN UCHAR SrbStatus); + +/* + * ULONG + * ScsiPortConvertPhysicalAddressToUlong( + * IN SCSI_PHYSICAL_ADDRESS Address); + */ +#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart) + +SCSIPORTAPI +SCSI_PHYSICAL_ADDRESS +DDKAPI +ScsiPortConvertUlongToPhysicalAddress( + IN ULONG UlongAddress); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortFlushDma( + IN PVOID DeviceExtension); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortFreeDeviceBase( + IN PVOID HwDeviceExtension, + IN PVOID MappedAddress); + +SCSIPORTAPI +ULONG +DDKAPI +ScsiPortGetBusData( + IN PVOID DeviceExtension, + IN ULONG BusDataType, + IN ULONG SystemIoBusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Length); + +SCSIPORTAPI +PVOID +DDKAPI +ScsiPortGetDeviceBase( + IN PVOID HwDeviceExtension, + IN INTERFACE_TYPE BusType, + IN ULONG SystemIoBusNumber, + IN SCSI_PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfBytes, + IN BOOLEAN InIoSpace); + +SCSIPORTAPI +PVOID +DDKAPI +ScsiPortGetLogicalUnit( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun); + +SCSIPORTAPI +SCSI_PHYSICAL_ADDRESS +DDKAPI +ScsiPortGetPhysicalAddress( + IN PVOID HwDeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, + IN PVOID VirtualAddress, + OUT ULONG *Length); + +SCSIPORTAPI +PSCSI_REQUEST_BLOCK +DDKAPI +ScsiPortGetSrb( + IN PVOID DeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN LONG QueueTag); + +SCSIPORTAPI +PVOID +DDKAPI +ScsiPortGetUncachedExtension( + IN PVOID HwDeviceExtension, + IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, + IN ULONG NumberOfBytes); + +SCSIPORTAPI +PVOID +DDKAPI +ScsiPortGetVirtualAddress( + IN PVOID HwDeviceExtension, + IN SCSI_PHYSICAL_ADDRESS PhysicalAddress); + +SCSIPORTAPI +ULONG +DDKAPI +ScsiPortInitialize( + IN PVOID Argument1, + IN PVOID Argument2, + IN struct _HW_INITIALIZATION_DATA *HwInitializationData, + IN PVOID HwContext OPTIONAL); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortIoMapTransfer( + IN PVOID HwDeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb, + IN ULONG LogicalAddress, + IN ULONG Length); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortLogError( + IN PVOID HwDeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN ULONG ErrorCode, + IN ULONG UniqueId); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortMoveMemory( + IN PVOID WriteBuffer, + IN PVOID ReadBuffer, + IN ULONG Length); + +SCSIPORTAPI +VOID +DDKCDECLAPI +ScsiPortNotification( + IN SCSI_NOTIFICATION_TYPE NotificationType, + IN PVOID HwDeviceExtension, + IN ...); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortQuerySystemTime( + OUT PLARGE_INTEGER CurrentTime); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortReadPortBufferUchar( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortReadPortBufferUlong( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortReadPortBufferUshort( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); + +SCSIPORTAPI +UCHAR +DDKAPI +ScsiPortReadPortUchar( + IN PUCHAR Port); + +SCSIPORTAPI +ULONG +DDKAPI +ScsiPortReadPortUlong( + IN PULONG Port); + +SCSIPORTAPI +USHORT +DDKAPI +ScsiPortReadPortUshort( + IN PUSHORT Port); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortReadRegisterBufferUchar( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortReadRegisterBufferUlong( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortReadRegisterBufferUshort( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); + +SCSIPORTAPI +UCHAR +DDKAPI +ScsiPortReadRegisterUchar( + IN PUCHAR Register); + +SCSIPORTAPI +ULONG +DDKAPI +ScsiPortReadRegisterUlong( + IN PULONG Register); + +SCSIPORTAPI +USHORT +DDKAPI +ScsiPortReadRegisterUshort( + IN PUSHORT Register); + +SCSIPORTAPI +ULONG +DDKAPI +ScsiPortSetBusDataByOffset( + IN PVOID DeviceExtension, + IN ULONG BusDataType, + IN ULONG SystemIoBusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortStallExecution( + IN ULONG Delay); + +SCSIPORTAPI +BOOLEAN +DDKAPI +ScsiPortValidateRange( + IN PVOID HwDeviceExtension, + IN INTERFACE_TYPE BusType, + IN ULONG SystemIoBusNumber, + IN SCSI_PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfBytes, + IN BOOLEAN InIoSpace); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWritePortBufferUchar( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWritePortBufferUlong( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWritePortBufferUshort( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWritePortUchar( + IN PUCHAR Port, + IN UCHAR Value); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWritePortUlong( + IN PULONG Port, + IN ULONG Value); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWritePortUshort( + IN PUSHORT Port, + IN USHORT Value); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWriteRegisterBufferUchar( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWriteRegisterBufferUlong( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWriteRegisterBufferUshort( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWriteRegisterUchar( + IN PUCHAR Register, + IN ULONG Value); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWriteRegisterUlong( + IN PULONG Register, + IN ULONG Value); + +SCSIPORTAPI +VOID +DDKAPI +ScsiPortWriteRegisterUshort( + IN PUSHORT Register, + IN USHORT Value); + +SCSIPORTAPI +VOID +DDKCDECLAPI +ScsiDebugPrint( + IN ULONG DebugPrintLevel, + IN PCCHAR DebugMessage, + IN ...); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __SRB_H */ diff --git a/reactos/w32api/include/ddk/storport.h b/reactos/w32api/include/ddk/storport.h new file mode 100644 index 00000000000..a97fc7a4e1e --- /dev/null +++ b/reactos/w32api/include/ddk/storport.h @@ -0,0 +1,426 @@ +/* + * storport.h + * + * StorPort interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __STORPORT_H +#define __STORPORT_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "srb.h" + +#if defined(_STORPORT_) + #define STORPORTAPI DECLSPEC_EXPORT +#else + #define STORPORTAPI DECLSPEC_IMPORT +#endif + + +typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS; + +typedef struct _STOR_SCATTER_GATHER_ELEMENT { + STOR_PHYSICAL_ADDRESS PhysicalAddress; + ULONG Length; + ULONG_PTR Reserved; +} STOR_SCATTER_GATHER_ELEMENT, *PSTOR_SCATTER_GATHER_ELEMENT; + +typedef struct _STOR_SCATTER_GATHER_LIST { + ULONG NumberOfElements; + ULONG_PTR Reserved; + STOR_SCATTER_GATHER_ELEMENT List[0]; +} STOR_SCATTER_GATHER_LIST, *PSTOR_SCATTER_GATHER_LIST; + +typedef struct _SCSI_WMI_REQUEST_BLOCK { + USHORT Length; + UCHAR Function; + UCHAR SrbStatus; + UCHAR WMISubFunction; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + UCHAR Reserved1; + UCHAR WMIFlags; + UCHAR Reserved2[2]; + ULONG SrbFlags; + ULONG DataTransferLength; + ULONG TimeOutValue; + PVOID DataBuffer; + PVOID DataPath; + PVOID Reserved3; + PVOID OriginalRequest; + PVOID SrbExtension; + ULONG Reserved4; + UCHAR Reserved5[16]; +} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK; + + +STORPORTAPI +ULONG +DDKAPI +StorPortInitialize( + IN PVOID Argument1, + IN PVOID Argument2, + IN PHW_INITIALIZATION_DATA HwInitializationData, + IN PVOID Unused); + +STORPORTAPI +VOID +DDKAPI +StorPortFreeDeviceBase( + IN PVOID HwDeviceExtension, + IN PVOID MappedAddress); + +STORPORTAPI +ULONG +DDKAPI +StorPortGetBusData( + IN PVOID DeviceExtension, + IN ULONG BusDataType, + IN ULONG SystemIoBusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Length); + +STORPORTAPI +ULONG +DDKAPI +StorPortSetBusDataByOffset( + IN PVOID DeviceExtension, + IN ULONG BusDataType, + IN ULONG SystemIoBusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +STORPORTAPI +PVOID +DDKAPI +StorPortGetDeviceBase( + IN PVOID HwDeviceExtension, + IN INTERFACE_TYPE BusType, + IN ULONG SystemIoBusNumber, + IN SCSI_PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfBytes, + IN BOOLEAN InIoSpace); + +STORPORTAPI +PVOID +DDKAPI +StorPortGetLogicalUnit( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun); + +STORPORTAPI +PSCSI_REQUEST_BLOCK +DDKAPI +StorPortGetSrb( + IN PVOID DeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN LONG QueueTag); + +STORPORTAPI +STOR_PHYSICAL_ADDRESS +DDKAPI +StorPortGetPhysicalAddress( + IN PVOID HwDeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb, + IN PVOID VirtualAddress, + OUT ULONG *Length); + +STORPORTAPI +PVOID +DDKAPI +StorPortGetVirtualAddress( + IN PVOID HwDeviceExtension, + IN STOR_PHYSICAL_ADDRESS PhysicalAddress); + +STORPORTAPI +PVOID +DDKAPI +StorPortGetUncachedExtension( + IN PVOID HwDeviceExtension, + IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, + IN ULONG NumberOfBytes); + +STORPORTAPI +VOID +DDKCDECLAPI +StorPortNotification( + IN SCSI_NOTIFICATION_TYPE NotificationType, + IN PVOID HwDeviceExtension, + IN ...); + +STORPORTAPI +VOID +DDKAPI +StorPortLogError( + IN PVOID HwDeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN ULONG ErrorCode, + IN ULONG UniqueId); + +STORPORTAPI +VOID +DDKAPI +StorPortCompleteRequest( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN UCHAR SrbStatus); + +STORPORTAPI +VOID +DDKAPI +StorPortMoveMemory( + IN PVOID WriteBuffer, + IN PVOID ReadBuffer, + IN ULONG Length); + +STORPORTAPI +VOID +DDKAPI +StorPortStallExecution( + IN ULONG Delay); + +STORPORTAPI +STOR_PHYSICAL_ADDRESS +DDKAPI +StorPortConvertUlong64ToPhysicalAddress( + IN ULONG64 UlongAddress); + +STORPORTAPI +ULONG64 +DDKAPI +StorPortConvertPhysicalAddressToUlong64( + IN STOR_PHYSICAL_ADDRESS Address); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortValidateRange( + IN PVOID HwDeviceExtension, + IN INTERFACE_TYPE BusType, + IN ULONG SystemIoBusNumber, + IN STOR_PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfBytes, + IN BOOLEAN InIoSpace); + +STORPORTAPI +VOID +DDKCDECLAPI +StorPortDebugPrint( + IN ULONG DebugPrintLevel, + IN PCCHAR DebugMessage, + IN ...); + +STORPORTAPI +UCHAR +DDKAPI +StorPortReadPortUchar( + IN PUCHAR Port); + +STORPORTAPI +ULONG +DDKAPI +StorPortReadPortUlong( + IN PULONG Port); + +STORPORTAPI +USHORT +DDKAPI +StorPortReadPortUshort( + IN PUSHORT Port); + +STORPORTAPI +UCHAR +DDKAPI +StorPortReadRegisterUchar( + IN PUCHAR Register); + +STORPORTAPI +ULONG +DDKAPI +StorPortReadRegisterUlong( + IN PULONG Register); + +STORPORTAPI +USHORT +DDKAPI +StorPortReadRegisterUshort( + IN PUSHORT Register); + +STORPORTAPI +VOID +DDKAPI +StorPortWritePortUchar( + IN PUCHAR Port, + IN UCHAR Value); + +STORPORTAPI +VOID +DDKAPI +StorPortWritePortUlong( + IN PULONG Port, + IN ULONG Value); + +STORPORTAPI +VOID +DDKAPI +StorPortWritePortUshort( + IN PUSHORT Port, + IN USHORT Value); + +STORPORTAPI +VOID +DDKAPI +StorPortWriteRegisterUchar( + IN PUCHAR Port, + IN UCHAR Value); + +STORPORTAPI +VOID +DDKAPI +StorPortWriteRegisterUlong( + IN PULONG Port, + IN ULONG Value); + +STORPORTAPI +VOID +DDKAPI +StorPortWriteRegisterUshort( + IN PUSHORT Port, + IN USHORT Value); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortPauseDevice( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN ULONG TimeOut); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortResumeDevice( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortPause( + IN PVOID HwDeviceExtension, + IN ULONG TimeOut); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortResume( + IN PVOID HwDeviceExtension); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortDeviceBusy( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun, + IN ULONG RequestsToComplete); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortDeviceReady( + IN PVOID HwDeviceExtension, + IN UCHAR PathId, + IN UCHAR TargetId, + IN UCHAR Lun); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortBusy( + IN PVOID HwDeviceExtension, + IN ULONG RequestsToComplete); + +STORPORTAPI +BOOLEAN +DDKAPI +StorPortReady( + IN PVOID HwDeviceExtension); + +STORPORTAPI +PSTOR_SCATTER_GATHER_LIST +DDKAPI +StorPortGetScatterGatherList( + IN PVOID DeviceExtension, + IN PSCSI_REQUEST_BLOCK Srb); + +typedef BOOLEAN DDKAPI +(*PSTOR_SYNCHRONIZED_ACCESS)( + IN PVOID HwDeviceExtension, + IN PVOID Context); + +STORPORTAPI +VOID +DDKAPI +StorPortSynchronizeAccess( + IN PVOID HwDeviceExtension, + IN PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, + IN PVOID Context); + +#ifdef DBG +#define DebugPrint(x) StorPortDebugPrint x +#else +#define DebugPrint(x) +#endif + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __STORPORT_H */ diff --git a/reactos/w32api/include/ddk/tdi.h b/reactos/w32api/include/ddk/tdi.h new file mode 100644 index 00000000000..46d01a29941 --- /dev/null +++ b/reactos/w32api/include/ddk/tdi.h @@ -0,0 +1,597 @@ +/* + * tdi.h + * + * TDI user mode definitions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __TDI_H +#define __TDI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "ntddtdi.h" +#include "tdistat.h" +#include "netpnp.h" + + +/* Basic types */ + +typedef LONG TDI_STATUS; +typedef PVOID CONNECTION_CONTEXT; + +typedef struct _TDI_CONNECTION_INFORMATION { + LONG UserDataLength; + PVOID UserData; + LONG OptionsLength; + PVOID Options; + LONG RemoteAddressLength; + PVOID RemoteAddress; +} TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION; + +typedef struct _TDI_REQUEST { + union { + HANDLE AddressHandle; + CONNECTION_CONTEXT ConnectionContext; + HANDLE ControlChannel; + } Handle; + PVOID RequestNotifyObject; + PVOID RequestContext; + TDI_STATUS TdiStatus; +} TDI_REQUEST, *PTDI_REQUEST; + +typedef struct _TDI_REQUEST_STATUS { + TDI_STATUS Status; + PVOID RequestContext; + ULONG BytesTransferred; +} TDI_REQUEST_STATUS, *PTDI_REQUEST_STATUS; + +typedef struct _TA_ADDRESS { + USHORT AddressLength; + USHORT AddressType; + UCHAR Address[1]; +} TA_ADDRESS, *PTA_ADDRESS; + +#define TDI_ADDRESS_TYPE_UNSPEC 0 +#define TDI_ADDRESS_TYPE_UNIX 1 +#define TDI_ADDRESS_TYPE_IP 2 +#define TDI_ADDRESS_TYPE_IMPLINK 3 +#define TDI_ADDRESS_TYPE_PUP 4 +#define TDI_ADDRESS_TYPE_CHAOS 5 +#define TDI_ADDRESS_TYPE_NS 6 +#define TDI_ADDRESS_TYPE_IPX 6 +#define TDI_ADDRESS_TYPE_NBS 7 +#define TDI_ADDRESS_TYPE_ECMA 8 +#define TDI_ADDRESS_TYPE_DATAKIT 9 +#define TDI_ADDRESS_TYPE_CCITT 10 +#define TDI_ADDRESS_TYPE_SNA 11 +#define TDI_ADDRESS_TYPE_DECnet 12 +#define TDI_ADDRESS_TYPE_DLI 13 +#define TDI_ADDRESS_TYPE_LAT 14 +#define TDI_ADDRESS_TYPE_HYLINK 15 +#define TDI_ADDRESS_TYPE_APPLETALK 16 +#define TDI_ADDRESS_TYPE_NETBIOS 17 +#define TDI_ADDRESS_TYPE_8022 18 +#define TDI_ADDRESS_TYPE_OSI_TSAP 19 +#define TDI_ADDRESS_TYPE_NETONE 20 +#define TDI_ADDRESS_TYPE_VNS 21 +#define TDI_ADDRESS_TYPE_NETBIOS_EX 22 +#define TDI_ADDRESS_TYPE_IP6 23 +#define TDI_ADDRESS_TYPE_NETBIOS_UNICODE_EX 24 + +#define TdiTransportAddress "TransportAddress" +#define TdiConnectionContext "ConnectionContext" +#define TDI_TRANSPORT_ADDRESS_LENGTH (sizeof(TdiTransportAddress) - 1) +#define TDI_CONNECTION_CONTEXT_LENGTH (sizeof(TdiConnectionContext) - 1) + +typedef struct _TRANSPORT_ADDRESS { + LONG TAAddressCount; + TA_ADDRESS Address[1]; +} TRANSPORT_ADDRESS, *PTRANSPORT_ADDRESS; + +typedef struct _TDI_ADDRESS_INFO { + ULONG ActivityCount; + TRANSPORT_ADDRESS Address; +} TDI_ADDRESS_INFO, *PTDI_ADDRESS_INFO; + +typedef struct _TDI_ACTION_HEADER { + ULONG TransportId; + USHORT ActionCode; + USHORT Reserved; +} TDI_ACTION_HEADER, *PTDI_ACTION_HEADER; + +typedef struct _TDI_ADDRESS_8022 { + UCHAR MACAddress[6]; +} TDI_ADDRESS_8022, *PTDI_ADDRESS_8022; + +#define TDI_ADDRESS_LENGTH_8022 sizeof(TDI_ADDRESS_8022); + +typedef struct _TDI_ADDRESS_APPLETALK { + USHORT Network; + UCHAR Node; + UCHAR Socket; +} TDI_ADDRESS_APPLETALK, *PTDI_ADDRESS_APPLETALK; + +#define TDI_ADDRESS_LENGTH_APPLETALK sizeof(TDI_ADDRESS_APPLETALK) + +typedef struct _TDI_ADDRESS_IP { + USHORT sin_port; + ULONG in_addr; + UCHAR sin_zero[8]; +} TDI_ADDRESS_IP, *PTDI_ADDRESS_IP; + +#define TDI_ADDRESS_LENGTH_IP sizeof(TDI_ADDRESS_IP) + +typedef struct _TDI_ADDRESS_IPX { + ULONG NetworkAddress; + UCHAR NodeAddress[6]; + USHORT Socket; +} TDI_ADDRESS_IPX, *PTDI_ADDRESS_IPX; + +#define TDI_ADDRESS_LENGTH_IPX sizeof(TDI_ADDRESS_IPX) + +/* TDI_ADDRESS_NETBIOS.NetbiosNameType constants */ +#define TDI_ADDRESS_NETBIOS_TYPE_UNIQUE 0x0000 +#define TDI_ADDRESS_NETBIOS_TYPE_GROUP 0x0001 +#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE 0x0002 +#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP 0x0003 + +typedef struct _TDI_ADDRESS_NETBIOS { + USHORT NetbiosNameType; + UCHAR NetbiosName[16]; +} TDI_ADDRESS_NETBIOS, *PTDI_ADDRESS_NETBIOS; + +#define TDI_ADDRESS_LENGTH_NETBIOS sizeof(TDI_ADDRESS_NETBIOS) + +typedef struct _TDI_ADDRESS_NETBIOS_EX { + UCHAR EndpointName[16]; + TDI_ADDRESS_NETBIOS NetbiosAddress; +} TDI_ADDRESS_NETBIOS_EX, *PTDI_ADDRESS_NETBIOS_EX; + +#define TDI_ADDRESS_LENGTH_NETBIOS_EX sizeof(TDI_ADDRESS_NETBIOS_EX) + +/* TDI_ADDRESS_NETONE.NetoneNameType constants */ +#define TDI_ADDRESS_NETONE_TYPE_UNIQUE 0x0000 +#define TDI_ADDRESS_NETONE_TYPE_ROTORED 0x0001 + +typedef struct _TDI_ADDRESS_NETONE { + USHORT NetoneNameType; + UCHAR NetoneName[20]; +} TDI_ADDRESS_NETONE, *PTDI_ADDRESS_NETONE; + +#define TDI_ADDRESS_LENGTH_NETONE sizeof(TDI_ADDRESS_NETONE) + +typedef struct _TDI_ADDRESS_NS +{ + ULONG NetworkAddress; + UCHAR NodeAddress[6]; + USHORT Socket; +} TDI_ADDRESS_NS, *PTDI_ADDRESS_NS; + +#define TDI_ADDRESS_LENGTH_NS sizeof(TDI_ADDRESS_NS) + +#define ISO_MAX_ADDR_LENGTH 64 + +/* TDI_ADDRESS_OSI_TSAP.tp_addr_type constants */ +#define ISO_HIERARCHICAL 0 +#define ISO_NON_HIERARCHICAL 1 + +typedef struct _TDI_ADDRESS_OSI_TSAP { + USHORT tp_addr_type; + USHORT tp_taddr_len; + USHORT tp_tsel_len; + UCHAR tp_addr[ISO_MAX_ADDR_LENGTH]; +} TDI_ADDRESS_OSI_TSAP, *PTDI_ADDRESS_OSI_TSAP; + +#define TDI_ADDRESS_LENGTH_OSI_TSAP sizeof(TDI_ADDRESS_OSI_TSAP) + +typedef struct _TDI_ADDRESS_VNS { + UCHAR net_address[4]; + UCHAR subnet_addr[2]; + UCHAR port[2]; + UCHAR hops; + UCHAR filler[5]; +} TDI_ADDRESS_VNS, *PTDI_ADDRESS_VNS; + +#define TDI_ADDRESS_LENGTH_VNS sizeof(TDI_ADDRESS_VNS) + +typedef struct _TDI_ADDRESS_IP6 { + USHORT sin6_port; + ULONG sin6_flowinfo; + USHORT sin6_addr[8]; + ULONG sin6_scope_id; +} TDI_ADDRESS_IP6, *PTDI_ADDRESS_IP6; + +#define TDI_ADDRESS_LENGTH_IP6 sizeof(TDI_ADDRESS_IP6) + +enum eNameBufferType { + NBT_READONLY = 0, + NBT_WRITEONLY, + NBT_READWRITE, + NBT_WRITTEN +}; + +typedef struct _TDI_ADDRESS_NETBIOS_UNICODE_EX { + USHORT NetbiosNameType; + enum eNameBufferType NameBufferType; + UNICODE_STRING EndpointName; + UNICODE_STRING RemoteName; + WCHAR EndpointBuffer[17]; + WCHAR RemoteNameBuffer[1]; +} TDI_ADDRESS_NETBIOS_UNICODE_EX, *PTDI_ADDRESS_NETBIOS_UNICODE_EX; + + +typedef struct _TDI_CONNECT_REQUEST { + TDI_REQUEST Request; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; + LARGE_INTEGER Timeout; +} TDI_REQUEST_CONNECT, *PTDI_REQUEST_CONNECT; + +typedef struct _TDI_REQUEST_ACCEPT { + TDI_REQUEST Request; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; +} TDI_REQUEST_ACCEPT, *PTDI_REQUEST_ACCEPT; + +typedef struct _TDI_REQUEST_LISTEN { + TDI_REQUEST Request; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; + USHORT ListenFlags; +} TDI_REQUEST_LISTEN, *PTDI_REQUEST_LISTEN; + +typedef struct _TDI_DISCONNECT_REQUEST { + TDI_REQUEST Request; + LARGE_INTEGER Timeout; +} TDI_REQUEST_DISCONNECT, *PTDI_REQUEST_DISCONNECT; + +typedef struct _TDI_REQUEST_SEND { + TDI_REQUEST Request; + USHORT SendFlags; +} TDI_REQUEST_SEND, *PTDI_REQUEST_SEND; + +typedef struct _TDI_REQUEST_RECEIVE { + TDI_REQUEST Request; + USHORT ReceiveFlags; +} TDI_REQUEST_RECEIVE, *PTDI_REQUEST_RECEIVE; + +typedef struct _TDI_REQUEST_SEND_DATAGRAM { + TDI_REQUEST Request; + PTDI_CONNECTION_INFORMATION SendDatagramInformation; +} TDI_REQUEST_SEND_DATAGRAM, *PTDI_REQUEST_SEND_DATAGRAM; + +typedef struct _TDI_REQUEST_RECEIVE_DATAGRAM { + TDI_REQUEST Request; + PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; + PTDI_CONNECTION_INFORMATION ReturnInformation; + USHORT ReceiveFlags; +} TDI_REQUEST_RECEIVE_DATAGRAM, *PTDI_REQUEST_RECEIVE_DATAGRAM; + +typedef struct _TDI_REQUEST_SET_EVENT { + TDI_REQUEST Request; + LONG EventType; + PVOID EventHandler; + PVOID EventContext; +} TDI_REQUEST_SET_EVENT_HANDLER, *PTDI_REQUEST_SET_EVENT_HANDLER; + +#define TDI_RECEIVE_BROADCAST 0x00000004 +#define TDI_RECEIVE_MULTICAST 0x00000008 +#define TDI_RECEIVE_PARTIAL 0x00000010 +#define TDI_RECEIVE_NORMAL 0x00000020 +#define TDI_RECEIVE_EXPEDITED 0x00000040 +#define TDI_RECEIVE_PEEK 0x00000080 +#define TDI_RECEIVE_NO_RESPONSE_EXP 0x00000100 +#define TDI_RECEIVE_COPY_LOOKAHEAD 0x00000200 +#define TDI_RECEIVE_ENTIRE_MESSAGE 0x00000400 +#define TDI_RECEIVE_AT_DISPATCH_LEVEL 0x00000800 +#define TDI_RECEIVE_CONTROL_INFO 0x00001000 + +/* Listen flags */ +#define TDI_QUERY_ACCEPT 0x00000001 + +/* Options used for both SendOptions and ReceiveIndicators */ +#define TDI_SEND_EXPEDITED 0x0020 +#define TDI_SEND_PARTIAL 0x0040 +#define TDI_SEND_NO_RESPONSE_EXPECTED 0x0080 +#define TDI_SEND_NON_BLOCKING 0x0100 +#define TDI_SEND_AND_DISCONNECT 0x0200 + +/* Disconnect Flags */ +#define TDI_DISCONNECT_WAIT 0x0001 +#define TDI_DISCONNECT_ABORT 0x0002 +#define TDI_DISCONNECT_RELEASE 0x0004 + +/* TdiRequest structure for TdiQueryInformation request */ +typedef struct _TDI_REQUEST_QUERY_INFORMATION { + TDI_REQUEST Request; + ULONG QueryType; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; +} TDI_REQUEST_QUERY_INFORMATION, *PTDI_REQUEST_QUERY_INFORMATION; + +/* TdiRequest structure for TdiSetInformation request */ +typedef struct _TDI_REQUEST_SET_INFORMATION { + TDI_REQUEST Request; + ULONG SetType; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; +} TDI_REQUEST_SET_INFORMATION, *PTDI_REQUEST_SET_INFORMATION; + +typedef TDI_REQUEST_SET_INFORMATION TDI_REQ_SET_INFORMATION, *PTDI_REQ_SET_INFORMATION; + +typedef union _TDI_REQUEST_TYPE { + TDI_REQUEST_ACCEPT TdiAccept; + TDI_REQUEST_CONNECT TdiConnect; + TDI_REQUEST_DISCONNECT TdiDisconnect; + TDI_REQUEST_LISTEN TdiListen; + TDI_REQUEST_QUERY_INFORMATION TdiQueryInformation; + TDI_REQUEST_RECEIVE TdiReceive; + TDI_REQUEST_RECEIVE_DATAGRAM TdiReceiveDatagram; + TDI_REQUEST_SEND TdiSend; + TDI_REQUEST_SEND_DATAGRAM TdiSendDatagram; + TDI_REQUEST_SET_EVENT_HANDLER TdiSetEventHandler; + TDI_REQUEST_SET_INFORMATION TdiSetInformation; +} TDI_REQUEST_TYPE, *PTDI_REQUEST_TYPE; + + +/* Query information types */ + +/* Generic query info types that must be supported by all transports */ +#define TDI_QUERY_BROADCAST_ADDRESS 0x00000001 +#define TDI_QUERY_PROVIDER_INFO 0x00000002 +#define TDI_QUERY_ADDRESS_INFO 0x00000003 +#define TDI_QUERY_CONNECTION_INFO 0x00000004 +#define TDI_QUERY_PROVIDER_STATISTICS 0x00000005 +#define TDI_QUERY_DATAGRAM_INFO 0x00000006 +#define TDI_QUERY_DATA_LINK_ADDRESS 0x00000007 +#define TDI_QUERY_NETWORK_ADDRESS 0x00000008 +#define TDI_QUERY_MAX_DATAGRAM_INFO 0x00000009 + +/* Netbios specific query information types */ +#define TDI_QUERY_ADAPTER_STATUS 0x00000100 +#define TDI_QUERY_SESSION_STATUS 0x00000200 +#define TDI_QUERY_FIND_NAME 0x00000300 + +typedef struct _TA_APPLETALK_ADDR { + LONG TAAddressCount; + struct _AddrAtalk { + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_APPLETALK Address[1]; + } Address[1]; +} TA_APPLETALK_ADDRESS, *PTA_APPLETALK_ADDRESS; + +typedef struct _TA_ADDRESS_IP { + LONG TAAddressCount; + struct _AddrIp { + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_IP Address[1]; + } Address[1]; +} TA_ADDRESS_IP, *PTA_ADDRESS_IP; + +typedef struct _TA_ADDRESS_IPX { + LONG TAAddressCount; + struct _AddrIpx { + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_IPX Address[1]; + } Address[1]; +} TA_IPX_ADDRESS, *PTA_IPX_ADDRESS; + +typedef struct _TA_NETBIOS_ADDRESS { + LONG TAAddressCount; + struct _Addr{ + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_NETBIOS Address[1]; + } Address[1]; +} TA_NETBIOS_ADDRESS, *PTA_NETBIOS_ADDRESS; + +typedef struct _TA_ADDRESS_NS { + LONG TAAddressCount; + struct _AddrNs { + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_NS Address[1]; + } Address[1]; +} TA_NS_ADDRESS, *PTA_NS_ADDRESS; + +typedef struct _TA_ADDRESS_VNS { + LONG TAAddressCount; + struct _AddrVns { + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_VNS Address[1]; + } Address[1]; +} TA_VNS_ADDRESS, *PTA_VNS_ADDRESS; + +typedef struct _TA_ADDRESS_IP6 { + LONG TAAddressCount; + struct _AddrIp6 { + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_IP6 Address[1]; + } Address [1]; +} TA_IP6_ADDRESS, *PTA_IP6_ADDRESS; + +typedef struct _TA_ADDRESS_NETBIOS_UNICODE_EX { + LONG TAAddressCount; + struct _AddrNetbiosWCharEx { + USHORT AddressLength; + USHORT AddressType; + TDI_ADDRESS_NETBIOS_UNICODE_EX Address[1]; + } Address [1]; +} TA_NETBIOS_UNICODE_EX_ADDRESS, *PTA_NETBIOS_UNICODE_EX_ADDRESS; + + +/* Structures used for TdiQueryInformation and TdiSetInformation */ + +typedef struct _TDI_ENDPOINT_INFO { + ULONG State; + ULONG Event; + ULONG TransmittedTsdus; + ULONG ReceivedTsdus; + ULONG TransmissionErrors; + ULONG ReceiveErrors; + ULONG MinimumLookaheadData; + ULONG MaximumLookaheadData; + ULONG PriorityLevel; + ULONG SecurityLevel; + ULONG SecurityCompartment; +} TDI_ENDPOINT_INFO, *PTDI_ENDPOINT_INFO; + +typedef struct _TDI_CONNECTION_INFO { + ULONG State; + ULONG Event; + ULONG TransmittedTsdus; + ULONG ReceivedTsdus; + ULONG TransmissionErrors; + ULONG ReceiveErrors; + LARGE_INTEGER Throughput; + LARGE_INTEGER Delay; + ULONG SendBufferSize; + ULONG ReceiveBufferSize; + BOOLEAN Unreliable; +} TDI_CONNECTION_INFO, *PTDI_CONNECTION_INFO; + +typedef struct _TDI_DATAGRAM_INFO { + ULONG MaximumDatagramBytes; + ULONG MaximumDatagramCount; +} TDI_DATAGRAM_INFO, *PTDI_DATAGRAM_INFO; + +typedef struct _TDI_MAX_DATAGRAM_INFO { + ULONG MaxDatagramSize; +} TDI_MAX_DATAGRAM_INFO, *PTDI_MAX_DATAGRAM_INFO; + +typedef struct _TDI_PROVIDER_INFO { + ULONG Version; + ULONG MaxSendSize; + ULONG MaxConnectionUserData; + ULONG MaxDatagramSize; + ULONG ServiceFlags; + ULONG MinimumLookaheadData; + ULONG MaximumLookaheadData; + ULONG NumberOfResources; + LARGE_INTEGER StartTime; +} TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO; + +#define TDI_SERVICE_CONNECTION_MODE 0x00000001 +#define TDI_SERVICE_ORDERLY_RELEASE 0x00000002 +#define TDI_SERVICE_CONNECTIONLESS_MODE 0x00000004 +#define TDI_SERVICE_ERROR_FREE_DELIVERY 0x00000008 +#define TDI_SERVICE_SECURITY_LEVEL 0x00000010 +#define TDI_SERVICE_BROADCAST_SUPPORTED 0x00000020 +#define TDI_SERVICE_MULTICAST_SUPPORTED 0x00000040 +#define TDI_SERVICE_DELAYED_ACCEPTANCE 0x00000080 +#define TDI_SERVICE_EXPEDITED_DATA 0x00000100 +#define TDI_SERVICE_INTERNAL_BUFFERING 0x00000200 +#define TDI_SERVICE_ROUTE_DIRECTED 0x00000400 +#define TDI_SERVICE_NO_ZERO_LENGTH 0x00000800 +#define TDI_SERVICE_POINT_TO_POINT 0x00001000 +#define TDI_SERVICE_MESSAGE_MODE 0x00002000 +#define TDI_SERVICE_HALF_DUPLEX 0x00004000 +#define TDI_SERVICE_DGRAM_CONNECTION 0x00008000 +#define TDI_SERVICE_FORCE_ACCESS_CHECK 0x00010000 +#define TDI_SERVICE_SEND_AND_DISCONNECT 0x00020000 +#define TDI_SERVICE_DIRECT_ACCEPT 0x00040000 +#define TDI_SERVICE_ACCEPT_LOCAL_ADDR 0x00080000 + +typedef struct _TDI_PROVIDER_RESOURCE_STATS { + ULONG ResourceId; + ULONG MaximumResourceUsed; + ULONG AverageResourceUsed; + ULONG ResourceExhausted; +} TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS; + +typedef struct _TDI_PROVIDER_STATISTICS { + ULONG Version; + ULONG OpenConnections; + ULONG ConnectionsAfterNoRetry; + ULONG ConnectionsAfterRetry; + ULONG LocalDisconnects; + ULONG RemoteDisconnects; + ULONG LinkFailures; + ULONG AdapterFailures; + ULONG SessionTimeouts; + ULONG CancelledConnections; + ULONG RemoteResourceFailures; + ULONG LocalResourceFailures; + ULONG NotFoundFailures; + ULONG NoListenFailures; + ULONG DatagramsSent; + LARGE_INTEGER DatagramBytesSent; + ULONG DatagramsReceived; + LARGE_INTEGER DatagramBytesReceived; + ULONG PacketsSent; + ULONG PacketsReceived; + ULONG DataFramesSent; + LARGE_INTEGER DataFrameBytesSent; + ULONG DataFramesReceived; + LARGE_INTEGER DataFrameBytesReceived; + ULONG DataFramesResent; + LARGE_INTEGER DataFrameBytesResent; + ULONG DataFramesRejected; + LARGE_INTEGER DataFrameBytesRejected; + ULONG ResponseTimerExpirations; + ULONG AckTimerExpirations; + ULONG MaximumSendWindow; + ULONG AverageSendWindow; + ULONG PiggybackAckQueued; + ULONG PiggybackAckTimeouts; + LARGE_INTEGER WastedPacketSpace; + ULONG WastedSpacePackets; + ULONG NumberOfResources; + TDI_PROVIDER_RESOURCE_STATS ResourceStats[1]; +} TDI_PROVIDER_STATISTICS, *PTDI_PROVIDER_STATISTICS; + +#define TDI_EVENT_CONNECT 0 +#define TDI_EVENT_DISCONNECT 1 +#define TDI_EVENT_ERROR 2 +#define TDI_EVENT_RECEIVE 3 +#define TDI_EVENT_RECEIVE_DATAGRAM 4 +#define TDI_EVENT_RECEIVE_EXPEDITED 5 +#define TDI_EVENT_SEND_POSSIBLE 6 + +typedef struct _TDI_REQUEST_ASSOCIATE { + TDI_REQUEST Request; + HANDLE AddressHandle; +} TDI_REQUEST_ASSOCIATE_ADDRESS, *PTDI_REQUEST_ASSOCIATE_ADDRESS; + +#define NDIS_PACKET_POOL_TAG_FOR_NWLNKIPX 'iPDN' +#define NDIS_PACKET_POOL_TAG_FOR_NWLNKSPX 'sPDN' +#define NDIS_PACKET_POOL_TAG_FOR_NWLNKNB 'nPDN' +#define NDIS_PACKET_POOL_TAG_FOR_TCPIP 'tPDN' +#define NDIS_PACKET_POOL_TAG_FOR_NBF 'bPDN' +#define NDIS_PACKET_POOL_TAG_FOR_APPLETALK 'aPDN' + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __TDI_H */ diff --git a/reactos/w32api/include/ddk/tdiinfo.h b/reactos/w32api/include/ddk/tdiinfo.h new file mode 100644 index 00000000000..a6248c880a7 --- /dev/null +++ b/reactos/w32api/include/ddk/tdiinfo.h @@ -0,0 +1,115 @@ +/* + * tdiinfo.h + * + * TDI set and query information interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __TDIINFO_H +#define __TDIINFO_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +typedef struct TDIEntityID { + ULONG tei_entity; + ULONG tei_instance; +} TDIEntityID; + +#define MAX_TDI_ENTITIES 4096 +#define INVALID_ENTITY_INSTANCE -1 +#define GENERIC_ENTITY 0 +#define ENTITY_LIST_ID 0 +#define ENTITY_TYPE_ID 1 + +#define AT_ENTITY 0x280 +#define CL_NL_ENTITY 0x301 +#define CL_TL_ENTITY 0x401 +#define CO_NL_ENTITY 0x300 +#define CO_TL_ENTITY 0x400 +#define ER_ENTITY 0x380 +#define IF_ENTITY 0x200 + +#define AT_ARP 0x280 +#define AT_NULL 0x282 +#define CL_TL_NBF 0x401 +#define CL_TL_UDP 0x403 +#define CL_NL_IPX 0x301 +#define CL_NL_IP 0x303 +#define CO_TL_NBF 0x400 +#define CO_TL_SPX 0x402 +#define CO_TL_TCP 0x404 +#define CO_TL_SPP 0x406 +#define ER_ICMP 0x380 +#define IF_GENERIC 0x200 +#define IF_MIB 0x202 + +/* TDIObjectID.toi_class constants */ +#define INFO_CLASS_GENERIC 0x100 +#define INFO_CLASS_PROTOCOL 0x200 +#define INFO_CLASS_IMPLEMENTATION 0x300 + +/* TDIObjectID.toi_type constants */ +#define INFO_TYPE_PROVIDER 0x100 +#define INFO_TYPE_ADDRESS_OBJECT 0x200 +#define INFO_TYPE_CONNECTION 0x300 + +typedef struct _TDIObjectID { + TDIEntityID toi_entity; + ULONG toi_class; + ULONG toi_type; + ULONG toi_id; +} TDIObjectID; + +#define CONTEXT_SIZE 16 + +typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX { + TDIObjectID ID; + ULONG_PTR Context[CONTEXT_SIZE / sizeof(ULONG_PTR)]; +} TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX; + +#if defined(_WIN64) +typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX32 { + TDIObjectID ID; + ULONG32 Context[CONTEXT_SIZE / sizeof(ULONG32)]; +} TCP_REQUEST_QUERY_INFORMATION_EX32, *PTCP_REQUEST_QUERY_INFORMATION_EX32; +#endif /* _WIN64 */ + +typedef struct _TCP_REQUEST_SET_INFORMATION_EX { + TDIObjectID ID; + UINT BufferSize; + UCHAR Buffer[1]; +} TCP_REQUEST_SET_INFORMATION_EX, *PTCP_REQUEST_SET_INFORMATION_EX; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __TDIINFO_H */ diff --git a/reactos/w32api/include/ddk/tdikrnl.h b/reactos/w32api/include/ddk/tdikrnl.h new file mode 100644 index 00000000000..7e684702afc --- /dev/null +++ b/reactos/w32api/include/ddk/tdikrnl.h @@ -0,0 +1,1166 @@ +/* + * tdikrnl.h + * + * TDI kernel mode definitions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __TDIKRNL_H +#define __TDIKRNL_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "tdi.h" + +#if defined(_TDI_) + #define TDIKRNLAPI DECLSPEC_EXPORT +#else + #define TDIKRNLAPI DECLSPEC_IMPORT +#endif + + +typedef struct _TDI_REQUEST_KERNEL { + ULONG RequestFlags; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; + PVOID RequestSpecific; +} TDI_REQUEST_KERNEL, *PTDI_REQUEST_KERNEL; + +/* Request codes */ +#define TDI_ASSOCIATE_ADDRESS 0x01 +#define TDI_DISASSOCIATE_ADDRESS 0x02 +#define TDI_CONNECT 0x03 +#define TDI_LISTEN 0x04 +#define TDI_ACCEPT 0x05 +#define TDI_DISCONNECT 0x06 +#define TDI_SEND 0x07 +#define TDI_RECEIVE 0x08 +#define TDI_SEND_DATAGRAM 0x09 +#define TDI_RECEIVE_DATAGRAM 0x0A +#define TDI_SET_EVENT_HANDLER 0x0B +#define TDI_QUERY_INFORMATION 0x0C +#define TDI_SET_INFORMATION 0x0D +#define TDI_ACTION 0x0E + +#define TDI_DIRECT_SEND 0x27 +#define TDI_DIRECT_SEND_DATAGRAM 0x29 + +#define TDI_TRANSPORT_ADDRESS_FILE 1 +#define TDI_CONNECTION_FILE 2 +#define TDI_CONTROL_CHANNEL_FILE 3 + +/* Internal TDI IOCTLS */ +#define IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER _TDI_CONTROL_CODE(0x80, METHOD_NEITHER) +#define IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER _TDI_CONTROL_CODE(0x81, METHOD_NEITHER) + +/* TdiAssociateAddress */ +typedef struct _TDI_REQUEST_KERNEL_ASSOCIATE { + HANDLE AddressHandle; +} TDI_REQUEST_KERNEL_ASSOCIATE, *PTDI_REQUEST_KERNEL_ASSOCIATE; + +/* TdiDisassociateAddress */ +typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISASSOCIATE, + *PTDI_REQUEST_KERNEL_DISASSOCIATE; + +/* TdiAccept */ +typedef struct _TDI_REQUEST_KERNEL_ACCEPT { + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; + PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; +} TDI_REQUEST_KERNEL_ACCEPT, *PTDI_REQUEST_KERNEL_ACCEPT; + +/* TdiConnect */ +typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_CONNECT, + *PTDI_REQUEST_KERNEL_CONNECT; + +/* TdiDisconnect */ +typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_DISCONNECT, + *PTDI_REQUEST_KERNEL_DISCONNECT; + +/* TdiListen */ +typedef TDI_REQUEST_KERNEL TDI_REQUEST_KERNEL_LISTEN, + *PTDI_REQUEST_KERNEL_LISTEN; + +/* TdiReceive */ +typedef struct _TDI_REQUEST_KERNEL_RECEIVE { + ULONG ReceiveLength; + ULONG ReceiveFlags; +} TDI_REQUEST_KERNEL_RECEIVE, *PTDI_REQUEST_KERNEL_RECEIVE; + +/* TdiReceiveDatagram */ +typedef struct _TDI_REQUEST_KERNEL_RECEIVEDG { + ULONG ReceiveLength; + PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; + PTDI_CONNECTION_INFORMATION ReturnDatagramInformation; + ULONG ReceiveFlags; +} TDI_REQUEST_KERNEL_RECEIVEDG, *PTDI_REQUEST_KERNEL_RECEIVEDG; + +/* TdiSend */ +typedef struct _TDI_REQUEST_KERNEL_SEND { + ULONG SendLength; + ULONG SendFlags; +} TDI_REQUEST_KERNEL_SEND, *PTDI_REQUEST_KERNEL_SEND; + +/* TdiSendDatagram */ +typedef struct _TDI_REQUEST_KERNEL_SENDDG { + ULONG SendLength; + PTDI_CONNECTION_INFORMATION SendDatagramInformation; +} TDI_REQUEST_KERNEL_SENDDG, *PTDI_REQUEST_KERNEL_SENDDG; + +/* TdiSetEventHandler */ +typedef struct _TDI_REQUEST_KERNEL_SET_EVENT { + LONG EventType; + PVOID EventHandler; + PVOID EventContext; +} TDI_REQUEST_KERNEL_SET_EVENT, *PTDI_REQUEST_KERNEL_SET_EVENT; + +/* TdiQueryInformation */ +typedef struct _TDI_REQUEST_KERNEL_QUERY_INFO { + LONG QueryType; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; +} TDI_REQUEST_KERNEL_QUERY_INFORMATION, *PTDI_REQUEST_KERNEL_QUERY_INFORMATION; + +/* TdiSetInformation */ +typedef struct _TDI_REQUEST_KERNEL_SET_INFO { + LONG SetType; + PTDI_CONNECTION_INFORMATION RequestConnectionInformation; +} TDI_REQUEST_KERNEL_SET_INFORMATION, *PTDI_REQUEST_KERNEL_SET_INFORMATION; + + +/* Event types */ +#define TDI_EVENT_CONNECT 0 +#define TDI_EVENT_DISCONNECT 1 +#define TDI_EVENT_ERROR 2 +#define TDI_EVENT_RECEIVE 3 +#define TDI_EVENT_RECEIVE_DATAGRAM 4 +#define TDI_EVENT_RECEIVE_EXPEDITED 5 +#define TDI_EVENT_SEND_POSSIBLE 6 +#define TDI_EVENT_CHAINED_RECEIVE 7 +#define TDI_EVENT_CHAINED_RECEIVE_DATAGRAM 8 +#define TDI_EVENT_CHAINED_RECEIVE_EXPEDITED 9 +#define TDI_EVENT_ERROR_EX 10 + +typedef NTSTATUS DDKAPI +(*PTDI_IND_CONNECT)( + IN PVOID TdiEventContext, + IN LONG RemoteAddressLength, + IN PVOID RemoteAddress, + IN LONG UserDataLength, + IN PVOID UserData, + IN LONG OptionsLength, + IN PVOID Options, + OUT CONNECTION_CONTEXT *ConnectionContext, + OUT PIRP *AcceptIrp); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultConnectHandler( + IN PVOID TdiEventContext, + IN LONG RemoteAddressLength, + IN PVOID RemoteAddress, + IN LONG UserDataLength, + IN PVOID UserData, + IN LONG OptionsLength, + IN PVOID Options, + OUT CONNECTION_CONTEXT *ConnectionContext, + OUT PIRP *AcceptIrp); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_DISCONNECT)( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN LONG DisconnectDataLength, + IN PVOID DisconnectData, + IN LONG DisconnectInformationLength, + IN PVOID DisconnectInformation, + IN ULONG DisconnectFlags); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultDisconnectHandler( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN LONG DisconnectDataLength, + IN PVOID DisconnectData, + IN LONG DisconnectInformationLength, + IN PVOID DisconnectInformation, + IN ULONG DisconnectFlags); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_ERROR)( + IN PVOID TdiEventContext, + IN NTSTATUS Status); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_ERROR_EX)( + IN PVOID TdiEventContext, + IN NTSTATUS Status, + IN PVOID Buffer); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultErrorHandler( + IN PVOID TdiEventContext, + IN NTSTATUS Status); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_RECEIVE)( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultReceiveHandler( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_RECEIVE_DATAGRAM)( + IN PVOID TdiEventContext, + IN LONG SourceAddressLength, + IN PVOID SourceAddress, + IN LONG OptionsLength, + IN PVOID Options, + IN ULONG ReceiveDatagramFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); + +TDIKRNLAPI +NTSTATUS DDKAPI +TdiDefaultRcvDatagramHandler( + IN PVOID TdiEventContext, + IN LONG SourceAddressLength, + IN PVOID SourceAddress, + IN LONG OptionsLength, + IN PVOID Options, + IN ULONG ReceiveDatagramFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_RECEIVE_EXPEDITED)( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultRcvExpeditedHandler( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG BytesIndicated, + IN ULONG BytesAvailable, + OUT ULONG *BytesTaken, + IN PVOID Tsdu, + OUT PIRP *IoRequestPacket); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_CHAINED_RECEIVE)( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG ReceiveLength, + IN ULONG StartingOffset, + IN PMDL Tsdu, + IN PVOID TsduDescriptor); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultChainedReceiveHandler( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG ReceiveLength, + IN ULONG StartingOffset, + IN PMDL Tsdu, + IN PVOID TsduDescriptor); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_CHAINED_RECEIVE_DATAGRAM)( + IN PVOID TdiEventContext, + IN LONG SourceAddressLength, + IN PVOID SourceAddress, + IN LONG OptionsLength, + IN PVOID Options, + IN ULONG ReceiveDatagramFlags, + IN ULONG ReceiveDatagramLength, + IN ULONG StartingOffset, + IN PMDL Tsdu, + IN PVOID TsduDescriptor); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultChainedRcvDatagramHandler( + IN PVOID TdiEventContext, + IN LONG SourceAddressLength, + IN PVOID SourceAddress, + IN LONG OptionsLength, + IN PVOID Options, + IN ULONG ReceiveDatagramFlags, + IN ULONG ReceiveDatagramLength, + IN ULONG StartingOffset, + IN PMDL Tsdu, + IN PVOID TsduDescriptor); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_CHAINED_RECEIVE_EXPEDITED)( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG ReceiveLength, + IN ULONG StartingOffset, + IN PMDL Tsdu, + IN PVOID TsduDescriptor); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultChainedRcvExpeditedHandler( + IN PVOID TdiEventContext, + IN CONNECTION_CONTEXT ConnectionContext, + IN ULONG ReceiveFlags, + IN ULONG ReceiveLength, + IN ULONG StartingOffset, + IN PMDL Tsdu, + IN PVOID TsduDescriptor); + +typedef NTSTATUS DDKAPI +(*PTDI_IND_SEND_POSSIBLE)( + IN PVOID TdiEventContext, + IN PVOID ConnectionContext, + IN ULONG BytesAvailable); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDefaultSendPossibleHandler( + IN PVOID TdiEventContext, + IN PVOID ConnectionContext, + IN ULONG BytesAvailable); + + + +/* Macros and functions to build IRPs */ + +#define TdiBuildBaseIrp( \ + bIrp, bDevObj, bFileObj, bCompRoutine, bContxt, bIrpSp, bMinor) \ +{ \ + bIrpSp->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; \ + bIrpSp->MinorFunction = (bMinor); \ + bIrpSp->DeviceObject = (bDevObj); \ + bIrpSp->FileObject = (bFileObj); \ + if (bCompRoutine) \ + IoSetCompletionRoutine(bIrp, bCompRoutine, bContxt, TRUE, TRUE, TRUE) \ + else \ + IoSetCompletionRoutine(bIrp, NULL, NULL, FALSE, FALSE, FALSE); \ +} + +/* + * VOID + * TdiBuildAccept( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, + * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); + */ +#define TdiBuildAccept( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, \ + RequestConnectionInfo, ReturnConnectionInfo) \ +{ \ + PTDI_REQUEST_KERNEL_ACCEPT _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_ACCEPT); \ + \ + _Request = (PTDI_REQUEST_KERNEL_ACCEPT)&_IrpSp->Parameters; \ + _Request->RequestConnectionInformation = (RequestConnectionInfo); \ + _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ +} + +/* + * VOID + * TdiBuildAction( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PMDL MdlAddr); + */ +#define TdiBuildAction( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr) \ +{ \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_ACTION); \ + \ + (Irp)->MdlAddress = (MdlAddr); \ +} + +/* + * VOID + * TdiBuildAssociateAddress( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN HANDLE AddrHandle); + */ +#define TdiBuildAssociateAddress( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, AddrHandle) \ +{ \ + PTDI_REQUEST_KERNEL_ASSOCIATE _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_ASSOCIATE_ADDRESS); \ + \ + _Request = (PTDI_REQUEST_KERNEL_ASSOCIATE)&_IrpSp->Parameters; \ + _Request->AddressHandle = (HANDLE)(AddrHandle); \ +} + +/* + * VOID + * TdiBuildConnect( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PLARGE_INTEGER Time, + * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, + * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); + */ +#define TdiBuildConnect( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, \ + Time, RequestConnectionInfo, ReturnConnectionInfo) \ +{ \ + PTDI_REQUEST_KERNEL _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_CONNECT); \ + \ + _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ + _Request->RequestConnectionInformation = (RequestConnectionInfo); \ + _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ + _Request->RequestSpecific = (PVOID)(Time); \ +} + +/* + * VOID + * TdiBuildDisassociateAddress( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt); + */ +#define TdiBuildDisassociateAddress( \ + Irp, DevObj, FileObj, CompRoutine, Contxt) \ +{ \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_DISASSOCIATE_ADDRESS); \ +} + +/* + * VOID + * TdiBuildDisconnect( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PLARGE_INTEGER Time, + * IN PULONG Flags, + * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, + * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); + */ +#define TdiBuildDisconnect( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, Time, \ + Flags, RequestConnectionInfo, ReturnConnectionInfo) \ +{ \ + PTDI_REQUEST_KERNEL _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_DISCONNECT); \ + \ + _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ + _Request->RequestConnectionInformation = (RequestConnectionInfo); \ + _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ + _Request->RequestSpecific = (PVOID)(Time); \ + _Request->RequestFlags = (Flags); \ +} + +/* + * PIRP + * TdiBuildInternalDeviceControlIrp( + * IN CCHAR IrpSubFunction, + * IN PDEVICE_OBJECT DeviceObject, + * IN PFILE_OBJECT FileObject, + * IN PKEVENT Event, + * IN PIO_STATUS_BLOCK IoStatusBlock); + */ +#define TdiBuildInternalDeviceControlIrp( \ + IrpSubFunction, DeviceObject, \ + FileObject, Event, IoStatusBlock) \ + IoBuildDeviceIoControlRequest( \ + 0x00000003, DeviceObject, \ + NULL, 0, NULL, 0, \ + TRUE, Event, IoStatusBlock) + +/* + * VOID + * TdiBuildListen( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN ULONG Flags, + * IN PTDI_CONNECTION_INFORMATION RequestConnectionInfo, + * OUT PTDI_CONNECTION_INFORMATION ReturnConnectionInfo); + */ +#define TdiBuildListen( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, \ + Flags, RequestConnectionInfo, ReturnConnectionInfo) \ +{ \ + PTDI_REQUEST_KERNEL _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_LISTEN); \ + \ + _Request = (PTDI_REQUEST_KERNEL)&_IrpSp->Parameters; \ + _Request->RequestConnectionInformation = (RequestConnectionInfo); \ + _Request->ReturnConnectionInformation = (ReturnConnectionInfo); \ + _Request->RequestFlags = (Flags); \ +} + +TDIKRNLAPI +VOID +DDKAPI +TdiBuildNetbiosAddress( + IN PUCHAR NetbiosName, + IN BOOLEAN IsGroupName, + IN OUT PTA_NETBIOS_ADDRESS NetworkName); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiBuildNetbiosAddressEa( + IN PUCHAR Buffer, + IN BOOLEAN IsGroupName, + IN PUCHAR NetbiosName); + +/* + * VOID + * TdiBuildQueryInformation( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN UINT QType, + * IN PMDL MdlAddr); + */ +#define TdiBuildQueryInformation( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, QType, MdlAddr) \ +{ \ + PTDI_REQUEST_KERNEL_QUERY_INFORMATION _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_QUERY_INFORMATION); \ + \ + _Request = (PTDI_REQUEST_KERNEL_QUERY_INFORMATION)&_IrpSp->Parameters; \ + _Request->RequestConnectionInformation = NULL; \ + _Request->QueryType = (ULONG)(QType); \ + (Irp)->MdlAddress = (MdlAddr); \ +} + +/* + * VOID + * TdiBuildReceive( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PMDL MdlAddr, + * IN ULONG InFlags, + * IN ULONG ReceiveLen); + */ +#define TdiBuildReceive( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, \ + MdlAddr, InFlags, ReceiveLen) \ +{ \ + PTDI_REQUEST_KERNEL_RECEIVE _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_RECEIVE); \ + \ + _Request = (PTDI_REQUEST_KERNEL_RECEIVE)&_IrpSp->Parameters; \ + _Request->ReceiveFlags = (InFlags); \ + _Request->ReceiveLength = (ReceiveLen); \ + (Irp)->MdlAddress = (MdlAddr); \ +} + +/* + * VOID + * TdiBuildReceiveDatagram( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PMDL MdlAddr, + * IN ULONG ReceiveLen, + * IN PTDI_CONNECTION_INFORMATION ReceiveDatagramInfo, + * OUT PTDI_CONNECTION_INFORMATION ReturnInfo, + * ULONG InFlags); + */ +#define TdiBuildReceiveDatagram( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, MdlAddr, \ + ReceiveLen, ReceiveDatagramInfo, ReturnInfo, InFlags) \ +{ \ + PTDI_REQUEST_KERNEL_RECEIVEDG _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_RECEIVE_DATAGRAM); \ + \ + _Request = (PTDI_REQUEST_KERNEL_RECEIVEDG)&_IrpSp->Parameters; \ + _Request->ReceiveDatagramInformation = (ReceiveDatagramInfo); \ + _Request->ReturnDatagramInformation = (ReturnInfo); \ + _Request->ReceiveLength = (ReceiveLen); \ + _Request->ReceiveFlags = (InFlags); \ + (Irp)->MdlAddress = (MdlAddr); \ +} + +/* + * VOID + * TdiBuildSend( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PMDL MdlAddr, + * IN ULONG InFlags, + * IN ULONG SendLen); + */ +#define TdiBuildSend( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, \ + MdlAddr, InFlags, SendLen) \ +{ \ + PTDI_REQUEST_KERNEL_SEND _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_SEND); \ + \ + _Request = (PTDI_REQUEST_KERNEL_SEND)&_IrpSp->Parameters; \ + _Request->SendFlags = (InFlags); \ + _Request->SendLength = (SendLen); \ + (Irp)->MdlAddress = (MdlAddr); \ +} + +/* + * VOID + * TdiBuildSendDatagram( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN PMDL MdlAddr, + * IN ULONG SendLen, + * IN PTDI_CONNECTION_INFORMATION SendDatagramInfo); + */ +#define TdiBuildSendDatagram( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, \ + MdlAddr, SendLen, SendDatagramInfo) \ +{ \ + PTDI_REQUEST_KERNEL_SENDDG _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_SEND_DATAGRAM); \ + \ + _Request = (PTDI_REQUEST_KERNEL_SENDDG)&_IrpSp->Parameters; \ + _Request->SendDatagramInformation = (SendDatagramInfo); \ + _Request->SendLength = (SendLen); \ + (Irp)->MdlAddress = (MdlAddr); \ +} + +/* + * VOID + * TdiBuildSetEventHandler( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN INT InEventType, + * IN PVOID InEventHandler, + * IN PVOID InEventContext); + */ +#define TdiBuildSetEventHandler( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, \ + InEventType, InEventHandler, InEventContext) \ +{ \ + PTDI_REQUEST_KERNEL_SET_EVENT _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_SET_EVENT_HANDLER); \ + \ + _Request = (PTDI_REQUEST_KERNEL_SET_EVENT)&_IrpSp->Parameters; \ + _Request->EventType = (InEventType); \ + _Request->EventHandler = (PVOID)(InEventHandler); \ + _Request->EventContext = (PVOID)(InEventContext); \ +} + +/* + * VOID + * TdiBuildSetInformation( + * IN PIRP Irp, + * IN PDEVICE_OBJECT DevObj, + * IN PFILE_OBJECT FileObj, + * IN PVOID CompRoutine, + * IN PVOID Contxt, + * IN UINT SType, + * IN PMDL MdlAddr); + */ +#define TdiBuildSetInformation( \ + Irp, DevObj, FileObj, CompRoutine, Contxt, SType, MdlAddr) \ +{ \ + PTDI_REQUEST_KERNEL_SET_INFORMATION _Request; \ + PIO_STACK_LOCATION _IrpSp; \ + \ + _IrpSp = IoGetNextIrpStackLocation(Irp); \ + \ + TdiBuildBaseIrp(Irp, DevObj, FileObj, CompRoutine, \ + Contxt, _IrpSp, TDI_SET_INFORMATION); \ + \ + _Request = (PTDI_REQUEST_KERNEL_SET_INFORMATION)&_IrpSp->Parameters; \ + _Request->RequestConnectionInformation = NULL; \ + _Request->SetType = (ULONG)(SType); \ + (Irp)->MdlAddress = (MdlAddr); \ +} + +/* TDI20_CLIENT_INTERFACE_INFO.TdiVersion constants */ +#define TDI_CURRENT_MAJOR_VERSION 2 +#define TDI_CURRENT_MINOR_VERSION 0 + +#define TDI_CURRENT_VERSION ((TDI_CURRENT_MINOR_VERSION) << 8 \ + | (TDI_CURRENT_MAJOR_VERSION)) + +#define TDI_VERSION_ONE 0x0001 + +typedef enum _TDI_PNP_OPCODE { + TDI_PNP_OP_MIN, + TDI_PNP_OP_ADD, + TDI_PNP_OP_DEL, + TDI_PNP_OP_UPDATE, + TDI_PNP_OP_PROVIDERREADY, + TDI_PNP_OP_NETREADY, + TDI_PNP_OP_ADD_IGNORE_BINDING, + TDI_PNP_OP_DELETE_IGNORE_BINDING, + TDI_PNP_OP_MAX +} TDI_PNP_OPCODE; + +/* TDI_PNP_CONTEXT.ContextType */ +#define TDI_PNP_CONTEXT_TYPE_IF_NAME 0x1 +#define TDI_PNP_CONTEXT_TYPE_IF_ADDR 0x2 +#define TDI_PNP_CONTEXT_TYPE_PDO 0x3 +#define TDI_PNP_CONTEXT_TYPE_FIRST_OR_LAST_IF 0x4 + +typedef struct _TDI_PNP_CONTEXT { + USHORT ContextSize; + USHORT ContextType; + UCHAR ContextData[1]; +} TDI_PNP_CONTEXT, *PTDI_PNP_CONTEXT; + +typedef VOID DDKAPI +(*TDI_ADD_ADDRESS_HANDLER)( + IN PTA_ADDRESS Address); + +typedef VOID DDKAPI +(*TDI_ADD_ADDRESS_HANDLER_V2)( + IN PTA_ADDRESS Address, + IN PUNICODE_STRING DeviceName, + IN PTDI_PNP_CONTEXT Context); + +typedef VOID DDKAPI +(*TDI_BINDING_HANDLER)( + IN TDI_PNP_OPCODE PnPOpcode, + IN PUNICODE_STRING DeviceName, + IN PWSTR MultiSZBindList); + +typedef VOID DDKAPI +(*TDI_BIND_HANDLER)( + IN PUNICODE_STRING DeviceName); + +typedef VOID DDKAPI +(*TDI_DEL_ADDRESS_HANDLER)( + IN PTA_ADDRESS Address); + +typedef VOID DDKAPI +(*TDI_DEL_ADDRESS_HANDLER_V2)( + IN PTA_ADDRESS Address, + IN PUNICODE_STRING DeviceName, + IN PTDI_PNP_CONTEXT Context); + +typedef NTSTATUS DDKAPI +(*TDI_PNP_POWER_HANDLER)( + IN PUNICODE_STRING DeviceName, + IN PNET_PNP_EVENT PowerEvent, + IN PTDI_PNP_CONTEXT Context1, + IN PTDI_PNP_CONTEXT Context2); + +typedef VOID DDKAPI +(*TDI_UNBIND_HANDLER)( + IN PUNICODE_STRING DeviceName); + +typedef VOID DDKAPI +(*ProviderPnPPowerComplete)( + IN PNET_PNP_EVENT NetEvent, + IN NTSTATUS ProviderStatus); + +typedef struct _TDI20_CLIENT_INTERFACE_INFO { + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + UCHAR MajorTdiVersion; + UCHAR MinorTdiVersion; + } DUMMYSTRUCTNAME; + USHORT TdiVersion; + } DUMMYUNIONNAME; + USHORT Unused; + PUNICODE_STRING ClientName; + TDI_PNP_POWER_HANDLER PnPPowerHandler; + _ANONYMOUS_UNION union { + TDI_BINDING_HANDLER BindingHandler; + _ANONYMOUS_STRUCT struct { + TDI_BIND_HANDLER BindHandler; + TDI_UNBIND_HANDLER UnBindHandler; + } DUMMYSTRUCTNAME; + }DUMMYUNIONNAME2; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + TDI_ADD_ADDRESS_HANDLER_V2 AddAddressHandlerV2; + TDI_DEL_ADDRESS_HANDLER_V2 DelAddressHandlerV2; + } DUMMYSTRUCTNAME; + _ANONYMOUS_STRUCT struct { + TDI_ADD_ADDRESS_HANDLER AddAddressHandler; + TDI_DEL_ADDRESS_HANDLER DelAddressHandler; + } DUMMYSTRUCTNAME2; + } DUMMYUNIONNAME3; +} TDI20_CLIENT_INTERFACE_INFO, *PTDI20_CLIENT_INTERFACE_INFO; + +typedef TDI20_CLIENT_INTERFACE_INFO TDI_CLIENT_INTERFACE_INFO; +typedef TDI_CLIENT_INTERFACE_INFO *PTDI_CLIENT_INTERFACE_INFO; + + +/* TDI functions */ + +/* + * VOID + * TdiCompleteRequest( + * IN PIRP Irp, + * IN NTSTATUS Status); + */ +#define TdiCompleteRequest(Irp, Status) \ +{ \ + (Irp)->IoStatus.Status = (Status); \ + IoCompleteRequest((Irp), IO_NETWORK_INCREMENT); \ +} + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiCopyBufferToMdl( + IN PVOID SourceBuffer, + IN ULONG SourceOffset, + IN ULONG SourceBytesToCopy, + IN PMDL DestinationMdlChain, + IN ULONG DestinationOffset, + IN PULONG BytesCopied); + +/* + * VOID + * TdiCopyLookaheadData( + * IN PVOID Destination, + * IN PVOID Source, + * IN ULONG Length, + * IN ULONG ReceiveFlags); + */ +#define TdiCopyLookaheadData(Destination, Source, Length, ReceiveFlags) \ + RtlCopyMemory(Destination, Source, Length) + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiCopyMdlChainToMdlChain ( + IN PMDL SourceMdlChain, + IN ULONG SourceOffset, + IN PMDL DestinationMdlChain, + IN ULONG DestinationOffset, + OUT PULONG BytesCopied); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiCopyMdlToBuffer( + IN PMDL SourceMdlChain, + IN ULONG SourceOffset, + IN PVOID DestinationBuffer, + IN ULONG DestinationOffset, + IN ULONG DestinationBufferSize, + OUT PULONG BytesCopied); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDeregisterAddressChangeHandler( + IN HANDLE BindingHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDeregisterDeviceObject( + IN HANDLE DevRegistrationHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDeregisterNetAddress( + IN HANDLE AddrRegistrationHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDeregisterPnPHandlers( + IN HANDLE BindingHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiDeregisterProvider( + IN HANDLE ProviderHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiEnumerateAddresses( + IN HANDLE BindingHandle); + +TDIKRNLAPI +VOID +DDKAPI +TdiInitialize( + VOID); + +TDIKRNLAPI +VOID +DDKAPI +TdiMapBuffer( + IN PMDL MdlChain); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiMapUserRequest( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PIO_STACK_LOCATION IrpSp); + +TDIKRNLAPI +BOOLEAN +DDKAPI +TdiMatchPdoWithChainedReceiveContext( + IN PVOID TsduDescriptor, + IN PVOID PDO); + +TDIKRNLAPI +VOID +DDKAPI +TdiPnPPowerComplete( + IN HANDLE BindingHandle, + IN PNET_PNP_EVENT PowerEvent, + IN NTSTATUS Status); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiPnPPowerRequest( + IN PUNICODE_STRING DeviceName, + IN PNET_PNP_EVENT PowerEvent, + IN PTDI_PNP_CONTEXT Context1, + IN PTDI_PNP_CONTEXT Context2, + IN ProviderPnPPowerComplete ProtocolCompletionHandler); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiProviderReady( + IN HANDLE ProviderHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiRegisterAddressChangeHandler( + IN TDI_ADD_ADDRESS_HANDLER AddHandler, + IN TDI_DEL_ADDRESS_HANDLER DeleteHandler, + OUT HANDLE *BindingHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiRegisterDeviceObject( + IN PUNICODE_STRING DeviceName, + OUT HANDLE *DevRegistrationHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiRegisterNetAddress( + IN PTA_ADDRESS Address, + IN PUNICODE_STRING DeviceName, + IN PTDI_PNP_CONTEXT Context, + OUT HANDLE *AddrRegistrationHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiRegisterNotificationHandler( + IN TDI_BIND_HANDLER BindHandler, + IN TDI_UNBIND_HANDLER UnbindHandler, + OUT HANDLE *BindingHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiRegisterPnPHandlers( + IN PTDI_CLIENT_INTERFACE_INFO ClientInterfaceInfo, + IN ULONG InterfaceInfoSize, + OUT HANDLE *BindingHandle); + +TDIKRNLAPI +NTSTATUS +DDKAPI +TdiRegisterProvider( + IN PUNICODE_STRING ProviderName, + OUT HANDLE *ProviderHandle); + +TDIKRNLAPI +VOID +DDKAPI +TdiReturnChainedReceives( + IN PVOID *TsduDescriptors, + IN ULONG NumberOfTsdus); + +TDIKRNLAPI +VOID +DDKAPI +TdiUnmapBuffer( + IN PMDL MdlChain); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __TDIKRNL_H */ diff --git a/reactos/w32api/include/ddk/tdistat.h b/reactos/w32api/include/ddk/tdistat.h new file mode 100644 index 00000000000..f0588d2579a --- /dev/null +++ b/reactos/w32api/include/ddk/tdistat.h @@ -0,0 +1,83 @@ +/* + * tdistat.h + * + * TDI status codes + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __TDISTAT_H +#define __TDISTAT_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define TDI_SUCCESS STATUS_SUCCESS +#define TDI_NO_RESOURCES STATUS_INSUFFICIENT_RESOURCES +#define TDI_ADDR_IN_USE STATUS_ADDRESS_ALREADY_EXISTS +#define TDI_BAD_ADDR STATUS_INVALID_ADDRESS_COMPONENT +#define TDI_NO_FREE_ADDR STATUS_TOO_MANY_ADDRESSES +#define TDI_ADDR_INVALID STATUS_INVALID_ADDRESS +#define TDI_ADDR_DELETED STATUS_ADDRESS_CLOSED +#define TDI_BUFFER_OVERFLOW STATUS_BUFFER_OVERFLOW +#define TDI_BAD_EVENT_TYPE STATUS_INVALID_PARAMETER +#define TDI_BAD_OPTION STATUS_INVALID_PARAMETER +#define TDI_CONN_REFUSED STATUS_CONNECTION_REFUSED +#define TDI_INVALID_CONNECTION STATUS_CONNECTION_INVALID +#define TDI_ALREADY_ASSOCIATED STATUS_ADDRESS_ALREADY_ASSOCIATED +#define TDI_NOT_ASSOCIATED STATUS_ADDRESS_NOT_ASSOCIATED +#define TDI_CONNECTION_ACTIVE STATUS_CONNECTION_ACTIVE +#define TDI_CONNECTION_ABORTED STATUS_CONNECTION_ABORTED +#define TDI_CONNECTION_RESET STATUS_CONNECTION_RESET +#define TDI_TIMED_OUT STATUS_IO_TIMEOUT +#define TDI_GRACEFUL_DISC STATUS_GRACEFUL_DISCONNECT +#define TDI_NOT_ACCEPTED STATUS_DATA_NOT_ACCEPTED +#define TDI_MORE_PROCESSING STATUS_MORE_PROCESSING_REQUIRED +#define TDI_INVALID_STATE STATUS_INVALID_DEVICE_STATE +#define TDI_INVALID_PARAMETER STATUS_INVALID_PARAMETER +#define TDI_DEST_NET_UNREACH STATUS_NETWORK_UNREACHABLE +#define TDI_DEST_HOST_UNREACH STATUS_HOST_UNREACHABLE +#define TDI_DEST_UNREACHABLE TDI_DEST_HOST_UNREACH +#define TDI_DEST_PROT_UNREACH STATUS_PROTOCOL_UNREACHABLE +#define TDI_DEST_PORT_UNREACH STATUS_PORT_UNREACHABLE +#define TDI_INVALID_QUERY STATUS_INVALID_DEVICE_REQUEST +#define TDI_REQ_ABORTED STATUS_REQUEST_ABORTED +#define TDI_BUFFER_TOO_SMALL STATUS_BUFFER_TOO_SMALL +#define TDI_CANCELLED STATUS_CANCELLED +#define TDI_BUFFER_TOO_BIG STATUS_INVALID_BUFFER_SIZE +#define TDI_INVALID_REQUEST STATUS_INVALID_DEVICE_REQUEST +#define TDI_PENDING STATUS_PENDING +#define TDI_ITEM_NOT_FOUND STATUS_OBJECT_NAME_NOT_FOUND + +#define TDI_STATUS_BAD_VERSION 0xC0010004L +#define TDI_STATUS_BAD_CHARACTERISTICS 0xC0010005L + +#define TDI_OPTION_EOL 0 + +#define TDI_ADDRESS_OPTION_REUSE 1 +#define TDI_ADDRESS_OPTION_DHCP 2 + +#ifdef __cplusplus +} +#endif + +#endif /* __TDISTAT_H */ diff --git a/reactos/w32api/include/ddk/tvout.h b/reactos/w32api/include/ddk/tvout.h new file mode 100644 index 00000000000..740022a27bf --- /dev/null +++ b/reactos/w32api/include/ddk/tvout.h @@ -0,0 +1,121 @@ +/* + * tvout.h + * + * Definitions for TV-out support + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __TVOUT_H +#define __TVOUT_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +/* VIDEOPARAMETERS.dwCommand constants */ +#define VP_COMMAND_GET 0x00000001 +#define VP_COMMAND_SET 0x00000002 + +/* VIDEOPARAMETERS.dwFlags constants */ +#define VP_FLAGS_TV_MODE 0x00000001 +#define VP_FLAGS_TV_STANDARD 0x00000002 +#define VP_FLAGS_FLICKER 0x00000004 +#define VP_FLAGS_OVERSCAN 0x00000008 +#define VP_FLAGS_MAX_UNSCALED 0x00000010 +#define VP_FLAGS_POSITION 0x00000020 +#define VP_FLAGS_BRIGHTNESS 0x00000040 +#define VP_FLAGS_CONTRAST 0x00000080 +#define VP_FLAGS_COPYPROTECT 0x00000100 + +/* VIDEOPARAMETERS.dwMode constants */ +#define VP_MODE_WIN_GRAPHICS 0x00000001 +#define VP_MODE_TV_PLAYBACK 0x00000002 + +/* VIDEOPARAMETERS.dwTVStandard/dwAvailableTVStandard constants */ +#define VP_TV_STANDARD_NTSC_M 0x00000001 +#define VP_TV_STANDARD_NTSC_M_J 0x00000002 +#define VP_TV_STANDARD_PAL_B 0x00000004 +#define VP_TV_STANDARD_PAL_D 0x00000008 +#define VP_TV_STANDARD_PAL_H 0x00000010 +#define VP_TV_STANDARD_PAL_I 0x00000020 +#define VP_TV_STANDARD_PAL_M 0x00000040 +#define VP_TV_STANDARD_PAL_N 0x00000080 +#define VP_TV_STANDARD_SECAM_B 0x00000100 +#define VP_TV_STANDARD_SECAM_D 0x00000200 +#define VP_TV_STANDARD_SECAM_G 0x00000400 +#define VP_TV_STANDARD_SECAM_H 0x00000800 +#define VP_TV_STANDARD_SECAM_K 0x00001000 +#define VP_TV_STANDARD_SECAM_K1 0x00002000 +#define VP_TV_STANDARD_SECAM_L 0x00004000 +#define VP_TV_STANDARD_WIN_VGA 0x00008000 +#define VP_TV_STANDARD_NTSC_433 0x00010000 +#define VP_TV_STANDARD_PAL_G 0x00020000 +#define VP_TV_STANDARD_PAL_60 0x00040000 +#define VP_TV_STANDARD_SECAM_L1 0x00080000 + +/* VIDEOPARAMETERS.dwMode constants */ +#define VP_CP_TYPE_APS_TRIGGER 0x00000001 +#define VP_CP_TYPE_MACROVISION 0x00000002 + +/* VIDEOPARAMETERS.dwCPCommand constants */ +#define VP_CP_CMD_ACTIVATE 0x00000001 +#define VP_CP_CMD_DEACTIVATE 0x00000002 +#define VP_CP_CMD_CHANGE 0x00000004 + +typedef struct _VIDEOPARAMETERS { + GUID Guid; + DWORD dwOffset; + DWORD dwCommand; + DWORD dwFlags; + DWORD dwMode; + DWORD dwTVStandard; + DWORD dwAvailableModes; + DWORD dwAvailableTVStandard; + DWORD dwFlickerFilter; + DWORD dwOverScanX; + DWORD dwOverScanY; + DWORD dwMaxUnscaledX; + DWORD dwMaxUnscaledY; + DWORD dwPositionX; + DWORD dwPositionY; + DWORD dwBrightness; + DWORD dwContrast; + DWORD dwCPType; + DWORD dwCPCommand; + DWORD dwCPStandard; + DWORD dwCPKey; + BYTE bCP_APSTriggerBits; + BYTE bOEMCopyProtection[256]; +} VIDEOPARAMETERS, *PVIDEOPARAMETERS, FAR *LPVIDEOPARAMETERS; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __TVOUT_H */ diff --git a/reactos/w32api/include/ddk/upssvc.h b/reactos/w32api/include/ddk/upssvc.h new file mode 100644 index 00000000000..4e6f62e2d73 --- /dev/null +++ b/reactos/w32api/include/ddk/upssvc.h @@ -0,0 +1,98 @@ +/* + * upssvc.h + * + * UPS service interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __UPSSVC_H +#define __UPSSVC_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#if defined(_APCUPS_) + #define UPSAPI DECLSPEC_EXPORT +#else + #define UPSAPI DECLSPEC_IMPORT +#endif + + +#define UPS_ONLINE 1 +#define UPS_ONBATTERY 2 +#define UPS_LOWBATTERY 4 +#define UPS_NOCOMM 8 +#define UPS_CRITICAL 16 + +UPSAPI +VOID +DDKAPI +UPSCancelWait(VOID); + +UPSAPI +DWORD +DDKAPI +UPSGetState(VOID); + +#define UPS_INITUNKNOWNERROR 0 +#define UPS_INITOK 1 +#define UPS_INITNOSUCHDRIVER 2 +#define UPS_INITBADINTERFACE 3 +#define UPS_INITREGISTRYERROR 4 +#define UPS_INITCOMMOPENERROR 5 +#define UPS_INITCOMMSETUPERROR 6 + +UPSAPI +DWORD +DDKAPI +UPSInit(VOID); + +UPSAPI +VOID +DDKAPI +UPSStop(VOID); + +UPSAPI +VOID +DDKAPI +UPSTurnOff( + IN DWORD aTurnOffDelay); + +UPSAPI +VOID +DDKAPI +UPSWaitForStateChange( + IN DWORD aCurrentState, + IN DWORD anInterval); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __UPSSVC_H */ diff --git a/reactos/w32api/include/ddk/usb.h b/reactos/w32api/include/ddk/usb.h new file mode 100644 index 00000000000..f3439352b9f --- /dev/null +++ b/reactos/w32api/include/ddk/usb.h @@ -0,0 +1,475 @@ +/* + * usb.h + * + * USB support. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USB_H +#define __USB_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __USBDI_H +#error usbdi.h cannot be included with usb.h +#else + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "usb100.h" + +typedef LONG USBD_STATUS; +typedef PVOID USBD_PIPE_HANDLE; +typedef PVOID USBD_CONFIGURATION_HANDLE; +typedef PVOID USBD_INTERFACE_HANDLE; + +#define USBD_STATUS_SUCCESS ((USBD_STATUS)0x00000000L) +#define USBD_STATUS_PENDING ((USBD_STATUS)0x40000000L) +#define USBD_STATUS_CRC ((USBD_STATUS)0xC0000001L) +#define USBD_STATUS_BTSTUFF ((USBD_STATUS)0xC0000002L) +#define USBD_STATUS_DATA_TOGGLE_MISMATCH ((USBD_STATUS)0xC0000003L) +#define USBD_STATUS_STALL_PID ((USBD_STATUS)0xC0000004L) +#define USBD_STATUS_DEV_NOT_RESPONDING ((USBD_STATUS)0xC0000005L) +#define USBD_STATUS_PID_CHECK_FAILURE ((USBD_STATUS)0xC0000006L) +#define USBD_STATUS_UNEXPECTED_PID ((USBD_STATUS)0xC0000007L) +#define USBD_STATUS_DATA_OVERRUN ((USBD_STATUS)0xC0000008L) +#define USBD_STATUS_DATA_UNDERRUN ((USBD_STATUS)0xC0000009L) +#define USBD_STATUS_RESERVED1 ((USBD_STATUS)0xC000000AL) +#define USBD_STATUS_RESERVED2 ((USBD_STATUS)0xC000000BL) +#define USBD_STATUS_BUFFER_OVERRUN ((USBD_STATUS)0xC000000CL) +#define USBD_STATUS_BUFFER_UNDERRUN ((USBD_STATUS)0xC000000DL) +#define USBD_STATUS_NOT_ACCESSED ((USBD_STATUS)0xC000000FL) +#define USBD_STATUS_FIFO ((USBD_STATUS)0xC0000010L) +#define USBD_STATUS_XACT_ERROR ((USBD_STATUS)0xC0000011L) +#define USBD_STATUS_BABBLE_DETECTED ((USBD_STATUS)0xC0000012L) +#define USBD_STATUS_DATA_BUFFER_ERROR ((USBD_STATUS)0xC0000013L) +#define USBD_STATUS_ENDPOINT_HALTED ((USBD_STATUS)0xC0000030L) +#define USBD_STATUS_INVALID_URB_FUNCTION ((USBD_STATUS)0x80000200L) +#define USBD_STATUS_INVALID_PARAMETER ((USBD_STATUS)0x80000300L) +#define USBD_STATUS_ERROR_BUSY ((USBD_STATUS)0x80000400L) +#define USBD_STATUS_INVALID_PIPE_HANDLE ((USBD_STATUS)0x80000600L) +#define USBD_STATUS_NO_BANDWIDTH ((USBD_STATUS)0x80000700L) +#define USBD_STATUS_INTERNAL_HC_ERROR ((USBD_STATUS)0x80000800L) +#define USBD_STATUS_ERROR_SHORT_TRANSFER ((USBD_STATUS)0x80000900L) +#define USBD_STATUS_BAD_START_FRAME ((USBD_STATUS)0xC0000A00L) +#define USBD_STATUS_ISOCH_REQUEST_FAILED ((USBD_STATUS)0xC0000B00L) +#define USBD_STATUS_FRAME_CONTROL_OWNED ((USBD_STATUS)0xC0000C00L) +#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \ + ((USBD_STATUS)0xC0000D00L) +#define USBD_STATUS_NOT_SUPPORTED ((USBD_STATUS)0xC0000E00L) +#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \ + ((USBD_STATUS)0xC0000F00L) +#define USBD_STATUS_INSUFFICIENT_RESOURCES \ + ((USBD_STATUS)0xC0001000L) +#define USBD_STATUS_SET_CONFIG_FAILED ((USBD_STATUS)0xC0002000L) +#define USBD_STATUS_BUFFER_TOO_SMALL ((USBD_STATUS)0xC0003000L) +#define USBD_STATUS_INTERFACE_NOT_FOUND ((USBD_STATUS)0xC0004000L) +#define USBD_STATUS_INAVLID_PIPE_FLAGS ((USBD_STATUS)0xC0005000L) +#define USBD_STATUS_TIMEOUT ((USBD_STATUS)0xC0006000L) +#define USBD_STATUS_DEVICE_GONE ((USBD_STATUS)0xC0007000L) +#define USBD_STATUS_STATUS_NOT_MAPPED ((USBD_STATUS)0xC0008000L) +#define USBD_STATUS_CANCELED ((USBD_STATUS)0xC0010000L) +#define USBD_STATUS_ISO_NOT_ACCESSED_BY_HW \ + ((USBD_STATUS)0xC0020000L) +#define USBD_STATUS_ISO_TD_ERROR ((USBD_STATUS)0xC0030000L) +#define USBD_STATUS_ISO_NA_LATE_USBPORT ((USBD_STATUS)0xC0040000L) +#define USBD_STATUS_ISO_NOT_ACCESSED_LATE ((USBD_STATUS)0xC0050000L) + +#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0) +#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1) +#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0) + +/* URB TransferFlags constants */ +#define USBD_TRANSFER_DIRECTION(x) ((x) & USBD_TRANSFER_DIRECTION_IN) +#define USBD_TRANSFER_DIRECTION_OUT 0 +#define USBD_TRANSFER_DIRECTION_BIT 0 +#define USBD_TRANSFER_DIRECTION_IN (1 << USBD_TRANSFER_DIRECTION_BIT) +#define USBD_SHORT_TRANSFER_OK_BIT 1 +#define USBD_SHORT_TRANSFER_OK (1 << USBD_SHORT_TRANSFER_OK_BIT) +#define USBD_START_ISO_TRANSFER_ASAP_BIT 2 +#define USBD_START_ISO_TRANSFER_ASAP (1 << USBD_START_ISO_TRANSFER_ASAP_BIT) +#define USBD_DEFAULT_PIPE_TRANSFER_BIT 3 +#define USBD_DEFAULT_PIPE_TRANSFER (1 << USBD_DEFAULT_PIPE_TRANSFER_BIT) + +#define USBD_TRANSFER_DIRECTION_FLAG(flags) ((flags) & USBD_TRANSFER_DIRECTION) + +#define VALID_TRANSFER_FLAGS_MASK \ + (USBD_SHORT_TRANSFER_OK | \ + USBD_TRANSFER_DIRECTION | \ + USBD_START_ISO_TRANSFER_ASAP | \ + USBD_DEFAULT_PIPE_TRANSFER) + +#define USB_DEFAULT_DEVICE_ADDRESS 0 +#define USB_DEFAULT_ENDPOINT_ADDRESS 0 +#define USB_DEFAULT_MAX_PACKET 64 +#define USBD_ISO_START_FRAME_RANGE 1024 +#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE 0xFFFFFFFF + +typedef enum _USB_CONTROLLER_FLAVOR { + USB_HcGeneric = 0, + OHCI_Generic = 100, + OHCI_Hydra, + OHCI_NEC, + UHCI_Generic = 200, + UHCI_Piix4, + UHCI_Piix3, + UHCI_Ich2_1, + UHCI_Ich2_2, + UHCI_Ich1, + UHCI_VIA = 250, + EHCI_Generic = 1000, + EHCI_NEC = 2000, + EHCI_Lucent = 3000 +} USB_CONTROLLER_FLAVOR; + +struct _URB_HEADER { + USHORT Length; + USHORT Function; + USBD_STATUS Status; + PVOID UsbdDeviceHandle; + ULONG UsbdFlags; +}; + +typedef struct _USBD_VERSION_INFORMATION { + ULONG USBDI_Version; + ULONG Supported_USB_Version; +} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION; + +struct _URB_HCD_AREA { + PVOID Reserved8[8]; +}; + +struct _URB_BULK_OR_INTERRUPT_TRANSFER { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; +}; + +struct _URB_CONTROL_DESCRIPTOR_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + USHORT Reserved1; + UCHAR Index; + UCHAR DescriptorType; + USHORT LanguageId; + USHORT Reserved2; +}; + +struct _URB_CONTROL_FEATURE_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved2; + ULONG Reserved3; + PVOID Reserved4; + PMDL Reserved5; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + USHORT Reserved0; + USHORT FeatureSelector; + USHORT Index; + USHORT Reserved1; +}; + +struct _URB_CONTROL_GET_CONFIGURATION_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR Reserved1[8]; +}; + +struct _URB_CONTROL_GET_INTERFACE_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR Reserved1[4]; + USHORT Interface; + USHORT Reserved2; +}; + +struct _URB_CONTROL_GET_STATUS_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR Reserved1[4]; + USHORT Index; + USHORT Reserved2; +}; + +struct _URB_CONTROL_TRANSFER { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR SetupPacket[8]; +}; + +struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR RequestTypeReservedBits; + UCHAR Request; + USHORT Value; + USHORT Index; + USHORT Reserved1; +}; + +struct _URB_FRAME_LENGTH_CONTROL { + struct _URB_HEADER Hdr; +}; + +struct _URB_GET_CURRENT_FRAME_NUMBER { + struct _URB_HEADER Hdr; + ULONG FrameNumber; +}; + +struct _URB_GET_FRAME_LENGTH { + struct _URB_HEADER Hdr; + ULONG FrameLength; + ULONG FrameNumber; +}; + +typedef struct _USBD_ISO_PACKET_DESCRIPTOR { + ULONG Offset; + ULONG Length; + USBD_STATUS Status; +} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR; + +struct _URB_ISOCH_TRANSFER { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + ULONG StartFrame; + ULONG NumberOfPackets; + ULONG ErrorCount; + USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1]; +}; + +typedef enum _USBD_PIPE_TYPE { + UsbdPipeTypeControl, + UsbdPipeTypeIsochronous, + UsbdPipeTypeBulk, + UsbdPipeTypeInterrupt +} USBD_PIPE_TYPE; + +typedef struct _USBD_PIPE_INFORMATION { + USHORT MaximumPacketSize; + UCHAR EndpointAddress; + UCHAR Interval; + USBD_PIPE_TYPE PipeType; + USBD_PIPE_HANDLE PipeHandle; + ULONG MaximumTransferSize; + ULONG PipeFlags; +} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION ; + +#define USBD_PIPE_DIRECTION_IN(pipeInformation) \ + ((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK) + +typedef struct _USBD_INTERFACE_INFORMATION { + USHORT Length; + UCHAR InterfaceNumber; + UCHAR AlternateSetting; + UCHAR Class; + UCHAR SubClass; + UCHAR Protocol; + UCHAR Reserved; + USBD_INTERFACE_HANDLE InterfaceHandle; + ULONG NumberOfPipes; + USBD_PIPE_INFORMATION Pipes[1]; +} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION; + +struct _URB_SELECT_INTERFACE { + struct _URB_HEADER Hdr; + USBD_CONFIGURATION_HANDLE ConfigurationHandle; + USBD_INTERFACE_INFORMATION Interface; +}; + +struct _URB_SELECT_CONFIGURATION { + struct _URB_HEADER Hdr; + PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor; + USBD_CONFIGURATION_HANDLE ConfigurationHandle; + USBD_INTERFACE_INFORMATION Interface; +}; + +struct _URB_PIPE_REQUEST { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG Reserved; +}; + +struct _URB_SET_FRAME_LENGTH { + struct _URB_HEADER Hdr; + LONG FrameLengthDelta; +}; + +typedef struct _URB { + _ANONYMOUS_UNION union { + struct _URB_HEADER UrbHeader; + struct _URB_SELECT_INTERFACE UrbSelectInterface; + struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration; + struct _URB_PIPE_REQUEST UrbPipeRequest; + struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl; + struct _URB_GET_FRAME_LENGTH UrbGetFrameLength; + struct _URB_SET_FRAME_LENGTH UrbSetFrameLength; + struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber; + struct _URB_CONTROL_TRANSFER UrbControlTransfer; + struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer; + struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer; + struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest; + struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest; + struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest; + struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest; + struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest; + struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest; + } DUMMYUNIONNAME; +} URB, *PURB; + +#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1) + +#define URB_FUNCTION_SELECT_CONFIGURATION 0x0000 +#define URB_FUNCTION_SELECT_INTERFACE 0x0001 +#define URB_FUNCTION_ABORT_PIPE 0x0002 +#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL 0x0003 +#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL 0x0004 +#define URB_FUNCTION_GET_FRAME_LENGTH 0x0005 +#define URB_FUNCTION_SET_FRAME_LENGTH 0x0006 +#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER 0x0007 +#define URB_FUNCTION_CONTROL_TRANSFER 0x0008 +#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 0x0009 +#define URB_FUNCTION_ISOCH_TRANSFER 0x000A +#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE 0x000B +#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE 0x000C +#define URB_FUNCTION_SET_FEATURE_TO_DEVICE 0x000D +#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE 0x000E +#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT 0x000F +#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE 0x0010 +#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE 0x0011 +#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT 0x0012 +#define URB_FUNCTION_GET_STATUS_FROM_DEVICE 0x0013 +#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE 0x0014 +#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT 0x0015 +#define URB_FUNCTION_RESERVED_0X0016 0x0016 +#define URB_FUNCTION_VENDOR_DEVICE 0x0017 +#define URB_FUNCTION_VENDOR_INTERFACE 0x0018 +#define URB_FUNCTION_VENDOR_ENDPOINT 0x0019 +#define URB_FUNCTION_CLASS_DEVICE 0x001A +#define URB_FUNCTION_CLASS_INTERFACE 0x001B +#define URB_FUNCTION_CLASS_ENDPOINT 0x001C +#define URB_FUNCTION_RESERVE_0X001D 0x001D +#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL 0x001E +#define URB_FUNCTION_CLASS_OTHER 0x001F +#define URB_FUNCTION_VENDOR_OTHER 0x0020 +#define URB_FUNCTION_GET_STATUS_FROM_OTHER 0x0021 +#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER 0x0022 +#define URB_FUNCTION_SET_FEATURE_TO_OTHER 0x0023 +#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT 0x0024 +#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT 0x0025 +#define URB_FUNCTION_GET_CONFIGURATION 0x0026 +#define URB_FUNCTION_GET_INTERFACE 0x0027 +#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE 0x0028 +#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE 0x0029 +#define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR 0x002A +#define URB_FUNCTION_RESERVE_0X002B 0x002B +#define URB_FUNCTION_RESERVE_0X002C 0x002C +#define URB_FUNCTION_RESERVE_0X002D 0x002D +#define URB_FUNCTION_RESERVE_0X002E 0x002E +#define URB_FUNCTION_RESERVE_0X002F 0x002F +#define URB_FUNCTION_SYNC_RESET_PIPE 0x0030 +#define URB_FUNCTION_SYNC_CLEAR_STALL 0x0031 + +#define USBD_PF_CHANGE_MAX_PACKET 0x00000001 +#define USBD_PF_SHORT_PACKET_OPT 0x00000002 +#define USBD_PF_ENABLE_RT_THREAD_ACCESS 0x00000004 +#define USBD_PF_MAP_ADD_TRANSFERS 0x00000008 + +#define USBD_PF_VALID_MASK (USBD_PF_CHANGE_MAX_PACKET | \ + USBD_PF_SHORT_PACKET_OPT | \ + USBD_PF_ENABLE_RT_THREAD_ACCESS | \ + USBD_PF_MAP_ADD_TRANSFERS) + +#define OS_STRING_DESCRIPTOR_INDEX 0xEE + +#define MS_GENRE_DESCRIPTOR_INDEX 0x0001 +#define MS_POWER_DESCRIPTOR_INDEX 0x0002 + +#define MS_OS_STRING_SIGNATURE L"MSFT100" + +typedef struct _OS_STRING { + UCHAR bLength; + UCHAR bDescriptorType; + WCHAR MicrosoftString[7]; + UCHAR bVendorCode; + UCHAR bPad; +} OS_STRING, *POS_STRING; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* defined __USBDI_H */ + +#endif /* __USB_H */ diff --git a/reactos/w32api/include/ddk/usb100.h b/reactos/w32api/include/ddk/usb100.h new file mode 100644 index 00000000000..df28f1712ed --- /dev/null +++ b/reactos/w32api/include/ddk/usb100.h @@ -0,0 +1,233 @@ +/* + * usb100.h + * + * USB 1.0 support + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USB100_H +#define __USB100_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define MAXIMUM_USB_STRING_LENGTH 255 + +#define USB_DEVICE_CLASS_RESERVED 0x00 +#define USB_DEVICE_CLASS_AUDIO 0x01 +#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 +#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 +#define USB_DEVICE_CLASS_MONITOR 0x04 +#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 +#define USB_DEVICE_CLASS_POWER 0x06 +#define USB_DEVICE_CLASS_PRINTER 0x07 +#define USB_DEVICE_CLASS_STORAGE 0x08 +#define USB_DEVICE_CLASS_HUB 0x09 +#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF + +#define USB_RESERVED_DESCRIPTOR_TYPE 0x06 +#define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07 +#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08 + +#define USB_REQUEST_GET_STATUS 0x00 +#define USB_REQUEST_CLEAR_FEATURE 0x01 +#define USB_REQUEST_SET_FEATURE 0x03 +#define USB_REQUEST_SET_ADDRESS 0x05 +#define USB_REQUEST_GET_DESCRIPTOR 0x06 +#define USB_REQUEST_SET_DESCRIPTOR 0x07 +#define USB_REQUEST_GET_CONFIGURATION 0x08 +#define USB_REQUEST_SET_CONFIGURATION 0x09 +#define USB_REQUEST_GET_INTERFACE 0x0A +#define USB_REQUEST_SET_INTERFACE 0x0B +#define USB_REQUEST_SYNC_FRAME 0x0C + +#define USB_GETSTATUS_SELF_POWERED 0x01 +#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02 + +#define BMREQUEST_HOST_TO_DEVICE 0 +#define BMREQUEST_DEVICE_TO_HOST 1 + +#define BMREQUEST_STANDARD 0 +#define BMREQUEST_CLASS 1 +#define BMREQUEST_VENDOR 2 + +#define BMREQUEST_TO_DEVICE 0 +#define BMREQUEST_TO_INTERFACE 1 +#define BMREQUEST_TO_ENDPOINT 2 +#define BMREQUEST_TO_OTHER 3 + +/* USB_COMMON_DESCRIPTOR.bDescriptorType constants */ +#define USB_DEVICE_DESCRIPTOR_TYPE 0x01 +#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 +#define USB_STRING_DESCRIPTOR_TYPE 0x03 +#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04 +#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 + +typedef struct _USB_COMMON_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; +} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR; + +#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d << 8 | i)) + +/* USB_CONFIGURATION_DESCRIPTOR.bmAttributes constants */ +#define USB_CONFIG_POWERED_MASK 0xc0 +#define USB_CONFIG_BUS_POWERED 0x80 +#define USB_CONFIG_SELF_POWERED 0x40 +#define USB_CONFIG_REMOTE_WAKEUP 0x20 + +typedef struct _USB_CONFIGURATION_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; + USHORT wTotalLength; + UCHAR bNumInterfaces; + UCHAR iConfiguration; + UCHAR bmAttributes; + UCHAR MaxPower; +} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR; + +typedef struct _USB_DEVICE_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; + USHORT bcdUSB; + UCHAR bDeviceClass; + UCHAR bDeviceSubClass; + UCHAR bDeviceProtocol; + UCHAR bMaxPacketSize0; + USHORT idVendor; + USHORT idProduct; + USHORT bcdDevice; + UCHAR iManufacturer; + UCHAR iProduct; + UCHAR iSerialNumber; + UCHAR bNumConfigurations; +} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR; + +#define USB_ENDPOINT_DIRECTION_MASK 0x80 + +#define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK)) +#define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK) + +/* USB_ENDPOINT_DESCRIPTOR.bmAttributes constants */ +#define USB_ENDPOINT_TYPE_MASK 0x03 +#define USB_ENDPOINT_TYPE_CONTROL 0x00 +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 +#define USB_ENDPOINT_TYPE_BULK 0x02 +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 + +typedef struct _USB_ENDPOINT_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; + UCHAR bEndpointAddress; + UCHAR bmAttributes; + USHORT wMaxPacketSize; + UCHAR bInterval; +} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR; + +#define USB_FEATURE_ENDPOINT_STALL 0x0000 +#define USB_FEATURE_REMOTE_WAKEUP 0x0001 + +typedef struct _USB_INTERFACE_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; + UCHAR bInterfaceNumber; + UCHAR bAlternateSetting; + UCHAR bNumEndpoints; + UCHAR bInterfaceClass; + UCHAR bInterfaceSubClass; + UCHAR bInterfaceProtocol; + UCHAR iInterface; +} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR; + +typedef struct _USB_STRING_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; + WCHAR bString[1]; +} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR; + +typedef struct _USB_HUB_DESCRIPTOR { + UCHAR bDescriptorLength; + UCHAR bDescriptorType; + UCHAR bNumberOfPorts; + USHORT wHubCharacteristics; + UCHAR bPowerOnToPowerGood; + UCHAR bHubControlCurrent; + UCHAR bRemoveAndPowerMask[64]; +} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR; + +#define USB_SUPPORT_D0_COMMAND 0x01 +#define USB_SUPPORT_D1_COMMAND 0x02 +#define USB_SUPPORT_D2_COMMAND 0x04 +#define USB_SUPPORT_D3_COMMAND 0x08 + +#define USB_SUPPORT_D1_WAKEUP 0x10 +#define USB_SUPPORT_D2_WAKEUP 0x20 + +typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; + UCHAR SelfPowerConsumedD0[3]; + UCHAR bPowerSummaryId; + UCHAR bBusPowerSavingD1; + UCHAR bSelfPowerSavingD1; + UCHAR bBusPowerSavingD2; + UCHAR bSelfPowerSavingD2; + UCHAR bBusPowerSavingD3; + UCHAR bSelfPowerSavingD3; + USHORT TransitionTimeFromD1; + USHORT TransitionTimeFromD2; + USHORT TransitionTimeFromD3; +} USB_CONFIGURATION_POWER_DESCRIPTOR, *PUSB_CONFIGURATION_POWER_DESCRIPTOR; + +#define USB_FEATURE_INTERFACE_POWER_D0 0x0002 +#define USB_FEATURE_INTERFACE_POWER_D1 0x0003 +#define USB_FEATURE_INTERFACE_POWER_D2 0x0004 +#define USB_FEATURE_INTERFACE_POWER_D3 0x0005 + +typedef struct _USB_INTERFACE_POWER_DESCRIPTOR { + UCHAR bLength; + UCHAR bDescriptorType; + UCHAR bmCapabilitiesFlags; + UCHAR bBusPowerSavingD1; + UCHAR bSelfPowerSavingD1; + UCHAR bBusPowerSavingD2; + UCHAR bSelfPowerSavingD2; + UCHAR bBusPowerSavingD3; + UCHAR bSelfPowerSavingD3; + USHORT TransitionTimeFromD1; + USHORT TransitionTimeFromD2; + USHORT TransitionTimeFromD3; +} USB_INTERFACE_POWER_DESCRIPTOR, *PUSB_INTERFACE_POWER_DESCRIPTOR; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __USB100_H */ diff --git a/reactos/w32api/include/ddk/usbcamdi.h b/reactos/w32api/include/ddk/usbcamdi.h new file mode 100644 index 00000000000..5d96435d86a --- /dev/null +++ b/reactos/w32api/include/ddk/usbcamdi.h @@ -0,0 +1,404 @@ +/* + * usbcamdi.h + * + * USB Camera driver interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USBCAMDI_H +#define __USBCAMDI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#if !defined(__USB_H) && !defined(__USBDI_H) +#error include usb.h or usbdi.h before usbcamdi.h +#else + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#if defined(_BATTERYCLASS_) + #define USBCAMAPI DECLSPEC_EXPORT +#else + #define USBCAMAPI DECLSPEC_IMPORT +#endif + + +/* FIXME: Unknown definition */ +typedef PVOID PHW_STREAM_REQUEST_BLOCK; + +DEFINE_GUID(GUID_USBCAMD_INTERFACE, + 0x2bcb75c0, 0xb27f, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5); + +#define USBCAMD_PROCESSPACKETEX_DropFrame 0x0002 +#define USBCAMD_PROCESSPACKETEX_NextFrameIsStill 0x0004 +#define USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill 0x0008 + +#define USBCAMD_DATA_PIPE 0x0001 +#define USBCAMD_MULTIPLEX_PIPE 0x0002 +#define USBCAMD_SYNC_PIPE 0x0004 +#define USBCAMD_DONT_CARE_PIPE 0x0008 + +#define USBCAMD_VIDEO_STREAM 0x1 +#define USBCAMD_STILL_STREAM 0x2 +#define USBCAMD_VIDEO_STILL_STREAM (USBCAMD_VIDEO_STREAM | USBCAMD_STILL_STREAM) + +#define USBCAMD_STOP_STREAM 0x00000001 +#define USBCAMD_START_STREAM 0x00000000 + +typedef struct _pipe_config_descriptor { + CHAR StreamAssociation; + UCHAR PipeConfigFlags; +} USBCAMD_Pipe_Config_Descriptor, *PUSBCAMD_Pipe_Config_Descriptor; + +typedef enum { + USBCAMD_CamControlFlag_NoVideoRawProcessing = 1, + USBCAMD_CamControlFlag_NoStillRawProcessing = 2, + USBCAMD_CamControlFlag_AssociatedFormat = 4, + USBCAMD_CamControlFlag_EnableDeviceEvents = 8 +} USBCAMD_CamControlFlags; + +typedef NTSTATUS DDKAPI +(*PCAM_ALLOCATE_BW_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PULONG RawFrameLength, + PVOID Format); + +typedef NTSTATUS DDKAPI +(*PCAM_ALLOCATE_BW_ROUTINE_EX)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PULONG RawFrameLength, + PVOID Format, + ULONG StreamNumber); + +typedef NTSTATUS DDKAPI +(*PCAM_CONFIGURE_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PUSBD_INTERFACE_INFORMATION Interface, + PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, + PLONG DataPipeIndex, + PLONG SyncPipeIndex); + +typedef NTSTATUS DDKAPI +(*PCAM_CONFIGURE_ROUTINE_EX)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PUSBD_INTERFACE_INFORMATION Interface, + PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, + ULONG PipeConfigListSize, + PUSBCAMD_Pipe_Config_Descriptor PipeConfig, + PUSB_DEVICE_DESCRIPTOR DeviceDescriptor); + +typedef NTSTATUS DDKAPI +(*PCAM_FREE_BW_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext); + +typedef NTSTATUS DDKAPI +(*PCAM_FREE_BW_ROUTINE_EX)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + ULONG StreamNumber); + +typedef NTSTATUS DDKAPI +(*PCAM_INITIALIZE_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext); + +typedef VOID DDKAPI +(*PCAM_NEW_FRAME_ROUTINE)( + PVOID DeviceContext, + PVOID FrameContext); + +typedef VOID DDKAPI +(*PCAM_NEW_FRAME_ROUTINE_EX)( + PVOID DeviceContext, + PVOID FrameContext, + ULONG StreamNumber, + PULONG FrameLength); + +typedef NTSTATUS DDKAPI +(*PCAM_PROCESS_RAW_FRAME_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PVOID FrameContext, + PVOID FrameBuffer, + ULONG FrameLength, + PVOID RawFrameBuffer, + ULONG RawFrameLength, + ULONG NumberOfPackets, + PULONG BytesReturned); + +typedef NTSTATUS DDKAPI +(*PCAM_PROCESS_RAW_FRAME_ROUTINE_EX)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PVOID FrameContext, + PVOID FrameBuffer, + ULONG FrameLength, + PVOID RawFrameBuffer, + ULONG RawFrameLength, + ULONG NumberOfPackets, + PULONG BytesReturned, + ULONG ActualRawFrameLength, + ULONG StreamNumber); + +typedef ULONG DDKAPI +(*PCAM_PROCESS_PACKET_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PVOID CurrentFrameContext, + PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket, + PVOID SyncBuffer, + PUSBD_ISO_PACKET_DESCRIPTOR DataPacket, + PVOID DataBuffer, + PBOOLEAN FrameComplete, + PBOOLEAN NextFrameIsStill); + +typedef ULONG DDKAPI +(*PCAM_PROCESS_PACKET_ROUTINE_EX)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + PVOID CurrentFrameContext, + PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket, + PVOID SyncBuffer, + PUSBD_ISO_PACKET_DESCRIPTOR DataPacket, + PVOID DataBuffer, + PBOOLEAN FrameComplete, + PULONG PacketFlag, + PULONG ValidDataOffset); + +typedef NTSTATUS DDKAPI +(*PCAM_STATE_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext); + +typedef NTSTATUS DDKAPI +(*PCAM_START_CAPTURE_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext); + +typedef NTSTATUS DDKAPI +(*PCAM_START_CAPTURE_ROUTINE_EX)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + ULONG StreamNumber); + +typedef NTSTATUS DDKAPI +(*PCAM_STOP_CAPTURE_ROUTINE)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext); + +typedef NTSTATUS DDKAPI +(*PCAM_STOP_CAPTURE_ROUTINE_EX)( + PDEVICE_OBJECT BusDeviceObject, + PVOID DeviceContext, + ULONG StreamNumber); + +typedef struct _USBCAMD_DEVICE_DATA { + ULONG Sig; + PCAM_INITIALIZE_ROUTINE CamInitialize; + PCAM_INITIALIZE_ROUTINE CamUnInitialize; + PCAM_PROCESS_PACKET_ROUTINE CamProcessUSBPacket; + PCAM_NEW_FRAME_ROUTINE CamNewVideoFrame; + PCAM_PROCESS_RAW_FRAME_ROUTINE CamProcessRawVideoFrame; + PCAM_START_CAPTURE_ROUTINE CamStartCapture; + PCAM_STOP_CAPTURE_ROUTINE CamStopCapture; + PCAM_CONFIGURE_ROUTINE CamConfigure; + PCAM_STATE_ROUTINE CamSaveState; + PCAM_STATE_ROUTINE CamRestoreState; + PCAM_ALLOCATE_BW_ROUTINE CamAllocateBandwidth; + PCAM_FREE_BW_ROUTINE CamFreeBandwidth; +} USBCAMD_DEVICE_DATA, *PUSBCAMD_DEVICE_DATA; + +typedef struct _USBCAMD_DEVICE_DATA2 { + ULONG Sig; + PCAM_INITIALIZE_ROUTINE CamInitialize; + PCAM_INITIALIZE_ROUTINE CamUnInitialize; + PCAM_PROCESS_PACKET_ROUTINE_EX CamProcessUSBPacketEx; + PCAM_NEW_FRAME_ROUTINE_EX CamNewVideoFrameEx; + PCAM_PROCESS_RAW_FRAME_ROUTINE_EX CamProcessRawVideoFrameEx; + PCAM_START_CAPTURE_ROUTINE_EX CamStartCaptureEx; + PCAM_STOP_CAPTURE_ROUTINE_EX CamStopCaptureEx; + PCAM_CONFIGURE_ROUTINE_EX CamConfigureEx; + PCAM_STATE_ROUTINE CamSaveState; + PCAM_STATE_ROUTINE CamRestoreState; + PCAM_ALLOCATE_BW_ROUTINE_EX CamAllocateBandwidthEx; + PCAM_FREE_BW_ROUTINE_EX CamFreeBandwidthEx; +} USBCAMD_DEVICE_DATA2, *PUSBCAMD_DEVICE_DATA2; + +USBCAMAPI +ULONG +DDKAPI +USBCAMD_InitializeNewInterface( + IN PVOID DeviceContext, + IN PVOID DeviceData, + IN ULONG Version, + IN ULONG CamControlFlag); + +typedef VOID DDKAPI +(*PCOMMAND_COMPLETE_FUNCTION)( + PVOID DeviceContext, + PVOID CommandContext, + NTSTATUS NtStatus); + +typedef NTSTATUS DDKAPI +(*PFNUSBCAMD_BulkReadWrite)( + IN PVOID DeviceContext, + IN USHORT PipeIndex, + IN PVOID Buffer, + IN ULONG BufferLength, + IN PCOMMAND_COMPLETE_FUNCTION CommandComplete, + IN PVOID CommandContext); + +typedef NTSTATUS DDKAPI +(*PFNUSBCAMD_SetIsoPipeState)( + IN PVOID DeviceContext, + IN ULONG PipeStateFlags); + +typedef NTSTATUS DDKAPI +(*PFNUSBCAMD_CancelBulkReadWrite)( + IN PVOID DeviceContext, + IN ULONG PipeIndex); + +typedef NTSTATUS DDKAPI +(*PFNUSBCAMD_SetVideoFormat)( + IN PVOID DeviceContext, + IN PHW_STREAM_REQUEST_BLOCK pSrb); + +typedef NTSTATUS DDKAPI +(*PFNUSBCAMD_WaitOnDeviceEvent)( + IN PVOID DeviceContext, + IN ULONG PipeIndex, + IN PVOID Buffer, + IN ULONG BufferLength, + IN PCOMMAND_COMPLETE_FUNCTION EventComplete, + IN PVOID EventContext, + IN BOOLEAN LoopBack); + +USBCAMAPI +PVOID +DDKAPI +USBCAMD_AdapterReceivePacket( + IN PHW_STREAM_REQUEST_BLOCK Srb, + IN PUSBCAMD_DEVICE_DATA DeviceData, + IN PDEVICE_OBJECT *DeviceObject, + IN BOOLEAN NeedsCompletion); + +USBCAMAPI +NTSTATUS +DDKAPI +USBCAMD_ControlVendorCommand( + IN PVOID DeviceContext, + IN UCHAR Request, + IN USHORT Value, + IN USHORT Index, + IN PVOID Buffer, + IN OUT PULONG BufferLength, + IN BOOLEAN GetData, + IN PCOMMAND_COMPLETE_FUNCTION CommandComplete, + IN PVOID CommandContext); + +typedef VOID DDKAPI +(*PADAPTER_RECEIVE_PACKET_ROUTINE)( + IN PHW_STREAM_REQUEST_BLOCK Srb); + +USBCAMAPI +ULONG +DDKAPI +USBCAMD_DriverEntry( + PVOID Context1, + PVOID Context2, + ULONG DeviceContextSize, + ULONG FrameContextSize, + PADAPTER_RECEIVE_PACKET_ROUTINE ReceivePacket); + +USBCAMAPI +NTSTATUS +DDKAPI +USBCAMD_GetRegistryKeyValue( + IN HANDLE Handle, + IN PWCHAR KeyNameString, + IN ULONG KeyNameStringLength, + IN PVOID Data, + IN ULONG DataLength); + +USBCAMAPI +NTSTATUS +DDKAPI +USBCAMD_SelectAlternateInterface( + IN PVOID DeviceContext, + IN OUT PUSBD_INTERFACE_INFORMATION RequestInterface); + +#define USBCAMD_VERSION_200 0x200 + +typedef struct _USBCAMD_INTERFACE { + INTERFACE Interface; + PFNUSBCAMD_WaitOnDeviceEvent USBCAMD_WaitOnDeviceEvent; + PFNUSBCAMD_BulkReadWrite USBCAMD_BulkReadWrite; + PFNUSBCAMD_SetVideoFormat USBCAMD_SetVideoFormat; + PFNUSBCAMD_SetIsoPipeState USBCAMD_SetIsoPipeState; + PFNUSBCAMD_CancelBulkReadWrite USBCAMD_CancelBulkReadWrite; +} USBCAMD_INTERFACE, *PUSBCAMD_INTERFACE; + +typedef VOID DDKAPI +(*PSTREAM_RECEIVE_PACKET)( + IN PVOID Srb, + IN PVOID DeviceContext, + IN PBOOLEAN Completed); + +#if defined(DEBUG_LOG) + +USBCAMAPI +VOID +DDKAPI +USBCAMD_Debug_LogEntry( + IN CHAR *Name, + IN ULONG Info1, + IN ULONG Info2, + IN ULONG Info3); + +#define ILOGENTRY(sig, info1, info2, info3) \ + USBCAMD_Debug_LogEntry(sig, (ULONG)info1, (ULONG)info2, (ULONG)info3) + +#else + +#define ILOGENTRY(sig, info1, info2, info3) + +#endif /* DEBUG_LOG */ + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(__USB_H) && !defined(__USBDI_H) */ + + +#endif /* __USBCAMDI_H */ diff --git a/reactos/w32api/include/ddk/usbdi.h b/reactos/w32api/include/ddk/usbdi.h new file mode 100644 index 00000000000..7caca07a765 --- /dev/null +++ b/reactos/w32api/include/ddk/usbdi.h @@ -0,0 +1,412 @@ +/* + * usbdi.h + * + * USBD and USB device driver definitions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USBDI_H +#define __USBDI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __USB_H +#error usb.h cannot be included with usbdi.h +#else + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "usbioctl.h" + + +#define USBDI_VERSION 0x300 + +#define USB_DEFAULT_DEVICE_ADDRESS 0 +#define USB_DEFAULT_ENDPOINT_ADDRESS 0 +#define USB_DEFAULT_MAX_PACKET 64 + +#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1) + +#define URB_FUNCTION_SELECT_CONFIGURATION 0x0000 +#define URB_FUNCTION_SELECT_INTERFACE 0x0001 +#define URB_FUNCTION_ABORT_PIPE 0x0002 +#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL 0x0003 +#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL 0x0004 +#define URB_FUNCTION_GET_FRAME_LENGTH 0x0005 +#define URB_FUNCTION_SET_FRAME_LENGTH 0x0006 +#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER 0x0007 +#define URB_FUNCTION_CONTROL_TRANSFER 0x0008 +#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 0x0009 +#define URB_FUNCTION_ISOCH_TRANSFER 0x000A +#define URB_FUNCTION_RESET_PIPE 0x001E +#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE 0x000B +#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT 0x0024 +#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE 0x0028 +#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE 0x000C +#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT 0x0025 +#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE 0x0029 +#define URB_FUNCTION_SET_FEATURE_TO_DEVICE 0x000D +#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE 0x000E +#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT 0x000F +#define URB_FUNCTION_SET_FEATURE_TO_OTHER 0x0023 +#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE 0x0010 +#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE 0x0011 +#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT 0x0012 +#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER 0x0022 +#define URB_FUNCTION_GET_STATUS_FROM_DEVICE 0x0013 +#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE 0x0014 +#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT 0x0015 +#define URB_FUNCTION_GET_STATUS_FROM_OTHER 0x0021 +#define URB_FUNCTION_RESERVED0 0x0016 +#define URB_FUNCTION_VENDOR_DEVICE 0x0017 +#define URB_FUNCTION_VENDOR_INTERFACE 0x0018 +#define URB_FUNCTION_VENDOR_ENDPOINT 0x0019 +#define URB_FUNCTION_VENDOR_OTHER 0x0020 +#define URB_FUNCTION_CLASS_DEVICE 0x001A +#define URB_FUNCTION_CLASS_INTERFACE 0x001B +#define URB_FUNCTION_CLASS_ENDPOINT 0x001C +#define URB_FUNCTION_CLASS_OTHER 0x001F +#define URB_FUNCTION_RESERVED 0x001D +#define URB_FUNCTION_GET_CONFIGURATION 0x0026 +#define URB_FUNCTION_GET_INTERFACE 0x0027 +#define URB_FUNCTION_LAST 0x0029 + +typedef LONG USBD_STATUS; +typedef PVOID USBD_PIPE_HANDLE; +typedef PVOID USBD_CONFIGURATION_HANDLE; +typedef PVOID USBD_INTERFACE_HANDLE; + +#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0) +#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3) +#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1) +#define USBD_STATUS(Status) ((ULONG)(Status) & 0x0FFFFFFFL) +#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0) + +#define USBD_STATUS_SUCCESS ((USBD_STATUS)0x00000000L) +#define USBD_STATUS_PENDING ((USBD_STATUS)0x40000000L) +#define USBD_STATUS_HALTED ((USBD_STATUS)0xC0000000L) +#define USBD_STATUS_ERROR ((USBD_STATUS)0x80000000L) +#define USBD_STATUS_NO_MEMORY ((USBD_STATUS)0x80000100L) +#define USBD_STATUS_INVALID_URB_FUNCTION ((USBD_STATUS)0x80000200L) +#define USBD_STATUS_INVALID_PARAMETER ((USBD_STATUS)0x80000300L) +#define USBD_STATUS_ERROR_BUSY ((USBD_STATUS)0x80000400L) +#define USBD_STATUS_REQUEST_FAILED ((USBD_STATUS)0x80000500L) +#define USBD_STATUS_INVALID_PIPE_HANDLE ((USBD_STATUS)0x80000600L) +#define USBD_STATUS_NO_BANDWIDTH ((USBD_STATUS)0x80000700L) +#define USBD_STATUS_INTERNAL_HC_ERROR ((USBD_STATUS)0x80000800L) +#define USBD_STATUS_ERROR_SHORT_TRANSFER ((USBD_STATUS)0x80000900L) +#define USBD_STATUS_CRC ((USBD_STATUS)0xC0000001L) +#define USBD_STATUS_BTSTUFF ((USBD_STATUS)0xC0000002L) +#define USBD_STATUS_DATA_TOGGLE_MISMATCH ((USBD_STATUS)0xC0000003L) +#define USBD_STATUS_STALL_PID ((USBD_STATUS)0xC0000004L) +#define USBD_STATUS_DEV_NOT_RESPONDING ((USBD_STATUS)0xC0000005L) +#define USBD_STATUS_PID_CHECK_FAILURE ((USBD_STATUS)0xC0000006L) +#define USBD_STATUS_UNEXPECTED_PID ((USBD_STATUS)0xC0000007L) +#define USBD_STATUS_DATA_OVERRUN ((USBD_STATUS)0xC0000008L) +#define USBD_STATUS_DATA_UNDERRUN ((USBD_STATUS)0xC0000009L) +#define USBD_STATUS_RESERVED1 ((USBD_STATUS)0xC000000AL) +#define USBD_STATUS_RESERVED2 ((USBD_STATUS)0xC000000BL) +#define USBD_STATUS_BUFFER_OVERRUN ((USBD_STATUS)0xC000000CL) +#define USBD_STATUS_BUFFER_UNDERRUN ((USBD_STATUS)0xC000000DL) +#define USBD_STATUS_NOT_ACCESSED ((USBD_STATUS)0xC000000FL) +#define USBD_STATUS_FIFO ((USBD_STATUS)0xC0000010L) +#define USBD_STATUS_ENDPOINT_HALTED ((USBD_STATUS)0xC0000030L) +#define USBD_STATUS_BAD_START_FRAME ((USBD_STATUS)0xC0000A00L) +#define USBD_STATUS_ISOCH_REQUEST_FAILED ((USBD_STATUS)0xC0000B00L) +#define USBD_STATUS_FRAME_CONTROL_OWNED ((USBD_STATUS)0xC0000C00L) +#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \ + ((USBD_STATUS)0xC0000D00L) +#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \ + ((USBD_STATUS)0xC0000F00L) +#define USBD_STATUS_CANCELING ((USBD_STATUS)0x00020000L) + +#define USBD_PIPE_DIRECTION_IN(pipeInformation) \ + ((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK) + +struct _URB_HEADER { + USHORT Length; + USHORT Function; + USBD_STATUS Status; + PVOID UsbdDeviceHandle; + ULONG UsbdFlags; +}; + +struct _URB_HCD_AREA { + PVOID HcdEndpoint; + PIRP HcdIrp; + LIST_ENTRY HcdListEntry; + LIST_ENTRY HcdListEntry2; + PVOID HcdCurrentIoFlushPointer; + PVOID HcdExtension; +}; + +struct _URB_BULK_OR_INTERRUPT_TRANSFER { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; +}; + +struct _URB_CONTROL_DESCRIPTOR_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + USHORT Reserved1; + UCHAR Index; + UCHAR DescriptorType; + USHORT LanguageId; + USHORT Reserved2; +}; + +struct _URB_CONTROL_FEATURE_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved2; + ULONG Reserved3; + PVOID Reserved4; + PMDL Reserved5; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + USHORT Reserved0; + USHORT FeatureSelector; + USHORT Index; + USHORT Reserved1; +}; + +struct _URB_CONTROL_GET_CONFIGURATION_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR Reserved1[8]; +}; + +struct _URB_CONTROL_GET_INTERFACE_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR Reserved1[4]; + USHORT Interface; + USHORT Reserved2; +}; + +struct _URB_CONTROL_GET_STATUS_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG Reserved0; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR Reserved1[4]; + USHORT Index; + USHORT Reserved2; +}; + +struct _URB_CONTROL_TRANSFER { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR SetupPacket[8]; +}; + +struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST { + struct _URB_HEADER Hdr; + PVOID Reserved; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + UCHAR RequestTypeReservedBits; + UCHAR Request; + USHORT Value; + USHORT Index; + USHORT Reserved1; +}; + +struct _URB_FRAME_LENGTH_CONTROL { + struct _URB_HEADER Hdr; +}; + +struct _URB_GET_CURRENT_FRAME_NUMBER { + struct _URB_HEADER Hdr; + ULONG FrameNumber; +}; + +struct _URB_GET_FRAME_LENGTH { + struct _URB_HEADER Hdr; + ULONG FrameLength; + ULONG FrameNumber; +}; + +typedef struct _USBD_ISO_PACKET_DESCRIPTOR { + ULONG Offset; + ULONG Length; + USBD_STATUS Status; +} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR; + +struct _URB_ISOCH_TRANSFER { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG TransferFlags; + ULONG TransferBufferLength; + PVOID TransferBuffer; + PMDL TransferBufferMDL; + struct _URB *UrbLink; + struct _URB_HCD_AREA hca; + ULONG StartFrame; + ULONG NumberOfPackets; + ULONG ErrorCount; + USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1]; +}; + +struct _URB_PIPE_REQUEST { + struct _URB_HEADER Hdr; + USBD_PIPE_HANDLE PipeHandle; + ULONG Reserved; +}; + +struct _URB_SET_FRAME_LENGTH { + struct _URB_HEADER Hdr; + LONG FrameLengthDelta; +}; + +typedef struct _USBD_DEVICE_INFORMATION { + ULONG OffsetNext; + PVOID UsbdDeviceHandle; + USB_DEVICE_DESCRIPTOR DeviceDescriptor; +} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION; + +typedef enum _USBD_PIPE_TYPE { + UsbdPipeTypeControl, + UsbdPipeTypeIsochronous, + UsbdPipeTypeBulk, + UsbdPipeTypeInterrupt +} USBD_PIPE_TYPE; + +/* USBD_PIPE_INFORMATION.PipeFlags constants */ +#define USBD_PF_CHANGE_MAX_PACKET 0x00000001 +#define USBD_PF_DOUBLE_BUFFER 0x00000002 +#define USBD_PF_ENABLE_RT_THREAD_ACCESS 0x00000004 +#define USBD_PF_MAP_ADD_TRANSFERS 0x00000008 + +typedef struct _USBD_PIPE_INFORMATION { + USHORT MaximumPacketSize; + UCHAR EndpointAddress; + UCHAR Interval; + USBD_PIPE_TYPE PipeType; + USBD_PIPE_HANDLE PipeHandle; + ULONG MaximumTransferSize; + ULONG PipeFlags; +} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION; + +typedef struct _USBD_INTERFACE_INFORMATION { + USHORT Length; + UCHAR InterfaceNumber; + UCHAR AlternateSetting; + UCHAR Class; + UCHAR SubClass; + UCHAR Protocol; + UCHAR Reserved; + USBD_INTERFACE_HANDLE InterfaceHandle; + ULONG NumberOfPipes; + USBD_PIPE_INFORMATION Pipes[1]; +} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION; + +struct _URB_SELECT_CONFIGURATION { + struct _URB_HEADER Hdr; + PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor; + USBD_CONFIGURATION_HANDLE ConfigurationHandle; + USBD_INTERFACE_INFORMATION Interface; +}; + +struct _URB_SELECT_INTERFACE { + struct _URB_HEADER Hdr; + USBD_CONFIGURATION_HANDLE ConfigurationHandle; + USBD_INTERFACE_INFORMATION Interface; +}; + +typedef struct _USBD_VERSION_INFORMATION { + ULONG USBDI_Version; + ULONG Supported_USB_Version; +} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION; + +typedef struct _URB { + union { + struct _URB_HEADER UrbHeader; + struct _URB_SELECT_INTERFACE UrbSelectInterface; + struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration; + struct _URB_PIPE_REQUEST UrbPipeRequest; + struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl; + struct _URB_GET_FRAME_LENGTH UrbGetFrameLength; + struct _URB_SET_FRAME_LENGTH UrbSetFrameLength; + struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber; + struct _URB_CONTROL_TRANSFER UrbControlTransfer; + struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer; + struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer; + struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest; + struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest; + struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest; + struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest; + struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest; + struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest; + }; +} URB, *PURB; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* defined __USB_H */ + +#endif /* __USBDI_H */ diff --git a/reactos/w32api/include/ddk/usbioctl.h b/reactos/w32api/include/ddk/usbioctl.h new file mode 100644 index 00000000000..f0ab90aa0e2 --- /dev/null +++ b/reactos/w32api/include/ddk/usbioctl.h @@ -0,0 +1,353 @@ +/* + * usbioctl.h + * + * USB IOCTL interface. + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USBIOCTL_H +#define __USBIOCTL_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "usb100.h" +#include "usbiodef.h" + +#define USBD_PORT_ENABLED 1 +#define USBD_PORT_CONNECTED 2 + +#define IOCTL_INTERNAL_USB_CYCLE_PORT \ + CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_ENABLE_PORT \ + CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_BUS_INFO \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_HUB_NAME \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_RESET_PORT \ + CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \ + CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS) + +#define IOCTL_INTERNAL_USB_SUBMIT_URB \ + CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS) + + +#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \ + CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \ + CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \ + CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_DIAGNOSTIC_MODE_ON \ + CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_HUB_CAPABILITIES \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_ROOT_HUB_NAME \ + CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_GET_HCD_DRIVERKEY_NAME \ + CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_NODE_INFORMATION \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_NODE_CONNECTION_NAME \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \ + CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_HCD_DISABLE_PORT \ + CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_HCD_ENABLE_PORT \ + CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_HCD_GET_STATS_1 \ + CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_USB_HCD_GET_STATS_2 \ + CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +typedef struct _USB_HUB_CAPABILITIES { + ULONG HubIs2xCapable : 1; +} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES; + +typedef enum _USB_CONNECTION_STATUS { + NoDeviceConnected, + DeviceConnected, + DeviceFailedEnumeration, + DeviceGeneralFailure, + DeviceCausedOvercurrent, + DeviceNotEnoughPower, + DeviceNotEnoughBandwidth, + DeviceHubNestedTooDeeply, + DeviceInLegacyHub +} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS; + +typedef struct _USB_DESCRIPTOR_REQUEST { + ULONG ConnectionIndex; + struct { + UCHAR bmRequest; + UCHAR bRequest; + USHORT wValue; + USHORT wIndex; + USHORT wLength; + } SetupPacket; + UCHAR Data[0]; +} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST; + +typedef struct _USB_HCD_DRIVERKEY_NAME { + ULONG ActualLength; + WCHAR DriverKeyName[1]; +} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME; + +typedef struct _HCD_ISO_STAT_COUNTERS { + USHORT LateUrbs; + USHORT DoubleBufferedPackets; + USHORT TransfersCF_5ms; + USHORT TransfersCF_2ms; + USHORT TransfersCF_1ms; + USHORT MaxInterruptLatency; + USHORT BadStartFrame; + USHORT StaleUrbs; + USHORT IsoPacketNotAccesed; + USHORT IsoPacketHWError; + USHORT SmallestUrbPacketCount; + USHORT LargestUrbPacketCount; + USHORT IsoCRC_Error; + USHORT IsoOVERRUN_Error; + USHORT IsoINTERNAL_Error; + USHORT IsoUNKNOWN_Error; + ULONG IsoBytesTransferred; + USHORT LateMissedCount; + USHORT HWIsoMissedCount; + ULONG Reserved7[8]; +} HCD_ISO_STAT_COUNTERS, *PHCD_ISO_STAT_COUNTERS; + +typedef struct _HCD_STAT_COUNTERS { + ULONG BytesTransferred; + USHORT IsoMissedCount; + USHORT DataOverrunErrorCount; + USHORT CrcErrorCount; + USHORT ScheduleOverrunCount; + USHORT TimeoutErrorCount; + USHORT InternalHcErrorCount; + USHORT BufferOverrunErrorCount; + USHORT SWErrorCount; + USHORT StallPidCount; + USHORT PortDisableCount; +} HCD_STAT_COUNTERS, *PHCD_STAT_COUNTERS; + +typedef struct _HCD_STAT_INFORMATION_1 { + ULONG Reserved1; + ULONG Reserved2; + ULONG ResetCounters; + LARGE_INTEGER TimeRead; + HCD_STAT_COUNTERS Counters; +} HCD_STAT_INFORMATION_1, *PHCD_STAT_INFORMATION_1; + +typedef struct _HCD_STAT_INFORMATION_2 { + ULONG Reserved1; + ULONG Reserved2; + ULONG ResetCounters; + LARGE_INTEGER TimeRead; + LONG LockedMemoryUsed; + HCD_STAT_COUNTERS Counters; + HCD_ISO_STAT_COUNTERS IsoCounters; +} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2; + +typedef struct _USB_HUB_INFORMATION { + USB_HUB_DESCRIPTOR HubDescriptor; + BOOLEAN HubIsBusPowered; +} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION; + +typedef struct _USB_HUB_NAME { + ULONG ActualLength; + WCHAR HubName[1]; +} USB_HUB_NAME, *PUSB_HUB_NAME; + +typedef enum _USB_HUB_NODE { + UsbHub, + UsbMIParent +} USB_HUB_NODE; + +typedef VOID STDCALL +(*USB_IDLE_CALLBACK)( + PVOID Context); + +typedef struct _USB_IDLE_CALLBACK_INFO { + USB_IDLE_CALLBACK IdleCallback; + PVOID IdleContext; +} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO; + +typedef struct _USB_NODE_CONNECTION_ATTRIBUTES { + ULONG ConnectionIndex; + USB_CONNECTION_STATUS ConnectionStatus; + ULONG PortAttributes; +} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES; + +typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME { + ULONG ConnectionIndex; + ULONG ActualLength; + WCHAR DriverKeyName[1]; +} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME; + +typedef struct _USB_PIPE_INFO { + USB_ENDPOINT_DESCRIPTOR EndpointDescriptor; + ULONG ScheduleOffset; +} USB_PIPE_INFO, *PUSB_PIPE_INFO; + +typedef struct _USB_NODE_CONNECTION_INFORMATION { + ULONG ConnectionIndex; + USB_DEVICE_DESCRIPTOR DeviceDescriptor; + UCHAR CurrentConfigurationValue; + BOOLEAN LowSpeed; + BOOLEAN DeviceIsHub; + USHORT DeviceAddress; + ULONG NumberOfOpenPipes; + USB_CONNECTION_STATUS ConnectionStatus; + USB_PIPE_INFO PipeList[0]; +} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION; + +typedef struct _USB_NODE_CONNECTION_NAME { + ULONG ConnectionIndex; + ULONG ActualLength; + WCHAR NodeName[1]; +} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME; + +typedef struct _USB_MI_PARENT_INFORMATION { + ULONG NumberOfInterfaces; +} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION; + +typedef struct _USB_NODE_INFORMATION { + USB_HUB_NODE NodeType; + union { + USB_HUB_INFORMATION HubInformation; + USB_MI_PARENT_INFORMATION MiParentInformation; + } u; +} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION; + +#define WMI_USB_DRIVER_INFORMATION 0 +#define WMI_USB_DRIVER_NOTIFICATION 1 +#define WMI_USB_POWER_DEVICE_ENABLE 2 + +typedef enum _USB_NOTIFICATION_TYPE { + EnumerationFailure = 0, + InsufficentBandwidth, + InsufficentPower, + OverCurrent, + ResetOvercurrent, + AcquireBusInfo, + AcquireHubName, + AcquireControllerName, + HubOvercurrent, + HubPowerChange, + HubNestedTooDeeply, + ModernDeviceInLegacyHub +} USB_NOTIFICATION_TYPE; + +typedef struct _USB_ACQUIRE_INFO { + USB_NOTIFICATION_TYPE NotificationType; + ULONG TotalSize; + WCHAR Buffer[1]; +} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO; + +typedef struct _USB_NOTIFICATION { + USB_NOTIFICATION_TYPE NotificationType; +} USB_NOTIFICATION, *PUSB_NOTIFICATION; + +typedef struct _USB_BUS_NOTIFICATION { + USB_NOTIFICATION_TYPE NotificationType; + ULONG TotalBandwidth; + ULONG ConsumedBandwidth; + ULONG ControllerNameLength; +} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION; + +typedef struct _USB_CONNECTION_NOTIFICATION { + USB_NOTIFICATION_TYPE NotificationType; + ULONG ConnectionNumber; + ULONG RequestedBandwidth; + ULONG EnumerationFailReason; + ULONG PowerRequested; + ULONG HubNameLength; +} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION; + +typedef struct _USB_ROOT_HUB_NAME { + ULONG ActualLength; + WCHAR RootHubName[1]; +} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __USBIOCTL_H */ diff --git a/reactos/w32api/include/ddk/usbiodef.h b/reactos/w32api/include/ddk/usbiodef.h new file mode 100644 index 00000000000..4a801e39381 --- /dev/null +++ b/reactos/w32api/include/ddk/usbiodef.h @@ -0,0 +1,111 @@ +/* + * usbiodef.h + * + * USB IOCTL definitions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USBIODEF_H +#define __USBIODEF_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB, \ + 0xf18a0e88, 0xc30c, 0x11d0, 0x88, 0x15, 0x00, 0xa0, 0xc9, 0x06, 0xbe, 0xd8); + +DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE, + 0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED); + +DEFINE_GUID(GUID_DEVINTERFACE_USB_HOST_CONTROLLER, + 0x3abf6f2d, 0x71c4, 0x462a, 0x8a, 0x92, 0x1e, 0x68, 0x61, 0xe6, 0xaf, 0x27); + +DEFINE_GUID(GUID_USB_WMI_STD_DATA, + 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2); + +DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION, + 0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2); + +#define GUID_CLASS_USBHUB GUID_DEVINTERFACE_USB_HUB +#define GUID_CLASS_USB_DEVICE GUID_DEVINTERFACE_USB_DEVICE +#define GUID_CLASS_USB_HOST_CONTROLLER GUID_DEVINTERFACE_USB_HOST_CONTROLLER + +#define USB_SUBMIT_URB 0 +#define USB_RESET_PORT 1 +#define USB_GET_ROOTHUB_PDO 3 +#define USB_GET_PORT_STATUS 4 +#define USB_ENABLE_PORT 5 +#define USB_GET_HUB_COUNT 6 +#define USB_CYCLE_PORT 7 +#define USB_GET_HUB_NAME 8 +#define USB_IDLE_NOTIFICATION 9 +#define USB_GET_BUS_INFO 264 +#define USB_GET_CONTROLLER_NAME 265 +#define USB_GET_BUSGUID_INFO 266 +#define USB_GET_PARENT_HUB_INFO 267 +#define USB_GET_DEVICE_HANDLE 268 + +#define HCD_GET_STATS_1 255 +#define HCD_DIAGNOSTIC_MODE_ON 256 +#define HCD_DIAGNOSTIC_MODE_OFF 257 +#define HCD_GET_ROOT_HUB_NAME 258 +#define HCD_GET_DRIVERKEY_NAME 265 +#define HCD_GET_STATS_2 266 +#define HCD_DISABLE_PORT 268 +#define HCD_ENABLE_PORT 269 +#define HCD_USER_REQUEST 270 + +#define USB_GET_NODE_INFORMATION 258 +#define USB_GET_NODE_CONNECTION_INFORMATION 259 +#define USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION 260 +#define USB_GET_NODE_CONNECTION_NAME 261 +#define USB_DIAG_IGNORE_HUBS_ON 262 +#define USB_DIAG_IGNORE_HUBS_OFF 263 +#define USB_GET_NODE_CONNECTION_DRIVERKEY_NAME 264 +#define USB_GET_HUB_CAPABILITIES 271 +#define USB_GET_NODE_CONNECTION_ATTRIBUTES 272 + +#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN + +#define USB_CTL(id) CTL_CODE(FILE_DEVICE_USB, \ + (id), \ + METHOD_BUFFERED, \ + FILE_ANY_ACCESS) + +#define USB_KERNEL_CTL(id) CTL_CODE(FILE_DEVICE_USB, \ + (id), \ + METHOD_NEITHER, \ + FILE_ANY_ACCESS) + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __USBIODEF_H */ diff --git a/reactos/w32api/include/ddk/usbscan.h b/reactos/w32api/include/ddk/usbscan.h new file mode 100644 index 00000000000..938c7066a5d --- /dev/null +++ b/reactos/w32api/include/ddk/usbscan.h @@ -0,0 +1,163 @@ +/* + * usbscan.h + * + * USB scanner definitions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USBSCAN_H +#define __USBSCAN_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + + +#define FILE_DEVICE_USB_SCAN 0x8000 +#define IOCTL_INDEX 0x0800 + +#define IOCTL_CANCEL_IO \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 1, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_GET_VERSION \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 0, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_GET_CHANNEL_ALIGN_RQST \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 5, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_GET_DEVICE_DESCRIPTOR \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 6, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_GET_PIPE_CONFIGURATION \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 10,METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_GET_USB_DESCRIPTOR \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 8, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_READ_REGISTERS \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 3, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_RESET_PIPE \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 7, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_SEND_USB_REQUEST \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 9, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_SET_TIMEOUT \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 11,METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_WAIT_ON_DEVICE_EVENT \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 2, METHOD_BUFFERED,FILE_ANY_ACCESS) + +#define IOCTL_WRITE_REGISTERS \ + CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 4, METHOD_BUFFERED, FILE_ANY_ACCESS) + + +#define MAX_NUM_PIPES 8 + +#define BULKIN_FLAG 0x80 + +typedef struct _CHANNEL_INFO { + OUT ULONG EventChannelSize; + OUT ULONG uReadDataAlignment; + OUT ULONG uWriteDataAlignment; +}CHANNEL_INFO, *PCHANNEL_INFO; + +typedef struct _DEVICE_DESCRIPTOR { + OUT USHORT usVendorId; + OUT USHORT usProductId; + OUT USHORT usBcdDevice; + OUT USHORT usLanguageId; +} DEVICE_DESCRIPTOR, *PDEVICE_DESCRIPTOR; + +typedef struct _DRV_VERSION { + OUT ULONG major; + OUT ULONG minor; + OUT ULONG internal; +} DRV_VERSION, *PDRV_VERSION; + +typedef struct _IO_BLOCK { + IN ULONG uOffset; + IN ULONG uLength; + IN OUT PUCHAR pbyData; + IN ULONG uIndex; +} IO_BLOCK, *PIO_BLOCK; + +typedef struct _IO_BLOCK_EX { + IN ULONG uOffset; + IN ULONG uLength; + IN OUT PUCHAR pbyData; + IN ULONG uIndex; + IN UCHAR bRequest; + IN UCHAR bmRequestType; + IN UCHAR fTransferDirectionIn; +} IO_BLOCK_EX, *PIO_BLOCK_EX; + +typedef struct _USBSCAN_GET_DESCRIPTOR { + IN UCHAR DescriptorType; + IN UCHAR Index; + IN USHORT LanguageId; +} USBSCAN_GET_DESCRIPTOR, *PUSBSCAN_GET_DESCRIPTOR; + +typedef enum _RAW_PIPE_TYPE { + USBSCAN_PIPE_CONTROL, + USBSCAN_PIPE_ISOCHRONOUS, + USBSCAN_PIPE_BULK, + USBSCAN_PIPE_INTERRUPT +} RAW_PIPE_TYPE; + +typedef struct _USBSCAN_PIPE_INFORMATION { + USHORT MaximumPacketSize; + UCHAR EndpointAddress; + UCHAR Interval; + RAW_PIPE_TYPE PipeType; +} USBSCAN_PIPE_INFORMATION, *PUSBSCAN_PIPE_INFORMATION; + +typedef struct _USBSCAN_PIPE_CONFIGURATION { + OUT ULONG NumberOfPipes; + OUT USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES]; +} USBSCAN_PIPE_CONFIGURATION, *PUSBSCAN_PIPE_CONFIGURATION; + +typedef struct _USBSCAN_TIMEOUT { + IN ULONG TimeoutRead; + IN ULONG TimeoutWrite; + IN ULONG TimeoutEvent; +} USBSCAN_TIMEOUT, *PUSBSCAN_TIMEOUT; + +typedef enum _PIPE_TYPE { + EVENT_PIPE, + READ_DATA_PIPE, + WRITE_DATA_PIPE, + ALL_PIPE +} PIPE_TYPE; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __USBSCAN_H */ diff --git a/reactos/w32api/include/ddk/usbuser.h b/reactos/w32api/include/ddk/usbuser.h new file mode 100644 index 00000000000..feacddac379 --- /dev/null +++ b/reactos/w32api/include/ddk/usbuser.h @@ -0,0 +1,329 @@ +/* + * usbuser.h + * + * USB user mode IOCTL interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __USBUSER_H +#define __USBUSER_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "usb.h" +#include "usbiodef.h" + + +#define USBUSER_VERSION 0x0004 + +#define IOCTL_USB_USER_REQUEST USB_CTL(HCD_USER_REQUEST) + +#ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON +#define IOCTL_USB_DIAGNOSTIC_MODE_ON USB_CTL(HCD_DIAGNOSTIC_MODE_ON) +#endif +#ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF +#define IOCTL_USB_DIAGNOSTIC_MODE_OFF USB_CTL(HCD_DIAGNOSTIC_MODE_OFF) +#endif + +#ifndef IOCTL_USB_GET_ROOT_HUB_NAME +#define IOCTL_USB_GET_ROOT_HUB_NAME USB_CTL(HCD_GET_ROOT_HUB_NAME) +#endif +#ifndef IOCTL_GET_HCD_DRIVERKEY_NAME +#define IOCTL_GET_HCD_DRIVERKEY_NAME USB_CTL(HCD_GET_DRIVERKEY_NAME) +#endif + +typedef enum _USB_USER_ERROR_CODE { + UsbUserSuccess = 0, + UsbUserNotSupported, + UsbUserInvalidRequestCode, + UsbUserFeatureDisabled, + UsbUserInvalidHeaderParameter, + UsbUserInvalidParameter, + UsbUserMiniportError, + UsbUserBufferTooSmall, + UsbUserErrorNotMapped, + UsbUserDeviceNotStarted, + UsbUserNoDeviceConnected +} USB_USER_ERROR_CODE; + +#define USBUSER_GET_CONTROLLER_INFO_0 0x00000001 +#define USBUSER_GET_CONTROLLER_DRIVER_KEY 0x00000002 +#define USBUSER_PASS_THRU 0x00000003 +#define USBUSER_GET_POWER_STATE_MAP 0x00000004 +#define USBUSER_GET_BANDWIDTH_INFORMATION 0x00000005 +#define USBUSER_GET_BUS_STATISTICS_0 0x00000006 +#define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007 +#define USBUSER_GET_USB_DRIVER_VERSION 0x00000008 +#define USBUSER_GET_USB2_HW_VERSION 0x00000009 +#define USBUSER_OP_SEND_ONE_PACKET 0x10000001 +#define USBUSER_OP_RAW_RESET_PORT 0x20000001 +#define USBUSER_OP_OPEN_RAW_DEVICE 0x20000002 +#define USBUSER_OP_CLOSE_RAW_DEVICE 0x20000003 +#define USBUSER_OP_SEND_RAW_COMMAND 0x20000004 +#define USBUSER_INVALID_REQUEST 0xFFFFFFF0 +#define USBUSER_OP_MASK_DEVONLY_API 0x10000000 +#define USBUSER_OP_MASK_HCTEST_API 0x20000000 + +#define USB_PACKETFLAG_LOW_SPEED 0x00000001 +#define USB_PACKETFLAG_FULL_SPEED 0x00000002 +#define USB_PACKETFLAG_HIGH_SPEED 0x00000004 +#define USB_PACKETFLAG_ASYNC_IN 0x00000008 +#define USB_PACKETFLAG_ASYNC_OUT 0x00000010 +#define USB_PACKETFLAG_ISO_IN 0x00000020 +#define USB_PACKETFLAG_ISO_OUT 0x00000040 +#define USB_PACKETFLAG_SETUP 0x00000080 +#define USB_PACKETFLAG_TOGGLE0 0x00000100 +#define USB_PACKETFLAG_TOGGLE1 0x00000200 + +typedef struct _PACKET_PARAMETERS { + UCHAR DeviceAddress; + UCHAR EndpointAddress; + USHORT MaximumPacketSize; + ULONG Timeout; + ULONG Flags; + ULONG DataLength; + USHORT HubDeviceAddress; + USHORT PortTTNumber; + UCHAR ErrorCount; + UCHAR Pad[3]; + USBD_STATUS UsbdStatusCode; + UCHAR Data[4]; +} PACKET_PARAMETERS, *PPACKET_PARAMETERS; + +typedef struct _RAW_RESET_PORT_PARAMETERS { + USHORT PortNumber; + USHORT PortStatus; +} RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS; + +typedef struct _USB_BANDWIDTH_INFO { + ULONG DeviceCount; + ULONG TotalBusBandwidth; + ULONG Total32secBandwidth; + ULONG AllocedBulkAndControl; + ULONG AllocedIso; + ULONG AllocedInterrupt_1ms; + ULONG AllocedInterrupt_2ms; + ULONG AllocedInterrupt_4ms; + ULONG AllocedInterrupt_8ms; + ULONG AllocedInterrupt_16ms; + ULONG AllocedInterrupt_32ms; +} USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO; + +typedef struct _USBUSER_REQUEST_HEADER { + ULONG UsbUserRequest; + USB_USER_ERROR_CODE UsbUserStatusCode; + ULONG RequestBufferLength; + ULONG ActualBufferLength; +} USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER; + +typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST { + USBUSER_REQUEST_HEADER Header; + USB_BANDWIDTH_INFO BandwidthInformation; +} USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST; + +typedef struct _USB_BUS_STATISTICS_0 { + ULONG DeviceCount; + LARGE_INTEGER CurrentSystemTime; + ULONG CurrentUsbFrame; + ULONG BulkBytes; + ULONG IsoBytes; + ULONG InterruptBytes; + ULONG ControlDataBytes; + ULONG PciInterruptCount; + ULONG HardResetCount; + ULONG WorkerSignalCount; + ULONG CommonBufferBytes; + ULONG WorkerIdleTimeMs; + BOOLEAN RootHubEnabled; + UCHAR RootHubDevicePowerState; + UCHAR Unused; + UCHAR NameIndex; +} USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0; + +typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST { + USBUSER_REQUEST_HEADER Header; + USB_BUS_STATISTICS_0 BusStatistics0; +} USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST; + +/* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */ +#define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING 0x00000001 +#define USB_HC_FEATURE_FLAG_SEL_SUSPEND 0x00000002 +#define USB_HC_FEATURE_LEGACY_BIOS 0x00000004 + +typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS { + ULONG xxx; +} USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS; + +typedef struct _USBUSER_CLOSE_RAW_DEVICE { + USBUSER_REQUEST_HEADER Header; + USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters; +} USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE; + +typedef struct _USB_CONTROLLER_INFO_0 { + ULONG PciVendorId; + ULONG PciDeviceId; + ULONG PciRevision; + ULONG NumberOfRootPorts; + USB_CONTROLLER_FLAVOR ControllerFlavor; + ULONG HcFeatureFlags; +} USB_CONTROLLER_INFO_0 , *PUSB_CONTROLLER_INFO_0; + +typedef struct _USBUSER_CONTROLLER_INFO_0 { + USBUSER_REQUEST_HEADER Header; + USB_CONTROLLER_INFO_0 Info0; +} USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0; + +typedef struct _USB_DRIVER_VERSION_PARAMETERS { + ULONG DriverTrackingCode; + ULONG USBDI_Version; + ULONG USBUSER_Version; + BOOLEAN CheckedPortDriver; + BOOLEAN CheckedMiniportDriver; + USHORT USB_Version; +} USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS; + +typedef struct _USBUSER_GET_DRIVER_VERSION { + USBUSER_REQUEST_HEADER Header; + USB_DRIVER_VERSION_PARAMETERS Parameters; +} USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION; + +typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS { + USHORT PortStatus; + USHORT MaxPacketEp0; +} USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS; + +typedef struct _USBUSER_OPEN_RAW_DEVICE { + USBUSER_REQUEST_HEADER Header; + USB_OPEN_RAW_DEVICE_PARAMETERS Parameters; +} USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE; + +typedef enum _WDMUSB_POWER_STATE { + WdmUsbPowerNotMapped = 0, + WdmUsbPowerSystemUnspecified = 100, + WdmUsbPowerSystemWorking, + WdmUsbPowerSystemSleeping1, + WdmUsbPowerSystemSleeping2, + WdmUsbPowerSystemSleeping3, + WdmUsbPowerSystemHibernate, + WdmUsbPowerSystemShutdown, + WdmUsbPowerDeviceUnspecified = 200, + WdmUsbPowerDeviceD0, + WdmUsbPowerDeviceD1, + WdmUsbPowerDeviceD2, + WdmUsbPowerDeviceD3 +} WDMUSB_POWER_STATE; + +typedef struct _USB_POWER_INFO { + WDMUSB_POWER_STATE SystemState; + WDMUSB_POWER_STATE HcDevicePowerState; + WDMUSB_POWER_STATE HcDeviceWake; + WDMUSB_POWER_STATE HcSystemWake; + WDMUSB_POWER_STATE RhDevicePowerState; + WDMUSB_POWER_STATE RhDeviceWake; + WDMUSB_POWER_STATE RhSystemWake; + WDMUSB_POWER_STATE LastSystemSleepState; + BOOLEAN CanWakeup; + BOOLEAN IsPowered; +} USB_POWER_INFO, *PUSB_POWER_INFO; + +typedef struct _USBUSER_POWER_INFO_REQUEST { + USBUSER_REQUEST_HEADER Header; + USB_POWER_INFO PowerInformation; +} USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST; + +typedef struct _USB_UNICODE_NAME { + ULONG Length; + WCHAR String[1]; +} USB_UNICODE_NAME, *PUSB_UNICODE_NAME; + +typedef struct _USBUSER_CONTROLLER_UNICODE_NAME { + USBUSER_REQUEST_HEADER Header; + USB_UNICODE_NAME UnicodeName; +} USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME; + +typedef struct _USB_PASS_THRU_PARAMETERS { + GUID FunctionGUID; + ULONG ParameterLength; + UCHAR Parameters[4]; +} USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS; + +typedef struct _USBUSER_PASS_THRU_REQUEST { + USBUSER_REQUEST_HEADER Header; + USB_PASS_THRU_PARAMETERS PassThru; +} USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST; + +typedef struct _USBUSER_RAW_RESET_ROOT_PORT { + USBUSER_REQUEST_HEADER Header; + RAW_RESET_PORT_PARAMETERS Parameters; +} USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT; + +typedef struct _USBUSER_SEND_ONE_PACKET { + USBUSER_REQUEST_HEADER Header; + PACKET_PARAMETERS PacketParameters; +} USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET; + +typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS { + UCHAR Usb_bmRequest; + UCHAR Usb_bRequest; + USHORT Usb_wVlaue; + USHORT Usb_wIndex; + USHORT Usb_wLength; + USHORT DeviceAddress; + USHORT MaximumPacketSize; + ULONG Timeout; + ULONG DataLength; + USBD_STATUS UsbdStatusCode; + UCHAR Data[4]; +} USB_SEND_RAW_COMMAND_PARAMETERS, *PUSB_SEND_RAW_COMMAND_PARAMETERS; + +typedef struct _USBUSER_SEND_RAW_COMMAND { + USBUSER_REQUEST_HEADER Header; + USB_SEND_RAW_COMMAND_PARAMETERS Parameters; +} USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND; + +/* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */ +#define USB2HW_UNKNOWN 0x00 +#define USB2HW_A0 0xA0 +#define USB2HW_A1 0xA1 +#define USB2HW_B0 0xB0 + +typedef struct _USB_USB2HW_VERSION_PARAMETERS { + UCHAR Usb2HwRevision; +} USB_USB2HW_VERSION_PARAMETERS, *PUSB_USB2HW_VERSION_PARAMETERS; + +typedef struct _USBUSER_GET_USB2HW_VERSION { + USBUSER_REQUEST_HEADER Header; + USB_USB2HW_VERSION_PARAMETERS Parameters; +} USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION; + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __USBUSER_H */ diff --git a/reactos/w32api/include/ddk/video.h b/reactos/w32api/include/ddk/video.h new file mode 100644 index 00000000000..fd63f7dff44 --- /dev/null +++ b/reactos/w32api/include/ddk/video.h @@ -0,0 +1,1570 @@ +/* + * video.h + * + * Video port and miniport driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __VIDEO_H +#define __VIDEO_H + + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __WINDDI_H +#error winddi.h cannot be included with video.h +#else + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" + +#if defined(_VIDEOPORT_) + #define VPAPI DECLSPEC_EXPORT +#else + #define VPAPI DECLSPEC_IMPORT +#endif + +#include "videoagp.h" +#include "ntddvdeo.h" + + +typedef LONG VP_STATUS; +typedef VP_STATUS *PVP_STATUS; +typedef struct __DMA_PARAMETERS * PDMA; +typedef struct _VIDEO_PORT_EVENT *PEVENT; +typedef struct _VIDEO_PORT_SPIN_LOCK *PSPIN_LOCK; +typedef struct __VP_DMA_ADAPTER *PVP_DMA_ADAPTER; + +#define DISPLAY_ADAPTER_HW_ID 0xFFFFFFFF + +#define EVENT_TYPE_MASK 1 +#define SYNCHRONIZATION_EVENT 0 +#define NOTIFICATION_EVENT 1 + +#define INITIAL_EVENT_STATE_MASK 2 +#define INITIAL_EVENT_NOT_SIGNALED 0 +#define INITIAL_EVENT_SIGNALED 2 + +typedef enum VIDEO_DEBUG_LEVEL { + Error = 0, + Warn, + Trace, + Info +} VIDEO_DEBUG_LEVEL, *PVIDEO_DEBUG_LEVEL; + +typedef enum { + VideoPortUnlockAfterDma = 1, + VideoPortKeepPagesLocked, + VideoPortDmaInitOnly +} DMA_FLAGS; + +typedef enum _HW_DMA_RETURN { + DmaAsyncReturn, + DmaSyncReturn +} HW_DMA_RETURN, *PHW_DMA_RETURN; + +typedef HW_DMA_RETURN +(*PVIDEO_HW_START_DMA)( + PVOID HwDeviceExtension, + PDMA pDma); + + +#ifdef DBG + +#define PAGED_CODE() \ + if (VideoPortGetCurrentIrql() > 1 /* APC_LEVEL */) \ + { \ + VideoPortDebugPrint(Error, "Video: Pageable code called at IRQL %d\n", VideoPortGetCurrentIrql() ); \ + assert(FALSE); \ + } + +#else + +#define PAGED_CODE() + +#endif + +typedef struct _VIDEO_HARDWARE_CONFIGURATION_DATA { + INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + USHORT Version; + USHORT Revision; + USHORT Irql; + USHORT Vector; + ULONG ControlBase; + ULONG ControlSize; + ULONG CursorBase; + ULONG CursorSize; + ULONG FrameBase; + ULONG FrameSize; +} VIDEO_HARDWARE_CONFIGURATION_DATA, *PVIDEO_HARDWARE_CONFIGURATION_DATA; + +#define SIZE_OF_NT4_VIDEO_PORT_CONFIG_INFO 0x42 +#define SIZE_OF_NT4_VIDEO_HW_INITIALIZATION_DATA 0x28 +#define SIZE_OF_W2K_VIDEO_HW_INITIALIZATION_DATA 0x50 + +typedef enum _VIDEO_DEVICE_DATA_TYPE { + VpMachineData = 0, + VpCmosData, + VpBusData, + VpControllerData, + VpMonitorData +} VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE; + + + +/* Video miniport driver functions */ + +typedef struct _VP_SCATTER_GATHER_ELEMENT { + PHYSICAL_ADDRESS Address; + ULONG Length; + ULONG_PTR Reserved; +} VP_SCATTER_GATHER_ELEMENT, *PVP_SCATTER_GATHER_ELEMENT; + +typedef struct _VP_SCATTER_GATHER_LIST { + ULONG NumberOfElements; + ULONG_PTR Reserved; + VP_SCATTER_GATHER_ELEMENT Elements[0]; +} VP_SCATTER_GATHER_LIST, *PVP_SCATTER_GATHER_LIST; + +typedef VOID DDKAPI +(*PEXECUTE_DMA)( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN PVP_SCATTER_GATHER_LIST SGList, + IN PVOID Context); + +typedef PVOID DDKAPI +(*PVIDEO_PORT_GET_PROC_ADDRESS)( + IN PVOID HwDeviceExtension, + IN PUCHAR FunctionName); + +typedef struct _VIDEO_PORT_CONFIG_INFO { + ULONG Length; + ULONG SystemIoBusNumber; + INTERFACE_TYPE AdapterInterfaceType; + ULONG BusInterruptLevel; + ULONG BusInterruptVector; + KINTERRUPT_MODE InterruptMode; + ULONG NumEmulatorAccessEntries; + PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries; + ULONG_PTR EmulatorAccessEntriesContext; + PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress; + ULONG VdmPhysicalVideoMemoryLength; + ULONG HardwareStateSize; + ULONG DmaChannel; + ULONG DmaPort; + UCHAR DmaShareable; + UCHAR InterruptShareable; + BOOLEAN Master; + DMA_WIDTH DmaWidth; + DMA_SPEED DmaSpeed; + BOOLEAN bMapBuffers; + BOOLEAN NeedPhysicalAddresses; + BOOLEAN DemandMode; + ULONG MaximumTransferLength; + ULONG NumberOfPhysicalBreaks; + BOOLEAN ScatterGather; + ULONG MaximumScatterGatherChunkSize; + PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress; + PWSTR DriverRegistryPath; + ULONGLONG SystemMemorySize; +} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO; + +typedef VP_STATUS DDKAPI +(*PVIDEO_HW_FIND_ADAPTER)( + IN PVOID HwDeviceExtension, + IN PVOID HwContext, + IN PWSTR ArgumentString, + IN OUT PVIDEO_PORT_CONFIG_INFO ConfigInfo, + OUT PUCHAR Again); + +typedef VP_STATUS DDKAPI +(*PVIDEO_HW_POWER_GET)( + IN PVOID HwDeviceExtension, + IN ULONG HwId, + IN OUT PVIDEO_POWER_MANAGEMENT VideoPowerControl); + +/* PVIDEO_HW_GET_CHILD_DESCRIPTOR return values */ +#define VIDEO_ENUM_MORE_DEVICES ERROR_CONTINUE +#define VIDEO_ENUM_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES +#define VIDEO_ENUM_INVALID_DEVICE ERROR_INVALID_NAME + +/* PVIDEO_HW_GET_CHILD_DESCRIPTOR.ChildEnumInfo constants */ +typedef struct _VIDEO_CHILD_ENUM_INFO { + ULONG Size; + ULONG ChildDescriptorSize; + ULONG ChildIndex; + ULONG ACPIHwId; + PVOID ChildHwDeviceExtension; +} VIDEO_CHILD_ENUM_INFO, *PVIDEO_CHILD_ENUM_INFO; + +/* PVIDEO_HW_GET_CHILD_DESCRIPTOR.VideoChildType constants */ +typedef enum _VIDEO_CHILD_TYPE { + Monitor = 1, + NonPrimaryChip, + VideoChip, + Other +} VIDEO_CHILD_TYPE, *PVIDEO_CHILD_TYPE; + +typedef VP_STATUS DDKAPI +(*PVIDEO_HW_GET_CHILD_DESCRIPTOR)( + IN PVOID HwDeviceExtension, + IN PVIDEO_CHILD_ENUM_INFO ChildEnumInfo, + OUT PVIDEO_CHILD_TYPE VideoChildType, + OUT PUCHAR pChildDescriptor, + OUT PULONG UId, + OUT PULONG pUnused); + +typedef BOOLEAN DDKAPI +(*PVIDEO_HW_INITIALIZE)( + IN PVOID HwDeviceExtension); + +typedef BOOLEAN DDKAPI +(*PVIDEO_HW_INTERRUPT)( + IN PVOID HwDeviceExtension); + +/* VIDEO_ACCESS_RANGE.RangePassive */ +#define VIDEO_RANGE_PASSIVE_DECODE 1 +#define VIDEO_RANGE_10_BIT_DECODE 2 + +#ifndef VIDEO_ACCESS_RANGE_DEFINED /* also in miniport.h */ +#define VIDEO_ACCESS_RANGE_DEFINED +typedef struct _VIDEO_ACCESS_RANGE { + PHYSICAL_ADDRESS RangeStart; + ULONG RangeLength; + UCHAR RangeInIoSpace; + UCHAR RangeVisible; + UCHAR RangeShareable; + UCHAR RangePassive; +} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE; +#endif + +typedef VOID DDKAPI +(*PVIDEO_HW_LEGACYRESOURCES)( + IN ULONG VendorId, + IN ULONG DeviceId, + IN OUT PVIDEO_ACCESS_RANGE *LegacyResourceList, + IN OUT PULONG LegacyResourceCount); + +typedef VP_STATUS DDKAPI +(*PMINIPORT_QUERY_DEVICE_ROUTINE)( + IN PVOID HwDeviceExtension, + IN PVOID Context, + IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, + IN PVOID Identifier, + IN ULONG IdentifierLength, + IN PVOID ConfigurationData, + IN ULONG ConfigurationDataLength, + IN OUT PVOID ComponentInformation, + IN ULONG ComponentInformationLength); + +typedef struct _QUERY_INTERFACE { + CONST GUID *InterfaceType; + USHORT Size; + USHORT Version; + PINTERFACE Interface; + PVOID InterfaceSpecificData; +} QUERY_INTERFACE, *PQUERY_INTERFACE; + +typedef VP_STATUS DDKAPI +(*PVIDEO_HW_QUERY_INTERFACE)( + IN PVOID HwDeviceExtension, + IN OUT PQUERY_INTERFACE QueryInterface); + +typedef VP_STATUS DDKAPI +(*PMINIPORT_GET_REGISTRY_ROUTINE)( + IN PVOID HwDeviceExtension, + IN PVOID Context, + IN OUT PWSTR ValueName, + IN OUT PVOID ValueData, + IN ULONG ValueLength); + +typedef BOOLEAN DDKAPI +(*PVIDEO_HW_RESET_HW)( + IN PVOID HwDeviceExtension, + IN ULONG Columns, + IN ULONG Rows); + +typedef VP_STATUS DDKAPI +(*PVIDEO_HW_POWER_SET)( + IN PVOID HwDeviceExtension, + IN ULONG HwId, + IN PVIDEO_POWER_MANAGEMENT VideoPowerControl); + +typedef struct _STATUS_BLOCK { + _ANONYMOUS_UNION union { + VP_STATUS Status; + PVOID Pointer; + } DUMMYUNIONNAME; + ULONG_PTR Information; +} STATUS_BLOCK, *PSTATUS_BLOCK; + +typedef struct _VIDEO_REQUEST_PACKET { + ULONG IoControlCode; + PSTATUS_BLOCK StatusBlock; + PVOID InputBuffer; + ULONG InputBufferLength; + PVOID OutputBuffer; + ULONG OutputBufferLength; +} VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET; + +typedef BOOLEAN DDKAPI +(*PVIDEO_HW_START_IO)( + IN PVOID HwDeviceExtension, + IN PVIDEO_REQUEST_PACKET RequestPacket); + +typedef BOOLEAN DDKAPI +(*PMINIPORT_SYNCHRONIZE_ROUTINE)( + IN PVOID Context); + +typedef VOID DDKAPI +(*PVIDEO_HW_TIMER)( + IN PVOID HwDeviceExtension); + +typedef VOID DDKAPI +(*PMINIPORT_DPC_ROUTINE)( + IN PVOID HwDeviceExtension, + IN PVOID Context); + +typedef VP_STATUS DDKAPI +(*PDRIVER_IO_PORT_UCHAR)( + IN ULONG_PTR Context, + IN ULONG Port, + IN UCHAR AccessMode, + IN PUCHAR Data); + +typedef VP_STATUS DDKAPI +(*PDRIVER_IO_PORT_UCHAR_STRING)( + IN ULONG_PTR Context, + IN ULONG Port, + IN UCHAR AccessMode, + IN PUCHAR Data, + IN ULONG DataLength); + +typedef VP_STATUS DDKAPI +(*PDRIVER_IO_PORT_ULONG)( + IN ULONG_PTR Context, + IN ULONG Port, + IN UCHAR AccessMode, + IN PULONG Data); + +typedef VP_STATUS DDKAPI +(*PDRIVER_IO_PORT_ULONG_STRING)( + IN ULONG_PTR Context, + IN ULONG Port, + IN UCHAR AccessMode, + IN PULONG Data, + IN ULONG DataLength); + +typedef VP_STATUS DDKAPI +(*PDRIVER_IO_PORT_USHORT)( + IN ULONG_PTR Context, + IN ULONG Port, + IN UCHAR AccessMode, + IN PUSHORT Data); + +typedef VP_STATUS DDKAPI +(*PDRIVER_IO_PORT_USHORT_STRING)( + IN ULONG_PTR Context, + IN ULONG Port, + IN UCHAR AccessMode, + IN PUSHORT Data, + IN ULONG DataLength); + + + +typedef struct _INT10_BIOS_ARGUMENTS { + ULONG Eax; + ULONG Ebx; + ULONG Ecx; + ULONG Edx; + ULONG Esi; + ULONG Edi; + ULONG Ebp; + USHORT SegDs; + USHORT SegEs; +} INT10_BIOS_ARGUMENTS, *PINT10_BIOS_ARGUMENTS; + +typedef struct _VIDEO_CHILD_STATE { + ULONG Id; + ULONG State; +} VIDEO_CHILD_STATE, *PVIDEO_CHILD_STATE; + +typedef struct _VIDEO_CHILD_STATE_CONFIGURATION { + ULONG Count; + VIDEO_CHILD_STATE ChildStateArray[ANYSIZE_ARRAY]; +} VIDEO_CHILD_STATE_CONFIGURATION, *PVIDEO_CHILD_STATE_CONFIGURATION; + +typedef struct _VIDEO_HW_INITIALIZATION_DATA { + ULONG HwInitDataSize; + INTERFACE_TYPE AdapterInterfaceType; + PVIDEO_HW_FIND_ADAPTER HwFindAdapter; + PVIDEO_HW_INITIALIZE HwInitialize; + PVIDEO_HW_INTERRUPT HwInterrupt; + PVIDEO_HW_START_IO HwStartIO; + ULONG HwDeviceExtensionSize; + ULONG StartingDeviceNumber; + PVIDEO_HW_RESET_HW HwResetHw; + PVIDEO_HW_TIMER HwTimer; + PVIDEO_HW_START_DMA HwStartDma; + PVIDEO_HW_POWER_SET HwSetPowerState; + PVIDEO_HW_POWER_GET HwGetPowerState; + PVIDEO_HW_GET_CHILD_DESCRIPTOR HwGetVideoChildDescriptor; + PVIDEO_HW_QUERY_INTERFACE HwQueryInterface; + ULONG HwChildDeviceExtensionSize; + PVIDEO_ACCESS_RANGE HwLegacyResourceList; + ULONG HwLegacyResourceCount; + PVIDEO_HW_LEGACYRESOURCES HwGetLegacyResources; + BOOLEAN AllowEarlyEnumeration; + ULONG Reserved; +} VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA; + +/* VIDEO_PORT_AGP_INTERFACE.Version contants */ +#define VIDEO_PORT_AGP_INTERFACE_VERSION_1 1 + +typedef struct _VIDEO_PORT_AGP_INTERFACE { + SHORT Size; + SHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PAGP_RESERVE_PHYSICAL AgpReservePhysical; + PAGP_RELEASE_PHYSICAL AgpReleasePhysical; + PAGP_COMMIT_PHYSICAL AgpCommitPhysical; + PAGP_FREE_PHYSICAL AgpFreePhysical; + PAGP_RESERVE_VIRTUAL AgpReserveVirtual; + PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; + PAGP_COMMIT_VIRTUAL AgpCommitVirtual; + PAGP_FREE_VIRTUAL AgpFreeVirtual; + ULONGLONG AgpAllocationLimit; +} VIDEO_PORT_AGP_INTERFACE, *PVIDEO_PORT_AGP_INTERFACE; + +/* VIDEO_PORT_AGP_INTERFACE_2.Version constants */ +#define VIDEO_PORT_AGP_INTERFACE_VERSION_2 2 + +typedef struct _VIDEO_PORT_AGP_INTERFACE_2 { + IN USHORT Size; + IN USHORT Version; + OUT PVOID Context; + OUT PINTERFACE_REFERENCE InterfaceReference; + OUT PINTERFACE_DEREFERENCE InterfaceDereference; + OUT PAGP_RESERVE_PHYSICAL AgpReservePhysical; + OUT PAGP_RELEASE_PHYSICAL AgpReleasePhysical; + OUT PAGP_COMMIT_PHYSICAL AgpCommitPhysical; + OUT PAGP_FREE_PHYSICAL AgpFreePhysical; + OUT PAGP_RESERVE_VIRTUAL AgpReserveVirtual; + OUT PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; + OUT PAGP_COMMIT_VIRTUAL AgpCommitVirtual; + OUT PAGP_FREE_VIRTUAL AgpFreeVirtual; + OUT ULONGLONG AgpAllocationLimit; + OUT PAGP_SET_RATE AgpSetRate; +} VIDEO_PORT_AGP_INTERFACE_2, *PVIDEO_PORT_AGP_INTERFACE_2; + +#define VIDEO_PORT_I2C_INTERFACE_VERSION_1 1 + +typedef VOID DDKAPI +(*PVIDEO_WRITE_CLOCK_LINE)( + PVOID HwDeviceExtension, + UCHAR Data); + +typedef VOID DDKAPI +(*PVIDEO_WRITE_DATA_LINE)( + PVOID HwDeviceExtension, + UCHAR Data); + +typedef BOOLEAN DDKAPI +(*PVIDEO_READ_CLOCK_LINE)( + PVOID HwDeviceExtension); + +typedef BOOLEAN DDKAPI +(*PVIDEO_READ_DATA_LINE)( + PVOID HwDeviceExtension); + +typedef struct _I2C_CALLBACKS +{ + IN PVIDEO_WRITE_CLOCK_LINE WriteClockLine; + IN PVIDEO_WRITE_DATA_LINE WriteDataLine; + IN PVIDEO_READ_CLOCK_LINE ReadClockLine; + IN PVIDEO_READ_DATA_LINE ReadDataLine; +} I2C_CALLBACKS, *PI2C_CALLBACKS; + +typedef BOOLEAN DDKAPI +(*PI2C_START)( + IN PVOID HwDeviceExtension, + IN PI2C_CALLBACKS I2CCallbacks); + +typedef BOOLEAN DDKAPI +(*PI2C_STOP)( + IN PVOID HwDeviceExtension, + IN PI2C_CALLBACKS I2CCallbacks); + +typedef BOOLEAN DDKAPI +(*PI2C_WRITE)( + IN PVOID HwDeviceExtension, + IN PI2C_CALLBACKS I2CCallbacks, + IN PUCHAR Buffer, + IN ULONG Length); + +typedef BOOLEAN DDKAPI +(*PI2C_READ)( + IN PVOID HwDeviceExtension, + IN PI2C_CALLBACKS I2CCallbacks, + OUT PUCHAR Buffer, + IN ULONG Length); + +typedef struct _VIDEO_PORT_I2C_INTERFACE { + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PI2C_START I2CStart; + PI2C_STOP I2CStop; + PI2C_WRITE I2CWrite; + PI2C_READ I2CRead; +} VIDEO_PORT_I2C_INTERFACE, *PVIDEO_PORT_I2C_INTERFACE; + +/* VIDEO_PORT_INT10_INTERFACE.Version constants */ +#define VIDEO_PORT_INT10_INTERFACE_VERSION_1 1 + +typedef VP_STATUS DDKAPI +(*PINT10_ALLOCATE_BUFFER)( + IN PVOID Context, + OUT PUSHORT Seg, + OUT PUSHORT Off, + IN OUT PULONG Length); + +typedef VP_STATUS DDKAPI +(*PINT10_CALL_BIOS)( + IN PVOID Context, + IN OUT PINT10_BIOS_ARGUMENTS BiosArguments); + +typedef VP_STATUS DDKAPI +(*PINT10_FREE_BUFFER)( + IN PVOID Context, + IN USHORT Seg, + IN USHORT Off); + +typedef VP_STATUS DDKAPI +(*PINT10_READ_MEMORY)( + IN PVOID Context, + IN USHORT Seg, + IN USHORT Off, + OUT PVOID Buffer, + IN ULONG Length); + +typedef VP_STATUS DDKAPI +(*PINT10_WRITE_MEMORY)( + IN PVOID Context, + IN USHORT Seg, + IN USHORT Off, + IN PVOID Buffer, + IN ULONG Length); + +typedef struct _VIDEO_PORT_INT10_INTERFACE { + IN USHORT Size; + IN USHORT Version; + OUT PVOID Context; + OUT PINTERFACE_REFERENCE InterfaceReference; + OUT PINTERFACE_DEREFERENCE InterfaceDereference; + OUT PINT10_ALLOCATE_BUFFER Int10AllocateBuffer; + OUT PINT10_FREE_BUFFER Int10FreeBuffer; + OUT PINT10_READ_MEMORY Int10ReadMemory; + OUT PINT10_WRITE_MEMORY Int10WriteMemory; + OUT PINT10_CALL_BIOS Int10CallBios; +} VIDEO_PORT_INT10_INTERFACE, *PVIDEO_PORT_INT10_INTERFACE; + +/* Flags for VideoPortGetDeviceBase and VideoPortMapMemory */ +#define VIDEO_MEMORY_SPACE_MEMORY 0x00 +#define VIDEO_MEMORY_SPACE_IO 0x01 +#define VIDEO_MEMORY_SPACE_USER_MODE 0x02 +#define VIDEO_MEMORY_SPACE_DENSE 0x04 +#define VIDEO_MEMORY_SPACE_P6CACHE 0x08 + +typedef struct _VIDEO_X86_BIOS_ARGUMENTS { + ULONG Eax; + ULONG Ebx; + ULONG Ecx; + ULONG Edx; + ULONG Esi; + ULONG Edi; + ULONG Ebp; +} VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS; + +typedef struct _VP_DEVICE_DESCRIPTION { + BOOLEAN ScatterGather; + BOOLEAN Dma32BitAddresses; + BOOLEAN Dma64BitAddresses; + ULONG MaximumLength; +} VP_DEVICE_DESCRIPTION, *PVP_DEVICE_DESCRIPTION; + +typedef struct _VPOSVERSIONINFO { + IN ULONG Size; + OUT ULONG MajorVersion; + OUT ULONG MinorVersion; + OUT ULONG BuildNumber; + OUT USHORT ServicePackMajor; + OUT USHORT ServicePackMinor; +} VPOSVERSIONINFO, *PVPOSVERSIONINFO; + + + +/* Video port functions for miniports */ + +VPAPI +VOID +DDKAPI +VideoDebugPrint( + IN ULONG DebugPrintLevel, + IN PCHAR DebugMessage, + IN ...); + +VPAPI +VOID +DDKAPI +VideoPortAcquireDeviceLock( + IN PVOID HwDeviceExtension); + +VPAPI +VOID +DDKAPI +VideoPortAcquireSpinLock( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock, + OUT PUCHAR OldIrql); + +VPAPI +VOID +DDKAPI +VideoPortAcquireSpinLockAtDpcLevel( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock); + +VPAPI +VP_STATUS +DDKAPI +VideoPortAllocateBuffer( + IN PVOID HwDeviceExtension, + IN ULONG Size, + OUT PVOID *Buffer); + +VPAPI +PVOID +DDKAPI +VideoPortAllocateCommonBuffer( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN ULONG DesiredLength, + OUT PPHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled, + PVOID Reserved); + +VPAPI +PVOID +DDKAPI +VideoPortAllocateContiguousMemory( + IN PVOID HwDeviceExtension, + IN ULONG NumberOfBytes, + IN PHYSICAL_ADDRESS HighestAcceptableAddress); + +/* VideoPortAllocatePool.PoolType constants */ +typedef enum _VP_POOL_TYPE { + VpNonPagedPool = 0, + VpPagedPool, + VpNonPagedPoolCacheAligned = 4, + VpPagedPoolCacheAligned +} VP_POOL_TYPE, *PVP_POOL_TYPE; + +VPAPI +PVOID +DDKAPI +VideoPortAllocatePool( + IN PVOID HwDeviceExtension, + IN VP_POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); + +VPAPI +PDMA +DDKAPI +VideoPortAssociateEventsWithDmaHandle( + IN PVOID HwDeviceExtension, + IN OUT PVIDEO_REQUEST_PACKET pVrp, + IN PVOID MappedUserEvent, + IN PVOID DisplayDriverEvent); + +/* VideoPortCheckForDeviceExistence.Flags constants */ +#define CDE_USE_SUBSYSTEM_IDS 0x00000001 +#define CDE_USE_REVISION 0x00000002 + +VPAPI +BOOLEAN +DDKAPI +VideoPortCheckForDeviceExistence( + IN PVOID HwDeviceExtension, + IN USHORT VendorId, + IN USHORT DeviceId, + IN UCHAR RevisionId, + IN USHORT SubVendorId, + IN USHORT SubSystemId, + IN ULONG Flags); + +VPAPI +VOID +DDKAPI +VideoPortClearEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +ULONG +DDKAPI +VideoPortCompareMemory( + IN PVOID Source1, + IN PVOID Source2, + IN ULONG Length); + +VPAPI +VP_STATUS +DDKAPI +VideoPortCompleteDma( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN PVP_SCATTER_GATHER_LIST VpScatterGather, + IN BOOLEAN WriteToDevice); + +VPAPI +VP_STATUS +DDKAPI +VideoPortCreateEvent( + IN PVOID HwDeviceExtension, + IN ULONG EventFlag, + IN PVOID Unused, + OUT PEVENT *ppEvent); + +VPAPI +VP_STATUS +DDKAPI +VideoPortCreateSecondaryDisplay( + IN PVOID HwDeviceExtension, + IN OUT PVOID *SecondaryDeviceExtension, + IN ULONG ulFlag); + +VPAPI +VP_STATUS +DDKAPI +VideoPortCreateSpinLock( + IN PVOID HwDeviceExtension, + OUT PSPIN_LOCK *SpinLock); + +typedef struct _DDC_CONTROL { + IN ULONG Size; + IN I2C_CALLBACKS I2CCallbacks; + IN UCHAR EdidSegment; +} DDC_CONTROL, *PDDC_CONTROL; + +VPAPI +BOOLEAN +DDKAPI +VideoPortDDCMonitorHelper( + IN PVOID HwDeviceExtension, + IN PVOID DDCControl, + IN OUT PUCHAR EdidBuffer, + IN ULONG EdidBufferSize); + +VPAPI +VOID +DDKCDECLAPI +VideoPortDebugPrint( + IN VIDEO_DEBUG_LEVEL DebugPrintLevel, + IN PCHAR DebugMessage, + IN ...); + +VPAPI +VP_STATUS +DDKAPI +VideoPortDeleteEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +VP_STATUS +DDKAPI +VideoPortDeleteSpinLock( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock); + +VPAPI +VP_STATUS +DDKAPI +VideoPortDisableInterrupt( + IN PVOID HwDeviceExtension); + +VPAPI +PDMA +DDKAPI +VideoPortDoDma( + IN PVOID HwDeviceExtension, + IN PDMA pDma, + IN DMA_FLAGS DmaFlags); + +VPAPI +VP_STATUS +DDKAPI +VideoPortEnableInterrupt( + IN PVOID HwDeviceExtension); + +VPAPI +VP_STATUS +DDKAPI +VideoPortEnumerateChildren( + IN PVOID HwDeviceExtension, + IN PVOID Reserved); + +VPAPI +VOID +DDKAPI +VideoPortFreeCommonBuffer( + IN PVOID HwDeviceExtension, + IN ULONG Length, + IN PVOID VirtualAddress, + IN PHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled); + +VPAPI +VOID +DDKAPI +VideoPortFreeDeviceBase( + IN PVOID HwDeviceExtension, + IN PVOID MappedAddress); + +VPAPI +VOID +DDKAPI +VideoPortFreePool( + IN PVOID HwDeviceExtension, + IN PVOID Ptr); + +VPAPI +VP_STATUS +DDKAPI +VideoPortGetAccessRanges( + IN PVOID HwDeviceExtension, + IN ULONG NumRequestedResources, + IN PIO_RESOURCE_DESCRIPTOR RequestedResources OPTIONAL, + IN ULONG NumAccessRanges, + OUT PVIDEO_ACCESS_RANGE AccessRanges, + IN PVOID VendorId, + IN PVOID DeviceId, + OUT PULONG Slot); + +VPAPI +PVOID +DDKAPI +VideoPortGetAssociatedDeviceExtension( + IN PVOID DeviceObject); + +VPAPI +ULONG +DDKAPI +VideoPortGetAssociatedDeviceID( + IN PVOID DeviceObject); + +VPAPI +ULONG +DDKAPI +VideoPortGetBusData( + IN PVOID HwDeviceExtension, + IN BUS_DATA_TYPE BusDataType, + IN ULONG SlotNumber, + IN OUT PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +VPAPI +ULONG +DDKAPI +VideoPortGetBytesUsed( + IN PVOID HwDeviceExtension, + IN PDMA pDma); + +VPAPI +PVOID +DDKAPI +VideoPortGetCommonBuffer( + IN PVOID HwDeviceExtension, + IN ULONG DesiredLength, + IN ULONG Alignment, + OUT PPHYSICAL_ADDRESS LogicalAddress, + OUT PULONG pActualLength, + IN BOOLEAN CacheEnabled); + +VPAPI +UCHAR +DDKAPI +VideoPortGetCurrentIrql( + VOID); + +VPAPI +PVOID +DDKAPI +VideoPortGetDeviceBase( + IN PVOID HwDeviceExtension, + IN PHYSICAL_ADDRESS IoAddress, + IN ULONG NumberOfUchars, + IN UCHAR InIoSpace); + +VPAPI +VP_STATUS +DDKAPI +VideoPortGetDeviceData( + IN PVOID HwDeviceExtension, + IN VIDEO_DEVICE_DATA_TYPE DeviceDataType, + IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine, + IN PVOID Context); + +VPAPI +PVP_DMA_ADAPTER +DDKAPI +VideoPortGetDmaAdapter( + IN PVOID HwDeviceExtension, + IN PVP_DEVICE_DESCRIPTION VpDeviceDescription); + +VPAPI +PVOID +DDKAPI +VideoPortGetDmaContext( + IN PVOID HwDeviceExtension, + IN PDMA pDma); + +VPAPI +PVOID +DDKAPI +VideoPortGetMdl( + IN PVOID HwDeviceExtension, + IN PDMA pDma); + +VPAPI +VP_STATUS +DDKAPI +VideoPortGetRegistryParameters( + IN PVOID HwDeviceExtension, + IN PWSTR ParameterName, + IN UCHAR IsParameterFileName, + IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine, + IN PVOID Context); + +VPAPI +PVOID +DDKAPI +VideoPortGetRomImage( + IN PVOID HwDeviceExtension, + IN PVOID Unused1, + IN ULONG Unused2, + IN ULONG Length); + +VPAPI +VP_STATUS +DDKAPI +VideoPortGetVersion( + IN PVOID HwDeviceExtension, + IN OUT PVPOSVERSIONINFO pVpOsVersionInfo); + +VPAPI +VP_STATUS +DDKAPI +VideoPortGetVgaStatus( + IN PVOID HwDeviceExtension, + OUT PULONG VgaStatus); + +VPAPI +ULONG +DDKAPI +VideoPortInitialize( + IN PVOID Argument1, + IN PVOID Argument2, + IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData, + IN PVOID HwContext); + +VPAPI +VP_STATUS +DDKAPI +VideoPortInt10( + IN PVOID HwDeviceExtension, + IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments); + +VPAPI +LONG +DDKFASTAPI +VideoPortInterlockedDecrement( + IN PLONG Addend); + +VPAPI +LONG +DDKFASTAPI +VideoPortInterlockedExchange( + IN OUT PLONG Target, + IN LONG Value); + +VPAPI +LONG +DDKFASTAPI +VideoPortInterlockedIncrement( + IN PLONG Addend); + +typedef enum _VP_LOCK_OPERATION { + VpReadAccess = 0, + VpWriteAccess, + VpModifyAccess +} VP_LOCK_OPERATION; + +VPAPI +PVOID +DDKAPI +VideoPortLockBuffer( + IN PVOID HwDeviceExtension, + IN PVOID BaseAddress, + IN ULONG Length, + IN VP_LOCK_OPERATION Operation); + +VPAPI +BOOLEAN +DDKAPI +VideoPortLockPages( + IN PVOID HwDeviceExtension, + IN OUT PVIDEO_REQUEST_PACKET pVrp, + IN OUT PEVENT pUEvent, + IN PEVENT pDisplayEvent, + IN DMA_FLAGS DmaFlags); + +VPAPI +VOID +DDKAPI +VideoPortLogError( + IN PVOID HwDeviceExtension, + IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL, + IN VP_STATUS ErrorCode, + IN ULONG UniqueId); + +VPAPI +VP_STATUS +DDKAPI +VideoPortMapBankedMemory( + IN PVOID HwDeviceExtension, + IN PHYSICAL_ADDRESS PhysicalAddress, + IN OUT PULONG Length, + PULONG InIoSpace, + PVOID *VirtualAddress, + ULONG BankLength, + UCHAR ReadWriteBank, + PBANKED_SECTION_ROUTINE BankRoutine, + PVOID Context); + +VPAPI +PDMA +DDKAPI +VideoPortMapDmaMemory( + IN PVOID HwDeviceExtension, + IN PVIDEO_REQUEST_PACKET pVrp, + IN PHYSICAL_ADDRESS BoardAddress, + IN PULONG Length, + IN PULONG InIoSpace, + IN PVOID MappedUserEvent, + IN PVOID DisplayDriverEvent, + IN OUT PVOID *VirtualAddress); + +VPAPI +VP_STATUS +DDKAPI +VideoPortMapMemory( + IN PVOID HwDeviceExtension, + IN PHYSICAL_ADDRESS PhysicalAddress, + IN OUT PULONG Length, + IN PULONG InIoSpace, + IN OUT PVOID *VirtualAddress); + +VPAPI +VOID +DDKAPI +VideoPortMoveMemory( + IN PVOID Destination, + IN PVOID Source, + IN ULONG Length); + +VPAPI +VOID +DDKAPI +VideoPortPutDmaAdapter( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter); + +VPAPI +LONGLONG +DDKAPI +VideoPortQueryPerformanceCounter( + IN PVOID HwDeviceExtension, + OUT PLONGLONG PerformanceFrequency OPTIONAL); + +/* VideoPortQueryServices.ServicesType constants */ +typedef enum _VIDEO_PORT_SERVICES { + VideoPortServicesAGP = 1, + VideoPortServicesI2C, + VideoPortServicesHeadless, + VideoPortServicesInt10 +} VIDEO_PORT_SERVICES; + +VPAPI +VP_STATUS +DDKAPI +VideoPortQueryServices( + IN PVOID HwDeviceExtension, + IN VIDEO_PORT_SERVICES ServicesType, + IN OUT PINTERFACE Interface); + +VPAPI +VOID +DDKAPI +VideoPortQuerySystemTime( + OUT PLARGE_INTEGER CurrentTime); + +VPAPI +BOOLEAN +DDKAPI +VideoPortQueueDpc( + IN PVOID HwDeviceExtension, + IN PMINIPORT_DPC_ROUTINE CallbackRoutine, + IN PVOID Context); + +VPAPI +VOID +DDKAPI +VideoPortReadPortBufferUchar( + IN PUCHAR Port, + OUT PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortReadPortBufferUlong( + IN PULONG Port, + OUT PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortReadPortBufferUshort( + IN PUSHORT Port, + OUT PUSHORT Buffer, + IN ULONG Count); + +VPAPI +UCHAR +DDKAPI +VideoPortReadPortUchar( + IN PUCHAR Port); + +VPAPI +ULONG +DDKAPI +VideoPortReadPortUlong( + IN PULONG Port); + +VPAPI +USHORT +DDKAPI +VideoPortReadPortUshort( + IN PUSHORT Port); + +VPAPI +VOID +DDKAPI +VideoPortReadRegisterBufferUchar( + IN PUCHAR Register, + OUT PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortReadRegisterBufferUlong( + IN PULONG Register, + OUT PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortReadRegisterBufferUshort( + IN PUSHORT Register, + OUT PUSHORT Buffer, + IN ULONG Count); + +VPAPI +UCHAR +DDKAPI +VideoPortReadRegisterUchar( + IN PUCHAR Register); + +VPAPI +ULONG +DDKAPI +VideoPortReadRegisterUlong( + IN PULONG Register); + +VPAPI +USHORT +DDKAPI +VideoPortReadRegisterUshort( + IN PUSHORT Register); + +VPAPI +LONG +DDKAPI +VideoPortReadStateEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +VOID +DDKAPI +VideoPortReleaseBuffer( + IN PVOID HwDeviceExtension, + IN PVOID Buffer); + +VPAPI +VOID +DDKAPI +VideoPortReleaseCommonBuffer( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN ULONG Length, + IN PHYSICAL_ADDRESS LogicalAddress, + IN PVOID VirtualAddress, + IN BOOLEAN CacheEnabled); + +VPAPI +VOID +DDKAPI +VideoPortReleaseDeviceLock( + IN PVOID HwDeviceExtension); + +VPAPI +VOID +DDKAPI +VideoPortReleaseSpinLock( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock, + IN UCHAR NewIrql); + +VPAPI +VOID +DDKAPI +VideoPortReleaseSpinLockFromDpcLevel( + IN PVOID HwDeviceExtension, + IN PSPIN_LOCK SpinLock); + +VPAPI +BOOLEAN +DDKAPI +VideoPortScanRom( + PVOID HwDeviceExtension, + PUCHAR RomBase, + ULONG RomLength, + PUCHAR String); + +VPAPI +ULONG +DDKAPI +VideoPortSetBusData( + IN PVOID HwDeviceExtension, + IN BUS_DATA_TYPE BusDataType, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +VPAPI +VOID +DDKAPI +VideoPortSetBytesUsed( + IN PVOID HwDeviceExtension, + IN OUT PDMA pDma, + IN ULONG BytesUsed); + +VPAPI +VOID +DDKAPI +VideoPortSetDmaContext( + IN PVOID HwDeviceExtension, + OUT PDMA pDma, + IN PVOID InstanceContext); + +VPAPI +LONG +DDKAPI +VideoPortSetEvent( + IN PVOID HwDeviceExtension, + IN PEVENT pEvent); + +VPAPI +VP_STATUS +DDKAPI +VideoPortSetRegistryParameters( + IN PVOID HwDeviceExtension, + IN PWSTR ValueName, + IN PVOID ValueData, + IN ULONG ValueLength); + +VPAPI +VP_STATUS +DDKAPI +VideoPortSetTrappedEmulatorPorts( + IN PVOID HwDeviceExtension, + IN ULONG NumAccessRanges, + IN PVIDEO_ACCESS_RANGE AccessRange); + +VPAPI +BOOLEAN +DDKAPI +VideoPortSignalDmaComplete( + IN PVOID HwDeviceExtension, + IN PVOID pDmaHandle); + +VPAPI +VOID +DDKAPI +VideoPortStallExecution( + IN ULONG Microseconds); + +VPAPI +VP_STATUS +DDKAPI +VideoPortStartDma( + IN PVOID HwDeviceExtension, + IN PVP_DMA_ADAPTER VpDmaAdapter, + IN PVOID Mdl, + IN ULONG Offset, + IN OUT PULONG pLength, + IN PEXECUTE_DMA ExecuteDmaRoutine, + IN PVOID Context, + IN BOOLEAN WriteToDevice); + +VPAPI +VOID +DDKAPI +VideoPortStartTimer( + IN PVOID HwDeviceExtension); + +VPAPI +VOID +DDKAPI +VideoPortStopTimer( + IN PVOID HwDeviceExtension); + +/* VideoPortSynchronizeExecution.Priority constants */ +typedef enum VIDEO_SYNCHRONIZE_PRIORITY { + VpLowPriority = 0, + VpMediumPriority, + VpHighPriority +} VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY; + +VPAPI +BOOLEAN +DDKAPI +VideoPortSynchronizeExecution( + IN PVOID HwDeviceExtension, + IN VIDEO_SYNCHRONIZE_PRIORITY Priority, + IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine, + IN PVOID Context); + +VPAPI +VOID +DDKAPI +VideoPortUnLockBuffer( + IN PVOID HwDeviceExtension, + IN PVOID Mdl); + +VPAPI +BOOLEAN +DDKAPI +VideoPortUnlockPages( + IN PVOID hwDeviceExtension, + IN OUT PDMA pDma); + +VPAPI +BOOLEAN +DDKAPI +VideoPortUnmapDmaMemory( + IN PVOID HwDeviceExtension, + IN PVOID VirtualAddress, + IN HANDLE ProcessHandle, + IN PDMA BoardMemoryHandle); + +VPAPI +VP_STATUS +DDKAPI +VideoPortUnmapMemory( + IN PVOID HwDeviceExtension, + IN OUT PVOID VirtualAddress, + IN HANDLE ProcessHandle); + +VPAPI +VP_STATUS +DDKAPI +VideoPortVerifyAccessRanges( + IN PVOID HwDeviceExtension, + IN ULONG NumAccessRanges, + IN PVIDEO_ACCESS_RANGE AccessRanges); + +VPAPI +VP_STATUS +DDKAPI +VideoPortWaitForSingleObject( + IN PVOID HwDeviceExtension, + IN PVOID Object, + IN PLARGE_INTEGER Timeout OPTIONAL); + +VPAPI +VOID +DDKAPI +VideoPortWritePortBufferUchar( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortWritePortBufferUlong( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortWritePortBufferUshort( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortWritePortUchar( + IN PUCHAR Port, + IN UCHAR Value); + +VPAPI +VOID +DDKAPI +VideoPortWritePortUlong( + IN PULONG Port, + IN ULONG Value); + +VPAPI +VOID +DDKAPI +VideoPortWritePortUshort( + IN PUSHORT Port, + IN USHORT Value); + +VPAPI +VOID +DDKAPI +VideoPortWriteRegisterBufferUchar( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortWriteRegisterBufferUlong( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortWriteRegisterBufferUshort( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); + +VPAPI +VOID +DDKAPI +VideoPortWriteRegisterUchar( + IN PUCHAR Register, + IN UCHAR Value); + +VPAPI +VOID +DDKAPI +VideoPortWriteRegisterUlong( + IN PULONG Register, + IN ULONG Value); + +VPAPI +VOID +DDKAPI +VideoPortWriteRegisterUshort( + IN PUSHORT Register, + IN USHORT Value); + +VPAPI +VOID +DDKAPI +VideoPortZeroDeviceMemory( + IN PVOID Destination, + IN ULONG Length); + +VPAPI +VOID +DDKAPI +VideoPortZeroMemory( + IN PVOID Destination, + IN ULONG Length); + +#ifdef DBG +#define VideoDebugPrint(x) VideoPortDebugPrint x +#else +#define VideoDebugPrint(x) +#endif + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* defined __WINDDI_H */ + +#endif /* __VIDEO_H */ diff --git a/reactos/w32api/include/ddk/videoagp.h b/reactos/w32api/include/ddk/videoagp.h new file mode 100644 index 00000000000..89886f809da --- /dev/null +++ b/reactos/w32api/include/ddk/videoagp.h @@ -0,0 +1,133 @@ +/* + * videoagp.h + * + * Video miniport AGP interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __VIDEOAGP_H +#define __VIDEOAGP_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include "ntddk.h" +#include "video.h" + + +#define VIDEO_AGP_RATE_1X 0x00000001 +#define VIDEO_AGP_RATE_2X 0x00000002 +#define VIDEO_AGP_RATE_4X 0x00000004 +#define VIDEO_AGP_RATE_8X 0x00000008 + +typedef enum _VIDEO_PORT_CACHE_TYPE { + VpNonCached = 0, + VpWriteCombined, + VpCached +} VIDEO_PORT_CACHE_TYPE; + +typedef BOOLEAN DDKAPI +(*PAGP_COMMIT_PHYSICAL)( + IN PVOID HwDeviceExtension, + IN PVOID PhysicalReserveContext, + IN ULONG Pages, + IN ULONG Offset); + +typedef PVOID DDKAPI +(*PAGP_COMMIT_VIRTUAL)( + IN PVOID HwDeviceExtension, + IN PVOID VirtualReserveContext, + IN ULONG Pages, + IN ULONG Offset); + +typedef VOID DDKAPI +(*PAGP_FREE_PHYSICAL)( + IN PVOID HwDeviceExtension, + IN PVOID PhysicalReserveContext, + IN ULONG Pages, + IN ULONG Offset); + +typedef VOID DDKAPI +(*PAGP_FREE_VIRTUAL)( + IN PVOID HwDeviceExtension, + IN PVOID VirtualReserveContext, + IN ULONG Pages, + IN ULONG Offset); + +typedef VOID DDKAPI +(*PAGP_RELEASE_PHYSICAL)( + IN PVOID HwDeviceExtension, + IN PVOID PhysicalReserveContext); + +typedef VOID DDKAPI +(*PAGP_RELEASE_VIRTUAL)( + IN PVOID HwDeviceExtension, + IN PVOID VirtualReserveContext); + +typedef PHYSICAL_ADDRESS DDKAPI +(*PAGP_RESERVE_PHYSICAL)( + IN PVOID HwDeviceExtension, + IN ULONG Pages, + IN VIDEO_PORT_CACHE_TYPE Caching, + OUT PVOID *PhysicalReserveContext); + +typedef PVOID DDKAPI +(*PAGP_RESERVE_VIRTUAL)( + IN PVOID HwDeviceExtension, + IN HANDLE ProcessHandle, + IN PVOID PhysicalReserveContext, + OUT PVOID *VirtualReserveContext); + +typedef BOOLEAN DDKAPI +(*PAGP_SET_RATE)( + IN PVOID HwDeviceExtension, + IN ULONG AgpRate); + +typedef struct _VIDEO_PORT_AGP_SERVICES { + PAGP_RESERVE_PHYSICAL AgpReservePhysical; + PAGP_RELEASE_PHYSICAL AgpReleasePhysical; + PAGP_COMMIT_PHYSICAL AgpCommitPhysical; + PAGP_FREE_PHYSICAL AgpFreePhysical; + PAGP_RESERVE_VIRTUAL AgpReserveVirtual; + PAGP_RELEASE_VIRTUAL AgpReleaseVirtual; + PAGP_COMMIT_VIRTUAL AgpCommitVirtual; + PAGP_FREE_VIRTUAL AgpFreeVirtual; + ULONGLONG AllocationLimit; +} VIDEO_PORT_AGP_SERVICES, *PVIDEO_PORT_AGP_SERVICES; + +VPAPI +BOOLEAN +DDKAPI +VideoPortGetAgpServices( + IN PVOID HwDeviceExtension, + IN PVIDEO_PORT_AGP_SERVICES AgpServices); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __VIDEOAGP_H */ diff --git a/reactos/w32api/include/ddk/win2k.h b/reactos/w32api/include/ddk/win2k.h new file mode 100644 index 00000000000..deba29b9e0e --- /dev/null +++ b/reactos/w32api/include/ddk/win2k.h @@ -0,0 +1,106 @@ +/* + * win2k.h + * + * Definitions only used in Windows 2000 and earlier versions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __WIN2K_H +#define __WIN2K_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ntddk.h" + +#pragma pack(push,4) + +typedef enum _BUS_DATA_TYPE { + ConfigurationSpaceUndefined = -1, + Cmos, + EisaConfiguration, + Pos, + CbusConfiguration, + PCIConfiguration, + VMEConfiguration, + NuBusConfiguration, + PCMCIAConfiguration, + MPIConfiguration, + MPSAConfiguration, + PNPISAConfiguration, + SgiInternalConfiguration, + MaximumBusDataType +} BUS_DATA_TYPE, *PBUS_DATA_TYPE; + +NTOSAPI +VOID +DDKAPI +ExReleaseResourceForThreadLite( + IN PERESOURCE Resource, + IN ERESOURCE_THREAD ResourceThreadId); + +NTOSAPI +NTSTATUS +DDKAPI +IoReadPartitionTable( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN BOOLEAN ReturnRecognizedPartitions, + OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoSetPartitionInformation( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG PartitionNumber, + IN ULONG PartitionType); + +NTOSAPI +NTSTATUS +DDKAPI +IoWritePartitionTable( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG SectorsPerTrack, + IN ULONG NumberOfHeads, + IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer); + +/* + * PVOID MmGetSystemAddressForMdl( + * IN PMDL Mdl); + */ +#define MmGetSystemAddressForMdl(Mdl) \ + (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \ + MDL_SOURCE_IS_NONPAGED_POOL)) ? \ + ((Mdl)->MappedSystemVa) : \ + (MmMapLockedPages((Mdl), KernelMode))) + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __WIN2K_H */ diff --git a/reactos/w32api/include/ddk/winddi.h b/reactos/w32api/include/ddk/winddi.h new file mode 100644 index 00000000000..5659e6f8966 --- /dev/null +++ b/reactos/w32api/include/ddk/winddi.h @@ -0,0 +1,4146 @@ +/* + * winddi.h + * + * GDI device driver interface + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __WINDDI_H +#define __WINDDI_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __VIDEO_H +#error video.h cannot be included with winddi.h +#else + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ntddk.h" +#include + +#if 1 +/* FIXME: Some DirectDraw structures not added yet */ +typedef ULONG_PTR FLATPTR; +typedef PVOID LPVIDMEM; +typedef PVOID LPVMEMHEAP; +typedef PVOID PGLYPHOS; +typedef struct _DD_SURFACECALLBACKS { +} DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS; +typedef struct _DD_PALETTECALLBACKS { +} DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS; +typedef struct _DD_CALLBACKS { +} DD_CALLBACKS, *PDD_CALLBACKS; +typedef struct _DD_HALINFO { +} DD_HALINFO, *PDD_HALINFO; +typedef struct _DDSCAPS { +} DDSCAPS, *PDDSCAPS; +typedef struct _DDSCAPSEX { +} DDSCAPSEX, *PDDSCAPSEX; +typedef struct _VIDEOMEMORY { +} VIDEOMEMORY, *LPVIDEOMEMORY; +typedef struct _DD_DIRECTDRAW_GLOBAL { +} DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL; +typedef struct _DD_SURFACE_LOCAL { +} DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL; +#endif + +#if defined(_WIN32K_) +#define WIN32KAPI DECL_EXPORT +#else +#define WIN32KAPI DECL_IMPORT +#endif + +#define DDI_DRIVER_VERSION_NT4 0x00020000 +#define DDI_DRIVER_VERSION_SP3 0x00020003 +#define DDI_DRIVER_VERSION_NT5 0x00030000 +#define DDI_DRIVER_VERSION_NT5_01 0x00030100 + +#define GDI_DRIVER_VERSION 0x4000 + +#ifdef _X86_ + +typedef DWORD FLOATL; + +#else /* !_X86_ */ + +typedef FLOAT FLOATL; + +#endif + +typedef SHORT FWORD; +typedef LONG LDECI4; +typedef ULONG IDENT; + +typedef ULONG_PTR HFF; +typedef ULONG_PTR HFC; + +typedef LONG PTRDIFF; +typedef PTRDIFF *PPTRDIFF; +typedef LONG FIX; +typedef FIX *PFIX; +typedef ULONG ROP4; +typedef ULONG MIX; +typedef ULONG HGLYPH; +typedef HGLYPH *PHGLYPH; + +typedef LONG_PTR (DDKAPI *PFN)(); + +DECLARE_HANDLE(HBM); +DECLARE_HANDLE(HDEV); +DECLARE_HANDLE(HSURF); +DECLARE_HANDLE(DHSURF); +DECLARE_HANDLE(DHPDEV); +DECLARE_HANDLE(HDRVOBJ); + + +#define GDI_DRIVER_VERSION 0x4000 + +typedef struct _ENG_EVENT *PEVENT; + +#define OPENGL_CMD 4352 +#define OPENGL_GETINFO 4353 +#define WNDOBJ_SETUP 4354 + +#define FD_ERROR 0xFFFFFFFF +#define DDI_ERROR 0xFFFFFFFF + +#define HFF_INVALID ((HFF) 0) +#define HFC_INVALID ((HFC) 0) +#define HGLYPH_INVALID ((HGLYPH) -1) + +#define FP_ALTERNATEMODE 1 +#define FP_WINDINGMODE 2 + +#define DN_ACCELERATION_LEVEL 1 +#define DN_DEVICE_ORIGIN 2 +#define DN_SLEEP_MODE 3 +#define DN_DRAWING_BEGIN 4 + +#define DCR_SOLID 0 +#define DCR_DRIVER 1 +#define DCR_HALFTONE 2 + +#define GX_IDENTITY 0 +#define GX_OFFSET 1 +#define GX_SCALE 2 +#define GX_GENERAL 3 + +typedef struct _POINTE { + FLOATL x; + FLOATL y; +} POINTE, *PPOINTE; + +typedef union _FLOAT_LONG { + FLOATL e; + LONG l; +} FLOAT_LONG, *PFLOAT_LONG; + +typedef struct _POINTFIX { + FIX x; + FIX y; +} POINTFIX, *PPOINTFIX; + +typedef struct _RECTFX { + FIX xLeft; + FIX yTop; + FIX xRight; + FIX yBottom; +} RECTFX, *PRECTFX; + +typedef struct _POINTQF { + LARGE_INTEGER x; + LARGE_INTEGER y; +} POINTQF, *PPOINTQF; + + +typedef struct _BLENDOBJ { + BLENDFUNCTION BlendFunction; +} BLENDOBJ,*PBLENDOBJ; + +/* BRUSHOBJ.flColorType */ +#define BR_DEVICE_ICM 0x01 +#define BR_HOST_ICM 0x02 +#define BR_CMYKCOLOR 0x04 +#define BR_ORIGCOLOR 0x08 + +typedef struct _BRUSHOBJ { + ULONG iSolidColor; + PVOID pvRbrush; + FLONG flColorType; +} BRUSHOBJ; + +typedef struct _CIECHROMA { + LDECI4 x; + LDECI4 y; + LDECI4 Y; +} CIECHROMA; + +typedef struct _RUN { + LONG iStart; + LONG iStop; +} RUN, *PRUN; + +typedef struct _CLIPLINE { + POINTFIX ptfxA; + POINTFIX ptfxB; + LONG lStyleState; + ULONG c; + RUN arun[1]; +} CLIPLINE, *PCLIPLINE; + +/* CLIPOBJ.iDComplexity constants */ +#define DC_TRIVIAL 0 +#define DC_RECT 1 +#define DC_COMPLEX 3 + +/* CLIPOBJ.iFComplexity constants */ +#define FC_RECT 1 +#define FC_RECT4 2 +#define FC_COMPLEX 3 + +/* CLIPOBJ.iMode constants */ +#define TC_RECTANGLES 0 +#define TC_PATHOBJ 2 + +/* CLIPOBJ.fjOptions constants */ +#define OC_BANK_CLIP 1 + +typedef struct _CLIPOBJ { + ULONG iUniq; + RECTL rclBounds; + BYTE iDComplexity; + BYTE iFComplexity; + BYTE iMode; + BYTE fjOptions; +} CLIPOBJ; + +typedef struct _COLORINFO { + CIECHROMA Red; + CIECHROMA Green; + CIECHROMA Blue; + CIECHROMA Cyan; + CIECHROMA Magenta; + CIECHROMA Yellow; + CIECHROMA AlignmentWhite; + LDECI4 RedGamma; + LDECI4 GreenGamma; + LDECI4 BlueGamma; + LDECI4 MagentaInCyanDye; + LDECI4 YellowInCyanDye; + LDECI4 CyanInMagentaDye; + LDECI4 YellowInMagentaDye; + LDECI4 CyanInYellowDye; + LDECI4 MagentaInYellowDye; +} COLORINFO, *PCOLORINFO; + +/* DEVHTADJDATA.DeviceFlags constants */ +#define DEVHTADJF_COLOR_DEVICE 0x00000001 +#define DEVHTADJF_ADDITIVE_DEVICE 0x00000002 + +typedef struct _DEVHTINFO { + DWORD HTFlags; + DWORD HTPatternSize; + DWORD DevPelsDPI; + COLORINFO ColorInfo; +} DEVHTINFO, *PDEVHTINFO; + +typedef struct _DEVHTADJDATA { + DWORD DeviceFlags; + DWORD DeviceXDPI; + DWORD DeviceYDPI; + PDEVHTINFO pDefHTInfo; + PDEVHTINFO pAdjHTInfo; +} DEVHTADJDATA, *PDEVHTADJDATA; + +/* DEVINFO.flGraphicsCaps flags */ +#define GCAPS_BEZIERS 0x00000001 +#define GCAPS_GEOMETRICWIDE 0x00000002 +#define GCAPS_ALTERNATEFILL 0x00000004 +#define GCAPS_WINDINGFILL 0x00000008 +#define GCAPS_HALFTONE 0x00000010 +#define GCAPS_COLOR_DITHER 0x00000020 +#define GCAPS_HORIZSTRIKE 0x00000040 +#define GCAPS_VERTSTRIKE 0x00000080 +#define GCAPS_OPAQUERECT 0x00000100 +#define GCAPS_VECTORFONT 0x00000200 +#define GCAPS_MONO_DITHER 0x00000400 +#define GCAPS_ASYNCCHANGE 0x00000800 +#define GCAPS_ASYNCMOVE 0x00001000 +#define GCAPS_DONTJOURNAL 0x00002000 +#define GCAPS_DIRECTDRAW 0x00004000 +#define GCAPS_ARBRUSHOPAQUE 0x00008000 +#define GCAPS_PANNING 0x00010000 +#define GCAPS_HIGHRESTEXT 0x00040000 +#define GCAPS_PALMANAGED 0x00080000 +#define GCAPS_DITHERONREALIZE 0x00200000 +#define GCAPS_NO64BITMEMACCESS 0x00400000 +#define GCAPS_FORCEDITHER 0x00800000 +#define GCAPS_GRAY16 0x01000000 +#define GCAPS_ICM 0x02000000 +#define GCAPS_CMYKCOLOR 0x04000000 +#define GCAPS_LAYERED 0x08000000 +#define GCAPS_ARBRUSHTEXT 0x10000000 +#define GCAPS_SCREENPRECISION 0x20000000 +#define GCAPS_FONT_RASTERIZER 0x40000000 +#define GCAPS_NUP 0x80000000 + +/* DEVINFO.iDitherFormat constants */ +#define BMF_1BPP 1L +#define BMF_4BPP 2L +#define BMF_8BPP 3L +#define BMF_16BPP 4L +#define BMF_24BPP 5L +#define BMF_32BPP 6L +#define BMF_4RLE 7L +#define BMF_8RLE 8L +#define BMF_JPEG 9L +#define BMF_PNG 10L + +/* DEVINFO.flGraphicsCaps2 flags */ +#define GCAPS2_JPEGSRC 0x00000001 +#define GCAPS2_xxxx 0x00000002 +#define GCAPS2_PNGSRC 0x00000008 +#define GCAPS2_CHANGEGAMMARAMP 0x00000010 +#define GCAPS2_ALPHACURSOR 0x00000020 +#define GCAPS2_SYNCFLUSH 0x00000040 +#define GCAPS2_SYNCTIMER 0x00000080 +#define GCAPS2_ICD_MULTIMON 0x00000100 +#define GCAPS2_MOUSETRAILS 0x00000200 +#define GCAPS2_RESERVED1 0x00000400 + +typedef struct _DEVINFO { + FLONG flGraphicsCaps; + LOGFONTW lfDefaultFont; + LOGFONTW lfAnsiVarFont; + LOGFONTW lfAnsiFixFont; + ULONG cFonts; + ULONG iDitherFormat; + USHORT cxDither; + USHORT cyDither; + HPALETTE hpalDefault; + FLONG flGraphicsCaps2; +} DEVINFO, *PDEVINFO; + +typedef struct _DRIVEROBJ *PDRIVEROBJ; + +typedef BOOL DDKAPI CALLBACK +(*FREEOBJPROC)( + IN PDRIVEROBJ pDriverObj); + +typedef struct _DRIVEROBJ { + PVOID pvObj; + FREEOBJPROC pFreeProc; + HDEV hdev; + DHPDEV dhpdev; +} DRIVEROBJ; + +/* DRVFN.iFunc constants */ +#define INDEX_DrvEnablePDEV 0L +#define INDEX_DrvCompletePDEV 1L +#define INDEX_DrvDisablePDEV 2L +#define INDEX_DrvEnableSurface 3L +#define INDEX_DrvDisableSurface 4L +#define INDEX_DrvAssertMode 5L +#define INDEX_DrvOffset 6L +#define INDEX_DrvResetPDEV 7L +#define INDEX_DrvDisableDriver 8L +#define INDEX_DrvCreateDeviceBitmap 10L +#define INDEX_DrvDeleteDeviceBitmap 11L +#define INDEX_DrvRealizeBrush 12L +#define INDEX_DrvDitherColor 13L +#define INDEX_DrvStrokePath 14L +#define INDEX_DrvFillPath 15L +#define INDEX_DrvStrokeAndFillPath 16L +#define INDEX_DrvPaint 17L +#define INDEX_DrvBitBlt 18L +#define INDEX_DrvCopyBits 19L +#define INDEX_DrvStretchBlt 20L +#define INDEX_DrvSetPalette 22L +#define INDEX_DrvTextOut 23L +#define INDEX_DrvEscape 24L +#define INDEX_DrvDrawEscape 25L +#define INDEX_DrvQueryFont 26L +#define INDEX_DrvQueryFontTree 27L +#define INDEX_DrvQueryFontData 28L +#define INDEX_DrvSetPointerShape 29L +#define INDEX_DrvMovePointer 30L +#define INDEX_DrvLineTo 31L +#define INDEX_DrvSendPage 32L +#define INDEX_DrvStartPage 33L +#define INDEX_DrvEndDoc 34L +#define INDEX_DrvStartDoc 35L +#define INDEX_DrvGetGlyphMode 37L +#define INDEX_DrvSynchronize 38L +#define INDEX_DrvSaveScreenBits 40L +#define INDEX_DrvGetModes 41L +#define INDEX_DrvFree 42L +#define INDEX_DrvDestroyFont 43L +#define INDEX_DrvQueryFontCaps 44L +#define INDEX_DrvLoadFontFile 45L +#define INDEX_DrvUnloadFontFile 46L +#define INDEX_DrvFontManagement 47L +#define INDEX_DrvQueryTrueTypeTable 48L +#define INDEX_DrvQueryTrueTypeOutline 49L +#define INDEX_DrvGetTrueTypeFile 50L +#define INDEX_DrvQueryFontFile 51L +#define INDEX_DrvMovePanning 52L +#define INDEX_DrvQueryAdvanceWidths 53L +#define INDEX_DrvSetPixelFormat 54L +#define INDEX_DrvDescribePixelFormat 55L +#define INDEX_DrvSwapBuffers 56L +#define INDEX_DrvStartBanding 57L +#define INDEX_DrvNextBand 58L +#define INDEX_DrvGetDirectDrawInfo 59L +#define INDEX_DrvEnableDirectDraw 60L +#define INDEX_DrvDisableDirectDraw 61L +#define INDEX_DrvQuerySpoolType 62L +#define INDEX_DrvIcmCreateColorTransform 64L +#define INDEX_DrvIcmDeleteColorTransform 65L +#define INDEX_DrvIcmCheckBitmapBits 66L +#define INDEX_DrvIcmSetDeviceGammaRamp 67L +#define INDEX_DrvGradientFill 68L +#define INDEX_DrvStretchBltROP 69L +#define INDEX_DrvPlgBlt 70L +#define INDEX_DrvAlphaBlend 71L +#define INDEX_DrvSynthesizeFont 72L +#define INDEX_DrvGetSynthesizedFontFiles 73L +#define INDEX_DrvTransparentBlt 74L +#define INDEX_DrvQueryPerBandInfo 75L +#define INDEX_DrvQueryDeviceSupport 76L +#define INDEX_DrvReserved1 77L +#define INDEX_DrvReserved2 78L +#define INDEX_DrvReserved3 79L +#define INDEX_DrvReserved4 80L +#define INDEX_DrvReserved5 81L +#define INDEX_DrvReserved6 82L +#define INDEX_DrvReserved7 83L +#define INDEX_DrvReserved8 84L +#define INDEX_DrvDeriveSurface 85L +#define INDEX_DrvQueryGlyphAttrs 86L +#define INDEX_DrvNotify 87L +#define INDEX_DrvSynchronizeSurface 88L +#define INDEX_DrvResetDevice 89L +#define INDEX_DrvReserved9 90L +#define INDEX_DrvReserved10 91L +#define INDEX_DrvReserved11 92L +#define INDEX_LAST 93L + +typedef struct _DRVFN { + ULONG iFunc; + PFN pfn; +} DRVFN, *PDRVFN; + +/* DRVENABLEDATA.iDriverVersion constants */ +#define DDI_DRIVER_VERSION_NT4 0x00020000 +#define DDI_DRIVER_VERSION_SP3 0x00020003 +#define DDI_DRIVER_VERSION_NT5 0x00030000 +#define DDI_DRIVER_VERSION_NT5_01 0x00030100 + +typedef struct _DRVENABLEDATA { + ULONG iDriverVersion; + ULONG c; + DRVFN *pdrvfn; +} DRVENABLEDATA, *PDRVENABLEDATA; + +DECLARE_HANDLE(HSEMAPHORE); + +typedef struct _ENGSAFESEMAPHORE { + HSEMAPHORE hsem; + LONG lCount; +} ENGSAFESEMAPHORE; + +typedef struct _ENG_TIME_FIELDS { + USHORT usYear; + USHORT usMonth; + USHORT usDay; + USHORT usHour; + USHORT usMinute; + USHORT usSecond; + USHORT usMilliseconds; + USHORT usWeekday; +} ENG_TIME_FIELDS, *PENG_TIME_FIELDS; + +typedef struct _ENUMRECTS { + ULONG c; + RECTL arcl[1]; +} ENUMRECTS; + +typedef struct _FD_XFORM { + FLOATL eXX; + FLOATL eXY; + FLOATL eYX; + FLOATL eYY; +} FD_XFORM, *PFD_XFORM; + +/* FD_DEVICEMETRICS.flRealizedType constants */ +#define FDM_TYPE_BM_SIDE_CONST 0x00000001 +#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002 +#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004 +#define FDM_TYPE_ZERO_BEARINGS 0x00000008 +#define FDM_TYPE_CONST_BEARINGS 0x00000010 + +typedef struct _FD_DEVICEMETRICS { + FLONG flRealizedType; + POINTE pteBase; + POINTE pteSide; + LONG lD; + FIX fxMaxAscender; + FIX fxMaxDescender; + POINTL ptlUnderline1; + POINTL ptlStrikeout; + POINTL ptlULThickness; + POINTL ptlSOThickness; + ULONG cxMax; + ULONG cyMax; + ULONG cjGlyphMax; + FD_XFORM fdxQuantized; + LONG lNonLinearExtLeading; + LONG lNonLinearIntLeading; + LONG lNonLinearMaxCharWidth; + LONG lNonLinearAvgCharWidth; + LONG lMinA; + LONG lMinC; + LONG lMinD; + LONG alReserved[1]; +} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS; + +/* FD_GLYPHATTR.iMode constants */ +#define FO_ATTR_MODE_ROTATE 1 + +typedef struct _FD_GLYPHATTR { + ULONG cjThis; + ULONG cGlyphs; + ULONG iMode; + BYTE aGlyphAttr[1]; +} FD_GLYPHATTR, *PFD_GLYPHATTR; + +/* FD_GLYPHSET.flAccel */ +#define GS_UNICODE_HANDLES 0x00000001 +#define GS_8BIT_HANDLES 0x00000002 +#define GS_16BIT_HANDLES 0x00000004 + +typedef struct _WCRUN { + WCHAR wcLow; + USHORT cGlyphs; + HGLYPH *phg; +} WCRUN, *PWCRUN; + +typedef struct _FD_GLYPHSET { + ULONG cjThis; + FLONG flAccel; + ULONG cGlyphsSupported; + ULONG cRuns; + WCRUN awcrun[1]; +} FD_GLYPHSET, *PFD_GLYPHSET; + +typedef struct _FD_KERNINGPAIR { + WCHAR wcFirst; + WCHAR wcSecond; + FWORD fwdKern; +} FD_KERNINGPAIR; + +typedef struct _FLOATOBJ +{ + ULONG ul1; + ULONG ul2; +} FLOATOBJ, *PFLOATOBJ; + +typedef struct _FLOATOBJ_XFORM { + FLOATOBJ eM11; + FLOATOBJ eM12; + FLOATOBJ eM21; + FLOATOBJ eM22; + FLOATOBJ eDx; + FLOATOBJ eDy; +} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM; + +/* FONTDIFF.fsSelection */ +#define FM_SEL_ITALIC 0x0001 +#define FM_SEL_UNDERSCORE 0x0002 +#define FM_SEL_NEGATIVE 0x0004 +#define FM_SEL_OUTLINED 0x0008 +#define FM_SEL_STRIKEOUT 0x0010 +#define FM_SEL_BOLD 0x0020 +#define FM_SEL_REGULAR 0x0040 + +typedef struct _FONTDIFF { + BYTE jReserved1; + BYTE jReserved2; + BYTE jReserved3; + BYTE bWeight; + USHORT usWinWeight; + FSHORT fsSelection; + FWORD fwdAveCharWidth; + FWORD fwdMaxCharInc; + POINTL ptlCaret; +} FONTDIFF; + +typedef struct _FONTSIM { + PTRDIFF dpBold; + PTRDIFF dpItalic; + PTRDIFF dpBoldItalic; +} FONTSIM; + +/* FONTINFO.flCaps constants */ +#define FO_DEVICE_FONT 1L +#define FO_OUTLINE_CAPABLE 2L + +typedef struct _FONTINFO { + ULONG cjThis; + FLONG flCaps; + ULONG cGlyphsSupported; + ULONG cjMaxGlyph1; + ULONG cjMaxGlyph4; + ULONG cjMaxGlyph8; + ULONG cjMaxGlyph32; +} FONTINFO, *PFONTINFO; + +/* FONTOBJ.flFontType constants */ +#define FO_TYPE_RASTER RASTER_FONTTYPE +#define FO_TYPE_DEVICE DEVICE_FONTTYPE +#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE +#define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE + +#define FO_SIM_BOLD 0x00002000 +#define FO_SIM_ITALIC 0x00004000 +#define FO_EM_HEIGHT 0x00008000 +#define FO_GRAY16 0x00010000 +#define FO_NOGRAY16 0x00020000 +#define FO_NOHINTS 0x00040000 +#define FO_NO_CHOICE 0x00080000 +#define FO_CFF 0x00100000 +#define FO_POSTSCRIPT 0x00200000 +#define FO_MULTIPLEMASTER 0x00400000 +#define FO_VERT_FACE 0x00800000 +#define FO_DBCS_FONT 0X01000000 +#define FO_NOCLEARTYPE 0x02000000 +#define FO_CLEARTYPE_X 0x10000000 +#define FO_CLEARTYPE_Y 0x20000000 + +typedef struct _FONTOBJ { + ULONG iUniq; + ULONG iFace; + ULONG cxMax; + FLONG flFontType; + ULONG_PTR iTTUniq; + ULONG_PTR iFile; + SIZE sizLogResPpi; + ULONG ulStyleSize; + PVOID pvConsumer; + PVOID pvProducer; +} FONTOBJ; + +typedef struct _GAMMARAMP { + WORD Red[256]; + WORD Green[256]; + WORD Blue[256]; +} GAMMARAMP, *PGAMMARAMP; + +/* GDIINFO.ulPrimaryOrder constants */ +#define PRIMARY_ORDER_ABC 0 +#define PRIMARY_ORDER_ACB 1 +#define PRIMARY_ORDER_BAC 2 +#define PRIMARY_ORDER_BCA 3 +#define PRIMARY_ORDER_CBA 4 +#define PRIMARY_ORDER_CAB 5 + +/* GDIINFO.ulHTPatternSize constants */ +#define HT_PATSIZE_2x2 0 +#define HT_PATSIZE_2x2_M 1 +#define HT_PATSIZE_4x4 2 +#define HT_PATSIZE_4x4_M 3 +#define HT_PATSIZE_6x6 4 +#define HT_PATSIZE_6x6_M 5 +#define HT_PATSIZE_8x8 6 +#define HT_PATSIZE_8x8_M 7 +#define HT_PATSIZE_10x10 8 +#define HT_PATSIZE_10x10_M 9 +#define HT_PATSIZE_12x12 10 +#define HT_PATSIZE_12x12_M 11 +#define HT_PATSIZE_14x14 12 +#define HT_PATSIZE_14x14_M 13 +#define HT_PATSIZE_16x16 14 +#define HT_PATSIZE_16x16_M 15 +#define HT_PATSIZE_SUPERCELL 16 +#define HT_PATSIZE_SUPERCELL_M 17 +#define HT_PATSIZE_USER 18 +#define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER +#define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M +#define HT_USERPAT_CX_MIN 4 +#define HT_USERPAT_CX_MAX 256 +#define HT_USERPAT_CY_MIN 4 +#define HT_USERPAT_CY_MAX 256 + +/* GDIINFO.ulHTOutputFormat constants */ +#define HT_FORMAT_1BPP 0 +#define HT_FORMAT_4BPP 2 +#define HT_FORMAT_4BPP_IRGB 3 +#define HT_FORMAT_8BPP 4 +#define HT_FORMAT_16BPP 5 +#define HT_FORMAT_24BPP 6 +#define HT_FORMAT_32BPP 7 + +/* GDIINFO.flHTFlags */ +#define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001 +#define HT_FLAG_HAS_BLACK_DYE 0x00000002 +#define HT_FLAG_ADDITIVE_PRIMS 0x00000004 +#define HT_FLAG_USE_8BPP_BITMASK 0x00000008 +#define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010 +#define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060 +#define HT_FLAG_DO_DEVCLR_XFORM 0x00000080 +#define HT_FLAG_OUTPUT_CMY 0x00000100 +#define HT_FLAG_PRINT_DRAFT_MODE 0x00000200 +#define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400 +#define HT_FLAG_8BPP_CMY332_MASK 0xFF000000 + +#define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \ + |(BYTE)(((BYTE)(m) & 0x07) << 2) \ + |(BYTE)((BYTE)(y) & 0x03)) + +#define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\ + |(DWORD)(((DWORD)(m) & 0x07) << 26)\ + |(DWORD)(((DWORD)(y) & 0x03) << 24)) + +/* GDIINFO.flHTFlags constants */ +#define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000 +#define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020 +#define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040 +#define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060 + +#define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ + |HT_FLAG_INK_ABSORPTION_IDX3) +#define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ + |HT_FLAG_INK_ABSORPTION_IDX2) +#define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ + |HT_FLAG_INK_ABSORPTION_IDX1) +#define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0 +#define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1 +#define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2 +#define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3 + +#define HT_BITMASKPALRGB (DWORD)'0BGR' +#define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB) +#define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0) + +/* GDIINFO.ulPhysicalPixelCharacteristics constants */ +#define PPC_DEFAULT 0x0 +#define PPC_UNDEFINED 0x1 +#define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2 +#define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3 +#define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4 +#define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5 + +#define PPG_DEFAULT 0 +#define PPG_SRGB 1 + +typedef struct _GDIINFO { + ULONG ulVersion; + ULONG ulTechnology; + ULONG ulHorzSize; + ULONG ulVertSize; + ULONG ulHorzRes; + ULONG ulVertRes; + ULONG cBitsPixel; + ULONG cPlanes; + ULONG ulNumColors; + ULONG flRaster; + ULONG ulLogPixelsX; + ULONG ulLogPixelsY; + ULONG flTextCaps; + ULONG ulDACRed; + ULONG ulDACGreen; + ULONG ulDACBlue; + ULONG ulAspectX; + ULONG ulAspectY; + ULONG ulAspectXY; + LONG xStyleStep; + LONG yStyleStep; + LONG denStyleStep; + POINTL ptlPhysOffset; + SIZEL szlPhysSize; + ULONG ulNumPalReg; + COLORINFO ciDevice; + ULONG ulDevicePelsDPI; + ULONG ulPrimaryOrder; + ULONG ulHTPatternSize; + ULONG ulHTOutputFormat; + ULONG flHTFlags; + ULONG ulVRefresh; + ULONG ulBltAlignment; + ULONG ulPanningHorzRes; + ULONG ulPanningVertRes; + ULONG xPanningAlignment; + ULONG yPanningAlignment; + ULONG cxHTPat; + ULONG cyHTPat; + LPBYTE pHTPatA; + LPBYTE pHTPatB; + LPBYTE pHTPatC; + ULONG flShadeBlend; + ULONG ulPhysicalPixelCharacteristics; + ULONG ulPhysicalPixelGamma; +} GDIINFO, *PGDIINFO; + +/* PATHDATA.flags constants */ +#define PD_BEGINSUBPATH 0x00000001 +#define PD_ENDSUBPATH 0x00000002 +#define PD_RESETSTYLE 0x00000004 +#define PD_CLOSEFIGURE 0x00000008 +#define PD_BEZIERS 0x00000010 +#define PD_ALL (PD_BEGINSUBPATH \ + |PD_ENDSUBPATH \ + |PD_RESETSTYLE \ + |PD_CLOSEFIGURE \ + PD_BEZIERS) + +typedef struct _PATHDATA { + FLONG flags; + ULONG count; + POINTFIX pptfx; +} PATHDATA, *PPATHDATA; + +/* PATHOBJ.fl constants */ +#define PO_BEZIERS 0x00000001 +#define PO_ELLIPSE 0x00000002 +#define PO_ALL_INTEGERS 0x00000004 +#define PO_ENUM_AS_INTEGERS 0x00000008 + +typedef struct _PATHOBJ { + FLONG fl; + ULONG cCurves; +} PATHOBJ; + +typedef struct _GLYPHBITS { + POINTL ptlOrigin; + SIZEL sizlBitmap; + BYTE aj[1]; +} GLYPHBITS; + +typedef union _GLYPHDEF { + GLYPHBITS *pgb; + PATHOBJ *ppo; +} GLYPHDEF; + +typedef struct _GLYPHPOS { + HGLYPH hg; + GLYPHDEF *pgdf; + POINTL *ptl; +} GLYPHPOS, *PGLYPHPOS; + +typedef struct _GLYPHDATA { + GLYPHDEF gdf; + HGLYPH hg; + FIX fxD; + FIX fxA; + FIX fxAB; + FIX fxInkTop; + FIX fxInkBottom; + RECTL rclInk; + POINTQF ptqD; +} GLYPHDATA; + +typedef struct _IFIEXTRA { + ULONG ulIdentifier; + PTRDIFF dpFontSig; + ULONG cig; + PTRDIFF dpDesignVector; + PTRDIFF dpAxesInfoW; + ULONG aulReserved[1]; +} IFIEXTRA, *PIFIEXTRA; + +/* IFIMETRICS constants */ + +#define FM_VERSION_NUMBER 0x0 + +/* IFIMETRICS.fsType constants */ +#define FM_TYPE_LICENSED 0x2 +#define FM_READONLY_EMBED 0x4 +#define FM_EDITABLE_EMBED 0x8 +#define FM_NO_EMBEDDING FM_TYPE_LICENSED + +/* IFIMETRICS.flInfo constants */ +#define FM_INFO_TECH_TRUETYPE 0x00000001 +#define FM_INFO_TECH_BITMAP 0x00000002 +#define FM_INFO_TECH_STROKE 0x00000004 +#define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008 +#define FM_INFO_ARB_XFORMS 0x00000010 +#define FM_INFO_1BPP 0x00000020 +#define FM_INFO_4BPP 0x00000040 +#define FM_INFO_8BPP 0x00000080 +#define FM_INFO_16BPP 0x00000100 +#define FM_INFO_24BPP 0x00000200 +#define FM_INFO_32BPP 0x00000400 +#define FM_INFO_INTEGER_WIDTH 0x00000800 +#define FM_INFO_CONSTANT_WIDTH 0x00001000 +#define FM_INFO_NOT_CONTIGUOUS 0x00002000 +#define FM_INFO_TECH_MM 0x00004000 +#define FM_INFO_RETURNS_OUTLINES 0x00008000 +#define FM_INFO_RETURNS_STROKES 0x00010000 +#define FM_INFO_RETURNS_BITMAPS 0x00020000 +#define FM_INFO_DSIG 0x00040000 +#define FM_INFO_RIGHT_HANDED 0x00080000 +#define FM_INFO_INTEGRAL_SCALING 0x00100000 +#define FM_INFO_90DEGREE_ROTATIONS 0x00200000 +#define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000 +#define FM_INFO_DO_NOT_ENUMERATE 0x00800000 +#define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000 +#define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000 +#define FM_INFO_TECH_CFF 0x04000000 +#define FM_INFO_FAMILY_EQUIV 0x08000000 +#define FM_INFO_DBCS_FIXED_PITCH 0x10000000 +#define FM_INFO_NONNEGATIVE_AC 0x20000000 +#define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000 +#define FM_INFO_TECH_TYPE1 0x80000000 + +#define MAXCHARSETS 16 + +/* IFIMETRICS.ulPanoseCulture constants */ +#define FM_PANOSE_CULTURE_LATIN 0x0 + +typedef struct _IFIMETRICS { + ULONG cjThis; + ULONG cjIfiExtra; + PTRDIFF dpwszFamilyName; + PTRDIFF dpwszStyleName; + PTRDIFF dpwszFaceName; + PTRDIFF dpwszUniqueName; + PTRDIFF dpFontSim; + LONG lEmbedId; + LONG lItalicAngle; + LONG lCharBias; + PTRDIFF dpCharSets; + BYTE jWinCharSet; + BYTE jWinPitchAndFamily; + USHORT usWinWeight; + ULONG flInfo; + USHORT fsSelection; + USHORT fsType; + FWORD fwdUnitsPerEm; + FWORD fwdLowestPPEm; + FWORD fwdWinAscender; + FWORD fwdWinDescender; + FWORD fwdMacAscender; + FWORD fwdMacDescender; + FWORD fwdMacLineGap; + FWORD fwdTypoAscender; + FWORD fwdTypoDescender; + FWORD fwdTypoLineGap; + FWORD fwdAveCharWidth; + FWORD fwdMaxCharInc; + FWORD fwdCapHeight; + FWORD fwdXHeight; + FWORD fwdSubscriptXSize; + FWORD fwdSubscriptYSize; + FWORD fwdSubscriptXOffset; + FWORD fwdSubscriptYOffset; + FWORD fwdSuperscriptXSize; + FWORD fwdSuperscriptYSize; + FWORD fwdSuperscriptXOffset; + FWORD fwdSuperscriptYOffset; + FWORD fwdUnderscoreSize; + FWORD fwdUnderscorePosition; + FWORD fwdStrikeoutSize; + FWORD fwdStrikeoutPosition; + BYTE chFirstChar; + BYTE chLastChar; + BYTE chDefaultChar; + BYTE chBreakChar; + WCHAR wcFirstChar; + WCHAR wcLastChar; + WCHAR wcDefaultChar; + WCHAR wcBreakChar; + POINTL ptlBaseline; + POINTL ptlAspect; + POINTL ptlCaret; + RECTL rclFontBox; + BYTE achVendId[4]; + ULONG cKerningPairs; + ULONG ulPanoseCulture; + PANOSE panose; +#if defined(_WIN64) + PVOID Align; +#endif +} IFIMETRICS, *PIFIMETRICS; + +/* LINEATTRS.fl */ +#define LA_GEOMETRIC 0x00000001 +#define LA_ALTERNATE 0x00000002 +#define LA_STARTGAP 0x00000004 +#define LA_STYLED 0x00000008 + +/* LINEATTRS.iJoin */ +#define JOIN_ROUND 0L +#define JOIN_BEVEL 1L +#define JOIN_MITER 2L + +/* LINEATTRS.iEndCap */ +#define ENDCAP_ROUND 0L +#define ENDCAP_SQUARE 1L +#define ENDCAP_BUTT 2L + +typedef struct _LINEATTRS { + FLONG fl; + ULONG iJoin; + ULONG iEndCap; + FLOAT_LONG elWidth; + FLOATL eMiterLimit; + ULONG cstyle; + PFLOAT_LONG pstyle; + FLOAT_LONG elStyleState; +} LINEATTRS, *PLINEATTRS; + +typedef struct _PALOBJ { + ULONG ulReserved; +} PALOBJ; + +typedef struct _PERBANDINFO { + BOOL bRepeatThisBand; + SIZEL szlBand; + ULONG ulHorzRes; + ULONG ulVertRes; +} PERBANDINFO, *PPERBANDINFO; + +/* STROBJ.flAccel constants */ +#define SO_FLAG_DEFAULT_PLACEMENT 0x00000001 +#define SO_HORIZONTAL 0x00000002 +#define SO_VERTICAL 0x00000004 +#define SO_REVERSED 0x00000008 +#define SO_ZERO_BEARINGS 0x00000010 +#define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020 +#define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040 +#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080 +#define SO_GLYPHINDEX_TEXTOUT 0x00000100 +#define SO_ESC_NOT_ORIENT 0x00000200 +#define SO_DXDY 0x00000400 +#define SO_CHARACTER_EXTRA 0x00000800 +#define SO_BREAK_EXTRA 0x00001000 + +typedef struct _STROBJ { + ULONG cGlyphs; + FLONG flAccel; + ULONG ulCharInc; + RECTL rclBkGround; + GLYPHPOS *pgp; + LPWSTR pwszOrg; +} STROBJ; + +typedef struct _SURFACEALIGNMENT { + union { + struct { + DWORD dwStartAlignment; + DWORD dwPitchAlignment; + DWORD dwReserved1; + DWORD dwReserved2; + } Linear; + struct { + DWORD dwXAlignment; + DWORD dwYAlignment; + DWORD dwReserved1; + DWORD dwReserved2; + } Rectangular; + }; +} SURFACEALIGNMENT, *LPSURFACEALIGNMENT; + +/* SURFOBJ.iType constants */ +#define STYPE_BITMAP 0L +#define STYPE_DEVICE 1L +#define STYPE_DEVBITMAP 3L + +/* SURFOBJ.fjBitmap constants */ +#define BMF_TOPDOWN 0x0001 +#define BMF_NOZEROINIT 0x0002 +#define BMF_DONTCACHE 0x0004 +#define BMF_USERMEM 0x0008 +#define BMF_KMSECTION 0x0010 +#define BMF_NOTSYSMEM 0x0020 +#define BMF_WINDOW_BLT 0x0040 +#define BMF_UMPDMEM 0x0080 +#define BMF_RESERVED 0xFF00 + +typedef struct _SURFOBJ { + DHSURF dhsurf; + HSURF hsurf; + DHPDEV dhpdev; + HDEV hdev; + SIZEL sizlBitmap; + ULONG cjBits; + PVOID pvBits; + PVOID pvScan0; + LONG lDelta; + ULONG iUniq; + ULONG iBitmapFormat; + USHORT iType; + USHORT fjBitmap; +} SURFOBJ; + +typedef struct _TYPE1_FONT { + HANDLE hPFM; + HANDLE hPFB; + ULONG ulIdentifier; +} TYPE1_FONT; + +typedef struct _WNDOBJ { + CLIPOBJ coClient; + PVOID pvConsumer; + RECTL rclClient; + SURFOBJ *psoOwner; +} WNDOBJ, *PWNDOBJ; + +typedef struct _XFORML { + FLOATL eM11; + FLOATL eM12; + FLOATL eM21; + FLOATL eM22; + FLOATL eDx; + FLOATL eDy; +} XFORML, *PXFORML; + +typedef struct _XFORMOBJ { + ULONG ulReserved; +} XFORMOBJ; + +/* XLATEOBJ.flXlate constants */ +#define XO_TRIVIAL 0x00000001 +#define XO_TABLE 0x00000002 +#define XO_TO_MONO 0x00000004 +#define XO_FROM_CMYK 0x00000008 +#define XO_DEVICE_ICM 0x00000010 +#define XO_HOST_ICM 0x00000020 + +typedef struct _XLATEOBJ { + ULONG iUniq; + FLONG flXlate; + USHORT iSrcType; + USHORT iDstType; + ULONG cEntries; + ULONG *pulXlate; +} XLATEOBJ; + +typedef VOID DDKAPI (CALLBACK *WNDOBJCHANGEPROC)( + IN WNDOBJ *pwo, + IN FLONG fl); + + +WIN32KAPI +HANDLE +DDKAPI +BRUSHOBJ_hGetColorTransform( + IN BRUSHOBJ *pbo); + +WIN32KAPI +PVOID +DDKAPI +BRUSHOBJ_pvAllocRbrush( + IN BRUSHOBJ *pbo, + IN ULONG cj); + +WIN32KAPI +PVOID +DDKAPI +BRUSHOBJ_pvGetRbrush( + IN BRUSHOBJ *pbo); + +WIN32KAPI +ULONG +DDKAPI +BRUSHOBJ_ulGetBrushColor( + IN BRUSHOBJ *pbo); + +WIN32KAPI +BOOL +DDKAPI +CLIPOBJ_bEnum( + IN CLIPOBJ *pco, + IN ULONG cj, + OUT ULONG *pv); + +/* CLIPOBJ_cEnumStart.iType constants */ +#define CT_RECTANGLES 0L + +/* CLIPOBJ_cEnumStart.iDirection constants */ +#define CD_RIGHTDOWN 0x00000000 +#define CD_LEFTDOWN 0x00000001 +#define CD_LEFTWARDS 0x00000001 +#define CD_RIGHTUP 0x00000002 +#define CD_UPWARDS 0x00000002 +#define CD_LEFTUP 0x00000003 +#define CD_ANY 0x00000004 + +WIN32KAPI +ULONG +DDKAPI +CLIPOBJ_cEnumStart( + IN CLIPOBJ *pco, + IN BOOL bAll, + IN ULONG iType, + IN ULONG iDirection, + IN ULONG cLimit); + +WIN32KAPI +PATHOBJ* +DDKAPI +CLIPOBJ_ppoGetPath( + IN CLIPOBJ *pco); + +WIN32KAPI +VOID +DDKAPI +EngAcquireSemaphore( + IN HSEMAPHORE hsem); + +#define FL_ZERO_MEMORY 0x00000001 +#define FL_NONPAGED_MEMORY 0x00000002 + +WIN32KAPI +PVOID +DDKAPI +EngAllocMem( + IN ULONG Flags, + IN ULONG MemSize, + IN ULONG Tag); + +WIN32KAPI +PVOID +DDKAPI +EngAllocPrivateUserMem( + IN PDD_SURFACE_LOCAL psl, + IN SIZE_T cj, + IN ULONG tag); + +WIN32KAPI +PVOID +DDKAPI +EngAllocUserMem( + IN SIZE_T cj, + IN ULONG tag); + +WIN32KAPI +BOOL +DDKAPI +EngAlphaBlend( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN BLENDOBJ *pBlendObj); + +/* EngAssociateSurface.flHooks constants */ +#define HOOK_BITBLT 0x00000001 +#define HOOK_STRETCHBLT 0x00000002 +#define HOOK_PLGBLT 0x00000004 +#define HOOK_TEXTOUT 0x00000008 +#define HOOK_PAINT 0x00000010 +#define HOOK_STROKEPATH 0x00000020 +#define HOOK_FILLPATH 0x00000040 +#define HOOK_STROKEANDFILLPATH 0x00000080 +#define HOOK_LINETO 0x00000100 +#define HOOK_COPYBITS 0x00000400 +#define HOOK_MOVEPANNING 0x00000800 +#define HOOK_SYNCHRONIZE 0x00001000 +#define HOOK_STRETCHBLTROP 0x00002000 +#define HOOK_SYNCHRONIZEACCESS 0x00004000 +#define HOOK_TRANSPARENTBLT 0x00008000 +#define HOOK_ALPHABLEND 0x00010000 +#define HOOK_GRADIENTFILL 0x00020000 +#define HOOK_FLAGS 0x0003b5ff + +WIN32KAPI +BOOL +DDKAPI +EngAssociateSurface( + IN HSURF hsurf, + IN HDEV hdev, + IN FLONG flHooks); + +WIN32KAPI +BOOL +DDKAPI +EngBitBlt( + IN SURFOBJ *psoTrg, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclTrg, + IN POINTL *pptlSrc, + IN POINTL *pptlMask, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrush, + IN ROP4 rop4); + +WIN32KAPI +BOOL +DDKAPI +EngCheckAbort( + IN SURFOBJ *pso); + +WIN32KAPI +VOID +DDKAPI +EngClearEvent( + IN PEVENT pEvent); + +WIN32KAPI +FD_GLYPHSET* +DDKAPI +EngComputeGlyphSet( + IN INT nCodePage, + IN INT nFirstChar, + IN INT cChars); + +/* EngControlSprites.fl constants */ +#define ECS_TEARDOWN 0x00000001 +#define ECS_REDRAW 0x00000002 + +WIN32KAPI +BOOL +DDKAPI +EngControlSprites( + IN WNDOBJ *pwo, + IN FLONG fl); + +WIN32KAPI +BOOL +DDKAPI +EngCopyBits( + OUT SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN POINTL *pptlSrc); + +WIN32KAPI +HBITMAP +DDKAPI +EngCreateBitmap( + IN SIZEL sizl, + IN LONG lWidth, + IN ULONG iFormat, + IN FLONG fl, + IN PVOID pvBits); + +WIN32KAPI +CLIPOBJ* +DDKAPI +EngCreateClip( + VOID); + +WIN32KAPI +HBITMAP +DDKAPI +EngCreateDeviceBitmap( + IN DHSURF dhsurf, + IN SIZEL sizl, + IN ULONG iFormatCompat); + +WIN32KAPI +HSURF +DDKAPI +EngCreateDeviceSurface( + DHSURF dhsurf, + SIZEL sizl, + ULONG iFormatCompat); + +#if 0 +WIN32KAPI +HDRVOBJ +DDKAPI +EngCreateDriverObj( + PVOID pvObj, + FREEOBJPROC pFreeObjProc, + HDEV hdev); +#endif + +WIN32KAPI +BOOL +DDKAPI +EngCreateEvent( + OUT PEVENT *ppEvent); + +/* EngCreatePalette.iMode constants */ +#define PAL_INDEXED 0x00000001 +#define PAL_BITFIELDS 0x00000002 +#define PAL_RGB 0x00000004 +#define PAL_BGR 0x00000008 +#define PAL_CMYK 0x00000010 + +WIN32KAPI +HPALETTE +DDKAPI +EngCreatePalette( + IN ULONG iMode, + IN ULONG cColors, + IN ULONG *pulColors, + IN FLONG flRed, + IN FLONG flGreen, + IN FLONG flBlue); + +WIN32KAPI +PATHOBJ* +DDKAPI +EngCreatePath( + VOID); + +WIN32KAPI +HSEMAPHORE +DDKAPI +EngCreateSemaphore( + VOID); + +/* EngCreateWnd.fl constants */ +#define WO_RGN_CLIENT_DELTA 0x00000001 +#define WO_RGN_CLIENT 0x00000002 +#define WO_RGN_SURFACE_DELTA 0x00000004 +#define WO_RGN_SURFACE 0x00000008 +#define WO_RGN_UPDATE_ALL 0x00000010 +#define WO_RGN_WINDOW 0x00000020 +#define WO_DRAW_NOTIFY 0x00000040 +#define WO_SPRITE_NOTIFY 0x00000080 +#define WO_RGN_DESKTOP_COORD 0x00000100 + +WIN32KAPI +WNDOBJ* +DDKAPI +EngCreateWnd( + SURFOBJ *pso, + HWND hwnd, + WNDOBJCHANGEPROC pfn, + FLONG fl, + int iPixelFormat); + +WIN32KAPI +VOID +DDKAPI +EngDebugBreak( + VOID); + +WIN32KAPI +VOID +DDKAPI +EngDebugPrint( + IN PCHAR StandardPrefix, + IN PCHAR DebugMessage, + IN va_list ap); + +WIN32KAPI +VOID +DDKAPI +EngDeleteClip( + IN CLIPOBJ *pco); + +WIN32KAPI +BOOL +DDKAPI +EngDeleteDriverObj( + IN HDRVOBJ hdo, + IN BOOL bCallBack, + IN BOOL bLocked); + +WIN32KAPI +BOOL +DDKAPI +EngDeleteEvent( + IN PEVENT pEvent); + +WIN32KAPI +BOOL +DDKAPI +EngDeleteFile( + IN LPWSTR pwszFileName); + +WIN32KAPI +BOOL +DDKAPI +EngDeletePalette( + IN HPALETTE hpal); + +WIN32KAPI +VOID +DDKAPI +EngDeletePath( + IN PATHOBJ *ppo); + +WIN32KAPI +VOID +DDKAPI +EngDeleteSafeSemaphore( + IN OUT ENGSAFESEMAPHORE *pssem); + +WIN32KAPI +VOID +DDKAPI +EngDeleteSemaphore( + IN OUT HSEMAPHORE hsem); + +WIN32KAPI +BOOL +DDKAPI +EngDeleteSurface( + IN HSURF hsurf); + +WIN32KAPI +VOID +DDKAPI +EngDeleteWnd( + IN WNDOBJ *pwo); + +WIN32KAPI +DWORD +DDKAPI +EngDeviceIoControl( + IN HANDLE hDevice, + IN DWORD dwIoControlCode, + IN LPVOID lpInBuffer, + IN DWORD nInBufferSize, + IN OUT LPVOID lpOutBuffer, + IN DWORD nOutBufferSize, + OUT LPDWORD lpBytesReturned); + +WIN32KAPI +ULONG +DDKAPI +EngDitherColor( + IN HDEV hdev, + IN ULONG iMode, + IN ULONG rgb, + OUT ULONG *pul); + +WIN32KAPI +BOOL +DDKAPI +EngEnumForms( + IN HANDLE hPrinter, + IN DWORD Level, + OUT LPBYTE pForm, + IN DWORD cbBuf, + OUT LPDWORD pcbNeeded, + OUT LPDWORD pcReturned); + +WIN32KAPI +BOOL +DDKAPI +EngEraseSurface( + IN SURFOBJ *pso, + IN RECTL *prcl, + IN ULONG iColor); + +WIN32KAPI +BOOL +DDKAPI +EngFillPath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix, + IN FLONG flOptions); + +WIN32KAPI +PVOID +DDKAPI +EngFindImageProcAddress( + IN HANDLE hModule, + IN LPSTR lpProcName); + +WIN32KAPI +PVOID +DDKAPI +EngFindResource( + IN HANDLE h, + IN int iName, + IN int iType, + OUT PULONG pulSize); + +WIN32KAPI +PVOID +DDKAPI +EngFntCacheAlloc( + IN ULONG FastCheckSum, + IN ULONG ulSize); + +/* EngFntCacheFault.iFaultMode constants */ +#define ENG_FNT_CACHE_READ_FAULT 0x00000001 +#define ENG_FNT_CACHE_WRITE_FAULT 0x00000002 + +WIN32KAPI +VOID +DDKAPI +EngFntCacheFault( + IN ULONG ulFastCheckSum, + IN ULONG iFaultMode); + +WIN32KAPI +PVOID +DDKAPI +EngFntCacheLookUp( + IN ULONG FastCheckSum, + OUT ULONG *pulSize); + +WIN32KAPI +VOID +DDKAPI +EngFreeMem( + IN PVOID Mem); + +WIN32KAPI +VOID +DDKAPI +EngFreeModule( + IN HANDLE h); + +WIN32KAPI +VOID +DDKAPI +EngFreePrivateUserMem( + IN PDD_SURFACE_LOCAL psl, + IN PVOID pv); + +WIN32KAPI +VOID +DDKAPI +EngFreeUserMem( + IN PVOID pv); + +WIN32KAPI +VOID +DDKAPI +EngGetCurrentCodePage( + OUT PUSHORT OemCodePage, + OUT PUSHORT AnsiCodePage); + +WIN32KAPI +HANDLE +DDKAPI +EngGetCurrentProcessId( + VOID); + +WIN32KAPI +HANDLE +DDKAPI +EngGetCurrentThreadId( + VOID); + +WIN32KAPI +LPWSTR +DDKAPI +EngGetDriverName( + IN HDEV hdev); + +WIN32KAPI +BOOL +DDKAPI +EngGetFileChangeTime( + IN HANDLE h, + OUT LARGE_INTEGER *pChangeTime); + +WIN32KAPI +BOOL +DDKAPI +EngGetFilePath( + IN HANDLE h, + OUT WCHAR (*pDest)[MAX_PATH+1]); + +WIN32KAPI +BOOL +DDKAPI +EngGetForm( + IN HANDLE hPrinter, + IN LPWSTR pFormName, + IN DWORD Level, + OUT LPBYTE pForm, + IN DWORD cbBuf, + OUT LPDWORD pcbNeeded); + +WIN32KAPI +ULONG +DDKAPI +EngGetLastError( + VOID); + +WIN32KAPI +BOOL +DDKAPI +EngGetPrinter( + IN HANDLE hPrinter, + IN DWORD dwLevel, + OUT LPBYTE pPrinter, + IN DWORD cbBuf, + OUT LPDWORD pcbNeeded); + +WIN32KAPI +DWORD +DDKAPI +EngGetPrinterData( + IN HANDLE hPrinter, + IN LPWSTR pValueName, + OUT LPDWORD pType, + OUT LPBYTE pData, + IN DWORD nSize, + OUT LPDWORD pcbNeeded); + +WIN32KAPI +LPWSTR +DDKAPI +EngGetPrinterDataFileName( + IN HDEV hdev); + +WIN32KAPI +BOOL +DDKAPI +EngGetPrinterDriver( + IN HANDLE hPrinter, + IN LPWSTR pEnvironment, + IN DWORD dwLevel, + OUT BYTE *lpbDrvInfo, + IN DWORD cbBuf, + OUT DWORD *pcbNeeded); + +WIN32KAPI +HANDLE +DDKAPI +EngGetProcessHandle( + VOID); + +WIN32KAPI +BOOL +DDKAPI +EngGetType1FontList( + IN HDEV hdev, + OUT TYPE1_FONT *pType1Buffer, + IN ULONG cjType1Buffer, + OUT PULONG pulLocalFonts, + OUT PULONG pulRemoteFonts, + OUT LARGE_INTEGER *pLastModified); + +WIN32KAPI +BOOL +DDKAPI +EngGradientFill( + IN SURFOBJ *psoDest, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN TRIVERTEX *pVertex, + IN ULONG nVertex, + IN PVOID pMesh, + IN ULONG nMesh, + IN RECTL *prclExtents, + IN POINTL *pptlDitherOrg, + IN ULONG ulMode); + +/* EngHangNotification return values */ +#define EHN_RESTORED 0x00000000 +#define EHN_ERROR 0x00000001 + +WIN32KAPI +ULONG +DDKAPI +EngHangNotification( + IN HDEV hDev, + IN PVOID Reserved); + +WIN32KAPI +BOOL +DDKAPI +EngInitializeSafeSemaphore( + OUT ENGSAFESEMAPHORE *pssem); + +WIN32KAPI +BOOL +DDKAPI +EngIsSemaphoreOwned( + IN HSEMAPHORE hsem); + +WIN32KAPI +BOOL +DDKAPI +EngIsSemaphoreOwnedByCurrentThread( + IN HSEMAPHORE hsem); + +WIN32KAPI +BOOL +DDKAPI +EngLineTo( + SURFOBJ *pso, + CLIPOBJ *pco, + BRUSHOBJ *pbo, + LONG x1, + LONG y1, + LONG x2, + LONG y2, + RECTL *prclBounds, + MIX mix); + +WIN32KAPI +HANDLE +DDKAPI +EngLoadImage( + IN LPWSTR pwszDriver); + +WIN32KAPI +HANDLE +DDKAPI +EngLoadModule( + IN LPWSTR pwsz); + +WIN32KAPI +HANDLE +DDKAPI +EngLoadModuleForWrite( + IN LPWSTR pwsz, + IN ULONG cjSizeOfModule); + +WIN32KAPI +PDD_SURFACE_LOCAL +DDKAPI +EngLockDirectDrawSurface( + IN HANDLE hSurface); + +WIN32KAPI +DRIVEROBJ* +DDKAPI +EngLockDriverObj( + IN HDRVOBJ hdo); + +WIN32KAPI +SURFOBJ* +DDKAPI +EngLockSurface( + IN HSURF hsurf); + +WIN32KAPI +BOOL +DDKAPI +EngLpkInstalled( + VOID); + +WIN32KAPI +PEVENT +DDKAPI +EngMapEvent( + IN HDEV hDev, + IN HANDLE hUserObject, + IN PVOID Reserved1, + IN PVOID Reserved2, + IN PVOID Reserved3); + +WIN32KAPI +PVOID +DDKAPI +EngMapFile( + IN LPWSTR pwsz, + IN ULONG cjSize, + OUT ULONG_PTR *piFile); + +WIN32KAPI +BOOL +DDKAPI +EngMapFontFile( + ULONG_PTR iFile, + PULONG *ppjBuf, + ULONG *pcjBuf); + +WIN32KAPI +BOOL +DDKAPI +EngMapFontFileFD( + IN ULONG_PTR iFile, + OUT PULONG *ppjBuf, + OUT ULONG *pcjBuf); + +WIN32KAPI +PVOID +DDKAPI +EngMapModule( + IN HANDLE h, + OUT PULONG pSize); + +WIN32KAPI +BOOL +DDKAPI +EngMarkBandingSurface( + IN HSURF hsurf); + +/* EngModifySurface.flSurface constants */ +#define MS_NOTSYSTEMMEMORY 0x00000001 +#define MS_SHAREDACCESS 0x00000002 + +WIN32KAPI +BOOL +DDKAPI +EngModifySurface( + IN HSURF hsurf, + IN HDEV hdev, + IN FLONG flHooks, + IN FLONG flSurface, + IN DHSURF dhsurf, + IN VOID *pvScan0, + IN LONG lDelta, + IN VOID *pvReserved); + +WIN32KAPI +VOID +DDKAPI +EngMovePointer( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl); + +WIN32KAPI +int +DDKAPI +EngMulDiv( + IN int a, + IN int b, + IN int c); + +WIN32KAPI +VOID +DDKAPI +EngMultiByteToUnicodeN( + OUT LPWSTR UnicodeString, + IN ULONG MaxBytesInUnicodeString, + OUT PULONG BytesInUnicodeString, + IN PCHAR MultiByteString, + IN ULONG BytesInMultiByteString); + +WIN32KAPI +INT +DDKAPI +EngMultiByteToWideChar( + IN UINT CodePage, + OUT LPWSTR WideCharString, + IN INT BytesInWideCharString, + IN LPSTR MultiByteString, + IN INT BytesInMultiByteString); + +WIN32KAPI +BOOL +DDKAPI +EngPaint( + IN SURFOBJ *pso, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix); + +WIN32KAPI +BOOL +DDKAPI +EngPlgBlt( + IN SURFOBJ *psoTrg, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMsk, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlBrushOrg, + IN POINTFIX *pptfx, + IN RECTL *prcl, + IN POINTL *pptl, + IN ULONG iMode); + +WIN32KAPI +VOID +DDKAPI +EngProbeForRead( + IN PVOID Address, + IN ULONG Length, + IN ULONG Alignment); + +WIN32KAPI +VOID +DDKAPI +EngProbeForReadAndWrite( + IN PVOID Address, + IN ULONG Length, + IN ULONG Alignment); + +typedef enum _ENG_DEVICE_ATTRIBUTE { + QDA_RESERVED = 0, + QDA_ACCELERATION_LEVEL +} ENG_DEVICE_ATTRIBUTE; + +WIN32KAPI +BOOL +DDKAPI +EngQueryDeviceAttribute( + IN HDEV hdev, + IN ENG_DEVICE_ATTRIBUTE devAttr, + IN VOID *pvIn, + IN ULONG ulInSize, + OUT VOID *pvOut, + OUT ULONG ulOutSize); + +WIN32KAPI +LARGE_INTEGER +DDKAPI +EngQueryFileTimeStamp( + IN LPWSTR pwsz); + +WIN32KAPI +VOID +DDKAPI +EngQueryLocalTime( + OUT PENG_TIME_FIELDS ptf); + +WIN32KAPI +ULONG +DDKAPI +EngQueryPalette( + IN HPALETTE hPal, + OUT ULONG *piMode, + IN ULONG cColors, + OUT ULONG *pulColors); + +WIN32KAPI +VOID +DDKAPI +EngQueryPerformanceCounter( + OUT LONGLONG *pPerformanceCount); + +WIN32KAPI +VOID +DDKAPI +EngQueryPerformanceFrequency( + OUT LONGLONG *pFrequency); + +typedef enum _ENG_SYSTEM_ATTRIBUTE { + EngProcessorFeature = 1, + EngNumberOfProcessors, + EngOptimumAvailableUserMemory, + EngOptimumAvailableSystemMemory, +} ENG_SYSTEM_ATTRIBUTE; + +#define QSA_MMX 0x00000100 +#define QSA_SSE 0x00002000 +#define QSA_3DNOW 0x00004000 + +WIN32KAPI +BOOL +DDKAPI +EngQuerySystemAttribute( + IN ENG_SYSTEM_ATTRIBUTE CapNum, + OUT PDWORD pCapability); + +WIN32KAPI +LONG +DDKAPI +EngReadStateEvent( + IN PEVENT pEvent); + +WIN32KAPI +VOID +DDKAPI +EngReleaseSemaphore( + IN HSEMAPHORE hsem); + +WIN32KAPI +BOOL +DDKAPI +EngRestoreFloatingPointState( + IN VOID *pBuffer); + +WIN32KAPI +ULONG +DDKAPI +EngSaveFloatingPointState( + OUT VOID *pBuffer, + IN ULONG cjBufferSize); + +WIN32KAPI +HANDLE +DDKAPI +EngSecureMem( + IN PVOID Address, + IN ULONG Length); + +WIN32KAPI +LONG +DDKAPI +EngSetEvent( + IN PEVENT pEvent); + +WIN32KAPI +VOID +DDKAPI +EngSetLastError( + IN ULONG iError); + +WIN32KAPI +ULONG +DDKAPI +EngSetPointerShape( + IN SURFOBJ *pso, + IN SURFOBJ *psoMask, + IN SURFOBJ *psoColor, + IN XLATEOBJ *pxlo, + IN LONG xHot, + IN LONG yHot, + IN LONG x, + IN LONG y, + IN RECTL *prcl, + IN FLONG fl); + +WIN32KAPI +BOOL +DDKAPI +EngSetPointerTag( + IN HDEV hdev, + IN SURFOBJ *psoMask, + IN SURFOBJ *psoColor, + IN XLATEOBJ *pxlo, + IN FLONG fl); + +WIN32KAPI +DWORD +DDKAPI +EngSetPrinterData( + IN HANDLE hPrinter, + IN LPWSTR pType, + IN DWORD dwType, + IN LPBYTE lpbPrinterData, + IN DWORD cjPrinterData); + +typedef int DDKCDECLAPI (*SORTCOMP)(const void *pv1, const void *pv2); + +WIN32KAPI +VOID +DDKAPI +EngSort( + IN OUT PBYTE pjBuf, + IN ULONG c, + IN ULONG cjElem, + IN SORTCOMP pfnComp); + +WIN32KAPI +BOOL +DDKAPI +EngStretchBlt( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL pptlHTOrg, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN POINTL *pptlMask, + IN ULONG iMode); + +WIN32KAPI +BOOL +DDKAPI +EngStretchBltROP( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlHTOrg, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN POINTL *pptlMask, + IN ULONG iMode, + IN BRUSHOBJ *pbo, + IN DWORD rop4); + +WIN32KAPI +BOOL +DDKAPI +EngStrokeAndFillPath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN XFORMOBJ *pxo, + IN BRUSHOBJ *pboStroke, + IN LINEATTRS *plineattrs, + IN BRUSHOBJ *pboFill, + IN POINTL *pptlBrushOrg, + IN MIX mixFill, + IN FLONG flOptions); + +WIN32KAPI +BOOL +DDKAPI +EngStrokePath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN XFORMOBJ *pxo, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN LINEATTRS *plineattrs, + IN MIX mix); + +WIN32KAPI +BOOL +DDKAPI +EngTextOut( + IN SURFOBJ *pso, + IN STROBJ *pstro, + IN FONTOBJ *pfo, + IN CLIPOBJ *pco, + IN RECTL *prclExtra, + IN RECTL *prclOpaque, + IN BRUSHOBJ *pboFore, + IN BRUSHOBJ *pboOpaque, + IN POINTL pptlOrg, + IN MIX mix); + +WIN32KAPI +BOOL +DDKAPI +EngTransparentBlt( + IN SURFOBJ *psoDst, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDst, + IN RECTL *prclSrc, + IN ULONG iTransColor, + IN ULONG ulReserved); + +WIN32KAPI +VOID +DDKAPI +EngUnicodeToMultiByteN( + OUT PCHAR MultiByteString, + IN ULONG MaxBytesInMultiByteString, + OUT PULONG BytesInMultiByteString, + IN PWSTR UnicodeString, + IN ULONG BytesInUnicodeString); + +WIN32KAPI +VOID +DDKAPI +EngUnloadImage( + IN HANDLE hModule); + +WIN32KAPI +BOOL +DDKAPI +EngUnlockDirectDrawSurface( + IN PDD_SURFACE_LOCAL pSurface); + +WIN32KAPI +BOOL +DDKAPI +EngUnlockDriverObj( + IN HDRVOBJ hdo); + +WIN32KAPI +VOID +DDKAPI +EngUnlockSurface( + IN SURFOBJ *pso); + +WIN32KAPI +BOOL +DDKAPI +EngUnmapEvent( + IN PEVENT pEvent); + +WIN32KAPI +BOOL +DDKAPI +EngUnmapFile( + IN ULONG_PTR iFile); + +WIN32KAPI +VOID +DDKAPI +EngUnmapFontFile( + ULONG_PTR iFile); + +WIN32KAPI +VOID +DDKAPI +EngUnmapFontFileFD( + IN ULONG_PTR iFile); + +WIN32KAPI +VOID +DDKAPI +EngUnsecureMem( + IN HANDLE hSecure); + +WIN32KAPI +BOOL +DDKAPI +EngWaitForSingleObject( + IN PEVENT pEvent, + IN PLARGE_INTEGER pTimeOut); + +WIN32KAPI +INT +DDKAPI +EngWideCharToMultiByte( + IN UINT CodePage, + IN LPWSTR WideCharString, + IN INT BytesInWideCharString, + OUT LPSTR MultiByteString, + IN INT BytesInMultiByteString); + +WIN32KAPI +BOOL +DDKAPI +EngWritePrinter( + IN HANDLE hPrinter, + IN LPVOID pBuf, + IN DWORD cbBuf, + OUT LPDWORD pcWritten); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_Add( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_AddFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_AddLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_Div( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_DivFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_DivLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +BOOL +DDKAPI +FLOATOBJ_Equal( + IN PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +BOOL +DDKAPI +FLOATOBJ_EqualLong( + IN PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +LONG +DDKAPI +FLOATOBJ_GetFloat( + IN PFLOATOBJ pf); + +WIN32KAPI +LONG +DDKAPI +FLOATOBJ_GetLong( + IN PFLOATOBJ pf); + +WIN32KAPI +BOOL +DDKAPI +FLOATOBJ_GreaterThan( + IN PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +BOOL +DDKAPI +FLOATOBJ_GreaterThanLong( + IN PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +BOOL +DDKAPI +FLOATOBJ_LessThan( + IN PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +BOOL +DDKAPI +FLOATOBJ_LessThanLong( + IN PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_Mul( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_MulFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_MulLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_Neg( + IN OUT PFLOATOBJ pf); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_SetFloat( + OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_SetLong( + OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_Sub( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_SubFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +DDKAPI +FLOATOBJ_SubLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +ULONG +DDKAPI +FONTOBJ_cGetAllGlyphHandles( + IN FONTOBJ *pfo, + OUT HGLYPH *phg); + +WIN32KAPI +ULONG +DDKAPI +FONTOBJ_cGetGlyphs( + IN FONTOBJ *pfo, + IN ULONG iMode, + IN ULONG cGlyph, + IN HGLYPH *phg, + OUT PVOID **ppvGlyph); + +WIN32KAPI +FD_GLYPHSET* +DDKAPI +FONTOBJ_pfdg( + IN FONTOBJ *pfo); + +WIN32KAPI +IFIMETRICS* +DDKAPI +FONTOBJ_pifi( + IN FONTOBJ *pfo); + +WIN32KAPI +PBYTE +DDKAPI +FONTOBJ_pjOpenTypeTablePointer( + IN FONTOBJ *pfo, + IN ULONG ulTag, + OUT ULONG *pcjTable); + +WIN32KAPI +PFD_GLYPHATTR +DDKAPI +FONTOBJ_pQueryGlyphAttrs( + IN FONTOBJ *pfo, + IN ULONG iMode); + +WIN32KAPI +PVOID +DDKAPI +FONTOBJ_pvTrueTypeFontFile( + IN FONTOBJ *pfo, + OUT ULONG *pcjFile); + +WIN32KAPI +LPWSTR +DDKAPI +FONTOBJ_pwszFontFilePaths( + IN FONTOBJ *pfo, + OUT ULONG *pcwc); + +WIN32KAPI +XFORMOBJ* +DDKAPI +FONTOBJ_pxoGetXform( + IN FONTOBJ *pfo); + +WIN32KAPI +VOID +DDKAPI +FONTOBJ_vGetInfo( + IN FONTOBJ *pfo, + IN ULONG cjSize, + OUT FONTINFO *pfi); + +WIN32KAPI +FLATPTR +DDKAPI +HeapVidMemAllocAligned( + IN LPVIDMEM lpVidMem, + IN DWORD dwWidth, + IN DWORD dwHeight, + IN LPSURFACEALIGNMENT lpAlignment, + OUT LPLONG lpNewPitch); + +WIN32KAPI +LONG +DDKAPI +HT_ComputeRGBGammaTable( + IN USHORT GammaTableEntries, + IN USHORT GammaTableType, + IN USHORT RedGamma, + IN USHORT GreenGamma, + IN USHORT BlueGamma, + OUT LPBYTE pGammaTable); + +WIN32KAPI +LONG +DDKAPI +HT_Get8BPPFormatPalette( + OUT LPPALETTEENTRY pPaletteEntry, + IN USHORT RedGamma, + IN USHORT GreenGamma, + IN USHORT BlueGamma); + +WIN32KAPI +LONG +DDKAPI +HT_Get8BPPMaskPalette( + IN OUT LPPALETTEENTRY pPaletteEntry, + IN BOOL Use8BPPMaskPal, + IN BYTE CMYMask, + IN USHORT RedGamma, + IN USHORT GreenGamma, + IN USHORT BlueGamma); + +WIN32KAPI +LONG +DDKAPI +HTUI_DeviceColorAdjustment( + IN LPSTR pDeviceName, + OUT PDEVHTADJDATA pDevHTAdjData); + +WIN32KAPI +ULONG +DDKAPI +PALOBJ_cGetColors( + IN PALOBJ *ppalo, + IN ULONG iStart, + IN ULONG cColors, + OUT ULONG *pulColors); + +WIN32KAPI +BOOL +DDKAPI +PATHOBJ_bCloseFigure( + IN PATHOBJ *ppo); + +WIN32KAPI +BOOL +DDKAPI +PATHOBJ_bEnum( + IN PATHOBJ *ppo, + OUT PATHDATA *ppd); + +WIN32KAPI +BOOL +DDKAPI +PATHOBJ_bEnumClipLines( + IN PATHOBJ *ppo, + IN ULONG cb, + OUT CLIPLINE *pcl); + +WIN32KAPI +BOOL +DDKAPI +PATHOBJ_bMoveTo( + IN PATHOBJ *ppo, + IN POINTFIX ptfx); + +WIN32KAPI +BOOL +DDKAPI +PATHOBJ_bPolyBezierTo( + IN PATHOBJ *ppo, + IN POINTFIX *pptfx, + IN ULONG cptfx); + +WIN32KAPI +BOOL +DDKAPI +PATHOBJ_bPolyLineTo( + IN PATHOBJ *ppo, + IN POINTFIX *pptfx, + IN ULONG cptfx); + +WIN32KAPI +VOID +DDKAPI +PATHOBJ_vEnumStart( + IN PATHOBJ *ppo); + +WIN32KAPI +VOID +DDKAPI +PATHOBJ_vEnumStartClipLines( + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN SURFOBJ *pso, + IN LINEATTRS *pla); + +WIN32KAPI +VOID +DDKAPI +PATHOBJ_vGetBounds( + IN PATHOBJ *ppo, + OUT PRECTFX prectfx); + +WIN32KAPI +BOOL +DDKAPI +STROBJ_bEnum( + IN STROBJ *pstro, + OUT ULONG *pc, + OUT PGLYPHPOS *ppgpos); + +WIN32KAPI +BOOL +DDKAPI +STROBJ_bEnumPositionsOnly( + IN STROBJ *pstro, + OUT ULONG *pc, + OUT PGLYPHOS **ppgpos); + +WIN32KAPI +BOOL +DDKAPI +STROBJ_bGetAdvanceWidths( + IN STROBJ *pso, + IN ULONG iFirst, + IN ULONG c, + OUT POINTQF *pptqD); + +WIN32KAPI +DWORD +DDKAPI +STROBJ_dwGetCodePage( + IN STROBJ *pstro); + +WIN32KAPI +FIX +DDKAPI +STROBJ_fxBreakExtra( + IN STROBJ *pstro); + +WIN32KAPI +FIX +DDKAPI +STROBJ_fxCharacterExtra( + IN STROBJ *pstro); + +WIN32KAPI +VOID +DDKAPI +STROBJ_vEnumStart( + IN STROBJ *pstro); + +WIN32KAPI +VOID +DDKAPI +VidMemFree( + IN LPVMEMHEAP pvmh, + IN FLATPTR ptr); + +WIN32KAPI +BOOL +DDKAPI +WNDOBJ_bEnum( + IN WNDOBJ *pwo, + IN ULONG cj, + OUT ULONG *pul); + +WIN32KAPI +ULONG +DDKAPI +WNDOBJ_cEnumStart( + IN WNDOBJ *pwo, + IN ULONG iType, + IN ULONG iDirection, + IN ULONG cLimit); + +WIN32KAPI +VOID +DDKAPI +WNDOBJ_vSetConsumer( + IN WNDOBJ *pwo, + IN PVOID pvConsumer); + +/* XFORMOBJ_bApplyXform.iMode constants */ +#define XF_LTOL 0L +#define XF_INV_LTOL 1L +#define XF_LTOFX 2L +#define XF_INV_FXTOL 3L + +WIN32KAPI +BOOL +DDKAPI +XFORMOBJ_bApplyXform( + IN XFORMOBJ *pxo, + IN ULONG iMode, + IN ULONG cPoints, + IN PVOID pvIn, + OUT PVOID pvOut); + +WIN32KAPI +ULONG +DDKAPI +XFORMOBJ_iGetFloatObjXform( + IN XFORMOBJ *pxo, + OUT FLOATOBJ_XFORM *pxfo); + +WIN32KAPI +ULONG +DDKAPI +XFORMOBJ_iGetXform( + IN XFORMOBJ *pxo, + OUT XFORML *pxform); + +/* XLATEOBJ_cGetPalette.iPal constants */ +#define XO_SRCPALETTE 1 +#define XO_DESTPALETTE 2 +#define XO_DESTDCPALETTE 3 +#define XO_SRCBITFIELDS 4 +#define XO_DESTBITFIELDS 5 + +WIN32KAPI +ULONG +DDKAPI +XLATEOBJ_cGetPalette( + IN XLATEOBJ *pxlo, + IN ULONG iPal, + IN ULONG cPal, + OUT ULONG *pPal); + +WIN32KAPI +HANDLE +DDKAPI +XLATEOBJ_hGetColorTransform( + IN XLATEOBJ *pxlo); + +WIN32KAPI +ULONG +DDKAPI +XLATEOBJ_iXlate( + IN XLATEOBJ *pxlo, + IN ULONG iColor); + +WIN32KAPI +ULONG* +DDKAPI +XLATEOBJ_piVector( + IN XLATEOBJ *pxlo); + + + +/* Graphics Driver Functions */ + +BOOL +DDKAPI +DrvAlphaBlend( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN BLENDOBJ *pBlendObj); + +BOOL +DDKAPI +DrvAssertMode( + IN DHPDEV dhpdev, + IN BOOL bEnable); + +BOOL +DDKAPI +DrvBitBlt( + IN SURFOBJ *psoTrg, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclTrg, + IN POINTL *pptlSrc, + IN POINTL *pptlMask, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrush, + IN ROP4 rop4); + +VOID +DDKAPI +DrvCompletePDEV( + IN DHPDEV dhpdev, + IN HDEV hdev); + +BOOL +DDKAPI +DrvCopyBits( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN POINTL *pptlSrc); + +HBITMAP +DDKAPI +DrvCreateDeviceBitmap( + IN DHPDEV dhpdev, + IN SIZEL sizl, + IN ULONG iFormat); + +VOID +DDKAPI +DrvDeleteDeviceBitmap( + IN DHSURF dhsurf); + +HBITMAP +DDKAPI +DrvDeriveSurface( + DD_DIRECTDRAW_GLOBAL *pDirectDraw, + DD_SURFACE_LOCAL *pSurface); + +LONG +DDKAPI +DrvDescribePixelFormat( + IN DHPDEV dhpdev, + IN LONG iPixelFormat, + IN ULONG cjpfd, + OUT PIXELFORMATDESCRIPTOR *ppfd); + +VOID +DDKAPI +DrvDestroyFont( + IN FONTOBJ *pfo); + +VOID +DDKAPI +DrvDisableDriver( + VOID); + +VOID +DDKAPI +DrvDisablePDEV( + IN DHPDEV dhpdev); + +VOID +DDKAPI +DrvDisableSurface( + IN DHPDEV dhpdev); + +#define DM_DEFAULT 0x00000001 +#define DM_MONOCHROME 0x00000002 + +ULONG +DDKAPI +DrvDitherColor( + IN DHPDEV dhpdev, + IN ULONG iMode, + IN ULONG rgb, + OUT ULONG *pul); + +ULONG +DDKAPI +DrvDrawEscape( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN CLIPOBJ *pco, + IN RECTL *prcl, + IN ULONG cjIn, + IN PVOID pvIn); + +BOOL +DDKAPI +DrvEnableDriver( + IN ULONG iEngineVersion, + IN ULONG cj, + OUT DRVENABLEDATA *pded); + +DHPDEV +DDKAPI +DrvEnablePDEV( + IN DEVMODEW *pdm, + IN LPWSTR pwszLogAddress, + IN ULONG cPat, + OUT HSURF *phsurfPatterns, + IN ULONG cjCaps, + OUT ULONG *pdevcaps, + IN ULONG cjDevInfo, + OUT DEVINFO *pdi, + IN HDEV hdev, + IN LPWSTR pwszDeviceName, + IN HANDLE hDriver); + +HSURF +DDKAPI +DrvEnableSurface( + IN DHPDEV dhpdev); + +/* DrvEndDoc.fl constants */ +#define ED_ABORTDOC 0x00000001 + +BOOL +DDKAPI +DrvEndDoc( + IN SURFOBJ *pso, + IN FLONG fl); + +ULONG +DDKAPI +DrvEscape( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN ULONG cjIn, + IN PVOID pvIn, + IN ULONG cjOut, + OUT PVOID pvOut); + +BOOL +DDKAPI +DrvFillPath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix, + IN FLONG flOptions); + +ULONG +DDKAPI +DrvFontManagement( + IN SURFOBJ *pso, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN ULONG cjIn, + IN PVOID pvIn, + IN ULONG cjOut, + OUT PVOID pvOut); + +VOID +DDKAPI +DrvFree( + IN PVOID pv, + IN ULONG_PTR id); + +/* DrvGetGlyphMode return values */ +#define FO_HGLYPHS 0L +#define FO_GLYPHBITS 1L +#define FO_PATHOBJ 2L + +ULONG +DDKAPI +DrvGetGlyphMode( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo); + +ULONG +DDKAPI +DrvGetModes( + IN HANDLE hDriver, + IN ULONG cjSize, + OUT DEVMODEW *pdm); + +PVOID +DDKAPI +DrvGetTrueTypeFile( + IN ULONG_PTR iFile, + IN ULONG *pcj); + +BOOL +DDKAPI +DrvGradientFill( + IN SURFOBJ *psoDest, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN TRIVERTEX *pVertex, + IN ULONG nVertex, + IN PVOID pMesh, + IN ULONG nMesh, + IN RECTL *prclExtents, + IN POINTL *pptlDitherOrg, + IN ULONG ulMode); + +BOOL +DDKAPI +DrvIcmCheckBitmapBits( + IN DHPDEV dhpdev, + IN HANDLE hColorTransform, + IN SURFOBJ *pso, + OUT PBYTE paResults); + +HANDLE +DDKAPI +DrvIcmCreateColorTransform( + IN DHPDEV dhpdev, + IN LPLOGCOLORSPACEW pLogColorSpace, + IN PVOID pvSourceProfile, + IN ULONG cjSourceProfile, + IN PVOID pvDestProfile, + IN ULONG cjDestProfile, + IN PVOID pvTargetProfile, + IN ULONG cjTargetProfile, + IN DWORD dwReserved); + +BOOL +DDKAPI +DrvIcmDeleteColorTransform( + IN DHPDEV dhpdev, + IN HANDLE hcmXform); + +/* DrvIcmSetDeviceGammaRamp.iFormat constants */ +#define IGRF_RGB_256BYTES 0x00000000 +#define IGRF_RGB_256WORDS 0x00000001 + +BOOL +DDKAPI +DrvIcmSetDeviceGammaRamp( + IN DHPDEV dhpdev, + IN ULONG iFormat, + IN LPVOID lpRamp); + +BOOL +DDKAPI +DrvLineTo( + SURFOBJ *pso, + CLIPOBJ *pco, + BRUSHOBJ *pbo, + LONG x1, + LONG y1, + LONG x2, + LONG y2, + RECTL *prclBounds, + MIX mix); + +ULONG_PTR +DDKAPI +DrvLoadFontFile( + ULONG cFiles, + ULONG_PTR *piFile, + PVOID *ppvView, + ULONG *pcjView, + DESIGNVECTOR *pdv, + ULONG ulLangID, + ULONG ulFastCheckSum); + +VOID +DDKAPI +DrvMovePointer( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl); + +BOOL +DDKAPI +DrvNextBand( + IN SURFOBJ *pso, + IN POINTL *pptl); + +VOID +DDKAPI +DrvNotify( + IN SURFOBJ *pso, + IN ULONG iType, + IN PVOID pvData); + +BOOL +DDKAPI +DrvOffset( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN FLONG flReserved); + +BOOL +DDKAPI +DrvPaint( + IN SURFOBJ *pso, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix); + +BOOL +DDKAPI +DrvPlgBlt( + IN SURFOBJ *psoTrg, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMsk, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlBrushOrg, + IN POINTFIX *pptfx, + IN RECTL *prcl, + IN POINTL *pptl, + IN ULONG iMode); + +/* DrvQueryAdvanceWidths.iMode constants */ +#define QAW_GETWIDTHS 0 +#define QAW_GETEASYWIDTHS 1 + +BOOL +DDKAPI +DrvQueryAdvanceWidths( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN HGLYPH *phg, + OUT PVOID pvWidths, + IN ULONG cGlyphs); + +/* DrvQueryDeviceSupport.iType constants */ +#define QDS_CHECKJPEGFORMAT 0x00000000 +#define QDS_CHECKPNGFORMAT 0x00000001 + +BOOL +DDKAPI +DrvQueryDeviceSupport( + SURFOBJ *pso, + XLATEOBJ *pxlo, + XFORMOBJ *pxo, + ULONG iType, + ULONG cjIn, + PVOID pvIn, + ULONG cjOut, + PVOID pvOut); + +/* DrvQueryDriverInfo.dwMode constants */ +#define DRVQUERY_USERMODE 0x00000001 + +BOOL +DDKAPI +DrvQueryDriverInfo( + DWORD dwMode, + PVOID pBuffer, + DWORD cbBuf, + PDWORD pcbNeeded); + +PIFIMETRICS +DDKAPI +DrvQueryFont( + IN DHPDEV dhpdev, + IN ULONG_PTR iFile, + IN ULONG iFace, + IN ULONG_PTR *pid); + +/* DrvQueryFontCaps.pulCaps constants */ +#define QC_OUTLINES 0x00000001 +#define QC_1BIT 0x00000002 +#define QC_4BIT 0x00000004 + +#define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT) + +LONG +DDKAPI +DrvQueryFontCaps( + IN ULONG culCaps, + OUT ULONG *pulCaps); + +/* DrvQueryFontData.iMode constants */ +#define QFD_GLYPHANDBITMAP 1L +#define QFD_GLYPHANDOUTLINE 2L +#define QFD_MAXEXTENTS 3L +#define QFD_TT_GLYPHANDBITMAP 4L +#define QFD_TT_GRAY1_BITMAP 5L +#define QFD_TT_GRAY2_BITMAP 6L +#define QFD_TT_GRAY4_BITMAP 8L +#define QFD_TT_GRAY8_BITMAP 9L + +#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP + +LONG +DDKAPI +DrvQueryFontData( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN HGLYPH hg, + IN OUT GLYPHDATA *pgd, + IN OUT PVOID pv, + IN ULONG cjSize); + +/* DrvQueryFontFile.ulMode constants */ +#define QFF_DESCRIPTION 0x00000001 +#define QFF_NUMFACES 0x00000002 + +LONG +DDKAPI +DrvQueryFontFile( + IN ULONG_PTR iFile, + IN ULONG ulMode, + IN ULONG cjBuf, + IN ULONG *pulBuf); + +/* DrvQueryFontTree.iMode constants */ +#define QFT_UNICODE 0L +#define QFT_LIGATURES 1L +#define QFT_KERNPAIRS 2L +#define QFT_GLYPHSET 3L + +PVOID +DDKAPI +DrvQueryFontTree( + IN DHPDEV dhpdev, + IN ULONG_PTR iFile, + IN ULONG iFace, + IN ULONG iMode, + IN ULONG_PTR *pid); + +PFD_GLYPHATTR +DDKAPI +DrvQueryGlyphAttrs( + IN FONTOBJ *pfo, + IN ULONG iMode); + +ULONG +DDKAPI +DrvQueryPerBandInfo( + IN SURFOBJ *pso, + IN OUT PERBANDINFO *pbi); + +/* DrvQueryTrueTypeOutline.bMetricsOnly constants */ +#define TTO_METRICS_ONLY 0x00000001 +#define TTO_QUBICS 0x00000002 +#define TTO_UNHINTED 0x00000004 + +LONG +DDKAPI +DrvQueryTrueTypeOutline( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN HGLYPH hglyph, + IN BOOL bMetricsOnly, + IN GLYPHDATA *pgldt, + IN ULONG cjBuf, + OUT TTPOLYGONHEADER *ppoly); + +LONG +DDKAPI +DrvQueryTrueTypeTable( + IN ULONG_PTR iFile, + IN ULONG ulFont, + IN ULONG ulTag, + IN PTRDIFF dpStart, + IN ULONG cjBuf, + OUT BYTE *pjBuf, + OUT PBYTE *ppjTable, + OUT ULONG *pcjTable); + +/* DrvRealizeBrush.iHatch constants */ +#define RB_DITHERCOLOR 0x80000000L + +#define HS_DDI_MAX 6 + +BOOL +DDKAPI +DrvRealizeBrush( + IN BRUSHOBJ *pbo, + IN SURFOBJ *psoTarget, + IN SURFOBJ *psoPattern, + IN SURFOBJ *psoMask, + IN XLATEOBJ *pxlo, + IN ULONG iHatch); + +/* DrvResetDevice return values */ +#define DRD_SUCCESS 0 +#define DRD_ERROR 1 + +ULONG +DDKAPI +DrvResetDevice( + IN DHPDEV dhpdev, + IN PVOID Reserved); + +BOOL +DDKAPI +DrvResetPDEV( + DHPDEV dhpdevOld, + DHPDEV dhpdevNew); + +/* DrvSaveScreenBits.iMode constants */ +#define SS_SAVE 0x00000000 +#define SS_RESTORE 0x00000001 +#define SS_FREE 0x00000002 + +ULONG_PTR +DDKAPI +DrvSaveScreenBits( + IN SURFOBJ *pso, + IN ULONG iMode, + IN ULONG_PTR ident, + IN RECTL *prcl); + +BOOL +DDKAPI +DrvSendPage( + IN SURFOBJ *pso); + +BOOL +DDKAPI +DrvSetPalette( + IN DHPDEV dhpdev, + IN PALOBJ *ppalo, + IN FLONG fl, + IN ULONG iStart, + IN ULONG cColors); + +BOOL +DDKAPI +DrvSetPixelFormat( + IN SURFOBJ *pso, + IN LONG iPixelFormat, + IN HWND hwnd); + +/* DrvSetPointerShape return values */ +#define SPS_ERROR 0x00000000 +#define SPS_DECLINE 0x00000001 +#define SPS_ACCEPT_NOEXCLUDE 0x00000002 +#define SPS_ACCEPT_EXCLUDE 0x00000003 +#define SPS_ACCEPT_SYNCHRONOUS 0x00000004 + +/* DrvSetPointerShape.fl constants */ +#define SPS_CHANGE 0x00000001L +#define SPS_ASYNCCHANGE 0x00000002L +#define SPS_ANIMATESTART 0x00000004L +#define SPS_ANIMATEUPDATE 0x00000008L +#define SPS_ALPHA 0x00000010L +#define SPS_LENGTHMASK 0x00000F00L +#define SPS_FREQMASK 0x000FF000L + +ULONG +DDKAPI +DrvSetPointerShape( + IN SURFOBJ *pso, + IN SURFOBJ *psoMask, + IN SURFOBJ *psoColor, + IN XLATEOBJ *pxlo, + IN LONG xHot, + IN LONG yHot, + IN LONG x, + IN LONG y, + IN RECTL *prcl, + IN FLONG fl); + +BOOL +DDKAPI +DrvStartBanding( + IN SURFOBJ *pso, + IN POINTL *pptl); + +BOOL +DDKAPI +DrvStartDoc( + IN SURFOBJ *pso, + IN LPWSTR pwszDocName, + IN DWORD dwJobId); + +BOOL +DDKAPI +DrvStartPage( + IN SURFOBJ *pso); + +BOOL +DDKAPI +DrvStretchBlt( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlHTOrg, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN POINTL *pptlMask, + IN ULONG iMode); + +BOOL +DDKAPI +DrvStretchBltROP( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlHTOrg, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN POINTL *pptlMask, + IN ULONG iMode, + IN BRUSHOBJ *pbo, + IN DWORD rop4); + +BOOL +DDKAPI +DrvStrokeAndFillPath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN XFORMOBJ *pxo, + IN BRUSHOBJ *pboStroke, + IN LINEATTRS *plineattrs, + IN BRUSHOBJ *pboFill, + IN POINTL *pptlBrushOrg, + IN MIX mixFill, + IN FLONG flOptions); + +BOOL +DDKAPI +DrvStrokePath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN XFORMOBJ *pxo, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN LINEATTRS *plineattrs, + IN MIX mix); + +BOOL +DDKAPI +DrvSwapBuffers( + IN SURFOBJ *pso, + IN WNDOBJ *pwo); + +VOID +DDKAPI +DrvSynchronize( + IN DHPDEV dhpdev, + IN RECTL *prcl); + +/* DrvSynchronizeSurface.fl constants */ +#define DSS_TIMER_EVENT 0x00000001 +#define DSS_FLUSH_EVENT 0x00000002 + +VOID +DDKAPI +DrvSynchronizeSurface( + IN SURFOBJ *pso, + IN RECTL *prcl, + IN FLONG fl); + +BOOL +DDKAPI +DrvTextOut( + IN SURFOBJ *pso, + IN STROBJ *pstro, + IN FONTOBJ *pfo, + IN CLIPOBJ *pco, + IN RECTL *prclExtra, + IN RECTL *prclOpaque, + IN BRUSHOBJ *pboFore, + IN BRUSHOBJ *pboOpaque, + IN POINTL *pptlOrg, + IN MIX mix); + +BOOL +DDKAPI +DrvTransparentBlt( + IN SURFOBJ *psoDst, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDst, + IN RECTL *prclSrc, + IN ULONG iTransColor, + IN ULONG ulReserved); + +BOOL +DDKAPI +DrvUnloadFontFile( + IN ULONG_PTR iFile); + +/* WNDOBJCHANGEPROC.fl constants */ +#define WOC_RGN_CLIENT_DELTA 0x00000001 +#define WOC_RGN_CLIENT 0x00000002 +#define WOC_RGN_SURFACE_DELTA 0x00000004 +#define WOC_RGN_SURFACE 0x00000008 +#define WOC_CHANGED 0x00000010 +#define WOC_DELETE 0x00000020 +#define WOC_DRAWN 0x00000040 +#define WOC_SPRITE_OVERLAP 0x00000080 +#define WOC_SPRITE_NO_OVERLAP 0x00000100 + +typedef VOID DDKAPI +(CALLBACK * WNDOBJCHANGEPROC)( + WNDOBJ *pwo, + FLONG fl); + + +typedef BOOL DDKAPI +(*PFN_DrvAlphaBlend)( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN BLENDOBJ *pBlendObj); + +typedef BOOL DDKAPI +(*PFN_DrvAssertMode)( + IN DHPDEV dhpdev, + IN BOOL bEnable); + +typedef BOOL DDKAPI +(*PFN_DrvBitBlt)( + IN SURFOBJ *psoTrg, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclTrg, + IN POINTL *pptlSrc, + IN POINTL *pptlMask, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrush, + IN ROP4 rop4); + +typedef VOID DDKAPI +(*PFN_DrvCompletePDEV)( + IN DHPDEV dhpdev, + IN HDEV hdev); + +typedef BOOL DDKAPI +(*PFN_DrvCopyBits)( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN POINTL *pptlSrc); + +typedef HBITMAP DDKAPI +(*PFN_DrvCreateDeviceBitmap)( + IN DHPDEV dhpdev, + IN SIZEL sizl, + IN ULONG iFormat); + +typedef VOID DDKAPI +(*PFN_DrvDeleteDeviceBitmap)( + IN DHSURF dhsurf); + +typedef HBITMAP DDKAPI +(*PFN_DrvDeriveSurface)( + DD_DIRECTDRAW_GLOBAL *pDirectDraw, + DD_SURFACE_LOCAL *pSurface); + +typedef LONG DDKAPI +(*PFN_DrvDescribePixelFormat)( + IN DHPDEV dhpdev, + IN LONG iPixelFormat, + IN ULONG cjpfd, + OUT PIXELFORMATDESCRIPTOR *ppfd); + +typedef VOID DDKAPI +(*PFN_DrvDestroyFont)( + IN FONTOBJ *pfo); + +typedef VOID DDKAPI +(*PFN_DrvDisableDriver)( + VOID); + +typedef VOID DDKAPI +(*PFN_DrvDisablePDEV)( + IN DHPDEV dhpdev); + +typedef VOID DDKAPI +(*PFN_DrvDisableSurface)( + IN DHPDEV dhpdev); + +typedef ULONG DDKAPI +(*PFN_DrvDitherColor)( + IN DHPDEV dhpdev, + IN ULONG iMode, + IN ULONG rgb, + OUT ULONG *pul); + +typedef ULONG DDKAPI +(*PFN_DrvDrawEscape)( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN CLIPOBJ *pco, + IN RECTL *prcl, + IN ULONG cjIn, + IN PVOID pvIn); + +typedef BOOL DDKAPI +(*PFN_DrvEnableDriver)( + IN ULONG iEngineVersion, + IN ULONG cj, + OUT DRVENABLEDATA *pded); +#if 0 +typedef DHPDEV DDKAPI +(*PFN_DrvEnablePDEV)( + IN DEVMODEW *pdm, + IN LPWSTR pwszLogAddress, + IN ULONG cPat, + OUT HSURF *phsurfPatterns, + IN ULONG cjCaps, + OUT ULONG *pdevcaps, + IN ULONG cjDevInfo, + OUT DEVINFO *pdi, + IN HDEV hdev, + IN LPWSTR pwszDeviceName, + IN HANDLE hDriver); +#endif +typedef HSURF DDKAPI +(*PFN_DrvEnableSurface)( + IN DHPDEV dhpdev); + +typedef BOOL DDKAPI +(*PFN_DrvEndDoc)( + IN SURFOBJ *pso, + IN FLONG fl); + +typedef ULONG DDKAPI +(*PFN_DrvEscape)( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN ULONG cjIn, + IN PVOID pvIn, + IN ULONG cjOut, + OUT PVOID pvOut); + +typedef BOOL DDKAPI +(*PFN_DrvFillPath)( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix, + IN FLONG flOptions); + +typedef ULONG DDKAPI +(*PFN_DrvFontManagement)( + IN SURFOBJ *pso, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN ULONG cjIn, + IN PVOID pvIn, + IN ULONG cjOut, + OUT PVOID pvOut); + +typedef VOID DDKAPI +(*PFN_DrvFree)( + IN PVOID pv, + IN ULONG_PTR id); + +typedef ULONG DDKAPI +(*PFN_DrvGetGlyphMode)( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo); + +typedef ULONG DDKAPI +(*PFN_DrvGetModes)( + IN HANDLE hDriver, + IN ULONG cjSize, + OUT DEVMODEW *pdm); + +typedef PVOID DDKAPI +(*PFN_DrvGetTrueTypeFile)( + IN ULONG_PTR iFile, + IN ULONG *pcj); + +typedef BOOL DDKAPI +(*PFN_DrvGradientFill)( + IN SURFOBJ *psoDest, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN TRIVERTEX *pVertex, + IN ULONG nVertex, + IN PVOID pMesh, + IN ULONG nMesh, + IN RECTL *prclExtents, + IN POINTL *pptlDitherOrg, + IN ULONG ulMode); + +typedef BOOL DDKAPI +(*PFN_DrvIcmCheckBitmapBits)( + IN DHPDEV dhpdev, + IN HANDLE hColorTransform, + IN SURFOBJ *pso, + OUT PBYTE paResults); + +typedef HANDLE DDKAPI +(*PFN_DrvIcmCreateColorTransform)( + IN DHPDEV dhpdev, + IN LPLOGCOLORSPACEW pLogColorSpace, + IN PVOID pvSourceProfile, + IN ULONG cjSourceProfile, + IN PVOID pvDestProfile, + IN ULONG cjDestProfile, + IN PVOID pvTargetProfile, + IN ULONG cjTargetProfile, + IN DWORD dwReserved); + +typedef BOOL DDKAPI +(*PFN_DrvIcmDeleteColorTransform)( + IN DHPDEV dhpdev, + IN HANDLE hcmXform); + +typedef BOOL DDKAPI +(*PFN_DrvIcmSetDeviceGammaRamp)( + IN DHPDEV dhpdev, + IN ULONG iFormat, + IN LPVOID lpRamp); + +typedef BOOL DDKAPI +(*PFN_DrvLineTo)( + SURFOBJ *pso, + CLIPOBJ *pco, + BRUSHOBJ *pbo, + LONG x1, + LONG y1, + LONG x2, + LONG y2, + RECTL *prclBounds, + MIX mix); + +typedef ULONG_PTR DDKAPI +(*PFN_DrvLoadFontFile)( + ULONG cFiles, + ULONG_PTR *piFile, + PVOID *ppvView, + ULONG *pcjView, + DESIGNVECTOR *pdv, + ULONG ulLangID, + ULONG ulFastCheckSum); + +typedef VOID DDKAPI +(*PFN_DrvMovePointer)( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl); + +typedef BOOL DDKAPI +(*PFN_DrvNextBand)( + IN SURFOBJ *pso, + IN POINTL *pptl); + +typedef VOID DDKAPI +(*PFN_DrvNotify)( + IN SURFOBJ *pso, + IN ULONG iType, + IN PVOID pvData); + +typedef BOOL DDKAPI +(*PFN_DrvOffset)( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN FLONG flReserved); + +typedef BOOL DDKAPI +(*PFN_DrvPaint)( + IN SURFOBJ *pso, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix); + +typedef BOOL DDKAPI +(*PFN_DrvPlgBlt)( + IN SURFOBJ *psoTrg, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMsk, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlBrushOrg, + IN POINTFIX *pptfx, + IN RECTL *prcl, + IN POINTL *pptl, + IN ULONG iMode); + +typedef BOOL DDKAPI +(*PFN_DrvQueryAdvanceWidths)( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN HGLYPH *phg, + OUT PVOID pvWidths, + IN ULONG cGlyphs); + +typedef BOOL DDKAPI +(*PFN_DrvQueryDeviceSupport)( + SURFOBJ *pso, + XLATEOBJ *pxlo, + XFORMOBJ *pxo, + ULONG iType, + ULONG cjIn, + PVOID pvIn, + ULONG cjOut, + PVOID pvOut); + +typedef BOOL DDKAPI +(*PFN_DrvQueryDriverInfo)( + DWORD dwMode, + PVOID pBuffer, + DWORD cbBuf, + PDWORD pcbNeeded); + +typedef PIFIMETRICS DDKAPI +(*PFN_DrvQueryFont)( + IN DHPDEV dhpdev, + IN ULONG_PTR iFile, + IN ULONG iFace, + IN ULONG_PTR *pid); + +typedef LONG DDKAPI +(*PFN_DrvQueryFontCaps)( + IN ULONG culCaps, + OUT ULONG *pulCaps); + +typedef LONG DDKAPI +(*PFN_DrvQueryFontData)( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN HGLYPH hg, + IN OUT GLYPHDATA *pgd, + IN OUT PVOID pv, + IN ULONG cjSize); + +typedef LONG DDKAPI +(*PFN_DrvQueryFontFile)( + IN ULONG_PTR iFile, + IN ULONG ulMode, + IN ULONG cjBuf, + IN ULONG *pulBuf); + +typedef PVOID DDKAPI +(*PFN_DrvQueryFontTree)( + IN DHPDEV dhpdev, + IN ULONG_PTR iFile, + IN ULONG iFace, + IN ULONG iMode, + IN ULONG_PTR *pid); + +typedef PFD_GLYPHATTR DDKAPI +(*PFN_DrvQueryGlyphAttrs)( + IN FONTOBJ *pfo, + IN ULONG iMode); + +typedef ULONG DDKAPI +(*PFN_DrvQueryPerBandInfo)( + IN SURFOBJ *pso, + IN OUT PERBANDINFO *pbi); + +typedef LONG DDKAPI +(*PFN_DrvQueryTrueTypeOutline)( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN HGLYPH hglyph, + IN BOOL bMetricsOnly, + IN GLYPHDATA *pgldt, + IN ULONG cjBuf, + OUT TTPOLYGONHEADER *ppoly); + +typedef LONG DDKAPI +(*PFN_DrvQueryTrueTypeTable)( + IN ULONG_PTR iFile, + IN ULONG ulFont, + IN ULONG ulTag, + IN PTRDIFF dpStart, + IN ULONG cjBuf, + OUT BYTE *pjBuf, + OUT PBYTE *ppjTable, + OUT ULONG *pcjTable); + +typedef BOOL DDKAPI +(*PFN_DrvRealizeBrush)( + IN BRUSHOBJ *pbo, + IN SURFOBJ *psoTarget, + IN SURFOBJ *psoPattern, + IN SURFOBJ *psoMask, + IN XLATEOBJ *pxlo, + IN ULONG iHatch); + +typedef ULONG DDKAPI +(*PFN_DrvResetDevice)( + IN DHPDEV dhpdev, + IN PVOID Reserved); + +typedef BOOL DDKAPI +(*PFN_DrvResetPDEV)( + DHPDEV dhpdevOld, + DHPDEV dhpdevNew); + +typedef ULONG_PTR DDKAPI +(*PFN_DrvSaveScreenBits)( + IN SURFOBJ *pso, + IN ULONG iMode, + IN ULONG_PTR ident, + IN RECTL *prcl); + +typedef BOOL DDKAPI +(*PFN_DrvSendPage)( + IN SURFOBJ *pso); + +typedef BOOL DDKAPI +(*PFN_DrvSetPalette)( + IN DHPDEV dhpdev, + IN PALOBJ *ppalo, + IN FLONG fl, + IN ULONG iStart, + IN ULONG cColors); + +typedef BOOL DDKAPI +(*PFN_DrvSetPixelFormat)( + IN SURFOBJ *pso, + IN LONG iPixelFormat, + IN HWND hwnd); + +typedef ULONG DDKAPI +(*PFN_DrvSetPointerShape)( + IN SURFOBJ *pso, + IN SURFOBJ *psoMask, + IN SURFOBJ *psoColor, + IN XLATEOBJ *pxlo, + IN LONG xHot, + IN LONG yHot, + IN LONG x, + IN LONG y, + IN RECTL *prcl, + IN FLONG fl); + +typedef BOOL DDKAPI +(*PFN_DrvStartBanding)( + IN SURFOBJ *pso, + IN POINTL *pptl); + +typedef BOOL DDKAPI +(*PFN_DrvStartDoc)( + IN SURFOBJ *pso, + IN LPWSTR pwszDocName, + IN DWORD dwJobId); + +typedef BOOL DDKAPI +(*PFN_DrvStartPage)( + IN SURFOBJ *pso); + +typedef BOOL DDKAPI +(*PFN_DrvStretchBlt)( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlHTOrg, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN POINTL *pptlMask, + IN ULONG iMode); + +typedef BOOL DDKAPI +(*PFN_DrvStretchBltROP)( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN SURFOBJ *psoMask, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN COLORADJUSTMENT *pca, + IN POINTL *pptlHTOrg, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN POINTL *pptlMask, + IN ULONG iMode, + IN BRUSHOBJ *pbo, + IN DWORD rop4); + +typedef BOOL DDKAPI +(*PFN_DrvStrokeAndFillPath)( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN XFORMOBJ *pxo, + IN BRUSHOBJ *pboStroke, + IN LINEATTRS *plineattrs, + IN BRUSHOBJ *pboFill, + IN POINTL *pptlBrushOrg, + IN MIX mixFill, + IN FLONG flOptions); + +typedef BOOL DDKAPI +(*PFN_DrvStrokePath)( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN XFORMOBJ *pxo, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN LINEATTRS *plineattrs, + IN MIX mix); + +typedef BOOL DDKAPI +(*PFN_DrvSwapBuffers)( + IN SURFOBJ *pso, + IN WNDOBJ *pwo); + +typedef VOID DDKAPI +(*PFN_DrvSynchronize)( + IN DHPDEV dhpdev, + IN RECTL *prcl); + +typedef VOID DDKAPI +(*PFN_DrvSynchronizeSurface)( + IN SURFOBJ *pso, + IN RECTL *prcl, + IN FLONG fl); + +typedef BOOL DDKAPI +(*PFN_DrvTextOut)( + IN SURFOBJ *pso, + IN STROBJ *pstro, + IN FONTOBJ *pfo, + IN CLIPOBJ *pco, + IN RECTL *prclExtra, + IN RECTL *prclOpaque, + IN BRUSHOBJ *pboFore, + IN BRUSHOBJ *pboOpaque, + IN POINTL *pptlOrg, + IN MIX mix); + +typedef BOOL DDKAPI +(*PFN_DrvTransparentBlt)( + IN SURFOBJ *psoDst, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDst, + IN RECTL *prclSrc, + IN ULONG iTransColor, + IN ULONG ulReserved); + +typedef BOOL DDKAPI +(*PFN_DrvUnloadFontFile)( + IN ULONG_PTR iFile); + + +WIN32KAPI +VOID +DDKAPI +DrvDisableDirectDraw( + IN DHPDEV dhpdev); + +WIN32KAPI +BOOL +DDKAPI +DrvEnableDirectDraw( + IN DHPDEV dhpdev, + OUT DD_CALLBACKS *pCallBacks, + OUT DD_SURFACECALLBACKS *pSurfaceCallBacks, + OUT DD_PALETTECALLBACKS *pPaletteCallBacks); + +WIN32KAPI +BOOL +DDKAPI +DrvGetDirectDrawInfo( + IN DHPDEV dhpdev, + OUT DD_HALINFO *pHalInfo, + OUT DWORD *pdwNumHeaps, + OUT VIDEOMEMORY *pvmList, + OUT DWORD *pdwNumFourCCCodes, + OUT DWORD *pdwFourCC); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* defined __VIDEO_H */ + +#endif /* __WINDDI_H */ diff --git a/reactos/w32api/include/ddk/winddk.h b/reactos/w32api/include/ddk/winddk.h new file mode 100644 index 00000000000..b90fe12e818 --- /dev/null +++ b/reactos/w32api/include/ddk/winddk.h @@ -0,0 +1,9103 @@ +/* + * winddk.h + * + * Windows Device Driver Kit + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __WINDDK_H +#define __WINDDK_H + +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +/* +** Definitions specific to this Device Driver Kit +*/ +#define DDKAPI __attribute__((stdcall)) +#define DDKFASTAPI __attribute__((fastcall)) +#define DDKCDECLAPI __attribute__((cdecl)) + +#if defined(_NTOSKRNL_) +#ifndef NTOSAPI +#define NTOSAPI DECL_EXPORT +#endif +#define DECLARE_INTERNAL_OBJECT(x) typedef struct _##x; typedef struct _##x *P##x; +#define DECLARE_INTERNAL_OBJECT2(x,y) typedef struct _##x; typedef struct _##x *P##y; +#else +#ifndef NTOSAPI +#define NTOSAPI DECL_IMPORT +#endif +#define DECLARE_INTERNAL_OBJECT(x) struct _##x; typedef struct _##x *P##x; +#define DECLARE_INTERNAL_OBJECT2(x,y) struct _##x; typedef struct _##x *P##y; +#endif + +/* Pseudo modifiers for parameters */ +#define IN +#define OUT +#define OPTIONAL +#define UNALLIGNED + +#define CONST const +#define VOLATILE volatile + +#define RESTRICTED_POINTER +#define POINTER_ALIGNMENT + +#ifdef NONAMELESSUNION +# define _DDK_DUMMYUNION_MEMBER(name) DUMMYUNIONNAME.name +# define _DDK_DUMMYUNION_N_MEMBER(n, name) DUMMYUNIONNAME##n.name +#else +# define _DDK_DUMMYUNION_MEMBER(name) name +# define _DDK_DUMMYUNION_N_MEMBER(n, name) name +#endif + +/* +** Forward declarations +*/ + +struct _IRP; +struct _MDL; +struct _KAPC; +struct _KDPC; +struct _KPCR; +struct _KPRCB; +struct _KTSS; +struct _FILE_OBJECT; +struct _DMA_ADAPTER; +struct _DEVICE_OBJECT; +struct _DRIVER_OBJECT; +struct _SECTION_OBJECT; +struct _IO_STATUS_BLOCK; +struct _DEVICE_DESCRIPTION; +struct _SCATTER_GATHER_LIST; + +DECLARE_INTERNAL_OBJECT(ADAPTER_OBJECT) +DECLARE_INTERNAL_OBJECT(DMA_ADAPTER) +DECLARE_INTERNAL_OBJECT(IO_STATUS_BLOCK) +DECLARE_INTERNAL_OBJECT(SECTION_OBJECT) + +#if 1 +/* FIXME: Unknown definitions */ +struct _SET_PARTITION_INFORMATION_EX; +typedef ULONG WAIT_TYPE; +typedef HANDLE TRACEHANDLE; +typedef PVOID PWMILIB_CONTEXT; +typedef PVOID PSYSCTL_IRP_DISPOSITION; +typedef ULONG LOGICAL; +#endif + +/* +** Routines specific to this DDK +*/ + +#define TAG(_a, _b, _c, _d) (ULONG) \ + (((_a) << 0) + ((_b) << 8) + ((_c) << 16) + ((_d) << 24)) + +static __inline struct _KPCR * KeGetCurrentKPCR( + VOID) +{ + ULONG Value; + + __asm__ __volatile__ ("movl %%fs:0x18, %0\n\t" + : "=r" (Value) + : /* no inputs */ + ); + return (struct _KPCR *) Value; +} + +/* +** Simple structures +*/ + +typedef LONG KPRIORITY; +typedef UCHAR KIRQL, *PKIRQL; +typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK; +typedef ULONG KAFFINITY, *PKAFFINITY; +typedef CCHAR KPROCESSOR_MODE; + +typedef enum _MODE { + KernelMode, + UserMode, + MaximumMode +} MODE; + + +/* Structures not exposed to drivers */ +typedef struct _IO_TIMER *PIO_TIMER; +typedef struct _EPROCESS *PEPROCESS; +typedef struct _ETHREAD *PETHREAD; +typedef struct _KINTERRUPT *PKINTERRUPT; +typedef struct _OBJECT_TYPE *POBJECT_TYPE; +typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; +typedef struct _COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO; +typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE; +typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE; +typedef struct _DRIVE_LAYOUT_INFORMATION *PDRIVE_LAYOUT_INFORMATION; +typedef struct _DRIVE_LAYOUT_INFORMATION_EX *PDRIVE_LAYOUT_INFORMATION_EX; + +/* Constants */ +#define MAXIMUM_PROCESSORS 32 + +#define MAXIMUM_WAIT_OBJECTS 64 + +#define METHOD_BUFFERED 0 +#define METHOD_IN_DIRECT 1 +#define METHOD_OUT_DIRECT 2 +#define METHOD_NEITHER 3 + +#define LOW_PRIORITY 0 +#define LOW_REALTIME_PRIORITY 16 +#define HIGH_PRIORITY 31 +#define MAXIMUM_PRIORITY 32 + +#define FILE_SUPERSEDED 0x00000000 +#define FILE_OPENED 0x00000001 +#define FILE_CREATED 0x00000002 +#define FILE_OVERWRITTEN 0x00000003 +#define FILE_EXISTS 0x00000004 +#define FILE_DOES_NOT_EXIST 0x00000005 + +/* also in winnt.h */ +#define FILE_LIST_DIRECTORY 0x00000001 +#define FILE_READ_DATA 0x00000001 +#define FILE_ADD_FILE 0x00000002 +#define FILE_WRITE_DATA 0x00000002 +#define FILE_ADD_SUBDIRECTORY 0x00000004 +#define FILE_APPEND_DATA 0x00000004 +#define FILE_CREATE_PIPE_INSTANCE 0x00000004 +#define FILE_READ_EA 0x00000008 +#define FILE_WRITE_EA 0x00000010 +#define FILE_EXECUTE 0x00000020 +#define FILE_TRAVERSE 0x00000020 +#define FILE_DELETE_CHILD 0x00000040 +#define FILE_READ_ATTRIBUTES 0x00000080 +#define FILE_WRITE_ATTRIBUTES 0x00000100 + +#define FILE_SHARE_READ 0x00000001 +#define FILE_SHARE_WRITE 0x00000002 +#define FILE_SHARE_DELETE 0x00000004 +#define FILE_SHARE_VALID_FLAGS 0x00000007 + +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#define FILE_ATTRIBUTE_HIDDEN 0x00000002 +#define FILE_ATTRIBUTE_SYSTEM 0x00000004 +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +#define FILE_ATTRIBUTE_DEVICE 0x00000040 +#define FILE_ATTRIBUTE_NORMAL 0x00000080 +#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 +#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 +#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 +#define FILE_ATTRIBUTE_OFFLINE 0x00001000 +#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 +#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 + +#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 +#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 + +#define FILE_COPY_STRUCTURED_STORAGE 0x00000041 +#define FILE_STRUCTURED_STORAGE 0x00000441 + +#define FILE_VALID_OPTION_FLAGS 0x00ffffff +#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032 +#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032 +#define FILE_VALID_SET_FLAGS 0x00000036 + +#define FILE_SUPERSEDE 0x00000000 +#define FILE_OPEN 0x00000001 +#define FILE_CREATE 0x00000002 +#define FILE_OPEN_IF 0x00000003 +#define FILE_OVERWRITE 0x00000004 +#define FILE_OVERWRITE_IF 0x00000005 +#define FILE_MAXIMUM_DISPOSITION 0x00000005 + +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_SEQUENTIAL_ONLY 0x00000004 +#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 +#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_CREATE_TREE_CONNECTION 0x00000080 +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_NO_EA_KNOWLEDGE 0x00000200 +#define FILE_OPEN_FOR_RECOVERY 0x00000400 +#define FILE_RANDOM_ACCESS 0x00000800 +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_BY_FILE_ID 0x00002000 +#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 +#define FILE_NO_COMPRESSION 0x00008000 +#define FILE_RESERVE_OPFILTER 0x00100000 +#define FILE_OPEN_REPARSE_POINT 0x00200000 +#define FILE_OPEN_NO_RECALL 0x00400000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 + +#define FILE_ANY_ACCESS 0x00000000 +#define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS +#define FILE_READ_ACCESS 0x00000001 +#define FILE_WRITE_ACCESS 0x00000002 + +#define FILE_ALL_ACCESS \ + (STANDARD_RIGHTS_REQUIRED | \ + SYNCHRONIZE | \ + 0x1FF) + +#define FILE_GENERIC_EXECUTE \ + (STANDARD_RIGHTS_EXECUTE | \ + FILE_READ_ATTRIBUTES | \ + FILE_EXECUTE | \ + SYNCHRONIZE) + +#define FILE_GENERIC_READ \ + (STANDARD_RIGHTS_READ | \ + FILE_READ_DATA | \ + FILE_READ_ATTRIBUTES | \ + FILE_READ_EA | \ + SYNCHRONIZE) + +#define FILE_GENERIC_WRITE \ + (STANDARD_RIGHTS_WRITE | \ + FILE_WRITE_DATA | \ + FILE_WRITE_ATTRIBUTES | \ + FILE_WRITE_EA | \ + FILE_APPEND_DATA | \ + SYNCHRONIZE) +/* end winnt.h */ + +#define DIRECTORY_QUERY (0x0001) +#define DIRECTORY_TRAVERSE (0x0002) +#define DIRECTORY_CREATE_OBJECT (0x0004) +#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008) +#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) + +/* Exported object types */ +extern NTOSAPI POBJECT_TYPE ExDesktopObjectType; +extern NTOSAPI POBJECT_TYPE ExEventObjectType; +extern NTOSAPI POBJECT_TYPE ExSemaphoreObjectType; +extern NTOSAPI POBJECT_TYPE ExWindowStationObjectType; +extern NTOSAPI POBJECT_TYPE IoAdapterObjectType; +extern NTOSAPI ULONG IoDeviceHandlerObjectSize; +extern NTOSAPI POBJECT_TYPE IoDeviceHandlerObjectType; +extern NTOSAPI POBJECT_TYPE IoDeviceObjectType; +extern NTOSAPI POBJECT_TYPE IoDriverObjectType; +extern NTOSAPI POBJECT_TYPE IoFileObjectType; +extern NTOSAPI POBJECT_TYPE LpcPortObjectType; +extern NTOSAPI POBJECT_TYPE MmSectionObjectType; +extern NTOSAPI POBJECT_TYPE SeTokenObjectType; + +extern NTOSAPI CCHAR KeNumberProcessors; +extern NTOSAPI PHAL_DISPATCH_TABLE HalDispatchTable; +extern NTOSAPI PHAL_PRIVATE_DISPATCH_TABLE HalPrivateDispatchTable; + + +/* +** IRP function codes +*/ + +#define IRP_MJ_CREATE 0x00 +#define IRP_MJ_CREATE_NAMED_PIPE 0x01 +#define IRP_MJ_CLOSE 0x02 +#define IRP_MJ_READ 0x03 +#define IRP_MJ_WRITE 0x04 +#define IRP_MJ_QUERY_INFORMATION 0x05 +#define IRP_MJ_SET_INFORMATION 0x06 +#define IRP_MJ_QUERY_EA 0x07 +#define IRP_MJ_SET_EA 0x08 +#define IRP_MJ_FLUSH_BUFFERS 0x09 +#define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a +#define IRP_MJ_SET_VOLUME_INFORMATION 0x0b +#define IRP_MJ_DIRECTORY_CONTROL 0x0c +#define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d +#define IRP_MJ_DEVICE_CONTROL 0x0e +#define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f +#define IRP_MJ_SCSI 0x0f +#define IRP_MJ_SHUTDOWN 0x10 +#define IRP_MJ_LOCK_CONTROL 0x11 +#define IRP_MJ_CLEANUP 0x12 +#define IRP_MJ_CREATE_MAILSLOT 0x13 +#define IRP_MJ_QUERY_SECURITY 0x14 +#define IRP_MJ_SET_SECURITY 0x15 +#define IRP_MJ_POWER 0x16 +#define IRP_MJ_SYSTEM_CONTROL 0x17 +#define IRP_MJ_DEVICE_CHANGE 0x18 +#define IRP_MJ_QUERY_QUOTA 0x19 +#define IRP_MJ_SET_QUOTA 0x1a +#define IRP_MJ_PNP 0x1b +#define IRP_MJ_PNP_POWER 0x1b +#define IRP_MJ_MAXIMUM_FUNCTION 0x1b + +#define IRP_MN_QUERY_DIRECTORY 0x01 +#define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02 + +#define IRP_MN_USER_FS_REQUEST 0x00 +#define IRP_MN_MOUNT_VOLUME 0x01 +#define IRP_MN_VERIFY_VOLUME 0x02 +#define IRP_MN_LOAD_FILE_SYSTEM 0x03 +#define IRP_MN_TRACK_LINK 0x04 +#define IRP_MN_KERNEL_CALL 0x04 + +#define IRP_MN_LOCK 0x01 +#define IRP_MN_UNLOCK_SINGLE 0x02 +#define IRP_MN_UNLOCK_ALL 0x03 +#define IRP_MN_UNLOCK_ALL_BY_KEY 0x04 + +#define IRP_MN_NORMAL 0x00 +#define IRP_MN_DPC 0x01 +#define IRP_MN_MDL 0x02 +#define IRP_MN_COMPLETE 0x04 +#define IRP_MN_COMPRESSED 0x08 + +#define IRP_MN_MDL_DPC (IRP_MN_MDL | IRP_MN_DPC) +#define IRP_MN_COMPLETE_MDL (IRP_MN_COMPLETE | IRP_MN_MDL) +#define IRP_MN_COMPLETE_MDL_DPC (IRP_MN_COMPLETE_MDL | IRP_MN_DPC) + +#define IRP_MN_SCSI_CLASS 0x01 + +#define IRP_MN_START_DEVICE 0x00 +#define IRP_MN_QUERY_REMOVE_DEVICE 0x01 +#define IRP_MN_REMOVE_DEVICE 0x02 +#define IRP_MN_CANCEL_REMOVE_DEVICE 0x03 +#define IRP_MN_STOP_DEVICE 0x04 +#define IRP_MN_QUERY_STOP_DEVICE 0x05 +#define IRP_MN_CANCEL_STOP_DEVICE 0x06 + +#define IRP_MN_QUERY_DEVICE_RELATIONS 0x07 +#define IRP_MN_QUERY_INTERFACE 0x08 +#define IRP_MN_QUERY_CAPABILITIES 0x09 +#define IRP_MN_QUERY_RESOURCES 0x0A +#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B +#define IRP_MN_QUERY_DEVICE_TEXT 0x0C +#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D + +#define IRP_MN_READ_CONFIG 0x0F +#define IRP_MN_WRITE_CONFIG 0x10 +#define IRP_MN_EJECT 0x11 +#define IRP_MN_SET_LOCK 0x12 +#define IRP_MN_QUERY_ID 0x13 +#define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14 +#define IRP_MN_QUERY_BUS_INFORMATION 0x15 +#define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16 +#define IRP_MN_SURPRISE_REMOVAL 0x17 +#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18 + +#define IRP_MN_WAIT_WAKE 0x00 +#define IRP_MN_POWER_SEQUENCE 0x01 +#define IRP_MN_SET_POWER 0x02 +#define IRP_MN_QUERY_POWER 0x03 + +#define IRP_MN_QUERY_ALL_DATA 0x00 +#define IRP_MN_QUERY_SINGLE_INSTANCE 0x01 +#define IRP_MN_CHANGE_SINGLE_INSTANCE 0x02 +#define IRP_MN_CHANGE_SINGLE_ITEM 0x03 +#define IRP_MN_ENABLE_EVENTS 0x04 +#define IRP_MN_DISABLE_EVENTS 0x05 +#define IRP_MN_ENABLE_COLLECTION 0x06 +#define IRP_MN_DISABLE_COLLECTION 0x07 +#define IRP_MN_REGINFO 0x08 +#define IRP_MN_EXECUTE_METHOD 0x09 + +#define IRP_MN_REGINFO_EX 0x0b + +typedef enum _IO_ALLOCATION_ACTION { + KeepObject = 1, + DeallocateObject, + DeallocateObjectKeepRegisters +} IO_ALLOCATION_ACTION, *PIO_ALLOCATION_ACTION; + +typedef IO_ALLOCATION_ACTION DDKAPI +(*PDRIVER_CONTROL)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN PVOID MapRegisterBase, + IN PVOID Context); + +typedef VOID DDKAPI +(*PDRIVER_LIST_CONTROL)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN struct _SCATTER_GATHER_LIST *ScatterGather, + IN PVOID Context); + +typedef NTSTATUS DDKAPI +(*PDRIVER_ADD_DEVICE)( + IN struct _DRIVER_OBJECT *DriverObject, + IN struct _DEVICE_OBJECT *PhysicalDeviceObject); + +typedef NTSTATUS DDKAPI +(*PIO_COMPLETION_ROUTINE)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN PVOID Context); + +typedef VOID DDKAPI +(*PDRIVER_CANCEL)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp); + +typedef VOID DDKAPI +(*PKDEFERRED_ROUTINE)( + IN struct _KDPC *Dpc, + IN PVOID DeferredContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2); + +typedef NTSTATUS DDKAPI +(*PDRIVER_DISPATCH)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp); + +typedef VOID DDKAPI +(*PIO_DPC_ROUTINE)( + IN struct _KDPC *Dpc, + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp, + IN PVOID Context); + +typedef NTSTATUS DDKAPI +(*PMM_DLL_INITIALIZE)( + IN PUNICODE_STRING RegistryPath); + +typedef NTSTATUS DDKAPI +(*PMM_DLL_UNLOAD)( + VOID); + +typedef NTSTATUS DDKAPI +(*PDRIVER_ENTRY)( + IN struct _DRIVER_OBJECT *DriverObject, + IN PUNICODE_STRING RegistryPath); + +typedef NTSTATUS DDKAPI +(*PDRIVER_INITIALIZE)( + IN struct _DRIVER_OBJECT *DriverObject, + IN PUNICODE_STRING RegistryPath); + +typedef BOOLEAN DDKAPI +(*PKSERVICE_ROUTINE)( + IN struct _KINTERRUPT *Interrupt, + IN PVOID ServiceContext); + +typedef VOID DDKAPI +(*PIO_TIMER_ROUTINE)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN PVOID Context); + +typedef VOID DDKAPI +(*PDRIVER_REINITIALIZE)( + IN struct _DRIVER_OBJECT *DriverObject, + IN PVOID Context, + IN ULONG Count); + +typedef NTSTATUS DDKAPI +(*PDRIVER_STARTIO)( + IN struct _DEVICE_OBJECT *DeviceObject, + IN struct _IRP *Irp); + +typedef BOOLEAN DDKAPI +(*PKSYNCHRONIZE_ROUTINE)( + IN PVOID SynchronizeContext); + +typedef VOID DDKAPI +(*PDRIVER_UNLOAD)( + IN struct _DRIVER_OBJECT *DriverObject); + + + +/* +** Plug and Play structures +*/ + +typedef VOID DDKAPI +(*PINTERFACE_REFERENCE)( + PVOID Context); + +typedef VOID DDKAPI +(*PINTERFACE_DEREFERENCE)( + PVOID Context); + +typedef BOOLEAN DDKAPI +(*PTRANSLATE_BUS_ADDRESS)( + IN PVOID Context, + IN PHYSICAL_ADDRESS BusAddress, + IN ULONG Length, + IN OUT PULONG AddressSpace, + OUT PPHYSICAL_ADDRESS TranslatedAddress); + +typedef struct _DMA_ADAPTER* DDKAPI +(*PGET_DMA_ADAPTER)( + IN PVOID Context, + IN struct _DEVICE_DESCRIPTION *DeviceDescriptor, + OUT PULONG NumberOfMapRegisters); + +typedef ULONG DDKAPI +(*PGET_SET_DEVICE_DATA)( + IN PVOID Context, + IN ULONG DataType, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +typedef union _POWER_STATE { + SYSTEM_POWER_STATE SystemState; + DEVICE_POWER_STATE DeviceState; +} POWER_STATE, *PPOWER_STATE; + +typedef enum _POWER_STATE_TYPE { + SystemPowerState, + DevicePowerState +} POWER_STATE_TYPE, *PPOWER_STATE_TYPE; + +typedef struct _BUS_INTERFACE_STANDARD { + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; + PTRANSLATE_BUS_ADDRESS TranslateBusAddress; + PGET_DMA_ADAPTER GetDmaAdapter; + PGET_SET_DEVICE_DATA SetBusData; + PGET_SET_DEVICE_DATA GetBusData; +} BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD; + +typedef struct _DEVICE_CAPABILITIES { + USHORT Size; + USHORT Version; + ULONG DeviceD1 : 1; + ULONG DeviceD2 : 1; + ULONG LockSupported : 1; + ULONG EjectSupported : 1; + ULONG Removable : 1; + ULONG DockDevice : 1; + ULONG UniqueID : 1; + ULONG SilentInstall : 1; + ULONG RawDeviceOK : 1; + ULONG SurpriseRemovalOK : 1; + ULONG WakeFromD0 : 1; + ULONG WakeFromD1 : 1; + ULONG WakeFromD2 : 1; + ULONG WakeFromD3 : 1; + ULONG HardwareDisabled : 1; + ULONG NonDynamic : 1; + ULONG WarmEjectSupported : 1; + ULONG NoDisplayInUI : 1; + ULONG Reserved : 14; + ULONG Address; + ULONG UINumber; + DEVICE_POWER_STATE DeviceState[PowerSystemMaximum]; + SYSTEM_POWER_STATE SystemWake; + DEVICE_POWER_STATE DeviceWake; + ULONG D1Latency; + ULONG D2Latency; + ULONG D3Latency; +} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES; + +typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION { + USHORT Version; + USHORT Size; + GUID Event; + GUID InterfaceClassGuid; + PUNICODE_STRING SymbolicLinkName; +} DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION; + +typedef struct _HWPROFILE_CHANGE_NOTIFICATION { + USHORT Version; + USHORT Size; + GUID Event; +} HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION; + +#undef INTERFACE + +typedef struct _INTERFACE { + USHORT Size; + USHORT Version; + PVOID Context; + PINTERFACE_REFERENCE InterfaceReference; + PINTERFACE_DEREFERENCE InterfaceDereference; +} INTERFACE, *PINTERFACE; + +typedef struct _PLUGPLAY_NOTIFICATION_HEADER { + USHORT Version; + USHORT Size; + GUID Event; +} PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER; + +typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE; + +/* PNP_DEVICE_STATE */ + +#define PNP_DEVICE_DISABLED 0x00000001 +#define PNP_DEVICE_DONT_DISPLAY_IN_UI 0x00000002 +#define PNP_DEVICE_FAILED 0x00000004 +#define PNP_DEVICE_REMOVED 0x00000008 +#define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED 0x00000010 +#define PNP_DEVICE_NOT_DISABLEABLE 0x00000020 + +typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION { + USHORT Version; + USHORT Size; + GUID Event; + struct _FILE_OBJECT *FileObject; + LONG NameBufferOffset; + UCHAR CustomDataBuffer[1]; +} TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION; + +typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION { + USHORT Version; + USHORT Size; + GUID Event; + struct _FILE_OBJECT *FileObject; +} TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION; + +typedef enum _BUS_QUERY_ID_TYPE { + BusQueryDeviceID, + BusQueryHardwareIDs, + BusQueryCompatibleIDs, + BusQueryInstanceID, + BusQueryDeviceSerialNumber +} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE; + +typedef enum _DEVICE_TEXT_TYPE { + DeviceTextDescription, + DeviceTextLocationInformation +} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE; + +typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE { + DeviceUsageTypeUndefined, + DeviceUsageTypePaging, + DeviceUsageTypeHibernation, + DeviceUsageTypeDumpFile +} DEVICE_USAGE_NOTIFICATION_TYPE; + +typedef struct _POWER_SEQUENCE { + ULONG SequenceD1; + ULONG SequenceD2; + ULONG SequenceD3; +} POWER_SEQUENCE, *PPOWER_SEQUENCE; + +typedef enum { + DevicePropertyDeviceDescription, + DevicePropertyHardwareID, + DevicePropertyCompatibleIDs, + DevicePropertyBootConfiguration, + DevicePropertyBootConfigurationTranslated, + DevicePropertyClassName, + DevicePropertyClassGuid, + DevicePropertyDriverKeyName, + DevicePropertyManufacturer, + DevicePropertyFriendlyName, + DevicePropertyLocationInformation, + DevicePropertyPhysicalDeviceObjectName, + DevicePropertyBusTypeGuid, + DevicePropertyLegacyBusType, + DevicePropertyBusNumber, + DevicePropertyEnumeratorName, + DevicePropertyAddress, + DevicePropertyUINumber, + DevicePropertyInstallState, + DevicePropertyRemovalPolicy +} DEVICE_REGISTRY_PROPERTY; + +typedef enum _IO_NOTIFICATION_EVENT_CATEGORY { + EventCategoryReserved, + EventCategoryHardwareProfileChange, + EventCategoryDeviceInterfaceChange, + EventCategoryTargetDeviceChange +} IO_NOTIFICATION_EVENT_CATEGORY; + +#define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001 + +typedef NTSTATUS DDKAPI +(*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)( + IN PVOID NotificationStructure, + IN PVOID Context); + +typedef VOID DDKAPI +(*PDEVICE_CHANGE_COMPLETE_CALLBACK)( + IN PVOID Context); + + + +/* +** System structures +*/ + +#define SYMBOLIC_LINK_QUERY 0x0001 +#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) + +/* also in winnt,h */ +#define DUPLICATE_CLOSE_SOURCE 0x00000001 +#define DUPLICATE_SAME_ACCESS 0x00000002 +#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 +/* end winnt.h */ + +typedef struct _OBJECT_NAME_INFORMATION { + UNICODE_STRING Name; +} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; + +typedef VOID DDKAPI +(*PIO_APC_ROUTINE)( + IN PVOID ApcContext, + IN PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG Reserved); + +typedef struct _IO_STATUS_BLOCK { + _ANONYMOUS_UNION union { + NTSTATUS Status; + PVOID Pointer; + } DUMMYUNIONNAME; + ULONG_PTR Information; +} IO_STATUS_BLOCK; + +typedef VOID DDKAPI +(*PKNORMAL_ROUTINE)( + IN PVOID NormalContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2); + +typedef VOID DDKAPI +(*PKKERNEL_ROUTINE)( + IN struct _KAPC *Apc, + IN OUT PKNORMAL_ROUTINE *NormalRoutine, + IN OUT PVOID *NormalContext, + IN OUT PVOID *SystemArgument1, + IN OUT PVOID *SystemArgument2); + +typedef VOID DDKAPI +(*PKRUNDOWN_ROUTINE)( + IN struct _KAPC *Apc); + +typedef BOOLEAN DDKAPI +(*PKTRANSFER_ROUTINE)( + VOID); + +typedef struct _KAPC { + CSHORT Type; + CSHORT Size; + ULONG Spare0; + struct _KTHREAD *Thread; + LIST_ENTRY ApcListEntry; + PKKERNEL_ROUTINE KernelRoutine; + PKRUNDOWN_ROUTINE RundownRoutine; + PKNORMAL_ROUTINE NormalRoutine; + PVOID NormalContext; + PVOID SystemArgument1; + PVOID SystemArgument2; + CCHAR ApcStateIndex; + KPROCESSOR_MODE ApcMode; + BOOLEAN Inserted; +} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC; + +typedef struct _KDEVICE_QUEUE { + CSHORT Type; + CSHORT Size; + LIST_ENTRY DeviceListHead; + KSPIN_LOCK Lock; + BOOLEAN Busy; +} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE; + +typedef struct _KDEVICE_QUEUE_ENTRY { + LIST_ENTRY DeviceListEntry; + ULONG SortKey; + BOOLEAN Inserted; +} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY, +*RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY; + +#define LOCK_QUEUE_WAIT 1 +#define LOCK_QUEUE_OWNER 2 + +typedef enum _KSPIN_LOCK_QUEUE_NUMBER { + LockQueueDispatcherLock, + LockQueueContextSwapLock, + LockQueuePfnLock, + LockQueueSystemSpaceLock, + LockQueueVacbLock, + LockQueueMasterLock, + LockQueueNonPagedPoolLock, + LockQueueIoCancelLock, + LockQueueWorkQueueLock, + LockQueueIoVpbLock, + LockQueueIoDatabaseLock, + LockQueueIoCompletionLock, + LockQueueNtfsStructLock, + LockQueueAfdWorkQueueLock, + LockQueueBcbLock, + LockQueueMaximumLock +} KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER; + +typedef struct _KSPIN_LOCK_QUEUE { + struct _KSPIN_LOCK_QUEUE *VOLATILE Next; + PKSPIN_LOCK VOLATILE Lock; +} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE; + +typedef struct _KLOCK_QUEUE_HANDLE { + KSPIN_LOCK_QUEUE LockQueue; + KIRQL OldIrql; +} KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE; + +typedef struct _KDPC { + CSHORT Type; + UCHAR Number; + UCHAR Importance; + LIST_ENTRY DpcListEntry; + PKDEFERRED_ROUTINE DeferredRoutine; + PVOID DeferredContext; + PVOID SystemArgument1; + PVOID SystemArgument2; + PULONG_PTR Lock; +} KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC; + +typedef struct _WAIT_CONTEXT_BLOCK { + KDEVICE_QUEUE_ENTRY WaitQueueEntry; + struct _DRIVER_CONTROL *DeviceRoutine; + PVOID DeviceContext; + ULONG NumberOfMapRegisters; + PVOID DeviceObject; + PVOID CurrentIrp; + PKDPC BufferChainingDpc; +} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK; + +typedef struct _DISPATCHER_HEADER { + UCHAR Type; + UCHAR Absolute; + UCHAR Size; + UCHAR Inserted; + LONG SignalState; + LIST_ENTRY WaitListHead; +} DISPATCHER_HEADER, *PDISPATCHER_HEADER; + +typedef struct _KEVENT { + DISPATCHER_HEADER Header; +} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT; + +typedef struct _KSEMAPHORE { + DISPATCHER_HEADER Header; + LONG Limit; +} KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE; + +typedef struct _FAST_MUTEX { + LONG Count; + struct _KTHREAD *Owner; + ULONG Contention; + KEVENT Event; + ULONG OldIrql; +} FAST_MUTEX, *PFAST_MUTEX; + +typedef struct _KTIMER { + DISPATCHER_HEADER Header; + ULARGE_INTEGER DueTime; + LIST_ENTRY TimerListEntry; + struct _KDPC *Dpc; + LONG Period; +} KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER; + +typedef struct _KMUTANT { + DISPATCHER_HEADER Header; + LIST_ENTRY MutantListEntry; + struct _KTHREAD *RESTRICTED_POINTER OwnerThread; + BOOLEAN Abandoned; + UCHAR ApcDisable; +} KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX; + +typedef enum _TIMER_TYPE { + NotificationTimer, + SynchronizationTimer +} TIMER_TYPE; + +#define EVENT_INCREMENT 1 +#define IO_NO_INCREMENT 0 +#define IO_CD_ROM_INCREMENT 1 +#define IO_DISK_INCREMENT 1 +#define IO_KEYBOARD_INCREMENT 6 +#define IO_MAILSLOT_INCREMENT 2 +#define IO_MOUSE_INCREMENT 6 +#define IO_NAMED_PIPE_INCREMENT 2 +#define IO_NETWORK_INCREMENT 2 +#define IO_PARALLEL_INCREMENT 1 +#define IO_SERIAL_INCREMENT 2 +#define IO_SOUND_INCREMENT 8 +#define IO_VIDEO_INCREMENT 1 +#define SEMAPHORE_INCREMENT 1 + +typedef struct _IRP { + CSHORT Type; + USHORT Size; + struct _MDL *MdlAddress; + ULONG Flags; + union { + struct _IRP *MasterIrp; + LONG IrpCount; + PVOID SystemBuffer; + } AssociatedIrp; + LIST_ENTRY ThreadListEntry; + IO_STATUS_BLOCK IoStatus; + KPROCESSOR_MODE RequestorMode; + BOOLEAN PendingReturned; + CHAR StackCount; + CHAR CurrentLocation; + BOOLEAN Cancel; + KIRQL CancelIrql; + CCHAR ApcEnvironment; + UCHAR AllocationFlags; + PIO_STATUS_BLOCK UserIosb; + PKEVENT UserEvent; + union { + struct { + PIO_APC_ROUTINE UserApcRoutine; + PVOID UserApcContext; + } AsynchronousParameters; + LARGE_INTEGER AllocationSize; + } Overlay; + PDRIVER_CANCEL CancelRoutine; + PVOID UserBuffer; + union { + struct { + _ANONYMOUS_UNION union { + KDEVICE_QUEUE_ENTRY DeviceQueueEntry; + _ANONYMOUS_STRUCT struct { + PVOID DriverContext[4]; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + PETHREAD Thread; + PCHAR AuxiliaryBuffer; + _ANONYMOUS_STRUCT struct { + LIST_ENTRY ListEntry; + _ANONYMOUS_UNION union { + struct _IO_STACK_LOCATION *CurrentStackLocation; + ULONG PacketType; + } DUMMYUNIONNAME; + } DUMMYSTRUCTNAME; + struct _FILE_OBJECT *OriginalFileObject; + } Overlay; + KAPC Apc; + PVOID CompletionKey; + } Tail; +} IRP; +typedef struct _IRP *PIRP; + +/* IRP.Flags */ + +#define SL_FORCE_ACCESS_CHECK 0x01 +#define SL_OPEN_PAGING_FILE 0x02 +#define SL_OPEN_TARGET_DIRECTORY 0x04 +#define SL_CASE_SENSITIVE 0x80 + +#define SL_KEY_SPECIFIED 0x01 +#define SL_OVERRIDE_VERIFY_VOLUME 0x02 +#define SL_WRITE_THROUGH 0x04 +#define SL_FT_SEQUENTIAL_WRITE 0x08 + +#define SL_FAIL_IMMEDIATELY 0x01 +#define SL_EXCLUSIVE_LOCK 0x02 + +#define SL_RESTART_SCAN 0x01 +#define SL_RETURN_SINGLE_ENTRY 0x02 +#define SL_INDEX_SPECIFIED 0x04 + +#define SL_WATCH_TREE 0x01 + +#define SL_ALLOW_RAW_MOUNT 0x01 + +#define CTL_CODE(DeviceType, Function, Method, Access)( \ + ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) + +#define DEVICE_TYPE_FROM_CTL_CODE(ctl) (((ULONG) (ctl & 0xffff0000)) >> 16) + +enum +{ + IRP_NOCACHE = 0x1, + IRP_PAGING_IO = 0x2, + IRP_MOUNT_COMPLETION = 0x2, + IRP_SYNCHRONOUS_API = 0x4, + IRP_ASSOCIATED_IRP = 0x8, + IRP_BUFFERED_IO = 0x10, + IRP_DEALLOCATE_BUFFER = 0x20, + IRP_INPUT_OPERATION = 0x40, + IRP_SYNCHRONOUS_PAGING_IO = 0x40, + IRP_CREATE_OPERATION = 0x80, + IRP_READ_OPERATION = 0x100, + IRP_WRITE_OPERATION = 0x200, + IRP_CLOSE_OPERATION = 0x400, + IRP_DEFER_IO_COMPLETION = 0x800, + IRP_OB_QUERY_NAME = 0x1000, + IRP_HOLD_DEVICE_QUEUE = 0x2000, + IRP_RETRY_IO_COMPLETION = 0x4000 +}; + + +typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { + ULONG Signature; +} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR; + +typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; +} DRIVE_LAYOUT_INFORMATION_GPT, *PDRIVE_LAYOUT_INFORMATION_GPT; + +typedef struct _PARTITION_INFORMATION_MBR { + UCHAR PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + ULONG HiddenSectors; +} PARTITION_INFORMATION_MBR, *PPARTITION_INFORMATION_MBR; + + +typedef struct _BOOTDISK_INFORMATION { + LONGLONG BootPartitionOffset; + LONGLONG SystemPartitionOffset; + ULONG BootDeviceSignature; + ULONG SystemDeviceSignature; +} BOOTDISK_INFORMATION, *PBOOTDISK_INFORMATION; + +typedef struct _BOOTDISK_INFORMATION_EX { + LONGLONG BootPartitionOffset; + LONGLONG SystemPartitionOffset; + ULONG BootDeviceSignature; + ULONG SystemDeviceSignature; + GUID BootDeviceGuid; + GUID SystemDeviceGuid; + BOOLEAN BootDeviceIsGpt; + BOOLEAN SystemDeviceIsGpt; +} BOOTDISK_INFORMATION_EX, *PBOOTDISK_INFORMATION_EX; + +typedef struct _EISA_MEMORY_TYPE { + UCHAR ReadWrite : 1; + UCHAR Cached : 1; + UCHAR Reserved0 : 1; + UCHAR Type : 2; + UCHAR Shared : 1; + UCHAR Reserved1 : 1; + UCHAR MoreEntries : 1; +} EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE; + +typedef struct _EISA_MEMORY_CONFIGURATION { + EISA_MEMORY_TYPE ConfigurationByte; + UCHAR DataSize; + USHORT AddressLowWord; + UCHAR AddressHighByte; + USHORT MemorySize; +} EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION; + +typedef struct _EISA_IRQ_DESCRIPTOR { + UCHAR Interrupt : 4; + UCHAR Reserved : 1; + UCHAR LevelTriggered : 1; + UCHAR Shared : 1; + UCHAR MoreEntries : 1; +} EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR; + +typedef struct _EISA_IRQ_CONFIGURATION { + EISA_IRQ_DESCRIPTOR ConfigurationByte; + UCHAR Reserved; +} EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION; + +typedef struct _DMA_CONFIGURATION_BYTE0 { + UCHAR Channel : 3; + UCHAR Reserved : 3; + UCHAR Shared : 1; + UCHAR MoreEntries : 1; +} DMA_CONFIGURATION_BYTE0; + +typedef struct _DMA_CONFIGURATION_BYTE1 { + UCHAR Reserved0 : 2; + UCHAR TransferSize : 2; + UCHAR Timing : 2; + UCHAR Reserved1 : 2; +} DMA_CONFIGURATION_BYTE1; + +typedef struct _EISA_DMA_CONFIGURATION { + DMA_CONFIGURATION_BYTE0 ConfigurationByte0; + DMA_CONFIGURATION_BYTE1 ConfigurationByte1; +} EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION; + +typedef struct _EISA_PORT_DESCRIPTOR { + UCHAR NumberPorts : 5; + UCHAR Reserved : 1; + UCHAR Shared : 1; + UCHAR MoreEntries : 1; +} EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR; + +typedef struct _EISA_PORT_CONFIGURATION { + EISA_PORT_DESCRIPTOR Configuration; + USHORT PortAddress; +} EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION; + +typedef struct _CM_EISA_FUNCTION_INFORMATION { + ULONG CompressedId; + UCHAR IdSlotFlags1; + UCHAR IdSlotFlags2; + UCHAR MinorRevision; + UCHAR MajorRevision; + UCHAR Selections[26]; + UCHAR FunctionFlags; + UCHAR TypeString[80]; + EISA_MEMORY_CONFIGURATION EisaMemory[9]; + EISA_IRQ_CONFIGURATION EisaIrq[7]; + EISA_DMA_CONFIGURATION EisaDma[4]; + EISA_PORT_CONFIGURATION EisaPort[20]; + UCHAR InitializationData[60]; +} CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION; + +/* CM_EISA_FUNCTION_INFORMATION.FunctionFlags */ + +#define EISA_FUNCTION_ENABLED 0x80 +#define EISA_FREE_FORM_DATA 0x40 +#define EISA_HAS_PORT_INIT_ENTRY 0x20 +#define EISA_HAS_PORT_RANGE 0x10 +#define EISA_HAS_DMA_ENTRY 0x08 +#define EISA_HAS_IRQ_ENTRY 0x04 +#define EISA_HAS_MEMORY_ENTRY 0x02 +#define EISA_HAS_TYPE_ENTRY 0x01 +#define EISA_HAS_INFORMATION \ + (EISA_HAS_PORT_RANGE + EISA_HAS_DMA_ENTRY + EISA_HAS_IRQ_ENTRY \ + + EISA_HAS_MEMORY_ENTRY + EISA_HAS_TYPE_ENTRY) + +typedef struct _CM_EISA_SLOT_INFORMATION { + UCHAR ReturnCode; + UCHAR ReturnFlags; + UCHAR MajorRevision; + UCHAR MinorRevision; + USHORT Checksum; + UCHAR NumberFunctions; + UCHAR FunctionInformation; + ULONG CompressedId; +} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION; + +/* CM_EISA_SLOT_INFORMATION.ReturnCode */ + +#define EISA_INVALID_SLOT 0x80 +#define EISA_INVALID_FUNCTION 0x81 +#define EISA_INVALID_CONFIGURATION 0x82 +#define EISA_EMPTY_SLOT 0x83 +#define EISA_INVALID_BIOS_CALL 0x86 + +typedef struct _CM_FLOPPY_DEVICE_DATA { + USHORT Version; + USHORT Revision; + CHAR Size[8]; + ULONG MaxDensity; + ULONG MountDensity; + UCHAR StepRateHeadUnloadTime; + UCHAR HeadLoadTime; + UCHAR MotorOffTime; + UCHAR SectorLengthCode; + UCHAR SectorPerTrack; + UCHAR ReadWriteGapLength; + UCHAR DataTransferLength; + UCHAR FormatGapLength; + UCHAR FormatFillCharacter; + UCHAR HeadSettleTime; + UCHAR MotorSettleTime; + UCHAR MaximumTrackValue; + UCHAR DataTransferRate; +} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA; + +typedef enum _INTERFACE_TYPE { + InterfaceTypeUndefined = -1, + Internal, + Isa, + Eisa, + MicroChannel, + TurboChannel, + PCIBus, + VMEBus, + NuBus, + PCMCIABus, + CBus, + MPIBus, + MPSABus, + ProcessorInternal, + InternalPowerBus, + PNPISABus, + PNPBus, + MaximumInterfaceType +} INTERFACE_TYPE, *PINTERFACE_TYPE; + +typedef struct _PNP_BUS_INFORMATION { + GUID BusTypeGuid; + INTERFACE_TYPE LegacyBusType; + ULONG BusNumber; +} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION; + +typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { + UCHAR Type; + UCHAR ShareDisposition; + USHORT Flags; + union { + struct { + PHYSICAL_ADDRESS Start; + ULONG Length; + } Generic; + struct { + PHYSICAL_ADDRESS Start; + ULONG Length; + } Port; + struct { + ULONG Level; + ULONG Vector; + ULONG Affinity; + } Interrupt; + struct { + PHYSICAL_ADDRESS Start; + ULONG Length; + } Memory; + struct { + ULONG Channel; + ULONG Port; + ULONG Reserved1; + } Dma; + struct { + ULONG Data[3]; + } DevicePrivate; + struct { + ULONG Start; + ULONG Length; + ULONG Reserved; + } BusNumber; + struct { + ULONG DataSize; + ULONG Reserved1; + ULONG Reserved2; + } DeviceSpecificData; + } u; +} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR; + +/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */ + +#define CmResourceTypeNull 0 +#define CmResourceTypePort 1 +#define CmResourceTypeInterrupt 2 +#define CmResourceTypeMemory 3 +#define CmResourceTypeDma 4 +#define CmResourceTypeDeviceSpecific 5 +#define CmResourceTypeBusNumber 6 +#define CmResourceTypeMaximum 7 +#define CmResourceTypeNonArbitrated 128 +#define CmResourceTypeConfigData 128 +#define CmResourceTypeDevicePrivate 129 +#define CmResourceTypePcCardConfig 130 +#define CmResourceTypeMfCardConfig 131 + +/* CM_PARTIAL_RESOURCE_DESCRIPTOR.ShareDisposition */ + +typedef enum _CM_SHARE_DISPOSITION { + CmResourceShareUndetermined, + CmResourceShareDeviceExclusive, + CmResourceShareDriverExclusive, + CmResourceShareShared +} CM_SHARE_DISPOSITION; + +/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypePort */ + +#define CM_RESOURCE_PORT_MEMORY 0x0000 +#define CM_RESOURCE_PORT_IO 0x0001 +#define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004 +#define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008 +#define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010 +#define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020 +#define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040 +#define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080 + +/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeInterrupt */ + +#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000 +#define CM_RESOURCE_INTERRUPT_LATCHED 0x0001 + +/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeMemory */ + +#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000 +#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001 +#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002 +#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004 +#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008 +#define CM_RESOURCE_MEMORY_24 0x0010 +#define CM_RESOURCE_MEMORY_CACHEABLE 0x0020 + +/* CM_PARTIAL_RESOURCE_DESCRIPTOR.Flags if Type = CmResourceTypeDma */ + +#define CM_RESOURCE_DMA_8 0x0000 +#define CM_RESOURCE_DMA_16 0x0001 +#define CM_RESOURCE_DMA_32 0x0002 +#define CM_RESOURCE_DMA_8_AND_16 0x0004 +#define CM_RESOURCE_DMA_BUS_MASTER 0x0008 +#define CM_RESOURCE_DMA_TYPE_A 0x0010 +#define CM_RESOURCE_DMA_TYPE_B 0x0020 +#define CM_RESOURCE_DMA_TYPE_F 0x0040 + +typedef struct _CM_PARTIAL_RESOURCE_LIST { + USHORT Version; + USHORT Revision; + ULONG Count; + CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]; +} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST; + +typedef struct _CM_FULL_RESOURCE_DESCRIPTOR { + INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + CM_PARTIAL_RESOURCE_LIST PartialResourceList; +} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR; + +typedef struct _CM_RESOURCE_LIST { + ULONG Count; + CM_FULL_RESOURCE_DESCRIPTOR List[1]; +} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST; + +typedef struct _CM_INT13_DRIVE_PARAMETER { + USHORT DriveSelect; + ULONG MaxCylinders; + USHORT SectorsPerTrack; + USHORT MaxHeads; + USHORT NumberDrives; +} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER; + +typedef struct _CM_KEYBOARD_DEVICE_DATA { + USHORT Version; + USHORT Revision; + UCHAR Type; + UCHAR Subtype; + USHORT KeyboardFlags; +} CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA; + +#define KEYBOARD_INSERT_ON 0x80 +#define KEYBOARD_CAPS_LOCK_ON 0x40 +#define KEYBOARD_NUM_LOCK_ON 0x20 +#define KEYBOARD_SCROLL_LOCK_ON 0x10 +#define KEYBOARD_ALT_KEY_DOWN 0x08 +#define KEYBOARD_CTRL_KEY_DOWN 0x04 +#define KEYBOARD_LEFT_SHIFT_DOWN 0x02 +#define KEYBOARD_RIGHT_SHIFT_DOWN 0x01 + +typedef struct _CM_MCA_POS_DATA { + USHORT AdapterId; + UCHAR PosData1; + UCHAR PosData2; + UCHAR PosData3; + UCHAR PosData4; +} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA; + +typedef struct CM_Power_Data_s { + ULONG PD_Size; + DEVICE_POWER_STATE PD_MostRecentPowerState; + ULONG PD_Capabilities; + ULONG PD_D1Latency; + ULONG PD_D2Latency; + ULONG PD_D3Latency; + DEVICE_POWER_STATE PD_PowerStateMapping[PowerSystemMaximum]; +} CM_POWER_DATA, *PCM_POWER_DATA; + +#define PDCAP_D0_SUPPORTED 0x00000001 +#define PDCAP_D1_SUPPORTED 0x00000002 +#define PDCAP_D2_SUPPORTED 0x00000004 +#define PDCAP_D3_SUPPORTED 0x00000008 +#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 +#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 +#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 +#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 +#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 + +typedef struct _CM_SCSI_DEVICE_DATA { + USHORT Version; + USHORT Revision; + UCHAR HostIdentifier; +} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA; + +typedef struct _CM_SERIAL_DEVICE_DATA { + USHORT Version; + USHORT Revision; + ULONG BaudClock; +} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA; + +/* IO_RESOURCE_DESCRIPTOR.Option */ + +#define IO_RESOURCE_PREFERRED 0x01 +#define IO_RESOURCE_DEFAULT 0x02 +#define IO_RESOURCE_ALTERNATIVE 0x08 + +typedef struct _IO_RESOURCE_DESCRIPTOR { + UCHAR Option; + UCHAR Type; + UCHAR ShareDisposition; + UCHAR Spare1; + USHORT Flags; + USHORT Spare2; + union { + struct { + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Port; + struct { + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Memory; + struct { + ULONG MinimumVector; + ULONG MaximumVector; + } Interrupt; + struct { + ULONG MinimumChannel; + ULONG MaximumChannel; + } Dma; + struct { + ULONG Length; + ULONG Alignment; + PHYSICAL_ADDRESS MinimumAddress; + PHYSICAL_ADDRESS MaximumAddress; + } Generic; + struct { + ULONG Data[3]; + } DevicePrivate; + struct { + ULONG Length; + ULONG MinBusNumber; + ULONG MaxBusNumber; + ULONG Reserved; + } BusNumber; + struct { + ULONG Priority; + ULONG Reserved1; + ULONG Reserved2; + } ConfigData; + } u; +} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR; + +typedef struct _IO_RESOURCE_LIST { + USHORT Version; + USHORT Revision; + ULONG Count; + IO_RESOURCE_DESCRIPTOR Descriptors[1]; +} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST; + +typedef struct _IO_RESOURCE_REQUIREMENTS_LIST { + ULONG ListSize; + INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + ULONG SlotNumber; + ULONG Reserved[3]; + ULONG AlternativeLists; + IO_RESOURCE_LIST List[1]; +} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST; + +typedef struct _CONTROLLER_OBJECT { + CSHORT Type; + CSHORT Size; + PVOID ControllerExtension; + KDEVICE_QUEUE DeviceWaitQueue; + ULONG Spare1; + LARGE_INTEGER Spare2; +} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT; + +typedef enum _DMA_WIDTH { + Width8Bits, + Width16Bits, + Width32Bits, + MaximumDmaWidth +} DMA_WIDTH, *PDMA_WIDTH; + +typedef enum _DMA_SPEED { + Compatible, + TypeA, + TypeB, + TypeC, + TypeF, + MaximumDmaSpeed +} DMA_SPEED, *PDMA_SPEED; + +/* DEVICE_DESCRIPTION.Version */ + +#define DEVICE_DESCRIPTION_VERSION 0x0000 +#define DEVICE_DESCRIPTION_VERSION1 0x0001 +#define DEVICE_DESCRIPTION_VERSION2 0x0002 + +typedef struct _DEVICE_DESCRIPTION { + ULONG Version; + BOOLEAN Master; + BOOLEAN ScatterGather; + BOOLEAN DemandMode; + BOOLEAN AutoInitialize; + BOOLEAN Dma32BitAddresses; + BOOLEAN IgnoreCount; + BOOLEAN Reserved1; + BOOLEAN Dma64BitAddresses; + ULONG BusNumber; + ULONG DmaChannel; + INTERFACE_TYPE InterfaceType; + DMA_WIDTH DmaWidth; + DMA_SPEED DmaSpeed; + ULONG MaximumLength; + ULONG DmaPort; +} DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION; + +/* VPB.Flags */ +#define VPB_MOUNTED 0x0001 +#define VPB_LOCKED 0x0002 +#define VPB_PERSISTENT 0x0004 +#define VPB_REMOVE_PENDING 0x0008 +#define VPB_RAW_MOUNT 0x0010 + +#define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR)) + +typedef struct _VPB { + CSHORT Type; + CSHORT Size; + USHORT Flags; + USHORT VolumeLabelLength; + struct _DEVICE_OBJECT *DeviceObject; + struct _DEVICE_OBJECT *RealDevice; + ULONG SerialNumber; + ULONG ReferenceCount; + WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]; +} VPB, *PVPB; + +/* DEVICE_OBJECT.Flags */ + +#define DO_VERIFY_VOLUME 0x00000002 +#define DO_BUFFERED_IO 0x00000004 +#define DO_EXCLUSIVE 0x00000008 +#define DO_DIRECT_IO 0x00000010 +#define DO_MAP_IO_BUFFER 0x00000020 +#define DO_DEVICE_HAS_NAME 0x00000040 +#define DO_DEVICE_INITIALIZING 0x00000080 +#define DO_SYSTEM_BOOT_PARTITION 0x00000100 +#define DO_LONG_TERM_REQUESTS 0x00000200 +#define DO_NEVER_LAST_DEVICE 0x00000400 +#define DO_SHUTDOWN_REGISTERED 0x00000800 +#define DO_BUS_ENUMERATED_DEVICE 0x00001000 +#define DO_POWER_PAGABLE 0x00002000 +#define DO_POWER_INRUSH 0x00004000 +#define DO_LOW_PRIORITY_FILESYSTEM 0x00010000 + +/* DEVICE_OBJECT.Characteristics */ + +#define FILE_REMOVABLE_MEDIA 0x00000001 +#define FILE_READ_ONLY_DEVICE 0x00000002 +#define FILE_FLOPPY_DISKETTE 0x00000004 +#define FILE_WRITE_ONCE_MEDIA 0x00000008 +#define FILE_REMOTE_DEVICE 0x00000010 +#define FILE_DEVICE_IS_MOUNTED 0x00000020 +#define FILE_VIRTUAL_VOLUME 0x00000040 +#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080 +#define FILE_DEVICE_SECURE_OPEN 0x00000100 + +/* DEVICE_OBJECT.AlignmentRequirement */ + +#define FILE_BYTE_ALIGNMENT 0x00000000 +#define FILE_WORD_ALIGNMENT 0x00000001 +#define FILE_LONG_ALIGNMENT 0x00000003 +#define FILE_QUAD_ALIGNMENT 0x00000007 +#define FILE_OCTA_ALIGNMENT 0x0000000f +#define FILE_32_BYTE_ALIGNMENT 0x0000001f +#define FILE_64_BYTE_ALIGNMENT 0x0000003f +#define FILE_128_BYTE_ALIGNMENT 0x0000007f +#define FILE_256_BYTE_ALIGNMENT 0x000000ff +#define FILE_512_BYTE_ALIGNMENT 0x000001ff + +/* DEVICE_OBJECT.DeviceType */ + +#define DEVICE_TYPE ULONG + +#define FILE_DEVICE_BEEP 0x00000001 +#define FILE_DEVICE_CD_ROM 0x00000002 +#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 +#define FILE_DEVICE_CONTROLLER 0x00000004 +#define FILE_DEVICE_DATALINK 0x00000005 +#define FILE_DEVICE_DFS 0x00000006 +#define FILE_DEVICE_DISK 0x00000007 +#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008 +#define FILE_DEVICE_FILE_SYSTEM 0x00000009 +#define FILE_DEVICE_INPORT_PORT 0x0000000a +#define FILE_DEVICE_KEYBOARD 0x0000000b +#define FILE_DEVICE_MAILSLOT 0x0000000c +#define FILE_DEVICE_MIDI_IN 0x0000000d +#define FILE_DEVICE_MIDI_OUT 0x0000000e +#define FILE_DEVICE_MOUSE 0x0000000f +#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010 +#define FILE_DEVICE_NAMED_PIPE 0x00000011 +#define FILE_DEVICE_NETWORK 0x00000012 +#define FILE_DEVICE_NETWORK_BROWSER 0x00000013 +#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 +#define FILE_DEVICE_NULL 0x00000015 +#define FILE_DEVICE_PARALLEL_PORT 0x00000016 +#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017 +#define FILE_DEVICE_PRINTER 0x00000018 +#define FILE_DEVICE_SCANNER 0x00000019 +#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a +#define FILE_DEVICE_SERIAL_PORT 0x0000001b +#define FILE_DEVICE_SCREEN 0x0000001c +#define FILE_DEVICE_SOUND 0x0000001d +#define FILE_DEVICE_STREAMS 0x0000001e +#define FILE_DEVICE_TAPE 0x0000001f +#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020 +#define FILE_DEVICE_TRANSPORT 0x00000021 +#define FILE_DEVICE_UNKNOWN 0x00000022 +#define FILE_DEVICE_VIDEO 0x00000023 +#define FILE_DEVICE_VIRTUAL_DISK 0x00000024 +#define FILE_DEVICE_WAVE_IN 0x00000025 +#define FILE_DEVICE_WAVE_OUT 0x00000026 +#define FILE_DEVICE_8042_PORT 0x00000027 +#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 +#define FILE_DEVICE_BATTERY 0x00000029 +#define FILE_DEVICE_BUS_EXTENDER 0x0000002a +#define FILE_DEVICE_MODEM 0x0000002b +#define FILE_DEVICE_VDM 0x0000002c +#define FILE_DEVICE_MASS_STORAGE 0x0000002d +#define FILE_DEVICE_SMB 0x0000002e +#define FILE_DEVICE_KS 0x0000002f +#define FILE_DEVICE_CHANGER 0x00000030 +#define FILE_DEVICE_SMARTCARD 0x00000031 +#define FILE_DEVICE_ACPI 0x00000032 +#define FILE_DEVICE_DVD 0x00000033 +#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034 +#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035 +#define FILE_DEVICE_DFS_VOLUME 0x00000036 +#define FILE_DEVICE_SERENUM 0x00000037 +#define FILE_DEVICE_TERMSRV 0x00000038 +#define FILE_DEVICE_KSEC 0x00000039 +#define FILE_DEVICE_FIPS 0x0000003a + +typedef struct _DEVICE_OBJECT { + CSHORT Type; + USHORT Size; + LONG ReferenceCount; + struct _DRIVER_OBJECT *DriverObject; + struct _DEVICE_OBJECT *NextDevice; + struct _DEVICE_OBJECT *AttachedDevice; + struct _IRP *CurrentIrp; + PIO_TIMER Timer; + ULONG Flags; + ULONG Characteristics; + PVPB Vpb; + PVOID DeviceExtension; + DEVICE_TYPE DeviceType; + CCHAR StackSize; + union { + LIST_ENTRY ListEntry; + WAIT_CONTEXT_BLOCK Wcb; + } Queue; + ULONG AlignmentRequirement; + KDEVICE_QUEUE DeviceQueue; + KDPC Dpc; + ULONG ActiveThreadCount; + PSECURITY_DESCRIPTOR SecurityDescriptor; + KEVENT DeviceLock; + USHORT SectorSize; + USHORT Spare1; + struct _DEVOBJ_EXTENSION *DeviceObjectExtension; + PVOID Reserved; +} DEVICE_OBJECT; +typedef struct _DEVICE_OBJECT *PDEVICE_OBJECT; + +typedef enum _DEVICE_RELATION_TYPE { + BusRelations, + EjectionRelations, + PowerRelations, + RemovalRelations, + TargetDeviceRelation, + SingleBusRelations +} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE; + +typedef struct _DEVICE_RELATIONS { + ULONG Count; + PDEVICE_OBJECT Objects[1]; +} DEVICE_RELATIONS, *PDEVICE_RELATIONS; + +typedef struct _SCATTER_GATHER_ELEMENT { + PHYSICAL_ADDRESS Address; + ULONG Length; + ULONG_PTR Reserved; +} SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT; + +typedef struct _SCATTER_GATHER_LIST { + ULONG NumberOfElements; + ULONG_PTR Reserved; + SCATTER_GATHER_ELEMENT Elements[0]; +} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST; + +typedef struct _MDL { + struct _MDL *Next; + CSHORT Size; + CSHORT MdlFlags; + struct _EPROCESS *Process; + PVOID MappedSystemVa; + PVOID StartVa; + ULONG ByteCount; + ULONG ByteOffset; +} MDL, *PMDL; + +#define MDL_MAPPED_TO_SYSTEM_VA 0x0001 +#define MDL_PAGES_LOCKED 0x0002 +#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004 +#define MDL_ALLOCATED_FIXED_SIZE 0x0008 +#define MDL_PARTIAL 0x0010 +#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020 +#define MDL_IO_PAGE_READ 0x0040 +#define MDL_WRITE_OPERATION 0x0080 +#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100 +#define MDL_FREE_EXTRA_PTES 0x0200 +#define MDL_IO_SPACE 0x0800 +#define MDL_NETWORK_HEADER 0x1000 +#define MDL_MAPPING_CAN_FAIL 0x2000 +#define MDL_ALLOCATED_MUST_SUCCEED 0x4000 + +#define MDL_MAPPING_FLAGS ( \ + MDL_MAPPED_TO_SYSTEM_VA | \ + MDL_PAGES_LOCKED | \ + MDL_SOURCE_IS_NONPAGED_POOL | \ + MDL_PARTIAL_HAS_BEEN_MAPPED | \ + MDL_PARENT_MAPPED_SYSTEM_VA | \ + MDL_SYSTEM_VA | \ + MDL_IO_SPACE) + +typedef VOID DDKAPI +(*PPUT_DMA_ADAPTER)( + IN PDMA_ADAPTER DmaAdapter); + +typedef PVOID DDKAPI +(*PALLOCATE_COMMON_BUFFER)( + IN PDMA_ADAPTER DmaAdapter, + IN ULONG Length, + OUT PPHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled); + +typedef VOID DDKAPI +(*PFREE_COMMON_BUFFER)( + IN PDMA_ADAPTER DmaAdapter, + IN ULONG Length, + IN PHYSICAL_ADDRESS LogicalAddress, + IN PVOID VirtualAddress, + IN BOOLEAN CacheEnabled); + +typedef NTSTATUS DDKAPI +(*PALLOCATE_ADAPTER_CHANNEL)( + IN PDMA_ADAPTER DmaAdapter, + IN PDEVICE_OBJECT DeviceObject, + IN ULONG NumberOfMapRegisters, + IN PDRIVER_CONTROL ExecutionRoutine, + IN PVOID Context); + +typedef BOOLEAN DDKAPI +(*PFLUSH_ADAPTER_BUFFERS)( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN ULONG Length, + IN BOOLEAN WriteToDevice); + +typedef VOID DDKAPI +(*PFREE_ADAPTER_CHANNEL)( + IN PDMA_ADAPTER DmaAdapter); + +typedef VOID DDKAPI +(*PFREE_MAP_REGISTERS)( + IN PDMA_ADAPTER DmaAdapter, + PVOID MapRegisterBase, + ULONG NumberOfMapRegisters); + +typedef PHYSICAL_ADDRESS DDKAPI +(*PMAP_TRANSFER)( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN OUT PULONG Length, + IN BOOLEAN WriteToDevice); + +typedef ULONG DDKAPI +(*PGET_DMA_ALIGNMENT)( + IN PDMA_ADAPTER DmaAdapter); + +typedef ULONG DDKAPI +(*PREAD_DMA_COUNTER)( + IN PDMA_ADAPTER DmaAdapter); + +typedef NTSTATUS DDKAPI +(*PGET_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PDEVICE_OBJECT DeviceObject, + IN PMDL Mdl, + IN PVOID CurrentVa, + IN ULONG Length, + IN PDRIVER_LIST_CONTROL ExecutionRoutine, + IN PVOID Context, + IN BOOLEAN WriteToDevice); + +typedef VOID DDKAPI +(*PPUT_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PSCATTER_GATHER_LIST ScatterGather, + IN BOOLEAN WriteToDevice); + +typedef NTSTATUS DDKAPI +(*PCALCULATE_SCATTER_GATHER_LIST_SIZE)( + IN PDMA_ADAPTER DmaAdapter, + IN PMDL Mdl OPTIONAL, + IN PVOID CurrentVa, + IN ULONG Length, + OUT PULONG ScatterGatherListSize, + OUT PULONG pNumberOfMapRegisters OPTIONAL); + +typedef NTSTATUS DDKAPI +(*PBUILD_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PDEVICE_OBJECT DeviceObject, + IN PMDL Mdl, + IN PVOID CurrentVa, + IN ULONG Length, + IN PDRIVER_LIST_CONTROL ExecutionRoutine, + IN PVOID Context, + IN BOOLEAN WriteToDevice, + IN PVOID ScatterGatherBuffer, + IN ULONG ScatterGatherLength); + +typedef NTSTATUS DDKAPI +(*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( + IN PDMA_ADAPTER DmaAdapter, + IN PSCATTER_GATHER_LIST ScatterGather, + IN PMDL OriginalMdl, + OUT PMDL *TargetMdl); + +typedef struct _DMA_OPERATIONS { + ULONG Size; + PPUT_DMA_ADAPTER PutDmaAdapter; + PALLOCATE_COMMON_BUFFER AllocateCommonBuffer; + PFREE_COMMON_BUFFER FreeCommonBuffer; + PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; + PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; + PFREE_ADAPTER_CHANNEL FreeAdapterChannel; + PFREE_MAP_REGISTERS FreeMapRegisters; + PMAP_TRANSFER MapTransfer; + PGET_DMA_ALIGNMENT GetDmaAlignment; + PREAD_DMA_COUNTER ReadDmaCounter; + PGET_SCATTER_GATHER_LIST GetScatterGatherList; + PPUT_SCATTER_GATHER_LIST PutScatterGatherList; + PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList; + PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList; + PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList; +} DMA_OPERATIONS, *PDMA_OPERATIONS; + +typedef struct _DMA_ADAPTER { + USHORT Version; + USHORT Size; + PDMA_OPERATIONS DmaOperations; +} DMA_ADAPTER; + +typedef enum _FILE_INFORMATION_CLASS { + FileDirectoryInformation = 1, + FileFullDirectoryInformation, + FileBothDirectoryInformation, + FileBasicInformation, + FileStandardInformation, + FileInternalInformation, + FileEaInformation, + FileAccessInformation, + FileNameInformation, + FileRenameInformation, + FileLinkInformation, + FileNamesInformation, + FileDispositionInformation, + FilePositionInformation, + FileFullEaInformation, + FileModeInformation, + FileAlignmentInformation, + FileAllInformation, + FileAllocationInformation, + FileEndOfFileInformation, + FileAlternateNameInformation, + FileStreamInformation, + FilePipeInformation, + FilePipeLocalInformation, + FilePipeRemoteInformation, + FileMailslotQueryInformation, + FileMailslotSetInformation, + FileCompressionInformation, + FileObjectIdInformation, + FileCompletionInformation, + FileMoveClusterInformation, + FileQuotaInformation, + FileReparsePointInformation, + FileNetworkOpenInformation, + FileAttributeTagInformation, + FileTrackingInformation, + FileIdBothDirectoryInformation, + FileIdFullDirectoryInformation, + FileValidDataLengthInformation, + FileShortNameInformation, + FileMaximumInformation +} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; + +typedef struct _FILE_POSITION_INFORMATION { + LARGE_INTEGER CurrentByteOffset; +} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; + +typedef struct _FILE_ALIGNMENT_INFORMATION { + ULONG AlignmentRequirement; +} FILE_ALIGNMENT_INFORMATION; + +typedef struct _FILE_NAME_INFORMATION { + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; + +typedef struct FILE_BASIC_INFORMATION { + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + ULONG FileAttributes; +} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; + +typedef struct _FILE_STANDARD_INFORMATION { + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG NumberOfLinks; + BOOLEAN DeletePending; + BOOLEAN Directory; +} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; + +typedef struct _FILE_NETWORK_OPEN_INFORMATION { + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG FileAttributes; +} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; + +typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION { + ULONG FileAttributes; + ULONG ReparseTag; +} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION; + +typedef struct _FILE_DISPOSITION_INFORMATION { + BOOLEAN DoDeleteFile; +} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; + +typedef struct _FILE_END_OF_FILE_INFORMATION { + LARGE_INTEGER EndOfFile; +} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; + +typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION { + LARGE_INTEGER ValidDataLength; +} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; + +typedef enum _FSINFOCLASS { + FileFsVolumeInformation = 1, + FileFsLabelInformation, + FileFsSizeInformation, + FileFsDeviceInformation, + FileFsAttributeInformation, + FileFsControlInformation, + FileFsFullSizeInformation, + FileFsObjectIdInformation, + FileFsDriverPathInformation, + FileFsMaximumInformation +} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; + +typedef struct _FILE_FS_DEVICE_INFORMATION { + DEVICE_TYPE DeviceType; + ULONG Characteristics; +} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; + +typedef struct _FILE_FULL_EA_INFORMATION { + ULONG NextEntryOffset; + UCHAR Flags; + UCHAR EaNameLength; + USHORT EaValueLength; + CHAR EaName[1]; +} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; + +typedef ULONG_PTR ERESOURCE_THREAD; +typedef ERESOURCE_THREAD *PERESOURCE_THREAD; + +typedef struct _OWNER_ENTRY { + ERESOURCE_THREAD OwnerThread; + _ANONYMOUS_UNION union { + LONG OwnerCount; + ULONG TableSize; + } DUMMYUNIONNAME; +} OWNER_ENTRY, *POWNER_ENTRY; + +/* ERESOURCE.Flag */ + +#define ResourceNeverExclusive 0x0010 +#define ResourceReleaseByOtherThread 0x0020 +#define ResourceOwnedExclusive 0x0080 + +#define RESOURCE_HASH_TABLE_SIZE 64 + +typedef struct _ERESOURCE { + LIST_ENTRY SystemResourcesList; + POWNER_ENTRY OwnerTable; + SHORT ActiveCount; + USHORT Flag; + PKSEMAPHORE SharedWaiters; + PKEVENT ExclusiveWaiters; + OWNER_ENTRY OwnerThreads[2]; + ULONG ContentionCount; + USHORT NumberOfSharedWaiters; + USHORT NumberOfExclusiveWaiters; + _ANONYMOUS_UNION union { + PVOID Address; + ULONG_PTR CreatorBackTraceIndex; + } DUMMYUNIONNAME; + KSPIN_LOCK SpinLock; +} ERESOURCE, *PERESOURCE; + +/* NOTE: PVOID for methods to avoid 'assignment from incompatible pointer type' warning */ +typedef struct _DRIVER_EXTENSION { + struct _DRIVER_OBJECT *DriverObject; + PVOID AddDevice; + ULONG Count; + UNICODE_STRING ServiceKeyName; +} DRIVER_EXTENSION, *PDRIVER_EXTENSION; + +typedef BOOLEAN DDKAPI +(*PFAST_IO_CHECK_IF_POSSIBLE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + IN BOOLEAN CheckForReadOperation, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_READ)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + OUT PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN BOOLEAN Wait, + IN ULONG LockKey, + IN PVOID Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_QUERY_BASIC_INFO)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + OUT PFILE_BASIC_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_QUERY_STANDARD_INFO)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + OUT PFILE_STANDARD_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_LOCK)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + PEPROCESS ProcessId, + ULONG Key, + BOOLEAN FailImmediately, + BOOLEAN ExclusiveLock, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_UNLOCK_SINGLE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + PEPROCESS ProcessId, + ULONG Key, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_UNLOCK_ALL)( + IN struct _FILE_OBJECT *FileObject, + PEPROCESS ProcessId, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_UNLOCK_ALL_BY_KEY)( + IN struct _FILE_OBJECT *FileObject, + PVOID ProcessId, + ULONG Key, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_DEVICE_CONTROL)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength, + IN ULONG IoControlCode, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef VOID DDKAPI +(*PFAST_IO_ACQUIRE_FILE)( + IN struct _FILE_OBJECT *FileObject); + +typedef VOID DDKAPI +(*PFAST_IO_RELEASE_FILE)( + IN struct _FILE_OBJECT *FileObject); + +typedef VOID DDKAPI +(*PFAST_IO_DETACH_DEVICE)( + IN struct _DEVICE_OBJECT *SourceDevice, + IN struct _DEVICE_OBJECT *TargetDevice); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_QUERY_NETWORK_OPEN_INFO)( + IN struct _FILE_OBJECT *FileObject, + IN BOOLEAN Wait, + OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer, + OUT struct _IO_STATUS_BLOCK *IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef NTSTATUS DDKAPI +(*PFAST_IO_ACQUIRE_FOR_MOD_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER EndingOffset, + OUT struct _ERESOURCE **ResourceToRelease, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_MDL_READ)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_MDL_READ_COMPLETE)( + IN struct _FILE_OBJECT *FileObject, + IN PMDL MdlChain, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_PREPARE_MDL_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_MDL_WRITE_COMPLETE)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_READ_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + OUT PVOID Buffer, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + OUT struct _COMPRESSED_DATA_INFO *CompressedDataInfo, + IN ULONG CompressedDataInfoLength, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_WRITE_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN ULONG Length, + IN ULONG LockKey, + IN PVOID Buffer, + OUT PMDL *MdlChain, + OUT PIO_STATUS_BLOCK IoStatus, + IN struct _COMPRESSED_DATA_INFO *CompressedDataInfo, + IN ULONG CompressedDataInfoLength, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PMDL MdlChain, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)( + IN struct _FILE_OBJECT *FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef BOOLEAN DDKAPI +(*PFAST_IO_QUERY_OPEN)( + IN struct _IRP *Irp, + OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef NTSTATUS DDKAPI +(*PFAST_IO_RELEASE_FOR_MOD_WRITE)( + IN struct _FILE_OBJECT *FileObject, + IN struct _ERESOURCE *ResourceToRelease, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef NTSTATUS DDKAPI +(*PFAST_IO_ACQUIRE_FOR_CCFLUSH)( + IN struct _FILE_OBJECT *FileObject, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef NTSTATUS DDKAPI +(*PFAST_IO_RELEASE_FOR_CCFLUSH) ( + IN struct _FILE_OBJECT *FileObject, + IN struct _DEVICE_OBJECT *DeviceObject); + +typedef struct _FAST_IO_DISPATCH { + ULONG SizeOfFastIoDispatch; + PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible; + PFAST_IO_READ FastIoRead; + PFAST_IO_WRITE FastIoWrite; + PFAST_IO_QUERY_BASIC_INFO FastIoQueryBasicInfo; + PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo; + PFAST_IO_LOCK FastIoLock; + PFAST_IO_UNLOCK_SINGLE FastIoUnlockSingle; + PFAST_IO_UNLOCK_ALL FastIoUnlockAll; + PFAST_IO_UNLOCK_ALL_BY_KEY FastIoUnlockAllByKey; + PFAST_IO_DEVICE_CONTROL FastIoDeviceControl; + PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection; + PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection; + PFAST_IO_DETACH_DEVICE FastIoDetachDevice; + PFAST_IO_QUERY_NETWORK_OPEN_INFO FastIoQueryNetworkOpenInfo; + PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite; + PFAST_IO_MDL_READ MdlRead; + PFAST_IO_MDL_READ_COMPLETE MdlReadComplete; + PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite; + PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete; + PFAST_IO_READ_COMPRESSED FastIoReadCompressed; + PFAST_IO_WRITE_COMPRESSED FastIoWriteCompressed; + PFAST_IO_MDL_READ_COMPLETE_COMPRESSED MdlReadCompleteCompressed; + PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED MdlWriteCompleteCompressed; + PFAST_IO_QUERY_OPEN FastIoQueryOpen; + PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite; + PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush; + PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush; +} FAST_IO_DISPATCH, *PFAST_IO_DISPATCH; + +/* NOTE: PVOID for methods to avoid 'assignment from incompatible pointer type' warning */ +typedef struct _DRIVER_OBJECT { + CSHORT Type; + CSHORT Size; + PDEVICE_OBJECT DeviceObject; + ULONG Flags; + PVOID DriverStart; + ULONG DriverSize; + PVOID DriverSection; + PDRIVER_EXTENSION DriverExtension; + UNICODE_STRING DriverName; + PUNICODE_STRING HardwareDatabase; + PVOID FastIoDispatch; + PVOID DriverInit; + PVOID DriverStartIo; + PVOID DriverUnload; + PVOID MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; +} DRIVER_OBJECT; +typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT; + +typedef struct _SECTION_OBJECT_POINTERS { + PVOID DataSectionObject; + PVOID SharedCacheMap; + PVOID ImageSectionObject; +} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS; + +typedef struct _IO_COMPLETION_CONTEXT { + PVOID Port; + PVOID Key; +} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT; + +/* FILE_OBJECT.Flags */ + +#define FO_FILE_OPEN 0x00000001 +#define FO_SYNCHRONOUS_IO 0x00000002 +#define FO_ALERTABLE_IO 0x00000004 +#define FO_NO_INTERMEDIATE_BUFFERING 0x00000008 +#define FO_WRITE_THROUGH 0x00000010 +#define FO_SEQUENTIAL_ONLY 0x00000020 +#define FO_CACHE_SUPPORTED 0x00000040 +#define FO_NAMED_PIPE 0x00000080 +#define FO_STREAM_FILE 0x00000100 +#define FO_MAILSLOT 0x00000200 +#define FO_GENERATE_AUDIT_ON_CLOSE 0x00000400 +#define FO_DIRECT_DEVICE_OPEN 0x00000800 +#define FO_FILE_MODIFIED 0x00001000 +#define FO_FILE_SIZE_CHANGED 0x00002000 +#define FO_CLEANUP_COMPLETE 0x00004000 +#define FO_TEMPORARY_FILE 0x00008000 +#define FO_DELETE_ON_CLOSE 0x00010000 +#define FO_OPENED_CASE_SENSITIVE 0x00020000 +#define FO_HANDLE_CREATED 0x00040000 +#define FO_FILE_FAST_IO_READ 0x00080000 +#define FO_RANDOM_ACCESS 0x00100000 +#define FO_FILE_OPEN_CANCELLED 0x00200000 +#define FO_VOLUME_OPEN 0x00400000 +#define FO_FILE_OBJECT_HAS_EXTENSION 0x00800000 +#define FO_REMOTE_ORIGIN 0x01000000 + +typedef struct _FILE_OBJECT { + CSHORT Type; + CSHORT Size; + PDEVICE_OBJECT DeviceObject; + PVPB Vpb; + PVOID FsContext; + PVOID FsContext2; + PSECTION_OBJECT_POINTERS SectionObjectPointer; + PVOID PrivateCacheMap; + NTSTATUS FinalStatus; + struct _FILE_OBJECT *RelatedFileObject; + BOOLEAN LockOperation; + BOOLEAN DeletePending; + BOOLEAN ReadAccess; + BOOLEAN WriteAccess; + BOOLEAN DeleteAccess; + BOOLEAN SharedRead; + BOOLEAN SharedWrite; + BOOLEAN SharedDelete; + ULONG Flags; + UNICODE_STRING FileName; + LARGE_INTEGER CurrentByteOffset; + ULONG Waiters; + ULONG Busy; + PVOID LastLock; + KEVENT Lock; + KEVENT Event; + PIO_COMPLETION_CONTEXT CompletionContext; +} FILE_OBJECT; +typedef struct _FILE_OBJECT *PFILE_OBJECT; + +typedef enum _SECURITY_OPERATION_CODE { + SetSecurityDescriptor, + QuerySecurityDescriptor, + DeleteSecurityDescriptor, + AssignSecurityDescriptor +} SECURITY_OPERATION_CODE, *PSECURITY_OPERATION_CODE; + +#define INITIAL_PRIVILEGE_COUNT 3 + +typedef struct _INITIAL_PRIVILEGE_SET { + ULONG PrivilegeCount; + ULONG Control; + LUID_AND_ATTRIBUTES Privilege[INITIAL_PRIVILEGE_COUNT]; +} INITIAL_PRIVILEGE_SET, * PINITIAL_PRIVILEGE_SET; + +typedef struct _SECURITY_SUBJECT_CONTEXT { + PACCESS_TOKEN ClientToken; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + PACCESS_TOKEN PrimaryToken; + PVOID ProcessAuditId; +} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT; + +typedef struct _ACCESS_STATE { + LUID OperationID; + BOOLEAN SecurityEvaluated; + BOOLEAN GenerateAudit; + BOOLEAN GenerateOnClose; + BOOLEAN PrivilegesAllocated; + ULONG Flags; + ACCESS_MASK RemainingDesiredAccess; + ACCESS_MASK PreviouslyGrantedAccess; + ACCESS_MASK OriginalDesiredAccess; + SECURITY_SUBJECT_CONTEXT SubjectSecurityContext; + PSECURITY_DESCRIPTOR SecurityDescriptor; + PVOID AuxData; + union { + INITIAL_PRIVILEGE_SET InitialPrivilegeSet; + PRIVILEGE_SET PrivilegeSet; + } Privileges; + + BOOLEAN AuditPrivileges; + UNICODE_STRING ObjectName; + UNICODE_STRING ObjectTypeName; +} ACCESS_STATE, *PACCESS_STATE; + +typedef struct _IO_SECURITY_CONTEXT { + PSECURITY_QUALITY_OF_SERVICE SecurityQos; + PACCESS_STATE AccessState; + ACCESS_MASK DesiredAccess; + ULONG FullCreateOptions; +} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT; + +struct _IO_CSQ; + +typedef struct _IO_CSQ_IRP_CONTEXT { + ULONG Type; + struct _IRP *Irp; + struct _IO_CSQ *Csq; +} IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT; + +typedef VOID DDKAPI +(*PIO_CSQ_INSERT_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp); + +typedef VOID DDKAPI +(*PIO_CSQ_REMOVE_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp); + +typedef PIRP DDKAPI +(*PIO_CSQ_PEEK_NEXT_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp, + IN PVOID PeekContext); + +typedef VOID DDKAPI +(*PIO_CSQ_ACQUIRE_LOCK)( + IN struct _IO_CSQ *Csq, + OUT PKIRQL Irql); + +typedef VOID DDKAPI +(*PIO_CSQ_RELEASE_LOCK)( + IN struct _IO_CSQ *Csq, + IN KIRQL Irql); + +typedef VOID DDKAPI +(*PIO_CSQ_COMPLETE_CANCELED_IRP)( + IN struct _IO_CSQ *Csq, + IN PIRP Irp); + +typedef struct _IO_CSQ { + ULONG Type; + PIO_CSQ_INSERT_IRP CsqInsertIrp; + PIO_CSQ_REMOVE_IRP CsqRemoveIrp; + PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp; + PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock; + PIO_CSQ_RELEASE_LOCK CsqReleaseLock; + PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp; + PVOID ReservePointer; +} IO_CSQ, *PIO_CSQ; + +typedef struct _IO_STACK_LOCATION { + UCHAR MajorFunction; + UCHAR MinorFunction; + UCHAR Flags; + UCHAR Control; + union { + struct { + PIO_SECURITY_CONTEXT SecurityContext; + ULONG Options; + USHORT POINTER_ALIGNMENT FileAttributes; + USHORT ShareAccess; + ULONG POINTER_ALIGNMENT EaLength; + } Create; + struct { + ULONG Length; + ULONG POINTER_ALIGNMENT Key; + LARGE_INTEGER ByteOffset; + } Read; + struct { + ULONG Length; + ULONG POINTER_ALIGNMENT Key; + LARGE_INTEGER ByteOffset; + } Write; + struct { + ULONG Length; + FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; + } QueryFile; + struct { + ULONG Length; + FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass; + PFILE_OBJECT FileObject; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + BOOLEAN ReplaceIfExists; + BOOLEAN AdvanceOnly; + } DUMMYSTRUCTNAME; + ULONG ClusterCount; + HANDLE DeleteHandle; + } DUMMYUNIONNAME; + } SetFile; + struct { + ULONG Length; + FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass; + } QueryVolume; + struct { + ULONG OutputBufferLength; + ULONG POINTER_ALIGNMENT InputBufferLength; + ULONG POINTER_ALIGNMENT IoControlCode; + PVOID Type3InputBuffer; + } DeviceIoControl; + struct { + SECURITY_INFORMATION SecurityInformation; + ULONG POINTER_ALIGNMENT Length; + } QuerySecurity; + struct { + SECURITY_INFORMATION SecurityInformation; + PSECURITY_DESCRIPTOR SecurityDescriptor; + } SetSecurity; + struct { + PVPB Vpb; + PDEVICE_OBJECT DeviceObject; + } MountVolume; + struct { + PVPB Vpb; + PDEVICE_OBJECT DeviceObject; + } VerifyVolume; + struct { + struct _SCSI_REQUEST_BLOCK *Srb; + } Scsi; + struct { + DEVICE_RELATION_TYPE Type; + } QueryDeviceRelations; + struct { + CONST GUID *InterfaceType; + USHORT Size; + USHORT Version; + PINTERFACE Interface; + PVOID InterfaceSpecificData; + } QueryInterface; + struct { + PDEVICE_CAPABILITIES Capabilities; + } DeviceCapabilities; + struct { + PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList; + } FilterResourceRequirements; + struct { + ULONG WhichSpace; + PVOID Buffer; + ULONG Offset; + ULONG POINTER_ALIGNMENT Length; + } ReadWriteConfig; + struct { + BOOLEAN Lock; + } SetLock; + struct { + BUS_QUERY_ID_TYPE IdType; + } QueryId; + struct { + DEVICE_TEXT_TYPE DeviceTextType; + LCID POINTER_ALIGNMENT LocaleId; + } QueryDeviceText; + struct { + BOOLEAN InPath; + BOOLEAN Reserved[3]; + DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type; + } UsageNotification; + struct { + SYSTEM_POWER_STATE PowerState; + } WaitWake; + struct { + PPOWER_SEQUENCE PowerSequence; + } PowerSequence; + struct { + ULONG SystemContext; + POWER_STATE_TYPE POINTER_ALIGNMENT Type; + POWER_STATE POINTER_ALIGNMENT State; + POWER_ACTION POINTER_ALIGNMENT ShutdownType; + } Power; + struct { + PCM_RESOURCE_LIST AllocatedResources; + PCM_RESOURCE_LIST AllocatedResourcesTranslated; + } StartDevice; + struct { + ULONG_PTR ProviderId; + PVOID DataPath; + ULONG BufferSize; + PVOID Buffer; + } WMI; + struct { + PVOID Argument1; + PVOID Argument2; + PVOID Argument3; + PVOID Argument4; + } Others; + } Parameters; + PDEVICE_OBJECT DeviceObject; + PFILE_OBJECT FileObject; + PIO_COMPLETION_ROUTINE CompletionRoutine; + PVOID Context; +} IO_STACK_LOCATION, *PIO_STACK_LOCATION; + +/* IO_STACK_LOCATION.Control */ + +#define SL_PENDING_RETURNED 0x01 +#define SL_INVOKE_ON_CANCEL 0x20 +#define SL_INVOKE_ON_SUCCESS 0x40 +#define SL_INVOKE_ON_ERROR 0x80 + +typedef enum _KEY_INFORMATION_CLASS { + KeyBasicInformation, + KeyNodeInformation, + KeyFullInformation, + KeyNameInformation, + KeyCachedInformation, + KeyFlagsInformation +} KEY_INFORMATION_CLASS; + +typedef struct _KEY_BASIC_INFORMATION { + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG NameLength; + WCHAR Name[1]; +} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; + +typedef struct _KEY_FULL_INFORMATION { + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG SubKeys; + ULONG MaxNameLen; + ULONG MaxClassLen; + ULONG Values; + ULONG MaxValueNameLen; + ULONG MaxValueDataLen; + WCHAR Class[1]; +} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; + +typedef struct _KEY_NODE_INFORMATION { + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG ClassOffset; + ULONG ClassLength; + ULONG NameLength; + WCHAR Name[1]; +} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION; + +typedef struct _KEY_VALUE_BASIC_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG NameLength; + WCHAR Name[1]; +} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; + +typedef struct _KEY_VALUE_FULL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataOffset; + ULONG DataLength; + ULONG NameLength; + WCHAR Name[1]; +} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; +} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 { + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; +} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64; + +typedef struct _KEY_VALUE_ENTRY { + PUNICODE_STRING ValueName; + ULONG DataLength; + ULONG DataOffset; + ULONG Type; +} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; + +typedef enum _KEY_VALUE_INFORMATION_CLASS { + KeyValueBasicInformation, + KeyValueFullInformation, + KeyValuePartialInformation, + KeyValueFullInformationAlign64, + KeyValuePartialInformationAlign64 +} KEY_VALUE_INFORMATION_CLASS; + +/* KEY_VALUE_Xxx.Type */ + +#define REG_NONE 0 +#define REG_SZ 1 +#define REG_EXPAND_SZ 2 +#define REG_BINARY 3 +#define REG_DWORD 4 +#define REG_DWORD_LITTLE_ENDIAN 4 +#define REG_DWORD_BIG_ENDIAN 5 +#define REG_LINK 6 +#define REG_MULTI_SZ 7 +#define REG_RESOURCE_LIST 8 +#define REG_FULL_RESOURCE_DESCRIPTOR 9 +#define REG_RESOURCE_REQUIREMENTS_LIST 10 +#define REG_QWORD 11 +#define REG_QWORD_LITTLE_ENDIAN 11 + +#define PCI_TYPE0_ADDRESSES 6 +#define PCI_TYPE1_ADDRESSES 2 +#define PCI_TYPE2_ADDRESSES 5 + +typedef struct _PCI_COMMON_CONFIG { + USHORT VendorID; + USHORT DeviceID; + USHORT Command; + USHORT Status; + UCHAR RevisionID; + UCHAR ProgIf; + UCHAR SubClass; + UCHAR BaseClass; + UCHAR CacheLineSize; + UCHAR LatencyTimer; + UCHAR HeaderType; + UCHAR BIST; + union { + struct _PCI_HEADER_TYPE_0 { + ULONG BaseAddresses[PCI_TYPE0_ADDRESSES]; + ULONG CIS; + USHORT SubVendorID; + USHORT SubSystemID; + ULONG ROMBaseAddress; + UCHAR CapabilitiesPtr; + UCHAR Reserved1[3]; + ULONG Reserved2; + UCHAR InterruptLine; + UCHAR InterruptPin; + UCHAR MinimumGrant; + UCHAR MaximumLatency; + } type0; + struct _PCI_HEADER_TYPE_1 { + ULONG BaseAddresses[PCI_TYPE1_ADDRESSES]; + UCHAR PrimaryBus; + UCHAR SecondaryBus; + UCHAR SubordinateBus; + UCHAR SecondaryLatency; + UCHAR IOBase; + UCHAR IOLimit; + USHORT SecondaryStatus; + USHORT MemoryBase; + USHORT MemoryLimit; + USHORT PrefetchBase; + USHORT PrefetchLimit; + ULONG PrefetchBaseUpper32; + ULONG PrefetchLimitUpper32; + USHORT IOBaseUpper16; + USHORT IOLimitUpper16; + UCHAR CapabilitiesPtr; + UCHAR Reserved1[3]; + ULONG ROMBaseAddress; + UCHAR InterruptLine; + UCHAR InterruptPin; + USHORT BridgeControl; + } type1; + struct _PCI_HEADER_TYPE_2 { + ULONG SocketRegistersBaseAddress; + UCHAR CapabilitiesPtr; + UCHAR Reserved; + USHORT SecondaryStatus; + UCHAR PrimaryBus; + UCHAR SecondaryBus; + UCHAR SubordinateBus; + UCHAR SecondaryLatency; + struct { + ULONG Base; + ULONG Limit; + } Range[PCI_TYPE2_ADDRESSES - 1]; + UCHAR InterruptLine; + UCHAR InterruptPin; + USHORT BridgeControl; + } type2; + } u; + UCHAR DeviceSpecific[192]; +} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG; + +/* PCI_COMMON_CONFIG.Command */ + +#define PCI_ENABLE_IO_SPACE 0x0001 +#define PCI_ENABLE_MEMORY_SPACE 0x0002 +#define PCI_ENABLE_BUS_MASTER 0x0004 +#define PCI_ENABLE_SPECIAL_CYCLES 0x0008 +#define PCI_ENABLE_WRITE_AND_INVALIDATE 0x0010 +#define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020 +#define PCI_ENABLE_PARITY 0x0040 +#define PCI_ENABLE_WAIT_CYCLE 0x0080 +#define PCI_ENABLE_SERR 0x0100 +#define PCI_ENABLE_FAST_BACK_TO_BACK 0x0200 + +/* PCI_COMMON_CONFIG.Status */ + +#define PCI_STATUS_CAPABILITIES_LIST 0x0010 +#define PCI_STATUS_66MHZ_CAPABLE 0x0020 +#define PCI_STATUS_UDF_SUPPORTED 0x0040 +#define PCI_STATUS_FAST_BACK_TO_BACK 0x0080 +#define PCI_STATUS_DATA_PARITY_DETECTED 0x0100 +#define PCI_STATUS_DEVSEL 0x0600 +#define PCI_STATUS_SIGNALED_TARGET_ABORT 0x0800 +#define PCI_STATUS_RECEIVED_TARGET_ABORT 0x1000 +#define PCI_STATUS_RECEIVED_MASTER_ABORT 0x2000 +#define PCI_STATUS_SIGNALED_SYSTEM_ERROR 0x4000 +#define PCI_STATUS_DETECTED_PARITY_ERROR 0x8000 + +/* PCI_COMMON_CONFIG.HeaderType */ + +#define PCI_MULTIFUNCTION 0x80 +#define PCI_DEVICE_TYPE 0x00 +#define PCI_BRIDGE_TYPE 0x01 +#define PCI_CARDBUS_BRIDGE_TYPE 0x02 + +#define PCI_CONFIGURATION_TYPE(PciData) \ + (((PPCI_COMMON_CONFIG) (PciData))->HeaderType & ~PCI_MULTIFUNCTION) + +#define PCI_MULTIFUNCTION_DEVICE(PciData) \ + ((((PPCI_COMMON_CONFIG) (PciData))->HeaderType & PCI_MULTIFUNCTION) != 0) + +typedef struct _PCI_SLOT_NUMBER { + union { + struct { + ULONG DeviceNumber : 5; + ULONG FunctionNumber : 3; + ULONG Reserved : 24; + } bits; + ULONG AsULONG; + } u; +} PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER; + +typedef enum _POOL_TYPE { + NonPagedPool, + PagedPool, + NonPagedPoolMustSucceed, + DontUseThisType, + NonPagedPoolCacheAligned, + PagedPoolCacheAligned, + NonPagedPoolCacheAlignedMustS, + MaxPoolType, + NonPagedPoolSession = 32, + PagedPoolSession, + NonPagedPoolMustSucceedSession, + DontUseThisTypeSession, + NonPagedPoolCacheAlignedSession, + PagedPoolCacheAlignedSession, + NonPagedPoolCacheAlignedMustSSession +} POOL_TYPE; + +typedef enum _EX_POOL_PRIORITY { + LowPoolPriority, + LowPoolPrioritySpecialPoolOverrun = 8, + LowPoolPrioritySpecialPoolUnderrun = 9, + NormalPoolPriority = 16, + NormalPoolPrioritySpecialPoolOverrun = 24, + NormalPoolPrioritySpecialPoolUnderrun = 25, + HighPoolPriority = 32, + HighPoolPrioritySpecialPoolOverrun = 40, + HighPoolPrioritySpecialPoolUnderrun = 41 +} EX_POOL_PRIORITY; + +/* PRIVILEGE_SET.Control */ + +#define PRIVILEGE_SET_ALL_NECESSARY 1 + +typedef struct _RTL_OSVERSIONINFOW { + ULONG dwOSVersionInfoSize; + ULONG dwMajorVersion; + ULONG dwMinorVersion; + ULONG dwBuildNumber; + ULONG dwPlatformId; + WCHAR szCSDVersion[128]; +} RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW; + +typedef struct _RTL_OSVERSIONINFOEXW { + ULONG dwOSVersionInfoSize; + ULONG dwMajorVersion; + ULONG dwMinorVersion; + ULONG dwBuildNumber; + ULONG dwPlatformId; + WCHAR szCSDVersion[128]; + USHORT wServicePackMajor; + USHORT wServicePackMinor; + USHORT wSuiteMask; + UCHAR wProductType; + UCHAR wReserved; +} RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW; + +NTOSAPI +ULONGLONG +DDKAPI +VerSetConditionMask( + IN ULONGLONG ConditionMask, + IN ULONG TypeMask, + IN UCHAR Condition); + +#define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \ + ((ConditionMask) = VerSetConditionMask((ConditionMask), \ + (TypeBitMask), (ComparisonType))) + +/* RtlVerifyVersionInfo() TypeMask */ + +#define VER_MINORVERSION 0x0000001 +#define VER_MAJORVERSION 0x0000002 +#define VER_BUILDNUMBER 0x0000004 +#define VER_PLATFORMID 0x0000008 +#define VER_SERVICEPACKMINOR 0x0000010 +#define VER_SERVICEPACKMAJOR 0x0000020 +#define VER_SUITENAME 0x0000040 +#define VER_PRODUCT_TYPE 0x0000080 + +/* RtlVerifyVersionInfo() ComparisonType */ + +#define VER_EQUAL 1 +#define VER_GREATER 2 +#define VER_GREATER_EQUAL 3 +#define VER_LESS 4 +#define VER_LESS_EQUAL 5 +#define VER_AND 6 +#define VER_OR 7 + +#define VER_CONDITION_MASK 7 +#define VER_NUM_BITS_PER_CONDITION_MASK 3 + +typedef struct _RTL_BITMAP { + ULONG SizeOfBitMap; + PULONG Buffer; +} RTL_BITMAP, *PRTL_BITMAP; + +typedef struct _RTL_BITMAP_RUN { + ULONG StartingIndex; + ULONG NumberOfBits; +} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN; + +typedef NTSTATUS DDKAPI +(*PRTL_QUERY_REGISTRY_ROUTINE)( + IN PWSTR ValueName, + IN ULONG ValueType, + IN PVOID ValueData, + IN ULONG ValueLength, + IN PVOID Context, + IN PVOID EntryContext); + +#define RTL_REGISTRY_ABSOLUTE 0 +#define RTL_REGISTRY_SERVICES 1 +#define RTL_REGISTRY_CONTROL 2 +#define RTL_REGISTRY_WINDOWS_NT 3 +#define RTL_REGISTRY_DEVICEMAP 4 +#define RTL_REGISTRY_USER 5 + +/* RTL_QUERY_REGISTRY_TABLE.Flags */ +#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001 +#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002 +#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004 +#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008 +#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 +#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 +#define RTL_QUERY_REGISTRY_DELETE 0x00000040 + +typedef struct _RTL_QUERY_REGISTRY_TABLE { + PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; + ULONG Flags; + PWSTR Name; + PVOID EntryContext; + ULONG DefaultType; + PVOID DefaultData; + ULONG DefaultLength; +} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE; + +typedef struct _TIME_FIELDS { + CSHORT Year; + CSHORT Month; + CSHORT Day; + CSHORT Hour; + CSHORT Minute; + CSHORT Second; + CSHORT Milliseconds; + CSHORT Weekday; +} TIME_FIELDS, *PTIME_FIELDS; + +typedef PVOID DDKAPI +(*PALLOCATE_FUNCTION)( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); + +typedef VOID DDKAPI +(*PFREE_FUNCTION)( + IN PVOID Buffer); + +#define GENERAL_LOOKASIDE_S \ + SLIST_HEADER ListHead; \ + USHORT Depth; \ + USHORT MaximumDepth; \ + ULONG TotalAllocates; \ + _ANONYMOUS_UNION union { \ + ULONG AllocateMisses; \ + ULONG AllocateHits; \ + } DUMMYUNIONNAME; \ + ULONG TotalFrees; \ + _ANONYMOUS_UNION union { \ + ULONG FreeMisses; \ + ULONG FreeHits; \ + } DUMMYUNIONNAME2; \ + POOL_TYPE Type; \ + ULONG Tag; \ + ULONG Size; \ + PALLOCATE_FUNCTION Allocate; \ + PFREE_FUNCTION Free; \ + LIST_ENTRY ListEntry; \ + ULONG LastTotalAllocates; \ + _ANONYMOUS_UNION union { \ + ULONG LastAllocateMisses; \ + ULONG LastAllocateHits; \ + } DUMMYUNIONNAME3; \ + ULONG Future[2]; + +typedef struct _GENERAL_LOOKASIDE { + GENERAL_LOOKASIDE_S +} GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE; + +typedef struct _NPAGED_LOOKASIDE_LIST { + GENERAL_LOOKASIDE_S + KSPIN_LOCK Obsoleted; +} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST; + +typedef struct _PAGED_LOOKASIDE_LIST { + GENERAL_LOOKASIDE_S + FAST_MUTEX Obsoleted; +} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST; + +typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; + +typedef VOID DDKAPI (*PCALLBACK_FUNCTION)( + IN PVOID CallbackContext, + IN PVOID Argument1, + IN PVOID Argument2); + +typedef enum _EVENT_TYPE { + NotificationEvent, + SynchronizationEvent +} EVENT_TYPE; + +typedef enum _KWAIT_REASON { + Executive, + FreePage, + PageIn, + PoolAllocation, + DelayExecution, + Suspended, + UserRequest, + WrExecutive, + WrFreePage, + WrPageIn, + WrPoolAllocation, + WrDelayExecution, + WrSuspended, + WrUserRequest, + WrEventPair, + WrQueue, + WrLpcReceive, + WrLpcReply, + WrVirtualMemory, + WrPageOut, + WrRendezvous, + Spare2, + Spare3, + Spare4, + Spare5, + Spare6, + WrKernel, + MaximumWaitReason +} KWAIT_REASON; + +typedef struct _KWAIT_BLOCK { + LIST_ENTRY WaitListEntry; + struct _KTHREAD * RESTRICTED_POINTER Thread; + PVOID Object; + struct _KWAIT_BLOCK * RESTRICTED_POINTER NextWaitBlock; + USHORT WaitKey; + USHORT WaitType; +} KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK; + +typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK * PIO_REMOVE_LOCK_TRACKING_BLOCK; + +typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK { + BOOLEAN Removed; + BOOLEAN Reserved[3]; + LONG IoCount; + KEVENT RemoveEvent; +} IO_REMOVE_LOCK_COMMON_BLOCK; + +typedef struct _IO_REMOVE_LOCK_DBG_BLOCK { + LONG Signature; + LONG HighWatermark; + LONGLONG MaxLockedTicks; + LONG AllocateTag; + LIST_ENTRY LockList; + KSPIN_LOCK Spin; + LONG LowMemoryCount; + ULONG Reserved1[4]; + PVOID Reserved2; + PIO_REMOVE_LOCK_TRACKING_BLOCK Blocks; +} IO_REMOVE_LOCK_DBG_BLOCK; + +typedef struct _IO_REMOVE_LOCK { + IO_REMOVE_LOCK_COMMON_BLOCK Common; +#ifdef DBG + IO_REMOVE_LOCK_DBG_BLOCK Dbg; +#endif +} IO_REMOVE_LOCK, *PIO_REMOVE_LOCK; + +typedef struct _IO_WORKITEM *PIO_WORKITEM; + +typedef VOID DDKAPI +(*PIO_WORKITEM_ROUTINE)( + IN PDEVICE_OBJECT DeviceObject, + IN PVOID Context); + +typedef struct _SHARE_ACCESS { + ULONG OpenCount; + ULONG Readers; + ULONG Writers; + ULONG Deleters; + ULONG SharedRead; + ULONG SharedWrite; + ULONG SharedDelete; +} SHARE_ACCESS, *PSHARE_ACCESS; + +typedef enum _KINTERRUPT_MODE { + LevelSensitive, + Latched +} KINTERRUPT_MODE; + +typedef VOID DDKAPI +(*PKINTERRUPT_ROUTINE)( + VOID); + +typedef enum _KPROFILE_SOURCE { + ProfileTime, + ProfileAlignmentFixup, + ProfileTotalIssues, + ProfilePipelineDry, + ProfileLoadInstructions, + ProfilePipelineFrozen, + ProfileBranchInstructions, + ProfileTotalNonissues, + ProfileDcacheMisses, + ProfileIcacheMisses, + ProfileCacheMisses, + ProfileBranchMispredictions, + ProfileStoreInstructions, + ProfileFpInstructions, + ProfileIntegerInstructions, + Profile2Issue, + Profile3Issue, + Profile4Issue, + ProfileSpecialInstructions, + ProfileTotalCycles, + ProfileIcacheIssues, + ProfileDcacheAccesses, + ProfileMemoryBarrierCycles, + ProfileLoadLinkedIssues, + ProfileMaximum +} KPROFILE_SOURCE; + +typedef enum _CREATE_FILE_TYPE { + CreateFileTypeNone, + CreateFileTypeNamedPipe, + CreateFileTypeMailslot +} CREATE_FILE_TYPE; + +typedef struct _CONFIGURATION_INFORMATION { + ULONG DiskCount; + ULONG FloppyCount; + ULONG CdRomCount; + ULONG TapeCount; + ULONG ScsiPortCount; + ULONG SerialCount; + ULONG ParallelCount; + BOOLEAN AtDiskPrimaryAddressClaimed; + BOOLEAN AtDiskSecondaryAddressClaimed; + ULONG Version; + ULONG MediumChangerCount; +} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION; + +typedef enum _CONFIGURATION_TYPE { + ArcSystem, + CentralProcessor, + FloatingPointProcessor, + PrimaryIcache, + PrimaryDcache, + SecondaryIcache, + SecondaryDcache, + SecondaryCache, + EisaAdapter, + TcAdapter, + ScsiAdapter, + DtiAdapter, + MultiFunctionAdapter, + DiskController, + TapeController, + CdromController, + WormController, + SerialController, + NetworkController, + DisplayController, + ParallelController, + PointerController, + KeyboardController, + AudioController, + OtherController, + DiskPeripheral, + FloppyDiskPeripheral, + TapePeripheral, + ModemPeripheral, + MonitorPeripheral, + PrinterPeripheral, + PointerPeripheral, + KeyboardPeripheral, + TerminalPeripheral, + OtherPeripheral, + LinePeripheral, + NetworkPeripheral, + SystemMemory, + DockingInformation, + RealModeIrqRoutingTable, + MaximumType +} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE; + +typedef NTSTATUS (*PIO_QUERY_DEVICE_ROUTINE)( + IN PVOID Context, + IN PUNICODE_STRING PathName, + IN INTERFACE_TYPE BusType, + IN ULONG BusNumber, + IN PKEY_VALUE_FULL_INFORMATION *BusInformation, + IN CONFIGURATION_TYPE ControllerType, + IN ULONG ControllerNumber, + IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation, + IN CONFIGURATION_TYPE PeripheralType, + IN ULONG PeripheralNumber, + IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation); + +typedef enum _WORK_QUEUE_TYPE { + CriticalWorkQueue, + DelayedWorkQueue, + HyperCriticalWorkQueue, + MaximumWorkQueue +} WORK_QUEUE_TYPE; + +typedef VOID DDKAPI +(*PWORKER_THREAD_ROUTINE)( + IN PVOID Parameter); + +typedef struct _WORK_QUEUE_ITEM { + LIST_ENTRY List; + PWORKER_THREAD_ROUTINE WorkerRoutine; + PVOID Parameter; +} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM; + +typedef enum _KBUGCHECK_BUFFER_DUMP_STATE { + BufferEmpty, + BufferInserted, + BufferStarted, + BufferFinished, + BufferIncomplete +} KBUGCHECK_BUFFER_DUMP_STATE; + +typedef VOID DDKAPI +(*PKBUGCHECK_CALLBACK_ROUTINE)( + IN PVOID Buffer, + IN ULONG Length); + +typedef struct _KBUGCHECK_CALLBACK_RECORD { + LIST_ENTRY Entry; + PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine; + PVOID Buffer; + ULONG Length; + PUCHAR Component; + ULONG_PTR Checksum; + UCHAR State; +} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD; + +/* + * VOID + * KeInitializeCallbackRecord( + * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord) + */ +#define KeInitializeCallbackRecord(CallbackRecord) \ + CallbackRecord->State = BufferEmpty; + +typedef enum _KDPC_IMPORTANCE { + LowImportance, + MediumImportance, + HighImportance +} KDPC_IMPORTANCE; + +typedef enum _MEMORY_CACHING_TYPE_ORIG { + MmFrameBufferCached = 2 +} MEMORY_CACHING_TYPE_ORIG; + +typedef enum _MEMORY_CACHING_TYPE { + MmNonCached = FALSE, + MmCached = TRUE, + MmWriteCombined = MmFrameBufferCached, + MmHardwareCoherentCached, + MmNonCachedUnordered, + MmUSWCCached, + MmMaximumCacheType +} MEMORY_CACHING_TYPE; + +typedef enum _MM_PAGE_PRIORITY { + LowPagePriority, + NormalPagePriority = 16, + HighPagePriority = 32 +} MM_PAGE_PRIORITY; + +typedef enum _LOCK_OPERATION { + IoReadAccess, + IoWriteAccess, + IoModifyAccess +} LOCK_OPERATION; + +typedef enum _MM_SYSTEM_SIZE { + MmSmallSystem, + MmMediumSystem, + MmLargeSystem +} MM_SYSTEM_SIZE; + +typedef struct _OBJECT_HANDLE_INFORMATION { + ULONG HandleAttributes; + ACCESS_MASK GrantedAccess; +} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION; + +typedef struct _CLIENT_ID { + HANDLE UniqueProcess; + HANDLE UniqueThread; +} CLIENT_ID, *PCLIENT_ID; + +typedef VOID DDKAPI +(*PKSTART_ROUTINE)( + IN PVOID StartContext); + +typedef VOID DDKAPI +(*PCREATE_PROCESS_NOTIFY_ROUTINE)( + IN HANDLE ParentId, + IN HANDLE ProcessId, + IN BOOLEAN Create); + +typedef VOID DDKAPI +(*PCREATE_THREAD_NOTIFY_ROUTINE)( + IN HANDLE ProcessId, + IN HANDLE ThreadId, + IN BOOLEAN Create); + +typedef struct _IMAGE_INFO { + _ANONYMOUS_UNION union { + ULONG Properties; + _ANONYMOUS_STRUCT struct { + ULONG ImageAddressingMode : 8; + ULONG SystemModeImage : 1; + ULONG ImageMappedToAllPids : 1; + ULONG Reserved : 22; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + PVOID ImageBase; + ULONG ImageSelector; + SIZE_T ImageSize; + ULONG ImageSectionNumber; +} IMAGE_INFO, *PIMAGE_INFO; + +#define IMAGE_ADDRESSING_MODE_32BIT 3 + +typedef VOID DDKAPI +(*PLOAD_IMAGE_NOTIFY_ROUTINE)( + IN PUNICODE_STRING FullImageName, + IN HANDLE ProcessId, + IN PIMAGE_INFO ImageInfo); + +typedef enum _PROCESSINFOCLASS { + ProcessBasicInformation, + ProcessQuotaLimits, + ProcessIoCounters, + ProcessVmCounters, + ProcessTimes, + ProcessBasePriority, + ProcessRaisePriority, + ProcessDebugPort, + ProcessExceptionPort, + ProcessAccessToken, + ProcessLdtInformation, + ProcessLdtSize, + ProcessDefaultHardErrorMode, + ProcessIoPortHandlers, + ProcessPooledUsageAndLimits, + ProcessWorkingSetWatch, + ProcessUserModeIOPL, + ProcessEnableAlignmentFaultFixup, + ProcessPriorityClass, + ProcessWx86Information, + ProcessHandleCount, + ProcessAffinityMask, + ProcessPriorityBoost, + ProcessDeviceMap, + ProcessSessionInformation, + ProcessForegroundInformation, + ProcessWow64Information, + ProcessImageFileName, + ProcessLUIDDeviceMapsEnabled, + ProcessBreakOnTermination, + ProcessDebugObjectHandle, + ProcessDebugFlags, + ProcessHandleTracing, + MaxProcessInfoClass +} PROCESSINFOCLASS; + +typedef enum _THREADINFOCLASS { + ThreadBasicInformation, + ThreadTimes, + ThreadPriority, + ThreadBasePriority, + ThreadAffinityMask, + ThreadImpersonationToken, + ThreadDescriptorTableEntry, + ThreadEnableAlignmentFaultFixup, + ThreadEventPair_Reusable, + ThreadQuerySetWin32StartAddress, + ThreadZeroTlsCell, + ThreadPerformanceCount, + ThreadAmILastThread, + ThreadIdealProcessor, + ThreadPriorityBoost, + ThreadSetTlsArrayAddress, + ThreadIsIoPending, + ThreadHideFromDebugger, + ThreadBreakOnTermination, + MaxThreadInfoClass +} THREADINFOCLASS; + +#define ES_SYSTEM_REQUIRED 0x00000001 +#define ES_DISPLAY_REQUIRED 0x00000002 +#define ES_USER_PRESENT 0x00000004 +#define ES_CONTINUOUS 0x80000000 + +typedef ULONG EXECUTION_STATE; + +typedef VOID DDKAPI +(*PREQUEST_POWER_COMPLETE)( + IN PDEVICE_OBJECT DeviceObject, + IN UCHAR MinorFunction, + IN POWER_STATE PowerState, + IN PVOID Context, + IN PIO_STATUS_BLOCK IoStatus); + +typedef enum _TRACE_INFORMATION_CLASS { + TraceIdClass, + TraceHandleClass, + TraceEnableFlagsClass, + TraceEnableLevelClass, + GlobalLoggerHandleClass, + EventLoggerHandleClass, + AllLoggerHandlesClass, + TraceHandleByNameClass +} TRACE_INFORMATION_CLASS; + +typedef NTSTATUS DDKAPI +(*PEX_CALLBACK_FUNCTION)( + IN PVOID CallbackContext, + IN PVOID Argument1, + IN PVOID Argument2); + + + +/* +** Storage structures +*/ +typedef enum _PARTITION_STYLE { + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT +} PARTITION_STYLE; + +typedef struct _CREATE_DISK_MBR { + ULONG Signature; +} CREATE_DISK_MBR, *PCREATE_DISK_MBR; + +typedef struct _CREATE_DISK_GPT { + GUID DiskId; + ULONG MaxPartitionCount; +} CREATE_DISK_GPT, *PCREATE_DISK_GPT; + +typedef struct _CREATE_DISK { + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + } DUMMYUNIONNAME; +} CREATE_DISK, *PCREATE_DISK; + +typedef struct _DISK_SIGNATURE { + ULONG PartitionStyle; + _ANONYMOUS_UNION union { + struct { + ULONG Signature; + ULONG CheckSum; + } Mbr; + struct { + GUID DiskId; + } Gpt; + } DUMMYUNIONNAME; +} DISK_SIGNATURE, *PDISK_SIGNATURE; + +typedef VOID DDKFASTAPI +(*PTIME_UPDATE_NOTIFY_ROUTINE)( + IN HANDLE ThreadId, + IN KPROCESSOR_MODE Mode); + +#define DBG_STATUS_CONTROL_C 1 +#define DBG_STATUS_SYSRQ 2 +#define DBG_STATUS_BUGCHECK_FIRST 3 +#define DBG_STATUS_BUGCHECK_SECOND 4 +#define DBG_STATUS_FATAL 5 +#define DBG_STATUS_DEBUG_CONTROL 6 +#define DBG_STATUS_WORKER 7 + +typedef struct _PHYSICAL_MEMORY_RANGE { + PHYSICAL_ADDRESS BaseAddress; + LARGE_INTEGER NumberOfBytes; +} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE; + +typedef ULONG_PTR +(*PDRIVER_VERIFIER_THUNK_ROUTINE)( + IN PVOID Context); + +typedef struct _DRIVER_VERIFIER_THUNK_PAIRS { + PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine; + PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine; +} DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS; + +#define DRIVER_VERIFIER_SPECIAL_POOLING 0x0001 +#define DRIVER_VERIFIER_FORCE_IRQL_CHECKING 0x0002 +#define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES 0x0004 +#define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008 +#define DRIVER_VERIFIER_IO_CHECKING 0x0010 + +#define RTL_RANGE_LIST_ADD_IF_CONFLICT 0x00000001 +#define RTL_RANGE_LIST_ADD_SHARED 0x00000002 + +#define RTL_RANGE_LIST_SHARED_OK 0x00000001 +#define RTL_RANGE_LIST_NULL_CONFLICT_OK 0x00000002 + +#define RTL_RANGE_LIST_SHARED_OK 0x00000001 +#define RTL_RANGE_LIST_NULL_CONFLICT_OK 0x00000002 + +#define RTL_RANGE_LIST_MERGE_IF_CONFLICT RTL_RANGE_LIST_ADD_IF_CONFLICT + +typedef struct _RTL_RANGE { + ULONGLONG Start; + ULONGLONG End; + PVOID UserData; + PVOID Owner; + UCHAR Attributes; + UCHAR Flags; +} RTL_RANGE, *PRTL_RANGE; + +#define RTL_RANGE_SHARED 0x01 +#define RTL_RANGE_CONFLICT 0x02 + +typedef struct _RTL_RANGE_LIST { + LIST_ENTRY ListHead; + ULONG Flags; + ULONG Count; + ULONG Stamp; +} RTL_RANGE_LIST, *PRTL_RANGE_LIST; + +typedef struct _RANGE_LIST_ITERATOR { + PLIST_ENTRY RangeListHead; + PLIST_ENTRY MergedHead; + PVOID Current; + ULONG Stamp; +} RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR; + +typedef BOOLEAN +(*PRTL_CONFLICT_RANGE_CALLBACK)( + IN PVOID Context, + IN PRTL_RANGE Range); + +#define HASH_STRING_ALGORITHM_DEFAULT 0 +#define HASH_STRING_ALGORITHM_X65599 1 +#define HASH_STRING_ALGORITHM_INVALID 0xffffffff + +typedef enum _SUITE_TYPE { + SmallBusiness, + Enterprise, + BackOffice, + CommunicationServer, + TerminalServer, + SmallBusinessRestricted, + EmbeddedNT, + DataCenter, + SingleUserTS, + Personal, + Blade, + MaxSuiteType +} SUITE_TYPE; + +typedef VOID DDKAPI +(*PTIMER_APC_ROUTINE)( + IN PVOID TimerContext, + IN ULONG TimerLowValue, + IN LONG TimerHighValue); + + + +/* +** WMI structures +*/ + +typedef VOID DDKAPI +(*WMI_NOTIFICATION_CALLBACK)( + PVOID Wnode, + PVOID Context); + + +/* +** Architecture specific structures +*/ + +#ifdef _X86_ + +typedef ULONG PFN_NUMBER, *PPFN_NUMBER; + +#define PASSIVE_LEVEL 0 +#define LOW_LEVEL 0 +#define APC_LEVEL 1 +#define DISPATCH_LEVEL 2 +#define PROFILE_LEVEL 27 +#define CLOCK1_LEVEL 28 +#define CLOCK2_LEVEL 28 +#define IPI_LEVEL 29 +#define POWER_LEVEL 30 +#define HIGH_LEVEL 31 + +typedef struct _KPCR_TIB { + PVOID ExceptionList; /* 00 */ + PVOID StackBase; /* 04 */ + PVOID StackLimit; /* 08 */ + PVOID SubSystemTib; /* 0C */ + _ANONYMOUS_UNION union { + PVOID FiberData; /* 10 */ + DWORD Version; /* 10 */ + } DUMMYUNIONNAME; + PVOID ArbitraryUserPointer; /* 14 */ +} KPCR_TIB, *PKPCR_TIB; /* 18 */ + +#define PCR_MINOR_VERSION 1 +#define PCR_MAJOR_VERSION 1 + +typedef struct _KPCR { + KPCR_TIB Tib; /* 00 */ + struct _KPCR *Self; /* 18 */ + struct _KPRCB *PCRCB; /* 1C */ + KIRQL Irql; /* 20 */ + ULONG IRR; /* 24 */ + ULONG IrrActive; /* 28 */ + ULONG IDR; /* 2C */ + PVOID KdVersionBlock; /* 30 */ + PUSHORT IDT; /* 34 */ + PUSHORT GDT; /* 38 */ + struct _KTSS *TSS; /* 3C */ + USHORT MajorVersion; /* 40 */ + USHORT MinorVersion; /* 42 */ + KAFFINITY SetMember; /* 44 */ + ULONG StallScaleFactor; /* 48 */ + UCHAR DebugActive; /* 4C */ + UCHAR ProcessorNumber; /* 4D */ + UCHAR Reserved[2]; /* 4E */ +} KPCR, *PKPCR; /* 50 */ + +typedef struct _KFLOATING_SAVE { + ULONG ControlWord; + ULONG StatusWord; + ULONG ErrorOffset; + ULONG ErrorSelector; + ULONG DataOffset; + ULONG DataSelector; + ULONG Cr0NpxState; + ULONG Spare1; +} KFLOATING_SAVE, *PKFLOATING_SAVE; + +#define PAGE_SIZE 0x1000 +#define PAGE_SHIFT 12L + +extern NTOSAPI PVOID *MmHighestUserAddress; +extern NTOSAPI PVOID *MmSystemRangeStart; +extern NTOSAPI ULONG *MmUserProbeAddress; + +#define MM_HIGHEST_USER_ADDRESS *MmHighestUserAddress +#define MM_SYSTEM_RANGE_START *MmSystemRangeStart +#define MM_USER_PROBE_ADDRESS *MmUserProbeAddress +#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 +#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000 + +#define KI_USER_SHARED_DATA 0xffdf0000 +#define SharedUserData ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA) + +#define EFLAG_SIGN 0x8000 +#define EFLAG_ZERO 0x4000 +#define EFLAG_SELECT (EFLAG_SIGN | EFLAG_ZERO) + +#define RESULT_NEGATIVE ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) +#define RESULT_ZERO ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT) +#define RESULT_POSITIVE ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT) + +typedef enum _INTERLOCKED_RESULT { + ResultNegative = RESULT_NEGATIVE, + ResultZero = RESULT_ZERO, + ResultPositive = RESULT_POSITIVE +} INTERLOCKED_RESULT; + +NTOSAPI +KIRQL +DDKAPI +KeGetCurrentIrql( + VOID); + +/* + * ULONG + * KeGetCurrentProcessorNumber( + * VOID) + */ +#define KeGetCurrentProcessorNumber() \ + ((ULONG)KeGetCurrentKPCR()->ProcessorNumber) + +#if !defined(__INTERLOCKED_DECLARED) +#define __INTERLOCKED_DECLARED + +NTOSAPI +LONG +DDKFASTAPI +InterlockedIncrement( + IN PLONG VOLATILE Addend); + +NTOSAPI +LONG +DDKFASTAPI +InterlockedDecrement( + IN PLONG VOLATILE Addend); + +NTOSAPI +LONG +DDKFASTAPI +InterlockedCompareExchange( + IN OUT PLONG VOLATILE Destination, + IN LONG Exchange, + IN LONG Comparand); + +NTOSAPI +LONG +DDKFASTAPI +InterlockedExchange( + IN OUT PLONG VOLATILE Target, + IN LONG Value); + +NTOSAPI +LONG +DDKFASTAPI +InterlockedExchangeAdd( + IN OUT PLONG VOLATILE Addend, + IN LONG Value); + +/* + * PVOID + * InterlockedExchangePointer( + * IN OUT PVOID VOLATILE *Target, + * IN PVOID Value) + */ +#define InterlockedExchangePointer(Target, Value) \ + ((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value)) + +/* + * PVOID + * InterlockedCompareExchangePointer( + * IN OUT PVOID *Destination, + * IN PVOID Exchange, + * IN PVOID Comparand) + */ +#define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \ + ((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand)) + +#endif /* !__INTERLOCKED_DECLARED */ + +NTOSAPI +VOID +DDKFASTAPI +KefAcquireSpinLockAtDpcLevel( + IN PKSPIN_LOCK SpinLock); + +NTOSAPI +VOID +DDKFASTAPI +KefReleaseSpinLockFromDpcLevel( + IN PKSPIN_LOCK SpinLock); + +#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock) +#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock) + +#define RtlCopyMemoryNonTemporal RtlCopyMemory + +#define KeGetDcacheFillSize() 1L + +#endif /* _X86_ */ + + + +/* +** Utillity functions +*/ + +#define ARGUMENT_PRESENT(ArgumentPointer) \ + ((BOOLEAN) ((PVOID)ArgumentPointer != (PVOID)NULL)) + +/* + * ULONG + * BYTE_OFFSET( + * IN PVOID Va) + */ +#define BYTE_OFFSET(Va) \ + ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1))) + +/* + * ULONG + * BYTES_TO_PAGES( + * IN ULONG Size) + */ +#define BYTES_TO_PAGES(Size) \ + ((ULONG) ((ULONG_PTR) (Size) >> PAGE_SHIFT) + (((ULONG) (Size) & (PAGE_SIZE - 1)) != 0)) + +/* + * PCHAR + * CONTAINING_RECORD( + * IN PCHAR Address, + * IN TYPE Type, + * IN PCHAR Field); + */ +#ifndef CONTAINING_RECORD +#define CONTAINING_RECORD(Address, Type, Field) \ + ((Type *) (((ULONG_PTR) Address) - FIELD_OFFSET(Type, Field))) +#endif + +/* LONG + * FIELD_OFFSET( + * IN TYPE Type, + * IN PCHAR Field); + */ +#ifndef FIELD_OFFSET +#define FIELD_OFFSET(Type, Field) \ + ((LONG) (&(((Type *) 0)->Field))) +#endif + +/* + * PVOID + * PAGE_ALIGN( + * IN PVOID Va) + */ +#define PAGE_ALIGN(Va) \ + ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1))) + +/* + * ULONG_PTR + * ROUND_TO_PAGES( + * IN ULONG_PTR Size) + */ +#define ROUND_TO_PAGES(Size) \ + ((ULONG_PTR) (((ULONG_PTR) Size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))) + +NTOSAPI +VOID +DDKAPI +RtlAssert( + IN PVOID FailedAssertion, + IN PVOID FileName, + IN ULONG LineNumber, + IN PCHAR Message); + +#ifdef DBG + +#define ASSERT(exp) \ + ((!(exp)) ? \ + (RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE) : TRUE) + +#define ASSERTMSG(msg, exp) \ + ((!(exp)) ? \ + (RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE) : TRUE) + +#define RTL_SOFT_ASSERT(exp) \ + ((!(_exp)) ? \ + (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE) : TRUE) + +#define RTL_SOFT_ASSERTMSG(msg, exp) \ + ((!(exp)) ? \ + (DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE) : TRUE) + +#define RTL_VERIFY(exp) ASSERT(exp) +#define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp) + +#define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp) +#define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp) + +#else /* !DBG */ + +#define ASSERT(exp) ((VOID) 0) +#define ASSERTMSG(msg, exp) ((VOID) 0) + +#define RTL_SOFT_ASSERT(exp) ((VOID) 0) +#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0) + +#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE) +#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) + +#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE) +#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE) + +#endif /* DBG */ + +#define assert ASSERT + + +/* +** Driver support routines +*/ + +/** Runtime library routines **/ + +/* + * VOID + * InitializeListHead( + * IN PLIST_ENTRY ListHead) + */ +#define InitializeListHead(_ListHead) \ +{ \ + (_ListHead)->Flink = (_ListHead); \ + (_ListHead)->Blink = (_ListHead); \ +} + +/* + * VOID + * InsertHeadList( + * IN PLIST_ENTRY ListHead, + * IN PLIST_ENTRY Entry) + */ +#define InsertHeadList(_ListHead, \ + _Entry) \ +{ \ + PLIST_ENTRY _OldFlink; \ + _OldFlink = (_ListHead)->Flink; \ + (_Entry)->Flink = _OldFlink; \ + (_Entry)->Blink = (_ListHead); \ + _OldFlink->Blink = (_Entry); \ + (_ListHead)->Flink = (_Entry); \ +} + +/* + * VOID + * InsertTailList( + * IN PLIST_ENTRY ListHead, + * IN PLIST_ENTRY Entry) + */ +#define InsertTailList(_ListHead, \ + _Entry) \ +{ \ + PLIST_ENTRY _OldBlink; \ + _OldBlink = (_ListHead)->Blink; \ + (_Entry)->Flink = (_ListHead); \ + (_Entry)->Blink = _OldBlink; \ + _OldBlink->Flink = (_Entry); \ + (_ListHead)->Blink = (_Entry); \ +} + +/* + * BOOLEAN + * IsListEmpty( + * IN PLIST_ENTRY ListHead) + */ +#define IsListEmpty(_ListHead) \ + ((_ListHead)->Flink == (_ListHead)) + +static __inline PSINGLE_LIST_ENTRY +PopEntryList( + IN PSINGLE_LIST_ENTRY ListHead) +{ + PSINGLE_LIST_ENTRY Entry; + + Entry = ListHead->Next; + if (Entry != NULL) + { + ListHead->Next = Entry->Next; + } + return Entry; +} + +/* + * VOID + * PushEntryList( + * IN PSINGLE_LIST_ENTRY ListHead, + * IN PSINGLE_LIST_ENTRY Entry) + */ +#define PushEntryList(_ListHead, \ + _Entry) \ +{ \ + (_Entry)->Next = (_ListHead)->Next; \ + (_ListHead)->Next = (_Entry); \ +} + +/* + * VOID + * RemoveEntryList( + * IN PLIST_ENTRY Entry) + */ +#define RemoveEntryList(_Entry) \ +{ \ + PLIST_ENTRY _OldFlink; \ + PLIST_ENTRY _OldBlink; \ + _OldFlink = (_Entry)->Flink; \ + _OldBlink = (_Entry)->Blink; \ + _OldFlink->Blink = _OldBlink; \ + _OldBlink->Flink = _OldFlink; \ + (_Entry)->Flink = NULL; \ + (_Entry)->Blink = NULL; \ +} + +static __inline PLIST_ENTRY +RemoveHeadList( + IN PLIST_ENTRY ListHead) +{ + PLIST_ENTRY OldFlink; + PLIST_ENTRY OldBlink; + PLIST_ENTRY Entry; + + Entry = ListHead->Flink; + OldFlink = ListHead->Flink->Flink; + OldBlink = ListHead->Flink->Blink; + OldFlink->Blink = OldBlink; + OldBlink->Flink = OldFlink; + + if (Entry != ListHead) + { + Entry->Flink = NULL; + Entry->Blink = NULL; + } + + return Entry; +} + +static __inline PLIST_ENTRY +RemoveTailList( + IN PLIST_ENTRY ListHead) +{ + PLIST_ENTRY OldFlink; + PLIST_ENTRY OldBlink; + PLIST_ENTRY Entry; + + Entry = ListHead->Blink; + OldFlink = ListHead->Blink->Flink; + OldBlink = ListHead->Blink->Blink; + OldFlink->Blink = OldBlink; + OldBlink->Flink = OldFlink; + + if (Entry != ListHead) + { + Entry->Flink = NULL; + Entry->Blink = NULL; + } + + return Entry; +} + +NTOSAPI +PSLIST_ENTRY +DDKFASTAPI +InterlockedPopEntrySList( + IN PSLIST_HEADER ListHead); + +NTOSAPI +PSLIST_ENTRY +DDKFASTAPI +InterlockedPushEntrySList( + IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY ListEntry); + +/* + * USHORT + * QueryDepthSList( + * IN PSLIST_HEADER SListHead) + */ +#define QueryDepthSList(_SListHead) \ + ((USHORT) ((_SListHead)->Alignment & 0xffff)) + +#define InterlockedFlushSList(ListHead) ExInterlockedFlushSList(ListHead) + +NTOSAPI +ULONG +DDKAPI +RtlAnsiStringToUnicodeSize( + IN PANSI_STRING AnsiString); + +NTOSAPI +NTSTATUS +DDKAPI +RtlAddRange( + IN OUT PRTL_RANGE_LIST RangeList, + IN ULONGLONG Start, + IN ULONGLONG End, + IN UCHAR Attributes, + IN ULONG Flags, + IN PVOID UserData OPTIONAL, + IN PVOID Owner OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +RtlAnsiStringToUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PANSI_STRING SourceString, + IN BOOLEAN AllocateDestinationString); + +NTOSAPI +NTSTATUS +DDKAPI +RtlAppendUnicodeStringToString( + IN OUT PUNICODE_STRING Destination, + IN PUNICODE_STRING Source); + +NTOSAPI +NTSTATUS +DDKAPI +RtlAppendUnicodeToString( + IN OUT PUNICODE_STRING Destination, + IN PCWSTR Source); + +NTOSAPI +BOOLEAN +DDKAPI +RtlAreBitsClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG Length); + +NTOSAPI +BOOLEAN +DDKAPI +RtlAreBitsSet( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG Length); + +NTOSAPI +NTSTATUS +DDKAPI +RtlCharToInteger( + IN PCSZ String, + IN ULONG Base OPTIONAL, + IN OUT PULONG Value); + +NTOSAPI +ULONG +DDKAPI +RtlCheckBit( + IN PRTL_BITMAP BitMapHeader, + IN ULONG BitPosition); + +NTOSAPI +NTSTATUS +DDKAPI +RtlCheckRegistryKey( + IN ULONG RelativeTo, + IN PWSTR Path); + +NTOSAPI +VOID +DDKAPI +RtlClearAllBits( + IN PRTL_BITMAP BitMapHeader); + +NTOSAPI +VOID +DDKAPI +RtlClearBit( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber); + +NTOSAPI +VOID +DDKAPI +RtlClearBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG NumberToClear); + +NTOSAPI +SIZE_T +DDKAPI +RtlCompareMemory( + IN CONST VOID *Source1, + IN CONST VOID *Source2, + IN SIZE_T Length); + +NTOSAPI +LONG +DDKAPI +RtlCompareString( + IN PSTRING String1, + IN PSTRING String2, + BOOLEAN CaseInSensitive); + +NTOSAPI +LONG +DDKAPI +RtlCompareUnicodeString( + IN PUNICODE_STRING String1, + IN PUNICODE_STRING String2, + IN BOOLEAN CaseInSensitive); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlConvertLongToLargeInteger( + IN LONG SignedInteger); + +NTOSAPI +LUID +DDKAPI +RtlConvertLongToLuid( + IN LONG Long); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlConvertUlongToLargeInteger( + IN ULONG UnsignedInteger); + +NTOSAPI +LUID +DDKAPI +RtlConvertUlongToLuid( + ULONG Ulong); + +/* + * VOID + * RtlCopyMemory( + * IN VOID UNALIGNED *Destination, + * IN CONST VOID UNALIGNED *Source, + * IN SIZE_T Length) + */ +#ifndef RtlCopyMemory +#define RtlCopyMemory(Destination, Source, Length) \ + memcpy(Destination, Source, Length); +#endif + +#ifndef RtlCopyBytes +#define RtlCopyBytes RtlCopyMemory +#endif + +NTOSAPI +VOID +DDKAPI +RtlCopyMemory32( + IN VOID UNALIGNED *Destination, + IN CONST VOID UNALIGNED *Source, + IN ULONG Length); + +NTOSAPI +NTSTATUS +DDKAPI +RtlCopyRangeList( + OUT PRTL_RANGE_LIST CopyRangeList, + IN PRTL_RANGE_LIST RangeList); + +NTOSAPI +VOID +DDKAPI +RtlCopyString( + IN OUT PSTRING DestinationString, + IN PSTRING SourceString OPTIONAL); + +NTOSAPI +VOID +DDKAPI +RtlCopyUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PUNICODE_STRING SourceString); + +NTOSAPI +NTSTATUS +DDKAPI +RtlCreateRegistryKey( + IN ULONG RelativeTo, + IN PWSTR Path); + +NTOSAPI +NTSTATUS +DDKAPI +RtlCreateSecurityDescriptor( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Revision); + +NTOSAPI +NTSTATUS +DDKAPI +RtlDeleteOwnersRanges( + IN OUT PRTL_RANGE_LIST RangeList, + IN PVOID Owner); + +NTOSAPI +NTSTATUS +DDKAPI +RtlDeleteRange( + IN OUT PRTL_RANGE_LIST RangeList, + IN ULONGLONG Start, + IN ULONGLONG End, + IN PVOID Owner); + +NTOSAPI +NTSTATUS +DDKAPI +RtlDeleteRegistryValue( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PCWSTR ValueName); + +/* + * BOOLEAN + * RtlEqualLuid( + * IN LUID Luid1, + * IN LUID Luid2) + */ +#define RtlEqualLuid(_Luid1, \ + _Luid2) \ + ((Luid1.LowPart == Luid2.LowPart) && (Luid1.HighPart == Luid2.HighPart)) + +/* + * ULONG + * RtlEqualMemory( + * IN VOID UNALIGNED *Destination, + * IN CONST VOID UNALIGNED *Source, + * IN SIZE_T Length) + */ +#define RtlEqualMemory(Destination, Source, Length) (!memcmp(Destination, Source, Length)) + +NTOSAPI +BOOLEAN +DDKAPI +RtlEqualString( + IN PSTRING String1, + IN PSTRING String2, + IN BOOLEAN CaseInSensitive); + +NTOSAPI +BOOLEAN +DDKAPI +RtlEqualUnicodeString( + IN CONST UNICODE_STRING *String1, + IN CONST UNICODE_STRING *String2, + IN BOOLEAN CaseInSensitive); + +/* + * VOID + * RtlFillMemory( + * IN VOID UNALIGNED *Destination, + * IN SIZE_T Length, + * IN UCHAR Fill) + */ +#ifndef RtlFillMemory +#define RtlFillMemory(Destination, Length, Fill) \ + memset(Destination, Fill, Length) +#endif + +#ifndef RtlFillBytes +#define RtlFillBytes RtlFillMemory +#endif + +NTOSAPI +ULONG +DDKAPI +RtlFindClearBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); + +NTOSAPI +ULONG +DDKAPI +RtlFindClearBitsAndSet( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); + +NTOSAPI +ULONG +DDKAPI +RtlFindClearRuns( + IN PRTL_BITMAP BitMapHeader, + OUT PRTL_BITMAP_RUN RunArray, + IN ULONG SizeOfRunArray, + IN BOOLEAN LocateLongestRuns); + +NTOSAPI +ULONG +DDKAPI +RtlFindFirstRunClear( + IN PRTL_BITMAP BitMapHeader, + OUT PULONG StartingIndex); + +NTOSAPI +ULONG +DDKAPI +RtlFindLastBackwardRunClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG FromIndex, + OUT PULONG StartingRunIndex); + +NTOSAPI +CCHAR +DDKAPI +RtlFindLeastSignificantBit( + IN ULONGLONG Set); + +NTOSAPI +ULONG +DDKAPI +RtlFindLongestRunClear( + IN PRTL_BITMAP BitMapHeader, + OUT PULONG StartingIndex); + +NTOSAPI +CCHAR +DDKAPI +RtlFindMostSignificantBit( + IN ULONGLONG Set); + +NTOSAPI +ULONG +DDKAPI +RtlFindNextForwardRunClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG FromIndex, + OUT PULONG StartingRunIndex); + +NTOSAPI +NTSTATUS +DDKAPI +RtlFindRange( + IN PRTL_RANGE_LIST RangeList, + IN ULONGLONG Minimum, + IN ULONGLONG Maximum, + IN ULONG Length, + IN ULONG Alignment, + IN ULONG Flags, + IN UCHAR AttributeAvailableMask, + IN PVOID Context OPTIONAL, + IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL, + OUT PULONGLONG Start); + +NTOSAPI +ULONG +DDKAPI +RtlFindSetBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); + +NTOSAPI +ULONG +DDKAPI +RtlFindSetBitsAndClear( + IN PRTL_BITMAP BitMapHeader, + IN ULONG NumberToFind, + IN ULONG HintIndex); + +NTOSAPI +VOID +DDKAPI +RtlFreeAnsiString( + IN PANSI_STRING AnsiString); + +NTOSAPI +VOID +DDKAPI +RtlFreeRangeList( + IN PRTL_RANGE_LIST RangeList); + +NTOSAPI +VOID +DDKAPI +RtlFreeUnicodeString( + IN PUNICODE_STRING UnicodeString); + +NTOSAPI +VOID +DDKAPI +RtlGetCallersAddress( + OUT PVOID *CallersAddress, + OUT PVOID *CallersCaller); + +NTOSAPI +NTSTATUS +DDKAPI +RtlGetVersion( + IN OUT PRTL_OSVERSIONINFOW lpVersionInformation); + +NTOSAPI +NTSTATUS +DDKAPI +RtlGetFirstRange( + IN PRTL_RANGE_LIST RangeList, + OUT PRTL_RANGE_LIST_ITERATOR Iterator, + OUT PRTL_RANGE *Range); + +NTOSAPI +NTSTATUS +DDKAPI +RtlGetNextRange( + IN OUT PRTL_RANGE_LIST_ITERATOR Iterator, + OUT PRTL_RANGE *Range, + IN BOOLEAN MoveForwards); + +#define FOR_ALL_RANGES(RangeList, Iterator, Current) \ + for (RtlGetFirstRange((RangeList), (Iterator), &(Current)); \ + (Current) != NULL; \ + RtlGetNextRange((Iterator), &(Current), TRUE)) + +#define FOR_ALL_RANGES_BACKWARDS(RangeList, Iterator, Current) \ + for (RtlGetLastRange((RangeList), (Iterator), &(Current)); \ + (Current) != NULL; \ + RtlGetNextRange((Iterator), &(Current), FALSE)) + +NTOSAPI +NTSTATUS +DDKAPI +RtlGUIDFromString( + IN PUNICODE_STRING GuidString, + OUT GUID *Guid); + +NTOSAPI +NTSTATUS +DDKAPI +RtlHashUnicodeString( + IN CONST UNICODE_STRING *String, + IN BOOLEAN CaseInSensitive, + IN ULONG HashAlgorithm, + OUT PULONG HashValue); + +NTOSAPI +VOID +DDKAPI +RtlInitAnsiString( + IN OUT PANSI_STRING DestinationString, + IN PCSZ SourceString); + +NTOSAPI +VOID +DDKAPI +RtlInitializeBitMap( + IN PRTL_BITMAP BitMapHeader, + IN PULONG BitMapBuffer, + IN ULONG SizeOfBitMap); + +NTOSAPI +VOID +DDKAPI +RtlInitializeRangeList( + IN OUT PRTL_RANGE_LIST RangeList); + +NTOSAPI +VOID +DDKAPI +RtlInitString( + IN OUT PSTRING DestinationString, + IN PCSZ SourceString); + +NTOSAPI +VOID +DDKAPI +RtlInitUnicodeString( + IN OUT PUNICODE_STRING DestinationString, + IN PCWSTR SourceString); + +NTOSAPI +NTSTATUS +DDKAPI +RtlInt64ToUnicodeString( + IN ULONGLONG Value, + IN ULONG Base OPTIONAL, + IN OUT PUNICODE_STRING String); + +NTOSAPI +NTSTATUS +DDKAPI +RtlIntegerToUnicodeString( + IN ULONG Value, + IN ULONG Base OPTIONAL, + IN OUT PUNICODE_STRING String); + +NTOSAPI +NTSTATUS +DDKAPI +RtlIntPtrToUnicodeString( + PLONG Value, + ULONG Base OPTIONAL, + PUNICODE_STRING String); + +NTOSAPI +NTSTATUS +DDKAPI +RtlInvertRangeList( + OUT PRTL_RANGE_LIST InvertedRangeList, + IN PRTL_RANGE_LIST RangeList); + +NTOSAPI +NTSTATUS +DDKAPI +RtlIsRangeAvailable( + IN PRTL_RANGE_LIST RangeList, + IN ULONGLONG Start, + IN ULONGLONG End, + IN ULONG Flags, + IN UCHAR AttributeAvailableMask, + IN PVOID Context OPTIONAL, + IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL, + OUT PBOOLEAN Available); + +/* + * BOOLEAN + * RtlIsZeroLuid( + * IN PLUID L1) + */ +#define RtlIsZeroLuid(_L1) \ + ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart))) + +NTOSAPI +ULONG +DDKAPI +RtlLengthSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptor); + +NTOSAPI +VOID +DDKAPI +RtlMapGenericMask( + IN OUT PACCESS_MASK AccessMask, + IN PGENERIC_MAPPING GenericMapping); + +NTOSAPI +NTSTATUS +DDKAPI +RtlMergeRangeLists( + OUT PRTL_RANGE_LIST MergedRangeList, + IN PRTL_RANGE_LIST RangeList1, + IN PRTL_RANGE_LIST RangeList2, + IN ULONG Flags); + +/* + * VOID + * RtlMoveMemory( + * IN VOID UNALIGNED *Destination, + * IN CONST VOID UNALIGNED *Source, + * IN SIZE_T Length) + */ +#define RtlMoveMemory memmove + +NTOSAPI +ULONG +DDKAPI +RtlNumberOfClearBits( + IN PRTL_BITMAP BitMapHeader); + +NTOSAPI +ULONG +DDKAPI +RtlNumberOfSetBits( + IN PRTL_BITMAP BitMapHeader); + +NTOSAPI +VOID +DDKFASTAPI +RtlPrefetchMemoryNonTemporal( + IN PVOID Source, + IN SIZE_T Length); + +NTOSAPI +BOOLEAN +DDKAPI +RtlPrefixUnicodeString( + IN PUNICODE_STRING String1, + IN PUNICODE_STRING String2, + IN BOOLEAN CaseInSensitive); + +NTOSAPI +NTSTATUS +DDKAPI +RtlQueryRegistryValues( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PRTL_QUERY_REGISTRY_TABLE QueryTable, + IN PVOID Context, + IN PVOID Environment OPTIONAL); + +NTOSAPI +VOID +DDKAPI +RtlRetrieveUlong( + IN OUT PULONG DestinationAddress, + IN PULONG SourceAddress); + +NTOSAPI +VOID +DDKAPI +RtlRetrieveUshort( + IN OUT PUSHORT DestinationAddress, + IN PUSHORT SourceAddress); + +NTOSAPI +VOID +DDKAPI +RtlSetAllBits( + IN PRTL_BITMAP BitMapHeader); + +NTOSAPI +VOID +DDKAPI +RtlSetBit( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber); + +NTOSAPI +VOID +DDKAPI +RtlSetBits( + IN PRTL_BITMAP BitMapHeader, + IN ULONG StartingIndex, + IN ULONG NumberToSet); + +NTOSAPI +NTSTATUS +DDKAPI +RtlSetDaclSecurityDescriptor( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN DaclPresent, + IN PACL Dacl OPTIONAL, + IN BOOLEAN DaclDefaulted OPTIONAL); + +NTOSAPI +VOID +DDKAPI +RtlStoreUlong( + IN PULONG Address, + IN ULONG Value); + +NTOSAPI +VOID +DDKAPI +RtlStoreUlonglong( + IN OUT PULONGLONG Address, + ULONGLONG Value); + +NTOSAPI +VOID +DDKAPI +RtlStoreUlongPtr( + IN OUT PULONG_PTR Address, + IN ULONG_PTR Value); + +NTOSAPI +VOID +DDKAPI +RtlStoreUshort( + IN PUSHORT Address, + IN USHORT Value); + +NTOSAPI +NTSTATUS +DDKAPI +RtlStringFromGUID( + IN REFGUID Guid, + OUT PUNICODE_STRING GuidString); + +NTOSAPI +BOOLEAN +DDKAPI +RtlTestBit( + IN PRTL_BITMAP BitMapHeader, + IN ULONG BitNumber); + +NTOSAPI +BOOLEAN +DDKAPI +RtlTimeFieldsToTime( + IN PTIME_FIELDS TimeFields, + IN PLARGE_INTEGER Time); + +NTOSAPI +VOID +DDKAPI +RtlTimeToTimeFields( + IN PLARGE_INTEGER Time, + IN PTIME_FIELDS TimeFields); + +NTOSAPI +ULONG +DDKFASTAPI +RtlUlongByteSwap( + IN ULONG Source); + +NTOSAPI +ULONGLONG +DDKFASTAPI +RtlUlonglongByteSwap( + IN ULONGLONG Source); + +NTOSAPI +ULONG +DDKAPI +RtlUnicodeStringToAnsiSize( + IN PUNICODE_STRING UnicodeString); + +NTOSAPI +NTSTATUS +DDKAPI +RtlUnicodeStringToAnsiString( + IN OUT PANSI_STRING DestinationString, + IN PUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString); + +NTOSAPI +NTSTATUS +DDKAPI +RtlUnicodeStringToInteger( + IN PUNICODE_STRING String, + IN ULONG Base OPTIONAL, + OUT PULONG Value); + +NTOSAPI +WCHAR +DDKAPI +RtlUpcaseUnicodeChar( + IN WCHAR SourceCharacter); + +NTOSAPI +NTSTATUS +DDKAPI +RtlUpcaseUnicodeString( + IN OUT PUNICODE_STRING DestinationString OPTIONAL, + IN PCUNICODE_STRING SourceString, + IN BOOLEAN AllocateDestinationString); + +NTOSAPI +CHAR +DDKAPI +RtlUpperChar( + IN CHAR Character); + +NTOSAPI +VOID +DDKAPI +RtlUpperString( + IN OUT PSTRING DestinationString, + IN PSTRING SourceString); + +NTOSAPI +USHORT +DDKFASTAPI +RtlUshortByteSwap( + IN USHORT Source); + +NTOSAPI +BOOLEAN +DDKAPI +RtlValidRelativeSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptorInput, + IN ULONG SecurityDescriptorLength, + IN SECURITY_INFORMATION RequiredInformation); + +NTOSAPI +BOOLEAN +DDKAPI +RtlValidSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptor); + +NTOSAPI +NTSTATUS +DDKAPI +RtlVerifyVersionInfo( + IN PRTL_OSVERSIONINFOEXW VersionInfo, + IN ULONG TypeMask, + IN ULONGLONG ConditionMask); + +NTOSAPI +NTSTATUS +DDKAPI +RtlVolumeDeviceToDosName( + IN PVOID VolumeDeviceObject, + OUT PUNICODE_STRING DosName); + +NTOSAPI +ULONG +DDKAPI +RtlWalkFrameChain( + OUT PVOID *Callers, + IN ULONG Count, + IN ULONG Flags); + +NTOSAPI +NTSTATUS +DDKAPI +RtlWriteRegistryValue( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PCWSTR ValueName, + IN ULONG ValueType, + IN PVOID ValueData, + IN ULONG ValueLength); + +NTOSAPI +ULONG +DDKAPI +RtlxUnicodeStringToAnsiSize( + IN PUNICODE_STRING UnicodeString); + +/* + * VOID + * RtlZeroMemory( + * IN VOID UNALIGNED *Destination, + * IN SIZE_T Length) + */ +#ifndef RtlZeroMemory +#define RtlZeroMemory(Destination, Length) \ + memset(Destination, 0, Length) +#endif + +#ifndef RtlZeroBytes +#define RtlZeroBytes RtlZeroMemory +#endif + + +/** Executive support routines **/ + +NTOSAPI +VOID +DDKFASTAPI +ExAcquireFastMutex( + IN PFAST_MUTEX FastMutex); + +NTOSAPI +VOID +DDKFASTAPI +ExAcquireFastMutexUnsafe( + IN PFAST_MUTEX FastMutex); + +NTOSAPI +BOOLEAN +DDKAPI +ExAcquireResourceExclusiveLite( + IN PERESOURCE Resource, + IN BOOLEAN Wait); + +NTOSAPI +BOOLEAN +DDKAPI +ExAcquireResourceSharedLite( + IN PERESOURCE Resource, + IN BOOLEAN Wait); + +NTOSAPI +BOOLEAN +DDKAPI +ExAcquireSharedStarveExclusive( + IN PERESOURCE Resource, + IN BOOLEAN Wait); + +NTOSAPI +BOOLEAN +DDKAPI +ExAcquireSharedWaitForExclusive( + IN PERESOURCE Resource, + IN BOOLEAN Wait); + +static __inline PVOID +ExAllocateFromNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside) +{ + PVOID Entry; + + Lookaside->TotalAllocates++; + Entry = InterlockedPopEntrySList(&Lookaside->ListHead); + if (Entry == NULL) { + Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++; + Entry = (Lookaside->Allocate)(Lookaside->Type, Lookaside->Size, Lookaside->Tag); + } + return Entry; +} + +static __inline PVOID +ExAllocateFromPagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside) +{ + PVOID Entry; + + Lookaside->TotalAllocates++; + Entry = InterlockedPopEntrySList(&Lookaside->ListHead); + if (Entry == NULL) { + Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++; + Entry = (Lookaside->Allocate)(Lookaside->Type, + Lookaside->Size, Lookaside->Tag); + } + return Entry; +} + +NTOSAPI +PVOID +DDKAPI +ExAllocatePoolWithQuotaTag( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); + +NTOSAPI +PVOID +DDKAPI +ExAllocatePoolWithTag( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag); + +#ifdef POOL_TAGGING + +#define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD') +#define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD') + +#else /* !POOL_TAGGING */ + +NTOSAPI +PVOID +DDKAPI +ExAllocatePool( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes); + +NTOSAPI +PVOID +DDKAPI +ExAllocatePoolWithQuota( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes); + +#endif /* POOL_TAGGING */ + +NTOSAPI +PVOID +DDKAPI +ExAllocatePoolWithTagPriority( + IN POOL_TYPE PoolType, + IN SIZE_T NumberOfBytes, + IN ULONG Tag, + IN EX_POOL_PRIORITY Priority); + +NTOSAPI +VOID +DDKAPI +ExConvertExclusiveToSharedLite( + IN PERESOURCE Resource); + +NTOSAPI +NTSTATUS +DDKAPI +ExCreateCallback( + OUT PCALLBACK_OBJECT *CallbackObject, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN Create, + IN BOOLEAN AllowMultipleCallbacks); + +NTOSAPI +VOID +DDKAPI +ExDeleteNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside); + +NTOSAPI +VOID +DDKAPI +ExDeletePagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside); + +NTOSAPI +NTSTATUS +DDKAPI +ExDeleteResourceLite( + IN PERESOURCE Resource); + +NTOSAPI +VOID +DDKAPI +ExFreePool( + IN PVOID P); + +#define PROTECTED_POOL 0x80000000 + +#ifdef POOL_TAGGING +#define ExFreePool(P) ExFreePoolWithTag(P, 0) +#endif + +NTOSAPI +VOID +DDKAPI +ExFreePoolWithTag( + IN PVOID P, + IN ULONG Tag); + +#define ExQueryDepthSList(ListHead) QueryDepthSList(ListHead) + +static __inline VOID +ExFreeToNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside, + IN PVOID Entry) +{ + Lookaside->TotalFrees++; + if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) { + Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++; + (Lookaside->Free)(Entry); + } else { + InterlockedPushEntrySList(&Lookaside->ListHead, + (PSLIST_ENTRY)Entry); + } +} + +static __inline VOID +ExFreeToPagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside, + IN PVOID Entry) +{ + Lookaside->TotalFrees++; + if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) { + Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++; + (Lookaside->Free)(Entry); + } else { + InterlockedPushEntrySList(&Lookaside->ListHead, (PSLIST_ENTRY)Entry); + } +} + +/* + * ERESOURCE_THREAD + * ExGetCurrentResourceThread( + * VOID); + */ +#define ExGetCurrentResourceThread() ((ERESOURCE_THREAD) PsGetCurrentThread()) + +NTOSAPI +ULONG +DDKAPI +ExGetExclusiveWaiterCount( + IN PERESOURCE Resource); + +NTOSAPI +KPROCESSOR_MODE +DDKAPI +ExGetPreviousMode( + VOID); + +NTOSAPI +ULONG +DDKAPI +ExGetSharedWaiterCount( + IN PERESOURCE Resource); + +NTOSAPI +VOID +DDKAPI +KeInitializeEvent( + IN PRKEVENT Event, + IN EVENT_TYPE Type, + IN BOOLEAN State); + +/* + * VOID DDKAPI + * ExInitializeFastMutex( + * IN PFAST_MUTEX FastMutex) + */ +#define ExInitializeFastMutex(_FastMutex) \ +{ \ + (_FastMutex)->Count = 1; \ + (_FastMutex)->Owner = NULL; \ + (_FastMutex)->Contention = 0; \ + KeInitializeEvent(&(_FastMutex)->Event, SynchronizationEvent, FALSE); \ +} + +NTOSAPI +VOID +DDKAPI +ExInitializeNPagedLookasideList( + IN PNPAGED_LOOKASIDE_LIST Lookaside, + IN PALLOCATE_FUNCTION Allocate OPTIONAL, + IN PFREE_FUNCTION Free OPTIONAL, + IN ULONG Flags, + IN SIZE_T Size, + IN ULONG Tag, + IN USHORT Depth); + +NTOSAPI +VOID +DDKAPI +ExInitializePagedLookasideList( + IN PPAGED_LOOKASIDE_LIST Lookaside, + IN PALLOCATE_FUNCTION Allocate OPTIONAL, + IN PFREE_FUNCTION Free OPTIONAL, + IN ULONG Flags, + IN SIZE_T Size, + IN ULONG Tag, + IN USHORT Depth); + +NTOSAPI +NTSTATUS +DDKAPI +ExInitializeResourceLite( + IN PERESOURCE Resource); + +/* + * VOID + * InitializeSListHead( + * IN PSLIST_HEADER SListHead) + */ +#define InitializeSListHead(_SListHead) \ + (_SListHead)->Alignment = 0 + +#define ExInitializeSListHead InitializeSListHead + +NTOSAPI +LARGE_INTEGER +DDKAPI +ExInterlockedAddLargeInteger( + IN PLARGE_INTEGER Addend, + IN LARGE_INTEGER Increment, + IN PKSPIN_LOCK Lock); + +NTOSAPI +VOID +DDKFASTAPI +ExInterlockedAddLargeStatistic( + IN PLARGE_INTEGER Addend, + IN ULONG Increment); + +NTOSAPI +ULONG +DDKFASTAPI +ExInterlockedAddUlong( + IN PULONG Addend, + IN ULONG Increment, + PKSPIN_LOCK Lock); + +NTOSAPI +LONGLONG +DDKFASTAPI +ExInterlockedCompareExchange64( + IN OUT PLONGLONG Destination, + IN PLONGLONG Exchange, + IN PLONGLONG Comparand, + IN PKSPIN_LOCK Lock); + +NTOSAPI +PSINGLE_LIST_ENTRY +DDKFASTAPI +ExInterlockedFlushSList( + IN PSLIST_HEADER ListHead); + +NTOSAPI +PLIST_ENTRY +DDKFASTAPI +ExInterlockedInsertHeadList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); + +NTOSAPI +PLIST_ENTRY +DDKFASTAPI +ExInterlockedInsertTailList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); + +NTOSAPI +PSINGLE_LIST_ENTRY +DDKFASTAPI +ExInterlockedPopEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock); + +/* + * PSINGLE_LIST_ENTRY + * ExInterlockedPopEntrySList( + * IN PSLIST_HEADER ListHead, + * IN PKSPIN_LOCK Lock) + */ +#define ExInterlockedPopEntrySList(_ListHead, \ + _Lock) \ + InterlockedPopEntrySList(_ListHead) + +NTOSAPI +PSINGLE_LIST_ENTRY +DDKFASTAPI +ExInterlockedPushEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PSINGLE_LIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock); + +/* + * PSINGLE_LIST_ENTRY FASTCALL + * ExInterlockedPushEntrySList( + * IN PSLIST_HEADER ListHead, + * IN PSINGLE_LIST_ENTRY ListEntry, + * IN PKSPIN_LOCK Lock) + */ +#define ExInterlockedPushEntrySList(_ListHead, \ + _ListEntry, \ + _Lock) \ + InterlockedPushEntrySList(_ListHead, _ListEntry) + +NTOSAPI +PLIST_ENTRY +DDKFASTAPI +ExInterlockedRemoveHeadList( + IN PLIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock); + +NTOSAPI +BOOLEAN +DDKAPI +ExIsProcessorFeaturePresent( + IN ULONG ProcessorFeature); + +NTOSAPI +BOOLEAN +DDKAPI +ExIsResourceAcquiredExclusiveLite( + IN PERESOURCE Resource); + +NTOSAPI +USHORT +DDKAPI +ExIsResourceAcquiredLite( + IN PERESOURCE Resource); + +NTOSAPI +USHORT +DDKAPI +ExIsResourceAcquiredSharedLite( + IN PERESOURCE Resource); + +NTOSAPI +VOID +DDKAPI +ExLocalTimeToSystemTime( + IN PLARGE_INTEGER LocalTime, + OUT PLARGE_INTEGER SystemTime); + +NTOSAPI +VOID +DDKAPI +ExNotifyCallback( + IN PCALLBACK_OBJECT CallbackObject, + IN PVOID Argument1, + IN PVOID Argument2); + +NTOSAPI +VOID +DDKAPI +ExRaiseAccessViolation( + VOID); + +NTOSAPI +VOID +DDKAPI +ExRaiseDatatypeMisalignment( + VOID); + +NTOSAPI +VOID +DDKAPI +ExRaiseStatus( + IN NTSTATUS Status); + +NTOSAPI +PVOID +DDKAPI +ExRegisterCallback( + IN PCALLBACK_OBJECT CallbackObject, + IN PCALLBACK_FUNCTION CallbackFunction, + IN PVOID CallbackContext); + +NTOSAPI +VOID +DDKAPI +ExReinitializeResourceLite( + IN PERESOURCE Resource); + +NTOSAPI +VOID +DDKFASTAPI +ExReleaseFastMutex( + IN PFAST_MUTEX FastMutex); + +NTOSAPI +VOID +DDKFASTAPI +ExReleaseFastMutexUnsafe( + IN PFAST_MUTEX FastMutex); + +NTOSAPI +VOID +DDKAPI +ExReleaseResourceForThreadLite( + IN PERESOURCE Resource, + IN ERESOURCE_THREAD ResourceThreadId); + +NTOSAPI +VOID +DDKFASTAPI +ExReleaseResourceLite( + IN PERESOURCE Resource); + +NTOSAPI +VOID +DDKAPI +ExSetResourceOwnerPointer( + IN PERESOURCE Resource, + IN PVOID OwnerPointer); + +NTOSAPI +ULONG +DDKAPI +ExSetTimerResolution( + IN ULONG DesiredTime, + IN BOOLEAN SetResolution); + +NTOSAPI +VOID +DDKAPI +ExSystemTimeToLocalTime( + IN PLARGE_INTEGER SystemTime, + OUT PLARGE_INTEGER LocalTime); + +NTOSAPI +BOOLEAN +DDKFASTAPI +ExTryToAcquireFastMutex( + IN PFAST_MUTEX FastMutex); + +NTOSAPI +BOOLEAN +DDKAPI +ExTryToAcquireResourceExclusiveLite( + IN PERESOURCE Resource); + +NTOSAPI +VOID +DDKAPI +ExUnregisterCallback( + IN PVOID CbRegistration); + +NTOSAPI +NTSTATUS +DDKAPI +ExUuidCreate( + OUT UUID *Uuid); + +NTOSAPI +BOOLEAN +DDKAPI +ExVerifySuite( + IN SUITE_TYPE SuiteType); + +#ifdef DBG + +#define PAGED_CODE() { \ + if (KeGetCurrentIrql() > APC_LEVEL) { \ + KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \ + assert(FALSE); \ + } \ +} + +#else + +#define PAGED_CODE() + +#endif + +NTOSAPI +VOID +DDKAPI +ProbeForRead( + IN CONST VOID *Address, + IN ULONG Length, + IN ULONG Alignment); + +NTOSAPI +VOID +DDKAPI +ProbeForWrite( + IN CONST VOID *Address, + IN ULONG Length, + IN ULONG Alignment); + + + +/** Configuration manager routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +CmRegisterCallback( + IN PEX_CALLBACK_FUNCTION Function, + IN PVOID Context, + IN OUT PLARGE_INTEGER Cookie); + +NTOSAPI +NTSTATUS +DDKAPI +CmUnRegisterCallback( + IN LARGE_INTEGER Cookie); + + + +/** Filesystem runtime library routines **/ + +NTOSAPI +BOOLEAN +DDKAPI +FsRtlIsTotalDeviceFailure( + IN NTSTATUS Status); + + + +/** Hardware abstraction layer routines **/ + +NTOSAPI +VOID +DDKFASTAPI +HalExamineMBR( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG SectorSize, + IN ULONG MBRTypeIdentifier, + OUT PVOID Buffer); + +NTOSAPI +VOID +DDKAPI +READ_PORT_BUFFER_UCHAR( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +READ_PORT_BUFFER_ULONG( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +READ_PORT_BUFFER_USHORT( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); + +NTOSAPI +UCHAR +DDKAPI +READ_PORT_UCHAR( + IN PUCHAR Port); + +NTOSAPI +ULONG +DDKAPI +READ_PORT_ULONG( + IN PULONG Port); + +NTOSAPI +USHORT +DDKAPI +READ_PORT_USHORT( + IN PUSHORT Port); + +NTOSAPI +VOID +DDKAPI +READ_REGISTER_BUFFER_UCHAR( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +READ_REGISTER_BUFFER_ULONG( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +READ_REGISTER_BUFFER_USHORT( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); + +NTOSAPI +UCHAR +DDKAPI +READ_REGISTER_UCHAR( + IN PUCHAR Register); + +NTOSAPI +ULONG +DDKAPI +READ_REGISTER_ULONG( + IN PULONG Register); + +NTOSAPI +USHORT +DDKAPI +READ_REGISTER_USHORT( + IN PUSHORT Register); + +NTOSAPI +VOID +DDKAPI +WRITE_PORT_BUFFER_UCHAR( + IN PUCHAR Port, + IN PUCHAR Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +WRITE_PORT_BUFFER_ULONG( + IN PULONG Port, + IN PULONG Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +WRITE_PORT_BUFFER_USHORT( + IN PUSHORT Port, + IN PUSHORT Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +WRITE_PORT_UCHAR( + IN PUCHAR Port, + IN UCHAR Value); + +NTOSAPI +VOID +DDKAPI +WRITE_PORT_ULONG( + IN PULONG Port, + IN ULONG Value); + +NTOSAPI +VOID +DDKAPI +WRITE_PORT_USHORT( + IN PUSHORT Port, + IN USHORT Value); + +NTOSAPI +VOID +DDKAPI +WRITE_REGISTER_BUFFER_UCHAR( + IN PUCHAR Register, + IN PUCHAR Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +WRITE_REGISTER_BUFFER_ULONG( + IN PULONG Register, + IN PULONG Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +WRITE_REGISTER_BUFFER_USHORT( + IN PUSHORT Register, + IN PUSHORT Buffer, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +WRITE_REGISTER_UCHAR( + IN PUCHAR Register, + IN UCHAR Value); + +NTOSAPI +VOID +DDKAPI +WRITE_REGISTER_ULONG( + IN PULONG Register, + IN ULONG Value); + +NTOSAPI +VOID +DDKAPI +WRITE_REGISTER_USHORT( + IN PUSHORT Register, + IN USHORT Value); + + + +/** I/O manager routines **/ + +NTOSAPI +VOID +DDKAPI +IoAcquireCancelSpinLock( + OUT PKIRQL Irql); + +NTOSAPI +NTSTATUS +DDKAPI +IoAcquireRemoveLockEx( + IN PIO_REMOVE_LOCK RemoveLock, + IN OPTIONAL PVOID Tag OPTIONAL, + IN PCSTR File, + IN ULONG Line, + IN ULONG RemlockSize); + +/* + * NTSTATUS + * IoAcquireRemoveLock( + * IN PIO_REMOVE_LOCK RemoveLock, + * IN OPTIONAL PVOID Tag) + */ +#define IoAcquireRemoveLock(_RemoveLock, \ + _Tag) \ + IoAcquireRemoveLockEx(_RemoveLock, _Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK)) + +/* + * VOID + * IoAdjustPagingPathCount( + * IN PLONG Count, + * IN BOOLEAN Increment) + */ +#define IoAdjustPagingPathCount(_Count, \ + _Increment) \ +{ \ + if (_Increment) \ + { \ + InterlockedIncrement(_Count); \ + } \ + else \ + { \ + InterlockedDecrement(_Count); \ + } \ +} + +NTOSAPI +VOID +DDKAPI +IoAllocateController( + IN PCONTROLLER_OBJECT ControllerObject, + IN PDEVICE_OBJECT DeviceObject, + IN PDRIVER_CONTROL ExecutionRoutine, + IN PVOID Context); + +NTOSAPI +NTSTATUS +DDKAPI +IoAllocateDriverObjectExtension( + IN PDRIVER_OBJECT DriverObject, + IN PVOID ClientIdentificationAddress, + IN ULONG DriverObjectExtensionSize, + OUT PVOID *DriverObjectExtension); + +typedef struct _IO_ERROR_LOG_PACKET { + UCHAR MajorFunctionCode; + UCHAR RetryCount; + USHORT DumpDataSize; + USHORT NumberOfStrings; + USHORT StringOffset; + USHORT EventCategory; + NTSTATUS ErrorCode; + ULONG UniqueErrorValue; + NTSTATUS FinalStatus; + ULONG SequenceNumber; + ULONG IoControlCode; + LARGE_INTEGER DeviceOffset; + ULONG DumpData[1]; +} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET; + +NTOSAPI +PVOID +DDKAPI +IoAllocateErrorLogEntry( + IN PVOID IoObject, + IN UCHAR EntrySize); + +NTOSAPI +PIRP +DDKAPI +IoAllocateIrp( + IN CCHAR StackSize, + IN BOOLEAN ChargeQuota); + +NTOSAPI +PMDL +DDKAPI +IoAllocateMdl( + IN PVOID VirtualAddress, + IN ULONG Length, + IN BOOLEAN SecondaryBuffer, + IN BOOLEAN ChargeQuota, + IN OUT PIRP Irp OPTIONAL); + +NTOSAPI +PIO_WORKITEM +DDKAPI +IoAllocateWorkItem( + IN PDEVICE_OBJECT DeviceObject); + +/* + * VOID IoAssignArcName( + * IN PUNICODE_STRING ArcName, + * IN PUNICODE_STRING DeviceName); + */ +#define IoAssignArcName(_ArcName, _DeviceName) ( \ + IoCreateSymbolicLink((_ArcName), (_DeviceName))) + +NTOSAPI +NTSTATUS +DDKAPI +IoAttachDevice( + IN PDEVICE_OBJECT SourceDevice, + IN PUNICODE_STRING TargetDevice, + OUT PDEVICE_OBJECT *AttachedDevice); + +NTOSAPI +PDEVICE_OBJECT +DDKAPI +IoAttachDeviceToDeviceStack( + IN PDEVICE_OBJECT SourceDevice, + IN PDEVICE_OBJECT TargetDevice); + +NTOSAPI +PIRP +DDKAPI +IoBuildAsynchronousFsdRequest( + IN ULONG MajorFunction, + IN PDEVICE_OBJECT DeviceObject, + IN OUT PVOID Buffer OPTIONAL, + IN ULONG Length OPTIONAL, + IN PLARGE_INTEGER StartingOffset OPTIONAL, + IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL); + +NTOSAPI +PIRP +DDKAPI +IoBuildDeviceIoControlRequest( + IN ULONG IoControlCode, + IN PDEVICE_OBJECT DeviceObject, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength, + IN BOOLEAN InternalDeviceIoControl, + IN PKEVENT Event, + OUT PIO_STATUS_BLOCK IoStatusBlock); + +NTOSAPI +VOID +DDKAPI +IoBuildPartialMdl( + IN PMDL SourceMdl, + IN OUT PMDL TargetMdl, + IN PVOID VirtualAddress, + IN ULONG Length); + +NTOSAPI +PIRP +DDKAPI +IoBuildSynchronousFsdRequest( + IN ULONG MajorFunction, + IN PDEVICE_OBJECT DeviceObject, + IN OUT PVOID Buffer OPTIONAL, + IN ULONG Length OPTIONAL, + IN PLARGE_INTEGER StartingOffset OPTIONAL, + IN PKEVENT Event, + OUT PIO_STATUS_BLOCK IoStatusBlock); + +NTOSAPI +NTSTATUS +DDKFASTAPI +IofCallDriver( + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp); + +/* + * NTSTATUS + * IoCallDriver( + * IN PDEVICE_OBJECT DeviceObject, + * IN OUT PIRP Irp) + */ +#define IoCallDriver IofCallDriver + +NTOSAPI +VOID +DDKAPI +IoCancelFileOpen( + IN PDEVICE_OBJECT DeviceObject, + IN PFILE_OBJECT FileObject); + +NTOSAPI +BOOLEAN +DDKAPI +IoCancelIrp( + IN PIRP Irp); + +NTOSAPI +NTSTATUS +DDKAPI +IoCheckShareAccess( + IN ACCESS_MASK DesiredAccess, + IN ULONG DesiredShareAccess, + IN OUT PFILE_OBJECT FileObject, + IN OUT PSHARE_ACCESS ShareAccess, + IN BOOLEAN Update); + +NTOSAPI +VOID +DDKFASTAPI +IofCompleteRequest( + IN PIRP Irp, + IN CCHAR PriorityBoost); + +/* + * VOID + * IoCompleteRequest( + * IN PIRP Irp, + * IN CCHAR PriorityBoost) + */ +#define IoCompleteRequest IofCompleteRequest + +NTOSAPI +NTSTATUS +DDKAPI +IoConnectInterrupt( + OUT PKINTERRUPT *InterruptObject, + IN PKSERVICE_ROUTINE ServiceRoutine, + IN PVOID ServiceContext, + IN PKSPIN_LOCK SpinLock OPTIONAL, + IN ULONG Vector, + IN KIRQL Irql, + IN KIRQL SynchronizeIrql, + IN KINTERRUPT_MODE InterruptMode, + IN BOOLEAN ShareVector, + IN KAFFINITY ProcessorEnableMask, + IN BOOLEAN FloatingSave); + +/* + * PIO_STACK_LOCATION + * IoGetCurrentIrpStackLocation( + * IN PIRP Irp) + */ +#define IoGetCurrentIrpStackLocation(_Irp) \ + ((_Irp)->Tail.Overlay.CurrentStackLocation) + +/* + * PIO_STACK_LOCATION + * IoGetNextIrpStackLocation( + * IN PIRP Irp) + */ +#define IoGetNextIrpStackLocation(_Irp) \ + ((_Irp)->Tail.Overlay.CurrentStackLocation - 1) + +/* + * VOID + * IoCopyCurrentIrpStackLocationToNext( + * IN PIRP Irp) + */ +#define IoCopyCurrentIrpStackLocationToNext(_Irp) \ +{ \ + PIO_STACK_LOCATION _IrpSp; \ + PIO_STACK_LOCATION _NextIrpSp; \ + _IrpSp = IoGetCurrentIrpStackLocation(_Irp); \ + _NextIrpSp = IoGetNextIrpStackLocation(_Irp); \ + RtlCopyMemory(_NextIrpSp, _IrpSp, \ + FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); \ + _NextIrpSp->Control = 0; \ +} + +NTOSAPI +PCONTROLLER_OBJECT +DDKAPI +IoCreateController( + IN ULONG Size); + +NTOSAPI +NTSTATUS +DDKAPI +IoCreateDevice( + IN PDRIVER_OBJECT DriverObject, + IN ULONG DeviceExtensionSize, + IN PUNICODE_STRING DeviceName OPTIONAL, + IN DEVICE_TYPE DeviceType, + IN ULONG DeviceCharacteristics, + IN BOOLEAN Exclusive, + OUT PDEVICE_OBJECT *DeviceObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoCreateDisk( + IN PDEVICE_OBJECT DeviceObject, + IN PCREATE_DISK Disk); + +NTOSAPI +NTSTATUS +DDKAPI +IoCreateFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER AllocationSize OPTIONAL, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG Disposition, + IN ULONG CreateOptions, + IN PVOID EaBuffer OPTIONAL, + IN ULONG EaLength, + IN CREATE_FILE_TYPE CreateFileType, + IN PVOID ExtraCreateParameters OPTIONAL, + IN ULONG Options); + +NTOSAPI +PKEVENT +DDKAPI +IoCreateNotificationEvent( + IN PUNICODE_STRING EventName, + OUT PHANDLE EventHandle); + +NTOSAPI +NTSTATUS +DDKAPI +IoCreateSymbolicLink( + IN PUNICODE_STRING SymbolicLinkName, + IN PUNICODE_STRING DeviceName); + +NTOSAPI +PKEVENT +DDKAPI +IoCreateSynchronizationEvent( + IN PUNICODE_STRING EventName, + OUT PHANDLE EventHandle); + +NTOSAPI +NTSTATUS +DDKAPI +IoCreateUnprotectedSymbolicLink( + IN PUNICODE_STRING SymbolicLinkName, + IN PUNICODE_STRING DeviceName); + +NTOSAPI +VOID +DDKAPI +IoCsqInitialize( + PIO_CSQ Csq, + IN PIO_CSQ_INSERT_IRP CsqInsertIrp, + IN PIO_CSQ_REMOVE_IRP CsqRemoveIrp, + IN PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp, + IN PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock, + IN PIO_CSQ_RELEASE_LOCK CsqReleaseLock, + IN PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp); + +NTOSAPI +VOID +DDKAPI +IoCsqInsertIrp( + IN PIO_CSQ Csq, + IN PIRP Irp, + IN PIO_CSQ_IRP_CONTEXT Context); + +NTOSAPI +PIRP +DDKAPI +IoCsqRemoveIrp( + IN PIO_CSQ Csq, + IN PIO_CSQ_IRP_CONTEXT Context); + +NTOSAPI +PIRP +DDKAPI +IoCsqRemoveNextIrp( + IN PIO_CSQ Csq, + IN PVOID PeekContext); + +NTOSAPI +VOID +DDKAPI +IoDeleteController( + IN PCONTROLLER_OBJECT ControllerObject); + +NTOSAPI +VOID +DDKAPI +IoDeleteDevice( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoDeleteSymbolicLink( + IN PUNICODE_STRING SymbolicLinkName); + +/* + * VOID + * IoDeassignArcName( + * IN PUNICODE_STRING ArcName) + */ +#define IoDeassignArcName IoDeleteSymbolicLink + +NTOSAPI +VOID +DDKAPI +IoDetachDevice( + IN OUT PDEVICE_OBJECT TargetDevice); + +NTOSAPI +VOID +DDKAPI +IoDisconnectInterrupt( + IN PKINTERRUPT InterruptObject); + +NTOSAPI +BOOLEAN +DDKAPI +IoForwardIrpSynchronously( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +#define IoForwardAndCatchIrp IoForwardIrpSynchronously + +NTOSAPI +VOID +DDKAPI +IoFreeController( + IN PCONTROLLER_OBJECT ControllerObject); + +NTOSAPI +VOID +DDKAPI +IoFreeErrorLogEntry( + PVOID ElEntry); + +NTOSAPI +VOID +DDKAPI +IoFreeIrp( + IN PIRP Irp); + +NTOSAPI +VOID +DDKAPI +IoFreeMdl( + IN PMDL Mdl); + +NTOSAPI +VOID +DDKAPI +IoFreeWorkItem( + IN PIO_WORKITEM pIOWorkItem); + +NTOSAPI +PDEVICE_OBJECT +DDKAPI +IoGetAttachedDevice( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +PDEVICE_OBJECT +DDKAPI +IoGetAttachedDeviceReference( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoGetBootDiskInformation( + IN OUT PBOOTDISK_INFORMATION BootDiskInformation, + IN ULONG Size); + +NTOSAPI +PCONFIGURATION_INFORMATION +DDKAPI +IoGetConfigurationInformation( + VOID); + +NTOSAPI +PEPROCESS +DDKAPI +IoGetCurrentProcess( + VOID); + +NTOSAPI +NTSTATUS +DDKAPI +IoGetDeviceInterfaceAlias( + IN PUNICODE_STRING SymbolicLinkName, + IN CONST GUID *AliasInterfaceClassGuid, + OUT PUNICODE_STRING AliasSymbolicLinkName); + +NTOSAPI +NTSTATUS +DDKAPI +IoGetDeviceInterfaces( + IN CONST GUID *InterfaceClassGuid, + IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, + IN ULONG Flags, + OUT PWSTR *SymbolicLinkList); + +NTOSAPI +NTSTATUS +DDKAPI +IoGetDeviceObjectPointer( + IN PUNICODE_STRING ObjectName, + IN ACCESS_MASK DesiredAccess, + OUT PFILE_OBJECT *FileObject, + OUT PDEVICE_OBJECT *DeviceObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoGetDeviceProperty( + IN PDEVICE_OBJECT DeviceObject, + IN DEVICE_REGISTRY_PROPERTY DeviceProperty, + IN ULONG BufferLength, + OUT PVOID PropertyBuffer, + OUT PULONG ResultLength); + +NTOSAPI +PDEVICE_OBJECT +DDKAPI +IoGetDeviceToVerify( + IN PETHREAD Thread); + +NTOSAPI +PDMA_ADAPTER +DDKAPI +IoGetDmaAdapter( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PDEVICE_DESCRIPTION DeviceDescription, + IN OUT PULONG NumberOfMapRegisters); + +NTOSAPI +PVOID +DDKAPI +IoGetDriverObjectExtension( + IN PDRIVER_OBJECT DriverObject, + IN PVOID ClientIdentificationAddress); + +NTOSAPI +PGENERIC_MAPPING +DDKAPI +IoGetFileObjectGenericMapping( + VOID); + +/* + * ULONG + * IoGetFunctionCodeFromCtlCode( + * IN ULONG ControlCode) + */ +#define IoGetFunctionCodeFromCtlCode(_ControlCode) \ + (((_ControlCode) >> 2) & 0x00000FFF) + +NTOSAPI +PVOID +DDKAPI +IoGetInitialStack( + VOID); + +NTOSAPI +PDEVICE_OBJECT +DDKAPI +IoGetRelatedDeviceObject( + IN PFILE_OBJECT FileObject); + +NTOSAPI +ULONG +DDKAPI +IoGetRemainingStackSize( + VOID); + +NTOSAPI +VOID +DDKAPI +IoGetStackLimits( + OUT PULONG_PTR LowLimit, + OUT PULONG_PTR HighLimit); + +NTOSAPI +VOID +DDKAPI +KeInitializeDpc( + IN PRKDPC Dpc, + IN PKDEFERRED_ROUTINE DeferredRoutine, + IN PVOID DeferredContext); + +/* + * VOID + * IoInitializeDpcRequest( + * IN PDEVICE_OBJECT DeviceObject, + * IN PIO_DPC_ROUTINE DpcRoutine) + */ +#define IoInitializeDpcRequest(_DeviceObject, \ + _DpcRoutine) \ + KeInitializeDpc(&(_DeviceObject)->Dpc, \ + (PKDEFERRED_ROUTINE) (_DpcRoutine), \ + _DeviceObject) + +NTOSAPI +VOID +DDKAPI +IoInitializeIrp( + IN OUT PIRP Irp, + IN USHORT PacketSize, + IN CCHAR StackSize); + +NTOSAPI +VOID +DDKAPI +IoInitializeRemoveLockEx( + IN PIO_REMOVE_LOCK Lock, + IN ULONG AllocateTag, + IN ULONG MaxLockedMinutes, + IN ULONG HighWatermark, + IN ULONG RemlockSize); + +/* VOID + * IoInitializeRemoveLock( + * IN PIO_REMOVE_LOCK Lock, + * IN ULONG AllocateTag, + * IN ULONG MaxLockedMinutes, + * IN ULONG HighWatermark) + */ +#define IoInitializeRemoveLock( \ + Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \ + IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \ + HighWatermark, sizeof(IO_REMOVE_LOCK)) + +NTOSAPI +NTSTATUS +DDKAPI +IoInitializeTimer( + IN PDEVICE_OBJECT DeviceObject, + IN PIO_TIMER_ROUTINE TimerRoutine, + IN PVOID Context); + +NTOSAPI +VOID +DDKAPI +IoInvalidateDeviceRelations( + IN PDEVICE_OBJECT DeviceObject, + IN DEVICE_RELATION_TYPE Type); + +NTOSAPI +VOID +DDKAPI +IoInvalidateDeviceState( + IN PDEVICE_OBJECT PhysicalDeviceObject); + +NTOSAPI +BOOLEAN +DDKAPI +IoIs32bitProcess( + IN PIRP Irp OPTIONAL); + +/* + * BOOLEAN + * IoIsErrorUserInduced( + * IN NTSTATUS Status); + */ +#define IoIsErrorUserInduced(Status) \ + ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \ + ((Status) == STATUS_IO_TIMEOUT) || \ + ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \ + ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \ + ((Status) == STATUS_VERIFY_REQUIRED) || \ + ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \ + ((Status) == STATUS_WRONG_VOLUME))) + +NTOSAPI +BOOLEAN +DDKAPI +IoIsWdmVersionAvailable( + IN UCHAR MajorVersion, + IN UCHAR MinorVersion); + +NTOSAPI +PIRP +DDKAPI +IoMakeAssociatedIrp( + IN PIRP Irp, + IN CCHAR StackSize); + +/* + * VOID + * IoMarkIrpPending( + * IN OUT PIRP Irp) + */ +#define IoMarkIrpPending(_Irp) \ + (IoGetCurrentIrpStackLocation(_Irp)->Control |= SL_PENDING_RETURNED) + +NTOSAPI +NTSTATUS +DDKAPI +IoOpenDeviceInterfaceRegistryKey( + IN PUNICODE_STRING SymbolicLinkName, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE DeviceInterfaceKey); + +NTOSAPI +NTSTATUS +DDKAPI +IoOpenDeviceRegistryKey( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG DevInstKeyType, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE DevInstRegKey); + +NTOSAPI +NTSTATUS +DDKAPI +IoQueryDeviceDescription( + IN PINTERFACE_TYPE BusType OPTIONAL, + IN PULONG BusNumber OPTIONAL, + IN PCONFIGURATION_TYPE ControllerType OPTIONAL, + IN PULONG ControllerNumber OPTIONAL, + IN PCONFIGURATION_TYPE PeripheralType OPTIONAL, + IN PULONG PeripheralNumber OPTIONAL, + IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, + IN PVOID Context); + +NTOSAPI +VOID +DDKAPI +IoQueueWorkItem( + IN PIO_WORKITEM pIOWorkItem, + IN PIO_WORKITEM_ROUTINE Routine, + IN WORK_QUEUE_TYPE QueueType, + IN PVOID Context); + +NTOSAPI +VOID +DDKAPI +IoRaiseHardError( + IN PIRP Irp, + IN PVPB Vpb OPTIONAL, + IN PDEVICE_OBJECT RealDeviceObject); + +NTOSAPI +BOOLEAN +DDKAPI +IoRaiseInformationalHardError( + IN NTSTATUS ErrorStatus, + IN PUNICODE_STRING String OPTIONAL, + IN PKTHREAD Thread OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +IoReadDiskSignature( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG BytesPerSector, + OUT PDISK_SIGNATURE Signature); + +NTOSAPI +NTSTATUS +DDKAPI +IoReadPartitionTableEx( + IN PDEVICE_OBJECT DeviceObject, + IN struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer); + +NTOSAPI +VOID +DDKAPI +IoRegisterBootDriverReinitialization( + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, + IN PVOID Context); + +NTOSAPI +VOID +DDKAPI +IoRegisterBootDriverReinitialization( + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, + IN PVOID Context); + +NTOSAPI +NTSTATUS +DDKAPI +IoRegisterDeviceInterface( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN CONST GUID *InterfaceClassGuid, + IN PUNICODE_STRING ReferenceString OPTIONAL, + OUT PUNICODE_STRING SymbolicLinkName); + +NTOSAPI +VOID +DDKAPI +IoRegisterDriverReinitialization( + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_REINITIALIZE DriverReinitializationRoutine, + IN PVOID Context); + +NTOSAPI +NTSTATUS +DDKAPI +IoRegisterPlugPlayNotification( + IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory, + IN ULONG EventCategoryFlags, + IN PVOID EventCategoryData OPTIONAL, + IN PDRIVER_OBJECT DriverObject, + IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine, + IN PVOID Context, + OUT PVOID *NotificationEntry); + +NTOSAPI +NTSTATUS +DDKAPI +IoRegisterShutdownNotification( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +VOID +DDKAPI +IoReleaseCancelSpinLock( + IN KIRQL Irql); + +NTOSAPI +VOID +DDKAPI +IoReleaseRemoveLockAndWaitEx( + IN PIO_REMOVE_LOCK RemoveLock, + IN PVOID Tag, + IN ULONG RemlockSize); + +NTOSAPI +VOID +DDKAPI +IoReleaseRemoveLockEx( + IN PIO_REMOVE_LOCK RemoveLock, + IN PVOID Tag, + IN ULONG RemlockSize); + +/* + * VOID + * IoReleaseRemoveLockAndWait( + * IN PIO_REMOVE_LOCK RemoveLock, + * IN PVOID Tag) + */ +#define IoReleaseRemoveLockAndWait(_RemoveLock, \ + _Tag) \ + IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK)) + +NTOSAPI +VOID +DDKAPI +IoRemoveShareAccess( + IN PFILE_OBJECT FileObject, + IN OUT PSHARE_ACCESS ShareAccess); + +NTOSAPI +NTSTATUS +DDKAPI +IoReportDetectedDevice( + IN PDRIVER_OBJECT DriverObject, + IN INTERFACE_TYPE LegacyBusType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PCM_RESOURCE_LIST ResourceList, + IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL, + IN BOOLEAN ResourceAssigned, + IN OUT PDEVICE_OBJECT *DeviceObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoReportResourceForDetection( + IN PDRIVER_OBJECT DriverObject, + IN PCM_RESOURCE_LIST DriverList OPTIONAL, + IN ULONG DriverListSize OPTIONAL, + IN PDEVICE_OBJECT DeviceObject OPTIONAL, + IN PCM_RESOURCE_LIST DeviceList OPTIONAL, + IN ULONG DeviceListSize OPTIONAL, + OUT PBOOLEAN ConflictDetected); + +NTOSAPI +NTSTATUS +DDKAPI +IoReportResourceUsage( + IN PUNICODE_STRING DriverClassName OPTIONAL, + IN PDRIVER_OBJECT DriverObject, + IN PCM_RESOURCE_LIST DriverList OPTIONAL, + IN ULONG DriverListSize OPTIONAL, + IN PDEVICE_OBJECT DeviceObject, + IN PCM_RESOURCE_LIST DeviceList OPTIONAL, + IN ULONG DeviceListSize OPTIONAL, + IN BOOLEAN OverrideConflict, + OUT PBOOLEAN ConflictDetected); + +NTOSAPI +NTSTATUS +DDKAPI +IoReportTargetDeviceChange( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PVOID NotificationStructure); + +NTOSAPI +NTSTATUS +DDKAPI +IoReportTargetDeviceChangeAsynchronous( + IN PDEVICE_OBJECT PhysicalDeviceObject, + IN PVOID NotificationStructure, + IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL, + IN PVOID Context OPTIONAL); + +NTOSAPI +VOID +DDKAPI +IoRequestDeviceEject( + IN PDEVICE_OBJECT PhysicalDeviceObject); + +/* + * VOID + * IoRequestDpc( + * IN PDEVICE_OBJECT DeviceObject, + * IN PIRP Irp, + * IN PVOID Context); + */ +#define IoRequestDpc(DeviceObject, Irp, Context)( \ + KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context))) + +NTOSAPI +VOID +DDKAPI +IoReuseIrp( + IN OUT PIRP Irp, + IN NTSTATUS Status); + +/* + * PDRIVER_CANCEL + * IoSetCancelRoutine( + * IN PIRP Irp, + * IN PDRIVER_CANCEL CancelRoutine) + */ +#define IoSetCancelRoutine(_Irp, \ + _CancelRoutine) \ + ((PDRIVER_CANCEL) InterlockedExchangePointer( \ + (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (_CancelRoutine))) + +/* + * VOID + * IoSetCompletionRoutine( + * IN PIRP Irp, + * IN PIO_COMPLETION_ROUTINE CompletionRoutine, + * IN PVOID Context, + * IN BOOLEAN InvokeOnSuccess, + * IN BOOLEAN InvokeOnError, + * IN BOOLEAN InvokeOnCancel) + */ +#define IoSetCompletionRoutine(_Irp, \ + _CompletionRoutine, \ + _Context, \ + _InvokeOnSuccess, \ + _InvokeOnError, \ + _InvokeOnCancel) \ +{ \ + PIO_STACK_LOCATION _IrpSp; \ + assert(_InvokeOnSuccess || _InvokeOnError || _InvokeOnCancel ? \ + _CompletionRoutine != NULL : TRUE); \ + _IrpSp = IoGetNextIrpStackLocation(_Irp); \ + _IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \ + _IrpSp->Context = (_Context); \ + _IrpSp->Control = 0; \ + if (_InvokeOnSuccess) _IrpSp->Control = SL_INVOKE_ON_SUCCESS; \ + if (_InvokeOnError) _IrpSp->Control |= SL_INVOKE_ON_ERROR; \ + if (_InvokeOnCancel) _IrpSp->Control |= SL_INVOKE_ON_CANCEL; \ +} + +NTOSAPI +VOID +DDKAPI +IoSetCompletionRoutineEx( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PIO_COMPLETION_ROUTINE CompletionRoutine, + IN PVOID Context, + IN BOOLEAN InvokeOnSuccess, + IN BOOLEAN InvokeOnError, + IN BOOLEAN InvokeOnCancel); + +NTOSAPI +NTSTATUS +DDKAPI +IoSetDeviceInterfaceState( + IN PUNICODE_STRING SymbolicLinkName, + IN BOOLEAN Enable); + +NTOSAPI +VOID +DDKAPI +IoSetHardErrorOrVerifyDevice( + IN PIRP Irp, + IN PDEVICE_OBJECT DeviceObject); + +/* + * VOID + * IoSetNextIrpStackLocation( + * IN OUT PIRP Irp) + */ +#define IoSetNextIrpStackLocation(_Irp) \ +{ \ + (_Irp)->CurrentLocation--; \ + (_Irp)->Tail.Overlay.CurrentStackLocation--; \ +} + +NTOSAPI +NTSTATUS +DDKAPI +IoSetPartitionInformationEx( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG PartitionNumber, + IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo); + +NTOSAPI +VOID +DDKAPI +IoSetShareAccess( + IN ACCESS_MASK DesiredAccess, + IN ULONG DesiredShareAccess, + IN OUT PFILE_OBJECT FileObject, + OUT PSHARE_ACCESS ShareAccess); + +NTOSAPI +VOID +DDKAPI +IoSetStartIoAttributes( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN DeferredStartIo, + IN BOOLEAN NonCancelable); + +NTOSAPI +NTSTATUS +DDKAPI +IoSetSystemPartition( + IN PUNICODE_STRING VolumeNameString); + +NTOSAPI +BOOLEAN +DDKAPI +IoSetThreadHardErrorMode( + IN BOOLEAN EnableHardErrors); + +/* + * USHORT + * IoSizeOfIrp( + * IN CCHAR StackSize) + */ +#define IoSizeOfIrp(_StackSize) \ + ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION))))) + +/* + * VOID + * IoSkipCurrentIrpStackLocation( + * IN PIRP Irp) + */ +#define IoSkipCurrentIrpStackLocation(_Irp) \ +{ \ + (_Irp)->CurrentLocation++; \ + (_Irp)->Tail.Overlay.CurrentStackLocation++; \ +} + +NTOSAPI +VOID +DDKAPI +IoStartNextPacket( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN Cancelable); + +NTOSAPI +VOID +DDKAPI +IoStartNextPacketByKey( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN Cancelable, + IN ULONG Key); + +NTOSAPI +VOID +DDKAPI +IoStartPacket( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PULONG Key OPTIONAL, + IN PDRIVER_CANCEL CancelFunction OPTIONAL); + +NTOSAPI +VOID +DDKAPI +IoStartTimer( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +VOID +DDKAPI +IoStopTimer( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoUnregisterPlugPlayNotification( + IN PVOID NotificationEntry); + +NTOSAPI +VOID +DDKAPI +IoUnregisterShutdownNotification( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +VOID +DDKAPI +IoUpdateShareAccess( + IN PFILE_OBJECT FileObject, + IN OUT PSHARE_ACCESS ShareAccess); + +NTOSAPI +NTSTATUS +DDKAPI +IoVerifyPartitionTable( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN FixErrors); + +NTOSAPI +NTSTATUS +DDKAPI +IoVolumeDeviceToDosName( + IN PVOID VolumeDeviceObject, + OUT PUNICODE_STRING DosName); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIAllocateInstanceIds( + IN GUID *Guid, + IN ULONG InstanceCount, + OUT ULONG *FirstInstanceId); + +NTOSAPI +ULONG +DDKAPI +IoWMIDeviceObjectToProviderId( + IN PDEVICE_OBJECT DeviceObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIDeviceObjectToInstanceName( + IN PVOID DataBlockObject, + IN PDEVICE_OBJECT DeviceObject, + OUT PUNICODE_STRING InstanceName); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIExecuteMethod( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN ULONG MethodId, + IN ULONG InBufferSize, + IN OUT PULONG OutBufferSize, + IN OUT PUCHAR InOutBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIHandleToInstanceName( + IN PVOID DataBlockObject, + IN HANDLE FileHandle, + OUT PUNICODE_STRING InstanceName); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIOpenBlock( + IN GUID *DataBlockGuid, + IN ULONG DesiredAccess, + OUT PVOID *DataBlockObject); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIQueryAllData( + IN PVOID DataBlockObject, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIQueryAllDataMultiple( + IN PVOID *DataBlockObjectList, + IN ULONG ObjectCount, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIQuerySingleInstance( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIQuerySingleInstanceMultiple( + IN PVOID *DataBlockObjectList, + IN PUNICODE_STRING InstanceNames, + IN ULONG ObjectCount, + IN OUT ULONG *InOutBufferSize, + OUT PVOID OutBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIRegistrationControl( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG Action); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMISetNotificationCallback( + IN PVOID Object, + IN WMI_NOTIFICATION_CALLBACK Callback, + IN PVOID Context); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMISetSingleInstance( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN ULONG Version, + IN ULONG ValueBufferSize, + IN PVOID ValueBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMISetSingleItem( + IN PVOID DataBlockObject, + IN PUNICODE_STRING InstanceName, + IN ULONG DataItemId, + IN ULONG Version, + IN ULONG ValueBufferSize, + IN PVOID ValueBuffer); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMISuggestInstanceName( + IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, + IN PUNICODE_STRING SymbolicLinkName OPTIONAL, + IN BOOLEAN CombineNames, + OUT PUNICODE_STRING SuggestedInstanceName); + +NTOSAPI +NTSTATUS +DDKAPI +IoWMIWriteEvent( + IN PVOID WnodeEventItem); + +NTOSAPI +VOID +DDKAPI +IoWriteErrorLogEntry( + IN PVOID ElEntry); + +NTOSAPI +NTSTATUS +DDKAPI +IoWritePartitionTableEx( + IN PDEVICE_OBJECT DeviceObject, + IN struct _DRIVE_LAYOUT_INFORMATION_EX *PartitionBuffer); + + + +/** Kernel routines **/ + +NTOSAPI +VOID +DDKFASTAPI +KeAcquireInStackQueuedSpinLock( + IN PKSPIN_LOCK SpinLock, + IN PKLOCK_QUEUE_HANDLE LockHandle); + +NTOSAPI +VOID +DDKFASTAPI +KeAcquireInStackQueuedSpinLockAtDpcLevel( + IN PKSPIN_LOCK SpinLock, + IN PKLOCK_QUEUE_HANDLE LockHandle); + +NTOSAPI +KIRQL +DDKAPI +KeAcquireInterruptSpinLock( + IN PKINTERRUPT Interrupt); + +NTOSAPI +VOID +DDKAPI +KeAcquireSpinLock( + IN PKSPIN_LOCK SpinLock, + OUT PKIRQL OldIrql); + +/* System Service Dispatch Table */ +typedef struct _SSDT { + ULONG SysCallPtr; +} SSDT, *PSSDT; + +/* System Service Parameters Table */ +typedef struct _SSPT { + ULONG ParamBytes; +} SSPT, *PSSPT; + +typedef struct _SSDT_ENTRY { + PSSDT SSDT; + PULONG ServiceCounterTable; + ULONG NumberOfServices; + PSSPT SSPT; +} SSDT_ENTRY, *PSSDT_ENTRY; + +NTOSAPI +BOOLEAN +DDKAPI +KeAddSystemServiceTable( + IN PSSDT SSDT, + IN PULONG ServiceCounterTable, + IN ULONG NumberOfServices, + IN PSSPT SSPT, + IN ULONG TableIndex); + +NTOSAPI +BOOLEAN +DDKAPI +KeAreApcsDisabled( + VOID); + +NTOSAPI +VOID +DDKAPI +KeAttachProcess( + IN PEPROCESS Process); + +NTOSAPI +VOID +DDKAPI +KeBugCheck( + IN ULONG BugCheckCode); + +NTOSAPI +VOID +DDKAPI +KeBugCheckEx( + IN ULONG BugCheckCode, + IN ULONG_PTR BugCheckParameter1, + IN ULONG_PTR BugCheckParameter2, + IN ULONG_PTR BugCheckParameter3, + IN ULONG_PTR BugCheckParameter4); + +NTOSAPI +BOOLEAN +DDKAPI +KeCancelTimer( + IN PKTIMER Timer); + +NTOSAPI +VOID +DDKAPI +KeClearEvent( + IN PRKEVENT Event); + +NTOSAPI +NTSTATUS +DDKAPI +KeDelayExecutionThread( + IN KPROCESSOR_MODE WaitMode, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Interval); + +NTOSAPI +BOOLEAN +DDKAPI +KeDeregisterBugCheckCallback( + IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord); + +NTOSAPI +VOID +DDKAPI +KeDetachProcess( + VOID); + +NTOSAPI +VOID +DDKAPI +KeEnterCriticalRegion( + VOID); + +/* + * VOID + * KeFlushIoBuffers( + * IN PMDL Mdl, + * IN BOOLEAN ReadOperation, + * IN BOOLEAN DmaOperation) + */ +#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation) + +NTOSAPI +PRKTHREAD +DDKAPI +KeGetCurrentThread( + VOID); + +NTOSAPI +KPROCESSOR_MODE +DDKAPI +KeGetPreviousMode( + VOID); + +NTOSAPI +ULONG +DDKAPI +KeGetRecommendedSharedDataAlignment( + VOID); + +NTOSAPI +VOID +DDKAPI +KeInitializeApc( + IN PKAPC Apc, + IN PKTHREAD Thread, + IN UCHAR StateIndex, + IN PKKERNEL_ROUTINE KernelRoutine, + IN PKRUNDOWN_ROUTINE RundownRoutine, + IN PKNORMAL_ROUTINE NormalRoutine, + IN UCHAR Mode, + IN PVOID Context); + +NTOSAPI +VOID +DDKAPI +KeInitializeDeviceQueue( + IN PKDEVICE_QUEUE DeviceQueue); + +NTOSAPI +VOID +DDKAPI +KeInitializeMutex( + IN PRKMUTEX Mutex, + IN ULONG Level); + +NTOSAPI +VOID +DDKAPI +KeInitializeSemaphore( + IN PRKSEMAPHORE Semaphore, + IN LONG Count, + IN LONG Limit); + +NTOSAPI +VOID +DDKAPI +KeInitializeSpinLock( + IN PKSPIN_LOCK SpinLock); + +NTOSAPI +VOID +DDKAPI +KeInitializeTimer( + IN PKTIMER Timer); + +NTOSAPI +VOID +DDKAPI +KeInitializeTimerEx( + IN PKTIMER Timer, + IN TIMER_TYPE Type); + +NTOSAPI +BOOLEAN +DDKAPI +KeInsertByKeyDeviceQueue( + IN PKDEVICE_QUEUE DeviceQueue, + IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry, + IN ULONG SortKey); + +NTOSAPI +BOOLEAN +DDKAPI +KeInsertDeviceQueue( + IN PKDEVICE_QUEUE DeviceQueue, + IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); + +NTOSAPI +BOOLEAN +DDKAPI +KeInsertQueueDpc( + IN PRKDPC Dpc, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2); + +NTOSAPI +VOID +DDKAPI +KeLeaveCriticalRegion( + VOID); + +NTOSAPI +VOID +DDKAPI +KeLowerIrql( + IN KIRQL NewIrql); + +NTOSAPI +NTSTATUS +DDKAPI +KePulseEvent( + IN PRKEVENT Event, + IN KPRIORITY Increment, + IN BOOLEAN Wait); + +NTOSAPI +ULONGLONG +DDKAPI +KeQueryInterruptTime( + VOID); + +NTOSAPI +LARGE_INTEGER +DDKAPI +KeQueryPerformanceCounter( + OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL); + +NTOSAPI +KPRIORITY +DDKAPI +KeQueryPriorityThread( + IN PRKTHREAD Thread); + +NTOSAPI +VOID +DDKAPI +KeQuerySystemTime( + OUT PLARGE_INTEGER CurrentTime); + +NTOSAPI +VOID +DDKAPI +KeQueryTickCount( + OUT PLARGE_INTEGER TickCount); + +NTOSAPI +ULONG +DDKAPI +KeQueryTimeIncrement( + VOID); + +NTOSAPI +VOID +DDKAPI +KeRaiseIrql( + IN KIRQL NewIrql, + OUT PKIRQL OldIrql); + +NTOSAPI +KIRQL +DDKAPI +KeRaiseIrqlToDpcLevel( + VOID); + +NTOSAPI +LONG +DDKAPI +KeReadStateEvent( + IN PRKEVENT Event); + +NTOSAPI +LONG +DDKAPI +KeReadStateMutex( + IN PRKMUTEX Mutex); + +NTOSAPI +LONG +DDKAPI +KeReadStateSemaphore( + IN PRKSEMAPHORE Semaphore); + +NTOSAPI +BOOLEAN +DDKAPI +KeReadStateTimer( + IN PKTIMER Timer); + +NTOSAPI +BOOLEAN +DDKAPI +KeRegisterBugCheckCallback( + IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord, + IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine, + IN PVOID Buffer, + IN ULONG Length, + IN PUCHAR Component); + +NTOSAPI +VOID +DDKFASTAPI +KeReleaseInStackQueuedSpinLock( + IN PKLOCK_QUEUE_HANDLE LockHandle); + +NTOSAPI +VOID +DDKFASTAPI +KeReleaseInStackQueuedSpinLockFromDpcLevel( + IN PKLOCK_QUEUE_HANDLE LockHandle); + +NTOSAPI +VOID +DDKAPI +KeReleaseInterruptSpinLock( + IN PKINTERRUPT Interrupt, + IN KIRQL OldIrql); + +NTOSAPI +LONG +DDKAPI +KeReleaseMutex( + IN PRKMUTEX Mutex, + IN BOOLEAN Wait); + +NTOSAPI +LONG +DDKAPI +KeReleaseSemaphore( + IN PRKSEMAPHORE Semaphore, + IN KPRIORITY Increment, + IN LONG Adjustment, + IN BOOLEAN Wait); + +NTOSAPI +VOID +DDKAPI +KeReleaseSpinLock( + IN PKSPIN_LOCK SpinLock, + IN KIRQL NewIrql); + +NTOSAPI +PKDEVICE_QUEUE_ENTRY +DDKAPI +KeRemoveByKeyDeviceQueue( + IN PKDEVICE_QUEUE DeviceQueue, + IN ULONG SortKey); + +NTOSAPI +PKDEVICE_QUEUE_ENTRY +DDKAPI +KeRemoveDeviceQueue( + IN PKDEVICE_QUEUE DeviceQueue); + +NTOSAPI +BOOLEAN +DDKAPI +KeRemoveEntryDeviceQueue( + IN PKDEVICE_QUEUE DeviceQueue, + IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry); + +NTOSAPI +BOOLEAN +DDKAPI +KeRemoveQueueDpc( + IN PRKDPC Dpc); + +NTOSAPI +LONG +DDKAPI +KeResetEvent( + IN PRKEVENT Event); + +NTOSAPI +NTSTATUS +DDKAPI +KeRestoreFloatingPointState( + IN PKFLOATING_SAVE FloatSave); + +NTOSAPI +NTSTATUS +DDKAPI +KeSaveFloatingPointState( + OUT PKFLOATING_SAVE FloatSave); + +NTOSAPI +LONG +DDKAPI +KeSetBasePriorityThread( + IN PRKTHREAD Thread, + IN LONG Increment); + +NTOSAPI +LONG +DDKAPI +KeSetEvent( + IN PRKEVENT Event, + IN KPRIORITY Increment, + IN BOOLEAN Wait); + +NTOSAPI +VOID +DDKAPI +KeSetImportanceDpc( + IN PRKDPC Dpc, + IN KDPC_IMPORTANCE Importance); + +NTOSAPI +KPRIORITY +DDKAPI +KeSetPriorityThread( + IN PKTHREAD Thread, + IN KPRIORITY Priority); + +NTOSAPI +VOID +DDKAPI +KeSetTargetProcessorDpc( + IN PRKDPC Dpc, + IN CCHAR Number); + +NTOSAPI +BOOLEAN +DDKAPI +KeSetTimer( + IN PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN PKDPC Dpc OPTIONAL); + +NTOSAPI +BOOLEAN +DDKAPI +KeSetTimerEx( + IN PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN LONG Period OPTIONAL, + IN PKDPC Dpc OPTIONAL); + +NTOSAPI +VOID +DDKFASTAPI +KeSetTimeUpdateNotifyRoutine( + IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine); + +NTOSAPI +VOID +DDKAPI +KeStallExecutionProcessor( + IN ULONG MicroSeconds); + +NTOSAPI +BOOLEAN +DDKAPI +KeSynchronizeExecution( + IN PKINTERRUPT Interrupt, + IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, + IN PVOID SynchronizeContext); + +NTOSAPI +NTSTATUS +DDKAPI +KeWaitForMultipleObjects( + IN ULONG Count, + IN PVOID Object[], + IN WAIT_TYPE WaitType, + IN KWAIT_REASON WaitReason, + IN KPROCESSOR_MODE WaitMode, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL, + IN PKWAIT_BLOCK WaitBlockArray OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +KeWaitForMutexObject( + IN PRKMUTEX Mutex, + IN KWAIT_REASON WaitReason, + IN KPROCESSOR_MODE WaitMode, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +KeWaitForSingleObject( + IN PVOID Object, + IN KWAIT_REASON WaitReason, + IN KPROCESSOR_MODE WaitMode, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Timeout OPTIONAL); + + + +/** Memory manager routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +MmAdvanceMdl( + IN PMDL Mdl, + IN ULONG NumberOfBytes); + +NTOSAPI +PVOID +DDKAPI +MmAllocateContiguousMemory( + IN ULONG NumberOfBytes, + IN PHYSICAL_ADDRESS HighestAcceptableAddress); + +NTOSAPI +PVOID +DDKAPI +MmAllocateContiguousMemorySpecifyCache( + IN SIZE_T NumberOfBytes, + IN PHYSICAL_ADDRESS LowestAcceptableAddress, + IN PHYSICAL_ADDRESS HighestAcceptableAddress, + IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL, + IN MEMORY_CACHING_TYPE CacheType); + +NTOSAPI +PVOID +DDKAPI +MmAllocateMappingAddress( + IN SIZE_T NumberOfBytes, + IN ULONG PoolTag); + +NTOSAPI +PVOID +DDKAPI +MmAllocateNonCachedMemory( + IN ULONG NumberOfBytes); + +NTOSAPI +PMDL +DDKAPI +MmAllocatePagesForMdl( + IN PHYSICAL_ADDRESS LowAddress, + IN PHYSICAL_ADDRESS HighAddress, + IN PHYSICAL_ADDRESS SkipBytes, + IN SIZE_T TotalBytes); + +NTOSAPI +VOID +DDKAPI +MmBuildMdlForNonPagedPool( + IN OUT PMDL MemoryDescriptorList); + +NTOSAPI +NTSTATUS +DDKAPI +MmCreateSection( + OUT PSECTION_OBJECT *SectionObject, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN PLARGE_INTEGER MaximumSize, + IN ULONG SectionPageProtection, + IN ULONG AllocationAttributes, + IN HANDLE FileHandle OPTIONAL, + IN PFILE_OBJECT File OPTIONAL); + +typedef enum _MMFLUSH_TYPE { + MmFlushForDelete, + MmFlushForWrite +} MMFLUSH_TYPE; + +NTOSAPI +BOOLEAN +DDKAPI +MmFlushImageSection( + IN PSECTION_OBJECT_POINTERS SectionObjectPointer, + IN MMFLUSH_TYPE FlushType); + +NTOSAPI +VOID +DDKAPI +MmFreeContiguousMemory( + IN PVOID BaseAddress); + +NTOSAPI +VOID +DDKAPI +MmFreeContiguousMemorySpecifyCache( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes, + IN MEMORY_CACHING_TYPE CacheType); + +NTOSAPI +VOID +DDKAPI +MmFreeMappingAddress( + IN PVOID BaseAddress, + IN ULONG PoolTag); + +NTOSAPI +VOID +DDKAPI +MmFreeNonCachedMemory( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes); + +NTOSAPI +VOID +DDKAPI +MmFreePagesFromMdl( + IN PMDL MemoryDescriptorList); + +/* + * ULONG + * MmGetMdlByteCount( + * IN PMDL Mdl) + */ +#define MmGetMdlByteCount(_Mdl) \ + ((_Mdl)->ByteCount) + +/* + * ULONG + * MmGetMdlByteOffset( + * IN PMDL Mdl) + */ +#define MmGetMdlByteOffset(_Mdl) \ + ((_Mdl)->ByteOffset) + +/* + * PPFN_NUMBER + * MmGetMdlPfnArray( + * IN PMDL Mdl) + */ +#define MmGetMdlPfnArray(_Mdl) \ + ((PPFN_NUMBER) ((_Mdl) + 1)) + +/* + * PVOID + * MmGetMdlVirtualAddress( + * IN PMDL Mdl) + */ +#define MmGetMdlVirtualAddress(_Mdl) \ + ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset)) + +NTOSAPI +PHYSICAL_ADDRESS +DDKAPI +MmGetPhysicalAddress( + IN PVOID BaseAddress); + +NTOSAPI +PPHYSICAL_MEMORY_RANGE +DDKAPI +MmGetPhysicalMemoryRanges( + VOID); + +NTOSAPI +PVOID +DDKAPI +MmGetVirtualForPhysical( + IN PHYSICAL_ADDRESS PhysicalAddress); + +NTOSAPI +PVOID +DDKAPI +MmMapLockedPagesSpecifyCache( + IN PMDL MemoryDescriptorList, + IN KPROCESSOR_MODE AccessMode, + IN MEMORY_CACHING_TYPE CacheType, + IN PVOID BaseAddress, + IN ULONG BugCheckOnFailure, + IN MM_PAGE_PRIORITY Priority); + +NTOSAPI +PVOID +DDKAPI +MmMapLockedPagesWithReservedMapping( + IN PVOID MappingAddress, + IN ULONG PoolTag, + IN PMDL MemoryDescriptorList, + IN MEMORY_CACHING_TYPE CacheType); + +NTOSAPI +NTSTATUS +DDKAPI +MmMapUserAddressesToPage( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes, + IN PVOID PageAddress); + +NTOSAPI +PVOID +DDKAPI +MmMapVideoDisplay( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN SIZE_T NumberOfBytes, + IN MEMORY_CACHING_TYPE CacheType); + +NTOSAPI +NTSTATUS +DDKAPI +MmMapViewInSessionSpace( + IN PVOID Section, + OUT PVOID *MappedBase, + IN OUT PSIZE_T ViewSize); + +NTOSAPI +NTSTATUS +DDKAPI +MmMapViewInSystemSpace( + IN PVOID Section, + OUT PVOID *MappedBase, + IN PSIZE_T ViewSize); + +NTOSAPI +NTSTATUS +DDKAPI +MmMarkPhysicalMemoryAsBad( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes); + +NTOSAPI +NTSTATUS +DDKAPI +MmMarkPhysicalMemoryAsGood( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes); + +/* + * PVOID + * MmGetSystemAddressForMdlSafe( + * IN PMDL Mdl, + * IN MM_PAGE_PRIORITY Priority) + */ +#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \ + ((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \ + | MDL_SOURCE_IS_NONPAGED_POOL)) ? \ + (_Mdl)->MappedSystemVa : \ + (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \ + KernelMode, MmCached, NULL, FALSE, _Priority) + +NTOSAPI +PVOID +DDKAPI +MmGetSystemRoutineAddress( + IN PUNICODE_STRING SystemRoutineName); + +/* + * ULONG + * ADDRESS_AND_SIZE_TO_SPAN_PAGES( + * IN PVOID Va, + * IN ULONG Size) + */ +#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, \ + _Size) \ + ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \ + + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT)) + +/* + * VOID + * MmInitializeMdl( + * IN PMDL MemoryDescriptorList, + * IN PVOID BaseVa, + * IN SIZE_T Length) + */ +#define MmInitializeMdl(_MemoryDescriptorList, \ + _BaseVa, \ + _Length) \ +{ \ + (_MemoryDescriptorList)->Next = (PMDL) NULL; \ + (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \ + (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \ + (_MemoryDescriptorList)->MdlFlags = 0; \ + (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \ + (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \ + (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \ +} + +NTOSAPI +BOOLEAN +DDKAPI +MmIsAddressValid( + IN PVOID VirtualAddress); + +NTOSAPI +LOGICAL +DDKAPI +MmIsDriverVerifying( + IN PDRIVER_OBJECT DriverObject); + +NTOSAPI +BOOLEAN +DDKAPI +MmIsThisAnNtAsSystem( + VOID); + +NTOSAPI +NTSTATUS +DDKAPI +MmIsVerifierEnabled( + OUT PULONG VerifierFlags); + +NTOSAPI +PVOID +DDKAPI +MmLockPagableDataSection( + IN PVOID AddressWithinSection); + +NTOSAPI +PVOID +DDKAPI +MmLockPagableImageSection( + IN PVOID AddressWithinSection); + +/* + * PVOID + * MmLockPagableCodeSection( + * IN PVOID AddressWithinSection) + */ +#define MmLockPagableCodeSection MmLockPagableDataSection + +NTOSAPI +VOID +DDKAPI +MmLockPagableSectionByHandle( + IN PVOID ImageSectionHandle); + +NTOSAPI +PVOID +DDKAPI +MmMapIoSpace( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN ULONG NumberOfBytes, + IN MEMORY_CACHING_TYPE CacheEnable); + +NTOSAPI +PVOID +DDKAPI +MmMapLockedPages( + IN PMDL MemoryDescriptorList, + IN KPROCESSOR_MODE AccessMode); + +NTOSAPI +VOID +DDKAPI +MmPageEntireDriver( + IN PVOID AddressWithinSection); + +NTOSAPI +VOID +DDKAPI +MmProbeAndLockProcessPages( + IN OUT PMDL MemoryDescriptorList, + IN PEPROCESS Process, + IN KPROCESSOR_MODE AccessMode, + IN LOCK_OPERATION Operation); + +NTOSAPI +NTSTATUS +DDKAPI +MmProtectMdlSystemAddress( + IN PMDL MemoryDescriptorList, + IN ULONG NewProtect); + +NTOSAPI +VOID +DDKAPI +MmUnmapLockedPages( + IN PVOID BaseAddress, + IN PMDL MemoryDescriptorList); + +NTOSAPI +NTSTATUS +DDKAPI +MmUnmapViewInSessionSpace( + IN PVOID MappedBase); + +NTOSAPI +NTSTATUS +DDKAPI +MmUnmapViewInSystemSpace( + IN PVOID MappedBase); + +NTOSAPI +VOID +DDKAPI +MmUnsecureVirtualMemory( + IN HANDLE SecureHandle); + +/* + * VOID + * MmPrepareMdlForReuse( + * IN PMDL Mdl) + */ +#define MmPrepareMdlForReuse(_Mdl) \ +{ \ + if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \ + assert(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \ + MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \ + } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \ + assert(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \ + } \ +} + +NTOSAPI +VOID +DDKAPI +MmProbeAndLockPages( + IN OUT PMDL MemoryDescriptorList, + IN KPROCESSOR_MODE AccessMode, + IN LOCK_OPERATION Operation); + +NTOSAPI +MM_SYSTEM_SIZE +DDKAPI +MmQuerySystemSize( + VOID); + +NTOSAPI +NTSTATUS +DDKAPI +MmRemovePhysicalMemory( + IN PPHYSICAL_ADDRESS StartAddress, + IN OUT PLARGE_INTEGER NumberOfBytes); + +NTOSAPI +VOID +DDKAPI +MmResetDriverPaging( + IN PVOID AddressWithinSection); + +NTOSAPI +HANDLE +DDKAPI +MmSecureVirtualMemory( + IN PVOID Address, + IN SIZE_T Size, + IN ULONG ProbeMode); + +NTOSAPI +ULONG +DDKAPI +MmSizeOfMdl( + IN PVOID Base, + IN SIZE_T Length); + +NTOSAPI +VOID +DDKAPI +MmUnlockPagableImageSection( + IN PVOID ImageSectionHandle); + +NTOSAPI +VOID +DDKAPI +MmUnlockPages( + IN PMDL MemoryDescriptorList); + +NTOSAPI +VOID +DDKAPI +MmUnmapIoSpace( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes); + +NTOSAPI +VOID +DDKAPI +MmUnmapReservedMapping( + IN PVOID BaseAddress, + IN ULONG PoolTag, + IN PMDL MemoryDescriptorList); + +NTOSAPI +VOID +DDKAPI +MmUnmapVideoDisplay( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes); + + + +/** Object manager routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +ObAssignSecurity( + IN PACCESS_STATE AccessState, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PVOID Object, + IN POBJECT_TYPE Type); + +NTOSAPI +VOID +DDKAPI +ObDereferenceSecurityDescriptor( + PSECURITY_DESCRIPTOR SecurityDescriptor, + ULONG Count); + +NTOSAPI +VOID +DDKFASTAPI +ObfDereferenceObject( + IN PVOID Object); + +/* + * VOID + * ObDereferenceObject( + * IN PVOID Object) + */ +#define ObDereferenceObject ObfDereferenceObject + +NTOSAPI +NTSTATUS +DDKAPI +ObGetObjectSecurity( + IN PVOID Object, + OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, + OUT PBOOLEAN MemoryAllocated); + +NTOSAPI +NTSTATUS +DDKAPI +ObInsertObject( + IN PVOID Object, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG AdditionalReferences, + OUT PVOID* ReferencedObject OPTIONAL, + OUT PHANDLE Handle); + +NTOSAPI +VOID +DDKFASTAPI +ObfReferenceObject( + IN PVOID Object); + +NTOSAPI +NTSTATUS +DDKAPI +ObLogSecurityDescriptor( + IN PSECURITY_DESCRIPTOR InputSecurityDescriptor, + OUT PSECURITY_DESCRIPTOR *OutputSecurityDescriptor, + IN ULONG RefBias); +/* + * VOID + * ObReferenceObject( + * IN PVOID Object) + */ +#define ObReferenceObject ObfReferenceObject + +NTOSAPI +VOID +DDKAPI +ObMakeTemporaryObject( + IN PVOID Object); + +NTOSAPI +NTSTATUS +DDKAPI +ObOpenObjectByName( + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN POBJECT_TYPE ObjectType, + IN OUT PVOID ParseContext OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + IN ACCESS_MASK DesiredAccess, + IN PACCESS_STATE PassedAccessState, + OUT PHANDLE Handle); + +NTOSAPI +NTSTATUS +DDKAPI +ObOpenObjectByPointer( + IN PVOID Object, + IN ULONG HandleAttributes, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + OUT PHANDLE Handle); + +NTOSAPI +NTSTATUS +DDKAPI +ObQueryObjectAuditingByHandle( + IN HANDLE Handle, + OUT PBOOLEAN GenerateOnClose); + +NTOSAPI +NTSTATUS +DDKAPI +ObReferenceObjectByHandle( + IN HANDLE Handle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE ObjectType OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + OUT PVOID *Object, + OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +ObReferenceObjectByName( + IN PUNICODE_STRING ObjectPath, + IN ULONG Attributes, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType, + IN KPROCESSOR_MODE AccessMode, + IN OUT PVOID ParseContext OPTIONAL, + OUT PVOID *Object); + +NTOSAPI +NTSTATUS +DDKAPI +ObReferenceObjectByPointer( + IN PVOID Object, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE ObjectType, + IN KPROCESSOR_MODE AccessMode); + +NTOSAPI +VOID +DDKAPI +ObReferenceSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Count); + +NTOSAPI +VOID +DDKAPI +ObReleaseObjectSecurity( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN MemoryAllocated); + + + +/** Process manager routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +PsCreateSystemProcess( + IN PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +DDKAPI +PsCreateSystemThread( + OUT PHANDLE ThreadHandle, + IN ULONG DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN HANDLE ProcessHandle OPTIONAL, + OUT PCLIENT_ID ClientId OPTIONAL, + IN PKSTART_ROUTINE StartRoutine, + IN PVOID StartContext); + +/* + * PEPROCESS + * PsGetCurrentProcess(VOID) + */ +#define PsGetCurrentProcess IoGetCurrentProcess + +NTOSAPI +HANDLE +DDKAPI +PsGetCurrentProcessId( + VOID); + +/* + * PETHREAD + * PsGetCurrentThread(VOID) + */ +#define PsGetCurrentThread() \ + ((PETHREAD) KeGetCurrentThread()) + +NTOSAPI +HANDLE +DDKAPI +PsGetCurrentThreadId( + VOID); + +NTOSAPI +BOOLEAN +DDKAPI +PsGetVersion( + PULONG MajorVersion OPTIONAL, + PULONG MinorVersion OPTIONAL, + PULONG BuildNumber OPTIONAL, + PUNICODE_STRING CSDVersion OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +PsRemoveCreateThreadNotifyRoutine( + IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); + +NTOSAPI +NTSTATUS +DDKAPI +PsRemoveLoadImageNotifyRoutine( + IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); + +NTOSAPI +NTSTATUS +DDKAPI +PsSetCreateProcessNotifyRoutine( + IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, + IN BOOLEAN Remove); + +NTOSAPI +NTSTATUS +DDKAPI +PsSetCreateThreadNotifyRoutine( + IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine); + +NTOSAPI +NTSTATUS +DDKAPI +PsSetLoadImageNotifyRoutine( + IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine); + +NTOSAPI +NTSTATUS +DDKAPI +PsTerminateSystemThread( + IN NTSTATUS ExitStatus); + + + +/** Security reference monitor routines **/ + +NTOSAPI +BOOLEAN +DDKAPI +SeAccessCheck( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext, + IN BOOLEAN SubjectContextLocked, + IN ACCESS_MASK DesiredAccess, + IN ACCESS_MASK PreviouslyGrantedAccess, + OUT PPRIVILEGE_SET *Privileges OPTIONAL, + IN PGENERIC_MAPPING GenericMapping, + IN KPROCESSOR_MODE AccessMode, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus); + +NTOSAPI +NTSTATUS +DDKAPI +SeAssignSecurity( + IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, + IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, + OUT PSECURITY_DESCRIPTOR *NewDescriptor, + IN BOOLEAN IsDirectoryObject, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext, + IN PGENERIC_MAPPING GenericMapping, + IN POOL_TYPE PoolType); + +NTOSAPI +NTSTATUS +DDKAPI +SeAssignSecurityEx( + IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, + IN PSECURITY_DESCRIPTOR ExplicitDescriptor OPTIONAL, + OUT PSECURITY_DESCRIPTOR *NewDescriptor, + IN GUID *ObjectType OPTIONAL, + IN BOOLEAN IsDirectoryObject, + IN ULONG AutoInheritFlags, + IN PSECURITY_SUBJECT_CONTEXT SubjectContext, + IN PGENERIC_MAPPING GenericMapping, + IN POOL_TYPE PoolType); + +NTOSAPI +NTSTATUS +DDKAPI +SeDeassignSecurity( + IN OUT PSECURITY_DESCRIPTOR *SecurityDescriptor); + +NTOSAPI +BOOLEAN +DDKAPI +SeSinglePrivilegeCheck( + LUID PrivilegeValue, + KPROCESSOR_MODE PreviousMode); + +NTOSAPI +BOOLEAN +DDKAPI +SeValidSecurityDescriptor( + IN ULONG Length, + IN PSECURITY_DESCRIPTOR SecurityDescriptor); + + + +/** NtXxx routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +NtOpenProcess( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +NtQueryInformationProcess( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT PULONG ReturnLength OPTIONAL); + + + +/** NtXxx and ZwXxx routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +ZwCancelTimer( + IN HANDLE TimerHandle, + OUT PBOOLEAN CurrentState OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +NtClose( + IN HANDLE Handle); + +NTOSAPI +NTSTATUS +DDKAPI +ZwClose( + IN HANDLE Handle); + +NTOSAPI +NTSTATUS +DDKAPI +ZwCreateDirectoryObject( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +DDKAPI +NtCreateEvent( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN ManualReset, + IN BOOLEAN InitialState); + +NTOSAPI +NTSTATUS +DDKAPI +ZwCreateEvent( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN ManualReset, + IN BOOLEAN InitialState); + +NTOSAPI +NTSTATUS +DDKAPI +ZwCreateFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER AllocationSize OPTIONAL, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN PVOID EaBuffer OPTIONAL, + IN ULONG EaLength); + +NTOSAPI +NTSTATUS +DDKAPI +ZwCreateKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG TitleIndex, + IN PUNICODE_STRING Class OPTIONAL, + IN ULONG CreateOptions, + OUT PULONG Disposition OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +ZwCreateTimer( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN TIMER_TYPE TimerType); + +NTOSAPI +NTSTATUS +DDKAPI +ZwDeleteKey( + IN HANDLE KeyHandle); + +NTOSAPI +NTSTATUS +DDKAPI +ZwDeleteValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName); + +NTOSAPI +NTSTATUS +DDKAPI +NtDeviceIoControlFile( + IN HANDLE DeviceHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer, + IN ULONG InputBufferSize, + OUT PVOID OutputBuffer, + IN ULONG OutputBufferSize); + +NTOSAPI +NTSTATUS +DDKAPI +ZwDeviceIoControlFile( + IN HANDLE DeviceHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, + IN PVOID UserApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer, + IN ULONG InputBufferSize, + OUT PVOID OutputBuffer, + IN ULONG OutputBufferSize); + +NTOSAPI +NTSTATUS +DDKAPI +ZwEnumerateKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength); + +NTOSAPI +NTSTATUS +DDKAPI +ZwEnumerateValueKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength); + +NTOSAPI +NTSTATUS +DDKAPI +ZwFlushKey( + IN HANDLE KeyHandle); + +NTOSAPI +NTSTATUS +DDKAPI +ZwMakeTemporaryObject( + IN HANDLE Handle); + +NTOSAPI +NTSTATUS +DDKAPI +NtMapViewOfSection( + IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN ULONG CommitSize, + IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PSIZE_T ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG Protect); + +NTOSAPI +NTSTATUS +DDKAPI +ZwMapViewOfSection( + IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN ULONG CommitSize, + IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, + IN OUT PSIZE_T ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG Protect); + +NTOSAPI +NTSTATUS +DDKAPI +NtOpenFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG OpenOptions); + +NTOSAPI +NTSTATUS +DDKAPI +ZwOpenFile( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG OpenOptions); + +NTOSAPI +NTSTATUS +DDKAPI +ZwOpenKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +DDKAPI +ZwOpenSection( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +DDKAPI +ZwOpenSymbolicLinkObject( + OUT PHANDLE LinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +DDKAPI +ZwOpenTimer( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +NTOSAPI +NTSTATUS +DDKAPI +ZwQueryInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass); + +NTOSAPI +NTSTATUS +DDKAPI +ZwQueryKey( + IN HANDLE KeyHandle, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength); + +NTOSAPI +NTSTATUS +DDKAPI +ZwQuerySymbolicLinkObject( + IN HANDLE LinkHandle, + IN OUT PUNICODE_STRING LinkTarget, + OUT PULONG ReturnedLength OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +ZwQueryValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength); + +NTOSAPI +NTSTATUS +DDKAPI +NtReadFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +ZwReadFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +NtSetEvent( + IN HANDLE EventHandle, + IN PULONG NumberOfThreadsReleased); + +NTOSAPI +NTSTATUS +DDKAPI +ZwSetEvent( + IN HANDLE EventHandle, + IN PULONG NumberOfThreadsReleased); + +NTOSAPI +NTSTATUS +DDKAPI +ZwSetInformationFile( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass); + +NTOSAPI +NTSTATUS +DDKAPI +ZwSetInformationThread( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + IN PVOID ThreadInformation, + IN ULONG ThreadInformationLength); + +NTOSAPI +NTSTATUS +DDKAPI +ZwSetTimer( + IN HANDLE TimerHandle, + IN PLARGE_INTEGER DueTime, + IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL, + IN PVOID TimerContext OPTIONAL, + IN BOOLEAN WakeTimer, + IN LONG Period OPTIONAL, + OUT PBOOLEAN PreviousState OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +ZwSetValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN ULONG TitleIndex OPTIONAL, + IN ULONG Type, + IN PVOID Data, + IN ULONG DataSize); + +/* [Nt|Zw]MapViewOfSection.InheritDisposition constants */ +#define AT_EXTENDABLE_FILE 0x00002000 +#define SEC_NO_CHANGE 0x00400000 +#define AT_RESERVED 0x20000000 +#define AT_ROUND_TO_PAGE 0x40000000 + +NTOSAPI +NTSTATUS +DDKAPI +NtUnmapViewOfSection( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress); + +NTOSAPI +NTSTATUS +DDKAPI +ZwUnmapViewOfSection( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress); + +NTOSAPI +NTSTATUS +DDKAPI +NtWaitForSingleObject( + IN HANDLE Object, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time); + +NTOSAPI +NTSTATUS +DDKAPI +ZwWaitForSingleObject( + IN HANDLE Object, + IN BOOLEAN Alertable, + IN PLARGE_INTEGER Time); + +NTOSAPI +NTSTATUS +DDKAPI +NtWriteFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +ZwWriteFile( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + + + +/** Power management support routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +PoCallDriver( + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp); + +NTOSAPI +PULONG +DDKAPI +PoRegisterDeviceForIdleDetection( + IN PDEVICE_OBJECT DeviceObject, + IN ULONG ConservationIdleTime, + IN ULONG PerformanceIdleTime, + IN DEVICE_POWER_STATE State); + +NTOSAPI +PVOID +DDKAPI +PoRegisterSystemState( + IN PVOID StateHandle, + IN EXECUTION_STATE Flags); + +NTOSAPI +NTSTATUS +DDKAPI +PoRequestPowerIrp( + IN PDEVICE_OBJECT DeviceObject, + IN UCHAR MinorFunction, + IN POWER_STATE PowerState, + IN PREQUEST_POWER_COMPLETE CompletionFunction, + IN PVOID Context, + OUT PIRP *Irp OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +PoRequestShutdownEvent( + OUT PVOID *Event); + +NTOSAPI +VOID +DDKAPI +PoSetDeviceBusy( + PULONG IdlePointer); + +NTOSAPI +POWER_STATE +DDKAPI +PoSetPowerState( + IN PDEVICE_OBJECT DeviceObject, + IN POWER_STATE_TYPE Type, + IN POWER_STATE State); + +NTOSAPI +VOID +DDKAPI +PoSetSystemState( + IN EXECUTION_STATE Flags); + +NTOSAPI +VOID +DDKAPI +PoStartNextPowerIrp( + IN PIRP Irp); + +NTOSAPI +VOID +DDKAPI +PoUnregisterSystemState( + IN PVOID StateHandle); + + + +/** WMI library support routines **/ + +NTOSAPI +NTSTATUS +DDKAPI +WmiCompleteRequest( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN NTSTATUS Status, + IN ULONG BufferUsed, + IN CCHAR PriorityBoost); + +NTOSAPI +NTSTATUS +DDKAPI +WmiFireEvent( + IN PDEVICE_OBJECT DeviceObject, + IN LPGUID Guid, + IN ULONG InstanceIndex, + IN ULONG EventDataSize, + IN PVOID EventData); + +NTOSAPI +NTSTATUS +DDKAPI +WmiQueryTraceInformation( + IN TRACE_INFORMATION_CLASS TraceInformationClass, + OUT PVOID TraceInformation, + IN ULONG TraceInformationLength, + OUT PULONG RequiredLength OPTIONAL, + IN PVOID Buffer OPTIONAL); + +NTOSAPI +NTSTATUS +DDKAPI +WmiSystemControl( + IN PWMILIB_CONTEXT WmiLibInfo, + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + OUT PSYSCTL_IRP_DISPOSITION IrpDisposition); + +NTOSAPI +NTSTATUS +DDKCDECLAPI +WmiTraceMessage( + IN TRACEHANDLE LoggerHandle, + IN ULONG MessageFlags, + IN LPGUID MessageGuid, + IN USHORT MessageNumber, + IN ...); + +#if 0 +/* FIXME: Get va_list from where? */ +NTOSAPI +NTSTATUS +DDKCDECLAPI +WmiTraceMessageVa( + IN TRACEHANDLE LoggerHandle, + IN ULONG MessageFlags, + IN LPGUID MessageGuid, + IN USHORT MessageNumber, + IN va_list MessageArgList); +#endif + + +/** Kernel debugger routines **/ + +NTOSAPI +VOID +DDKAPI +KdDisableDebugger( + VOID); + +NTOSAPI +VOID +DDKAPI +KdEnableDebugger( + VOID); + +NTOSAPI +VOID +DDKAPI +DbgBreakPoint( + VOID); + +NTOSAPI +VOID +DDKAPI +DbgBreakPointWithStatus( + IN ULONG Status); + +NTOSAPI +ULONG +DDKCDECLAPI +DbgPrint( + IN PCH Format, + IN ...); + +NTOSAPI +ULONG +DDKCDECLAPI +DbgPrintEx( + IN ULONG ComponentId, + IN ULONG Level, + IN PCH Format, + IN ...); + +NTOSAPI +ULONG +DDKCDECLAPI +DbgPrintReturnControlC( + IN PCH Format, + IN ...); + +NTOSAPI +NTSTATUS +DDKAPI +DbgQueryDebugFilterState( + IN ULONG ComponentId, + IN ULONG Level); + +NTOSAPI +NTSTATUS +DDKAPI +DbgSetDebugFilterState( + IN ULONG ComponentId, + IN ULONG Level, + IN BOOLEAN State); + +#ifdef DBG + +#define KdPrint(_x_) DbgPrint _x_ +#define KdPrintEx(_x_) DbgPrintEx _x_ +#define KdBreakPoint() DbgBreakPoint() +#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s) + +#else /* !DBG */ + +#define KdPrint(_x_) +#define KdPrintEx(_x_) +#define KdBreakPoint() +#define KdBreakPointWithStatus(s) + +#endif /* !DBG */ + +extern NTOSAPI PBOOLEAN KdDebuggerNotPresent; +extern NTOSAPI PBOOLEAN KdDebuggerEnabled; +#define KD_DEBUGGER_ENABLED *KdDebuggerEnabled +#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __WINDDK_H */ diff --git a/reactos/w32api/include/ddk/winnt4.h b/reactos/w32api/include/ddk/winnt4.h new file mode 100644 index 00000000000..0c73231cb32 --- /dev/null +++ b/reactos/w32api/include/ddk/winnt4.h @@ -0,0 +1,608 @@ +/* + * winnt4.h + * + * Definitions only used in Windows NT 4.0 and earlier versions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __WINNT4_H +#define __WINNT4_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +typedef struct _ZONE_SEGMENT_HEADER { + SINGLE_LIST_ENTRY SegmentList; + PVOID Reserved; +} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER; + +typedef struct _ZONE_HEADER { + SINGLE_LIST_ENTRY FreeList; + SINGLE_LIST_ENTRY SegmentList; + ULONG BlockSize; + ULONG TotalSegmentSize; +} ZONE_HEADER, *PZONE_HEADER; + +static __inline PVOID +ExAllocateFromZone( + IN PZONE_HEADER Zone) +{ + if (Zone->FreeList.Next) + Zone->FreeList.Next = Zone->FreeList.Next->Next; + return (PVOID) Zone->FreeList.Next; +} + +NTOSAPI +NTSTATUS +DDKAPI +ExExtendZone( + IN PZONE_HEADER Zone, + IN PVOID Segment, + IN ULONG SegmentSize); + +static __inline PVOID +ExFreeToZone( + IN PZONE_HEADER Zone, + IN PVOID Block) +{ + ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next; + Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block); + return ((PSINGLE_LIST_ENTRY) Block)->Next; +} + +NTOSAPI +NTSTATUS +DDKAPI +ExInitializeZone( + IN PZONE_HEADER Zone, + IN ULONG BlockSize, + IN PVOID InitialSegment, + IN ULONG InitialSegmentSize); + +/* + * PVOID + * ExInterlockedAllocateFromZone( + * IN PZONE_HEADER Zone, + * IN PKSPIN_LOCK Lock) + */ +#define ExInterlockedAllocateFromZone(Zone, \ + Lock) \ + ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock)) + +NTOSAPI +NTSTATUS +DDKAPI +ExInterlockedExtendZone( + IN PZONE_HEADER Zone, + IN PVOID Segment, + IN ULONG SegmentSize, + IN PKSPIN_LOCK Lock); + +NTOSAPI +PVOID +DDKAPI +ExInterlockedFreeToZone( + IN PZONE_HEADER Zone, + IN PVOID Block, + IN PKSPIN_LOCK Lock); + +/* + * VOID + * ExInitializeWorkItem( + * IN PWORK_QUEUE_ITEM Item, + * IN PWORKER_THREAD_ROUTINE Routine, + * IN PVOID Context) + */ +#define ExInitializeWorkItem(Item, \ + Routine, \ + Context) \ +{ \ + (Item)->WorkerRoutine = Routine; \ + (Item)->Parameter = Context; \ + (Item)->List.Flink = NULL; \ +} + +/* + * BOOLEAN + * ExIsFullZone( + * IN PZONE_HEADER Zone) + */ +#define ExIsFullZone(Zone) \ + ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL) + +NTOSAPI +VOID +DDKAPI +ExQueueWorkItem( + IN PWORK_QUEUE_ITEM WorkItem, + IN WORK_QUEUE_TYPE QueueType); + +NTOSAPI +BOOLEAN +DDKAPI +ExIsObjectInFirstZoneSegment( + IN PZONE_HEADER Zone, + IN PVOID Object); + +NTOSAPI +VOID +DDKAPI +ExReleaseResource( + IN PERESOURCE Resource); + +#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite +#define ExAcquireResourceShared ExAcquireResourceSharedLite +#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite +#define ExDeleteResource ExDeleteResourceLite +#define ExInitializeResource ExInitializeResourceLite +#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite +#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite +#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite +#define ExReleaseResourceForThread ExReleaseResourceForThreadLite + +NTOSAPI +INTERLOCKED_RESULT +DDKAPI +ExInterlockedDecrementLong( + IN PLONG Addend, + IN PKSPIN_LOCK Lock); + +NTOSAPI +ULONG +DDKAPI +ExInterlockedExchangeUlong( + IN PULONG Target, + IN ULONG Value, + IN PKSPIN_LOCK Lock); + +NTOSAPI +INTERLOCKED_RESULT +DDKAPI +ExInterlockedIncrementLong( + IN PLONG Addend, + IN PKSPIN_LOCK Lock); + +NTOSAPI +PVOID +DDKAPI +HalAllocateCommonBuffer( + IN PADAPTER_OBJECT AdapterObject, + IN ULONG Length, + OUT PPHYSICAL_ADDRESS LogicalAddress, + IN BOOLEAN CacheEnabled); + +NTOSAPI +NTSTATUS +DDKAPI +HalAssignSlotResources( + IN PUNICODE_STRING RegistryPath, + IN PUNICODE_STRING DriverClassName, + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT DeviceObject, + IN INTERFACE_TYPE BusType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN OUT PCM_RESOURCE_LIST *AllocatedResources); + +NTOSAPI +VOID +DDKAPI +HalFreeCommonBuffer( + IN PADAPTER_OBJECT AdapterObject, + IN ULONG Length, + IN PHYSICAL_ADDRESS LogicalAddress, + IN PVOID VirtualAddress, + IN BOOLEAN CacheEnabled); + +NTOSAPI +PADAPTER_OBJECT +DDKAPI +HalGetAdapter( + IN PDEVICE_DESCRIPTION DeviceDescription, + IN OUT PULONG NumberOfMapRegisters); + +NTOSAPI +ULONG +DDKAPI +HalGetBusData( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Length); + +NTOSAPI +ULONG +DDKAPI +HalGetBusDataByOffset( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +NTOSAPI +ULONG +DDKAPI +HalGetDmaAlignmentRequirement( + VOID); + +NTOSAPI +ULONG +DDKAPI +HalGetInterruptVector( + IN INTERFACE_TYPE InterfaceType, + IN ULONG BusNumber, + IN ULONG BusInterruptLevel, + IN ULONG BusInterruptVector, + OUT PKIRQL Irql, + OUT PKAFFINITY Affinity); + +NTOSAPI +ULONG +DDKAPI +HalReadDmaCounter( + IN PADAPTER_OBJECT AdapterObject); + +NTOSAPI +ULONG +DDKAPI +HalSetBusData( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Length); + +NTOSAPI +ULONG +DDKAPI +HalSetBusDataByOffset( + IN BUS_DATA_TYPE BusDataType, + IN ULONG BusNumber, + IN ULONG SlotNumber, + IN PVOID Buffer, + IN ULONG Offset, + IN ULONG Length); + +NTOSAPI +BOOLEAN +DDKAPI +HalTranslateBusAddress( + IN INTERFACE_TYPE InterfaceType, + IN ULONG BusNumber, + IN PHYSICAL_ADDRESS BusAddress, + IN OUT PULONG AddressSpace, + OUT PPHYSICAL_ADDRESS TranslatedAddress); + +NTOSAPI +NTSTATUS +DDKAPI +IoAllocateAdapterChannel( + IN PADAPTER_OBJECT AdapterObject, + IN PDEVICE_OBJECT DeviceObject, + IN ULONG NumberOfMapRegisters, + IN PDRIVER_CONTROL ExecutionRoutine, + IN PVOID Context); + +NTOSAPI +NTSTATUS +DDKAPI +IoAssignResources( + IN PUNICODE_STRING RegistryPath, + IN PUNICODE_STRING DriverClassName OPTIONAL, + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT DeviceObject OPTIONAL, + IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources, + IN OUT PCM_RESOURCE_LIST *AllocatedResources); + +NTOSAPI +NTSTATUS +DDKAPI +IoAttachDeviceByPointer( + IN PDEVICE_OBJECT SourceDevice, + IN PDEVICE_OBJECT TargetDevice); + +NTOSAPI +BOOLEAN +DDKAPI +IoFlushAdapterBuffers( + IN PADAPTER_OBJECT AdapterObject, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN ULONG Length, + IN BOOLEAN WriteToDevice); + +NTOSAPI +VOID +DDKAPI +IoFreeAdapterChannel( + IN PADAPTER_OBJECT AdapterObject); + +NTOSAPI +VOID +DDKAPI +IoFreeMapRegisters( + IN PADAPTER_OBJECT AdapterObject, + IN PVOID MapRegisterBase, + IN ULONG NumberOfMapRegisters); + +NTOSAPI +PHYSICAL_ADDRESS +DDKAPI +IoMapTransfer( + IN PADAPTER_OBJECT AdapterObject, + IN PMDL Mdl, + IN PVOID MapRegisterBase, + IN PVOID CurrentVa, + IN OUT PULONG Length, + IN BOOLEAN WriteToDevice); + +NTOSAPI +PMDL +DDKAPI +MmCreateMdl( + IN PMDL MemoryDescriptorList OPTIONAL, + IN PVOID Base, + IN SIZE_T Length); + +NTOSAPI +BOOLEAN +DDKAPI +MmIsNonPagedSystemAddressValid( + IN PVOID VirtualAddress); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlEnlargedIntegerMultiply( + IN LONG Multiplicand, + IN LONG Multiplier); + +NTOSAPI +ULONG +DDKAPI +RtlEnlargedUnsignedDivide( + IN ULARGE_INTEGER Dividend, + IN ULONG Divisor, + IN OUT PULONG Remainder); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlEnlargedUnsignedMultiply( + IN ULONG Multiplicand, + IN ULONG Multiplier); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlExtendedIntegerMultiply( + IN LARGE_INTEGER Multiplicand, + IN LONG Multiplier); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlExtendedLargeIntegerDivide( + IN LARGE_INTEGER Dividend, + IN ULONG Divisor, + IN OUT PULONG Remainder); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlExtendedMagicDivide( + IN LARGE_INTEGER Dividend, + IN LARGE_INTEGER MagicDivisor, + IN CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerAdd( + IN LARGE_INTEGER Addend1, + IN LARGE_INTEGER Addend2); + +NTOSAPI +VOID +DDKAPI +RtlLargeIntegerAnd( + IN OUT LARGE_INTEGER Result, + IN LARGE_INTEGER Source, + IN LARGE_INTEGER Mask); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerArithmeticShift( + IN LARGE_INTEGER LargeInteger, + IN CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerDivide( + IN LARGE_INTEGER Dividend, + IN LARGE_INTEGER Divisor, + IN OUT PLARGE_INTEGER Remainder); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerEqualTo( + IN LARGE_INTEGER Operand1, + IN LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerEqualToZero( + IN LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterOrEqualToZero( + IN LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterThan( + IN LARGE_INTEGER Operand1, + IN LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterThanOrEqualTo( + IN LARGE_INTEGER Operand1, + IN LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerGreaterThanZero( + IN LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessOrEqualToZero( + IN LARGE_INTEGER Operand); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessThan( + IN LARGE_INTEGER Operand1, + IN LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessThanOrEqualTo( + IN LARGE_INTEGER Operand1, + IN LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerLessThanZero( + IN LARGE_INTEGER Operand); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerNegate( + IN LARGE_INTEGER Subtrahend); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerNotEqualTo( + IN LARGE_INTEGER Operand1, + IN LARGE_INTEGER Operand2); + +NTOSAPI +BOOLEAN +DDKAPI +RtlLargeIntegerNotEqualToZero( + IN LARGE_INTEGER Operand); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerShiftLeft( + IN LARGE_INTEGER LargeInteger, + IN CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerShiftRight( + IN LARGE_INTEGER LargeInteger, + IN CCHAR ShiftCount); + +NTOSAPI +LARGE_INTEGER +DDKAPI +RtlLargeIntegerSubtract( + IN LARGE_INTEGER Minuend, + IN LARGE_INTEGER Subtrahend); + + +/* + * ULONG + * COMPUTE_PAGES_SPANNED( + * IN PVOID Va, + * IN ULONG Size) + */ +#define COMPUTE_PAGES_SPANNED(Va, \ + Size) \ + (ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size)) + + +/* +** Architecture specific structures +*/ + +#ifdef _X86_ + +NTOSAPI +INTERLOCKED_RESULT +DDKFASTAPI +Exfi386InterlockedIncrementLong( + IN PLONG Addend); + +NTOSAPI +INTERLOCKED_RESULT +DDKFASTAPI +Exfi386InterlockedDecrementLong( + IN PLONG Addend); + +NTOSAPI +ULONG +DDKFASTAPI +Exfi386InterlockedExchangeUlong( + IN PULONG Target, + IN ULONG Value); + +#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend) +#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend) +#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value) + +#endif /* _X86_ */ + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __WINNT4_H */ diff --git a/reactos/w32api/include/ddk/winxp.h b/reactos/w32api/include/ddk/winxp.h new file mode 100644 index 00000000000..28e34a89ce4 --- /dev/null +++ b/reactos/w32api/include/ddk/winxp.h @@ -0,0 +1,38 @@ +/* + * winxp.h + * + * Definitions only used in Windows XP and earlier versions + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __WINXP_H +#define __WINXP_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __WINXP_H */ diff --git a/reactos/w32api/include/ddk/ws2san.h b/reactos/w32api/include/ddk/ws2san.h new file mode 100644 index 00000000000..29a21181d8d --- /dev/null +++ b/reactos/w32api/include/ddk/ws2san.h @@ -0,0 +1,252 @@ +/* + * ws2san.h + * + * WinSock Direct (SAN) support + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __WS2SAN_H +#define __WS2SAN_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#pragma pack(push,4) + +#include +#include "ntddk.h" + + +#define WSPAPI STDCALL + +/* FIXME: Unknown definitions */ +typedef PVOID LPWSPDATA; +typedef PDWORD LPWSATHREADID; +typedef PVOID LPWSPPROC_TABLE; +typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX; +typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX; + +#define SO_MAX_RDMA_SIZE 0x700D +#define SO_RDMA_THRESHOLD_SIZE 0x700E + +#define WSAID_REGISTERMEMORY \ + {0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} + +#define WSAID_DEREGISTERMEMORY \ + {0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} + +#define WSAID_REGISTERRDMAMEMORY \ + {0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} + +#define WSAID_DEREGISTERRDMAMEMORY \ + {0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} + +#define WSAID_RDMAWRITE \ + {0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} + +#define WSAID_RDMAREAD \ + {0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}} + +#define WSAID_MEMORYREGISTRATIONCACHECALLBACK \ + {0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}} + +typedef struct _WSABUFEX { + u_long len; + char FAR *buf; + HANDLE handle; +} WSABUFEX, FAR * LPWSABUFEX; + +#if 0 +typedef struct _WSPUPCALLTABLEEX { + LPWPUCLOSEEVENT lpWPUCloseEvent; + LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle; + LPWPUCREATEEVENT lpWPUCreateEvent; + LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle; + LPWPUFDISSET lpWPUFDIsSet; + LPWPUGETPROVIDERPATH lpWPUGetProviderPath; + LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle; + LPWPUPOSTMESSAGE lpWPUPostMessage; + LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback; + LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext; + LPWPUQUEUEAPC lpWPUQueueApc; + LPWPURESETEVENT lpWPUResetEvent; + LPWPUSETEVENT lpWPUSetEvent; + LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread; + LPWPUCLOSETHREAD lpWPUCloseThread; + LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest; +} WSPUPCALLTABLEEX, FAR * LPWSPUPCALLTABLEEX; +#endif + +int WSPAPI +WSPStartupEx( + IN WORD wVersionRequested, + OUT LPWSPDATA lpWSPData, + IN LPWSAPROTOCOL_INFOW lpProtocolInfo, + IN LPWSPUPCALLTABLEEX lpUpcallTable, + OUT LPWSPPROC_TABLE lpProcTable); + +typedef int WSPAPI +(*LPWSPSTARTUPEX)( + IN WORD wVersionRequested, + OUT LPWSPDATA lpWSPData, + IN LPWSAPROTOCOL_INFOW lpProtocolInfo, + IN LPWSPUPCALLTABLEEX lpUpcallTable, + OUT LPWSPPROC_TABLE lpProcTable); + +#define MEM_READ 1 +#define MEM_WRITE 2 +#define MEM_READWRITE 3 + +int WSPAPI +WSPDeregisterMemory( + IN SOCKET s, + IN HANDLE Handle, + OUT LPINT lpErrno); + +typedef int WSPAPI +(*LPFN_WSPDEREGISTERMEMORY)( + IN SOCKET s, + IN HANDLE Handle, + OUT LPINT lpErrno); + +int WSPAPI +WSPDeregisterRdmaMemory( + IN SOCKET s, + IN LPVOID lpRdmaBufferDescriptor, + IN DWORD dwDescriptorLength, + OUT LPINT lpErrno); + +typedef int WSPAPI +(*LPFN_WSPDEREGISTERRDMAMEMORY)( + IN SOCKET s, + IN LPVOID lpRdmaBufferDescriptor, + IN DWORD dwDescriptorLength, + OUT LPINT lpErrno); + +int WSPAPI +WSPMemoryRegistrationCacheCallback( + IN PVOID lpvAddress, + IN SIZE_T Size, + OUT LPINT lpErrno); + +typedef int WSPAPI +(*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)( + IN PVOID lpvAddress, + IN SIZE_T Size, + OUT LPINT lpErrno); + +int WSPAPI +WSPRdmaRead( + IN SOCKET s, + IN LPWSABUFEX lpBuffers, + IN DWORD dwBufferCount, + IN LPVOID lpTargetBufferDescriptor, + IN DWORD dwTargetDescriptorLength, + IN DWORD dwTargetBufferOffset, + OUT LPDWORD lpdwNumberOfBytesRead, + IN DWORD dwFlags, + IN LPWSAOVERLAPPED lpOverlapped, + IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, + IN LPWSATHREADID lpThreadId, + OUT LPINT lpErrno); + +typedef int WSPAPI +(*LPFN_WSPRDMAREAD)( + IN SOCKET s, + IN LPWSABUFEX lpBuffers, + IN DWORD dwBufferCount, + IN LPVOID lpTargetBufferDescriptor, + IN DWORD dwTargetDescriptorLength, + IN DWORD dwTargetBufferOffset, + OUT LPDWORD lpdwNumberOfBytesRead, + IN DWORD dwFlags, + IN LPWSAOVERLAPPED lpOverlapped, + IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, + IN LPWSATHREADID lpThreadId, + OUT LPINT lpErrno); + +int WSPAPI +WSPRdmaWrite( + IN SOCKET s, + IN LPWSABUFEX lpBuffers, + IN DWORD dwBufferCount, + IN LPVOID lpTargetBufferDescriptor, + IN DWORD dwTargetDescriptorLength, + IN DWORD dwTargetBufferOffset, + OUT LPDWORD lpdwNumberOfBytesWritten, + IN DWORD dwFlags, + IN LPWSAOVERLAPPED lpOverlapped, + IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, + IN LPWSATHREADID lpThreadId, + OUT LPINT lpErrno); + +typedef int WSPAPI +(*LPFN_WSPRDMAWRITE)( + IN SOCKET s, + IN LPWSABUFEX lpBuffers, + IN DWORD dwBufferCount, + IN LPVOID lpTargetBufferDescriptor, + IN DWORD dwTargetDescriptorLength, + IN DWORD dwTargetBufferOffset, + OUT LPDWORD lpdwNumberOfBytesWritten, + IN DWORD dwFlags, + IN LPWSAOVERLAPPED lpOverlapped, + IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, + IN LPWSATHREADID lpThreadId, + OUT LPINT lpErrno); + +HANDLE WSPAPI +WSPRegisterMemory( + IN SOCKET s, + IN PVOID lpBuffer, + IN DWORD dwBufferLength, + IN DWORD dwFlags, + OUT LPINT lpErrno); + +int WSPAPI +WSPRegisterRdmaMemory( + IN SOCKET s, + IN PVOID lpBuffer, + IN DWORD dwBufferLength, + IN DWORD dwFlags, + OUT LPVOID lpRdmaBufferDescriptor, + IN OUT LPDWORD lpdwDescriptorLength, + OUT LPINT lpErrno); + +typedef int WSPAPI +(*LPFN_WSPREGISTERRDMAMEMORY)( + IN SOCKET s, + IN PVOID lpBuffer, + IN DWORD dwBufferLength, + IN DWORD dwFlags, + OUT LPVOID lpRdmaBufferDescriptor, + IN OUT LPDWORD lpdwDescriptorLength, + OUT LPINT lpErrno); + +#pragma pack(pop) + +#ifdef __cplusplus +} +#endif + +#endif /* __WS2SAN_H */ diff --git a/reactos/w32api/include/ddk/xfilter.h b/reactos/w32api/include/ddk/xfilter.h new file mode 100644 index 00000000000..3940b44f2cf --- /dev/null +++ b/reactos/w32api/include/ddk/xfilter.h @@ -0,0 +1,239 @@ +/* + * xfilter.h + * + * Address filtering for NDIS MACs + * + * This file is part of the w32api package. + * + * Contributors: + * Created by Casper S. Hornstrup + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef __XFILTER_H +#define __XFILTER_H + +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ntddk.h" + + +#define ETH_LENGTH_OF_ADDRESS 6 + +#define ETH_IS_BROADCAST(Address) \ + ((((PUCHAR)(Address))[0] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[1] == ((UCHAR)0xff))) + +#define ETH_IS_MULTICAST(Address) \ + (BOOLEAN)(((PUCHAR)(Address))[0] & ((UCHAR)0x01)) + +#define ETH_COMPARE_NETWORK_ADDRESSES(_A, _B, _Result) \ +{ \ + if (*(ULONG UNALIGNED *)&(_A)[2] > *(ULONG UNALIGNED *)&(_B)[2]) \ + { \ + *(_Result) = 1; \ + } \ + else if (*(ULONG UNALIGNED *)&(_A)[2] < *(ULONG UNALIGNED *)&(_B)[2]) \ + { \ + *(_Result) = (UINT)-1; \ + } \ + else if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \ + { \ + *(_Result) = 1; \ + } \ + else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \ + { \ + *(_Result) = (UINT)-1; \ + } \ + else \ + { \ + *(_Result) = 0; \ + } \ +} + +#define ETH_COMPARE_NETWORK_ADDRESSES_EQ(_A,_B, _Result) \ +{ \ + if ((*(ULONG UNALIGNED *)&(_A)[2] == *(ULONG UNALIGNED *)&(_B)[2]) && \ + (*(USHORT UNALIGNED *)(_A) == *(USHORT UNALIGNED *)(_B))) \ + { \ + *(_Result) = 0; \ + } \ + else \ + { \ + *(_Result) = 1; \ + } \ +} + +#define ETH_COPY_NETWORK_ADDRESS(_D, _S) \ +{ \ + *((ULONG UNALIGNED *)(_D)) = *((ULONG UNALIGNED *)(_S)); \ + *((USHORT UNALIGNED *)((UCHAR *)(_D) + 4)) = *((USHORT UNALIGNED *)((UCHAR *)(_S) + 4)); \ +} + +#define FDDI_LENGTH_OF_LONG_ADDRESS 6 +#define FDDI_LENGTH_OF_SHORT_ADDRESS 2 + +#define FDDI_IS_BROADCAST(Address, AddressLength, Result) \ + *Result = ((*(PUCHAR)(Address) == (UCHAR)0xFF) && \ + (*((PUCHAR)(Address) + 1) == (UCHAR)0xFF)) + +#define FDDI_IS_MULTICAST(Address, AddressLength, Result) \ + *Result = (BOOLEAN)(*(UCHAR *)(Address) & (UCHAR)0x01) + +#define FDDI_IS_SMT(FcByte, Result) \ +{ \ + *Result = ((FcByte & ((UCHAR)0xf0)) == 0x40); \ +} + + +#define FDDI_COMPARE_NETWORK_ADDRESSES(_A, _B, _Length, _Result) \ +{ \ + if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \ + { \ + *(_Result) = 1; \ + } \ + else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \ + { \ + *(_Result) = (UINT)-1; \ + } \ + else if (_Length == 2) \ + { \ + *(_Result) = 0; \ + } \ + else if (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) > *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)) \ + { \ + *(_Result) = 1; \ + } \ + else if (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) < *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)) \ + { \ + *(_Result) = (UINT)-1; \ + } \ + else \ + { \ + *(_Result) = 0; \ + } \ +} + +#define FDDI_COMPARE_NETWORK_ADDRESSES_EQ(_A, _B, _Length, _Result) \ +{ \ + if ((*(USHORT UNALIGNED *)(_A) == *(USHORT UNALIGNED *)(_B)) && \ + (((_Length) == 2) || \ + (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) == *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)))) \ + { \ + *(_Result) = 0; \ + } \ + else \ + { \ + *(_Result) = 1; \ + } \ +} + +#define FDDI_COPY_NETWORK_ADDRESS(D, S, AddressLength) \ +{ \ + PCHAR _D = (D); \ + PCHAR _S = (S); \ + UINT _C = (AddressLength); \ + for ( ; _C > 0 ; _D++, _S++, _C--) \ + { \ + *_D = *_S; \ + } \ +} + +#define TR_LENGTH_OF_FUNCTIONAL 4 +#define TR_LENGTH_OF_ADDRESS 6 + +typedef ULONG TR_FUNCTIONAL_ADDRESS; +typedef ULONG TR_GROUP_ADDRESS; + +#define TR_IS_NOT_DIRECTED(_Address, _Result) \ +{ \ + *(_Result) = (BOOLEAN)((_Address)[0] & 0x80); \ +} + +#define TR_IS_FUNCTIONAL(_Address, _Result) \ +{ \ + *(_Result) = (BOOLEAN)(((_Address)[0] & 0x80) && !((_Address)[2] & 0x80)); \ +} + +#define TR_IS_GROUP(_Address, _Result) \ +{ \ + *(_Result) = (BOOLEAN)((_Address)[0] & (_Address)[2] & 0x80); \ +} + +#define TR_IS_SOURCE_ROUTING(_Address, _Result) \ +{ \ + *(_Result) = (BOOLEAN)((_Address)[0] & 0x80); \ +} + +#define TR_IS_MAC_FRAME(_PacketHeader) ((((PUCHAR)_PacketHeader)[1] & 0xFC) == 0) + +#define TR_IS_BROADCAST(_Address, _Result) \ +{ \ + *(_Result) = (BOOLEAN)(((*(UNALIGNED USHORT *)&(_Address)[0] == 0xFFFF) || \ + (*(UNALIGNED USHORT *)&(_Address)[0] == 0x00C0)) && \ + (*(UNALIGNED ULONG *)&(_Address)[2] == 0xFFFFFFFF)); \ +} + +#define TR_COMPARE_NETWORK_ADDRESSES(_A, _B, _Result) \ +{ \ + if (*(ULONG UNALIGNED *)&(_A)[2] > *(ULONG UNALIGNED *)&(_B)[2]) \ + { \ + *(_Result) = 1; \ + } \ + else if (*(ULONG UNALIGNED *)&(_A)[2] < *(ULONG UNALIGNED *)&(_B)[2]) \ + { \ + *(_Result) = (UINT)-1; \ + } \ + else if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \ + { \ + *(_Result) = 1; \ + } \ + else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \ + { \ + *(_Result) = (UINT)-1; \ + } \ + else \ + { \ + *(_Result) = 0; \ + } \ +} + +#define TR_COPY_NETWORK_ADDRESS(_D, _S) \ +{ \ + *((ULONG UNALIGNED *)(_D)) = *((ULONG UNALIGNED *)(_S)); \ + *((USHORT UNALIGNED *)((UCHAR *)(_D)+4)) = *((USHORT UNALIGNED *)((UCHAR *)(_S) + 4)); \ +} + +#define TR_COMPARE_NETWORK_ADDRESSES_EQ(_A, _B, _Result) \ +{ \ + if ((*(ULONG UNALIGNED *)&(_A)[2] == *(ULONG UNALIGNED *)&(_B)[2]) && \ + (*(USHORT UNALIGNED *)&(_A)[0] == *(USHORT UNALIGNED *)&(_B)[0])) \ + { \ + *(_Result) = 0; \ + } \ + else \ + { \ + *(_Result) = 1; \ + } \ +} + +#ifdef __cplusplus +} +#endif + +#endif /* __XFILTER_H */ diff --git a/reactos/w32api/include/dhcpcsdk.h b/reactos/w32api/include/dhcpcsdk.h new file mode 100644 index 00000000000..1d27df766ad --- /dev/null +++ b/reactos/w32api/include/dhcpcsdk.h @@ -0,0 +1,42 @@ +#ifndef _DHCPCDSK_H +#define _DHCPCDSK_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if (_WIN32_WINNT >= 0x0500) +#define DHCPCAPI_REGISTER_HANDLE_EVENT 0x00000001 +#define DHCPCAPI_REQUEST_PERSISTENT 0x00000001 +#define DHCPCAPI_REQUEST_SYNCHRONOUS 0x00000002 +typedef struct _DHCPAPI_CLASSID { + ULONG Flags; + LPBYTE Data; + ULONG nBytesData; +} DHCPCAPI_CLASSID,*PDHCPCAPI_CLASSID,*LPDHCPCAPI_CLASSID; +typedef struct _DHCPAPI_PARAMS { + ULONG Flags; + ULONG OptionId; + BOOL IsVendor; + LPBYTE Data; + DWORD nBytesData; +} DHCPAPI_PARAMS,*PDHCPAPI_PARAMS,*LPDHCPAPI_PARAMS; +typedef struct _DHCPAPI_PARAMS_ARRAY { + ULONG nParams; + LPDHCPAPI_PARAMS Params; +} DHCPCAPI_PARAMS_ARRAY,*PDHCPCAPI_PARAMS_ARRAY,*LPDHCPCAPI_PARAMS_ARRAY; +VOID WINAPI DhcpCApiCleanup(void); +DWORD WINAPI DhcpCApiInitialize(LPDWORD); +DWORD WINAPI DhcpDeRegisterParamChange(DWORD,LPVOID,LPVOID); +DWORD WINAPI DhcpRegisterParamChange(DWORD,LPVOID,PWSTR,LPDHCPCAPI_CLASSID,DHCPCAPI_PARAMS_ARRAY,LPVOID); +DWORD WINAPI DhcpRemoveDNSRegistrations(void); +DWORD WINAPI DhcpUndoRequestParams(DWORD,LPVOID,LPWSTR,LPWSTR); +#endif /* (_WIN32_WINNT >= 0x0500) */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/dlgs.h b/reactos/w32api/include/dlgs.h new file mode 100644 index 00000000000..82525ab5cc2 --- /dev/null +++ b/reactos/w32api/include/dlgs.h @@ -0,0 +1,186 @@ +#ifndef _DLGS_H +#define _DLGS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define FILEOPENORD 1536 +#define MULTIFILEOPENORD 1537 +#define PRINTDLGORD 1538 +#define PRNSETUPDLGORD 1539 +#define FINDDLGORD 1540 +#define REPLACEDLGORD 1541 +#define FONTDLGORD 1542 +#define FORMATDLGORD31 1543 +#define FORMATDLGORD30 1544 +#define PAGESETUPDLGORD 1546 +#define ctlFirst 0x400 +#define ctlLast 0x4ff +#define chx1 0x410 +#define chx2 0x411 +#define chx3 0x412 +#define chx4 0x413 +#define chx5 0x414 +#define chx6 0x415 +#define chx7 0x416 +#define chx8 0x417 +#define chx9 0x418 +#define chx10 0x419 +#define chx11 0x41a +#define chx12 0x41b +#define chx13 0x41c +#define chx14 0x41d +#define chx15 0x41e +#define chx16 0x41f +#define cmb1 0x470 +#define cmb2 0x471 +#define cmb3 0x472 +#define cmb4 0x473 +#define cmb5 0x474 +#define cmb6 0x475 +#define cmb7 0x476 +#define cmb8 0x477 +#define cmb9 0x478 +#define cmb10 0x479 +#define cmb11 0x47a +#define cmb12 0x47b +#define cmb13 0x47c +#define cmb14 0x47d +#define cmb15 0x47e +#define cmb16 0x47f +#define edt1 0x480 +#define edt2 0x481 +#define edt3 0x482 +#define edt4 0x483 +#define edt5 0x484 +#define edt6 0x485 +#define edt7 0x486 +#define edt8 0x487 +#define edt9 0x488 +#define edt10 0x489 +#define edt11 0x48a +#define edt12 0x48b +#define edt13 0x48c +#define edt14 0x48d +#define edt15 0x48e +#define edt16 0x48f +#define frm1 0x434 +#define frm2 0x435 +#define frm3 0x436 +#define frm4 0x437 +#define grp1 0x430 +#define grp2 0x431 +#define grp3 0x432 +#define grp4 0x433 +#define ico1 0x43c +#define ico2 0x43d +#define ico3 0x43e +#define ico4 0x43f +#define lst1 0x460 +#define lst2 0x461 +#define lst3 0x462 +#define lst4 0x463 +#define lst5 0x464 +#define lst6 0x465 +#define lst7 0x466 +#define lst8 0x467 +#define lst9 0x468 +#define lst10 0x469 +#define lst11 0x46a +#define lst12 0x46b +#define lst13 0x46c +#define lst14 0x46d +#define lst15 0x46e +#define lst16 0x46f +#define psh1 0x400 +#define psh2 0x401 +#define psh3 0x402 +#define psh4 0x403 +#define psh5 0x404 +#define psh6 0x405 +#define psh7 0x406 +#define psh8 0x407 +#define psh9 0x408 +#define psh10 0x409 +#define psh11 0x40a +#define psh12 0x40b +#define psh13 0x40c +#define psh14 0x40d +#define psh15 0x40e +#define pshHelp 0x40e +#define psh16 0x40f +#define rad1 0x420 +#define rad2 0x421 +#define rad3 0x422 +#define rad4 0x423 +#define rad5 0x424 +#define rad6 0x425 +#define rad7 0x426 +#define rad8 0x427 +#define rad9 0x428 +#define rad10 0x429 +#define rad11 0x42a +#define rad12 0x42b +#define rad13 0x42c +#define rad14 0x42d +#define rad15 0x42e +#define rad16 0x42f +#define rct1 0x438 +#define rct2 0x439 +#define rct3 0x43a +#define rct4 0x43b +#define scr1 0x490 +#define scr2 0x491 +#define scr3 0x492 +#define scr4 0x493 +#define scr5 0x494 +#define scr6 0x495 +#define scr7 0x496 +#define scr8 0x497 +#define stc1 0x440 +#define stc2 0x441 +#define stc3 0x442 +#define stc4 0x443 +#define stc5 0x444 +#define stc6 0x445 +#define stc7 0x446 +#define stc8 0x447 +#define stc9 0x448 +#define stc10 0x449 +#define stc11 0x44a +#define stc12 0x44b +#define stc13 0x44c +#define stc14 0x44d +#define stc15 0x44e +#define stc16 0x44f +#define stc17 0x450 +#define stc18 0x451 +#define stc19 0x452 +#define stc20 0x453 +#define stc21 0x454 +#define stc22 0x455 +#define stc23 0x456 +#define stc24 0x457 +#define stc25 0x458 +#define stc26 0x459 +#define stc27 0x45a +#define stc28 0x45b +#define stc29 0x45c +#define stc30 0x45d +#define stc31 0x45e +#define stc32 0x45f +#ifndef RC_INVOKED +typedef struct tagCRGB { + BYTE bRed; + BYTE bGreen; + BYTE bBlue; + BYTE bExtra; +} CRGB; +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/docobj.h b/reactos/w32api/include/docobj.h new file mode 100644 index 00000000000..27055dd845e --- /dev/null +++ b/reactos/w32api/include/docobj.h @@ -0,0 +1,148 @@ +#ifndef _DOCOBJ_H +#define _DOCOBJ_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define OLECMDERR_E_UNKNOWNGROUP (-2147221244) +#define OLECMDERR_E_DISABLED (-2147221247) +#define OLECMDERR_E_NOHELP (-2147221246) +#define OLECMDERR_E_CANCELED (-2147221245) +#define OLECMDERR_E_NOTSUPPORTED (-2147221248) + +typedef enum { + 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; +typedef enum { + OLECMDF_SUPPORTED = 1, + OLECMDF_ENABLED = 2, + OLECMDF_LATCHED = 4, + OLECMDF_NINCHED = 8 +} OLECMDF; +typedef enum { + OLECMDEXECOPT_DODEFAULT = 0, + OLECMDEXECOPT_PROMPTUSER = 1, + OLECMDEXECOPT_DONTPROMPTUSER = 2, + OLECMDEXECOPT_SHOWHELP = 3 +} OLECMDEXECOPT; + +typedef struct _tagOLECMDTEXT { + DWORD cmdtextf; + ULONG cwActual; + ULONG cwBuf; + wchar_t rgwz[1]; +} OLECMDTEXT; +typedef struct _tagOLECMD { + ULONG cmdID; + DWORD cmdf; +} OLECMD; + +typedef interface IOleInPlaceSite *LPOLEINPLACESITE; +typedef interface IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS; + +EXTERN_C const IID IID_IContinueCallback; +EXTERN_C const IID IID_IEnumOleDocumentViews; +EXTERN_C const IID IID_IPrint; + +EXTERN_C const IID IID_IOleDocumentView; +#undef INTERFACE +#define INTERFACE IOleDocumentView +DECLARE_INTERFACE_(IOleDocumentView,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + STDMETHOD(SetInPlaceSite)(THIS_ LPOLEINPLACESITE) PURE; + STDMETHOD(GetInPlaceSite)(THIS_ LPOLEINPLACESITE*) PURE; + STDMETHOD(GetDocument)(THIS_ IUnknown*) PURE; + STDMETHOD(SetRect)(THIS_ LPRECT) PURE; + STDMETHOD(GetRect)(THIS_ LPRECT) PURE; + STDMETHOD(SetRectComplex)(THIS_ LPRECT,LPRECT,LPRECT,LPRECT) PURE; + STDMETHOD(Show)(THIS_ BOOL) PURE; + STDMETHOD(UIActivate)(THIS_ BOOL) PURE; + STDMETHOD(Open)(THIS) PURE; + STDMETHOD(Close)(THIS_ DWORD) PURE; + STDMETHOD(SaveViewState)(THIS_ IStream*) PURE; + STDMETHOD(ApplyViewState)(THIS_ IStream*) PURE; + STDMETHOD(Clone)(THIS_ LPOLEINPLACESITE,IOleDocumentView**) PURE; +}; + +DECLARE_ENUMERATOR_(IEnumOleDocumentViews,IOleDocumentView); + +EXTERN_C const IID IID_IOleDocument; +#undef INTERFACE +#define INTERFACE IOleDocument +DECLARE_INTERFACE_(IOleDocument,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + STDMETHOD(CreateView)(THIS_ LPOLEINPLACESITE,IStream*,DWORD,IOleDocumentView**) PURE; + STDMETHOD(GetDocMiscStatus)(THIS_ DWORD*) PURE; + STDMETHOD(EnumViews)(THIS_ LPENUMOLEDOCUMENTVIEWS*,IOleDocumentView**) PURE; +}; + +EXTERN_C const IID IID_IOleCommandTarget; +#undef INTERFACE +#define INTERFACE IOleCommandTarget +DECLARE_INTERFACE_(IOleCommandTarget,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + STDMETHOD(QueryStatus)(THIS_ const GUID*,ULONG,OLECMD*,OLECMDTEXT*) PURE; + STDMETHOD(Exec)(THIS_ const GUID*,DWORD,DWORD,VARIANTARG*,VARIANTARG*) PURE; +}; + +EXTERN_C const IID IID_IOleDocumentSite; +#undef INTERFACE +#define INTERFACE IOleDocumentSite +DECLARE_INTERFACE_(IOleDocumentSite,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + STDMETHOD(ActivateMe)(THIS_ IOleDocumentView*) PURE; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/errorrep.h b/reactos/w32api/include/errorrep.h new file mode 100644 index 00000000000..1361855e3dd --- /dev/null +++ b/reactos/w32api/include/errorrep.h @@ -0,0 +1,40 @@ +#ifndef _ERRORREP_H +#define _ERRORREP_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if (_WIN32_WINNT >= 0x0501) +typedef enum { + frrvErr = 3, + frrvErrNoDW = 4, + frrvErrTimeout = 5, + frrvLaunchDebugger = 6, + frrvOk = 0, + frrvOkHeadless = 7, + frrvOkManifest = 1, + frrvOkQueued = 2 +} EFaultRepRetVal; +BOOL WINAPI AddERExcludedApplicationA(LPCSTR); +BOOL WINAPI AddERExcludedApplicationW(LPCWSTR); +EFaultRepRetVal WINAPI ReportFault(LPEXCEPTION_POINTERS,DWORD); +#endif + +#ifdef UNICODE +#if (_WIN32_WINNT >= 0x0501) +#define AddERExcludedApplication AddERExcludedApplicationW +#endif +#else +#if (_WIN32_WINNT >= 0x0501) +#define AddERExcludedApplication AddERExcludedApplicationA +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/exdisp.h b/reactos/w32api/include/exdisp.h new file mode 100644 index 00000000000..9e747df1119 --- /dev/null +++ b/reactos/w32api/include/exdisp.h @@ -0,0 +1,257 @@ +#ifndef _EXDISP_H +#define _EXDISP_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include + +EXTERN_C const CLSID CLSID_WebBrowser; +EXTERN_C const IID DIID_DWebBrowserEvents; + +typedef enum { + navOpenInNewWindow = 0x1, + navNoHistory = 0x2, + navNoReadFromCache = 0x4, + navNoWriteTocache = 0x8, + navAllowAutosearch = 0x10, + navBrowserBar = 0x20, + navHyperLink = 0x40 +} BrowserNavConstants; + +EXTERN_C const IID IID_IWebBrowser; +#undef INTERFACE +#define INTERFACE IWebBrowser +DECLARE_INTERFACE_(IWebBrowser,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(GoBack)(THIS) PURE; + STDMETHOD(GoForward)(THIS) PURE; + STDMETHOD(GoHome)(THIS) PURE; + STDMETHOD(GoSearch)(THIS) PURE; + STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; + STDMETHOD(Refresh)(THIS) PURE; + STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE; + STDMETHOD(Stop)(THIS) PURE; + STDMETHOD(get_Application)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Container)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Document)(THIS_ IDispatch**) PURE; + STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(get_Type)(THIS_ BSTR*) PURE; + STDMETHOD(get_Left)(THIS_ long*) PURE; + STDMETHOD(put_Left)(THIS_ long) PURE; + STDMETHOD(get_Top)(THIS_ long*) PURE; + STDMETHOD(put_Top)(THIS_ long) PURE; + STDMETHOD(get_Width)(THIS_ long*) PURE; + STDMETHOD(put_Width)(THIS_ long) PURE; + STDMETHOD(get_Height)(THIS_ long*) PURE; + STDMETHOD(put_Height)(THIS_ long) PURE; + STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE; + STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE; + STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE; +}; + +EXTERN_C const IID IID_IWebBrowserApp; +#undef INTERFACE +#define INTERFACE IWebBrowserApp +DECLARE_INTERFACE_(IWebBrowserApp,IWebBrowser) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(GoBack)(THIS) PURE; + STDMETHOD(GoForward)(THIS) PURE; + STDMETHOD(GoHome)(THIS) PURE; + STDMETHOD(GoSearch)(THIS) PURE; + STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; + STDMETHOD(Refresh)(THIS) PURE; + STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE; + STDMETHOD(Stop)(THIS) PURE; + STDMETHOD(get_Application)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Container)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Document)(THIS_ IDispatch**) PURE; + STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(get_Type)(THIS_ BSTR*) PURE; + STDMETHOD(get_Left)(THIS_ long*) PURE; + STDMETHOD(put_Left)(THIS_ long) PURE; + STDMETHOD(get_Top)(THIS_ long*) PURE; + STDMETHOD(put_Top)(THIS_ long) PURE; + STDMETHOD(get_Width)(THIS_ long*) PURE; + STDMETHOD(put_Width)(THIS_ long) PURE; + STDMETHOD(get_Height)(THIS_ long*) PURE; + STDMETHOD(put_Height)(THIS_ long) PURE; + STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE; + STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE; + STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE; + + STDMETHOD(Quit)(THIS) PURE; + STDMETHOD(ClientToWindow)(THIS_ int*,int*) PURE; + STDMETHOD(PutProperty)(THIS_ BSTR,VARIANT) PURE; + STDMETHOD(GetProperty)(THIS_ BSTR,VARIANT*) PURE; + STDMETHOD(get_Name)(THIS_ BSTR*) PURE; + STDMETHOD(get_HWND)(THIS_ long*) PURE; + STDMETHOD(get_FullName)(THIS_ BSTR*) PURE; + STDMETHOD(get_Path)(THIS_ BSTR*) PURE; + STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_StatusBar)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_StatusBar)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_StatusText)(THIS_ BSTR*) PURE; + STDMETHOD(put_StatusText)(THIS_ BSTR) PURE; + STDMETHOD(get_ToolBar)(THIS_ int*) PURE; + STDMETHOD(put_ToolBar)(THIS_ int) PURE; + STDMETHOD(get_MenuBar)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_MenuBar)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_FullScreen)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_FullScreen)(THIS_ VARIANT_BOOL) PURE; +}; + +EXTERN_C const IID IID_IWebBrowser2; +#undef INTERFACE +#define INTERFACE IWebBrowser2 +DECLARE_INTERFACE_(IWebBrowser2,IWebBrowserApp) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(GoBack)(THIS) PURE; + STDMETHOD(GoForward)(THIS) PURE; + STDMETHOD(GoHome)(THIS) PURE; + STDMETHOD(GoSearch)(THIS) PURE; + STDMETHOD(Navigate)(THIS_ BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; + STDMETHOD(Refresh)(THIS) PURE; + STDMETHOD(Refresh2)(THIS_ VARIANT*) PURE; + STDMETHOD(Stop)(THIS) PURE; + STDMETHOD(get_Application)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Parent)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Container)(THIS_ IDispatch**) PURE; + STDMETHOD(get_Document)(THIS_ IDispatch**) PURE; + STDMETHOD(get_TopLevelContainer)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(get_Type)(THIS_ BSTR*) PURE; + STDMETHOD(get_Left)(THIS_ long*) PURE; + STDMETHOD(put_Left)(THIS_ long) PURE; + STDMETHOD(get_Top)(THIS_ long*) PURE; + STDMETHOD(put_Top)(THIS_ long) PURE; + STDMETHOD(get_Width)(THIS_ long*) PURE; + STDMETHOD(put_Width)(THIS_ long) PURE; + STDMETHOD(get_Height)(THIS_ long*) PURE; + STDMETHOD(put_Height)(THIS_ long) PURE; + STDMETHOD(get_LocationName)(THIS_ BSTR*) PURE; + STDMETHOD(get_LocationURL)(THIS_ BSTR*) PURE; + STDMETHOD(get_Busy)(THIS_ VARIANT_BOOL*) PURE; + + STDMETHOD(Quit)(THIS) PURE; + STDMETHOD(ClientToWindow)(THIS_ int*,int*) PURE; + STDMETHOD(PutProperty)(THIS_ BSTR,VARIANT) PURE; + STDMETHOD(GetProperty)(THIS_ BSTR,VARIANT*) PURE; + STDMETHOD(get_Name)(THIS_ BSTR*) PURE; + STDMETHOD(get_HWND)(THIS_ long*) PURE; + STDMETHOD(get_FullName)(THIS_ BSTR*) PURE; + STDMETHOD(get_Path)(THIS_ BSTR*) PURE; + STDMETHOD(get_Visible)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_Visible)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_StatusBar)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_StatusBar)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_StatusText)(THIS_ BSTR*) PURE; + STDMETHOD(put_StatusText)(THIS_ BSTR) PURE; + STDMETHOD(get_ToolBar)(THIS_ int*) PURE; + STDMETHOD(put_ToolBar)(THIS_ int) PURE; + STDMETHOD(get_MenuBar)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_MenuBar)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_FullScreen)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_FullScreen)(THIS_ VARIANT_BOOL) PURE; + + STDMETHOD(Navigate2)(THIS_ VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT*) PURE; + STDMETHOD(QueryStatusWB)(THIS_ OLECMDID,OLECMDF*) PURE; + STDMETHOD(ExecWB)(THIS_ OLECMDID,OLECMDEXECOPT,VARIANT*,VARIANT*) PURE; + STDMETHOD(ShowBrowserBar)(THIS_ VARIANT*,VARIANT*,VARIANT*) PURE; + STDMETHOD(get_ReadyState)(THIS_ READYSTATE*) PURE; + STDMETHOD(get_Offline)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_Offline)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_Silent)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_Silent)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_RegistaerAsBrowser)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_RegisterAsBrowser)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_RegistaerAsDropTarget)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_RegisterAsDropTarget)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_TheaterMode)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_TheaterMode)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_AddressBar)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_AddressBar)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_Resizable)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_Resizable)(THIS_ VARIANT_BOOL) PURE; +}; + +#define STDDISP(m) STDMETHOD_(void,m) + +EXTERN_C const IID DIID_DWebBrowserEvents2; +#undef INTERFACE +#define INTERFACE DWebBrowserEvents2 +DECLARE_INTERFACE_(DWebBrowserEvents2,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDDISP(StatusTextChange)(THIS_ BSTR) PURE; + STDDISP(ProgressChange)(THIS_ long,long) PURE; + STDDISP(CommandStateChange)(THIS_ long,VARIANT_BOOL) PURE; + STDDISP(DownloadBegin)(THIS) PURE; + STDDISP(DownloadComplete)(THIS) PURE; + STDDISP(TitleChange)(THIS_ BSTR) PURE; + STDDISP(PropertyChange)(THIS_ BSTR) PURE; + STDDISP(BeforeNavigate2)(THIS_ IDispatch*,VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT_BOOL*) PURE; + STDDISP(NewWindow2)(THIS_ IDispatch**,VARIANT_BOOL*) PURE; + STDDISP(NavigateComplete)(THIS_ IDispatch*,VARIANT*) PURE; + STDDISP(DocumentComplete)(THIS_ IDispatch*,VARIANT*) PURE; + STDDISP(OnQuit)(THIS) PURE; + STDDISP(OnVisible)(THIS_ VARIANT_BOOL) PURE; + STDDISP(OnToolBar)(THIS_ VARIANT_BOOL) PURE; + STDDISP(OnMenuBar)(THIS_ VARIANT_BOOL) PURE; + STDDISP(OnStatusBar)(THIS_ VARIANT_BOOL) PURE; + STDDISP(OnFullScreen)(THIS_ VARIANT_BOOL) PURE; + STDDISP(OnTheaterMode)(THIS_ VARIANT_BOOL) PURE; + STDDISP(WindowSetResizable)(THIS_ VARIANT_BOOL) PURE; + STDDISP(WindowSetLeft)(THIS_ long) PURE; + STDDISP(WindowSetTop)(THIS_ long) PURE; + STDDISP(WindowSetWidth)(THIS_ long) PURE; + STDDISP(WindowSetHeight)(THIS_ long) PURE; + STDDISP(WindowClosing)(THIS_ VARIANT_BOOL,VARIANT_BOOL*) PURE; + STDDISP(ClientToHostWindow)(THIS_ long*,long*) PURE; + STDDISP(SetSecureLockIcon)(THIS_ long) PURE; + STDDISP(FileDownload)(THIS_ VARIANT_BOOL*) PURE; +}; + +#undef STDDISP + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/exdispid.h b/reactos/w32api/include/exdispid.h new file mode 100644 index 00000000000..da2b0a4f01a --- /dev/null +++ b/reactos/w32api/include/exdispid.h @@ -0,0 +1,14 @@ +#ifndef _EXDISPID_H +#define _EXDISPID_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define DISPID_BEFORENAVIGATE2 250 +#define DISPID_NEWWINDOW2 251 +#define DISPID_PROGRESSCHANGE 108 +#define DISPID_DOCUMENTCOMPLETE 259 +#define DISPID_STATUSTEXTCHANGE 102 +#define DISPID_TITLECHANGE 113 + +#endif diff --git a/reactos/w32api/include/httpext.h b/reactos/w32api/include/httpext.h new file mode 100644 index 00000000000..ddff9471f6d --- /dev/null +++ b/reactos/w32api/include/httpext.h @@ -0,0 +1,90 @@ +/* + 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. +*/ + +#ifndef _HTTPEXT_H +#define _HTTPEXT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define HSE_VERSION_MAJOR 2 +#define HSE_VERSION_MINOR 0 +#define HSE_LOG_BUFFER_LEN 80 +#define HSE_MAX_EXT_DLL_NAME_LEN 256 +#define HSE_STATUS_SUCCESS 1 +#define HSE_STATUS_SUCCESS_AND_KEEP_CONN 2 +#define HSE_STATUS_PENDING 3 +#define HSE_STATUS_ERROR 4 +#define HSE_REQ_BASE 0 +#define HSE_REQ_SEND_URL_REDIRECT_RESP 1 +#define HSE_REQ_SEND_URL 2 +#define HSE_REQ_SEND_RESPONSE_HEADER 3 +#define HSE_REQ_DONE_WITH_SESSION 4 +#define HSE_REQ_END_RESERVED 1000 +#define HSE_TERM_ADVISORY_UNLOAD 0x00000001 +#define HSE_TERM_MUST_UNLOAD 0x00000002 +#define HSE_IO_SYNC 0x00000001 +#define HSE_IO_ASYNC 0x00000002 +#define HSE_IO_DISCONNECT_AFTER_SEND 0x00000004 +#define HSE_IO_SEND_HEADERS 0x00000008 +typedef LPVOID HCONN; +typedef struct _HSE_VERSION_INFO { + DWORD dwExtensionVersion; + CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN]; +} HSE_VERSION_INFO, *LPHSE_VERSION_INFO; +typedef struct _EXTENSION_CONTROL_BLOCK { + DWORD cbSize; + DWORD dwVersion; + HCONN ConnID; + DWORD dwHttpStatusCode; + CHAR lpszLogData[HSE_LOG_BUFFER_LEN]; + LPSTR lpszMethod; + LPSTR lpszQueryString; + LPSTR lpszPathInfo; + LPSTR lpszPathTranslated; + DWORD cbTotalBytes; + DWORD cbAvailable; + LPBYTE lpbData; + LPSTR lpszContentType; + BOOL (PASCAL *GetServerVariable)(HCONN,LPSTR,LPVOID,LPDWORD); + BOOL (PASCAL *WriteClient)(HCONN,LPVOID,LPDWORD,DWORD); + BOOL (PASCAL *ReadClient)(HCONN,LPVOID,LPDWORD); + BOOL (PASCAL *ServerSupportFunction)(HCONN,DWORD,LPVOID,LPDWORD,LPDWORD); +} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK; +typedef BOOL (PASCAL *PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO*); +typedef DWORD (PASCAL *PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK*); +typedef BOOL (PASCAL *PFN_TERMINATEEXTENSION)(DWORD); +typedef VOID (PASCAL *PFN_HSE_IO_COMPLETION)(EXTENSION_CONTROL_BLOCK*,PVOID,DWORD,DWORD); +typedef 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; +} HSE_TF_INFO, *LPHSE_TF_INFO; +BOOL PASCAL GetExtensionVersion(HSE_VERSION_INFO*); +DWORD PASCAL HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); +BOOL PASCAL TerminateExtension(DWORD); +#ifdef __cplusplus +} +#endif +#endif /* _HTTPEXT_H */ diff --git a/reactos/w32api/include/idispids.h b/reactos/w32api/include/idispids.h new file mode 100644 index 00000000000..66585b4d0e7 --- /dev/null +++ b/reactos/w32api/include/idispids.h @@ -0,0 +1,10 @@ +#ifndef _IDISPIDS_H +#define _IDISPIDS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define DISPID_AMBIENT_OFFLINEIFNOTCONNECTED (-5501) +#define DISPID_AMBIENT_SILENT (-5502) + +#endif diff --git a/reactos/w32api/include/imagehlp.h b/reactos/w32api/include/imagehlp.h new file mode 100644 index 00000000000..1f94533c10e --- /dev/null +++ b/reactos/w32api/include/imagehlp.h @@ -0,0 +1,329 @@ +/* + imagehlp.h - Include file for IMAGEHLP.DLL APIs + + Written by Mumit Khan + + This file is part of a free library for the Win32 API. + + 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. + + 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. + +*/ + +#ifndef _IMAGEHLP_H +#define _IMAGEHLP_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define API_VERSION_NUMBER 7 +#define BIND_NO_BOUND_IMPORTS 0x00000001 +#define BIND_NO_UPDATE 0x00000002 +#define BIND_ALL_IMAGES 0x00000004 +#define BIND_CACHE_IMPORT_DLLS 0x00000008 +#define CBA_DEFERRED_SYMBOL_LOAD_START 1 +#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 2 +#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 3 +#define CBA_SYMBOLS_UNLOADED 4 +#define CBA_DUPLICATE_SYMBOL 5 +#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 1 +#define CERT_PE_IMAGE_DIGEST_RESOURCES 2 +#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 4 +#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 8 +#define CERT_SECTION_TYPE_ANY 255 +#define CHECKSUM_SUCCESS 0 +#define CHECKSUM_OPEN_FAILURE 1 +#define CHECKSUM_MAP_FAILURE 2 +#define CHECKSUM_MAPVIEW_FAILURE 3 +#define CHECKSUM_UNICODE_FAILURE 4 +#define IMAGE_SEPARATION 65536 +#define SPLITSYM_REMOVE_PRIVATE 1 +#define SPLITSYM_EXTRACT_ALL 2 +#define SPLITSYM_SYMBOLPATH_IS_SRC 4 +#define SYMF_OMAP_GENERATED 1 +#define SYMF_OMAP_MODIFIED 2 +#define SYMOPT_CASE_INSENSITIVE 1 +#define SYMOPT_UNDNAME 2 +#define SYMOPT_DEFERRED_LOADS 4 +#define SYMOPT_NO_CPP 8 +#define SYMOPT_LOAD_LINES 16 +#define SYMOPT_OMAP_FIND_NEAREST 32 +#define UNDNAME_COMPLETE 0 +#define UNDNAME_NO_LEADING_UNDERSCORES 1 +#define UNDNAME_NO_MS_KEYWORDS 2 +#define UNDNAME_NO_FUNCTION_RETURNS 4 +#define UNDNAME_NO_ALLOCATION_MODEL 8 +#define UNDNAME_NO_ALLOCATION_LANGUAGE 16 +#define UNDNAME_NO_MS_THISTYPE 32 +#define UNDNAME_NO_CV_THISTYPE 64 +#define UNDNAME_NO_THISTYPE 96 +#define UNDNAME_NO_ACCESS_SPECIFIERS 128 +#define UNDNAME_NO_THROW_SIGNATURES 256 +#define UNDNAME_NO_MEMBER_TYPE 512 +#define UNDNAME_NO_RETURN_UDT_MODEL 1024 +#define UNDNAME_32_BIT_DECODE 2048 +#define UNDNAME_NAME_ONLY 4096 +#define UNDNAME_NO_ARGUMENTS 8192 +#define UNDNAME_NO_SPECIAL_SYMS 16384 + +#define _IMAGEHLPAPI DECLSPEC_IMPORT WINAPI + +#ifndef RC_INVOKED + +typedef enum _IMAGEHLP_STATUS_REASON { + BindOutOfMemory, + BindRvaToVaFailed, + BindNoRoomInImage, + BindImportModuleFailed, + BindImportProcedureFailed, + BindImportModule, + BindImportProcedure, + BindForwarder, + BindForwarderNOT, + BindImageModified, + BindExpandFileHeaders, + BindImageComplete, + BindMismatchedSymbols, + BindSymbolsNotUpdated +} IMAGEHLP_STATUS_REASON; +typedef BOOL(STDCALL*PIMAGEHLP_STATUS_ROUTINE)(IMAGEHLP_STATUS_REASON,LPSTR,LPSTR,ULONG,ULONG); +typedef 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; +} LOADED_IMAGE,*PLOADED_IMAGE; +typedef 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 Reserved[3]; +} IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION; +typedef enum { + AddrMode1616, + AddrMode1632, + AddrModeReal, + AddrModeFlat +} ADDRESS_MODE; +typedef struct _tagADDRESS { + DWORD Offset; + WORD Segment; + ADDRESS_MODE Mode; +} ADDRESS,*LPADDRESS; +typedef struct _KDHELP { + DWORD Thread; + DWORD ThCallbackStack; + DWORD NextCallback; + DWORD FramePointer; + DWORD KiCallUserMode; + DWORD KeUserCallbackDispatcher; + DWORD SystemRangeStart; +} KDHELP,*PKDHELP; +typedef struct _tagSTACKFRAME { + ADDRESS AddrPC; + ADDRESS AddrReturn; + ADDRESS AddrFrame; + ADDRESS AddrStack; + LPVOID FuncTableEntry; + DWORD Params[4]; + BOOL Far; + BOOL Virtual; + DWORD Reserved[3]; + KDHELP KdHelp; +} STACKFRAME,*LPSTACKFRAME; +typedef BOOL(STDCALL*PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE ,LPCVOID,LPVOID,DWORD,LPDWORD); +typedef LPVOID(STDCALL*PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE,DWORD); +typedef DWORD(STDCALL*PGET_MODULE_BASE_ROUTINE)(HANDLE,DWORD); +typedef DWORD(STDCALL*PTRANSLATE_ADDRESS_ROUTINE)(HANDLE,HANDLE,LPADDRESS); +typedef struct API_VERSION { + USHORT MajorVersion; + USHORT MinorVersion; + USHORT Revision; + USHORT Reserved; +} API_VERSION,*LPAPI_VERSION; +typedef BOOL(CALLBACK*PSYM_ENUMMODULES_CALLBACK)(LPSTR,ULONG,PVOID); +typedef BOOL(CALLBACK*PSYM_ENUMSYMBOLS_CALLBACK)(LPSTR,ULONG,ULONG,PVOID); +typedef BOOL(CALLBACK*PENUMLOADED_MODULES_CALLBACK)(LPSTR,ULONG,ULONG,PVOID); +typedef BOOL(CALLBACK*PSYMBOL_REGISTERED_CALLBACK)(HANDLE,ULONG,PVOID,PVOID); +typedef enum { + SymNone, + SymCoff, + SymCv, + SymPdb, + SymExport, + SymDeferred, + SymSym +} SYM_TYPE; +typedef struct _IMAGEHLP_SYMBOL { + DWORD SizeOfStruct; + DWORD Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + CHAR Name[1]; +} IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL; +typedef struct _IMAGEHLP_MODULE { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR ModuleName[32]; + CHAR ImageName[256]; + CHAR LoadedImageName[256]; +} IMAGEHLP_MODULE,*PIMAGEHLP_MODULE; +typedef struct _IMAGEHLP_LINE { + DWORD SizeOfStruct; + DWORD Key; + DWORD LineNumber; + PCHAR FileName; + DWORD Address; +} IMAGEHLP_LINE,*PIMAGEHLP_LINE; +typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD CheckSum; + DWORD TimeDateStamp; + CHAR FileName[MAX_PATH]; + BOOLEAN Reparse; +} IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD; +typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { + DWORD SizeOfStruct; + DWORD NumberOfDups; + PIMAGEHLP_SYMBOL Symbol; + ULONG SelectedSymbol; +} IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL; +typedef PVOID DIGEST_HANDLE; +typedef BOOL(WINAPI*DIGEST_FUNCTION)(DIGEST_HANDLE refdata,PBYTE pData,DWORD dwLength); + +PIMAGE_NT_HEADERS _IMAGEHLPAPI CheckSumMappedFile(LPVOID,DWORD,LPDWORD,LPDWORD); +DWORD _IMAGEHLPAPI MapFileAndCheckSumA(LPSTR,LPDWORD,LPDWORD); +DWORD _IMAGEHLPAPI MapFileAndCheckSumW(PWSTR,LPDWORD,LPDWORD); +BOOL _IMAGEHLPAPI TouchFileTimes(HANDLE,LPSYSTEMTIME); +BOOL _IMAGEHLPAPI SplitSymbols(LPSTR,LPSTR,LPSTR,DWORD); +HANDLE _IMAGEHLPAPI FindDebugInfoFile(LPSTR,LPSTR,LPSTR); +HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR); +BOOL _IMAGEHLPAPI UpdateDebugInfoFile(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS); +BOOL _IMAGEHLPAPI UpdateDebugInfoFileEx(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS,DWORD); +BOOL _IMAGEHLPAPI BindImage(IN LPSTR,IN LPSTR,IN LPSTR); +BOOL _IMAGEHLPAPI BindImageEx(IN DWORD,IN LPSTR,IN LPSTR,IN LPSTR,IN PIMAGEHLP_STATUS_ROUTINE); +BOOL _IMAGEHLPAPI ReBaseImage(IN LPSTR,IN LPSTR,IN BOOL, IN BOOL,IN BOOL, IN ULONG, OUT ULONG*, OUT ULONG*, OUT ULONG*, IN OUT ULONG*, IN ULONG); + +PLOADED_IMAGE _IMAGEHLPAPI ImageLoad(LPSTR,LPSTR); +BOOL _IMAGEHLPAPI ImageUnload(PLOADED_IMAGE); +PIMAGE_NT_HEADERS _IMAGEHLPAPI ImageNtHeader(IN PVOID); +PVOID _IMAGEHLPAPI ImageDirectoryEntryToData(IN PVOID,IN BOOLEAN,IN USHORT,OUT PULONG); +PIMAGE_SECTION_HEADER _IMAGEHLPAPI ImageRvaToSection(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG); +PVOID _IMAGEHLPAPI ImageRvaToVa(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG,IN OUT PIMAGE_SECTION_HEADER*); +BOOL _IMAGEHLPAPI MapAndLoad(LPSTR,LPSTR,PLOADED_IMAGE,BOOL,BOOL); +BOOL _IMAGEHLPAPI GetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY); +DWORD _IMAGEHLPAPI GetImageUnusedHeaderBytes(PLOADED_IMAGE,LPDWORD); +BOOL _IMAGEHLPAPI SetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY); +BOOL _IMAGEHLPAPI UnMapAndLoad(PLOADED_IMAGE); +PIMAGE_DEBUG_INFORMATION _IMAGEHLPAPI MapDebugInformation(HANDLE,LPSTR,LPSTR,DWORD); +BOOL _IMAGEHLPAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); +HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR); +BOOL _IMAGEHLPAPI SearchTreeForFile(LPSTR,LPSTR,LPSTR); +BOOL _IMAGEHLPAPI MakeSureDirectoryPathExists(LPCSTR); +DWORD _IMAGEHLPAPI WINAPI UnDecorateSymbolName(LPCSTR,LPSTR,DWORD, DWORD); +BOOL +_IMAGEHLPAPI +StackWalk(DWORD,HANDLE,HANDLE,LPSTACKFRAME,LPVOID,PREAD_PROCESS_MEMORY_ROUTINE,PFUNCTION_TABLE_ACCESS_ROUTINE,PGET_MODULE_BASE_ROUTINE,PTRANSLATE_ADDRESS_ROUTINE); +LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersion(VOID); +LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersionEx(LPAPI_VERSION); +DWORD _IMAGEHLPAPI GetTimestampForLoadedLibrary(HMODULE); +BOOL _IMAGEHLPAPI RemovePrivateCvSymbolic(PCHAR,PCHAR*,ULONG*); +VOID _IMAGEHLPAPI RemoveRelocations(PCHAR); +DWORD _IMAGEHLPAPI SymSetOptions(IN DWORD); +DWORD _IMAGEHLPAPI SymGetOptions(VOID); +BOOL _IMAGEHLPAPI SymCleanup(IN HANDLE); +BOOL _IMAGEHLPAPI SymEnumerateModules(IN HANDLE,IN PSYM_ENUMMODULES_CALLBACK,IN PVOID); +BOOL _IMAGEHLPAPI SymEnumerateSymbols(IN HANDLE,IN DWORD,IN PSYM_ENUMSYMBOLS_CALLBACK,IN PVOID); +BOOL _IMAGEHLPAPI EnumerateLoadedModules(IN HANDLE,IN PENUMLOADED_MODULES_CALLBACK,IN PVOID); +LPVOID _IMAGEHLPAPI SymFunctionTableAccess(HANDLE,DWORD); +BOOL _IMAGEHLPAPI SymGetModuleInfo(IN HANDLE,IN DWORD,OUT PIMAGEHLP_MODULE); +DWORD _IMAGEHLPAPI SymGetModuleBase(IN HANDLE,IN DWORD); +BOOL _IMAGEHLPAPI SymGetSymFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetSymFromName(IN HANDLE,IN LPSTR,OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetSymNext(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetSymPrev(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetLineFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymGetLineFromName(IN HANDLE,IN LPSTR,IN LPSTR,IN DWORD,OUT PLONG,IN OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymGetLineNext(IN HANDLE,IN OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymGetLinePrev(IN HANDLE,IN OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymMatchFileName(IN LPSTR,IN LPSTR,OUT LPSTR*,OUT LPSTR*); +BOOL _IMAGEHLPAPI SymInitialize(IN HANDLE,IN LPSTR,IN BOOL); +BOOL _IMAGEHLPAPI SymGetSearchPath(IN HANDLE,OUT LPSTR,IN DWORD); +BOOL _IMAGEHLPAPI SymSetSearchPath(IN HANDLE,IN LPSTR); +BOOL _IMAGEHLPAPI SymLoadModule(IN HANDLE,IN HANDLE,IN PSTR,IN PSTR,IN DWORD,IN DWORD); +BOOL _IMAGEHLPAPI SymUnloadModule(IN HANDLE,IN DWORD); +BOOL _IMAGEHLPAPI SymUnDName(IN PIMAGEHLP_SYMBOL,OUT LPSTR,IN DWORD); +BOOL _IMAGEHLPAPI SymRegisterCallback(IN HANDLE,IN PSYMBOL_REGISTERED_CALLBACK,IN PVOID); +BOOL _IMAGEHLPAPI ImageGetDigestStream(IN HANDLE,IN DWORD,IN DIGEST_FUNCTION,IN DIGEST_HANDLE); +BOOL _IMAGEHLPAPI ImageAddCertificate(IN HANDLE,IN LPWIN_CERTIFICATE,OUT PDWORD); +BOOL _IMAGEHLPAPI ImageRemoveCertificate(IN HANDLE,IN DWORD); +BOOL _IMAGEHLPAPI ImageEnumerateCertificates(IN HANDLE,IN WORD,OUT PDWORD,IN OUT PDWORD OPTIONAL,IN OUT DWORD OPTIONAL); +BOOL _IMAGEHLPAPI ImageGetCertificateData(IN HANDLE,IN DWORD,OUT LPWIN_CERTIFICATE,IN OUT PDWORD); +BOOL _IMAGEHLPAPI ImageGetCertificateHeader(IN HANDLE,IN DWORD,IN OUT LPWIN_CERTIFICATE); +BOOL _IMAGEHLPAPI CopyPdb(CHAR const*,CHAR const*,BOOL); +BOOL _IMAGEHLPAPI RemovePrivateCvSymbolicEx(PCHAR,ULONG,PCHAR*,ULONG*); + +#endif /* RC_INVOKED */ + +#ifdef UNICODE +#define MapFileAndCheckSum MapFileAndCheckSumW +#else +#define MapFileAndCheckSum MapFileAndCheckSumA +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _IMAGEHLP_H */ + diff --git a/reactos/w32api/include/imm.h b/reactos/w32api/include/imm.h new file mode 100644 index 00000000000..6ae9cab43ca --- /dev/null +++ b/reactos/w32api/include/imm.h @@ -0,0 +1,430 @@ +#ifndef _IMM_H +#define _IMM_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define WM_CONVERTREQUESTEX 0x108 +#define WM_IME_STARTCOMPOSITION 0x10D +#define WM_IME_ENDCOMPOSITION 0x10E +#define WM_IME_COMPOSITION 0x10F +#define WM_IME_KEYLAST 0x10F +#define WM_IME_SETCONTEXT 0x281 +#define WM_IME_NOTIFY 0x282 +#define WM_IME_CONTROL 0x283 +#define WM_IME_COMPOSITIONFULL 0x284 +#define WM_IME_SELECT 0x285 +#define WM_IME_CHAR 0x286 +#define WM_IME_KEYDOWN 0x290 +#define WM_IME_KEYUP 0x291 +#define IMC_GETCANDIDATEPOS 7 +#define IMC_SETCANDIDATEPOS 8 +#define IMC_GETCOMPOSITIONFONT 9 +#define IMC_SETCOMPOSITIONFONT 10 +#define IMC_GETCOMPOSITIONWINDOW 11 +#define IMC_SETCOMPOSITIONWINDOW 12 +#define IMC_GETSTATUSWINDOWPOS 15 +#define IMC_SETSTATUSWINDOWPOS 16 +#define IMC_CLOSESTATUSWINDOW 0x21 +#define IMC_OPENSTATUSWINDOW 0x22 +#define IMN_CLOSESTATUSWINDOW 1 +#define IMN_OPENSTATUSWINDOW 2 +#define IMN_CHANGECANDIDATE 3 +#define IMN_CLOSECANDIDATE 4 +#define IMN_OPENCANDIDATE 5 +#define IMN_SETCONVERSIONMODE 6 +#define IMN_SETSENTENCEMODE 7 +#define IMN_SETOPENSTATUS 8 +#define IMN_SETCANDIDATEPOS 9 +#define IMN_SETCOMPOSITIONFONT 10 +#define IMN_SETCOMPOSITIONWINDOW 11 +#define IMN_SETSTATUSWINDOWPOS 12 +#define IMN_GUIDELINE 13 +#define IMN_PRIVATE 14 +#define NI_OPENCANDIDATE 16 +#define NI_CLOSECANDIDATE 17 +#define NI_SELECTCANDIDATESTR 18 +#define NI_CHANGECANDIDATELIST 19 +#define NI_FINALIZECONVERSIONRESULT 20 +#define NI_COMPOSITIONSTR 21 +#define NI_SETCANDIDATE_PAGESTART 22 +#define NI_SETCANDIDATE_PAGESIZE 23 +#define NI_IMEMENUSELECTED 24 +#define ISC_SHOWUICANDIDATEWINDOW 1 +#define ISC_SHOWUICOMPOSITIONWINDOW 0x80000000 +#define ISC_SHOWUIGUIDELINE 0x40000000 +#define ISC_SHOWUIALLCANDIDATEWINDOW 15 +#define ISC_SHOWUIALL 0xC000000F +#define CPS_COMPLETE 1 +#define CPS_CONVERT 2 +#define CPS_REVERT 3 +#define CPS_CANCEL 4 +#define IME_CHOTKEY_IME_NONIME_TOGGLE 16 +#define IME_CHOTKEY_SHAPE_TOGGLE 17 +#define IME_CHOTKEY_SYMBOL_TOGGLE 18 +#define IME_JHOTKEY_CLOSE_OPEN 0x30 +#define IME_KHOTKEY_SHAPE_TOGGLE 0x50 +#define IME_KHOTKEY_HANJACONVERT 0x51 +#define IME_KHOTKEY_ENGLISH 0x52 +#define IME_THOTKEY_IME_NONIME_TOGGLE 0x70 +#define IME_THOTKEY_SHAPE_TOGGLE 0x71 +#define IME_THOTKEY_SYMBOL_TOGGLE 0x72 +#define IME_HOTKEY_DSWITCH_FIRST 256 +#define IME_HOTKEY_DSWITCH_LAST 0x11F +#define IME_ITHOTKEY_RESEND_RESULTSTR 512 +#define IME_ITHOTKEY_PREVIOUS_COMPOSITION 513 +#define IME_ITHOTKEY_UISTYLE_TOGGLE 514 +#define GCS_COMPREADSTR 1 +#define GCS_COMPREADATTR 2 +#define GCS_COMPREADCLAUSE 4 +#define GCS_COMPSTR 8 +#define GCS_COMPATTR 16 +#define GCS_COMPCLAUSE 32 +#define GCS_CURSORPOS 128 +#define GCS_DELTASTART 256 +#define GCS_RESULTREADSTR 512 +#define GCS_RESULTREADCLAUSE 1024 +#define GCS_RESULTSTR 2048 +#define GCS_RESULTCLAUSE 4096 +#define CS_INSERTCHAR 0x2000 +#define CS_NOMOVECARET 0x4000 +#define IMEVER_0310 0x3000A +#define IMEVER_0400 0x40000 +#define IME_PROP_AT_CARET 0x10000 +#define IME_PROP_SPECIAL_UI 0x20000 +#define IME_PROP_CANDLIST_START_FROM_1 0x40000 +#define IME_PROP_UNICODE 0x80000 +#define UI_CAP_2700 1 +#define UI_CAP_ROT90 2 +#define UI_CAP_ROTANY 4 +#define SCS_CAP_COMPSTR 1 +#define SCS_CAP_MAKEREAD 2 +#define SELECT_CAP_CONVERSION 1 +#define SELECT_CAP_SENTENCE 2 +#define GGL_LEVEL 1 +#define GGL_INDEX 2 +#define GGL_STRING 3 +#define GGL_PRIVATE 4 +#define GL_LEVEL_NOGUIDELINE 0 +#define GL_LEVEL_FATAL 1 +#define GL_LEVEL_ERROR 2 +#define GL_LEVEL_WARNING 3 +#define GL_LEVEL_INFORMATION 4 +#define GL_ID_UNKNOWN 0 +#define GL_ID_NOMODULE 1 +#define GL_ID_NODICTIONARY 16 +#define GL_ID_CANNOTSAVE 17 +#define GL_ID_NOCONVERT 32 +#define GL_ID_TYPINGERROR 33 +#define GL_ID_TOOMANYSTROKE 34 +#define GL_ID_READINGCONFLICT 35 +#define GL_ID_INPUTREADING 36 +#define GL_ID_INPUTRADICAL 37 +#define GL_ID_INPUTCODE 38 +#define GL_ID_INPUTSYMBOL 39 +#define GL_ID_CHOOSECANDIDATE 40 +#define GL_ID_REVERSECONVERSION 41 +#define GL_ID_PRIVATE_FIRST 0x8000 +#define GL_ID_PRIVATE_LAST 0xFFFF +#define IGP_GETIMEVERSION (DWORD)(-4) +#define IGP_PROPERTY 4 +#define IGP_CONVERSION 8 +#define IGP_SENTENCE 12 +#define IGP_UI 16 +#define IGP_SETCOMPSTR 0x14 +#define IGP_SELECT 0x18 +#define SCS_SETSTR (GCS_COMPREADSTR|GCS_COMPSTR) +#define SCS_CHANGEATTR (GCS_COMPREADATTR|GCS_COMPATTR) +#define SCS_CHANGECLAUSE (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE) +#define ATTR_INPUT 0 +#define ATTR_TARGET_CONVERTED 1 +#define ATTR_CONVERTED 2 +#define ATTR_TARGET_NOTCONVERTED 3 +#define ATTR_INPUT_ERROR 4 +#define ATTR_FIXEDCONVERTED 5 +#define CFS_DEFAULT 0 +#define CFS_RECT 1 +#define CFS_POINT 2 +#define CFS_SCREEN 4 +#define CFS_FORCE_POSITION 32 +#define CFS_CANDIDATEPOS 64 +#define CFS_EXCLUDE 128 +#define GCL_CONVERSION 1 +#define GCL_REVERSECONVERSION 2 +#define GCL_REVERSE_LENGTH 3 +#define IME_CMODE_ALPHANUMERIC 0 +#define IME_CMODE_NATIVE 1 +#define IME_CMODE_CHINESE IME_CMODE_NATIVE +#define IME_CMODE_HANGEUL IME_CMODE_NATIVE +#define IME_CMODE_HANGUL IME_CMODE_NATIVE +#define IME_CMODE_JAPANESE IME_CMODE_NATIVE +#define IME_CMODE_KATAKANA 2 +#define IME_CMODE_LANGUAGE 3 +#define IME_CMODE_FULLSHAPE 8 +#define IME_CMODE_ROMAN 16 +#define IME_CMODE_CHARCODE 32 +#define IME_CMODE_HANJACONVERT 64 +#define IME_CMODE_SOFTKBD 128 +#define IME_CMODE_NOCONVERSION 256 +#define IME_CMODE_EUDC 512 +#define IME_CMODE_SYMBOL 1024 +#define IME_CMODE_FIXED 2048 +#define IME_SMODE_NONE 0 +#define IME_SMODE_PLAURALCLAUSE 1 +#define IME_SMODE_SINGLECONVERT 2 +#define IME_SMODE_AUTOMATIC 4 +#define IME_SMODE_PHRASEPREDICT 8 +#define IME_CAND_UNKNOWN 0 +#define IME_CAND_READ 1 +#define IME_CAND_CODE 2 +#define IME_CAND_MEANING 3 +#define IME_CAND_RADICAL 4 +#define IME_CAND_STROKE 5 +#define IMM_ERROR_NODATA (-1) +#define IMM_ERROR_GENERAL (-2) +#define IME_CONFIG_GENERAL 1 +#define IME_CONFIG_REGISTERWORD 2 +#define IME_CONFIG_SELECTDICTIONARY 3 +#define IME_ESC_QUERY_SUPPORT 3 +#define IME_ESC_RESERVED_FIRST 4 +#define IME_ESC_RESERVED_LAST 0x7FF +#define IME_ESC_PRIVATE_FIRST 0x800 +#define IME_ESC_PRIVATE_LAST 0xFFF +#define IME_ESC_SEQUENCE_TO_INTERNAL 0x1001 +#define IME_ESC_GET_EUDC_DICTIONARY 0x1003 +#define IME_ESC_SET_EUDC_DICTIONARY 0x1004 +#define IME_ESC_MAX_KEY 0x1005 +#define IME_ESC_IME_NAME 0x1006 +#define IME_ESC_SYNC_HOTKEY 0x1007 +#define IME_ESC_HANJA_MODE 0x1008 +#define IME_ESC_AUTOMATA 0x1009 +#define IME_REGWORD_STYLE_EUDC 1 +#define IME_REGWORD_STYLE_USER_FIRST 0x80000000 +#define IME_REGWORD_STYLE_USER_LAST 0xFFFFFFFF +#define SOFTKEYBOARD_TYPE_T1 1 +#define SOFTKEYBOARD_TYPE_C1 2 +#define IMEMENUITEM_STRING_SIZE 80 +#define MOD_ALT 1 +#define MOD_CONTROL 2 +#define MOD_SHIFT 4 +#define MOD_WIN 8 +#define MOD_IGNORE_ALL_MODIFIER 1024 +#define MOD_ON_KEYUP 2048 +#define MOD_RIGHT 16384 +#define MOD_LEFT 32768 +#define IACE_CHILDREN 1 +#define IACE_DEFAULT 16 +#define IACE_IGNORENOCONTEXT 32 +#define IGIMIF_RIGHTMENU 1 +#define IGIMII_CMODE 1 +#define IGIMII_SMODE 2 +#define IGIMII_CONFIGURE 4 +#define IGIMII_TOOLS 8 +#define IGIMII_HELP 16 +#define IGIMII_OTHER 32 +#define IGIMII_INPUTTOOLS 64 +#define IMFT_RADIOCHECK 1 +#define IMFT_SEPARATOR 2 +#define IMFT_SUBMENU 4 +#define IMFS_GRAYED MFS_GRAYED +#define IMFS_DISABLED MFS_DISABLED +#define IMFS_CHECKED MFS_CHECKED +#define IMFS_HILITE MFS_HILITE +#define IMFS_ENABLED MFS_ENABLED +#define IMFS_UNCHECKED MFS_UNCHECKED +#define IMFS_UNHILITE MFS_UNHILITE +#define IMFS_DEFAULT MFS_DEFAULT +#ifndef VK_PROCESSKEY +#define VK_PROCESSKEY 0x0E5 +#endif +#define STYLE_DESCRIPTION_SIZE 32 +typedef DWORD HIMC; +typedef DWORD HIMCC; +typedef HKL *LPHKL; +typedef struct tagCOMPOSITIONFORM { + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} COMPOSITIONFORM,*PCOMPOSITIONFORM,*LPCOMPOSITIONFORM; +typedef struct tagCANDIDATEFORM { + DWORD dwIndex; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} CANDIDATEFORM,*PCANDIDATEFORM,*LPCANDIDATEFORM; +typedef struct tagCANDIDATELIST { + DWORD dwSize; + DWORD dwStyle; + DWORD dwCount; + DWORD dwSelection; + DWORD dwPageStart; + DWORD dwPageSize; + DWORD dwOffset[1]; +} CANDIDATELIST,*PCANDIDATELIST,*LPCANDIDATELIST; +typedef struct tagREGISTERWORDA { + LPSTR lpReading; + LPSTR lpWord; +} REGISTERWORDA,*PREGISTERWORDA,*LPREGISTERWORDA; +typedef struct tagREGISTERWORDW { + LPWSTR lpReading; + LPWSTR lpWord; +} REGISTERWORDW,*PREGISTERWORDW,*LPREGISTERWORDW; +typedef struct tagSTYLEBUFA { + DWORD dwStyle; + CHAR szDescription[STYLE_DESCRIPTION_SIZE]; +} STYLEBUFA,*PSTYLEBUFA,*LPSTYLEBUFA; +typedef struct tagSTYLEBUFW { + DWORD dwStyle; + WCHAR szDescription[STYLE_DESCRIPTION_SIZE]; +} STYLEBUFW,*PSTYLEBUFW,*LPSTYLEBUFW; +typedef struct tagIMEMENUITEMINFOA { + UINT cbSize; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + CHAR szString[IMEMENUITEM_STRING_SIZE]; + HBITMAP hbmpItem; +} IMEMENUITEMINFOA,*PIMEMENUITEMINFOA,*LPIMEMENUITEMINFOA; +typedef struct tagIMEMENUITEMINFOW { + UINT cbSize; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + WCHAR szString[IMEMENUITEM_STRING_SIZE]; + HBITMAP hbmpItem; +} IMEMENUITEMINFOW,*PIMEMENUITEMINFOW,*LPIMEMENUITEMINFOW; +typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID); +typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID); +#ifdef UNICODE +#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCW +typedef REGISTERWORDW REGISTERWORD,*PREGISTERWORD,*LPREGISTERWORD; +typedef STYLEBUFW STYLEBUF,*PSTYLEBUF,*LPSTYLEBUF; +typedef IMEMENUITEMINFOW IMEMENUITEMINFO,*PIMEMENUITEMINFO,*LPIMEMENUITEMINFO; +#else +#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCA +typedef REGISTERWORDA REGISTERWORD,*PREGISTERWORD,*LPREGISTERWORD; +typedef STYLEBUFA STYLEBUF,*PSTYLEBUF,*LPSTYLEBUF; +typedef IMEMENUITEMINFOA IMEMENUITEMINFO,*PIMEMENUITEMINFO,*LPIMEMENUITEMINFO; +#endif +HKL WINAPI ImmInstallIMEA(LPCSTR,LPCSTR); +HKL WINAPI ImmInstallIMEW(LPCWSTR,LPCWSTR); +HWND WINAPI ImmGetDefaultIMEWnd(HWND); +UINT WINAPI ImmGetDescriptionA(HKL,LPSTR,UINT); +UINT WINAPI ImmGetDescriptionW(HKL,LPWSTR,UINT); +UINT WINAPI ImmGetIMEFileNameA(HKL,LPSTR,UINT); +UINT WINAPI ImmGetIMEFileNameW(HKL,LPWSTR,UINT); +DWORD WINAPI ImmGetProperty(HKL,DWORD); +BOOL WINAPI ImmIsIME(HKL); +BOOL WINAPI ImmSimulateHotKey(HWND,DWORD); +HIMC WINAPI ImmCreateContext(void); +BOOL WINAPI ImmDestroyContext(HIMC); +HIMC WINAPI ImmGetContext(HWND); +BOOL WINAPI ImmReleaseContext(HWND,HIMC); +HIMC WINAPI ImmAssociateContext(HWND,HIMC); +LONG WINAPI ImmGetCompositionStringA(HIMC,DWORD,PVOID,DWORD); +LONG WINAPI ImmGetCompositionStringW(HIMC,DWORD,PVOID,DWORD); +BOOL WINAPI ImmSetCompositionStringA(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD); +BOOL WINAPI ImmSetCompositionStringW(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD); +DWORD WINAPI ImmGetCandidateListCountA(HIMC,PDWORD); +DWORD WINAPI ImmGetCandidateListCountW(HIMC,PDWORD); +DWORD WINAPI ImmGetCandidateListA(HIMC,DWORD,PCANDIDATELIST,DWORD); +DWORD WINAPI ImmGetCandidateListW(HIMC,DWORD,PCANDIDATELIST,DWORD); +DWORD WINAPI ImmGetGuideLineA(HIMC,DWORD,LPSTR,DWORD); +DWORD WINAPI ImmGetGuideLineW(HIMC,DWORD,LPWSTR,DWORD); +BOOL WINAPI ImmGetConversionStatus(HIMC,LPDWORD,PDWORD); +BOOL WINAPI ImmSetConversionStatus(HIMC,DWORD,DWORD); +BOOL WINAPI ImmGetOpenStatus(HIMC); +BOOL WINAPI ImmSetOpenStatus(HIMC,BOOL); +#ifndef NOGDI +BOOL WINAPI ImmGetCompositionFontA(HIMC,LPLOGFONTA); +BOOL WINAPI ImmGetCompositionFontW(HIMC,LPLOGFONTW); +BOOL WINAPI ImmSetCompositionFontA(HIMC,LPLOGFONTA); +BOOL WINAPI ImmSetCompositionFontW(HIMC,LPLOGFONTW); +#endif +BOOL WINAPI ImmConfigureIMEA(HKL,HWND,DWORD,PVOID); +BOOL WINAPI ImmConfigureIMEW(HKL,HWND,DWORD,PVOID); +LRESULT WINAPI ImmEscapeA(HKL,HIMC,UINT,PVOID); +LRESULT WINAPI ImmEscapeW(HKL,HIMC,UINT,PVOID); +DWORD WINAPI ImmGetConversionListA(HKL,HIMC,LPCSTR,PCANDIDATELIST,DWORD,UINT); +DWORD WINAPI ImmGetConversionListW(HKL,HIMC,LPCWSTR,PCANDIDATELIST,DWORD,UINT); +BOOL WINAPI ImmNotifyIME(HIMC,DWORD,DWORD,DWORD); +BOOL WINAPI ImmGetStatusWindowPos(HIMC,LPPOINT); +BOOL WINAPI ImmSetStatusWindowPos(HIMC,LPPOINT); +BOOL WINAPI ImmGetCompositionWindow(HIMC,PCOMPOSITIONFORM); +BOOL WINAPI ImmSetCompositionWindow(HIMC,PCOMPOSITIONFORM); +BOOL WINAPI ImmGetCandidateWindow(HIMC,DWORD,PCANDIDATEFORM); +BOOL WINAPI ImmSetCandidateWindow(HIMC,PCANDIDATEFORM); +BOOL WINAPI ImmIsUIMessageA(HWND,UINT,WPARAM,LPARAM); +BOOL WINAPI ImmIsUIMessageW(HWND,UINT,WPARAM,LPARAM); +UINT WINAPI ImmGetVirtualKey(HWND); +BOOL WINAPI ImmRegisterWordA(HKL,LPCSTR,DWORD,LPCSTR); +BOOL WINAPI ImmRegisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR); +BOOL WINAPI ImmUnregisterWordA(HKL,LPCSTR,DWORD,LPCSTR); +BOOL WINAPI ImmUnregisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR); +UINT WINAPI ImmGetRegisterWordStyleA(HKL,UINT,PSTYLEBUFA); +UINT WINAPI ImmGetRegisterWordStyleW(HKL,UINT,PSTYLEBUFW); +UINT WINAPI ImmEnumRegisterWordA(HKL,REGISTERWORDENUMPROCA,LPCSTR,DWORD,LPCSTR,PVOID); +UINT WINAPI ImmEnumRegisterWordW(HKL,REGISTERWORDENUMPROCW,LPCWSTR,DWORD,LPCWSTR,PVOID); +BOOL WINAPI EnableEUDC(BOOL); +BOOL WINAPI ImmDisableIME(DWORD); +DWORD WINAPI ImmGetImeMenuItemsA(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOA,LPIMEMENUITEMINFOA,DWORD); +DWORD WINAPI ImmGetImeMenuItemsW(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOW,LPIMEMENUITEMINFOW,DWORD); + +#ifdef UNICODE +#define ImmEnumRegisterWord ImmEnumRegisterWordW +#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleW +#define ImmUnregisterWord ImmUnregisterWordW +#define ImmRegisterWord ImmRegisterWordW +#define ImmInstallIME ImmInstallIMEW +#define ImmIsUIMessage ImmIsUIMessageW +#define ImmGetConversionList ImmGetConversionListW +#define ImmEscape ImmEscapeW +#define ImmConfigureIME ImmConfigureIMEW +#ifndef NOGDI +#define ImmSetCompositionFont ImmSetCompositionFontW +#define ImmGetCompositionFont ImmGetCompositionFontW +#endif +#define ImmGetGuideLine ImmGetGuideLineW +#define ImmGetCandidateList ImmGetCandidateListW +#define ImmGetCandidateListCount ImmGetCandidateListCountW +#define ImmSetCompositionString ImmSetCompositionStringW +#define ImmGetCompositionString ImmGetCompositionStringW +#define ImmGetDescription ImmGetDescriptionW +#define ImmGetIMEFileName ImmGetIMEFileNameW +#define ImmGetImeMenuItems ImmGetImeMenuItemsW +#else +#define ImmEnumRegisterWord ImmEnumRegisterWordA +#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleA +#define ImmUnregisterWord ImmUnregisterWordA +#define ImmRegisterWord ImmRegisterWordA +#define ImmInstallIME ImmInstallIMEA +#define ImmIsUIMessage ImmIsUIMessageA +#define ImmGetConversionList ImmGetConversionListA +#define ImmEscape ImmEscapeA +#define ImmConfigureIME ImmConfigureIMEA +#ifndef NOGDI +#define ImmSetCompositionFont ImmSetCompositionFontA +#define ImmGetCompositionFont ImmGetCompositionFontA +#endif +#define ImmGetGuideLine ImmGetGuideLineA +#define ImmGetCandidateList ImmGetCandidateListA +#define ImmGetCandidateListCount ImmGetCandidateListCountA +#define ImmSetCompositionString ImmSetCompositionStringA +#define ImmGetCompositionString ImmGetCompositionStringA +#define ImmGetDescription ImmGetDescriptionA +#define ImmGetIMEFileName ImmGetIMEFileNameA +#define ImmGetImeMenuItems ImmGetImeMenuItemsW +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/initguid.h b/reactos/w32api/include/initguid.h new file mode 100644 index 00000000000..b024c7075f8 --- /dev/null +++ b/reactos/w32api/include/initguid.h @@ -0,0 +1,12 @@ +#ifndef _INITGUID_H +#define _INITGUID_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifndef DEFINE_GUID +#include +#endif +#undef DEFINE_GUID +#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} +#endif diff --git a/reactos/w32api/include/intshcut.h b/reactos/w32api/include/intshcut.h new file mode 100644 index 00000000000..e4c87cd1073 --- /dev/null +++ b/reactos/w32api/include/intshcut.h @@ -0,0 +1,82 @@ +#ifndef _INTSHCUT_H +#define _INTSHCUT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#define INTSHCUTAPI DECLSPEC_IMPORT +#define E_FLAGS MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1000) +#define IS_E_EXEC_FAILED MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x2002) +#define URL_E_INVALID_SYNTAX MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1001) +#define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1002) +typedef 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|IURL_SETURL_FL_USE_DEFAULT_PROTOCOL) +} IURL_SETURL_FLAGS; +typedef 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|IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB) +} IURL_INVOKECOMMAND_FLAGS; +typedef enum translateurl_in_flags { + TRANSLATEURL_FL_GUESS_PROTOCOL=1, + TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, + ALL_TRANSLATEURL_FLAGS=(TRANSLATEURL_FL_GUESS_PROTOCOL|TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL) +} TRANSLATEURL_IN_FLAGS; +typedef enum urlassociationdialog_in_flags { + URLASSOCDLG_FL_USE_DEFAULT_NAME=1, + URLASSOCDLG_FL_REGISTER_ASSOC, + ALL_URLASSOCDLG_FLAGS=(URLASSOCDLG_FL_USE_DEFAULT_NAME|URLASSOCDLG_FL_REGISTER_ASSOC) +} URLASSOCIATIONDIALOG_IN_FLAGS; +typedef enum mimeassociationdialog_in_flags { + MIMEASSOCDLG_FL_REGISTER_ASSOC=1, + ALL_MIMEASSOCDLG_FLAGS=MIMEASSOCDLG_FL_REGISTER_ASSOC +} MIMEASSOCIATIONDIALOG_IN_FLAGS; +typedef struct urlinvokecommandinfo { + DWORD dwcbSize; + DWORD dwFlags; + HWND hwndParent; + PCSTR pcszVerb; +} URLINVOKECOMMANDINFO,*PURLINVOKECOMMANDINFO; +typedef const URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO; +typedef const URLINVOKECOMMANDINFO *PCURLINVOKECOMMANDINFO; +#undef INTERFACE +#define INTERFACE IUniformResourceLocator +DECLARE_INTERFACE_(IUniformResourceLocator,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetURL)(THIS_ PCSTR,DWORD) PURE; + STDMETHOD(GetURL)(THIS_ PSTR*) PURE; + STDMETHOD(InvokeCommand)(THIS_ PURLINVOKECOMMANDINFO) PURE; +}; +typedef IUniformResourceLocator *PIUniformResourceLocator; +typedef const IUniformResourceLocator CIUniformResourceLocator; +typedef const IUniformResourceLocator *PCIUniformResourceLocator; + +BOOL WINAPI InetIsOffline(DWORD); +HRESULT WINAPI MIMEAssociationDialogA(HWND,DWORD,PCSTR,PCSTR,PSTR,UINT); +HRESULT WINAPI MIMEAssociationDialogW(HWND,DWORD,PCWSTR,PCWSTR,PWSTR,UINT); +HRESULT WINAPI TranslateURLA(PCSTR,DWORD,PSTR*); +HRESULT WINAPI TranslateURLW(PCWSTR,DWORD,PWSTR*); +HRESULT WINAPI URLAssociationDialogA(HWND,DWORD,PCSTR,PCSTR,PSTR,UINT); +HRESULT WINAPI URLAssociationDialogW(HWND,DWORD,PCWSTR,PCWSTR,PWSTR,UINT); +#ifdef UNICODE +#define TranslateURL TranslateURLW +#define MIMEAssociationDialog MIMEAssociationDialogW +#define URLAssociationDialog URLAssociationDialogW +#else +#define TranslateURL TranslateURLA +#define MIMEAssociationDialog MIMEAssociationDialogA +#define URLAssociationDialog URLAssociationDialogA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/ipexport.h b/reactos/w32api/include/ipexport.h new file mode 100644 index 00000000000..3fbf4eec97a --- /dev/null +++ b/reactos/w32api/include/ipexport.h @@ -0,0 +1,88 @@ +#ifndef _IPEXPORT_H +#define _IPEXPORT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#ifndef ANY_SIZE +#define ANY_SIZE 1 +#endif +#define MAX_ADAPTER_NAME 128 +/* IP STATUS flags */ +#define IP_STATUS_BASE 11000 +#define IP_SUCCESS 0 +#define IP_BUF_TOO_SMALL (IP_STATUS_BASE + 1) +#define IP_DEST_NET_UNREACHABLE (IP_STATUS_BASE + 2) +#define IP_DEST_HOST_UNREACHABLE (IP_STATUS_BASE + 3) +#define IP_DEST_PROT_UNREACHABLE (IP_STATUS_BASE + 4) +#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5) +#define IP_NO_RESOURCES (IP_STATUS_BASE + 6) +#define IP_BAD_OPTION (IP_STATUS_BASE + 7) +#define IP_HW_ERROR (IP_STATUS_BASE + 8) +#define IP_PACKET_TOO_BIG (IP_STATUS_BASE + 9) +#define IP_REQ_TIMED_OUT (IP_STATUS_BASE + 10) +#define IP_BAD_REQ (IP_STATUS_BASE + 11) +#define IP_BAD_ROUTE (IP_STATUS_BASE + 12) +#define IP_TTL_EXPIRED_TRANSIT (IP_STATUS_BASE + 13) +#define IP_TTL_EXPIRED_REASSEM (IP_STATUS_BASE + 14) +#define IP_PARAM_PROBLEM (IP_STATUS_BASE + 15) +#define IP_SOURCE_QUENCH (IP_STATUS_BASE + 16) +#define IP_OPTION_TOO_BIG (IP_STATUS_BASE + 17) +#define IP_BAD_DESTINATION (IP_STATUS_BASE + 18) +#define IP_ADDR_DELETED (IP_STATUS_BASE + 19) +#define IP_SPEC_MTU_CHANGE (IP_STATUS_BASE + 20) +#define IP_MTU_CHANGE (IP_STATUS_BASE + 21) +#define IP_UNLOAD (IP_STATUS_BASE + 22) +#define IP_GENERAL_FAILURE (IP_STATUS_BASE + 50) +#define MAX_IP_STATUS IP_GENERAL_FAILURE +#define IP_PENDING (IP_STATUS_BASE + 255) +/* IP header Flags values */ +#define IP_FLAG_DF 0x2 +/* IP Option types */ +#define IP_OPT_EOL 0 +#define IP_OPT_NOP 1 +#define IP_OPT_SECURITY 0x82 +#define IP_OPT_LSRR 0x83 +#define IP_OPT_SSRR 0x89 +#define IP_OPT_RR 0x7 +#define IP_OPT_TS 0x44 +#define IP_OPT_SID 0x88 +#define IP_OPT_ROUTER_ALERT 0x94 +#define MAX_OPT_SIZE 40 + +typedef unsigned long IPAddr, IPMask, IP_STATUS; +typedef struct ip_option_information { + unsigned char Ttl; + unsigned char Tos; + unsigned char Flags; + unsigned char OptionsSize; + unsigned char* OptionsData; +}IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION; +typedef struct icmp_echo_reply { + IPAddr Address; + unsigned long Status; + unsigned long RoundTripTime; + unsigned short DataSize; + unsigned short Reserved; + void* Data; + struct ip_option_information Options; +} ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY; +typedef struct { + ULONG Index; + WCHAR Name[MAX_ADAPTER_NAME]; +} IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP; +typedef struct { + LONG NumAdapters; + IP_ADAPTER_INDEX_MAP Adapter[ANY_SIZE]; +} IP_INTERFACE_INFO, *PIP_INTERFACE_INFO; +typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { + ULONG NumAdapters; + IPAddr Address[1]; +} IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; +#ifdef __cplusplus +} +#endif +#endif /* _IPEXPORT_H */ diff --git a/reactos/w32api/include/iphlpapi.h b/reactos/w32api/include/iphlpapi.h new file mode 100644 index 00000000000..214c53ef718 --- /dev/null +++ b/reactos/w32api/include/iphlpapi.h @@ -0,0 +1,60 @@ +#ifndef _IPHLPAPI_H +#define _IPHLPAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif +DWORD WINAPI AddIPAddress(IPAddr,IPMask,DWORD,PULONG,PULONG); +DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW); +DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW); +DWORD WINAPI CreateProxyArpEntry(DWORD,DWORD,DWORD); +DWORD WINAPI DeleteIPAddress(ULONG); +DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW); +DWORD WINAPI DeleteIpNetEntry(PMIB_IPNETROW); +DWORD WINAPI DeleteProxyArpEntry(DWORD,DWORD,DWORD); +DWORD WINAPI EnableRouter(HANDLE*,OVERLAPPED*); +DWORD WINAPI FlushIpNetTable(DWORD); +DWORD WINAPI GetAdapterIndex(LPWSTR,PULONG); +DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO,PULONG); +DWORD WINAPI GetBestInterface(IPAddr,PDWORD); +DWORD WINAPI GetBestRoute(DWORD,DWORD,PMIB_IPFORWARDROW); +DWORD WINAPI GetFriendlyIfIndex(DWORD); +DWORD WINAPI GetIcmpStatistics(PMIB_ICMP); +DWORD WINAPI GetIfEntry(PMIB_IFROW); +DWORD WINAPI GetIfTable(PMIB_IFTABLE,PULONG,BOOL); +DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO,PULONG); +DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE,PULONG,BOOL); +DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE,PULONG,BOOL); +DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE,PULONG,BOOL); +DWORD WINAPI GetIpStatistics(PMIB_IPSTATS); +DWORD WINAPI GetNetworkParams(PFIXED_INFO,PULONG); +DWORD WINAPI GetNumberOfInterfaces(PDWORD); +DWORD WINAPI GetPerAdapterInfo(ULONG,PIP_PER_ADAPTER_INFO, PULONG); +BOOL WINAPI GetRTTAndHopCount(IPAddr,PULONG,ULONG,PULONG); +DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS); +DWORD WINAPI GetTcpTable(PMIB_TCPTABLE,PDWORD,BOOL); +DWORD WINAPI GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS,PULONG); +DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS); +DWORD WINAPI GetUdpTable(PMIB_UDPTABLE,PDWORD,BOOL); +DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); +DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP); +DWORD WINAPI NotifyAddrChange(PHANDLE,LPOVERLAPPED); +DWORD WINAPI NotifyRouteChange(PHANDLE,LPOVERLAPPED); +DWORD WINAPI SendARP(IPAddr,IPAddr,PULONG,PULONG); +DWORD WINAPI SetIfEntry(PMIB_IFROW); +DWORD WINAPI SetIpForwardEntry(PMIB_IPFORWARDROW); +DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW); +DWORD WINAPI SetIpStatistics(PMIB_IPSTATS); +DWORD WINAPI SetIpTTL(UINT); +DWORD WINAPI SetTcpEntry(PMIB_TCPROW); +DWORD WINAPI UnenableRouter(OVERLAPPED*, LPDWORD); +#ifdef __cplusplus +} +#endif +#endif /* _IPHLPAPI_H */ diff --git a/reactos/w32api/include/ipifcons.h b/reactos/w32api/include/ipifcons.h new file mode 100644 index 00000000000..eecf532641e --- /dev/null +++ b/reactos/w32api/include/ipifcons.h @@ -0,0 +1,23 @@ +#ifndef _IPIFCONS_H +#define _IPIFCONS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define MIB_IF_ADMIN_STATUS_UP 1 +#define MIB_IF_ADMIN_STATUS_DOWN 2 +#define MIB_IF_ADMIN_STATUS_TESTING 3 +#define MIB_IF_OPER_STATUS_NON_OPERATIONAL 0 +#define MIB_IF_OPER_STATUS_UNREACHABLE 1 +#define MIB_IF_OPER_STATUS_DISCONNECTED 2 +#define MIB_IF_OPER_STATUS_CONNECTING 3 +#define MIB_IF_OPER_STATUS_CONNECTED 4 +#define MIB_IF_OPER_STATUS_OPERATIONAL 5 +#define MIB_IF_TYPE_OTHER 1 +#define MIB_IF_TYPE_ETHERNET 6 +#define MIB_IF_TYPE_TOKENRING 9 +#define MIB_IF_TYPE_FDDI 15 +#define MIB_IF_TYPE_PPP 23 +#define MIB_IF_TYPE_LOOPBACK 24 +#define MIB_IF_TYPE_SLIP 28 +#endif /* _IPIFCONS_H */ diff --git a/reactos/w32api/include/iprtrmib.h b/reactos/w32api/include/iprtrmib.h new file mode 100644 index 00000000000..f897ecbfaa8 --- /dev/null +++ b/reactos/w32api/include/iprtrmib.h @@ -0,0 +1,209 @@ +#ifndef _IPRTRMIB_H +#define _IPRTRMIB_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#ifndef ANY_SIZE +#define ANY_SIZE 1 +#endif +#define MAXLEN_PHYSADDR 8 +#define MAXLEN_IFDESCR 256 +#ifndef MAX_INTERFACE_NAME_LEN +#define MAX_INTERFACE_NAME_LEN 256 +#endif +#define MIB_IPNET_TYPE_OTHER 1 +#define MIB_IPNET_TYPE_INVALID 2 +#define MIB_IPNET_TYPE_DYNAMIC 3 +#define MIB_IPNET_TYPE_STATIC 4 +#define MIB_TCP_RTO_OTHER 1 +#define MIB_TCP_RTO_CONSTANT 2 +#define MIB_TCP_RTO_RSRE 3 +#define MIB_TCP_RTO_VANJ 4 +#define MIB_TCP_STATE_CLOSED 1 +#define MIB_TCP_STATE_LISTEN 2 +#define MIB_TCP_STATE_SYN_SENT 3 +#define MIB_TCP_STATE_SYN_RCVD 4 +#define MIB_TCP_STATE_ESTAB 5 +#define MIB_TCP_STATE_FIN_WAIT1 6 +#define MIB_TCP_STATE_FIN_WAIT2 7 +#define MIB_TCP_STATE_CLOSE_WAIT 8 +#define MIB_TCP_STATE_CLOSING 9 +#define MIB_TCP_STATE_LAST_ACK 10 +#define MIB_TCP_STATE_TIME_WAIT 11 +#define MIB_TCP_STATE_DELETE_TCB 12 +#define MIB_USE_CURRENT_TTL ((DWORD)-1) +#define MIB_USE_CURRENT_FORWARDING ((DWORD)-1) +#define MIB_TCP_MAXCONN_DYNAMIC ((DWORD)-1) +typedef struct { + DWORD dwAddr; + DWORD dwIndex; + DWORD dwMask; + DWORD dwBCastAddr; + DWORD dwReasmSize; + unsigned short unused1; + unsigned short unused2; +} MIB_IPADDRROW, *PMIB_IPADDRROW; +typedef struct { + DWORD dwNumEntries; + MIB_IPADDRROW table[ANY_SIZE]; +} MIB_IPADDRTABLE, *PMIB_IPADDRTABLE; +typedef struct { + 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; +} MIB_IPFORWARDROW, *PMIB_IPFORWARDROW; +typedef struct { + DWORD dwNumEntries; + MIB_IPFORWARDROW table[ANY_SIZE]; +} MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE; +typedef struct { + DWORD dwIndex; + DWORD dwPhysAddrLen; + BYTE bPhysAddr[MAXLEN_PHYSADDR]; + DWORD dwAddr; + DWORD dwType; +} MIB_IPNETROW, *PMIB_IPNETROW; +typedef struct { + DWORD dwNumEntries; + MIB_IPNETROW table[ANY_SIZE]; +} MIB_IPNETTABLE, *PMIB_IPNETTABLE; +typedef struct { + 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; +} MIBICMPSTATS, *PMIBICMPSTATS; +typedef struct { + MIBICMPSTATS icmpInStats; + MIBICMPSTATS icmpOutStats; +} MIBICMPINFO, *PMIBICMPINFO; +typedef struct { + MIBICMPINFO stats; +} MIB_ICMP, *PMIB_ICMP; +typedef struct { + WCHAR wszName[MAX_INTERFACE_NAME_LEN]; + DWORD dwIndex; + DWORD dwType; + DWORD dwMtu; + DWORD dwSpeed; + DWORD dwPhysAddrLen; + BYTE bPhysAddr[MAXLEN_PHYSADDR]; + 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 bDescr[MAXLEN_IFDESCR]; +} MIB_IFROW, *PMIB_IFROW; +typedef struct { + DWORD dwNumEntries; + MIB_IFROW table[ANY_SIZE]; +} MIB_IFTABLE, *PMIB_IFTABLE; +typedef struct { + 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; +} MIB_IPSTATS, *PMIB_IPSTATS; +typedef struct { + 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; +} MIB_TCPSTATS, *PMIB_TCPSTATS; +typedef struct { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; +} MIB_TCPROW, *PMIB_TCPROW; +typedef struct { + DWORD dwNumEntries; + MIB_TCPROW table[ANY_SIZE]; +} MIB_TCPTABLE, *PMIB_TCPTABLE; +typedef struct { + DWORD dwInDatagrams; + DWORD dwNoPorts; + DWORD dwInErrors; + DWORD dwOutDatagrams; + DWORD dwNumAddrs; +} MIB_UDPSTATS, *PMIB_UDPSTATS; +typedef struct { + DWORD dwLocalAddr; + DWORD dwLocalPort; +} MIB_UDPROW, *PMIB_UDPROW; +typedef struct { + DWORD dwNumEntries; + MIB_UDPROW table[ANY_SIZE]; +} MIB_UDPTABLE, *PMIB_UDPTABLE; +#ifdef __cplusplus +} +#endif +#endif /* _IPRTRMIB_H */ diff --git a/reactos/w32api/include/iptypes.h b/reactos/w32api/include/iptypes.h new file mode 100644 index 00000000000..6ddded00a8f --- /dev/null +++ b/reactos/w32api/include/iptypes.h @@ -0,0 +1,78 @@ +#ifndef _IPTYPES_H +#define _IPTYPES_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#define DEFAULT_MINIMUM_ENTITIES 32 +#define MAX_ADAPTER_ADDRESS_LENGTH 8 +#define MAX_ADAPTER_DESCRIPTION_LENGTH 128 +#define MAX_ADAPTER_NAME_LENGTH 256 +#define MAX_DOMAIN_NAME_LEN 128 +#define MAX_HOSTNAME_LEN 128 +#define MAX_SCOPE_ID_LEN 256 +#define BROADCAST_NODETYPE 1 +#define PEER_TO_PEER_NODETYPE 2 +#define MIXED_NODETYPE 4 +#define HYBRID_NODETYPE 8 +#define IF_OTHER_ADAPTERTYPE 0 +#define IF_ETHERNET_ADAPTERTYPE 1 +#define IF_TOKEN_RING_ADAPTERTYPE 2 +#define IF_FDDI_ADAPTERTYPE 3 +#define IF_PPP_ADAPTERTYPE 4 +#define IF_LOOPBACK_ADAPTERTYPE 5 +typedef struct { + char String[16]; +} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING; +typedef struct _IP_ADDR_STRING { + struct _IP_ADDR_STRING* Next; + IP_ADDRESS_STRING IpAddress; + IP_MASK_STRING IpMask; + DWORD Context; +} IP_ADDR_STRING, *PIP_ADDR_STRING; +typedef struct _IP_ADAPTER_INFO { + struct _IP_ADAPTER_INFO* Next; + DWORD ComboIndex; + char AdapterName[MAX_ADAPTER_NAME_LENGTH+4]; + char Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4]; + UINT AddressLength; + BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; + 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, *PIP_ADAPTER_INFO; +typedef struct _IP_PER_ADAPTER_INFO { + UINT AutoconfigEnabled; + UINT AutoconfigActive; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; +} IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO; +typedef struct _FIXED_INFO { + char HostName[MAX_HOSTNAME_LEN+4] ; + char DomainName[MAX_DOMAIN_NAME_LEN+4]; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; + UINT NodeType; + char ScopeId[MAX_SCOPE_ID_LEN+4]; + UINT EnableRouting; + UINT EnableProxy; + UINT EnableDns; +} FIXED_INFO, *PFIXED_INFO; + +#ifdef __cplusplus +} +#endif +#endif /* _IPTYPES_H */ diff --git a/reactos/w32api/include/isguids.h b/reactos/w32api/include/isguids.h new file mode 100644 index 00000000000..d5655d262fa --- /dev/null +++ b/reactos/w32api/include/isguids.h @@ -0,0 +1,15 @@ +#ifndef _ISGUID_H +#define _ISGUID_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +extern const GUID CLSID_InternetShortcut; +extern const GUID IID_IUniformResourceLocator; +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/largeint.h b/reactos/w32api/include/largeint.h new file mode 100644 index 00000000000..b2222a97fc5 --- /dev/null +++ b/reactos/w32api/include/largeint.h @@ -0,0 +1,112 @@ +/* + largeint.h + + Header for 64 bit integer arithmetics library + + */ +#ifndef _LARGEINT_H +#define _LARGEINT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _HAVE_INT64 +#define _toi (__int64) +#define _toui (unsigned __int64) +#else +#error "64 bit integers not supported" +#endif + +/* + We don't let the compiler see the prototypes if we are compiling the + library because if it does it will choke on conflicting types in the + prototypes. +*/ + +#if defined(LARGEINT_PROTOS) || defined(__COMPILING_LARGEINT) + +#ifndef __COMPILING_LARGEINT +/* addition/subtraction */ +LARGE_INTEGER WINAPI LargeIntegerAdd (LARGE_INTEGER, LARGE_INTEGER); +LARGE_INTEGER WINAPI LargeIntegerSubtract (LARGE_INTEGER, LARGE_INTEGER); + +/* bit operations */ +LARGE_INTEGER WINAPI LargeIntegerArithmeticShift (LARGE_INTEGER, int); +LARGE_INTEGER WINAPI LargeIntegerShiftLeft (LARGE_INTEGER, int); +LARGE_INTEGER WINAPI LargeIntegerShiftRight (LARGE_INTEGER, int); +LARGE_INTEGER WINAPI LargeIntegerNegate (LARGE_INTEGER); + +/* conversion */ +LARGE_INTEGER WINAPI ConvertLongToLargeInteger (LONG); +LARGE_INTEGER WINAPI ConvertUlongToLargeInteger (ULONG); + +/* multiplication */ +LARGE_INTEGER WINAPI EnlargedIntegerMultiply (LONG, LONG); +LARGE_INTEGER WINAPI EnlargedUnsignedMultiply (ULONG, ULONG); +LARGE_INTEGER WINAPI ExtendedIntegerMultiply (LARGE_INTEGER, LONG); +/* FIXME: is this not part of largeint? */ +LARGE_INTEGER WINAPI LargeIntegerMultiply (LARGE_INTEGER, LARGE_INTEGER); +#endif /* __COMPILING_LARGEINT */ + +#else + +#define LargeIntegerAdd(a,b) (LARGE_INTEGER)(_toi(a) + _toi(b)) +#define LargeIntegerSubtract(a,b) (LARGE_INTEGER)(_toi(a) - _toi(b)) +#define LargeIntegerRightShift(i,n) (LARGE_INTEGER)(_toi(i) >> (n)) +#define LargeIntegerArithmeticShift LargeIntegerRightShift +#define LargeIntegerLeftShift(i,n) (LARGE_INTEGER)(_toi(i) << (n)) +#define LargeIntegerNegate(i) (LARGE_INTEGER)(- _toi(i)) +#define EnlargedIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b)) +#define EnlargedUnsignedMultiply(a,b) (LARGE_INTEGER)(_toui(a) * _toui(b)) +#define ExtendedIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b)) +/* FIXME: should this exist */ +#define LargeIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b)) +#define ConvertLongToLargeInteger(l) (LARGE_INTEGER)(_toi(l)) +#define ConvertUlongToLargeInteger(ul) (LARGE_INTEGER)(_toui(ul)) + +#endif /* LARGEINT_PROTOS || __COMPILING_LARGEINT */ + +#ifndef __COMPILING_LARGEINT +/* division; no macros of these because of multiple expansion */ +LARGE_INTEGER WINAPI LargeIntegerDivide (LARGE_INTEGER, LARGE_INTEGER, PLARGE_INTEGER); +ULONG WINAPI EnlargedUnsignedDivide (ULARGE_INTEGER, ULONG, PULONG); +LARGE_INTEGER WINAPI ExtendedLargeIntegerDivide (LARGE_INTEGER, ULONG, PULONG); +LARGE_INTEGER WINAPI ExtendedMagicDivide (LARGE_INTEGER, LARGE_INTEGER, int); +#endif /* __COMPILING_LARGEINT */ + +#define LargeIntegerAnd(dest, src, m) \ +{ \ + dest._STRUCT_NAME(u.)LowPart = s._STRUCT_NAME(u.)LowPart & m._STRUCT_NAME(u.)LowPart; \ + dest._STRUCT_NAME(u.)HighPart = s._STRUCT_NAME(u.)HighPart & m._STRUCT_NAME(u.)HighPart; \ +} + +/* comparision */ +#define LargeIntegerGreaterThan(a,b) (_toi(a) > _toi(b)) +#define LargeIntegerGreaterThanOrEqual(a,b) (_toi(a) >= _toi(b)) +#define LargeIntegerEqualTo(a,b) (_toi(a) == _toi(b)) +#define LargeIntegerNotEqualTo(a,b) (_toi(a) != _toi(b)) +#define LargeIntegerLessThan(a,b) (_toi(a) < _toi(b)) +#define LargeIntegerLessThanOrEqualTo(a,b) (_toi(a) <= _toi(b)) +#define LargeIntegerGreaterThanZero(a) (_toi(a) > 0) +#define LargeIntegerGreaterOrEqualToZero(a) ((a)._STRUCT_NAME(u.)HighPart > 0) +#define LargeIntegerEqualToZero(a) !((a)._STRUCT_NAME(u.)LowPart | (a)._STRUCT_NAME(u.)HighPart) +#define LargeIntegerNotEqualToZero(a) ((a)._STRUCT_NAME(u.)LowPart | (a)._STRUCT_NAME(u.)HighPart) +#define LargeIntegerLessThanZero(a) ((a)._STRUCT_NAME(u.)HighPart < 0) +#define LargeIntegerLessOrEqualToZero(a) (_toi(a) <= 0) + +#ifndef __COMPILING_LARGEINT +#undef _toi +#undef _toui +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _LARGEINT_H */ diff --git a/reactos/w32api/include/lm.h b/reactos/w32api/include/lm.h new file mode 100644 index 00000000000..db1779db6fc --- /dev/null +++ b/reactos/w32api/include/lm.h @@ -0,0 +1,27 @@ +#ifndef _LM_H +#define _LM_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/reactos/w32api/include/lmaccess.h b/reactos/w32api/include/lmaccess.h new file mode 100644 index 00000000000..044a7a6074a --- /dev/null +++ b/reactos/w32api/include/lmaccess.h @@ -0,0 +1,610 @@ +#ifndef _LMACCESS_H +#define _LMACCESS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include +#define GROUP_SPECIALGRP_USERS L"USERS" +#define GROUP_SPECIALGRP_ADMINS L"ADMINS" +#define GROUP_SPECIALGRP_GUESTS L"GUESTS" +#define GROUP_SPECIALGRP_LOCAL L"LOCAL" +#define ACCESS_LETTERS "RWCXDAP " +#define NETLOGON_CONTROL_QUERY 1 +#define NETLOGON_CONTROL_REPLICATE 2 +#define NETLOGON_CONTROL_SYNCHRONIZE 3 +#define NETLOGON_CONTROL_PDC_REPLICATE 4 +#define NETLOGON_CONTROL_REDISCOVER 5 +#define NETLOGON_CONTROL_TC_QUERY 6 +#define NETLOGON_CONTROL_BACKUP_CHANGE_LOG 65532 +#define NETLOGON_CONTROL_TRUNCATE_LOG 65533 +#define NETLOGON_CONTROL_SET_DBFLAG 65534 +#define NETLOGON_CONTROL_BREAKPOINT 65535 +#define UF_SCRIPT 1 +#define UF_ACCOUNTDISABLE 2 +#define UF_HOMEDIR_REQUIRED 8 +#define UF_LOCKOUT 16 +#define UF_PASSWD_NOTREQD 32 +#define UF_PASSWD_CANT_CHANGE 64 +#define UF_TEMP_DUPLICATE_ACCOUNT 256 +#define UF_NORMAL_ACCOUNT 512 +#define UF_INTERDOMAIN_TRUST_ACCOUNT 2048 +#define UF_WORKSTATION_TRUST_ACCOUNT 4096 +#define UF_SERVER_TRUST_ACCOUNT 8192 +#define UF_MNS_LOGON_ACCOUNT 131072 +#define UF_MACHINE_ACCOUNT_MASK (UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT) +#define UF_ACCOUNT_TYPE_MASK (UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT) +#define UF_DONT_EXPIRE_PASSWD 65536 +#define 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) +#define FILTER_TEMP_DUPLICATE_ACCOUNT 1 +#define FILTER_NORMAL_ACCOUNT 2 +#define FILTER_INTERDOMAIN_TRUST_ACCOUNT 8 +#define FILTER_WORKSTATION_TRUST_ACCOUNT 16 +#define FILTER_SERVER_TRUST_ACCOUNT 32 +#define LG_INCLUDE_INDIRECT 1 +#define AF_OP_PRINT 1 +#define AF_OP_COMM 2 +#define AF_OP_SERVER 4 +#define AF_OP_ACCOUNTS 8 +#define AF_SETTABLE_BITS (AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS) +#define UAS_ROLE_STANDALONE 0 +#define UAS_ROLE_MEMBER 1 +#define UAS_ROLE_BACKUP 2 +#define UAS_ROLE_PRIMARY 3 +#define USER_NAME_PARMNUM 1 +#define USER_PASSWORD_PARMNUM 3 +#define USER_PASSWORD_AGE_PARMNUM 4 +#define USER_PRIV_PARMNUM 5 +#define USER_HOME_DIR_PARMNUM 6 +#define USER_COMMENT_PARMNUM 7 +#define USER_FLAGS_PARMNUM 8 +#define USER_SCRIPT_PATH_PARMNUM 9 +#define USER_AUTH_FLAGS_PARMNUM 10 +#define USER_FULL_NAME_PARMNUM 11 +#define USER_USR_COMMENT_PARMNUM 12 +#define USER_PARMS_PARMNUM 13 +#define USER_WORKSTATIONS_PARMNUM 14 +#define USER_LAST_LOGON_PARMNUM 15 +#define USER_LAST_LOGOFF_PARMNUM 16 +#define USER_ACCT_EXPIRES_PARMNUM 17 +#define USER_MAX_STORAGE_PARMNUM 18 +#define USER_UNITS_PER_WEEK_PARMNUM 19 +#define USER_LOGON_HOURS_PARMNUM 20 +#define USER_PAD_PW_COUNT_PARMNUM 21 +#define USER_NUM_LOGONS_PARMNUM 22 +#define USER_LOGON_SERVER_PARMNUM 23 +#define USER_COUNTRY_CODE_PARMNUM 24 +#define USER_CODE_PAGE_PARMNUM 25 +#define USER_PRIMARY_GROUP_PARMNUM 51 +#define USER_PROFILE 52 +#define USER_PROFILE_PARMNUM 52 +#define USER_HOME_DIR_DRIVE_PARMNUM 53 +#define USER_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM) +#define USER_PASSWORD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM) +#define USER_PASSWORD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM) +#define USER_PRIV_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM) +#define USER_HOME_DIR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM) +#define USER_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM) +#define USER_FLAGS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM) +#define USER_SCRIPT_PATH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM) +#define USER_AUTH_FLAGS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM) +#define USER_FULL_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM) +#define USER_USR_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM) +#define USER_PARMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM) +#define USER_WORKSTATIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM) +#define USER_LAST_LOGON_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM) +#define USER_LAST_LOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM) +#define USER_ACCT_EXPIRES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM) +#define USER_MAX_STORAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM) +#define USER_UNITS_PER_WEEK_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM) +#define USER_LOGON_HOURS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM) +#define USER_PAD_PW_COUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM) +#define USER_NUM_LOGONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM) +#define USER_LOGON_SERVER_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM) +#define USER_COUNTRY_CODE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM) +#define USER_CODE_PAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM) +#define USER_PRIMARY_GROUP_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM) +#define USER_POSIX_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM) +#define USER_HOME_DIR_DRIVE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM) +#define NULL_USERSETINFO_PASSWD " " +#define TIMEQ_FOREVER ((ULONG)-1) +#define USER_MAXSTORAGE_UNLIMITED ((ULONG)-1) +#define USER_NO_LOGOFF ((ULONG)-1L) +#define UNITS_PER_DAY 24 +#define UNITS_PER_WEEK 168 +#define USER_PRIV_MASK 3 +#define USER_PRIV_GUEST 0 +#define USER_PRIV_USER 1 +#define USER_PRIV_ADMIN 2 +#define MAX_PASSWD_LEN PWLEN +#define DEF_MIN_PWLEN 6 +#define DEF_PWUNIQUENESS 5 +#define DEF_MAX_PWHIST 8 +#define DEF_MAX_PWAGE TIMEQ_FOREVER +#define DEF_MIN_PWAGE 0 +#define DEF_FORCE_LOGOFF (ULONG)0xffffffff +#define DEF_MAX_BADPW 0 +#define ONE_DAY 86400 +#define VALIDATED_LOGON 0 +#define PASSWORD_EXPIRED 2 +#define NON_VALIDATED_LOGON 3 +#define VALID_LOGOFF 1 +#define MODALS_MIN_PASSWD_LEN_PARMNUM 1 +#define MODALS_MAX_PASSWD_AGE_PARMNUM 2 +#define MODALS_MIN_PASSWD_AGE_PARMNUM 3 +#define MODALS_FORCE_LOGOFF_PARMNUM 4 +#define MODALS_PASSWD_HIST_LEN_PARMNUM 5 +#define MODALS_ROLE_PARMNUM 6 +#define MODALS_PRIMARY_PARMNUM 7 +#define MODALS_DOMAIN_NAME_PARMNUM 8 +#define MODALS_DOMAIN_ID_PARMNUM 9 +#define MODALS_LOCKOUT_DURATION_PARMNUM 10 +#define MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM 11 +#define MODALS_LOCKOUT_THRESHOLD_PARMNUM 12 +#define MODALS_MIN_PASSWD_LEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM) +#define MODALS_MAX_PASSWD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM) +#define MODALS_MIN_PASSWD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM) +#define MODALS_FORCE_LOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM) +#define MODALS_PASSWD_HIST_LEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM) +#define MODALS_ROLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM) +#define MODALS_PRIMARY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM) +#define MODALS_DOMAIN_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM) +#define MODALS_DOMAIN_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM) +#define GROUPIDMASK 0x8000 +#define GROUP_ALL_PARMNUM 0 +#define GROUP_NAME_PARMNUM 1 +#define GROUP_COMMENT_PARMNUM 2 +#define GROUP_ATTRIBUTES_PARMNUM 3 +#define GROUP_ALL_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_ALL_PARMNUM) +#define GROUP_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_NAME_PARMNUM) +#define GROUP_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_COMMENT_PARMNUM) +#define GROUP_ATTRIBUTES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_ATTRIBUTES_PARMNUM) +#define GROUP_POSIX_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_POSIX_ID_PARMNUM) +#define LOCALGROUP_NAME_PARMNUM 1 +#define LOCALGROUP_COMMENT_PARMNUM 2 +#define MAXPERMENTRIES 64 +#define ACCESS_NONE 0 +#define ACCESS_ALL (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM) +#define ACCESS_READ 1 +#define ACCESS_WRITE 2 +#define ACCESS_CREATE 4 +#define ACCESS_EXEC 8 +#define ACCESS_DELETE 16 +#define ACCESS_ATRIB 32 +#define ACCESS_PERM 64 +#define ACCESS_GROUP 0x8000 +#define ACCESS_AUDIT 1 +#define ACCESS_SUCCESS_OPEN 16 +#define ACCESS_SUCCESS_WRITE 32 +#define ACCESS_SUCCESS_DELETE 64 +#define ACCESS_SUCCESS_ACL 128 +#define ACCESS_SUCCESS_MASK 240 +#define ACCESS_FAIL_OPEN 256 +#define ACCESS_FAIL_WRITE 512 +#define ACCESS_FAIL_DELETE 1024 +#define ACCESS_FAIL_ACL 2048 +#define ACCESS_FAIL_MASK 3840 +#define ACCESS_FAIL_SHIFT 4 +#define ACCESS_RESOURCE_NAME_PARMNUM 1 +#define ACCESS_ATTR_PARMNUM 2 +#define ACCESS_COUNT_PARMNUM 3 +#define ACCESS_ACCESS_LIST_PARMNUM 4 +#define ACCESS_RESOURCE_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM) +#define ACCESS_ATTR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM) +#define ACCESS_COUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM) +#define ACCESS_ACCESS_LIST_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM) +#define NETLOGON_REPLICATION_NEEDED 1 +#define NETLOGON_REPLICATION_IN_PROGRESS 2 +#define NETLOGON_FULL_SYNC_REPLICATION 4 +#define NETLOGON_REDO_NEEDED 8 + +typedef struct _USER_INFO_0 { LPWSTR usri0_name; }USER_INFO_0,*PUSER_INFO_0,*LPUSER_INFO_0; +typedef 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; +}USER_INFO_1,*PUSER_INFO_1,*LPUSER_INFO_1; +typedef 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; +}USER_INFO_2,*PUSER_INFO_2,*LPUSER_INFO_2; +typedef 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; +}USER_INFO_3,*PUSER_INFO_3,*LPUSER_INFO_3; +typedef struct _USER_INFO_10 { + LPWSTR usri10_name; + LPWSTR usri10_comment; + LPWSTR usri10_usr_comment; + LPWSTR usri10_full_name; +}USER_INFO_10,*PUSER_INFO_10,*LPUSER_INFO_10; +typedef 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; +}USER_INFO_11,*PUSER_INFO_11,*LPUSER_INFO_11; +typedef struct _USER_INFO_20 { + LPWSTR usri20_name; + LPWSTR usri20_full_name; + LPWSTR usri20_comment; + DWORD usri20_flags; + DWORD usri20_user_id; +}USER_INFO_20,*PUSER_INFO_20,*LPUSER_INFO_20; +typedef struct _USER_INFO_21 { + BYTE usri21_password[ENCRYPTED_PWLEN]; +}USER_INFO_21,*PUSER_INFO_21,*LPUSER_INFO_21; +typedef struct _USER_INFO_22 { + LPWSTR usri22_name; + BYTE usri22_password[ENCRYPTED_PWLEN]; + 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; + }USER_INFO_22,*PUSER_INFO_22,*LPUSER_INFO_22; +typedef struct _USER_INFO_1003 { + LPWSTR usri1003_password; +} USER_INFO_1003,*PUSER_INFO_1003,*LPUSER_INFO_1003; +typedef struct _USER_INFO_1005 { + DWORD usri1005_priv; +} USER_INFO_1005,*PUSER_INFO_1005,*LPUSER_INFO_1005; +typedef struct _USER_INFO_1006 { + LPWSTR usri1006_home_dir; +} USER_INFO_1006,*PUSER_INFO_1006,*LPUSER_INFO_1006; +typedef struct _USER_INFO_1007 { + LPWSTR usri1007_comment; +} USER_INFO_1007,*PUSER_INFO_1007,*LPUSER_INFO_1007; +typedef struct _USER_INFO_1008 { + DWORD usri1008_flags; +} USER_INFO_1008,*PUSER_INFO_1008,*LPUSER_INFO_1008; +typedef struct _USER_INFO_1009 { + LPWSTR usri1009_script_path; +} USER_INFO_1009,*PUSER_INFO_1009,*LPUSER_INFO_1009; +typedef struct _USER_INFO_1010 { + DWORD usri1010_auth_flags; +} USER_INFO_1010,*PUSER_INFO_1010,*LPUSER_INFO_1010; +typedef struct _USER_INFO_1011 { + LPWSTR usri1011_full_name; +} USER_INFO_1011,*PUSER_INFO_1011,*LPUSER_INFO_1011; +typedef struct _USER_INFO_1012 { + LPWSTR usri1012_usr_comment; +} USER_INFO_1012,*PUSER_INFO_1012,*LPUSER_INFO_1012; +typedef struct _USER_INFO_1013 { + LPWSTR usri1013_parms; +} USER_INFO_1013,*PUSER_INFO_1013,*LPUSER_INFO_1013; +typedef struct _USER_INFO_1014 { + LPWSTR usri1014_workstations; +} USER_INFO_1014,*PUSER_INFO_1014,*LPUSER_INFO_1014; +typedef struct _USER_INFO_1017 { + DWORD usri1017_acct_expires; +} USER_INFO_1017,*PUSER_INFO_1017,*LPUSER_INFO_1017; +typedef struct _USER_INFO_1018 { + DWORD usri1018_max_storage; +} USER_INFO_1018,*PUSER_INFO_1018,*LPUSER_INFO_1018; +typedef struct _USER_INFO_1020 { + DWORD usri1020_units_per_week; + PBYTE usri1020_logon_hours; +} USER_INFO_1020,*PUSER_INFO_1020,*LPUSER_INFO_1020; +typedef struct _USER_INFO_1023 { + LPWSTR usri1023_logon_server; +} USER_INFO_1023,*PUSER_INFO_1023,*LPUSER_INFO_1023; +typedef struct _USER_INFO_1024 { + DWORD usri1024_country_code; +} USER_INFO_1024,*PUSER_INFO_1024,*LPUSER_INFO_1024; +typedef struct _USER_INFO_1025 { + DWORD usri1025_code_page; +} USER_INFO_1025,*PUSER_INFO_1025,*LPUSER_INFO_1025; +typedef struct _USER_INFO_1051 { + DWORD usri1051_primary_group_id; +} USER_INFO_1051,*PUSER_INFO_1051,*LPUSER_INFO_1051; +typedef struct _USER_INFO_1052 { + LPWSTR usri1052_profile; +} USER_INFO_1052,*PUSER_INFO_1052,*LPUSER_INFO_1052; +typedef struct _USER_INFO_1053 { + LPWSTR usri1053_home_dir_drive; +} USER_INFO_1053,*PUSER_INFO_1053,*LPUSER_INFO_1053; +typedef 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; +}USER_MODALS_INFO_0,*PUSER_MODALS_INFO_0,*LPUSER_MODALS_INFO_0; +typedef struct _USER_MODALS_INFO_1 { + DWORD usrmod1_role; + LPWSTR usrmod1_primary; +}USER_MODALS_INFO_1,*PUSER_MODALS_INFO_1,*LPUSER_MODALS_INFO_1; +typedef struct _USER_MODALS_INFO_2 { + LPWSTR usrmod2_domain_name; + PSID usrmod2_domain_id; +}USER_MODALS_INFO_2,*PUSER_MODALS_INFO_2,*LPUSER_MODALS_INFO_2; +typedef struct _USER_MODALS_INFO_3 { + DWORD usrmod3_lockout_duration; + DWORD usrmod3_lockout_observation_window; + DWORD usrmod3_lockout_threshold; +}USER_MODALS_INFO_3,*PUSER_MODALS_INFO_3,*LPUSER_MODALS_INFO_3; +typedef struct _USER_MODALS_INFO_1001 { + DWORD usrmod1001_min_passwd_len; +} USER_MODALS_INFO_1001,*PUSER_MODALS_INFO_1001,*LPUSER_MODALS_INFO_1001; +typedef struct _USER_MODALS_INFO_1002 { + DWORD usrmod1002_max_passwd_age; +} USER_MODALS_INFO_1002,*PUSER_MODALS_INFO_1002,*LPUSER_MODALS_INFO_1002; +typedef struct _USER_MODALS_INFO_1003 { + DWORD usrmod1003_min_passwd_age; +} USER_MODALS_INFO_1003,*PUSER_MODALS_INFO_1003,*LPUSER_MODALS_INFO_1003; +typedef struct _USER_MODALS_INFO_1004 { + DWORD usrmod1004_force_logoff; +} USER_MODALS_INFO_1004,*PUSER_MODALS_INFO_1004,*LPUSER_MODALS_INFO_1004; +typedef struct _USER_MODALS_INFO_1005 { + DWORD usrmod1005_password_hist_len; +} USER_MODALS_INFO_1005,*PUSER_MODALS_INFO_1005,*LPUSER_MODALS_INFO_1005; +typedef struct _USER_MODALS_INFO_1006 { + DWORD usrmod1006_role; +} USER_MODALS_INFO_1006,*PUSER_MODALS_INFO_1006,*LPUSER_MODALS_INFO_1006; +typedef struct _USER_MODALS_INFO_1007 { + LPWSTR usrmod1007_primary; +} USER_MODALS_INFO_1007,*PUSER_MODALS_INFO_1007,*LPUSER_MODALS_INFO_1007; +typedef struct _GROUP_INFO_0 { + LPWSTR grpi0_name; +}GROUP_INFO_0,*PGROUP_INFO_0,*LPGROUP_INFO_0; +typedef struct _GROUP_INFO_1 { + LPWSTR grpi1_name; + LPWSTR grpi1_comment; +}GROUP_INFO_1,*PGROUP_INFO_1,*LPGROUP_INFO_1; +typedef struct _GROUP_INFO_2 { + LPWSTR grpi2_name; + LPWSTR grpi2_comment; + DWORD grpi2_group_id; + DWORD grpi2_attributes; +}GROUP_INFO_2,*PGROUP_INFO_2; +typedef struct _GROUP_INFO_1002 { + LPWSTR grpi1002_comment; +} GROUP_INFO_1002,*PGROUP_INFO_1002,*LPGROUP_INFO_1002; +typedef struct _GROUP_INFO_1005 { + DWORD grpi1005_attributes; +} GROUP_INFO_1005,*PGROUP_INFO_1005,*LPGROUP_INFO_1005; +typedef struct _GROUP_USERS_INFO_0 { + LPWSTR grui0_name; +} GROUP_USERS_INFO_0,*PGROUP_USERS_INFO_0,*LPGROUP_USERS_INFO_0; +typedef struct _GROUP_USERS_INFO_1 { + LPWSTR grui1_name; + DWORD grui1_attributes; +} GROUP_USERS_INFO_1,*PGROUP_USERS_INFO_1,*LPGROUP_USERS_INFO_1; +typedef struct _LOCALGROUP_INFO_0 { + LPWSTR lgrpi0_name; +}LOCALGROUP_INFO_0,*PLOCALGROUP_INFO_0,*LPLOCALGROUP_INFO_0; +typedef struct _LOCALGROUP_INFO_1 { + LPWSTR lgrpi1_name; + LPWSTR lgrpi1_comment; +}LOCALGROUP_INFO_1,*PLOCALGROUP_INFO_1,*LPLOCALGROUP_INFO_1; +typedef struct _LOCALGROUP_INFO_1002 { + LPWSTR lgrpi1002_comment; +}LOCALGROUP_INFO_1002,*PLOCALGROUP_INFO_1002,*LPLOCALGROUP_INFO_1002; +typedef struct _LOCALGROUP_MEMBERS_INFO_0 { + PSID lgrmi0_sid; +} LOCALGROUP_MEMBERS_INFO_0,*PLOCALGROUP_MEMBERS_INFO_0,*LPLOCALGROUP_MEMBERS_INFO_0; +typedef struct _LOCALGROUP_MEMBERS_INFO_1 { + PSID lgrmi1_sid; + SID_NAME_USE lgrmi1_sidusage; + LPWSTR lgrmi1_name; +} LOCALGROUP_MEMBERS_INFO_1,*PLOCALGROUP_MEMBERS_INFO_1,*LPLOCALGROUP_MEMBERS_INFO_1; +typedef struct _LOCALGROUP_MEMBERS_INFO_2 { + PSID lgrmi2_sid; + SID_NAME_USE lgrmi2_sidusage; + LPWSTR lgrmi2_domainandname; +} LOCALGROUP_MEMBERS_INFO_2,*PLOCALGROUP_MEMBERS_INFO_2,*LPLOCALGROUP_MEMBERS_INFO_2; +typedef struct _LOCALGROUP_MEMBERS_INFO_3 { + LPWSTR lgrmi3_domainandname; +} LOCALGROUP_MEMBERS_INFO_3,*PLOCALGROUP_MEMBERS_INFO_3, +*LPLOCALGROUP_MEMBERS_INFO_3; +typedef struct _LOCALGROUP_USERS_INFO_0 { + LPWSTR lgrui0_name; +} LOCALGROUP_USERS_INFO_0,*PLOCALGROUP_USERS_INFO_0,*LPLOCALGROUP_USERS_INFO_0; +typedef 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; +} NET_DISPLAY_USER,*PNET_DISPLAY_USER; +typedef struct _NET_DISPLAY_MACHINE { + LPWSTR usri2_name; + LPWSTR usri2_comment; + DWORD usri2_flags; + DWORD usri2_user_id; + DWORD usri2_next_index; +} NET_DISPLAY_MACHINE,*PNET_DISPLAY_MACHINE; +typedef struct _NET_DISPLAY_GROUP { + LPWSTR grpi3_name; + LPWSTR grpi3_comment; + DWORD grpi3_group_id; + DWORD grpi3_attributes; + DWORD grpi3_next_index; +} NET_DISPLAY_GROUP,*PNET_DISPLAY_GROUP; +typedef struct _ACCESS_INFO_0 { + LPTSTR acc0_resource_name; +}ACCESS_INFO_0,*PACCESS_INFO_0,*LPACCESS_INFO_0; +typedef struct _ACCESS_INFO_1 { + LPTSTR acc1_resource_name; + DWORD acc1_attr; + DWORD acc1_count; +}ACCESS_INFO_1,*PACCESS_INFO_1,*LPACCESS_INFO_1; +typedef struct _ACCESS_INFO_1002 { + DWORD acc1002_attr; +} ACCESS_INFO_1002,*PACCESS_INFO_1002,*LPACCESS_INFO_1002; +typedef struct _ACCESS_LIST { + LPTSTR acl_ugname; + DWORD acl_access; +}ACCESS_LIST,*PACCESS_LIST,*LPACCESS_LIST; +typedef struct _NETLOGON_INFO_1 { + DWORD netlog1_flags; + NET_API_STATUS netlog1_pdc_connection_status; +} NETLOGON_INFO_1,*PNETLOGON_INFO_1; +typedef 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; +} NETLOGON_INFO_2,*PNETLOGON_INFO_2; +typedef 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; +} NETLOGON_INFO_3,*PNETLOGON_INFO_3; + +#if 0 +/* MS has these defined, but the RxNetAccessXX functions aren't documented nor do + they exist in any headers */ +#define NetAccessAdd RxNetAccessAdd +#define NetAccessEnum RxNetAccessEnum +#define NetAccessGetInfo RxNetAccessGetInfo +#define NetAccessSetInfo RxNetAccessSetInfo +#define NetAccessDel RxNetAccessDel +#define NetAccessGetUserPerms RxNetAccessGetUserPerms +/* These are obsolete */ +NET_API_STATUS WINAPI NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetAccessDel(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); +#endif + +NET_API_STATUS WINAPI NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetUserSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetUserDel(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetUserGetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetUserSetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS WINAPI NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetUserModalsGet(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetUserModalsSet(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetGroupAddUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetGroupDelUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetGroupGetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetGroupSetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS WINAPI NetLocalGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS WINAPI NetLocalGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetLocalGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS WINAPI NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD, +PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS WINAPI NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS WINAPI NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS WINAPI NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*); +NET_API_STATUS WINAPI NetGetDisplayInformationIndex(LPCWSTR,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS WINAPI NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS WINAPI NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS WINAPI I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*); +NET_API_STATUS WINAPI I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmalert.h b/reactos/w32api/include/lmalert.h new file mode 100644 index 00000000000..4f59edc8b34 --- /dev/null +++ b/reactos/w32api/include/lmalert.h @@ -0,0 +1,60 @@ +#ifndef _LMALERT_H +#define _LMALERT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define ALERTER_MAILSLOT TEXT("\\\\.\\MAILSLOT\\Alerter") +#define ALERT_PRINT_EVENT TEXT("PRINTING") +#define ALERT_MESSAGE_EVENT TEXT("MESSAGE") +#define ALERT_ERRORLOG_EVENT TEXT("ERRORLOG") +#define ALERT_ADMIN_EVENT TEXT("ADMIN") +#define ALERT_USER_EVENT TEXT("USER") +#define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT)) +#define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) +#define PRJOB_QSTATUS 3 +#define PRJOB_DEVSTATUS 508 +#define PRJOB_COMPLETE 4 +#define PRJOB_INTERV 8 +#define PRJOB_ 16 +#define PRJOB_DESTOFFLINE 32 +#define PRJOB_DESTPAUSED 64 +#define PRJOB_NOTIFY 128 +#define PRJOB_DESTNOPAPER 256 +#define PRJOB_DELETED 32768 +#define PRJOB_QS_QUEUED 0 +#define PRJOB_QS_PAUSED 1 +#define PRJOB_QS_SPOOLING 2 +#define PRJOB_QS_PRINTING 3 +#ifdef __cplusplus +extern "C" { +#endif +typedef struct _ADMIN_OTHER_INFO { + DWORD alrtad_errcode; + DWORD alrtad_numstrings; +}ADMIN_OTHER_INFO,*PADMIN_OTHER_INFO,*LPADMIN_OTHER_INFO; +typedef struct _STD_ALERT { + DWORD alrt_timestamp; + TCHAR alrt_eventname[EVLEN+1]; + TCHAR alrt_servicename[SNLEN+1]; +}STD_ALERT,*PSTD_ALERT,*LPSTD_ALERT; +typedef struct _ERRLOG_OTHER_INFO { + DWORD alrter_errcode; + DWORD alrter_offset; +}ERRLOG_OTHER_INFO,*PERRLOG_OTHER_INFO,*LPERRLOG_OTHER_INFO; +typedef struct _PRINT_OTHER_INFO { + DWORD alrtpr_jobid; + DWORD alrtpr_status; + DWORD alrtpr_submitted; + DWORD alrtpr_size; +}PRINT_OTHER_INFO,*PPRINT_OTHER_INFO,*LPPRINT_OTHER_INFO; +typedef struct _USER_OTHER_INFO { + DWORD alrtus_errcode; + DWORD alrtus_numstrings; +}USER_OTHER_INFO,*PUSER_OTHER_INFO,*LPUSER_OTHER_INFO; +NET_API_STATUS WINAPI NetAlertRaise(LPCWSTR,PVOID,DWORD); +NET_API_STATUS WINAPI NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmapibuf.h b/reactos/w32api/include/lmapibuf.h new file mode 100644 index 00000000000..54de811068c --- /dev/null +++ b/reactos/w32api/include/lmapibuf.h @@ -0,0 +1,18 @@ +#ifndef _LMAPIBUF_H +#define _LMAPIBUF_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +NET_API_STATUS WINAPI NetApiBufferAllocate(DWORD,PVOID*); +NET_API_STATUS WINAPI NetApiBufferFree(PVOID); +NET_API_STATUS WINAPI NetApiBufferReallocate(PVOID,DWORD,PVOID*); +NET_API_STATUS WINAPI NetApiBufferSize(PVOID,PDWORD); +NET_API_STATUS WINAPI NetapipBufferAllocate(DWORD,PVOID*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmat.h b/reactos/w32api/include/lmat.h new file mode 100644 index 00000000000..95999a8028c --- /dev/null +++ b/reactos/w32api/include/lmat.h @@ -0,0 +1,39 @@ +#ifndef _LMAT_H +#define _LMAT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define JOB_RUN_PERIODICALLY 1 +#define JOB_EXEC_ERROR 2 +#define JOB_RUNS_TODAY 4 +#define JOB_ADD_CURRENT_DATE 8 +#define JOB_NONINTERACTIVE 16 +#define JOB_INPUT_FLAGS (JOB_RUN_PERIODICALLY|JOB_ADD_CURRENT_DATE|JOB_NONINTERACTIVE) +#define JOB_OUTPUT_FLAGS (JOB_RUN_PERIODICALLY|JOB_EXEC_ERROR|JOB_RUNS_TODAY|JOB_NONINTERACTIVE) +typedef struct _AT_ENUM { + DWORD JobId; + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} AT_ENUM,*PAT_ENUM,*LPAT_ENUM; +typedef struct _AT_INFO { + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} AT_INFO,*PAT_INFO,*LPAT_INFO; +NET_API_STATUS WINAPI NetScheduleJobAdd(LPWSTR,PBYTE,LPDWORD); +NET_API_STATUS WINAPI NetScheduleJobDel(LPWSTR,DWORD,DWORD); +NET_API_STATUS WINAPI NetScheduleJobEnum(LPWSTR,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetScheduleJobGetInfo(LPWSTR,DWORD,PBYTE*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmaudit.h b/reactos/w32api/include/lmaudit.h new file mode 100644 index 00000000000..4a97baaa52e --- /dev/null +++ b/reactos/w32api/include/lmaudit.h @@ -0,0 +1,250 @@ +#ifndef _LMAUDIT_H +#define _LMAUDIT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define REVISED_AUDIT_ENTRY_STRUCT +#define LOGFLAGS_FORWARD 0 +#define LOGFLAGS_BACKWARD 1 +#define LOGFLAGS_SEEK 2 +#define ACTION_LOCKOUT 0 +#define ACTION_ADMINUNLOCK 1 +#define AE_GUEST 0 +#define AE_USER 1 +#define AE_ADMIN 2 +#define AE_NORMAL 0 +#define AE_USERLIMIT 0 +#define AE_GENERAL 0 +#define AE_ERROR 1 +#define AE_SESSDIS 1 +#define AE_BADPW 1 +#define AE_AUTODIS 2 +#define AE_UNSHARE 2 +#define AE_ADMINPRIVREQD 2 +#define AE_ADMINDIS 3 +#define AE_NOACCESSPERM 3 +#define AE_ACCRESTRICT 4 +#define AE_NORMAL_CLOSE 0 +#define AE_SES_CLOSE 1 +#define AE_ADMIN_CLOSE 2 +#define AE_LIM_UNKNOWN 0 +#define AE_LIM_LOGONHOURS 1 +#define AE_LIM_EXPIRED 2 +#define AE_LIM_INVAL_WKSTA 3 +#define AE_LIM_DISABLED 4 +#define AE_LIM_DELETED 5 +#define AE_MOD 0 +#define AE_DELETE 1 +#define AE_ADD 2 +#define AE_UAS_USER 0 +#define AE_UAS_GROUP 1 +#define AE_UAS_MODALS 2 +#define SVAUD_SERVICE 1 +#define SVAUD_GOODSESSLOGON 6 +#define SVAUD_BADSESSLOGON 24 +#define SVAUD_SESSLOGON (SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON) +#define SVAUD_GOODNETLOGON 96 +#define SVAUD_BADNETLOGON 384 +#define SVAUD_NETLOGON (SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON) +#define SVAUD_LOGON (SVAUD_NETLOGON|SVAUD_SESSLOGON) +#define SVAUD_GOODUSE 0x600 +#define SVAUD_BADUSE 0x1800 +#define SVAUD_USE (SVAUD_GOODUSE|SVAUD_BADUSE) +#define SVAUD_USERLIST 8192 +#define SVAUD_PERMISSIONS 16384 +#define SVAUD_RESOURCE 32768 +#define SVAUD_LOGONLIM 65536 +#define AA_AUDIT_ALL 1 +#define AA_A_OWNER 4 +#define AA_CLOSE 8 +#define AA_S_OPEN 16 +#define AA_S_WRITE 32 +#define AA_S_CREATE 32 +#define AA_S_DELETE 64 +#define AA_S_ACL 128 +#define AA_S_ALL 253 +#define AA_F_OPEN 256 +#define AA_F_WRITE 512 +#define AA_F_CREATE 512 +#define AA_F_DELETE 1024 +#define AA_F_ACL 2048 +#define AA_F_ALL (AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL) +#define AA_A_OPEN 2048 +#define AA_A_WRITE 4096 +#define AA_A_CREATE 8192 +#define AA_A_DELETE 16384 +#define AA_A_ACL 32768 +#define AA_A_ALL (AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL) +typedef struct _AUDIT_ENTRY { + DWORD ae_len; + DWORD ae_reserved; + DWORD ae_time; + DWORD ae_type; + DWORD ae_data_offset; + DWORD ae_data_size; +} AUDIT_ENTRY,*PAUDIT_ENTRY,*LPAUDIT_ENTRY; +typedef struct _HLOG { + DWORD time; + DWORD last_flags; + DWORD offset; + DWORD rec_offset; +} HLOG,*PHLOG,*LPHLOG; +typedef struct _AE_SRVSTATUS { + DWORD ae_sv_status; +} AE_SRVSTATUS,*PAE_SRVSTATUS,*LPAE_SRVSTATUS; +typedef struct _AE_SESSLOGON { + DWORD ae_so_compname; + DWORD ae_so_username; + DWORD ae_so_privilege; +} AE_SESSLOGON,*PAE_SESSLOGON,*LPAE_SESSLOGON; +typedef struct _AE_SESSLOGOFF { + DWORD ae_sf_compname; + DWORD ae_sf_username; + DWORD ae_sf_reason; +} AE_SESSLOGOFF,*PAE_SESSLOGOFF,*LPAE_SESSLOGOFF; +typedef struct _AE_SESSPWERR { + DWORD ae_sp_compname; + DWORD ae_sp_username; +} AE_SESSPWERR,*PAE_SESSPWERR,*LPAE_SESSPWERR; +typedef struct _AE_CONNSTART { + DWORD ae_ct_compname; + DWORD ae_ct_username; + DWORD ae_ct_netname; + DWORD ae_ct_connid; +} AE_CONNSTART,*PAE_CONNSTART,*LPAE_CONNSTART; +typedef struct _AE_CONNSTOP { + DWORD ae_cp_compname; + DWORD ae_cp_username; + DWORD ae_cp_netname; + DWORD ae_cp_connid; + DWORD ae_cp_reason; +} AE_CONNSTOP,*PAE_CONNSTOP,*LPAE_CONNSTOP; +typedef struct _AE_CONNREJ { + DWORD ae_cr_compname; + DWORD ae_cr_username; + DWORD ae_cr_netname; + DWORD ae_cr_reason; +} AE_CONNREJ,*PAE_CONNREJ,*LPAE_CONNREJ; +typedef 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; +} AE_RESACCESS,*PAE_RESACCESS,*LPAE_RESACCESS; +typedef struct _AE_RESACCESSREJ { + DWORD ae_rr_compname; + DWORD ae_rr_username; + DWORD ae_rr_resname; + DWORD ae_rr_operation; +} AE_RESACCESSREJ,*PAE_RESACCESSREJ,*LPAE_RESACCESSREJ; +typedef 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; +} AE_CLOSEFILE,*PAE_CLOSEFILE,*LPAE_CLOSEFILE; +typedef 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; +} AE_SERVICESTAT,*PAE_SERVICESTAT,*LPAE_SERVICESTAT; +typedef struct _AE_ACLMOD { + DWORD ae_am_compname; + DWORD ae_am_username; + DWORD ae_am_resname; + DWORD ae_am_action; + DWORD ae_am_datalen; +} AE_ACLMOD,*PAE_ACLMOD,*LPAE_ACLMOD; +typedef 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; +} AE_UASMOD,*PAE_UASMOD,*LPAE_UASMOD; +typedef struct _AE_NETLOGON { + DWORD ae_no_compname; + DWORD ae_no_username; + DWORD ae_no_privilege; + DWORD ae_no_authflags; +} AE_NETLOGON,*PAE_NETLOGON,*LPAE_NETLOGON; +typedef struct _AE_NETLOGOFF { + DWORD ae_nf_compname; + DWORD ae_nf_username; + DWORD ae_nf_reserved1; + DWORD ae_nf_reserved2; +} AE_NETLOGOFF,*PAE_NETLOGOFF,*LPAE_NETLOGOFF; +typedef struct _AE_ACCLIM { + DWORD ae_al_compname; + DWORD ae_al_username; + DWORD ae_al_resname; + DWORD ae_al_limit; +} AE_ACCLIM,*PAE_ACCLIM,*LPAE_ACCLIM; +typedef struct _AE_LOCKOUT { + DWORD ae_lk_compname; + DWORD ae_lk_username; + DWORD ae_lk_action; + DWORD ae_lk_bad_pw_count; +} AE_LOCKOUT,*PAE_LOCKOUT,*LPAE_LOCKOUT; +typedef 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; +} AE_GENERIC,*PAE_GENERIC,*LPAE_GENERIC; +NET_API_STATUS WINAPI NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE); + +/* These conflict with struct typedefs, why? */ +#define AE_SRVSTATUS 0 +#define AE_SESSLOGON 1 +#define AE_SESSLOGOFF 2 +#define AE_SESSPWERR 3 +#define AE_CONNSTART 4 +#define AE_CONNSTOP 5 +#define AE_CONNREJ 6 +#define AE_RESACCESS 7 +#define AE_RESACCESSREJ 8 +#define AE_CLOSEFILE 9 +#define AE_SERVICESTAT 11 +#define AE_ACLMOD 12 +#define AE_UASMOD 13 +#define AE_NETLOGON 14 +#define AE_NETLOGOFF 15 +#define AE_NETLOGDENIED 16 +#define AE_ACCLIMITEXCD 17 +#define AE_RESACCESS2 18 +#define AE_ACLMODFAIL 19 +#define AE_LOCKOUT 20 +#define AE_GENERIC_TYPE 21 +#define AE_SRVSTART 0 +#define AE_SRVPAUSED 1 +#define AE_SRVCONT 2 +#define AE_SRVSTOP 3 +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmbrowsr.h b/reactos/w32api/include/lmbrowsr.h new file mode 100644 index 00000000000..4aee4646cd9 --- /dev/null +++ b/reactos/w32api/include/lmbrowsr.h @@ -0,0 +1,74 @@ +#ifndef _LMBROWSR_H +#define _LMBROWSR_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define BROWSER_ROLE_PDC 1 +#define BROWSER_ROLE_BDC 2 +typedef 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; +} BROWSER_STATISTICS,*PBROWSER_STATISTICS,*LPBROWSER_STATISTICS; +typedef struct _BROWSER_STATISTICS_100 { + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; +} BROWSER_STATISTICS_100,*PBROWSER_STATISTICS_100; +typedef 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; +} BROWSER_STATISTICS_101,*PBROWSER_STATISTICS_101; + +NET_API_STATUS WINAPI I_BrowserServerEnum(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS WINAPI 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); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmchdev.h b/reactos/w32api/include/lmchdev.h new file mode 100644 index 00000000000..3a4096881e8 --- /dev/null +++ b/reactos/w32api/include/lmchdev.h @@ -0,0 +1,61 @@ +#ifndef _LMCHDEV_H +#define _LMCHDEV_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define CHARDEVQ_NO_REQUESTS (-1) +#define CHARDEV_CLOSE 0 +#define CHARDEVQ_MAX_PRIORITY 1 +#define CHARDEVQ_DEV_PARMNUM 1 +#define HANDLE_INFO_LEVEL_1 1 +#define HANDLE_CHARTIME_PARMNUM 1 +#define HANDLE_CHARCOUNT_PARMNUM 2 +#define CHARDEV_STAT_OPENED 2 +#define CHARDEVQ_PRIORITY_PARMNUM 2 +#define CHARDEVQ_DEVS_PARMNUM 3 +#define CHARDEV_STAT_ERROR 4 +#define CHARDEVQ_NUMUSERS_PARMNUM 4 +#define CHARDEVQ_NUMAHEAD_PARMNUM 5 +#define CHARDEVQ_DEF_PRIORITY 5 +#define CHARDEVQ_PRIORITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM) +#define CHARDEVQ_DEVS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM) +#define CHARDEVQ_MIN_PRIORITY 9 +typedef struct _CHARDEV_INFO_0 { LPWSTR ch0_dev; } CHARDEV_INFO_0,*PCHARDEV_INFO_0,*LPCHARDEV_INFO_0; +typedef struct _CHARDEV_INFO_1 { + LPWSTR ch1_dev; + DWORD ch1_status; + LPWSTR ch1_username; + DWORD ch1_time; +} CHARDEV_INFO_1,*PCHARDEV_INFO_1,*LPCHARDEV_INFO_1; +typedef struct _CHARDEVQ_INFO_0 { LPWSTR cq0_dev; } CHARDEVQ_INFO_0,*PCHARDEVQ_INFO_0,*LPCHARDEVQ_INFO_0; +typedef struct _CHARDEVQ_INFO_1 { + LPWSTR cq1_dev; + DWORD cq1_priority; + LPWSTR cq1_devs; + DWORD cq1_numusers; + DWORD cq1_numahead; +} CHARDEVQ_INFO_1,*PCHARDEVQ_INFO_1,*LPCHARDEVQ_INFO_1; +typedef struct _CHARDEVQ_INFO_1002 { DWORD cq1002_priority; } CHARDEVQ_INFO_1002,*PCHARDEVQ_INFO_1002,*LPCHARDEVQ_INFO_1002; +typedef struct _CHARDEVQ_INFO_1003 { LPWSTR cq1003_devs; } CHARDEVQ_INFO_1003,*PCHARDEVQ_INFO_1003,*LPCHARDEVQ_INFO_1003; +typedef struct _HANDLE_INFO_1 { + DWORD hdli1_chartime; + DWORD hdli1_charcount; +}HANDLE_INFO_1,*PHANDLE_INFO_1,*LPHANDLE_INFO_1; +NET_API_STATUS WINAPI NetCharDevEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetCharDevGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetCharDevControl(LPCWSTR,LPCWSTR,DWORD); +NET_API_STATUS WINAPI NetCharDevQEnum(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetCharDevQGetInfo(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetCharDevQSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetCharDevQPurge(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetCharDevQPurgeSelf(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetHandleGetInfo(HANDLE,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetHandleSetInfo(HANDLE,DWORD,PBYTE,DWORD,PDWORD); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmconfig.h b/reactos/w32api/include/lmconfig.h new file mode 100644 index 00000000000..b75c6ab9cb3 --- /dev/null +++ b/reactos/w32api/include/lmconfig.h @@ -0,0 +1,21 @@ +#ifndef _LMCONFIG_H +#define _LMCONFIG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define REVISED_CONFIG_APIS +typedef struct _CONFIG_INFO_0 { + LPWSTR cfgi0_key; + LPWSTR cfgi0_data; +} CONFIG_INFO_0,*PCONFIG_INFO_0,*LPCONFIG_INFO_0; +NET_API_STATUS WINAPI NetConfigGet(LPCWSTR,LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS WINAPI NetConfigGetAll(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS WINAPI NetConfigSet(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE,DWORD); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmcons.h b/reactos/w32api/include/lmcons.h new file mode 100644 index 00000000000..27566b3654f --- /dev/null +++ b/reactos/w32api/include/lmcons.h @@ -0,0 +1,75 @@ +#ifndef _LMCONS_H +#define _LMCONS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define MESSAGE_FILENAME TEXT("NETMSG") +#define OS2MSG_FILENAME TEXT("BASE") +#define HELP_MSG_FILENAME TEXT("NETH") +#define NET_API_FUNCTION __stdcall +#define NET_API_STATUS DWORD +#define API_RET_TYPE NET_API_STATUS +#define MIN_LANMAN_MESSAGE_ID NERR_BASE +#define MAX_LANMAN_MESSAGE_ID 5799 +#ifndef CNLEN /* also in nddeapi.h */ +#define CNLEN 15 +#define UNCLEN (CNLEN + 2) +#endif +#define DNLEN 15 +#define LM20_CNLEN 15 +#define LM20_DNLEN 15 +#define LM20_SNLEN 15 +#define LM20_STXTLEN 63 +#define LM20_UNCLEN (LM20_CNLEN+2) +#define LM20_NNLEN 12 +#define LM20_RMLEN (LM20_UNCLEN+1+LM20_NNLEN) +#define NNLEN 80 +#define RMLEN (UNCLEN+1+NNLEN) +#define SNLEN 80 +#define STXTLEN 256 +#define PATHLEN 256 +#define LM20_PATHLEN 256 +#define DEVLEN 80 +#define LM20_DEVLEN 8 +#define EVLEN 16 +#define UNLEN 256 +#define LM20_UNLEN 20 +#define GNLEN UNLEN +#define LM20_GNLEN LM20_UNLEN +#define PWLEN 256 +#define LM20_PWLEN 14 +#define SHPWLEN 8 +#define CLTYPE_LEN 12 +#define MAXCOMMENTSZ 256 +#define LM20_MAXCOMMENTSZ 48 +#define QNLEN NNLEN +#define LM20_QNLEN LM20_NNLEN +#define ALERTSZ 128 +#define MAXDEVENTRIES (sizeof(int)*8) +#define NETBIOS_NAME_LEN 16 +#define MAX_PREFERRED_LENGTH ((DWORD)-1) +#define CRYPT_KEY_LEN 7 +#define CRYPT_TXT_LEN 8 +#define ENCRYPTED_PWLEN 16 +#define SESSION_PWLEN 24 +#define SESSION_CRYPT_KLEN 21 +#define PARMNUM_ALL 0 +#define PARM_ERROR_UNKNOWN ((DWORD)-1) +#define PARM_ERROR_NONE 0 +#define PARMNUM_BASE_INFOLEVEL 1000 +#define PLATFORM_ID_DOS 300 +#define PLATFORM_ID_OS2 400 +#define PLATFORM_ID_NT 500 +#define PLATFORM_ID_OSF 600 +#define PLATFORM_ID_VMS 700 +/* new typedef in W2K */ +#if defined( _WIN32_WINNT ) || defined( WINNT ) || defined( FORCE_UNICODE ) +#define LMSTR LPWSTR +#define LMCSTR LPCWSTR +#else +#define LMSTR LPSTR +#define LMCSTR LPCSTR +#endif + +#endif diff --git a/reactos/w32api/include/lmerr.h b/reactos/w32api/include/lmerr.h new file mode 100644 index 00000000000..58b1484920c --- /dev/null +++ b/reactos/w32api/include/lmerr.h @@ -0,0 +1,306 @@ +#ifndef _LMERR_H +#define _LMERR_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#define NERR_Success 0 +#define NERR_BASE 2100 +#define NERR_NetNotStarted (NERR_BASE+2) +#define NERR_UnknownServer (NERR_BASE+3) +#define NERR_ShareMem (NERR_BASE+4) +#define NERR_NoNetworkResource (NERR_BASE+5) +#define NERR_RemoteOnly (NERR_BASE+6) +#define NERR_DevNotRedirected (NERR_BASE+7) +#define NERR_ServerNotStarted (NERR_BASE+14) +#define NERR_ItemNotFound (NERR_BASE+15) +#define NERR_UnknownDevDir (NERR_BASE+16) +#define NERR_RedirectedPath (NERR_BASE+17) +#define NERR_DuplicateShare (NERR_BASE+18) +#define NERR_NoRoom (NERR_BASE+19) +#define NERR_TooManyItems (NERR_BASE+21) +#define NERR_InvalidMaxUsers (NERR_BASE+22) +#define NERR_BufTooSmall (NERR_BASE+23) +#define NERR_RemoteErr (NERR_BASE+27) +#define NERR_LanmanIniError (NERR_BASE+31) +#define NERR_NetworkError (NERR_BASE+36) +#define NERR_WkstaInconsistentState (NERR_BASE+37) +#define NERR_WkstaNotStarted (NERR_BASE+38) +#define NERR_BrowserNotStarted (NERR_BASE+39) +#define NERR_InternalError (NERR_BASE+40) +#define NERR_BadTransactConfig (NERR_BASE+41) +#define NERR_InvalidAPI (NERR_BASE+42) +#define NERR_BadEventName (NERR_BASE+43) +#define NERR_DupNameReboot (NERR_BASE+44) +#define NERR_CfgCompNotFound (NERR_BASE+46) +#define NERR_CfgParamNotFound (NERR_BASE+47) +#define NERR_LineTooLong (NERR_BASE+49) +#define NERR_QNotFound (NERR_BASE+50) +#define NERR_JobNotFound (NERR_BASE+51) +#define NERR_DestNotFound (NERR_BASE+52) +#define NERR_DestExists (NERR_BASE+53) +#define NERR_QExists (NERR_BASE+54) +#define NERR_QNoRoom (NERR_BASE+55) +#define NERR_JobNoRoom (NERR_BASE+56) +#define NERR_DestNoRoom (NERR_BASE+57) +#define NERR_DestIdle (NERR_BASE+58) +#define NERR_DestInvalidOp (NERR_BASE+59) +#define NERR_ProcNoRespond (NERR_BASE+60) +#define NERR_SpoolerNotLoaded (NERR_BASE+61) +#define NERR_DestInvalidState (NERR_BASE+62) +#define NERR_QInvalidState (NERR_BASE+63) +#define NERR_JobInvalidState (NERR_BASE+64) +#define NERR_SpoolNoMemory (NERR_BASE+65) +#define NERR_DriverNotFound (NERR_BASE+66) +#define NERR_DataTypeInvalid (NERR_BASE+67) +#define NERR_ProcNotFound (NERR_BASE+68) +#define NERR_ServiceTableLocked (NERR_BASE+80) +#define NERR_ServiceTableFull (NERR_BASE+81) +#define NERR_ServiceInstalled (NERR_BASE+82) +#define NERR_ServiceEntryLocked (NERR_BASE+83) +#define NERR_ServiceNotInstalled (NERR_BASE+84) +#define NERR_BadServiceName (NERR_BASE+85) +#define NERR_ServiceCtlTimeout (NERR_BASE+86) +#define NERR_ServiceCtlBusy (NERR_BASE+87) +#define NERR_BadServiceProgName (NERR_BASE+88) +#define NERR_ServiceNotCtrl (NERR_BASE+89) +#define NERR_ServiceKillProc (NERR_BASE+90) +#define NERR_ServiceCtlNotValid (NERR_BASE+91) +#define NERR_NotInDispatchTbl (NERR_BASE+92) +#define NERR_BadControlRecv (NERR_BASE+93) +#define NERR_ServiceNotStarting (NERR_BASE+94) +#define NERR_AlreadyLoggedOn (NERR_BASE+100) +#define NERR_NotLoggedOn (NERR_BASE+101) +#define NERR_BadUsername (NERR_BASE+102) +#define NERR_BadPassword (NERR_BASE+103) +#define NERR_UnableToAddName_W (NERR_BASE+104) +#define NERR_UnableToAddName_F (NERR_BASE+105) +#define NERR_UnableToDelName_W (NERR_BASE+106) +#define NERR_UnableToDelName_F (NERR_BASE+107) +#define NERR_LogonsPaused (NERR_BASE+109) +#define NERR_LogonServerConflict (NERR_BASE+110) +#define NERR_LogonNoUserPath (NERR_BASE+111) +#define NERR_LogonScriptError (NERR_BASE+112) +#define NERR_StandaloneLogon (NERR_BASE+114) +#define NERR_LogonServerNotFound (NERR_BASE+115) +#define NERR_LogonDomainExists (NERR_BASE+116) +#define NERR_NonValidatedLogon (NERR_BASE+117) +#define NERR_ACFNotFound (NERR_BASE+119) +#define NERR_GroupNotFound (NERR_BASE+120) +#define NERR_UserNotFound (NERR_BASE+121) +#define NERR_ResourceNotFound (NERR_BASE+122) +#define NERR_GroupExists (NERR_BASE+123) +#define NERR_UserExists (NERR_BASE+124) +#define NERR_ResourceExists (NERR_BASE+125) +#define NERR_NotPrimary (NERR_BASE+126) +#define NERR_ACFNotLoaded (NERR_BASE+127) +#define NERR_ACFNoRoom (NERR_BASE+128) +#define NERR_ACFFileIOFail (NERR_BASE+129) +#define NERR_ACFTooManyLists (NERR_BASE+130) +#define NERR_UserLogon (NERR_BASE+131) +#define NERR_ACFNoParent (NERR_BASE+132) +#define NERR_CanNotGrowSegment (NERR_BASE+133) +#define NERR_SpeGroupOp (NERR_BASE+134) +#define NERR_NotInCache (NERR_BASE+135) +#define NERR_UserInGroup (NERR_BASE+136) +#define NERR_UserNotInGroup (NERR_BASE+137) +#define NERR_AccountUndefined (NERR_BASE+138) +#define NERR_AccountExpired (NERR_BASE+139) +#define NERR_InvalidWorkstation (NERR_BASE+140) +#define NERR_InvalidLogonHours (NERR_BASE+141) +#define NERR_PasswordExpired (NERR_BASE+142) +#define NERR_PasswordCantChange (NERR_BASE+143) +#define NERR_PasswordHistConflict (NERR_BASE+144) +#define NERR_PasswordTooShort (NERR_BASE+145) +#define NERR_PasswordTooRecent (NERR_BASE+146) +#define NERR_InvalidDatabase (NERR_BASE+147) +#define NERR_DatabaseUpToDate (NERR_BASE+148) +#define NERR_SyncRequired (NERR_BASE+149) +#define NERR_UseNotFound (NERR_BASE+150) +#define NERR_BadAsgType (NERR_BASE+151) +#define NERR_DeviceIsShared (NERR_BASE+152) +#define NERR_NoComputerName (NERR_BASE+170) +#define NERR_MsgAlreadyStarted (NERR_BASE+171) +#define NERR_MsgInitFailed (NERR_BASE+172) +#define NERR_NameNotFound (NERR_BASE+173) +#define NERR_AlreadyForwarded (NERR_BASE+174) +#define NERR_AddForwarded (NERR_BASE+175) +#define NERR_AlreadyExists (NERR_BASE+176) +#define NERR_TooManyNames (NERR_BASE+177) +#define NERR_DelComputerName (NERR_BASE+178) +#define NERR_LocalForward (NERR_BASE+179) +#define NERR_GrpMsgProcessor (NERR_BASE+180) +#define NERR_PausedRemote (NERR_BASE+181) +#define NERR_BadReceive (NERR_BASE+182) +#define NERR_NameInUse (NERR_BASE+183) +#define NERR_MsgNotStarted (NERR_BASE+184) +#define NERR_NotLocalName (NERR_BASE+185) +#define NERR_NoForwardName (NERR_BASE+186) +#define NERR_RemoteFull (NERR_BASE+187) +#define NERR_NameNotForwarded (NERR_BASE+188) +#define NERR_TruncatedBroadcast (NERR_BASE+189) +#define NERR_InvalidDevice (NERR_BASE+194) +#define NERR_WriteFault (NERR_BASE+195) +#define NERR_DuplicateName (NERR_BASE+197) +#define NERR_DeleteLater (NERR_BASE+198) +#define NERR_IncompleteDel (NERR_BASE+199) +#define NERR_MultipleNets (NERR_BASE+200) +#define NERR_NetNameNotFound (NERR_BASE+210) +#define NERR_DeviceNotShared (NERR_BASE+211) +#define NERR_ClientNameNotFound (NERR_BASE+212) +#define NERR_FileIdNotFound (NERR_BASE+214) +#define NERR_ExecFailure (NERR_BASE+215) +#define NERR_TmpFile (NERR_BASE+216) +#define NERR_TooMuchData (NERR_BASE+217) +#define NERR_DeviceShareConflict (NERR_BASE+218) +#define NERR_BrowserTableIncomplete (NERR_BASE+219) +#define NERR_NotLocalDomain (NERR_BASE+220) +#define NERR_DevInvalidOpCode (NERR_BASE+231) +#define NERR_DevNotFound (NERR_BASE+232) +#define NERR_DevNotOpen (NERR_BASE+233) +#define NERR_BadQueueDevString (NERR_BASE+234) +#define NERR_BadQueuePriority (NERR_BASE+235) +#define NERR_NoCommDevs (NERR_BASE+237) +#define NERR_QueueNotFound (NERR_BASE+238) +#define NERR_BadDevString (NERR_BASE+240) +#define NERR_BadDev (NERR_BASE+241) +#define NERR_InUseBySpooler (NERR_BASE+242) +#define NERR_CommDevInUse (NERR_BASE+243) +#define NERR_InvalidComputer (NERR_BASE+251) +#define NERR_MaxLenExceeded (NERR_BASE+254) +#define NERR_BadComponent (NERR_BASE+256) +#define NERR_CantType (NERR_BASE+257) +#define NERR_TooManyEntries (NERR_BASE+262) +#define NERR_ProfileFileTooBig (NERR_BASE+270) +#define NERR_ProfileOffset (NERR_BASE+271) +#define NERR_ProfileCleanup (NERR_BASE+272) +#define NERR_ProfileUnknownCmd (NERR_BASE+273) +#define NERR_ProfileLoadErr (NERR_BASE+274) +#define NERR_ProfileSaveErr (NERR_BASE+275) +#define NERR_LogOverflow (NERR_BASE+277) +#define NERR_LogFileChanged (NERR_BASE+278) +#define NERR_LogFileCorrupt (NERR_BASE+279) +#define NERR_SourceIsDir (NERR_BASE+280) +#define NERR_BadSource (NERR_BASE+281) +#define NERR_BadDest (NERR_BASE+282) +#define NERR_DifferentServers (NERR_BASE+283) +#define NERR_RunSrvPaused (NERR_BASE+285) +#define NERR_ErrCommRunSrv (NERR_BASE+289) +#define NERR_ErrorExecingGhost (NERR_BASE+291) +#define NERR_ShareNotFound (NERR_BASE+292) +#define NERR_InvalidLana (NERR_BASE+300) +#define NERR_OpenFiles (NERR_BASE+301) +#define NERR_ActiveConns (NERR_BASE+302) +#define NERR_BadPasswordCore (NERR_BASE+303) +#define NERR_DevInUse (NERR_BASE+304) +#define NERR_LocalDrive (NERR_BASE+305) +#define NERR_AlertExists (NERR_BASE+330) +#define NERR_TooManyAlerts (NERR_BASE+331) +#define NERR_NoSuchAlert (NERR_BASE+332) +#define NERR_BadRecipient (NERR_BASE+333) +#define NERR_AcctLimitExceeded (NERR_BASE+334) +#define NERR_InvalidLogSeek (NERR_BASE+340) +#define NERR_BadUasConfig (NERR_BASE+350) +#define NERR_InvalidUASOp (NERR_BASE+351) +#define NERR_LastAdmin (NERR_BASE+352) +#define NERR_DCNotFound (NERR_BASE+353) +#define NERR_LogonTrackingError (NERR_BASE+354) +#define NERR_NetlogonNotStarted (NERR_BASE+355) +#define NERR_CanNotGrowUASFile (NERR_BASE+356) +#define NERR_TimeDiffAtDC (NERR_BASE+357) +#define NERR_PasswordMismatch (NERR_BASE+358) +#define NERR_NoSuchServer (NERR_BASE+360) +#define NERR_NoSuchSession (NERR_BASE+361) +#define NERR_NoSuchConnection (NERR_BASE+362) +#define NERR_TooManyServers (NERR_BASE+363) +#define NERR_TooManySessions (NERR_BASE+364) +#define NERR_TooManyConnections (NERR_BASE+365) +#define NERR_TooManyFiles (NERR_BASE+366) +#define NERR_NoAlternateServers (NERR_BASE+367) +#define NERR_TryDownLevel (NERR_BASE+370) +#define NERR_UPSDriverNotStarted (NERR_BASE+380) +#define NERR_UPSInvalidConfig (NERR_BASE+381) +#define NERR_UPSInvalidCommPort (NERR_BASE+382) +#define NERR_UPSSignalAsserted (NERR_BASE+383) +#define NERR_UPSShutdownFailed (NERR_BASE+384) +#define NERR_BadDosRetCode (NERR_BASE+400) +#define NERR_ProgNeedsExtraMem (NERR_BASE+401) +#define NERR_BadDosFunction (NERR_BASE+402) +#define NERR_RemoteBootFailed (NERR_BASE+403) +#define NERR_BadFileCheckSum (NERR_BASE+404) +#define NERR_NoRplBootSystem (NERR_BASE+405) +#define NERR_RplLoadrNetBiosErr (NERR_BASE+406) +#define NERR_RplLoadrDiskErr (NERR_BASE+407) +#define NERR_ImageParamErr (NERR_BASE+408) +#define NERR_TooManyImageParams (NERR_BASE+409) +#define NERR_NonDosFloppyUsed (NERR_BASE+410) +#define NERR_RplBootRestart (NERR_BASE+411) +#define NERR_RplSrvrCallFailed (NERR_BASE+412) +#define NERR_CantConnectRplSrvr (NERR_BASE+413) +#define NERR_CantOpenImageFile (NERR_BASE+414) +#define NERR_CallingRplSrvr (NERR_BASE+415) +#define NERR_StartingRplBoot (NERR_BASE+416) +#define NERR_RplBootServiceTerm (NERR_BASE+417) +#define NERR_RplBootStartFailed (NERR_BASE+418) +#define NERR_RPL_CONNECTED (NERR_BASE+419) +#define NERR_BrowserConfiguredToNotRun (NERR_BASE+450) +#define NERR_RplNoAdaptersStarted (NERR_BASE+510) +#define NERR_RplBadRegistry (NERR_BASE+511) +#define NERR_RplBadDatabase (NERR_BASE+512) +#define NERR_RplRplfilesShare (NERR_BASE+513) +#define NERR_RplNotRplServer (NERR_BASE+514) +#define NERR_RplCannotEnum (NERR_BASE+515) +#define NERR_RplWkstaInfoCorrupted (NERR_BASE+516) +#define NERR_RplWkstaNotFound (NERR_BASE+517) +#define NERR_RplWkstaNameUnavailable (NERR_BASE+518) +#define NERR_RplProfileInfoCorrupted (NERR_BASE+519) +#define NERR_RplProfileNotFound (NERR_BASE+520) +#define NERR_RplProfileNameUnavailable (NERR_BASE+521) +#define NERR_RplProfileNotEmpty (NERR_BASE+522) +#define NERR_RplConfigInfoCorrupted (NERR_BASE+523) +#define NERR_RplConfigNotFound (NERR_BASE+524) +#define NERR_RplAdapterInfoCorrupted (NERR_BASE+525) +#define NERR_RplInternal (NERR_BASE+526) +#define NERR_RplVendorInfoCorrupted (NERR_BASE+527) +#define NERR_RplBootInfoCorrupted (NERR_BASE+528) +#define NERR_RplWkstaNeedsUserAcct (NERR_BASE+529) +#define NERR_RplNeedsRPLUSERAcct (NERR_BASE+530) +#define NERR_RplBootNotFound (NERR_BASE+531) +#define NERR_RplIncompatibleProfile (NERR_BASE+532) +#define NERR_RplAdapterNameUnavailable (NERR_BASE+533) +#define NERR_RplConfigNotEmpty (NERR_BASE+534) +#define NERR_RplBootInUse (NERR_BASE+535) +#define NERR_RplBackupDatabase (NERR_BASE+536) +#define NERR_RplAdapterNotFound (NERR_BASE+537) +#define NERR_RplVendorNotFound (NERR_BASE+538) +#define NERR_RplVendorNameUnavailable (NERR_BASE+539) +#define NERR_RplBootNameUnavailable (NERR_BASE+540) +#define NERR_RplConfigNameUnavailable (NERR_BASE+541) +#define NERR_DfsInternalCorruption (NERR_BASE+560) +#define NERR_DfsVolumeDataCorrupt (NERR_BASE+561) +#define NERR_DfsNoSuchVolume (NERR_BASE+562) +#define NERR_DfsVolumeAlreadyExists (NERR_BASE+563) +#define NERR_DfsAlreadyShared (NERR_BASE+564) +#define NERR_DfsNoSuchShare (NERR_BASE+565) +#define NERR_DfsNotALeafVolume (NERR_BASE+566) +#define NERR_DfsLeafVolume (NERR_BASE+567) +#define NERR_DfsVolumeHasMultipleServers (NERR_BASE+568) +#define NERR_DfsCantCreateJunctionPoint (NERR_BASE+569) +#define NERR_DfsServerNotDfsAware (NERR_BASE+570) +#define NERR_DfsBadRenamePath (NERR_BASE+571) +#define NERR_DfsVolumeIsOffline (NERR_BASE+572) +#define NERR_DfsNoSuchServer (NERR_BASE+573) +#define NERR_DfsCyclicalName (NERR_BASE+574) +#define NERR_DfsNotSupportedInServerDfs (NERR_BASE+575) +#define NERR_DfsDuplicateService (NERR_BASE+576) +#define NERR_DfsCantRemoveLastServerShare (NERR_BASE+577) +#define NERR_DfsVolumeIsInterDfs (NERR_BASE+578) +#define NERR_DfsInconsistent (NERR_BASE+579) +#define NERR_DfsServerUpgraded (NERR_BASE+580) +#define NERR_DfsDataIsIdentical (NERR_BASE+581) +#define NERR_DfsCantRemoveDfsRoot (NERR_BASE+582) +#define NERR_DfsChildOrParentInDfs (NERR_BASE+583) +#define NERR_DfsInternalError (NERR_BASE+590) +#define MAX_NERR (NERR_BASE+899) +#endif diff --git a/reactos/w32api/include/lmerrlog.h b/reactos/w32api/include/lmerrlog.h new file mode 100644 index 00000000000..2f4160369fd --- /dev/null +++ b/reactos/w32api/include/lmerrlog.h @@ -0,0 +1,211 @@ +#ifndef _LMERRLOG_H +#define _LMERRLOG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define ERRLOG_BASE 3100 +#define ERRLOG2_BASE 5700 +#define LOGFLAGS_FORWARD 0 +#define LOGFLAGS_BACKWARD 1 +#define LOGFLAGS_SEEK 2 +#define NELOG_Internal_Error ERRLOG_BASE +#define NELOG_Resource_Shortage (ERRLOG_BASE+1) +#define NELOG_Unable_To_Lock_Segment (ERRLOG_BASE+2) +#define NELOG_Unable_To_Unlock_Segment (ERRLOG_BASE+3) +#define NELOG_Uninstall_Service (ERRLOG_BASE+4) +#define NELOG_Init_Exec_Fail (ERRLOG_BASE+5) +#define NELOG_Ncb_Error (ERRLOG_BASE+6) +#define NELOG_Net_Not_Started (ERRLOG_BASE+7) +#define NELOG_Ioctl_Error (ERRLOG_BASE+8) +#define NELOG_System_Semaphore (ERRLOG_BASE+9) +#define NELOG_Init_OpenCreate_Err (ERRLOG_BASE+10) +#define NELOG_NetBios (ERRLOG_BASE+11) +#define NELOG_SMB_Illegal (ERRLOG_BASE+12) +#define NELOG_Service_Fail (ERRLOG_BASE+13) +#define NELOG_Entries_Lost (ERRLOG_BASE+14) +#define NELOG_Init_Seg_Overflow (ERRLOG_BASE+20) +#define NELOG_Srv_No_Mem_Grow (ERRLOG_BASE+21) +#define NELOG_Access_File_Bad (ERRLOG_BASE+22) +#define NELOG_Srvnet_Not_Started (ERRLOG_BASE+23) +#define NELOG_Init_Chardev_Err (ERRLOG_BASE+24) +#define NELOG_Remote_API (ERRLOG_BASE+25) +#define NELOG_Ncb_TooManyErr (ERRLOG_BASE+26) +#define NELOG_Mailslot_err (ERRLOG_BASE+27) +#define NELOG_ReleaseMem_Alert (ERRLOG_BASE+28) +#define NELOG_AT_cannot_write (ERRLOG_BASE+29) +#define NELOG_Cant_Make_Msg_File (ERRLOG_BASE+30) +#define NELOG_Exec_Netservr_NoMem (ERRLOG_BASE+31) +#define NELOG_Server_Lock_Failure (ERRLOG_BASE+32) +#define NELOG_Msg_Shutdown (ERRLOG_BASE+40) +#define NELOG_Msg_Sem_Shutdown (ERRLOG_BASE+41) +#define NELOG_Msg_Log_Err (ERRLOG_BASE+50) +#define NELOG_VIO_POPUP_ERR (ERRLOG_BASE+51) +#define NELOG_Msg_Unexpected_SMB_Type (ERRLOG_BASE+52) +#define NELOG_Wksta_Infoseg (ERRLOG_BASE+60) +#define NELOG_Wksta_Compname (ERRLOG_BASE+61) +#define NELOG_Wksta_BiosThreadFailure (ERRLOG_BASE+62) +#define NELOG_Wksta_IniSeg (ERRLOG_BASE+63) +#define NELOG_Wksta_HostTab_Full (ERRLOG_BASE+64) +#define NELOG_Wksta_Bad_Mailslot_SMB (ERRLOG_BASE+65) +#define NELOG_Wksta_UASInit (ERRLOG_BASE+66) +#define NELOG_Wksta_SSIRelogon (ERRLOG_BASE+67) +#define NELOG_Build_Name (ERRLOG_BASE+70) +#define NELOG_Name_Expansion (ERRLOG_BASE+71) +#define NELOG_Message_Send (ERRLOG_BASE+72) +#define NELOG_Mail_Slt_Err (ERRLOG_BASE+73) +#define NELOG_AT_cannot_read (ERRLOG_BASE+74) +#define NELOG_AT_sched_err (ERRLOG_BASE+75) +#define NELOG_AT_schedule_file_created (ERRLOG_BASE+76) +#define NELOG_Srvnet_NB_Open (ERRLOG_BASE+77) +#define NELOG_AT_Exec_Err (ERRLOG_BASE+78) +#define NELOG_Lazy_Write_Err (ERRLOG_BASE+80) +#define NELOG_HotFix (ERRLOG_BASE+81) +#define NELOG_HardErr_From_Server (ERRLOG_BASE+82) +#define NELOG_LocalSecFail1 (ERRLOG_BASE+83) +#define NELOG_LocalSecFail2 (ERRLOG_BASE+84) +#define NELOG_LocalSecFail3 (ERRLOG_BASE+85) +#define NELOG_LocalSecGeneralFail (ERRLOG_BASE+86) +#define NELOG_NetWkSta_Internal_Error (ERRLOG_BASE+90) +#define NELOG_NetWkSta_No_Resource (ERRLOG_BASE+91) +#define NELOG_NetWkSta_SMB_Err (ERRLOG_BASE+92) +#define NELOG_NetWkSta_VC_Err (ERRLOG_BASE+93) +#define NELOG_NetWkSta_Stuck_VC_Err (ERRLOG_BASE+94) +#define NELOG_NetWkSta_NCB_Err (ERRLOG_BASE+95) +#define NELOG_NetWkSta_Write_Behind_Err (ERRLOG_BASE+96) +#define NELOG_NetWkSta_Reset_Err (ERRLOG_BASE+97) +#define NELOG_NetWkSta_Too_Many (ERRLOG_BASE+98) +#define NELOG_Srv_Thread_Failure (ERRLOG_BASE+104) +#define NELOG_Srv_Close_Failure (ERRLOG_BASE+105) +#define NELOG_ReplUserCurDir (ERRLOG_BASE+106) +#define NELOG_ReplCannotMasterDir (ERRLOG_BASE+107) +#define NELOG_ReplUpdateError (ERRLOG_BASE+108) +#define NELOG_ReplLostMaster (ERRLOG_BASE+109) +#define NELOG_NetlogonAuthDCFail (ERRLOG_BASE+110) +#define NELOG_ReplLogonFailed (ERRLOG_BASE+111) +#define NELOG_ReplNetErr (ERRLOG_BASE+112) +#define NELOG_ReplMaxFiles (ERRLOG_BASE+113) +#define NELOG_ReplMaxTreeDepth (ERRLOG_BASE+114) +#define NELOG_ReplBadMsg (ERRLOG_BASE+115) +#define NELOG_ReplSysErr (ERRLOG_BASE+116) +#define NELOG_ReplUserLoged (ERRLOG_BASE+117) +#define NELOG_ReplBadImport (ERRLOG_BASE+118) +#define NELOG_ReplBadExport (ERRLOG_BASE+119) +#define NELOG_ReplSignalFileErr (ERRLOG_BASE+120) +#define NELOG_DiskFT (ERRLOG_BASE+121) +#define NELOG_ReplAccessDenied (ERRLOG_BASE+122) +#define NELOG_NetlogonFailedPrimary (ERRLOG_BASE+123) +#define NELOG_NetlogonPasswdSetFailed (ERRLOG_BASE+124) +#define NELOG_NetlogonTrackingError (ERRLOG_BASE+125) +#define NELOG_NetlogonSyncError (ERRLOG_BASE+126) +#define NELOG_UPS_PowerOut (ERRLOG_BASE+130) +#define NELOG_UPS_Shutdown (ERRLOG_BASE+131) +#define NELOG_UPS_CmdFileError (ERRLOG_BASE+132) +#define NELOG_UPS_CannotOpenDriver (ERRLOG_BASE+133) +#define NELOG_UPS_PowerBack (ERRLOG_BASE+134) +#define NELOG_UPS_CmdFileConfig (ERRLOG_BASE+135) +#define NELOG_UPS_CmdFileExec (ERRLOG_BASE+136) +#define NELOG_Missing_Parameter (ERRLOG_BASE+150) +#define NELOG_Invalid_Config_Line (ERRLOG_BASE+151) +#define NELOG_Invalid_Config_File (ERRLOG_BASE+152) +#define NELOG_File_Changed (ERRLOG_BASE+153) +#define NELOG_Files_Dont_Fit (ERRLOG_BASE+154) +#define NELOG_Wrong_DLL_Version (ERRLOG_BASE+155) +#define NELOG_Error_in_DLL (ERRLOG_BASE+156) +#define NELOG_System_Error (ERRLOG_BASE+157) +#define NELOG_FT_ErrLog_Too_Large (ERRLOG_BASE+158) +#define NELOG_FT_Update_In_Progress (ERRLOG_BASE+159) +#define NELOG_OEM_Code (ERRLOG_BASE+199) +#define NELOG_NetlogonSSIInitError ERRLOG2_BASE +#define NELOG_NetlogonFailedToUpdateTrustList (ERRLOG2_BASE+1) +#define NELOG_NetlogonFailedToAddRpcInterface (ERRLOG2_BASE+2) +#define NELOG_NetlogonFailedToReadMailslot (ERRLOG2_BASE+3) +#define NELOG_NetlogonFailedToRegisterSC (ERRLOG2_BASE+4) +#define NELOG_NetlogonChangeLogCorrupt (ERRLOG2_BASE+5) +#define NELOG_NetlogonFailedToCreateShare (ERRLOG2_BASE+6) +#define NELOG_NetlogonDownLevelLogonFailed (ERRLOG2_BASE+7) +#define NELOG_NetlogonDownLevelLogoffFailed (ERRLOG2_BASE+8) +#define NELOG_NetlogonNTLogonFailed (ERRLOG2_BASE+9) +#define NELOG_NetlogonNTLogoffFailed (ERRLOG2_BASE+10) +#define NELOG_NetlogonPartialSyncCallSuccess (ERRLOG2_BASE+11) +#define NELOG_NetlogonPartialSyncCallFailed (ERRLOG2_BASE+12) +#define NELOG_NetlogonFullSyncCallSuccess (ERRLOG2_BASE+13) +#define NELOG_NetlogonFullSyncCallFailed (ERRLOG2_BASE+14) +#define NELOG_NetlogonPartialSyncSuccess (ERRLOG2_BASE+15) +#define NELOG_NetlogonPartialSyncFailed (ERRLOG2_BASE+16) +#define NELOG_NetlogonFullSyncSuccess (ERRLOG2_BASE+17) +#define NELOG_NetlogonFullSyncFailed (ERRLOG2_BASE+18) +#define NELOG_NetlogonAuthNoDomainController (ERRLOG2_BASE+19) +#define NELOG_NetlogonAuthNoTrustLsaSecret (ERRLOG2_BASE+20) +#define NELOG_NetlogonAuthNoTrustSamAccount (ERRLOG2_BASE+21) +#define NELOG_NetlogonServerAuthFailed (ERRLOG2_BASE+22) +#define NELOG_NetlogonServerAuthNoTrustSamAccount (ERRLOG2_BASE+23) +#define NELOG_FailedToRegisterSC (ERRLOG2_BASE+24) +#define NELOG_FailedToSetServiceStatus (ERRLOG2_BASE+25) +#define NELOG_FailedToGetComputerName (ERRLOG2_BASE+26) +#define NELOG_DriverNotLoaded (ERRLOG2_BASE+27) +#define NELOG_NoTranportLoaded (ERRLOG2_BASE+28) +#define NELOG_NetlogonFailedDomainDelta (ERRLOG2_BASE+29) +#define NELOG_NetlogonFailedGlobalGroupDelta (ERRLOG2_BASE+30) +#define NELOG_NetlogonFailedLocalGroupDelta (ERRLOG2_BASE+31) +#define NELOG_NetlogonFailedUserDelta (ERRLOG2_BASE+32) +#define NELOG_NetlogonFailedPolicyDelta (ERRLOG2_BASE+33) +#define NELOG_NetlogonFailedTrustedDomainDelta (ERRLOG2_BASE+34) +#define NELOG_NetlogonFailedAccountDelta (ERRLOG2_BASE+35) +#define NELOG_NetlogonFailedSecretDelta (ERRLOG2_BASE+36) +#define NELOG_NetlogonSystemError (ERRLOG2_BASE+37) +#define NELOG_NetlogonDuplicateMachineAccounts (ERRLOG2_BASE+38) +#define NELOG_NetlogonTooManyGlobalGroups (ERRLOG2_BASE+39) +#define NELOG_NetlogonBrowserDriver (ERRLOG2_BASE+40) +#define NELOG_NetlogonAddNameFailure (ERRLOG2_BASE+41) +#define NELOG_RplMessages (ERRLOG2_BASE+42) +#define NELOG_RplXnsBoot (ERRLOG2_BASE+43) +#define NELOG_RplSystem (ERRLOG2_BASE+44) +#define NELOG_RplWkstaTimeout (ERRLOG2_BASE+45) +#define NELOG_RplWkstaFileOpen (ERRLOG2_BASE+46) +#define NELOG_RplWkstaFileRead (ERRLOG2_BASE+47) +#define NELOG_RplWkstaMemory (ERRLOG2_BASE+48) +#define NELOG_RplWkstaFileChecksum (ERRLOG2_BASE+49) +#define NELOG_RplWkstaFileLineCount (ERRLOG2_BASE+50) +#define NELOG_RplWkstaBbcFile (ERRLOG2_BASE+51) +#define NELOG_RplWkstaFileSize (ERRLOG2_BASE+52) +#define NELOG_RplWkstaInternal (ERRLOG2_BASE+53) +#define NELOG_RplWkstaWrongVersion (ERRLOG2_BASE+54) +#define NELOG_RplWkstaNetwork (ERRLOG2_BASE+55) +#define NELOG_RplAdapterResource (ERRLOG2_BASE+56) +#define NELOG_RplFileCopy (ERRLOG2_BASE+57) +#define NELOG_RplFileDelete (ERRLOG2_BASE+58) +#define NELOG_RplFilePerms (ERRLOG2_BASE+59) +#define NELOG_RplCheckConfigs (ERRLOG2_BASE+60) +#define NELOG_RplCreateProfiles (ERRLOG2_BASE+61) +#define NELOG_RplRegistry (ERRLOG2_BASE+62) +#define NELOG_RplReplaceRPLDISK (ERRLOG2_BASE+63) +#define NELOG_RplCheckSecurity (ERRLOG2_BASE+64) +#define NELOG_RplBackupDatabase (ERRLOG2_BASE+65) +#define NELOG_RplInitDatabase (ERRLOG2_BASE+66) +#define NELOG_RplRestoreDatabaseFailure (ERRLOG2_BASE+67) +#define NELOG_RplRestoreDatabaseSuccess (ERRLOG2_BASE+68) +#define NELOG_RplInitRestoredDatabase (ERRLOG2_BASE+69) +#define NELOG_NetlogonSessionTypeWrong (ERRLOG2_BASE+70) +#define REVISED_ERROR_LOG_STRUCT +typedef 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; +} ERROR_LOG,*PERROR_LOG,*LPERROR_LOG; +NET_API_STATUS WINAPI NetErrorLogClear(LPCWSTR,LPCWSTR,LPBYTE); +NET_API_STATUS WINAPI NetErrorLogRead(LPCWSTR,LPWSTR,LPHLOG,DWORD,LPDWORD,DWORD,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD); +NET_API_STATUS WINAPI NetErrorLogWrite(LPBYTE,DWORD,LPCWSTR,LPBYTE,DWORD,LPBYTE,DWORD,LPBYTE); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmmsg.h b/reactos/w32api/include/lmmsg.h new file mode 100644 index 00000000000..9a4ea643471 --- /dev/null +++ b/reactos/w32api/include/lmmsg.h @@ -0,0 +1,27 @@ +#ifndef _LMMSG_H +#define _LMMSG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define MSGNAME_NOT_FORWARDED 0 +#define MSGNAME_FORWARDED_TO 4 +#define MSGNAME_FORWARDED_FROM 16 +typedef struct _MSG_INFO_0 { LPWSTR msgi0_name; }MSG_INFO_0,*PMSG_INFO_0,*LPMSG_INFO_0; +typedef struct _MSG_INFO_1 { + LPWSTR msgi1_name; + DWORD msgi1_forward_flag; + LPWSTR msgi1_forward; +}MSG_INFO_1,*PMSG_INFO_1,*LPMSG_INFO_1; +NET_API_STATUS WINAPI NetMessageBufferSend(LPCWSTR,LPCWSTR,LPCWSTR,PBYTE,DWORD); +NET_API_STATUS WINAPI NetMessageNameAdd(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetMessageNameDel(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetMessageNameEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetMessageNameGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmremutl.h b/reactos/w32api/include/lmremutl.h new file mode 100644 index 00000000000..0609240af52 --- /dev/null +++ b/reactos/w32api/include/lmremutl.h @@ -0,0 +1,45 @@ +#ifndef _LMREMUTL_H +#define _LMREMUTL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define SUPPORTS_REMOTE_ADMIN_PROTOCOL 2 +#define SUPPORTS_RPC 4 +#define SUPPORTS_SAM_PROTOCOL 8 +#define SUPPORTS_UNICODE 16 +#define SUPPORTS_LOCAL 32 +#define SUPPORTS_ANY 0xFFFFFFFF +#define NO_PERMISSION_REQUIRED 1 +#define ALLOCATE_RESPONSE 2 +#define USE_SPECIFIC_TRANSPORT 0x80000000 +#ifndef DESC_CHAR_UNICODE +typedef CHAR DESC_CHAR; +#else +typedef WCHAR DESC_CHAR; +#endif +typedef DESC_CHAR *LPDESC; +typedef 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; +} TIME_OF_DAY_INFO,*PTIME_OF_DAY_INFO,*LPTIME_OF_DAY_INFO; +NET_API_STATUS WINAPI NetRemoteTOD(LPCWSTR,PBYTE*); +NET_API_STATUS WINAPI NetRemoteComputerSupports(LPCWSTR,DWORD,PDWORD); +NET_API_STATUS RxRemoteApi(DWORD,LPCWSTR,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,DWORD,... ); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmrepl.h b/reactos/w32api/include/lmrepl.h new file mode 100644 index 00000000000..0cef98ce93f --- /dev/null +++ b/reactos/w32api/include/lmrepl.h @@ -0,0 +1,94 @@ +#ifndef _LMREPL_H +#define _LMREPL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define REPL_ROLE_EXPORT 1 +#define REPL_ROLE_IMPORT 2 +#define REPL_ROLE_BOTH 3 +#define REPL_INTERVAL_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+0) +#define REPL_PULSE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+1) +#define REPL_GUARDTIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+2) +#define REPL_RANDOM_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+3) +#define REPL_UNLOCK_NOFORCE 0 +#define REPL_UNLOCK_FORCE 1 +#define REPL_STATE_OK 0 +#define REPL_STATE_NO_MASTER 1 +#define REPL_STATE_NO_SYNC 2 +#define REPL_STATE_NEVER_REPLICATED 3 +#define REPL_INTEGRITY_FILE 1 +#define REPL_INTEGRITY_TREE 2 +#define REPL_EXTENT_FILE 1 +#define REPL_EXTENT_TREE 2 +#define REPL_EXPORT_INTEGRITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+0) +#define REPL_EXPORT_EXTENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+1) +typedef 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; +} REPL_INFO_0,*PREPL_INFO_0,*LPREPL_INFO_0; +typedef struct _REPL_INFO_1000 { DWORD rp1000_interval; } REPL_INFO_1000,*PREPL_INFO_1000,*LPREPL_INFO_1000; +typedef struct _REPL_INFO_1001 { DWORD rp1001_pulse; } REPL_INFO_1001,*PREPL_INFO_1001,*LPREPL_INFO_1001; +typedef struct _REPL_INFO_1002 { DWORD rp1002_guardtime; } REPL_INFO_1002,*PREPL_INFO_1002,*LPREPL_INFO_1002; +typedef struct _REPL_INFO_1003 { DWORD rp1003_random; } REPL_INFO_1003,*PREPL_INFO_1003,*LPREPL_INFO_1003; + +NET_API_STATUS WINAPI NetReplGetInfo(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD); +typedef struct _REPL_EDIR_INFO_0 { + LPWSTR rped0_dirname; +} REPL_EDIR_INFO_0,*PREPL_EDIR_INFO_0,*LPREPL_EDIR_INFO_0; +typedef struct _REPL_EDIR_INFO_1 { + LPWSTR rped1_dirname; + DWORD rped1_integrity; + DWORD rped1_extent; +} REPL_EDIR_INFO_1,*PREPL_EDIR_INFO_1,*LPREPL_EDIR_INFO_1; +typedef struct _REPL_EDIR_INFO_2 { + LPWSTR rped2_dirname; + DWORD rped2_integrity; + DWORD rped2_extent; + DWORD rped2_lockcount; + DWORD rped2_locktime; +} REPL_EDIR_INFO_2,*PREPL_EDIR_INFO_2,*LPREPL_EDIR_INFO_2; +typedef struct _REPL_EDIR_INFO_1000 { + DWORD rped1000_integrity; +} REPL_EDIR_INFO_1000,*PREPL_EDIR_INFO_1000,*LPREPL_EDIR_INFO_1000; +typedef struct _REPL_EDIR_INFO_1001 { + DWORD rped1001_extent; +} REPL_EDIR_INFO_1001,*PREPL_EDIR_INFO_1001,*LPREPL_EDIR_INFO_1001; +typedef struct _REPL_IDIR_INFO_0 { LPWSTR rpid0_dirname; } REPL_IDIR_INFO_0,*PREPL_IDIR_INFO_0,*LPREPL_IDIR_INFO_0; +typedef 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; +} REPL_IDIR_INFO_1,*PREPL_IDIR_INFO_1,*LPREPL_IDIR_INFO_1; +NET_API_STATUS WINAPI NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetReplExportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetReplExportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +NET_API_STATUS WINAPI NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetReplImportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetReplImportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmserver.h b/reactos/w32api/include/lmserver.h new file mode 100644 index 00000000000..71197143028 --- /dev/null +++ b/reactos/w32api/include/lmserver.h @@ -0,0 +1,606 @@ +#ifndef _LMSERVER_H +#define _LMSERVER_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +typedef struct _SERVER_INFO_100 { +DWORD sv100_platform_id; +LPWSTR sv100_name; +} SERVER_INFO_100,*PSERVER_INFO_100,*LPSERVER_INFO_100; +typedef 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; +} SERVER_INFO_101,*PSERVER_INFO_101,*LPSERVER_INFO_101; +typedef 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; +} SERVER_INFO_102,*PSERVER_INFO_102,*LPSERVER_INFO_102; +typedef 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; +} SERVER_INFO_402,*PSERVER_INFO_402,*LPSERVER_INFO_402; +typedef 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; +} SERVER_INFO_403,*PSERVER_INFO_403,*LPSERVER_INFO_403; +typedef 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; +} SERVER_INFO_502,*PSERVER_INFO_502,*LPSERVER_INFO_502; +typedef 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; +} SERVER_INFO_503,*PSERVER_INFO_503,*LPSERVER_INFO_503; +typedef 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; +} SERVER_INFO_599,*PSERVER_INFO_599,*LPSERVER_INFO_599; +typedef 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; +} SERVER_INFO_598,*PSERVER_INFO_598,*LPSERVER_INFO_598; +typedef struct _SERVER_INFO_1005 {LPWSTR sv1005_comment; } SERVER_INFO_1005,*PSERVER_INFO_1005,*LPSERVER_INFO_1005; +typedef struct _SERVER_INFO_1107 { DWORD sv1107_users; } SERVER_INFO_1107,*PSERVER_INFO_1107,*LPSERVER_INFO_1107; +typedef struct _SERVER_INFO_1010 { LONG sv1010_disc; } SERVER_INFO_1010,*PSERVER_INFO_1010,*LPSERVER_INFO_1010; +typedef struct _SERVER_INFO_1016 { BOOL sv1016_hidden; } SERVER_INFO_1016,*PSERVER_INFO_1016,*LPSERVER_INFO_1016; +typedef struct _SERVER_INFO_1017 { DWORD sv1017_announce; } SERVER_INFO_1017,*PSERVER_INFO_1017,*LPSERVER_INFO_1017; +typedef struct _SERVER_INFO_1018 { DWORD sv1018_anndelta; } SERVER_INFO_1018,*PSERVER_INFO_1018,*LPSERVER_INFO_1018; +typedef struct _SERVER_INFO_1501 { DWORD sv1501_sessopens; } SERVER_INFO_1501,*PSERVER_INFO_1501,*LPSERVER_INFO_1501; +typedef struct _SERVER_INFO_1502 { DWORD sv1502_sessvcs; } SERVER_INFO_1502,*PSERVER_INFO_1502,*LPSERVER_INFO_1502; +typedef struct _SERVER_INFO_1503 { DWORD sv1503_opensearch; } SERVER_INFO_1503,*PSERVER_INFO_1503,*LPSERVER_INFO_1503; +typedef struct _SERVER_INFO_1506 { DWORD sv1506_maxworkitems; } SERVER_INFO_1506,*PSERVER_INFO_1506,*LPSERVER_INFO_1506; +typedef struct _SERVER_INFO_1509 { DWORD sv1509_maxrawbuflen; } SERVER_INFO_1509,*PSERVER_INFO_1509,*LPSERVER_INFO_1509; +typedef struct _SERVER_INFO_1510 { DWORD sv1510_sessusers; } SERVER_INFO_1510,*PSERVER_INFO_1510,*LPSERVER_INFO_1510; +typedef struct _SERVER_INFO_1511 { DWORD sv1511_sessconns; } SERVER_INFO_1511,*PSERVER_INFO_1511,*LPSERVER_INFO_1511; +typedef struct _SERVER_INFO_1512 { DWORD sv1512_maxnonpagedmemoryusage; } SERVER_INFO_1512,*PSERVER_INFO_1512,*LPSERVER_INFO_1512; +typedef struct _SERVER_INFO_1513 { DWORD sv1513_maxpagedmemoryusage; } SERVER_INFO_1513,*PSERVER_INFO_1513,*LPSERVER_INFO_1513; +typedef struct _SERVER_INFO_1514 { BOOL sv1514_enablesoftcompat; } SERVER_INFO_1514,*PSERVER_INFO_1514,*LPSERVER_INFO_1514; +typedef struct _SERVER_INFO_1515 { BOOL sv1515_enableforcedlogoff; } SERVER_INFO_1515,*PSERVER_INFO_1515,*LPSERVER_INFO_1515; +typedef struct _SERVER_INFO_1516 { BOOL sv1516_timesource; } SERVER_INFO_1516,*PSERVER_INFO_1516,*LPSERVER_INFO_1516; +typedef struct _SERVER_INFO_1518 { BOOL sv1518_lmannounce; } SERVER_INFO_1518,*PSERVER_INFO_1518,*LPSERVER_INFO_1518; +typedef struct _SERVER_INFO_1520 { DWORD sv1520_maxcopyreadlen; } SERVER_INFO_1520,*PSERVER_INFO_1520,*LPSERVER_INFO_1520; +typedef struct _SERVER_INFO_1521 { DWORD sv1521_maxcopywritelen; } SERVER_INFO_1521,*PSERVER_INFO_1521,*LPSERVER_INFO_1521; +typedef struct _SERVER_INFO_1522 { DWORD sv1522_minkeepsearch; } SERVER_INFO_1522,*PSERVER_INFO_1522,*LPSERVER_INFO_1522; +typedef struct _SERVER_INFO_1523 { DWORD sv1523_maxkeepsearch; } SERVER_INFO_1523,*PSERVER_INFO_1523,*LPSERVER_INFO_1523; +typedef struct _SERVER_INFO_1524 { DWORD sv1524_minkeepcomplsearch; } SERVER_INFO_1524,*PSERVER_INFO_1524,*LPSERVER_INFO_1524; +typedef struct _SERVER_INFO_1525 { DWORD sv1525_maxkeepcomplsearch; } SERVER_INFO_1525,*PSERVER_INFO_1525,*LPSERVER_INFO_1525; +typedef struct _SERVER_INFO_1528 { DWORD sv1528_scavtimeout; } SERVER_INFO_1528,*PSERVER_INFO_1528,*LPSERVER_INFO_1528; +typedef struct _SERVER_INFO_1529 { DWORD sv1529_minrcvqueue; } SERVER_INFO_1529,*PSERVER_INFO_1529,*LPSERVER_INFO_1529; +typedef struct _SERVER_INFO_1530 { DWORD sv1530_minfreeworkitems; } SERVER_INFO_1530,*PSERVER_INFO_1530,*LPSERVER_INFO_1530; +typedef struct _SERVER_INFO_1533 { DWORD sv1533_maxmpxct; } SERVER_INFO_1533,*PSERVER_INFO_1533,*LPSERVER_INFO_1533; +typedef struct _SERVER_INFO_1534 { DWORD sv1534_oplockbreakwait; } SERVER_INFO_1534,*PSERVER_INFO_1534,*LPSERVER_INFO_1534; +typedef struct _SERVER_INFO_1535 { DWORD sv1535_oplockbreakresponsewait; } SERVER_INFO_1535,*PSERVER_INFO_1535,*LPSERVER_INFO_1535; +typedef struct _SERVER_INFO_1536 { BOOL sv1536_enableoplocks; } SERVER_INFO_1536,*PSERVER_INFO_1536,*LPSERVER_INFO_1536; +typedef struct _SERVER_INFO_1537 { BOOL sv1537_enableoplockforceclose; } SERVER_INFO_1537,*PSERVER_INFO_1537,*LPSERVER_INFO_1537; +typedef struct _SERVER_INFO_1538 { BOOL sv1538_enablefcbopens; } SERVER_INFO_1538,*PSERVER_INFO_1538,*LPSERVER_INFO_1538; +typedef struct _SERVER_INFO_1539 { BOOL sv1539_enableraw; } SERVER_INFO_1539,*PSERVER_INFO_1539,*LPSERVER_INFO_1539; +typedef struct _SERVER_INFO_1540 { BOOL sv1540_enablesharednetdrives; } SERVER_INFO_1540,*PSERVER_INFO_1540,*LPSERVER_INFO_1540; +typedef struct _SERVER_INFO_1541 { BOOL sv1541_minfreeconnections; } SERVER_INFO_1541,*PSERVER_INFO_1541,*LPSERVER_INFO_1541; +typedef struct _SERVER_INFO_1542 { BOOL sv1542_maxfreeconnections; } SERVER_INFO_1542,*PSERVER_INFO_1542,*LPSERVER_INFO_1542; +typedef struct _SERVER_INFO_1543 { DWORD sv1543_initsesstable; } SERVER_INFO_1543,*PSERVER_INFO_1543,*LPSERVER_INFO_1543; +typedef struct _SERVER_INFO_1544 { DWORD sv1544_initconntable; } SERVER_INFO_1544,*PSERVER_INFO_1544,*LPSERVER_INFO_1544; +typedef struct _SERVER_INFO_1545 { DWORD sv1545_initfiletable; } SERVER_INFO_1545,*PSERVER_INFO_1545,*LPSERVER_INFO_1545; +typedef struct _SERVER_INFO_1546 { DWORD sv1546_initsearchtable; } SERVER_INFO_1546,*PSERVER_INFO_1546,*LPSERVER_INFO_1546; +typedef struct _SERVER_INFO_1547 { DWORD sv1547_alertschedule; } SERVER_INFO_1547,*PSERVER_INFO_1547,*LPSERVER_INFO_1547; +typedef struct _SERVER_INFO_1548 { DWORD sv1548_errorthreshold; } SERVER_INFO_1548,*PSERVER_INFO_1548,*LPSERVER_INFO_1548; +typedef struct _SERVER_INFO_1549 { DWORD sv1549_networkerrorthreshold; } SERVER_INFO_1549,*PSERVER_INFO_1549,*LPSERVER_INFO_1549; +typedef struct _SERVER_INFO_1550 { DWORD sv1550_diskspacethreshold; } SERVER_INFO_1550,*PSERVER_INFO_1550,*LPSERVER_INFO_1550; +typedef struct _SERVER_INFO_1552 { DWORD sv1552_maxlinkdelay; } SERVER_INFO_1552,*PSERVER_INFO_1552,*LPSERVER_INFO_1552; +typedef struct _SERVER_INFO_1553 { DWORD sv1553_minlinkthroughput; } SERVER_INFO_1553,*PSERVER_INFO_1553,*LPSERVER_INFO_1553; +typedef struct _SERVER_INFO_1554 { DWORD sv1554_linkinfovalidtime; } SERVER_INFO_1554,*PSERVER_INFO_1554,*LPSERVER_INFO_1554; +typedef struct _SERVER_INFO_1555 { DWORD sv1555_scavqosinfoupdatetime; } SERVER_INFO_1555,*PSERVER_INFO_1555,*LPSERVER_INFO_1555; +typedef struct _SERVER_INFO_1556 { DWORD sv1556_maxworkitemidletime; } SERVER_INFO_1556,*PSERVER_INFO_1556,*LPSERVER_INFO_1556; +typedef struct _SERVER_INFO_1557 { DWORD sv1557_maxrawworkitems; } SERVER_INFO_1557,*PSERVER_INFO_1557,*LPSERVER_INFO_1557; +typedef struct _SERVER_INFO_1560 { DWORD sv1560_producttype; } SERVER_INFO_1560,*PSERVER_INFO_1560,*LPSERVER_INFO_1560; +typedef struct _SERVER_INFO_1561 { DWORD sv1561_serversize; } SERVER_INFO_1561,*PSERVER_INFO_1561,*LPSERVER_INFO_1561; +typedef struct _SERVER_INFO_1562 { DWORD sv1562_connectionlessautodisc; } SERVER_INFO_1562,*PSERVER_INFO_1562,*LPSERVER_INFO_1562; +typedef struct _SERVER_INFO_1563 { DWORD sv1563_sharingviolationretries; } SERVER_INFO_1563,*PSERVER_INFO_1563,*LPSERVER_INFO_1563; +typedef struct _SERVER_INFO_1564 { DWORD sv1564_sharingviolationdelay; } SERVER_INFO_1564,*PSERVER_INFO_1564,*LPSERVER_INFO_1564; +typedef struct _SERVER_INFO_1565 { DWORD sv1565_maxglobalopensearch; } SERVER_INFO_1565,*PSERVER_INFO_1565,*LPSERVER_INFO_1565; +typedef struct _SERVER_INFO_1566 { BOOL sv1566_removeduplicatesearches; } SERVER_INFO_1566,*PSERVER_INFO_1566,*LPSERVER_INFO_1566; +typedef struct _SERVER_INFO_1567 { DWORD sv1567_lockviolationretries; } SERVER_INFO_1567,*PSERVER_INFO_1567,*LPSERVER_INFO_1567; +typedef struct _SERVER_INFO_1568 { DWORD sv1568_lockviolationoffset; } SERVER_INFO_1568,*PSERVER_INFO_1568,*LPSERVER_INFO_1568; +typedef struct _SERVER_INFO_1569 { DWORD sv1569_lockviolationdelay; } SERVER_INFO_1569,*PSERVER_INFO_1569,*LPSERVER_INFO_1569; +typedef struct _SERVER_INFO_1570 { DWORD sv1570_mdlreadswitchover; } SERVER_INFO_1570,*PSERVER_INFO_1570,*LPSERVER_INFO_1570; +typedef struct _SERVER_INFO_1571 { DWORD sv1571_cachedopenlimit; } SERVER_INFO_1571,*PSERVER_INFO_1571,*LPSERVER_INFO_1571; +typedef struct _SERVER_INFO_1572 { DWORD sv1572_criticalthreads; } SERVER_INFO_1572,*PSERVER_INFO_1572,*LPSERVER_INFO_1572; +typedef struct _SERVER_INFO_1573 { DWORD sv1573_restrictnullsessaccess; } SERVER_INFO_1573,*PSERVER_INFO_1573,*LPSERVER_INFO_1573; +typedef struct _SERVER_INFO_1574 { DWORD sv1574_enablewfw311directipx;} SERVER_INFO_1574,*PSERVER_INFO_1574,*LPSERVER_INFO_1574; +typedef struct _SERVER_INFO_1575 { DWORD sv1575_otherqueueaffinity; } SERVER_INFO_1575,*PSERVER_INFO_1575,*LPSERVER_INFO_1575; +typedef struct _SERVER_INFO_1576 { DWORD sv1576_queuesamplesecs; } SERVER_INFO_1576,*PSERVER_INFO_1576,*LPSERVER_INFO_1576; +typedef struct _SERVER_INFO_1577 { DWORD sv1577_balancecount; } SERVER_INFO_1577,*PSERVER_INFO_1577,*LPSERVER_INFO_1577; +typedef struct _SERVER_INFO_1578 { DWORD sv1578_preferredaffinity; } SERVER_INFO_1578,*PSERVER_INFO_1578,*LPSERVER_INFO_1578; +typedef struct _SERVER_INFO_1579 { DWORD sv1579_maxfreerfcbs; } SERVER_INFO_1579,*PSERVER_INFO_1579,*LPSERVER_INFO_1579; +typedef struct _SERVER_INFO_1580 { DWORD sv1580_maxfreemfcbs; } SERVER_INFO_1580,*PSERVER_INFO_1580,*LPSERVER_INFO_1580; +typedef struct _SERVER_INFO_1581 { DWORD sv1581_maxfreemlcbs; } SERVER_INFO_1581,*PSERVER_INFO_1581,*LPSERVER_INFO_1581; +typedef struct _SERVER_INFO_1582 { DWORD sv1582_maxfreepagedpoolchunks; } SERVER_INFO_1582,*PSERVER_INFO_1582,*LPSERVER_INFO_1582; +typedef struct _SERVER_INFO_1583 { DWORD sv1583_minpagedpoolchunksize; } SERVER_INFO_1583,*PSERVER_INFO_1583,*LPSERVER_INFO_1583; +typedef struct _SERVER_INFO_1584 { DWORD sv1584_maxpagedpoolchunksize; } SERVER_INFO_1584,*PSERVER_INFO_1584,*LPSERVER_INFO_1584; +typedef struct _SERVER_INFO_1585 { BOOL sv1585_sendsfrompreferredprocessor; } SERVER_INFO_1585,*PSERVER_INFO_1585,*LPSERVER_INFO_1585; +typedef struct _SERVER_INFO_1586 { BOOL sv1586_maxthreadsperqueue; } SERVER_INFO_1586,*PSERVER_INFO_1586,*LPSERVER_INFO_1586; +typedef struct _SERVER_TRANSPORT_INFO_0 { +DWORD svti0_numberofvcs; +LPWSTR svti0_transportname; +PBYTE svti0_transportaddress; +DWORD svti0_transportaddresslength; +LPWSTR svti0_networkaddress; +} SERVER_TRANSPORT_INFO_0,*PSERVER_TRANSPORT_INFO_0,*LPSERVER_TRANSPORT_INFO_0; + +NET_API_STATUS WINAPI NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS WINAPI NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR); +NET_API_STATUS WINAPI NetServerGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetServerSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPWSTR*); +NET_API_STATUS WINAPI NetServerDiskEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS WINAPI NetServerComputerNameDel(LPWSTR,LPWSTR); +NET_API_STATUS WINAPI NetServerTransportAdd(LPWSTR,DWORD,PBYTE); +NET_API_STATUS WINAPI NetServerTransportAddEx(LPWSTR,DWORD,PBYTE); +NET_API_STATUS WINAPI NetServerTransportDel(LPWSTR,DWORD,PBYTE); +NET_API_STATUS WINAPI NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL); + +#define SVI1_NUM_ELEMENTS 5 +#define SVI2_NUM_ELEMENTS 40 +#define SVI3_NUM_ELEMENTS 44 +#define SV_MAX_CMD_LEN PATHLEN +#define SW_AUTOPROF_LOAD_MASK 1 +#define SW_AUTOPROF_SAVE_MASK 2 +#define SV_MAX_SRV_HEUR_LEN 32 +#define SV_USERS_PER_LICENSE 5 +#define SV_PLATFORM_ID_OS2 400 +#define SV_PLATFORM_ID_NT 500 +#define MAJOR_VERSION_MASK 15 +#define SV_TYPE_WORKSTATION 1 +#define SV_TYPE_SERVER 2 +#define SV_TYPE_SQLSERVER 4 +#define SV_TYPE_DOMAIN_CTRL 8 +#define SV_TYPE_DOMAIN_BAKCTRL 16 +#define SV_TYPE_TIME_SOURCE 32 +#define SV_TYPE_AFP 64 +#define SV_TYPE_NOVELL 128 +#define SV_TYPE_DOMAIN_MEMBER 256 +#define SV_TYPE_PRINTQ_SERVER 512 +#define SV_TYPE_DIALIN_SERVER 1024 +#define SV_TYPE_XENIX_SERVER 2048 +#define SV_TYPE_SERVER_UNIX SV_TYPE_XENIX_SERVER +#define SV_TYPE_NT 4096 +#define SV_TYPE_WFW 8192 +#define SV_TYPE_SERVER_MFPN 16384 +#define SV_TYPE_SERVER_NT 32768 +#define SV_TYPE_POTENTIAL_BROWSER 65536 +#define SV_TYPE_BACKUP_BROWSER 0x20000 +#define SV_TYPE_MASTER_BROWSER 0x40000 +#define SV_TYPE_DOMAIN_MASTER 0x80000 +#define SV_TYPE_SERVER_OSF 0x100000 +#define SV_TYPE_SERVER_VMS 0x200000 +#define SV_TYPE_WINDOWS 0x400000 +#define SV_TYPE_ALTERNATE_XPORT 0x20000000 +#define SV_TYPE_LOCAL_LIST_ONLY 0x40000000 +#define SV_TYPE_DOMAIN_ENUM 0x80000000 +#define SV_TYPE_ALL 0xFFFFFFFF +#define SV_NODISC (-1) +#define SV_USERSECURITY 1 +#define SV_SHARESECURITY 0 +#define SV_HIDDEN 1 +#define SV_VISIBLE 0 +#define SV_PLATFORM_ID_PARMNUM 101 +#define SV_NAME_PARMNUM 102 +#define SV_VERSION_MAJOR_PARMNUM 103 +#define SV_VERSION_MINOR_PARMNUM 104 +#define SV_TYPE_PARMNUM 105 +#define SV_COMMENT_PARMNUM 5 +#define SV_USERS_PARMNUM 107 +#define SV_DISC_PARMNUM 10 +#define SV_HIDDEN_PARMNUM 16 +#define SV_ANNOUNCE_PARMNUM 17 +#define SV_ANNDELTA_PARMNUM 18 +#define SV_USERPATH_PARMNUM 112 +#define SV_ULIST_MTIME_PARMNUM 401 +#define SV_GLIST_MTIME_PARMNUM 402 +#define SV_ALIST_MTIME_PARMNUM 403 +#define SV_ALERTS_PARMNUM 11 +#define SV_SECURITY_PARMNUM 405 +#define SV_NUMADMIN_PARMNUM 406 +#define SV_LANMASK_PARMNUM 407 +#define SV_GUESTACC_PARMNUM 408 +#define SV_CHDEVQ_PARMNUM 410 +#define SV_CHDEVJOBS_PARMNUM 411 +#define SV_CONNECTIONS_PARMNUM 412 +#define SV_SHARES_PARMNUM 413 +#define SV_OPENFILES_PARMNUM 414 +#define SV_SESSREQS_PARMNUM 417 +#define SV_ACTIVELOCKS_PARMNUM 419 +#define SV_NUMREQBUF_PARMNUM 420 +#define SV_NUMBIGBUF_PARMNUM 422 +#define SV_NUMFILETASKS_PARMNUM 423 +#define SV_ALERTSCHED_PARMNUM 37 +#define SV_ERRORALERT_PARMNUM 38 +#define SV_LOGONALERT_PARMNUM 39 +#define SV_ACCESSALERT_PARMNUM 40 +#define SV_DISKALERT_PARMNUM 41 +#define SV_NETIOALERT_PARMNUM 42 +#define SV_MAXAUDITSZ_PARMNUM 43 +#define SV_SRVHEURISTICS_PARMNUM 431 +#define SV_SESSOPENS_PARMNUM 501 +#define SV_SESSVCS_PARMNUM 502 +#define SV_OPENSEARCH_PARMNUM 503 +#define SV_SIZREQBUF_PARMNUM 504 +#define SV_INITWORKITEMS_PARMNUM 505 +#define SV_MAXWORKITEMS_PARMNUM 506 +#define SV_RAWWORKITEMS_PARMNUM 507 +#define SV_IRPSTACKSIZE_PARMNUM 508 +#define SV_MAXRAWBUFLEN_PARMNUM 509 +#define SV_SESSUSERS_PARMNUM 510 +#define SV_SESSCONNS_PARMNUM 511 +#define SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM 512 +#define SV_MAXPAGEDMEMORYUSAGE_PARMNUM 513 +#define SV_ENABLESOFTCOMPAT_PARMNUM 514 +#define SV_ENABLEFORCEDLOGOFF_PARMNUM 515 +#define SV_TIMESOURCE_PARMNUM 516 +#define SV_ACCEPTDOWNLEVELAPIS_PARMNUM 517 +#define SV_LMANNOUNCE_PARMNUM 518 +#define SV_DOMAIN_PARMNUM 519 +#define SV_MAXCOPYREADLEN_PARMNUM 520 +#define SV_MAXCOPYWRITELEN_PARMNUM 521 +#define SV_MINKEEPSEARCH_PARMNUM 522 +#define SV_MAXKEEPSEARCH_PARMNUM 523 +#define SV_MINKEEPCOMPLSEARCH_PARMNUM 524 +#define SV_MAXKEEPCOMPLSEARCH_PARMNUM 525 +#define SV_THREADCOUNTADD_PARMNUM 526 +#define SV_NUMBLOCKTHREADS_PARMNUM 527 +#define SV_SCAVTIMEOUT_PARMNUM 528 +#define SV_MINRCVQUEUE_PARMNUM 529 +#define SV_MINFREEWORKITEMS_PARMNUM 530 +#define SV_XACTMEMSIZE_PARMNUM 531 +#define SV_THREADPRIORITY_PARMNUM 532 +#define SV_MAXMPXCT_PARMNUM 533 +#define SV_OPLOCKBREAKWAIT_PARMNUM 534 +#define SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM 535 +#define SV_ENABLEOPLOCKS_PARMNUM 536 +#define SV_ENABLEOPLOCKFORCECLOSE_PARMNUM 537 +#define SV_ENABLEFCBOPENS_PARMNUM 538 +#define SV_ENABLERAW_PARMNUM 539 +#define SV_ENABLESHAREDNETDRIVES_PARMNUM 540 +#define SV_MINFREECONNECTIONS_PARMNUM 541 +#define SV_MAXFREECONNECTIONS_PARMNUM 542 +#define SV_INITSESSTABLE_PARMNUM 543 +#define SV_INITCONNTABLE_PARMNUM 544 +#define SV_INITFILETABLE_PARMNUM 545 +#define SV_INITSEARCHTABLE_PARMNUM 546 +#define SV_ALERTSCHEDULE_PARMNUM 547 +#define SV_ERRORTHRESHOLD_PARMNUM 548 +#define SV_NETWORKERRORTHRESHOLD_PARMNUM 549 +#define SV_DISKSPACETHRESHOLD_PARMNUM 550 +#define SV_MAXLINKDELAY_PARMNUM 552 +#define SV_MINLINKTHROUGHPUT_PARMNUM 553 +#define SV_LINKINFOVALIDTIME_PARMNUM 554 +#define SV_SCAVQOSINFOUPDATETIME_PARMNUM 555 +#define SV_MAXWORKITEMIDLETIME_PARMNUM 556 +#define SV_MAXRAWWORKITEMS_PARMNUM 557 +#define SV_PRODUCTTYPE_PARMNUM 560 +#define SV_SERVERSIZE_PARMNUM 561 +#define SV_CONNECTIONLESSAUTODISC_PARMNUM 562 +#define SV_SHARINGVIOLATIONRETRIES_PARMNUM 563 +#define SV_SHARINGVIOLATIONDELAY_PARMNUM 564 +#define SV_MAXGLOBALOPENSEARCH_PARMNUM 565 +#define SV_REMOVEDUPLICATESEARCHES_PARMNUM 566 +#define SV_LOCKVIOLATIONRETRIES_PARMNUM 567 +#define SV_LOCKVIOLATIONOFFSET_PARMNUM 568 +#define SV_LOCKVIOLATIONDELAY_PARMNUM 569 +#define SV_MDLREADSWITCHOVER_PARMNUM 570 +#define SV_CACHEDOPENLIMIT_PARMNUM 571 +#define SV_CRITICALTHREADS_PARMNUM 572 +#define SV_RESTRICTNULLSESSACCESS_PARMNUM 573 +#define SV_ENABLEWFW311DIRECTIPX_PARMNUM 574 +#define SV_OTHERQUEUEAFFINITY_PARMNUM 575 +#define SV_QUEUESAMPLESECS_PARMNUM 576 +#define SV_BALANCECOUNT_PARMNUM 577 +#define SV_PREFERREDAFFINITY_PARMNUM 578 +#define SV_MAXFREERFCBS_PARMNUM 579 +#define SV_MAXFREEMFCBS_PARMNUM 580 +#define SV_MAXFREELFCBS_PARMNUM 581 +#define SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM 582 +#define SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM 583 +#define SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM 584 +#define SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM 585 +#define SV_MAXTHREADSPERQUEUE_PARMNUM 586 +#define SV_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM) +#define SV_USERS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM) +#define SV_DISC_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM) +#define SV_HIDDEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM) +#define SV_ANNOUNCE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM) +#define SV_ANNDELTA_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM) +#define SV_SESSOPENS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM) +#define SV_SESSVCS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM) +#define SV_OPENSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM) +#define SV_MAXWORKITEMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM) +#define SV_MAXRAWBUFLEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM) +#define SV_SESSUSERS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM) +#define SV_SESSCONNS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM) +#define SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM) +#define SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM) +#define SV_ENABLESOFTCOMPAT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM) +#define SV_ENABLEFORCEDLOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM) +#define SV_TIMESOURCE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM) +#define SV_LMANNOUNCE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM) +#define SV_MAXCOPYREADLEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM) +#define SV_MAXCOPYWRITELEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM) +#define SV_MINKEEPSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM) +#define SV_MAXKEEPSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM) +#define SV_MINKEEPCOMPLSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM) +#define SV_MAXKEEPCOMPLSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM) +#define SV_SCAVTIMEOUT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM) +#define SV_MINRCVQUEUE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM) +#define SV_MINFREEWORKITEMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM) +#define SV_MAXMPXCT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM) +#define SV_OPLOCKBREAKWAIT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM) +#define SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM) +#define SV_ENABLEOPLOCKS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM) +#define SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM) +#define SV_ENABLEFCBOPENS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM) +#define SV_ENABLERAW_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM) +#define SV_ENABLESHAREDNETDRIVES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM) +#define SV_MINFREECONNECTIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM) +#define SV_MAXFREECONNECTIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM) +#define SV_INITSESSTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM) +#define SV_INITCONNTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM) +#define SV_INITFILETABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM) +#define SV_INITSEARCHTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM) +#define SV_ALERTSCHEDULE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM) +#define SV_ERRORTHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM) +#define SV_NETWORKERRORTHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM) +#define SV_DISKSPACETHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM) +#define SV_MAXLINKDELAY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM) +#define SV_MINLINKTHROUGHPUT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM) +#define SV_LINKINFOVALIDTIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM) +#define SV_SCAVQOSINFOUPDATETIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM) +#define SV_MAXWORKITEMIDLETIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM) +#define SV_MAXRAWWORKITEMS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM) +#define SV_PRODUCTTYPE_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM) +#define SV_SERVERSIZE_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM) +#define SV_CONNECTIONLESSAUTODISC_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM) +#define SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM) +#define SV_SHARINGVIOLATIONDELAY_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM) +#define SV_MAXGLOBALOPENSEARCH_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM) +#define SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM) +#define SV_LOCKVIOLATIONRETRIES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM) +#define SV_LOCKVIOLATIONOFFSET_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM) +#define SV_LOCKVIOLATIONDELAY_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM) +#define SV_MDLREADSWITCHOVER_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM) +#define SV_CACHEDOPENLIMIT_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM) +#define SV_CRITICALTHREADS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM) +#define SV_RESTRICTNULLSESSACCESS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM) +#define SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM) +#define SV_OTHERQUEUEAFFINITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM) +#define SV_QUEUESAMPLESECS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM) +#define SV_BALANCECOUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM) +#define SV_PREFERREDAFFINITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM) +#define SV_MAXFREERFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM) +#define SV_MAXFREEMFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM) +#define SV_MAXFREELFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM) +#define SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM) +#define SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM) +#define SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM) +#define SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM) +#define SV_MAXTHREADSPERQUEUE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM) +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmshare.h b/reactos/w32api/include/lmshare.h new file mode 100644 index 00000000000..07fe9270bd5 --- /dev/null +++ b/reactos/w32api/include/lmshare.h @@ -0,0 +1,147 @@ +#ifndef _LMSHARE_H +#define _LMSHARE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include +#define SHARE_NETNAME_PARMNUM 1 +#define SHARE_TYPE_PARMNUM 3 +#define SHARE_REMARK_PARMNUM 4 +#define SHARE_PERMISSIONS_PARMNUM 5 +#define SHARE_MAX_USES_PARMNUM 6 +#define SHARE_CURRENT_USES_PARMNUM 7 +#define SHARE_PATH_PARMNUM 8 +#define SHARE_PASSWD_PARMNUM 9 +#define SHARE_FILE_SD_PARMNUM 501 +#define SHARE_REMARK_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_REMARK_PARMNUM) +#define SHARE_MAX_USES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_MAX_USES_PARMNUM) +#define SHARE_FILE_SD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_FILE_SD_PARMNUM) +#define SHI1_NUM_ELEMENTS 4 +#define SHI2_NUM_ELEMENTS 10 +#define STYPE_DISKTREE 0 +#define STYPE_PRINTQ 1 +#define STYPE_DEVICE 2 +#define STYPE_IPC 3 +#define STYPE_DFS 100 +#define STYPE_SPECIAL 0x80000000 +#define SHI_USES_UNLIMITED (DWORD)(-1) +#define SESS_GUEST 1 +#define SESS_NOENCRYPTION 2 +#define SESI1_NUM_ELEMENTS 8 +#define SESI2_NUM_ELEMENTS 9 +#define PERM_FILE_READ 1 +#define PERM_FILE_WRITE 2 +#define PERM_FILE_CREATE 4 +typedef struct _FILE_INFO_2 { DWORD fi2_id;} FILE_INFO_2,*PFILE_INFO_2,*LPFILE_INFO_2; +typedef struct _FILE_INFO_3 { + DWORD fi3_id; + DWORD fi3_permissions; + DWORD fi3_num_locks; + LPTSTR fi3_pathname; + LPTSTR fi3_username; +} FILE_INFO_3,*PFILE_INFO_3,*LPFILE_INFO_3; +typedef struct _SHARE_INFO_0 { LPTSTR shi0_netname; } SHARE_INFO_0,*PSHARE_INFO_0,*LPSHARE_INFO_0; +typedef struct _SHARE_INFO_1 { + LPTSTR shi1_netname; + DWORD shi1_type; + LPTSTR shi1_remark; +} SHARE_INFO_1,*PSHARE_INFO_1,*LPSHARE_INFO_1; +typedef 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; +} SHARE_INFO_2,*PSHARE_INFO_2,*LPSHARE_INFO_2; +typedef 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; +} SHARE_INFO_502,*PSHARE_INFO_502,*LPSHARE_INFO_502; +typedef struct _SHARE_INFO_1004 { + LPTSTR shi1004_remark; +} SHARE_INFO_1004,*PSHARE_INFO_1004,*LPSHARE_INFO_1004; +typedef struct _SHARE_INFO_1006 { + DWORD shi1006_max_uses; +} SHARE_INFO_1006,*PSHARE_INFO_1006,*LPSHARE_INFO_1006; +typedef struct _SHARE_INFO_1501 { + DWORD shi1501_reserved; + PSECURITY_DESCRIPTOR shi1501_security_descriptor; +} SHARE_INFO_1501,*PSHARE_INFO_1501,*LPSHARE_INFO_1501; +typedef struct _SESSION_INFO_0 { LPWSTR sesi0_cname; } SESSION_INFO_0,*PSESSION_INFO_0,*LPSESSION_INFO_0; +typedef 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; +} SESSION_INFO_1,*PSESSION_INFO_1,*LPSESSION_INFO_1; +typedef 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; +} SESSION_INFO_2,*PSESSION_INFO_2,*LPSESSION_INFO_2; +typedef struct _SESSION_INFO_10 { + LPWSTR sesi10_cname; + LPWSTR sesi10_username; + DWORD sesi10_time; + DWORD sesi10_idle_time; +} SESSION_INFO_10,*PSESSION_INFO_10,*LPSESSION_INFO_10; +typedef 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; +} SESSION_INFO_502,*PSESSION_INFO_502,*LPSESSION_INFO_502; +typedef struct _CONNECTION_INFO_0 { DWORD coni0_id; } CONNECTION_INFO_0,*PCONNECTION_INFO_0,*LPCONNECTION_INFO_0; +typedef 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; +} CONNECTION_INFO_1,*PCONNECTION_INFO_1,*LPCONNECTION_INFO_1; +NET_API_STATUS WINAPI NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle); +NET_API_STATUS WINAPI NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetShareDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS WINAPI NetShareDelSticky(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS WINAPI NetShareCheck(LPWSTR,LPWSTR,PDWORD); +NET_API_STATUS WINAPI NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetSessionDel(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS WINAPI NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetFileClose(LPWSTR,DWORD); +NET_API_STATUS WINAPI NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmsname.h b/reactos/w32api/include/lmsname.h new file mode 100644 index 00000000000..a840cb21fda --- /dev/null +++ b/reactos/w32api/include/lmsname.h @@ -0,0 +1,58 @@ +#ifndef _LMSNAME_H +#define _LMSNAME_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define SERVICE_WORKSTATION TEXT("LanmanWorkstation") +#define SERVICE_LM20_WORKSTATION TEXT("WORKSTATION") +#define WORKSTATION_DISPLAY_NAME TEXT("Workstation") +#define SERVICE_SERVER TEXT("LanmanServer") +#define SERVICE_LM20_SERVER TEXT("SERVER") +#define SERVER_DISPLAY_NAME TEXT("Server") +#define SERVICE_BROWSER TEXT("BROWSER") +#define SERVICE_LM20_BROWSER SERVICE_BROWSER +#define SERVICE_MESSENGER TEXT("MESSENGER") +#define SERVICE_LM20_MESSENGER SERVICE_MESSENGER +#define SERVICE_NETRUN TEXT("NETRUN") +#define SERVICE_LM20_NETRUN SERVICE_NETRUN +#define SERVICE_SPOOLER TEXT("SPOOLER") +#define SERVICE_LM20_SPOOLER SERVICE_SPOOLER +#define SERVICE_ALERTER TEXT("ALERTER") +#define SERVICE_LM20_ALERTER SERVICE_ALERTER +#define SERVICE_NETLOGON TEXT("NETLOGON") +#define SERVICE_LM20_NETLOGON SERVICE_NETLOGON +#define SERVICE_NETPOPUP TEXT("NETPOPUP") +#define SERVICE_LM20_NETPOPUP SERVICE_NETPOPUP +#define SERVICE_SQLSERVER TEXT("SQLSERVER") +#define SERVICE_LM20_SQLSERVER SERVICE_SQLSERVER +#define SERVICE_REPL TEXT("REPLICATOR") +#define SERVICE_LM20_REPL SERVICE_REPL +#define SERVICE_RIPL TEXT("REMOTEBOOT") +#define SERVICE_LM20_RIPL SERVICE_RIPL +#define SERVICE_TIMESOURCE TEXT("TIMESOURCE") +#define SERVICE_LM20_TIMESOURCE SERVICE_TIMESOURCE +#define SERVICE_AFP TEXT("AFP") +#define SERVICE_LM20_AFP SERVICE_AFP +#define SERVICE_UPS TEXT("UPS") +#define SERVICE_LM20_UPS SERVICE_UPS +#define SERVICE_XACTSRV TEXT("XACTSRV") +#define SERVICE_LM20_XACTSRV SERVICE_XACTSRV +#define SERVICE_TCPIP TEXT("TCPIP") +#define SERVICE_LM20_TCPIP SERVICE_TCPIP +#define SERVICE_NBT TEXT("NBT") +#define SERVICE_LM20_NBT SERVICE_NBT +#define SERVICE_LMHOSTS TEXT("LMHOSTS") +#define SERVICE_LM20_LMHOSTS SERVICE_LMHOSTS +#define SERVICE_TELNET TEXT("Telnet") +#define SERVICE_LM20_TELNET SERVICE_TELNET +#define SERVICE_SCHEDULE TEXT("Schedule") +#define SERVICE_LM20_SCHEDULE SERVICE_SCHEDULE +#define SERVICE_NTLMSSP TEXT("NtLmSsp") +#define SERVICE_DHCP TEXT("DHCP") +#define SERVICE_LM20_DHCP SERVICE_DHCP +#define SERVICE_NWSAP TEXT("NwSapAgent") +#define SERVICE_LM20_NWSAP SERVICE_NWSAP +#define NWSAP_DISPLAY_NAME TEXT("NW Sap Agent") +#define SERVICE_NWCS TEXT("NWCWorkstation") +#endif diff --git a/reactos/w32api/include/lmstats.h b/reactos/w32api/include/lmstats.h new file mode 100644 index 00000000000..2a4a2c2e366 --- /dev/null +++ b/reactos/w32api/include/lmstats.h @@ -0,0 +1,114 @@ +#ifndef _LMSTATS_H +#define _LMSTATS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define STATSOPT_CLR 1 +#define STATS_NO_VALUE ((ULONG)-1) +#define STATS_OVERFLOW ((ULONG)-2) +typedef 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; +} 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 +typedef 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; +} STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0; +#endif + +NET_API_STATUS WINAPI NetStatisticsGet(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmsvc.h b/reactos/w32api/include/lmsvc.h new file mode 100644 index 00000000000..bb19ee058f8 --- /dev/null +++ b/reactos/w32api/include/lmsvc.h @@ -0,0 +1,134 @@ +#ifndef _LMSVC_H +#define _LMSVC_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include +#define SERVICE_DOS_ENCRYPTION TEXT("ENCRYPT") +#define SERVICE_UNINSTALLED 0 +#define SERVICE_INSTALL_PENDING 1 +#define SERVICE_UNINSTALL_PENDING 2 +#define SERVICE_INSTALLED 3 +#define SERVICE_INSTALL_STATE 3 +#define SERVICE_PAUSE_STATE 18 +#define LM20_SERVICE_ACTIVE 0 +#define LM20_SERVICE_CONTINUE_PENDING 4 +#define LM20_SERVICE_PAUSE_PENDING 8 +#define LM20_SERVICE_PAUSED 18 +#define SERVICE_NOT_UNINSTALLABLE 0 +#define SERVICE_UNINSTALLABLE 16 +#define SERVICE_NOT_PAUSABLE 0 +#define SERVICE_PAUSABLE 32 +#define SERVICE_REDIR_PAUSED 0x700 +#define SERVICE_REDIR_DISK_PAUSED 256 +#define SERVICE_REDIR_PRINT_PAUSED 512 +#define SERVICE_REDIR_COMM_PAUSED 1024 +#define SERVICE_CTRL_INTERROGATE 0 +#define SERVICE_CTRL_PAUSE 1 +#define SERVICE_CTRL_CONTINUE 2 +#define SERVICE_CTRL_UNINSTALL 3 +#define SERVICE_CTRL_REDIR_DISK 1 +#define SERVICE_CTRL_REDIR_PRINT 2 +#define SERVICE_CTRL_REDIR_COMM 4 +#define SERVICE_IP_NO_HINT 0 +#define SERVICE_CCP_NO_HINT 0 +#define SERVICE_IP_QUERY_HINT 0x10000 +#define SERVICE_CCP_QUERY_HINT 0x10000 +#define SERVICE_IP_CHKPT_NUM 255 +#define SERVICE_CCP_CHKPT_NUM 255 +#define SERVICE_IP_WAIT_TIME 0xFF00 +#define SERVICE_CCP_WAIT_TIME 0xFF00 +#define SERVICE_IP_WAITTIME_SHIFT 8 +#define SERVICE_NTIP_WAITTIME_SHIFT 12 +#define UPPER_HINT_MASK 0xFF00 +#define LOWER_HINT_MASK 255 +#define UPPER_GET_HINT_MASK 0xFF00000 +#define LOWER_GET_HINT_MASK 0xFF00 +#define SERVICE_NT_MAXTIME 0xFFFF +#define SERVICE_RESRV_MASK 0x1FFFF +#define SERVICE_MAXTIME 255 +#define SERVICE_BASE 3050 +#define SERVICE_UIC_NORMAL 0 +#define SERVICE_UIC_BADPARMVAL (SERVICE_BASE+1) +#define SERVICE_UIC_MISSPARM (SERVICE_BASE+2) +#define SERVICE_UIC_UNKPARM (SERVICE_BASE+3) +#define SERVICE_UIC_RESOURCE (SERVICE_BASE+4) +#define SERVICE_UIC_CONFIG (SERVICE_BASE+5) +#define SERVICE_UIC_SYSTEM (SERVICE_BASE+6) +#define SERVICE_UIC_INTERNAL (SERVICE_BASE+7) +#define SERVICE_UIC_AMBIGPARM (SERVICE_BASE+8) +#define SERVICE_UIC_DUPPARM (SERVICE_BASE+9) +#define SERVICE_UIC_KILL (SERVICE_BASE+10) +#define SERVICE_UIC_EXEC (SERVICE_BASE+11) +#define SERVICE_UIC_SUBSERV (SERVICE_BASE+12) +#define SERVICE_UIC_CONFLPARM (SERVICE_BASE+13) +#define SERVICE_UIC_FILE (SERVICE_BASE+14) +#define SERVICE_UIC_M_NULL 0 +#define SERVICE_UIC_M_MEMORY (SERVICE_BASE+20) +#define SERVICE_UIC_M_DISK (SERVICE_BASE+21) +#define SERVICE_UIC_M_THREADS (SERVICE_BASE+22) +#define SERVICE_UIC_M_PROCESSES (SERVICE_BASE+23) +#define SERVICE_UIC_M_SECURITY (SERVICE_BASE+24) +#define SERVICE_UIC_M_LANROOT (SERVICE_BASE+25) +#define SERVICE_UIC_M_REDIR (SERVICE_BASE+26) +#define SERVICE_UIC_M_SERVER (SERVICE_BASE+27) +#define SERVICE_UIC_M_SEC_FILE_ERR (SERVICE_BASE+28) +#define SERVICE_UIC_M_FILES (SERVICE_BASE+29) +#define SERVICE_UIC_M_LOGS (SERVICE_BASE+30) +#define SERVICE_UIC_M_LANGROUP (SERVICE_BASE+31) +#define SERVICE_UIC_M_MSGNAME (SERVICE_BASE+32) +#define SERVICE_UIC_M_ANNOUNCE (SERVICE_BASE+33) +#define SERVICE_UIC_M_UAS (SERVICE_BASE+34) +#define SERVICE_UIC_M_SERVER_SEC_ERR (SERVICE_BASE+35) +#define SERVICE_UIC_M_WKSTA (SERVICE_BASE+37) +#define SERVICE_UIC_M_ERRLOG (SERVICE_BASE+38) +#define SERVICE_UIC_M_FILE_UW (SERVICE_BASE+39) +#define SERVICE_UIC_M_ADDPAK (SERVICE_BASE+40) +#define SERVICE_UIC_M_LAZY (SERVICE_BASE+41) +#define SERVICE_UIC_M_UAS_MACHINE_ACCT (SERVICE_BASE+42) +#define SERVICE_UIC_M_UAS_SERVERS_NMEMB (SERVICE_BASE+43) +#define SERVICE_UIC_M_UAS_SERVERS_NOGRP (SERVICE_BASE+44) +#define SERVICE_UIC_M_UAS_INVALID_ROLE (SERVICE_BASE+45) +#define SERVICE_UIC_M_NETLOGON_NO_DC (SERVICE_BASE+46) +#define SERVICE_UIC_M_NETLOGON_DC_CFLCT (SERVICE_BASE+47) +#define SERVICE_UIC_M_NETLOGON_AUTH (SERVICE_BASE+48) +#define SERVICE_UIC_M_UAS_PROLOG (SERVICE_BASE+49) +#define SERVICE2_BASE 5600 +#define SERVICE_UIC_M_NETLOGON_MPATH (SERVICE2_BASE+0) +#define SERVICE_UIC_M_LSA_MACHINE_ACCT (SERVICE2_BASE+1) +#define SERVICE_UIC_M_DATABASE_ERROR (SERVICE2_BASE+2) + +typedef struct _SERVICE_INFO_0 { LPWSTR svci0_name;} SERVICE_INFO_0,*PSERVICE_INFO_0,* LPSERVICE_INFO_0; +typedef struct _SERVICE_INFO_1 { + LPWSTR svci1_name; + DWORD svci1_status; + DWORD svci1_code; + DWORD svci1_pid; +} SERVICE_INFO_1,*PSERVICE_INFO_1,* LPSERVICE_INFO_1; +typedef 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; +} SERVICE_INFO_2,*PSERVICE_INFO_2,* LPSERVICE_INFO_2; + +NET_API_STATUS WINAPI NetServiceControl(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetServiceEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetServiceGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetServiceInstall(LPCWSTR,LPCWSTR,DWORD,LPCWSTR*,PBYTE*); +#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)) +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmuse.h b/reactos/w32api/include/lmuse.h new file mode 100644 index 00000000000..a63a71f3c8c --- /dev/null +++ b/reactos/w32api/include/lmuse.h @@ -0,0 +1,60 @@ +#ifndef _LMUSE_H +#define _LMUSE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include +#define USE_LOCAL_PARMNUM 1 +#define USE_REMOTE_PARMNUM 2 +#define USE_PASSWORD_PARMNUM 3 +#define USE_ASGTYPE_PARMNUM 4 +#define USE_USERNAME_PARMNUM 5 +#define USE_DOMAINNAME_PARMNUM 6 +#define USE_OK 0 +#define USE_PAUSED 1 +#define USE_SESSLOST 2 +#define USE_DISCONN 2 +#define USE_NETERR 3 +#define USE_CONN 4 +#define USE_RECONN 5 +#define USE_WILDCARD ((DWORD)-1) +#define USE_DISKDEV 0 +#define USE_SPOOLDEV 1 +#define USE_CHARDEV 2 +#define USE_IPC 3 +typedef struct _USE_INFO_0 { + LPWSTR ui0_local; + LPWSTR ui0_remote; +}USE_INFO_0,*PUSE_INFO_0,*LPUSE_INFO_0; +typedef 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; +}USE_INFO_1,*PUSE_INFO_1,*LPUSE_INFO_1; +typedef 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; +}USE_INFO_2,*PUSE_INFO_2,*LPUSE_INFO_2; +NET_API_STATUS WINAPI NetUseAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetUseDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS WINAPI NetUseEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetUseGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lmuseflg.h b/reactos/w32api/include/lmuseflg.h new file mode 100644 index 00000000000..34162e4e556 --- /dev/null +++ b/reactos/w32api/include/lmuseflg.h @@ -0,0 +1,10 @@ +#ifndef _LMUSEFLG_H +#define _LMUSEFLG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define USE_NOFORCE 0 +#define USE_FORCE 1 +#define USE_LOTS_OF_FORCE 2 +#endif diff --git a/reactos/w32api/include/lmwksta.h b/reactos/w32api/include/lmwksta.h new file mode 100644 index 00000000000..a8c6ccbcd5e --- /dev/null +++ b/reactos/w32api/include/lmwksta.h @@ -0,0 +1,233 @@ +#ifndef _LMWKSTA_H +#define _LMWKSTA_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include +#define WKSTA_PLATFORM_ID_PARMNUM 100 +#define WKSTA_COMPUTERNAME_PARMNUM 1 +#define WKSTA_LANGROUP_PARMNUM 2 +#define WKSTA_VER_MAJOR_PARMNUM 4 +#define WKSTA_VER_MINOR_PARMNUM 5 +#define WKSTA_LOGGED_ON_USERS_PARMNUM 6 +#define WKSTA_LANROOT_PARMNUM 7 +#define WKSTA_LOGON_DOMAIN_PARMNUM 8 +#define WKSTA_LOGON_SERVER_PARMNUM 9 +#define WKSTA_CHARWAIT_PARMNUM 10 +#define WKSTA_CHARTIME_PARMNUM 11 +#define WKSTA_CHARCOUNT_PARMNUM 12 +#define WKSTA_KEEPCONN_PARMNUM 13 +#define WKSTA_KEEPSEARCH_PARMNUM 14 +#define WKSTA_MAXCMDS_PARMNUM 15 +#define WKSTA_NUMWORKBUF_PARMNUM 16 +#define WKSTA_MAXWRKCACHE_PARMNUM 17 +#define WKSTA_SESSTIMEOUT_PARMNUM 18 +#define WKSTA_SIZERROR_PARMNUM 19 +#define WKSTA_NUMALERTS_PARMNUM 20 +#define WKSTA_NUMSERVICES_PARMNUM 21 +#define WKSTA_NUMCHARBUF_PARMNUM 22 +#define WKSTA_SIZCHARBUF_PARMNUM 23 +#define WKSTA_ERRLOGSZ_PARMNUM 27 +#define WKSTA_PRINTBUFTIME_PARMNUM 28 +#define WKSTA_SIZWORKBUF_PARMNUM 29 +#define WKSTA_MAILSLOTS_PARMNUM 30 +#define WKSTA_NUMDGRAMBUF_PARMNUM 31 +#define WKSTA_WRKHEURISTICS_PARMNUM 32 +#define WKSTA_MAXTHREADS_PARMNUM 33 +#define WKSTA_LOCKQUOTA_PARMNUM 41 +#define WKSTA_LOCKINCREMENT_PARMNUM 42 +#define WKSTA_LOCKMAXIMUM_PARMNUM 43 +#define WKSTA_PIPEINCREMENT_PARMNUM 44 +#define WKSTA_PIPEMAXIMUM_PARMNUM 45 +#define WKSTA_DORMANTFILELIMIT_PARMNUM 46 +#define WKSTA_CACHEFILETIMEOUT_PARMNUM 47 +#define WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM 48 +#define WKSTA_USEUNLOCKBEHIND_PARMNUM 49 +#define WKSTA_USECLOSEBEHIND_PARMNUM 50 +#define WKSTA_BUFFERNAMEDPIPES_PARMNUM 51 +#define WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM 52 +#define WKSTA_UTILIZENTCACHING_PARMNUM 53 +#define WKSTA_USERAWREAD_PARMNUM 54 +#define WKSTA_USERAWWRITE_PARMNUM 55 +#define WKSTA_USEWRITERAWWITHDATA_PARMNUM 56 +#define WKSTA_USEENCRYPTION_PARMNUM 57 +#define WKSTA_BUFFILESWITHDENYWRITE_PARMNUM 58 +#define WKSTA_BUFFERREADONLYFILES_PARMNUM 59 +#define WKSTA_FORCECORECREATEMODE_PARMNUM 60 +#define WKSTA_USE512BYTESMAXTRANSFER_PARMNUM 61 +#define WKSTA_READAHEADTHRUPUT_PARMNUM 62 +#define WKSTA_OTH_DOMAINS_PARMNUM 101 +#define TRANSPORT_QUALITYOFSERVICE_PARMNUM 201 +#define TRANSPORT_NAME_PARMNUM 202 + +typedef struct _WKSTA_INFO_100 { + DWORD wki100_platform_id; + LPWSTR wki100_computername; + LPWSTR wki100_langroup; + DWORD wki100_ver_major; + DWORD wki100_ver_minor; +}WKSTA_INFO_100,*PWKSTA_INFO_100,*LPWKSTA_INFO_100; +typedef 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; +}WKSTA_INFO_101,*PWKSTA_INFO_101,*LPWKSTA_INFO_101; +typedef 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; +}WKSTA_INFO_102,*PWKSTA_INFO_102,*LPWKSTA_INFO_102; +typedef 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; +}WKSTA_INFO_302,*PWKSTA_INFO_302,*LPWKSTA_INFO_302; +typedef 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; +}WKSTA_INFO_402,*PWKSTA_INFO_402,*LPWKSTA_INFO_402; +typedef 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; +}WKSTA_INFO_502,*PWKSTA_INFO_502,*LPWKSTA_INFO_502; +typedef struct _WKSTA_INFO_1010 { DWORD wki1010_char_wait;} WKSTA_INFO_1010,*PWKSTA_INFO_1010,*LPWKSTA_INFO_1010; +typedef struct _WKSTA_INFO_1011 { DWORD wki1011_collection_time;} WKSTA_INFO_1011,*PWKSTA_INFO_1011,*LPWKSTA_INFO_1011; +typedef struct _WKSTA_INFO_1012 { DWORD wki1012_maximum_collection_count;} WKSTA_INFO_1012,*PWKSTA_INFO_1012,*LPWKSTA_INFO_1012; +typedef struct _WKSTA_INFO_1027 { DWORD wki1027_errlog_sz;} WKSTA_INFO_1027,*PWKSTA_INFO_1027,*LPWKSTA_INFO_1027; +typedef struct _WKSTA_INFO_1028 { DWORD wki1028_print_buf_time;} WKSTA_INFO_1028,*PWKSTA_INFO_1028,*LPWKSTA_INFO_1028; +typedef struct _WKSTA_INFO_1032 { DWORD wki1032_wrk_heuristics;} WKSTA_INFO_1032,*PWKSTA_INFO_1032,*LPWKSTA_INFO_1032; +typedef struct _WKSTA_INFO_1013 { DWORD wki1013_keep_conn;} WKSTA_INFO_1013,*PWKSTA_INFO_1013,*LPWKSTA_INFO_1013; +typedef struct _WKSTA_INFO_1018 { DWORD wki1018_sess_timeout;} WKSTA_INFO_1018,*PWKSTA_INFO_1018,*LPWKSTA_INFO_1018; +typedef struct _WKSTA_INFO_1023 { DWORD wki1023_siz_char_buf;} WKSTA_INFO_1023,*PWKSTA_INFO_1023,*LPWKSTA_INFO_1023; +typedef struct _WKSTA_INFO_1033 { DWORD wki1033_max_threads;} WKSTA_INFO_1033,*PWKSTA_INFO_1033,*LPWKSTA_INFO_1033; +typedef struct _WKSTA_INFO_1041 { DWORD wki1041_lock_quota;} WKSTA_INFO_1041,*PWKSTA_INFO_1041,*LPWKSTA_INFO_1041; +typedef struct _WKSTA_INFO_1042 { DWORD wki1042_lock_increment;} WKSTA_INFO_1042,*PWKSTA_INFO_1042,*LPWKSTA_INFO_1042; +typedef struct _WKSTA_INFO_1043 { DWORD wki1043_lock_maximum;} WKSTA_INFO_1043,*PWKSTA_INFO_1043,*LPWKSTA_INFO_1043; +typedef struct _WKSTA_INFO_1044 { DWORD wki1044_pipe_increment;} WKSTA_INFO_1044,*PWKSTA_INFO_1044,*LPWKSTA_INFO_1044; +typedef struct _WKSTA_INFO_1045 { DWORD wki1045_pipe_maximum;} WKSTA_INFO_1045,*PWKSTA_INFO_1045,*LPWKSTA_INFO_1045; +typedef struct _WKSTA_INFO_1046 { DWORD wki1046_dormant_file_limit;} WKSTA_INFO_1046,*PWKSTA_INFO_1046,*LPWKSTA_INFO_1046; +typedef struct _WKSTA_INFO_1047 { DWORD wki1047_cache_file_timeout;} WKSTA_INFO_1047,*PWKSTA_INFO_1047,*LPWKSTA_INFO_1047; +typedef struct _WKSTA_INFO_1048 { BOOL wki1048_use_opportunistic_locking;} WKSTA_INFO_1048,*PWKSTA_INFO_1048,*LPWKSTA_INFO_1048; +typedef struct _WKSTA_INFO_1049 { BOOL wki1049_use_unlock_behind;} WKSTA_INFO_1049,*PWKSTA_INFO_1049,*LPWKSTA_INFO_1049; +typedef struct _WKSTA_INFO_1050 { BOOL wki1050_use_close_behind;} WKSTA_INFO_1050,*PWKSTA_INFO_1050,*LPWKSTA_INFO_1050; +typedef struct _WKSTA_INFO_1051 { BOOL wki1051_buf_named_pipes;} WKSTA_INFO_1051,*PWKSTA_INFO_1051,*LPWKSTA_INFO_1051; +typedef struct _WKSTA_INFO_1052 { BOOL wki1052_use_lock_read_unlock;} WKSTA_INFO_1052,*PWKSTA_INFO_1052,*LPWKSTA_INFO_1052; +typedef struct _WKSTA_INFO_1053 { BOOL wki1053_utilize_nt_caching;} WKSTA_INFO_1053,*PWKSTA_INFO_1053,*LPWKSTA_INFO_1053; +typedef struct _WKSTA_INFO_1054 { BOOL wki1054_use_raw_read;} WKSTA_INFO_1054,*PWKSTA_INFO_1054,*LPWKSTA_INFO_1054; +typedef struct _WKSTA_INFO_1055 { BOOL wki1055_use_raw_write;} WKSTA_INFO_1055,*PWKSTA_INFO_1055,*LPWKSTA_INFO_1055; +typedef struct _WKSTA_INFO_1056 { BOOL wki1056_use_write_raw_data;} WKSTA_INFO_1056,*PWKSTA_INFO_1056,*LPWKSTA_INFO_1056; +typedef struct _WKSTA_INFO_1057 { BOOL wki1057_use_encryption;} WKSTA_INFO_1057,*PWKSTA_INFO_1057,*LPWKSTA_INFO_1057; +typedef struct _WKSTA_INFO_1058 { BOOL wki1058_buf_files_deny_write;} WKSTA_INFO_1058,*PWKSTA_INFO_1058,*LPWKSTA_INFO_1058; +typedef struct _WKSTA_INFO_1059 { BOOL wki1059_buf_read_only_files;} WKSTA_INFO_1059,*PWKSTA_INFO_1059,*LPWKSTA_INFO_1059; +typedef struct _WKSTA_INFO_1060 { BOOL wki1060_force_core_create_mode;} WKSTA_INFO_1060,*PWKSTA_INFO_1060,*LPWKSTA_INFO_1060; +typedef struct _WKSTA_INFO_1061 { BOOL wki1061_use_512_byte_max_transfer;} WKSTA_INFO_1061,*PWKSTA_INFO_1061,*LPWKSTA_INFO_1061; +typedef struct _WKSTA_INFO_1062 { DWORD wki1062_read_ahead_throughput;} WKSTA_INFO_1062,*PWKSTA_INFO_1062,*LPWKSTA_INFO_1062; +typedef struct _WKSTA_USER_INFO_0 { LPWSTR wkui0_username;}WKSTA_USER_INFO_0,*PWKSTA_USER_INFO_0,*LPWKSTA_USER_INFO_0; +typedef struct _WKSTA_USER_INFO_1 { + LPWSTR wkui1_username; + LPWSTR wkui1_logon_domain; + LPWSTR wkui1_oth_domains; + LPWSTR wkui1_logon_server; +}WKSTA_USER_INFO_1,*PWKSTA_USER_INFO_1,*LPWKSTA_USER_INFO_1; +typedef struct _WKSTA_USER_INFO_1101 { LPWSTR wkui1101_oth_domains;} WKSTA_USER_INFO_1101,*PWKSTA_USER_INFO_1101,*LPWKSTA_USER_INFO_1101; +typedef 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; +}WKSTA_TRANSPORT_INFO_0,*PWKSTA_TRANSPORT_INFO_0,*LPWKSTA_TRANSPORT_INFO_0; + +NET_API_STATUS WINAPI NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS WINAPI NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS WINAPI NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS WINAPI NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS WINAPI NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/lzexpand.h b/reactos/w32api/include/lzexpand.h new file mode 100644 index 00000000000..68d4807a85f --- /dev/null +++ b/reactos/w32api/include/lzexpand.h @@ -0,0 +1,40 @@ +#ifndef _LZEXPAND_H +#define _LZEXPAND_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define LZERROR_BADINHANDLE (-1) +#define LZERROR_BADOUTHANDLE (-2) +#define LZERROR_READ (-3) +#define LZERROR_WRITE (-4) +#define LZERROR_GLOBALLOC (-5) +#define LZERROR_GLOBLOCK (-6) +#define LZERROR_BADVALUE (-7) +#define LZERROR_UNKNOWNALG (-8) +LONG WINAPI CopyLZFile(INT,INT); +INT WINAPI GetExpandedNameA(LPSTR,LPSTR); +INT WINAPI GetExpandedNameW(LPWSTR,LPWSTR); +VOID APIENTRY LZClose(INT); +LONG APIENTRY LZCopy(INT,INT); +VOID WINAPI LZDone(VOID); +INT WINAPI LZInit(INT); +INT WINAPI LZOpenFileA(LPSTR,LPOFSTRUCT,WORD); +INT WINAPI LZOpenFileW(LPWSTR,LPOFSTRUCT,WORD); +INT WINAPI LZRead(INT,LPSTR,INT); +LONG WINAPI LZSeek(INT,LONG,INT); +INT WINAPI LZStart(VOID); +#ifdef UNICODE +#define GetExpandedName GetExpandedNameW +#define LZOpenFile LZOpenFileW +#else +#define GetExpandedName GetExpandedNameA +#define LZOpenFile LZOpenFileA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/mapi.h b/reactos/w32api/include/mapi.h new file mode 100644 index 00000000000..8474f892379 --- /dev/null +++ b/reactos/w32api/include/mapi.h @@ -0,0 +1,163 @@ +#ifndef _MAPI_H +#define _MAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SUCCESS_SUCCESS 0 +#define MAPI_USER_ABORT 1 +#define MAPI_E_USER_ABORT 1 +#define MAPI_E_FAILURE 2 +#define MAPI_E_LOGIN_FAILURE 3 +#define MAPI_E_LOGON_FAILURE 3 +#define MAPI_E_DISK_FULL 4 +#define MAPI_E_INSUFFICIENT_MEMORY 5 +#define MAPI_E_ACCESS_DENIED 6 +#define MAPI_E_BLK_TOO_SMALL 6 +#define MAPI_E_TOO_MANY_SESSIONS 8 +#define MAPI_E_TOO_MANY_FILES 9 +#define MAPI_E_TOO_MANY_RECIPIENTS 10 +#define MAPI_E_ATTACHMENT_NOT_FOUND 11 +#define MAPI_E_ATTACHMENT_OPEN_FAILURE 12 +#define MAPI_E_ATTACHMENT_WRITE_FAILURE 13 +#define MAPI_E_UNKNOWN_RECIPIENT 14 +#define MAPI_E_BAD_RECIPTYPE 15 +#define MAPI_E_NO_MESSAGES 16 +#define MAPI_E_INVALID_MESSAGE 17 +#define MAPI_E_TEXT_TOO_LARGE 18 +#define MAPI_E_INVALID_SESSION 19 +#define MAPI_E_TYPE_NOT_SUPPORTED 20 +#define MAPI_E_AMBIGUOUS_RECIPIENT 21 +#define MAPI_E_AMBIGUOUS_RECIP 21 +#define MAPI_E_MESSAGE_IN_USE 22 +#define MAPI_E_NETWORK_FAILURE 23 +#define MAPI_E_INVALID_EDITFIELDS 24 +#define MAPI_E_INVALID_RECIPS 25 +#define MAPI_E_NOT_SUPPORTED 26 + +#define MAPI_ORIG 0 +#define MAPI_TO 1 +#define MAPI_CC 2 +#define MAPI_BCC 3 + +#define MAPI_LOGON_UI 0x0001 +#define MAPI_NEW_SESSION 0x0002 +#define MAPI_FORCE_DOWNLOAD 0x1000 +#define MAPI_LOGOFF_SHARED 0x0001 +#define MAPI_LOGOFF_UI 0x0002 +#define MAPI_DIALOG 0x0008 +#define MAPI_UNREAD_ONLY 0x0020 +#define MAPI_LONG_MSGID 0x4000 +#define MAPI_GUARANTEE_FIFO 0x0100 +#define MAPI_ENVELOPE_ONLY 0x0040 +#define MAPI_PEEK 0x0080 +#define MAPI_BODY_AS_FILE 0x0200 +#define MAPI_SUPPRESS_ATTACH 0x0800 +#define MAPI_AB_NOMODIFY 0x0400 +#define MAPI_OLE 0x0001 +#define MAPI_OLE_STATIC 0x0002 +#define MAPI_UNREAD 0x0001 +#define MAPI_RECEIPT_REQUESTED 0x0002 +#define MAPI_SENT 0x0004 + +#ifndef RC_INVOKED +typedef unsigned long FLAGS; +typedef unsigned long LHANDLE; +typedef unsigned long FAR *LPLHANDLE, FAR *LPULONG; + +typedef struct { + ULONG ulReserved; + ULONG ulRecipClass; + LPSTR lpszName; + LPSTR lpszAddress; + ULONG ulEIDSize; + LPVOID lpEntryID; +} MapiRecipDesc, *lpMapiRecipDesc; +typedef struct { + ULONG ulReserved; + ULONG flFlags; + ULONG nPosition; + LPSTR lpszPathName; + LPSTR lpszFileName; + LPVOID lpFileType; +} MapiFileDesc, *lpMapiFileDesc; +typedef struct { + ULONG ulReserved; + ULONG cbTag; + LPBYTE lpTag; + ULONG cbEncoding; + LPBYTE lpEncoding; +} MapiFileTagExt, *lpMapiFileTagExt; +typedef struct { + ULONG ulReserved; + LPSTR lpszSubject; + LPSTR lpszNoteText; + LPSTR lpszMessageType; + LPSTR lpszDateReceived; + LPSTR lpszConversationID; + FLAGS flFlags; + lpMapiRecipDesc lpOriginator; + ULONG nRecipCount; + lpMapiRecipDesc lpRecips; + ULONG nFileCount; + lpMapiFileDesc lpFiles; +} MapiMessage, *lpMapiMessage; + +ULONG PASCAL MAPILogon (ULONG,LPSTR,LPSTR,FLAGS,ULONG,LPLHANDLE); +ULONG PASCAL MAPISendMail (LHANDLE,ULONG,lpMapiMessage,FLAGS,ULONG); +ULONG PASCAL MAPISendDocuments (ULONG,LPSTR,LPSTR,LPSTR,ULONG); +ULONG PASCAL MAPIReadMail (LHANDLE,ULONG,LPSTR,FLAGS,ULONG, + lpMapiMessage*); +ULONG PASCAL MAPIFindNext (LHANDLE,ULONG,LPSTR,LPSTR,FLAGS,ULONG,LPSTR); +ULONG PASCAL MAPIResolveName (LHANDLE,ULONG,LPSTR,FLAGS,ULONG, + lpMapiRecipDesc*); +ULONG PASCAL MAPIAddress (LHANDLE,ULONG,LPSTR,ULONG,LPSTR,ULONG, + lpMapiRecipDesc,FLAGS,ULONG,LPULONG, + lpMapiRecipDesc*); +ULONG PASCAL MAPIFreeBuffer (LPVOID); +ULONG PASCAL MAPIDetails (LHANDLE,ULONG,lpMapiRecipDesc,FLAGS,ULONG); +ULONG PASCAL MAPISaveMail (LHANDLE,ULONG,lpMapiMessage lpszMessage, + FLAGS,ULONG,LPSTR); +ULONG PASCAL MAPIDeleteMail (LHANDLE lpSession,ULONG,LPSTR,FLAGS,ULONG); +ULONG PASCAL MAPILogoff (LHANDLE,ULONG,FLAGS,ULONG); +/* Netscape extensions. */ +ULONG PASCAL MAPIGetNetscapeVersion (void); +ULONG PASCAL MAPI_NSCP_SynchronizeClient (LHANDLE,ULONG); + +/* Handles for use with GetProcAddress */ +typedef ULONG (PASCAL * LPMAPILOGON) (ULONG,LPSTR,LPSTR,FLAGS,ULONG, + LPLHANDLE); +typedef ULONG (PASCAL * LPMAPISENDMAIL) (LHANDLE,ULONG,lpMapiMessage, + FLAGS,ULONG); +typedef ULONG (PASCAL * LPMAPISENDDOCUMENTS) (ULONG,LPSTR,LPSTR, + LPSTR,ULONG); +typedef ULONG (PASCAL * LPMAPIREADMAIL) (LHANDLE,ULONG,LPSTR,FLAGS, + ULONG,lpMapiMessage*); +typedef ULONG (PASCAL * LPMAPIFINDNEXT) (LHANDLE,ULONG,LPSTR,LPSTR, + FLAGS,ULONG,LPSTR); +typedef ULONG (PASCAL * LPMAPIRESOLVENAME) (LHANDLE,ULONG,LPSTR,FLAGS, + ULONG,lpMapiRecipDesc*); +typedef ULONG (PASCAL * LPMAPIADDRESS) (LHANDLE,ULONG,LPSTR,ULONG,LPSTR, + ULONG,lpMapiRecipDesc,FLAGS,ULONG, + LPULONG,lpMapiRecipDesc*); +typedef ULONG (PASCAL * LPMAPIFREEBUFFER) (LPVOID lpv); +typedef ULONG (PASCAL * LPMAPIDETAILS) (LHANDLE,ULONG,lpMapiRecipDesc, + FLAGS,ULONG); +typedef ULONG (PASCAL * LPMAPISAVEMAIL) (LHANDLE,ULONG,lpMapiMessage, + FLAGS,ULONG,LPSTR); +typedef ULONG (PASCAL * LPMAPIDELETEMAIL) (LHANDLE lpSession,ULONG, + LPSTR, FLAGS,ULONG); +typedef ULONG (PASCAL * LPMAPILOGOFF)(LHANDLE,ULONG,FLAGS,ULONG); + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif + +#endif /* Not _MAPI_H */ + diff --git a/reactos/w32api/include/mciavi.h b/reactos/w32api/include/mciavi.h new file mode 100644 index 00000000000..8535a7f0993 --- /dev/null +++ b/reactos/w32api/include/mciavi.h @@ -0,0 +1,25 @@ +#ifndef _MCIAVI_H +#define _MCIAVI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define MCI_MCIAVI_PLAY_WINDOW 0x1000000 +#define MCI_MCIAVI_PLAY_FULLSCREEN 0x2000000 +#define MCI_MCIAVI_PLAY_FULLBY2 0x4000000 +#define MCI_AVI_STATUS_FRAMES_SKIPPED 0x8001 +#define MCI_AVI_STATUS_LAST_PLAY_SPEED 0x8002 +#define MCI_AVI_STATUS_AUDIO_BREAKS 0x8003 +#define MCI_AVI_SETVIDEO_DRAW_PROCEDURE 0x8000 +#define MCI_AVI_SETVIDEO_PALETTE_COLOR 0x8100 +#define MCI_AVI_SETVIDEO_PALETTE_HALFTONE 0x0000FFFF +#define MCIERR_AVI_OLDAVIFORMAT (MCIERR_CUSTOM_DRIVER_BASE+100) +#define MCIERR_AVI_NOTINTERLEAVED (MCIERR_CUSTOM_DRIVER_BASE+101) +#define MCIERR_AVI_NODISPDIB (MCIERR_CUSTOM_DRIVER_BASE+102) +#define MCIERR_AVI_CANTPLAYFULLSCREEN (MCIERR_CUSTOM_DRIVER_BASE+103) +#define MCIERR_AVI_TOOBIGFORVGA (MCIERR_CUSTOM_DRIVER_BASE+104) +#define MCIERR_AVI_NOCOMPRESSOR (MCIERR_CUSTOM_DRIVER_BASE+105) +#define MCIERR_AVI_DISPLAYERROR (MCIERR_CUSTOM_DRIVER_BASE+106) +#define MCIERR_AVI_AUDIOERROR (MCIERR_CUSTOM_DRIVER_BASE+107) +#define MCIERR_AVI_BADPALETTE (MCIERR_CUSTOM_DRIVER_BASE+108) +#endif diff --git a/reactos/w32api/include/mcx.h b/reactos/w32api/include/mcx.h new file mode 100644 index 00000000000..c7173b77b6f --- /dev/null +++ b/reactos/w32api/include/mcx.h @@ -0,0 +1,77 @@ +#ifndef _MCX_H +#define _MCX_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define DIALOPTION_BILLING 64 +#define DIALOPTION_QUIET 128 +#define DIALOPTION_DIALTONE 256 +#define MDMVOLFLAG_LOW 1 +#define MDMVOLFLAG_MEDIUM 2 +#define MDMVOLFLAG_HIGH 4 +#define MDMVOL_LOW 0 +#define MDMVOL_MEDIUM 1 +#define MDMVOL_HIGH 2 +#define MDMSPKRFLAG_OFF 1 +#define MDMSPKRFLAG_DIAL 2 +#define MDMSPKRFLAG_ON 4 +#define MDMSPKRFLAG_CALLSETUP 8 +#define MDMSPKR_OFF 0 +#define MDMSPKR_DIAL 1 +#define MDMSPKR_ON 2 +#define MDMSPKR_CALLSETUP 3 +#define MDM_COMPRESSION 1 +#define MDM_ERROR_CONTROL 2 +#define MDM_FORCED_EC 4 +#define MDM_CELLULAR 8 +#define MDM_FLOWCONTROL_HARD 16 +#define MDM_FLOWCONTROL_SOFT 32 +#define MDM_CCITT_OVERRIDE 64 +#define MDM_SPEED_ADJUST 128 +#define MDM_TONE_DIAL 256 +#define MDM_BLIND_DIAL 512 +#define MDM_V23_OVERRIDE 1024 +typedef 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[1]; +} MODEMDEVCAPS,*PMODEMDEVCAPS,*LPMODEMDEVCAPS; +typedef 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[1]; +} MODEMSETTINGS,*PMODEMSETTINGS,*LPMODEMSETTINGS; +#ifdef __cplusplus +} +#endif +#endif /* _MCX_H */ diff --git a/reactos/w32api/include/mgmtapi.h b/reactos/w32api/include/mgmtapi.h new file mode 100644 index 00000000000..89e68e3e21e --- /dev/null +++ b/reactos/w32api/include/mgmtapi.h @@ -0,0 +1,58 @@ +/* + mgmtapi.h - Header file for the SNMP Management API + + Written by Filip Navara + + References (2003-08-25): + http://msdn.microsoft.com/library/en-us/snmp/snmp/snmp_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. +*/ + +#ifndef _MGMTAPI_H +#define _MGMTAPI_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifndef _SNMP_H +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SNMP_MGMTAPI_TIMEOUT 40 +#define SNMP_MGMTAPI_SELECT_FDERRORS 41 +#define SNMP_MGMTAPI_TRAP_ERRORS 42 +#define SNMP_MGMTAPI_TRAP_DUPINIT 43 +#define SNMP_MGMTAPI_NOTRAPS 44 +#define SNMP_MGMTAPI_AGAIN 45 +#define SNMP_MGMTAPI_INVALID_CTL 46 +#define SNMP_MGMTAPI_INVALID_SESSION 47 +#define SNMP_MGMTAPI_INVALID_BUFFER 48 +#define MGMCTL_SETAGENTPORT 1 + +#ifndef RC_INVOKED + +typedef PVOID LPSNMP_MGR_SESSION; + +BOOL WINSNMPAPI SnmpMgrClose(LPSNMP_MGR_SESSION); +BOOL WINSNMPAPI SnmpMgrCtl(LPSNMP_MGR_SESSION,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD); +BOOL WINSNMPAPI SnmpMgrGetTrap(AsnObjectIdentifier*,AsnNetworkAddress*,AsnInteger*,AsnInteger*,AsnTimeticks*,SnmpVarBindList*); +BOOL WINSNMPAPI SnmpMgrGetTrapEx(AsnObjectIdentifier*,AsnNetworkAddress*,AsnNetworkAddress*,AsnInteger*,AsnInteger*,AsnOctetString*,AsnTimeticks*,SnmpVarBindList*); +BOOL WINSNMPAPI SnmpMgrOidToStr(AsnObjectIdentifier*,LPSTR*); +LPSNMP_MGR_SESSION WINSNMPAPI SnmpMgrOpen(LPSTR,LPSTR,INT,INT); +INT WINSNMPAPI SnmpMgrRequest(LPSNMP_MGR_SESSION,BYTE,SnmpVarBindList*,AsnInteger*,AsnInteger*); +BOOL WINSNMPAPI SnmpMgrStrToOid(LPSTR,AsnObjectIdentifier*); +BOOL WINSNMPAPI SnmpMgrTrapListen(HANDLE*); + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/mmsystem.h b/reactos/w32api/include/mmsystem.h new file mode 100644 index 00000000000..95da48c0b6f --- /dev/null +++ b/reactos/w32api/include/mmsystem.h @@ -0,0 +1,1941 @@ + +#ifndef _MMSYSTEM_H +#define _MMSYSTEM_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif +#pragma pack(push,1) +#ifdef __cplusplus +extern "C" { +#endif +#define WINMMAPI DECLSPEC_IMPORT +#define _loadds +#define _huge +#define MAXPNAMELEN 32 +#define MAXERRORLENGTH 256 +#define MAX_JOYSTICKOEMVXDNAME 260 +#define _MMRESULT_ +#define TIME_MS 1 +#define TIME_SAMPLES 2 +#define TIME_BYTES 4 +#define TIME_SMPTE 8 +#define TIME_MIDI 16 +#define TIME_TICKS 32 +#define MAKEFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24)) +#ifndef mmioFOURCC +#define mmioFOURCC(c0,c1,c2,c3) MAKEFOURCC(c0,c1,c2,c3) +#endif +#define MM_JOY1MOVE 0x3A0 +#define MM_JOY2MOVE 0x3A1 +#define MM_JOY1ZMOVE 0x3A2 +#define MM_JOY2ZMOVE 0x3A3 +#define MM_JOY1BUTTONDOWN 0x3B5 +#define MM_JOY2BUTTONDOWN 0x3B6 +#define MM_JOY1BUTTONUP 0x3B7 +#define MM_JOY2BUTTONUP 0x3B8 +#define MM_MCINOTIFY 0x3B9 +#define MM_WOM_OPEN 0x3BB +#define MM_WOM_CLOSE 0x3BC +#define MM_WOM_DONE 0x3BD +#define MM_WIM_OPEN 0x3BE +#define MM_WIM_CLOSE 0x3BF +#define MM_WIM_DATA 0x3C0 +#define MM_MIM_OPEN 0x3C1 +#define MM_MIM_CLOSE 0x3C2 +#define MM_MIM_DATA 0x3C3 +#define MM_MIM_LONGDATA 0x3C4 +#define MM_MIM_ERROR 0x3C5 +#define MM_MIM_LONGERROR 0x3C6 +#define MM_MOM_OPEN 0x3C7 +#define MM_MOM_CLOSE 0x3C8 +#define MM_MOM_DONE 0x3C9 +#define MM_DRVM_OPEN 0x3D0 +#define MM_DRVM_CLOSE 0x3D1 +#define MM_DRVM_DATA 0x3D2 +#define MM_DRVM_ERROR 0x3D3 +#define MM_STREAM_OPEN 0x3D4 +#define MM_STREAM_CLOSE 0x3D5 +#define MM_STREAM_DONE 0x3D6 +#define MM_STREAM_ERROR 0x3D7 +#define MM_MOM_POSITIONCB 0x3CA +#define MM_MCISIGNAL 0x3CB +#define MM_MIM_MOREDATA 0x3CC +#define MM_MIXM_LINE_CHANGE 0x3D0 +#define MM_MIXM_CONTROL_CHANGE 0x3D1 +#define MMSYSERR_BASE 0 +#define WAVERR_BASE 32 +#define MIDIERR_BASE 64 +#define TIMERR_BASE 96 +#define JOYERR_BASE 160 +#define MCIERR_BASE 256 +#define MIXERR_BASE 1024 +#define MCI_STRING_OFFSET 512 +#define MCI_VD_OFFSET 1024 +#define MCI_CD_OFFSET 1088 +#define MCI_WAVE_OFFSET 1152 +#define MCI_SEQ_OFFSET 1216 +#define MMSYSERR_NOERROR 0 +#define MMSYSERR_ERROR (MMSYSERR_BASE+1) +#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE+2) +#define MMSYSERR_NOTENABLED (MMSYSERR_BASE+3) +#define MMSYSERR_ALLOCATED (MMSYSERR_BASE+4) +#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE+5) +#define MMSYSERR_NODRIVER (MMSYSERR_BASE+6) +#define MMSYSERR_NOMEM (MMSYSERR_BASE+7) +#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE+8) +#define MMSYSERR_BADERRNUM (MMSYSERR_BASE+9) +#define MMSYSERR_INVALFLAG (MMSYSERR_BASE+10) +#define MMSYSERR_INVALPARAM (MMSYSERR_BASE+11) +#define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE+12) +#define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE+13) +#define MMSYSERR_BADDB (MMSYSERR_BASE+14) +#define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE+15) +#define MMSYSERR_READERROR (MMSYSERR_BASE+16) +#define MMSYSERR_WRITEERROR (MMSYSERR_BASE+17) +#define MMSYSERR_DELETEERROR (MMSYSERR_BASE+18) +#define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE+19) +#define MMSYSERR_NODRIVERCB (MMSYSERR_BASE+20) +#define MMSYSERR_LASTERROR (MMSYSERR_BASE+20) +#define DRV_LOAD 1 +#define DRV_ENABLE 2 +#define DRV_OPEN 3 +#define DRV_CLOSE 4 +#define DRV_DISABLE 5 +#define DRV_FREE 6 +#define DRV_CONFIGURE 7 +#define DRV_QUERYCONFIGURE 8 +#define DRV_INSTALL 9 +#define DRV_REMOVE 10 +#define DRV_EXITSESSION 11 +#define DRV_POWER 15 +#define DRV_RESERVED 0x800 +#define DRV_USER 0x4000 +#define DRVCNF_CANCEL 0 +#define DRVCNF_OK 1 +#define DRVCNF_RESTART 2 +#define DRV_CANCEL DRVCNF_CANCEL +#define DRV_OK DRVCNF_OK +#define DRV_RESTART DRVCNF_RESTART +#define DRV_MCI_FIRST DRV_RESERVED +#define DRV_MCI_LAST (DRV_RESERVED+0xFFF) +#define CALLBACK_TYPEMASK 0x70000 +#define CALLBACK_NULL 0 +#define CALLBACK_WINDOW 0x10000 +#define CALLBACK_TASK 0x20000 +#define CALLBACK_FUNCTION 0x30000 +#define CALLBACK_THREAD CALLBACK_TASK +#define CALLBACK_EVENT 0x50000 +#define SND_SYNC 0 +#define SND_ASYNC 1 +#define SND_NODEFAULT 2 +#define SND_MEMORY 4 +#define SND_LOOP 8 +#define SND_NOSTOP 16 +#define SND_NOWAIT 0x2000 +#define SND_ALIAS 0x10000 +#define SND_ALIAS_ID 0x110000 +#define SND_FILENAME 0x20000 +#define SND_RESOURCE 0x40004 +#define SND_PURGE 0x40 +#define SND_APPLICATION 0x80 +#define SND_ALIAS_START 0 +#define sndAlias(c0,c1) (SND_ALIAS_START+(DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)) +#define SND_ALIAS_SYSTEMASTERISK sndAlias('S','*') +#define SND_ALIAS_SYSTEMQUESTION sndAlias('S','?') +#define SND_ALIAS_SYSTEMHAND sndAlias('S','H') +#define SND_ALIAS_SYSTEMEXIT sndAlias('S','E') +#define SND_ALIAS_SYSTEMSTART sndAlias('S','S') +#define SND_ALIAS_SYSTEMWELCOME sndAlias('S','W') +#define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S','!') +#define SND_ALIAS_SYSTEMDEFAULT sndAlias('S','D') +#define WAVERR_BADFORMAT (WAVERR_BASE + 0) +#define WAVERR_STILLPLAYING (WAVERR_BASE + 1) +#define WAVERR_UNPREPARED (WAVERR_BASE + 2) +#define WAVERR_SYNC (WAVERR_BASE + 3) +#define WAVERR_LASTERROR (WAVERR_BASE + 3) +#define WOM_OPEN MM_WOM_OPEN +#define WOM_CLOSE MM_WOM_CLOSE +#define WOM_DONE MM_WOM_DONE +#define WIM_OPEN MM_WIM_OPEN +#define WIM_CLOSE MM_WIM_CLOSE +#define WIM_DATA MM_WIM_DATA +#define WAVE_MAPPER ((UINT)-1) +#define WAVE_FORMAT_QUERY 1 +#define WAVE_ALLOWSYNC 2 +#define WAVE_MAPPED 4 +#define WAVE_FORMAT_DIRECT 8 +#define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT) +#define WHDR_DONE 1 +#define WHDR_PREPARED 2 +#define WHDR_BEGINLOOP 4 +#define WHDR_ENDLOOP 8 +#define WHDR_INQUEUE 16 +#define WAVECAPS_PITCH 1 +#define WAVECAPS_PLAYBACKRATE 2 +#define WAVECAPS_VOLUME 4 +#define WAVECAPS_LRVOLUME 8 +#define WAVECAPS_SYNC 16 +#define WAVECAPS_SAMPLEACCURATE 32 +#define WAVECAPS_DIRECTSOUND 64 +#define WAVE_INVALIDFORMAT 0 +#define WAVE_FORMAT_1M08 1 +#define WAVE_FORMAT_1S08 2 +#define WAVE_FORMAT_1M16 4 +#define WAVE_FORMAT_1S16 8 +#define WAVE_FORMAT_2M08 16 +#define WAVE_FORMAT_2S08 32 +#define WAVE_FORMAT_2M16 64 +#define WAVE_FORMAT_2S16 128 +#define WAVE_FORMAT_4M08 256 +#define WAVE_FORMAT_4S08 512 +#define WAVE_FORMAT_4M16 1024 +#define WAVE_FORMAT_4S16 2048 +#define WAVE_FORMAT_PCM 1 +#define MIDIERR_UNPREPARED MIDIERR_BASE +#define MIDIERR_STILLPLAYING (MIDIERR_BASE+1) +#define MIDIERR_NOMAP (MIDIERR_BASE+2) +#define MIDIERR_NOTREADY (MIDIERR_BASE+3) +#define MIDIERR_NODEVICE (MIDIERR_BASE+4) +#define MIDIERR_INVALIDSETUP (MIDIERR_BASE+5) +#define MIDIERR_BADOPENMODE (MIDIERR_BASE+6) +#define MIDIERR_DONT_CONTINUE (MIDIERR_BASE+7) +#define MIDIERR_LASTERROR (MIDIERR_BASE+7) +#define MIDIPATCHSIZE 128 +#define MIM_OPEN MM_MIM_OPEN +#define MIM_CLOSE MM_MIM_CLOSE +#define MIM_DATA MM_MIM_DATA +#define MIM_LONGDATA MM_MIM_LONGDATA +#define MIM_ERROR MM_MIM_ERROR +#define MIM_LONGERROR MM_MIM_LONGERROR +#define MOM_OPEN MM_MOM_OPEN +#define MOM_CLOSE MM_MOM_CLOSE +#define MOM_DONE MM_MOM_DONE +#define MIM_MOREDATA MM_MIM_MOREDATA +#define MOM_POSITIONCB MM_MOM_POSITIONCB +#define MIDIMAPPER ((UINT)-1) +#define MIDI_MAPPER ((UINT)-1) +#define MIDI_IO_STATUS 32 +#define MIDI_CACHE_ALL 1 +#define MIDI_CACHE_BESTFIT 2 +#define MIDI_CACHE_QUERY 3 +#define MIDI_UNCACHE 4 +#define MOD_MIDIPORT 1 +#define MOD_SYNTH 2 +#define MOD_SQSYNTH 3 +#define MOD_FMSYNTH 4 +#define MOD_MAPPER 5 +#define MIDICAPS_VOLUME 1 +#define MIDICAPS_LRVOLUME 2 +#define MIDICAPS_CACHE 4 +#define MIDICAPS_STREAM 8 +#define MHDR_DONE 1 +#define MHDR_PREPARED 2 +#define MHDR_INQUEUE 4 +#define MHDR_ISSTRM 8 +#define MEVT_F_SHORT 0 +#define MEVT_F_LONG 0x80000000 +#define MEVT_F_CALLBACK 0x40000000 +#define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF)) +#define MEVT_EVENTPARM(x) ((DWORD)((x)&0xFFFFFFL)) +#define MEVT_SHORTMSG 0 +#define MEVT_TEMPO 1 +#define MEVT_NOP 2 +#define MEVT_LONGMSG ((BYTE)0x80) +#define MEVT_COMMENT ((BYTE)0x82) +#define MEVT_VERSION ((BYTE)0x84) +#define MIDISTRM_ERROR (-2) +#define MIDIPROP_SET 0x80000000 +#define MIDIPROP_GET 0x40000000 +#define MIDIPROP_TIMEDIV 1 +#define MIDIPROP_TEMPO 2 +#define AUX_MAPPER ((UINT)-1) +#define AUXCAPS_CDAUDIO 1 +#define AUXCAPS_AUXIN 2 +#define AUXCAPS_VOLUME 1 +#define AUXCAPS_LRVOLUME 2 +#define MIXER_SHORT_NAME_CHARS 16 +#define MIXER_LONG_NAME_CHARS 64 +#define MIXERR_INVALLINE MIXERR_BASE +#define MIXERR_INVALCONTROL (MIXERR_BASE+1) +#define MIXERR_INVALVALUE (MIXERR_BASE+2) +#define MIXERR_LASTERROR (MIXERR_BASE+2) +#define MIXER_OBJECTF_HANDLE 0x80000000 +#define MIXER_OBJECTF_MIXER 0 +#define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER) +#define MIXER_OBJECTF_WAVEOUT 0x10000000 +#define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT) +#define MIXER_OBJECTF_WAVEIN 0x20000000 +#define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN) +#define MIXER_OBJECTF_MIDIOUT 0x30000000 +#define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT) +#define MIXER_OBJECTF_MIDIIN 0x40000000 +#define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN) +#define MIXER_OBJECTF_AUX 0x50000000 +#define MIXERLINE_LINEF_ACTIVE 1 +#define MIXERLINE_LINEF_DISCONNECTED 0x8000 +#define MIXERLINE_LINEF_SOURCE 0x80000000 +#define MIXERLINE_COMPONENTTYPE_DST_FIRST 0 +#define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED MIXERLINE_COMPONENTTYPE_DST_FIRST +#define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST+1) +#define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST+2) +#define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST+3) +#define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST+4) +#define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST+5) +#define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST+6) +#define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST+7) +#define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST+8) +#define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST+8) +#define MIXERLINE_COMPONENTTYPE_SRC_FIRST 0x1000 +#define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED MIXERLINE_COMPONENTTYPE_SRC_FIRST +#define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST+1) +#define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST+2) +#define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST+3) +#define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST+4) +#define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST+5) +#define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST+6) +#define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST+7) +#define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST+8) +#define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST+9) +#define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST+10) +#define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST+10) +#define MIXERLINE_TARGETTYPE_UNDEFINED 0 +#define MIXERLINE_TARGETTYPE_WAVEOUT 1 +#define MIXERLINE_TARGETTYPE_WAVEIN 2 +#define MIXERLINE_TARGETTYPE_MIDIOUT 3 +#define MIXERLINE_TARGETTYPE_MIDIIN 4 +#define MIXERLINE_TARGETTYPE_AUX 5 +#define MIXER_GETLINEINFOF_DESTINATION 0 +#define MIXER_GETLINEINFOF_SOURCE 1 +#define MIXER_GETLINEINFOF_LINEID 2 +#define MIXER_GETLINEINFOF_COMPONENTTYPE 3 +#define MIXER_GETLINEINFOF_TARGETTYPE 4 +#define MIXER_GETLINEINFOF_QUERYMASK 15 +#define MIXERCONTROL_CONTROLF_UNIFORM 1 +#define MIXERCONTROL_CONTROLF_MULTIPLE 2 +#define MIXERCONTROL_CONTROLF_DISABLED 0x80000000 +#define MIXERCONTROL_CT_CLASS_MASK 0xF0000000 +#define MIXERCONTROL_CT_CLASS_CUSTOM 0 +#define MIXERCONTROL_CT_CLASS_METER 0x10000000 +#define MIXERCONTROL_CT_CLASS_SWITCH 0x20000000 +#define MIXERCONTROL_CT_CLASS_NUMBER 0x30000000 +#define MIXERCONTROL_CT_CLASS_SLIDER 0x40000000 +#define MIXERCONTROL_CT_CLASS_FADER 0x50000000 +#define MIXERCONTROL_CT_CLASS_TIME 0x60000000 +#define MIXERCONTROL_CT_CLASS_LIST 0x70000000 +#define MIXERCONTROL_CT_SUBCLASS_MASK 0xF000000 +#define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN 0 +#define MIXERCONTROL_CT_SC_SWITCH_BUTTON 0x1000000 +#define MIXERCONTROL_CT_SC_METER_POLLED 0 +#define MIXERCONTROL_CT_SC_TIME_MICROSECS 0 +#define MIXERCONTROL_CT_SC_TIME_MILLISECS 0x1000000 +#define MIXERCONTROL_CT_SC_LIST_SINGLE 0 +#define MIXERCONTROL_CT_SC_LIST_MULTIPLE 0x1000000 +#define MIXERCONTROL_CT_UNITS_MASK 0xFF0000 +#define MIXERCONTROL_CT_UNITS_CUSTOM 0 +#define MIXERCONTROL_CT_UNITS_BOOLEAN 0x10000 +#define MIXERCONTROL_CT_UNITS_SIGNED 0x20000 +#define MIXERCONTROL_CT_UNITS_UNSIGNED 0x30000 +#define MIXERCONTROL_CT_UNITS_DECIBELS 0x40000 +#define MIXERCONTROL_CT_UNITS_PERCENT 0x50000 +#define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM) +#define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED) +#define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1) +#define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN+1) +#define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN+2) +#define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN+3) +#define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN+4) +#define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN+5) +#define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS) +#define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED) +#define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT) +#define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED) +#define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER+1) +#define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER+2) +#define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER+1) +#define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER+2) +#define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER+3) +#define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER+4) +#define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1) +#define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN) +#define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1) +#define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED) +#define MIXER_GETLINECONTROLSF_ALL 0 +#define MIXER_GETLINECONTROLSF_ONEBYID 1 +#define MIXER_GETLINECONTROLSF_ONEBYTYPE 2 +#define MIXER_GETLINECONTROLSF_QUERYMASK 15 +#define MIXER_GETCONTROLDETAILSF_VALUE 0 +#define MIXER_GETCONTROLDETAILSF_LISTTEXT 1 +#define MIXER_GETCONTROLDETAILSF_QUERYMASK 15 +#define MIXER_SETCONTROLDETAILSF_VALUE 0 +#define MIXER_SETCONTROLDETAILSF_CUSTOM 1 +#define MIXER_SETCONTROLDETAILSF_QUERYMASK 15 +#define TIMERR_NOERROR 0 +#define TIMERR_NOCANDO (TIMERR_BASE+1) +#define TIMERR_STRUCT (TIMERR_BASE+33) +#define TIME_ONESHOT 0 +#define TIME_PERIODIC 1 +#define TIME_CALLBACK_FUNCTION 0 +#define TIME_CALLBACK_EVENT_SET 16 +#define TIME_CALLBACK_EVENT_PULSE 32 +#if (WINVER >= 0x0501) +#define TIME_KILL_SYNCHRONOUS 0x0100 +#endif +#define JOYERR_NOERROR (0) +#define JOYERR_PARMS (JOYERR_BASE+5) +#define JOYERR_NOCANDO (JOYERR_BASE+6) +#define JOYERR_UNPLUGGED (JOYERR_BASE+7) +#define JOY_BUTTON1 1 +#define JOY_BUTTON2 2 +#define JOY_BUTTON3 4 +#define JOY_BUTTON4 8 +#define JOY_BUTTON1CHG 256 +#define JOY_BUTTON2CHG 512 +#define JOY_BUTTON3CHG 1024 +#define JOY_BUTTON4CHG 2048 +#define JOY_BUTTON5 257 +#define JOY_BUTTON6 513 +#define JOY_BUTTON7 1025 +#define JOY_BUTTON8 2049 +#define JOY_BUTTON9 256 +#define JOY_BUTTON10 512 +#define JOY_BUTTON11 1024 +#define JOY_BUTTON12 2048 +#define JOY_BUTTON13 4096 +#define JOY_BUTTON14 8192 +#define JOY_BUTTON15 16384 +#define JOY_BUTTON16 32768 +#define JOY_BUTTON17 65536 +#define JOY_BUTTON18 0x20000 +#define JOY_BUTTON19 0x40000 +#define JOY_BUTTON20 0x80000 +#define JOY_BUTTON21 0x100000 +#define JOY_BUTTON22 0x200000 +#define JOY_BUTTON23 0x400000 +#define JOY_BUTTON24 0x800000 +#define JOY_BUTTON25 0x1000000 +#define JOY_BUTTON26 0x2000000 +#define JOY_BUTTON27 0x4000000 +#define JOY_BUTTON28 0x8000000 +#define JOY_BUTTON29 0x10000000 +#define JOY_BUTTON30 0x20000000 +#define JOY_BUTTON31 0x40000000 +#define JOY_BUTTON32 0x80000000 +#define JOY_POVCENTERED ((WORD)-1) +#define JOY_POVFORWARD 0 +#define JOY_POVRIGHT 9000 +#define JOY_POVBACKWARD 18000 +#define JOY_POVLEFT 27000 +#define JOY_RETURNX 1 +#define JOY_RETURNY 2 +#define JOY_RETURNZ 4l +#define JOY_RETURNR 8 +#define JOY_RETURNU 16 +#define JOY_RETURNV 32 +#define JOY_RETURNPOV 64 +#define JOY_RETURNBUTTONS 128 +#define JOY_RETURNRAWDATA 256 +#define JOY_RETURNPOVCTS 512 +#define JOY_RETURNCENTERED 1024 +#define JOY_USEDEADZONE 2048 +#define JOY_RETURNALL (JOY_RETURNX|JOY_RETURNY|JOY_RETURNZ|JOY_RETURNR|JOY_RETURNU|JOY_RETURNV|JOY_RETURNPOV|JOY_RETURNBUTTONS) +#define JOY_CAL_READALWAYS 0x10000 +#define JOY_CAL_READXYONLY 0x20000 +#define JOY_CAL_READ3 0x40000 +#define JOY_CAL_READ4 0x80000 +#define JOY_CAL_READXONLY 0x100000 +#define JOY_CAL_READYONLY 0x200000 +#define JOY_CAL_READ5 0x400000 +#define JOY_CAL_READ6 0x800000 +#define JOY_CAL_READZONLY 0x1000000 +#define JOY_CAL_READRONLY 0x2000000 +#define JOY_CAL_READUONLY 0x4000000 +#define JOY_CAL_READVONLY 0x8000000 +#define JOYSTICKID1 0 +#define JOYSTICKID2 1 +#define JOYCAPS_HASZ 1 +#define JOYCAPS_HASR 2 +#define JOYCAPS_HASU 4 +#define JOYCAPS_HASV 8 +#define JOYCAPS_HASPOV 16 +#define JOYCAPS_POV4DIR 32 +#define JOYCAPS_POVCTS 64 +#define MMIOERR_BASE 256 +#define MMIOERR_FILENOTFOUND (MMIOERR_BASE+1) +#define MMIOERR_OUTOFMEMORY (MMIOERR_BASE+2) +#define MMIOERR_CANNOTOPEN (MMIOERR_BASE+3) +#define MMIOERR_CANNOTCLOSE (MMIOERR_BASE+4) +#define MMIOERR_CANNOTREAD (MMIOERR_BASE+5) +#define MMIOERR_CANNOTWRITE (MMIOERR_BASE+6) +#define MMIOERR_CANNOTSEEK (MMIOERR_BASE+7) +#define MMIOERR_CANNOTEXPAND (MMIOERR_BASE+8) +#define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE+9) +#define MMIOERR_UNBUFFERED (MMIOERR_BASE+10) +#define MMIOERR_PATHNOTFOUND (MMIOERR_BASE+11) +#define MMIOERR_ACCESSDENIED (MMIOERR_BASE+12) +#define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE+13) +#define MMIOERR_NETWORKERROR (MMIOERR_BASE+14) +#define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE+15) +#define MMIOERR_INVALIDFILE (MMIOERR_BASE+16) +#define CFSEPCHAR '+' +#define MMIO_RWMODE 3 +#define MMIO_SHAREMODE 0x70 +#define MMIO_CREATE 0x1000 +#define MMIO_PARSE 256 +#define MMIO_DELETE 512 +#define MMIO_EXIST 0x4000 +#define MMIO_ALLOCBUF 0x10000 +#define MMIO_GETTEMP 0x20000 +#define MMIO_DIRTY 0x10000000 +#define MMIO_READ 0 +#define MMIO_WRITE 1 +#define MMIO_READWRITE 2 +#define MMIO_COMPAT 0 +#define MMIO_EXCLUSIVE 16 +#define MMIO_DENYWRITE 32 +#define MMIO_DENYREAD 0x30 +#define MMIO_DENYNONE 64 +#define MMIO_FHOPEN 16 +#define MMIO_EMPTYBUF 16 +#define MMIO_TOUPPER 16 +#define MMIO_INSTALLPROC 0x10000 +#define MMIO_GLOBALPROC 0x10000000 +#define MMIO_REMOVEPROC 0x20000 +#define MMIO_UNICODEPROC 0x1000000 +#define MMIO_FINDPROC 0x40000 +#define MMIO_FINDCHUNK 16 +#define MMIO_FINDRIFF 32 +#define MMIO_FINDLIST 64 +#define MMIO_CREATERIFF 32 +#define MMIO_CREATELIST 64 +#define MMIOM_READ MMIO_READ +#define MMIOM_WRITE MMIO_WRITE +#define MMIOM_SEEK 2 +#define MMIOM_OPEN 3 +#define MMIOM_CLOSE 4 +#define MMIOM_WRITEFLUSH 5 +#define MMIOM_RENAME 6 +#define MMIOM_USER 0x8000 +#define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F') +#define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T') +#define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ') +#define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ') +#define MMIO_DEFAULTBUFFER 8192 +#define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE+1) +#define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE+3) +#define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE+5) +#define MCIERR_HARDWARE (MCIERR_BASE+6) +#define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE+7) +#define MCIERR_OUT_OF_MEMORY (MCIERR_BASE+8) +#define MCIERR_DEVICE_OPEN (MCIERR_BASE+9) +#define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE+10) +#define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE+11) +#define MCIERR_PARAM_OVERFLOW (MCIERR_BASE+12) +#define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE+13) +#define MCIERR_BAD_INTEGER (MCIERR_BASE+14) +#define MCIERR_PARSER_INTERNAL (MCIERR_BASE+15) +#define MCIERR_DRIVER_INTERNAL (MCIERR_BASE+16) +#define MCIERR_MISSING_PARAMETER (MCIERR_BASE+17) +#define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE+18) +#define MCIERR_FILE_NOT_FOUND (MCIERR_BASE+19) +#define MCIERR_DEVICE_NOT_READY (MCIERR_BASE+20) +#define MCIERR_INTERNAL (MCIERR_BASE+21) +#define MCIERR_DRIVER (MCIERR_BASE+22) +#define MCIERR_CANNOT_USE_ALL (MCIERR_BASE+23) +#define MCIERR_MULTIPLE (MCIERR_BASE+24) +#define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE+25) +#define MCIERR_OUTOFRANGE (MCIERR_BASE+26) +#define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE+28) +#define MCIERR_FILE_NOT_SAVED (MCIERR_BASE+30) +#define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE+31) +#define MCIERR_DEVICE_LOCKED (MCIERR_BASE+32) +#define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE+33) +#define MCIERR_BAD_CONSTANT (MCIERR_BASE+34) +#define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE+35) +#define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE+36) +#define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE+37) +#define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE+38) +#define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE+39) +#define MCIERR_INVALID_FILE (MCIERR_BASE+40) +#define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE+41) +#define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE+42) +#define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE+43) +#define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE+44) +#define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE+45) +#define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE+46) +#define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE+47) +#define MCIERR_FILENAME_REQUIRED (MCIERR_BASE+48) +#define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE+49) +#define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE+50) +#define MCIERR_GET_CD (MCIERR_BASE+51) +#define MCIERR_SET_CD (MCIERR_BASE+52) +#define MCIERR_SET_DRIVE (MCIERR_BASE+53) +#define MCIERR_DEVICE_LENGTH (MCIERR_BASE+54) +#define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE+55) +#define MCIERR_NO_INTEGER (MCIERR_BASE+56) +#define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE+64) +#define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE+65) +#define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE+66) +#define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE+67) +#define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE+68) +#define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE+69) +#define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE+70) +#define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE+71) +#define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE+72) +#define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE+73) +#define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE+80) +#define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE+81) +#define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE+82) +#define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE+83) +#define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE+84) +#define MCIERR_SEQ_TIMER (MCIERR_BASE+85) +#define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE+86) +#define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE+87) +#define MCIERR_NO_WINDOW (MCIERR_BASE+90) +#define MCIERR_CREATEWINDOW (MCIERR_BASE+91) +#define MCIERR_FILE_READ (MCIERR_BASE+92) +#define MCIERR_FILE_WRITE (MCIERR_BASE+93) +#define MCIERR_NO_IDENTITY (MCIERR_BASE+94) +#define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE+256) +#define MCI_FIRST DRV_MCI_FIRST +#define MCI_OPEN 0x803 +#define MCI_CLOSE 0x804 +#define MCI_ESCAPE 0x805 +#define MCI_PLAY 0x806 +#define MCI_SEEK 0x807 +#define MCI_STOP 0x808 +#define MCI_PAUSE 0x809 +#define MCI_INFO 0x80A +#define MCI_GETDEVCAPS 0x80B +#define MCI_SPIN 0x80C +#define MCI_SET 0x80D +#define MCI_STEP 0x80E +#define MCI_RECORD 0x80F +#define MCI_SYSINFO 0x810 +#define MCI_BREAK 0x811 +#define MCI_SAVE 0x813 +#define MCI_STATUS 0x814 +#define MCI_CUE 0x830 +#define MCI_REALIZE 0x840 +#define MCI_WINDOW 0x841 +#define MCI_PUT 0x842 +#define MCI_WHERE 0x843 +#define MCI_FREEZE 0x844 +#define MCI_UNFREEZE 0x845 +#define MCI_LOAD 0x850 +#define MCI_CUT 0x851 +#define MCI_COPY 0x852 +#define MCI_PASTE 0x853 +#define MCI_UPDATE 0x854 +#define MCI_RESUME 0x855 +#define MCI_DELETE 0x856 +#define MCI_USER_MESSAGES (DRV_MCI_FIRST+0x400) +#define MCI_LAST 0xFFF +#define MCI_ALL_DEVICE_ID ((MCIDEVICEID)-1) +#define MCI_DEVTYPE_VCR 513 +#define MCI_DEVTYPE_VIDEODISC 514 +#define MCI_DEVTYPE_OVERLAY 515 +#define MCI_DEVTYPE_CD_AUDIO 516 +#define MCI_DEVTYPE_DAT 517 +#define MCI_DEVTYPE_SCANNER 518 +#define MCI_DEVTYPE_ANIMATION 519 +#define MCI_DEVTYPE_DIGITAL_VIDEO 520 +#define MCI_DEVTYPE_OTHER 521 +#define MCI_DEVTYPE_WAVEFORM_AUDIO 522 +#define MCI_DEVTYPE_SEQUENCER 523 +#define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR +#define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER +#define MCI_DEVTYPE_FIRST_USER 0x1000 +#define MCI_MODE_NOT_READY (MCI_STRING_OFFSET+12) +#define MCI_MODE_STOP (MCI_STRING_OFFSET+13) +#define MCI_MODE_PLAY (MCI_STRING_OFFSET+14) +#define MCI_MODE_RECORD (MCI_STRING_OFFSET+15) +#define MCI_MODE_SEEK (MCI_STRING_OFFSET+16) +#define MCI_MODE_PAUSE (MCI_STRING_OFFSET+17) +#define MCI_MODE_OPEN (MCI_STRING_OFFSET+18) +#define MCI_FORMAT_MILLISECONDS 0 +#define MCI_FORMAT_HMS 1 +#define MCI_FORMAT_MSF 2 +#define MCI_FORMAT_FRAMES 3 +#define MCI_FORMAT_SMPTE_24 4 +#define MCI_FORMAT_SMPTE_25 5 +#define MCI_FORMAT_SMPTE_30 6 +#define MCI_FORMAT_SMPTE_30DROP 7 +#define MCI_FORMAT_BYTES 8 +#define MCI_FORMAT_SAMPLES 9 +#define MCI_FORMAT_TMSF 10 +#define MCI_MSF_MINUTE(t) ((BYTE)(t)) +#define MCI_MSF_SECOND(t) ((BYTE)(((WORD)(t))>>8)) +#define MCI_MSF_FRAME(t) ((BYTE)((t)>>16)) +#define MCI_MAKE_MSF(m,s,f) ((DWORD)(((BYTE)(m)|((WORD)(s)<<8))|(((DWORD)(BYTE)(f))<<16))) +#define MCI_TMSF_TRACK(t) ((BYTE)(t)) +#define MCI_TMSF_MINUTE(t) ((BYTE)(((WORD)(t))>>8)) +#define MCI_TMSF_SECOND(t) ((BYTE)((t)>>16)) +#define MCI_TMSF_FRAME(t) ((BYTE)((t)>>24)) +#define MCI_MAKE_TMSF(t,m,s,f) ((DWORD)(((BYTE)(t)|((WORD)(m)<<8))|(((DWORD)(BYTE)(s)|((WORD)(f)<<8))<<16))) +#define MCI_HMS_HOUR(t) ((BYTE)(t)) +#define MCI_HMS_MINUTE(t) ((BYTE)(((WORD)(t))>>8)) +#define MCI_HMS_SECOND(t) ((BYTE)((t)>>16)) +#define MCI_MAKE_HMS(h,m,s) ((DWORD)(((BYTE)(h)|((WORD)(m)<<8))|(((DWORD)(BYTE)(s))<<16))) +#define MCI_NOTIFY_SUCCESSFUL 1 +#define MCI_NOTIFY_SUPERSEDED 2 +#define MCI_NOTIFY_ABORTED 4 +#define MCI_NOTIFY_FAILURE 8 +#define MCI_NOTIFY 1 +#define MCI_WAIT 2 +#define MCI_FROM 4 +#define MCI_TO 8 +#define MCI_TRACK 16 +#define MCI_OPEN_SHAREABLE 256 +#define MCI_OPEN_ELEMENT 512 +#define MCI_OPEN_ALIAS 1024 +#define MCI_OPEN_ELEMENT_ID 2048 +#define MCI_OPEN_TYPE_ID 0x1000 +#define MCI_OPEN_TYPE 0x2000 +#define MCI_SEEK_TO_START 256 +#define MCI_SEEK_TO_END 512 +#define MCI_STATUS_ITEM 256 +#define MCI_STATUS_START 512 +#define MCI_STATUS_LENGTH 1 +#define MCI_STATUS_POSITION 2 +#define MCI_STATUS_NUMBER_OF_TRACKS 3 +#define MCI_STATUS_MODE 4 +#define MCI_STATUS_MEDIA_PRESENT 5 +#define MCI_STATUS_TIME_FORMAT 6 +#define MCI_STATUS_READY 7 +#define MCI_STATUS_CURRENT_TRACK 8 +#define MCI_INFO_PRODUCT 256 +#define MCI_INFO_FILE 512 +#define MCI_INFO_MEDIA_UPC 1024 +#define MCI_INFO_MEDIA_IDENTITY 2048 +#define MCI_INFO_NAME 0x1000 +#define MCI_INFO_COPYRIGHT 0x2000 +#define MCI_GETDEVCAPS_ITEM 256 +#define MCI_GETDEVCAPS_CAN_RECORD 1 +#define MCI_GETDEVCAPS_HAS_AUDIO 2 +#define MCI_GETDEVCAPS_HAS_VIDEO 3 +#define MCI_GETDEVCAPS_DEVICE_TYPE 4 +#define MCI_GETDEVCAPS_USES_FILES 5 +#define MCI_GETDEVCAPS_COMPOUND_DEVICE 6 +#define MCI_GETDEVCAPS_CAN_EJECT 7 +#define MCI_GETDEVCAPS_CAN_PLAY 8 +#define MCI_GETDEVCAPS_CAN_SAVE 9 +#define MCI_SYSINFO_QUANTITY 256 +#define MCI_SYSINFO_OPEN 512 +#define MCI_SYSINFO_NAME 1024 +#define MCI_SYSINFO_INSTALLNAME 2048 +#define MCI_SET_DOOR_OPEN 256 +#define MCI_SET_DOOR_CLOSED 512 +#define MCI_SET_TIME_FORMAT 1024 +#define MCI_SET_AUDIO 2048 +#define MCI_SET_VIDEO 0x1000 +#define MCI_SET_ON 0x2000 +#define MCI_SET_OFF 0x4000 +#define MCI_SET_AUDIO_ALL 0 +#define MCI_SET_AUDIO_LEFT 1 +#define MCI_SET_AUDIO_RIGHT 2 +#define MCI_BREAK_KEY 256 +#define MCI_BREAK_HWND 512 +#define MCI_BREAK_OFF 1024 +#define MCI_RECORD_INSERT 256 +#define MCI_RECORD_OVERWRITE 512 +#define MCI_SAVE_FILE 256 +#define MCI_LOAD_FILE 256 +#define MCI_VD_MODE_PARK (MCI_VD_OFFSET+1) +#define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET+2) +#define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET+3) +#define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET+4) +#define MCI_VD_FORMAT_TRACK 0x4001 +#define MCI_VD_PLAY_REVERSE 0x10000 +#define MCI_VD_PLAY_FAST 0x20000 +#define MCI_VD_PLAY_SPEED 0x40000 +#define MCI_VD_PLAY_SCAN 0x80000 +#define MCI_VD_PLAY_SLOW 0x100000 +#define MCI_VD_SEEK_REVERSE 0x10000 +#define MCI_VD_STATUS_SPEED 0x4002 +#define MCI_VD_STATUS_FORWARD 0x4003 +#define MCI_VD_STATUS_MEDIA_TYPE 0x4004 +#define MCI_VD_STATUS_SIDE 0x4005 +#define MCI_VD_STATUS_DISC_SIZE 0x4006 +#define MCI_VD_GETDEVCAPS_CLV 0x10000 +#define MCI_VD_GETDEVCAPS_CAV 0x20000 +#define MCI_VD_SPIN_UP 0x10000 +#define MCI_VD_SPIN_DOWN 0x20000 +#define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x4002 +#define MCI_VD_GETDEVCAPS_FAST_RATE 0x4003 +#define MCI_VD_GETDEVCAPS_SLOW_RATE 0x4004 +#define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x4005 +#define MCI_VD_STEP_FRAMES 0x10000 +#define MCI_VD_STEP_REVERSE 0x20000 +#define MCI_VD_ESCAPE_STRING 256 +#define MCI_CDA_STATUS_TYPE_TRACK 0x4001 +#define MCI_CDA_TRACK_AUDIO MCI_CD_OFFSET +#define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET+1) +#define MCI_WAVE_PCM MCI_WAVE_OFFSET +#define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET+1) +#define MCI_WAVE_OPEN_BUFFER 0x10000 +#define MCI_WAVE_SET_FORMATTAG 0x10000 +#define MCI_WAVE_SET_CHANNELS 0x20000 +#define MCI_WAVE_SET_SAMPLESPERSEC 0x40000 +#define MCI_WAVE_SET_AVGBYTESPERSEC 0x80000 +#define MCI_WAVE_SET_BLOCKALIGN 0x100000 +#define MCI_WAVE_SET_BITSPERSAMPLE 0x200000 +#define MCI_WAVE_INPUT 0x400000 +#define MCI_WAVE_OUTPUT 0x800000 +#define MCI_WAVE_STATUS_FORMATTAG 0x4001 +#define MCI_WAVE_STATUS_CHANNELS 0x4002 +#define MCI_WAVE_STATUS_SAMPLESPERSEC 0x4003 +#define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x4004 +#define MCI_WAVE_STATUS_BLOCKALIGN 0x4005 +#define MCI_WAVE_STATUS_BITSPERSAMPLE 0x4006 +#define MCI_WAVE_STATUS_LEVEL 0x4007 +#define MCI_WAVE_SET_ANYINPUT 0x4000000 +#define MCI_WAVE_SET_ANYOUTPUT 0x8000000 +#define MCI_WAVE_GETDEVCAPS_INPUTS 0x4001 +#define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x4002 +#define MCI_SEQ_DIV_PPQN MCI_SEQ_OFFSET +#define MCI_SEQ_DIV_SMPTE_24 (MCI_SEQ_OFFSET+1) +#define MCI_SEQ_DIV_SMPTE_25 (MCI_SEQ_OFFSET+2) +#define MCI_SEQ_DIV_SMPTE_30DROP (MCI_SEQ_OFFSET+3) +#define MCI_SEQ_DIV_SMPTE_30 (MCI_SEQ_OFFSET+4) +#define MCI_SEQ_FORMAT_SONGPTR 0x4001 +#define MCI_SEQ_FILE 0x4002 +#define MCI_SEQ_MIDI 0x4003 +#define MCI_SEQ_SMPTE 0x4004 +#define MCI_SEQ_NONE 65533 +#define MCI_SEQ_MAPPER 65535 +#define MCI_SEQ_STATUS_TEMPO 0x4002 +#define MCI_SEQ_STATUS_PORT 0x4003 +#define MCI_SEQ_STATUS_SLAVE 0x4007 +#define MCI_SEQ_STATUS_MASTER 0x4008 +#define MCI_SEQ_STATUS_OFFSET 0x4009 +#define MCI_SEQ_STATUS_DIVTYPE 0x400A +#define MCI_SEQ_STATUS_NAME 0x400B +#define MCI_SEQ_STATUS_COPYRIGHT 0x400C +#define MCI_SEQ_SET_TEMPO 0x10000 +#define MCI_SEQ_SET_PORT 0x20000 +#define MCI_SEQ_SET_SLAVE 0x40000 +#define MCI_SEQ_SET_MASTER 0x80000 +#define MCI_SEQ_SET_OFFSET 0x1000000 +#define MCI_ANIM_OPEN_WS 0x10000 +#define MCI_ANIM_OPEN_PARENT 0x20000 +#define MCI_ANIM_OPEN_NOSTATIC 0x40000 +#define MCI_ANIM_PLAY_SPEED 0x10000 +#define MCI_ANIM_PLAY_REVERSE 0x20000 +#define MCI_ANIM_PLAY_FAST 0x40000 +#define MCI_ANIM_PLAY_SLOW 0x80000 +#define MCI_ANIM_PLAY_SCAN 0x100000 +#define MCI_ANIM_STEP_REVERSE 0x10000 +#define MCI_ANIM_STEP_FRAMES 0x20000 +#define MCI_ANIM_STATUS_SPEED 0x4001 +#define MCI_ANIM_STATUS_FORWARD 0x4002 +#define MCI_ANIM_STATUS_HWND 0x4003 +#define MCI_ANIM_STATUS_HPAL 0x4004 +#define MCI_ANIM_STATUS_STRETCH 0x4005 +#define MCI_ANIM_INFO_TEXT 0x10000 +#define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x4001 +#define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x4002 +#define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x4003 +#define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x4004 +#define MCI_ANIM_GETDEVCAPS_PALETTES 0x4006 +#define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x4007 +#define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x4008 +#define MCI_ANIM_REALIZE_NORM 0x10000 +#define MCI_ANIM_REALIZE_BKGD 0x20000 +#define MCI_ANIM_WINDOW_HWND 0x10000 +#define MCI_ANIM_WINDOW_STATE 0x40000 +#define MCI_ANIM_WINDOW_TEXT 0x80000 +#define MCI_ANIM_WINDOW_ENABLE_STRETCH 0x100000 +#define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x200000 +#define MCI_ANIM_WINDOW_DEFAULT 0xL +#define MCI_ANIM_RECT 0x10000 +#define MCI_ANIM_PUT_SOURCE 0x20000 +#define MCI_ANIM_PUT_DESTINATION 0x40000 +#define MCI_ANIM_WHERE_SOURCE 0x20000 +#define MCI_ANIM_WHERE_DESTINATION 0x40000 +#define MCI_ANIM_UPDATE_HDC 0x20000 +#define MCI_OVLY_OPEN_WS 0x10000 +#define MCI_OVLY_OPEN_PARENT 0x20000 +#define MCI_OVLY_STATUS_HWND 0x4001 +#define MCI_OVLY_STATUS_STRETCH 0x4002 +#define MCI_OVLY_INFO_TEXT 0x10000 +#define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x4001 +#define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x4002 +#define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x4003 +#define MCI_OVLY_WINDOW_HWND 0x10000 +#define MCI_OVLY_WINDOW_STATE 0x40000 +#define MCI_OVLY_WINDOW_TEXT 0x80000 +#define MCI_OVLY_WINDOW_ENABLE_STRETCH 0x100000 +#define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x200000 +#define MCI_OVLY_WINDOW_DEFAULT 0xL +#define MCI_OVLY_RECT 0x10000 +#define MCI_OVLY_PUT_SOURCE 0x20000 +#define MCI_OVLY_PUT_DESTINATION 0x40000 +#define MCI_OVLY_PUT_FRAME 0x80000 +#define MCI_OVLY_PUT_VIDEO 0x100000 +#define MCI_OVLY_WHERE_SOURCE 0x20000 +#define MCI_OVLY_WHERE_DESTINATION 0x40000 +#define MCI_OVLY_WHERE_FRAME 0x80000 +#define MCI_OVLY_WHERE_VIDEO 0x100000 +#define NEWTRANSPARENT 3 +#define QUERYROPSUPPORT 40 +#define SELECTDIB 41 +#define DIBINDEX(n) MAKELONG((n),0x10FF) +#define SC_SCREENSAVE 0xF140 +#define CAPS1 94 +#define C1_TRANSPARENT 1 +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +typedef DWORD MCIERROR; +typedef UINT MCIDEVICEID; +typedef UINT(CALLBACK *YIELDPROC)(MCIDEVICEID,DWORD); +typedef UINT MMVERSION; +typedef UINT MMRESULT; +typedef struct mmtime_tag { + UINT wType; + union { + DWORD ms; + DWORD sample; + DWORD cb; + DWORD ticks; + struct { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; + BYTE pad[2]; + } smpte; + struct { + DWORD songptrpos; + } midi; + } u; +} MMTIME,*PMMTIME,*LPMMTIME; +DECLARE_HANDLE(HDRVR); +typedef struct tagDRVCONFIGINFO { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; +} DRVCONFIGINFO,*PDRVCONFIGINFO,*LPDRVCONFIGINFO; +typedef struct DRVCONFIGINFOEX { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; + DWORD dnDevNode; +} DRVCONFIGINFOEX,*PDRVCONFIGINFOEX,*LPDRVCONFIGINFOEX; +typedef LRESULT(CALLBACK* DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM); +typedef void (CALLBACK DRVCALLBACK)(HDRVR,UINT,DWORD,DWORD,DWORD); +typedef DRVCALLBACK *LPDRVCALLBACK; +typedef DRVCALLBACK *PDRVCALLBACK; +DECLARE_HANDLE(HWAVE); +DECLARE_HANDLE(HWAVEIN); +DECLARE_HANDLE(HWAVEOUT); +typedef HWAVEIN *LPHWAVEIN; +typedef HWAVEOUT *LPHWAVEOUT; +typedef DRVCALLBACK WAVECALLBACK; +typedef WAVECALLBACK *LPWAVECALLBACK; +typedef struct wavehdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + DWORD dwLoops; + struct wavehdr_tag *lpNext; + DWORD reserved; +} WAVEHDR,*PWAVEHDR,*LPWAVEHDR; +typedef struct tagWAVEOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} WAVEOUTCAPSA,*PWAVEOUTCAPSA,*LPWAVEOUTCAPSA; +typedef struct tagWAVEOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} WAVEOUTCAPSW,*PWAVEOUTCAPSW,*LPWAVEOUTCAPSW; +typedef struct tagWAVEINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} WAVEINCAPSA,*PWAVEINCAPSA,*LPWAVEINCAPSA; +typedef struct tagWAVEINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} WAVEINCAPSW,*PWAVEINCAPSW,*LPWAVEINCAPSW; +typedef struct waveformat_tag { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} WAVEFORMAT,*PWAVEFORMAT,*LPWAVEFORMAT; +typedef struct pcmwaveformat_tag { + WAVEFORMAT wf; + WORD wBitsPerSample; +} PCMWAVEFORMAT, *PPCMWAVEFORMAT,*LPPCMWAVEFORMAT; +#ifndef _WAVEFORMATEX_ +#define _WAVEFORMATEX_ +typedef struct tWAVEFORMATEX { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; +} WAVEFORMATEX,*PWAVEFORMATEX,*LPWAVEFORMATEX; +typedef const WAVEFORMATEX *LPCWAVEFORMATEX; +#endif +DECLARE_HANDLE(HMIDI); +DECLARE_HANDLE(HMIDIIN); +DECLARE_HANDLE(HMIDIOUT); +DECLARE_HANDLE(HMIDISTRM); +typedef HMIDI *LPHMIDI; +typedef HMIDIIN *LPHMIDIIN; +typedef HMIDIOUT *LPHMIDIOUT; +typedef HMIDISTRM *LPHMIDISTRM; +typedef DRVCALLBACK MIDICALLBACK; +typedef MIDICALLBACK *LPMIDICALLBACK; +typedef WORD PATCHARRAY[MIDIPATCHSIZE]; +typedef WORD *LPPATCHARRAY; +typedef WORD KEYARRAY[MIDIPATCHSIZE]; +typedef WORD *LPKEYARRAY; +typedef struct tagMIDIOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} MIDIOUTCAPSA,*PMIDIOUTCAPSA,*LPMIDIOUTCAPSA; +typedef struct tagMIDIOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} MIDIOUTCAPSW,*PMIDIOUTCAPSW,*LPMIDIOUTCAPSW; +typedef struct tagMIDIINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwSupport; +} MIDIINCAPSA,*PMIDIINCAPSA,*LPMIDIINCAPSA; +typedef struct tagMIDIINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwSupport; +} MIDIINCAPSW,*PMIDIINCAPSW,*NPMIDIINCAPSW,*LPMIDIINCAPSW; +typedef struct midihdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + struct midihdr_tag *lpNext; + DWORD reserved; + DWORD dwOffset; + DWORD dwReserved[8]; +} MIDIHDR,*PMIDIHDR,*LPMIDIHDR; +typedef struct midievent_tag { + DWORD dwDeltaTime; + DWORD dwStreamID; + DWORD dwEvent; + DWORD dwParms[1]; +} MIDIEVENT; +typedef struct midistrmbuffver_tag { + DWORD dwVersion; + DWORD dwMid; + DWORD dwOEMVersion; +} MIDISTRMBUFFVER; +typedef struct midiproptimediv_tag { + DWORD cbStruct; + DWORD dwTimeDiv; +} MIDIPROPTIMEDIV,*LPMIDIPROPTIMEDIV; +typedef struct midiproptempo_tag { + DWORD cbStruct; + DWORD dwTempo; +} MIDIPROPTEMPO,*LPMIDIPROPTEMPO; +typedef struct tagAUXCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} AUXCAPSA,*PAUXCAPSA,*LPAUXCAPSA; +typedef struct tagAUXCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} AUXCAPSW,*PAUXCAPSW,*LPAUXCAPSW; +DECLARE_HANDLE(HMIXEROBJ); +typedef HMIXEROBJ *LPHMIXEROBJ; +DECLARE_HANDLE(HMIXER); +typedef HMIXER *LPHMIXER; +typedef struct tagMIXERCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; +} MIXERCAPSA,*PMIXERCAPSA,*LPMIXERCAPSA; +typedef struct tagMIXERCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; +} MIXERCAPSW,*PMIXERCAPSW,*LPMIXERCAPSW; +typedef struct tagMIXERLINEA { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + CHAR szShortName[MIXER_SHORT_NAME_CHARS]; + CHAR szName[MIXER_LONG_NAME_CHARS]; + struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + } Target; +} MIXERLINEA,*PMIXERLINEA,*LPMIXERLINEA; +typedef struct tagMIXERLINEW { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; + WCHAR szName[MIXER_LONG_NAME_CHARS]; + struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + } Target; +} MIXERLINEW,*PMIXERLINEW,*LPMIXERLINEW; +typedef struct tagMIXERCONTROLA { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + CHAR szShortName[MIXER_SHORT_NAME_CHARS]; + CHAR szName[MIXER_LONG_NAME_CHARS]; + union { + _ANONYMOUS_STRUCT struct { + LONG lMinimum; + LONG lMaximum; + }_STRUCT_NAME(s); + _ANONYMOUS_STRUCT struct { + DWORD dwMinimum; + DWORD dwMaximum; + }_STRUCT_NAME(s1); + DWORD dwReserved[6]; + } Bounds; + union { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; + } Metrics; +} MIXERCONTROLA,*PMIXERCONTROLA,*LPMIXERCONTROLA; +typedef struct tagMIXERCONTROLW { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; + WCHAR szName[MIXER_LONG_NAME_CHARS]; + union { + _ANONYMOUS_STRUCT struct { + LONG lMinimum; + LONG lMaximum; + }_STRUCT_NAME(s); + _ANONYMOUS_STRUCT struct { + DWORD dwMinimum; + DWORD dwMaximum; + }_STRUCT_NAME(s1); + DWORD dwReserved[6]; + } Bounds; + union { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; + } Metrics; +} MIXERCONTROLW,*PMIXERCONTROLW,*LPMIXERCONTROLW; +typedef struct tagMIXERLINECONTROLSA { + DWORD cbStruct; + DWORD dwLineID; + _ANONYMOUS_UNION union { + DWORD dwControlID; + DWORD dwControlType; + } DUMMYUNIONNAME; + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLA pamxctrl; +} MIXERLINECONTROLSA,*PMIXERLINECONTROLSA,*LPMIXERLINECONTROLSA; +typedef struct tagMIXERLINECONTROLSW { + DWORD cbStruct; + DWORD dwLineID; + _ANONYMOUS_UNION union { + DWORD dwControlID; + DWORD dwControlType; + } DUMMYUNIONNAME; + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLW pamxctrl; +} MIXERLINECONTROLSW,*PMIXERLINECONTROLSW,*LPMIXERLINECONTROLSW; +typedef struct tMIXERCONTROLDETAILS { + DWORD cbStruct; + DWORD dwControlID; + DWORD cChannels; + _ANONYMOUS_UNION union { + HWND hwndOwner; + DWORD cMultipleItems; + } DUMMYUNIONNAME; + DWORD cbDetails; + PVOID paDetails; +} MIXERCONTROLDETAILS,*PMIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS; +typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA { + DWORD dwParam1; + DWORD dwParam2; + CHAR szName[MIXER_LONG_NAME_CHARS]; +} MIXERCONTROLDETAILS_LISTTEXTA,*PMIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA; +typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW { + DWORD dwParam1; + DWORD dwParam2; + WCHAR szName[MIXER_LONG_NAME_CHARS]; +} MIXERCONTROLDETAILS_LISTTEXTW,*PMIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW; +typedef struct tMIXERCONTROLDETAILS_BOOLEAN { + LONG fValue; +} MIXERCONTROLDETAILS_BOOLEAN,*PMIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN; +typedef struct tMIXERCONTROLDETAILS_SIGNED { + LONG lValue; +} MIXERCONTROLDETAILS_SIGNED,*PMIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED; +typedef struct tMIXERCONTROLDETAILS_UNSIGNED { + DWORD dwValue; +} MIXERCONTROLDETAILS_UNSIGNED,*PMIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED; +typedef void(CALLBACK TIMECALLBACK)(UINT,UINT,DWORD,DWORD,DWORD); +typedef TIMECALLBACK *LPTIMECALLBACK; +typedef struct timecaps_tag { + UINT wPeriodMin; + UINT wPeriodMax; +} TIMECAPS,*PTIMECAPS,*LPTIMECAPS; +typedef struct tagJOYCAPSA { + WORD wMid; + WORD wPid; + CHAR szPname[MAXPNAMELEN]; + 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 szRegKey[MAXPNAMELEN]; + CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; +} JOYCAPSA,*PJOYCAPSA,*LPJOYCAPSA; +typedef struct tagJOYCAPSW { + WORD wMid; + WORD wPid; + WCHAR szPname[MAXPNAMELEN]; + 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 szRegKey[MAXPNAMELEN]; + WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; +} JOYCAPSW,*PJOYCAPSW,*LPJOYCAPSW; +typedef struct joyinfo_tag { + UINT wXpos; + UINT wYpos; + UINT wZpos; + UINT wButtons; +} JOYINFO,*PJOYINFO,*LPJOYINFO; +typedef struct joyinfoex_tag { + 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; +} JOYINFOEX,*PJOYINFOEX,*LPJOYINFOEX; +typedef DWORD FOURCC; +typedef char *HPSTR; +DECLARE_HANDLE(HMMIO); +typedef LRESULT (CALLBACK MMIOPROC)(LPSTR,UINT,LPARAM,LPARAM); +typedef MMIOPROC *LPMMIOPROC; +typedef 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 adwInfo[3]; + DWORD dwReserved1; + DWORD dwReserved2; + HMMIO hmmio; +} MMIOINFO,*PMMIOINFO,*LPMMIOINFO; +typedef const MMIOINFO *LPCMMIOINFO; +typedef struct _MMCKINFO { + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} MMCKINFO,*PMMCKINFO,*LPMMCKINFO; +typedef const MMCKINFO *LPCMMCKINFO; +typedef struct tagMCI_GENERIC_PARMS { + DWORD dwCallback; +} MCI_GENERIC_PARMS,*PMCI_GENERIC_PARMS,*LPMCI_GENERIC_PARMS; +typedef struct tagMCI_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} MCI_OPEN_PARMSA,*PMCI_OPEN_PARMSA,*LPMCI_OPEN_PARMSA; +typedef struct tagMCI_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; +} MCI_OPEN_PARMSW,*PMCI_OPEN_PARMSW,*LPMCI_OPEN_PARMSW; +typedef struct tagMCI_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_PLAY_PARMS,*PMCI_PLAY_PARMS,*LPMCI_PLAY_PARMS; +typedef struct tagMCI_SEEK_PARMS { + DWORD dwCallback; + DWORD dwTo; +} MCI_SEEK_PARMS, *PMCI_SEEK_PARMS,*LPMCI_SEEK_PARMS; +typedef struct tagMCI_STATUS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; + DWORD dwTrack; +} MCI_STATUS_PARMS,*PMCI_STATUS_PARMS,*LPMCI_STATUS_PARMS; +typedef struct tagMCI_INFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; +} MCI_INFO_PARMSA,*LPMCI_INFO_PARMSA; +typedef struct tagMCI_INFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; +} MCI_INFO_PARMSW,*LPMCI_INFO_PARMSW; +typedef struct tagMCI_GETDEVCAPS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; +} MCI_GETDEVCAPS_PARMS,*PMCI_GETDEVCAPS_PARMS,*LPMCI_GETDEVCAPS_PARMS; +typedef struct tagMCI_SYSINFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} MCI_SYSINFO_PARMSA,*PMCI_SYSINFO_PARMSA,*LPMCI_SYSINFO_PARMSA; +typedef struct tagMCI_SYSINFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} MCI_SYSINFO_PARMSW,*PMCI_SYSINFO_PARMSW,*LPMCI_SYSINFO_PARMSW; +typedef struct tagMCI_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} MCI_SET_PARMS,*PMCI_SET_PARMS,*LPMCI_SET_PARMS; +typedef struct tagMCI_BREAK_PARMS { + DWORD dwCallback; + int nVirtKey; + HWND hwndBreak; +} MCI_BREAK_PARMS,*PMCI_BREAK_PARMS,*LPMCI_BREAK_PARMS; +typedef struct tagMCI_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} MCI_SAVE_PARMSA,*PMCI_SAVE_PARMSA,*LPMCI_SAVE_PARMSA; +typedef struct tagMCI_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} MCI_SAVE_PARMSW,*PMCI_SAVE_PARMSW,*LPMCI_SAVE_PARMSW; +typedef struct tagMCI_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} MCI_LOAD_PARMSA,*PMCI_LOAD_PARMSA,*LPMCI_LOAD_PARMSA; +typedef struct tagMCI_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} MCI_LOAD_PARMSW,*PMCI_LOAD_PARMSW,*LPMCI_LOAD_PARMSW; +typedef struct tagMCI_RECORD_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_RECORD_PARMS,*LPMCI_RECORD_PARMS; +typedef struct tagMCI_VD_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} MCI_VD_PLAY_PARMS,*PMCI_VD_PLAY_PARMS,*LPMCI_VD_PLAY_PARMS; +typedef struct tagMCI_VD_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} MCI_VD_STEP_PARMS,*PMCI_VD_STEP_PARMS,*LPMCI_VD_STEP_PARMS; +typedef struct tagMCI_VD_ESCAPE_PARMSA { + DWORD dwCallback; + LPCSTR lpstrCommand; +} MCI_VD_ESCAPE_PARMSA,*PMCI_VD_ESCAPE_PARMSA,*LPMCI_VD_ESCAPE_PARMSA; +typedef struct tagMCI_VD_ESCAPE_PARMSW { + DWORD dwCallback; + LPCWSTR lpstrCommand; +} MCI_VD_ESCAPE_PARMSW,*PMCI_VD_ESCAPE_PARMSW,*LPMCI_VD_ESCAPE_PARMSW; +typedef struct tagMCI_WAVE_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} MCI_WAVE_OPEN_PARMSA,*PMCI_WAVE_OPEN_PARMSA,*LPMCI_WAVE_OPEN_PARMSA; +typedef struct tagMCI_WAVE_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwBufferSeconds; +} MCI_WAVE_OPEN_PARMSW,*PMCI_WAVE_OPEN_PARMSW,*LPMCI_WAVE_OPEN_PARMSW; +typedef struct tagMCI_WAVE_DELETE_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} MCI_WAVE_DELETE_PARMS, *PMCI_WAVE_DELETE_PARMS,*LPMCI_WAVE_DELETE_PARMS; +typedef struct tagMCI_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; +} MCI_WAVE_SET_PARMS,*PMCI_WAVE_SET_PARMS,*LPMCI_WAVE_SET_PARMS; + +LRESULT WINAPI CloseDriver(HDRVR,LONG,LONG); +HDRVR WINAPI OpenDriver(LPCWSTR,LPCWSTR,LONG); +LRESULT WINAPI SendDriverMessage(HDRVR,UINT,LONG,LONG); +HMODULE WINAPI DrvGetModuleHandle(HDRVR); +HMODULE WINAPI GetDriverModuleHandle(HDRVR); +LRESULT WINAPI DefDriverProc(DWORD,HDRVR,UINT,LPARAM,LPARAM); +UINT WINAPI mmsystemGetVersion(void); +#define OutputDebugStr OutputDebugString +BOOL WINAPI sndPlaySoundA(LPCSTR,UINT); +BOOL WINAPI sndPlaySoundW(LPCWSTR,UINT); +BOOL WINAPI PlaySoundA(LPCSTR,HMODULE,DWORD); +BOOL WINAPI PlaySoundW(LPCWSTR,HMODULE,DWORD); +UINT WINAPI waveOutGetNumDevs(void); +MMRESULT WINAPI waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT); +MMRESULT WINAPI waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT); +MMRESULT WINAPI waveOutGetVolume(HWAVEOUT,PDWORD); +MMRESULT WINAPI waveOutSetVolume(HWAVEOUT,DWORD); +MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT,LPSTR,UINT); +MMRESULT WINAPI waveOutGetErrorTextW(MMRESULT,LPWSTR,UINT); +MMRESULT WINAPI waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD); +MMRESULT WINAPI waveOutClose(HWAVEOUT); +MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT); +MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT,LPWAVEHDR,UINT); +MMRESULT WINAPI waveOutWrite(HWAVEOUT,LPWAVEHDR,UINT); +MMRESULT WINAPI waveOutPause(HWAVEOUT); +MMRESULT WINAPI waveOutRestart(HWAVEOUT); +MMRESULT WINAPI waveOutReset(HWAVEOUT); +MMRESULT WINAPI waveOutBreakLoop(HWAVEOUT); +MMRESULT WINAPI waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT); +MMRESULT WINAPI waveOutGetPitch(HWAVEOUT,PDWORD); +MMRESULT WINAPI waveOutSetPitch(HWAVEOUT,DWORD); +MMRESULT WINAPI waveOutGetPlaybackRate(HWAVEOUT,PDWORD); +MMRESULT WINAPI waveOutSetPlaybackRate(HWAVEOUT,DWORD); +MMRESULT WINAPI waveOutGetID(HWAVEOUT,LPUINT); +MMRESULT WINAPI waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD); +UINT WINAPI waveInGetNumDevs(void); +MMRESULT WINAPI waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT); +MMRESULT WINAPI waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT); +MMRESULT WINAPI waveInGetErrorTextA(MMRESULT,LPSTR,UINT); +MMRESULT WINAPI waveInGetErrorTextW(MMRESULT,LPWSTR,UINT); +MMRESULT WINAPI waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD); +MMRESULT WINAPI waveInClose(HWAVEIN); +MMRESULT WINAPI waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT); +MMRESULT WINAPI waveInUnprepareHeader(HWAVEIN,LPWAVEHDR,UINT); +MMRESULT WINAPI waveInAddBuffer(HWAVEIN,LPWAVEHDR,UINT); +MMRESULT WINAPI waveInStart(HWAVEIN); +MMRESULT WINAPI waveInStop(HWAVEIN); +MMRESULT WINAPI waveInReset(HWAVEIN); +MMRESULT WINAPI waveInGetPosition(HWAVEIN,LPMMTIME,UINT); +MMRESULT WINAPI waveInGetID(HWAVEIN,LPUINT); +MMRESULT WINAPI waveInMessage(HWAVEIN,UINT,DWORD,DWORD); +UINT WINAPI midiOutGetNumDevs(void); +MMRESULT WINAPI midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD,DWORD,DWORD); +MMRESULT WINAPI midiStreamClose(HMIDISTRM); +MMRESULT WINAPI midiStreamProperty(HMIDISTRM,LPBYTE,DWORD); +MMRESULT WINAPI midiStreamPosition(HMIDISTRM,LPMMTIME,UINT); +MMRESULT WINAPI midiStreamOut(HMIDISTRM,LPMIDIHDR,UINT); +MMRESULT WINAPI midiStreamPause(HMIDISTRM); +MMRESULT WINAPI midiStreamRestart(HMIDISTRM); +MMRESULT WINAPI midiStreamStop(HMIDISTRM); +MMRESULT WINAPI midiConnect(HMIDI,HMIDIOUT,PVOID); +MMRESULT WINAPI midiDisconnect(HMIDI,HMIDIOUT,PVOID); +MMRESULT WINAPI midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT); +MMRESULT WINAPI midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT); +MMRESULT WINAPI midiOutGetVolume(HMIDIOUT,PDWORD); +MMRESULT WINAPI midiOutSetVolume(HMIDIOUT,DWORD); +MMRESULT WINAPI midiOutGetErrorTextA(MMRESULT,LPSTR,UINT); +MMRESULT WINAPI midiOutGetErrorTextW(MMRESULT,LPWSTR,UINT); +MMRESULT WINAPI midiOutOpen(LPHMIDIOUT,UINT,DWORD,DWORD,DWORD); +MMRESULT WINAPI midiOutClose(HMIDIOUT); +MMRESULT WINAPI midiOutPrepareHeader(HMIDIOUT,LPMIDIHDR,UINT); +MMRESULT WINAPI midiOutUnprepareHeader(HMIDIOUT,LPMIDIHDR,UINT); +MMRESULT WINAPI midiOutShortMsg(HMIDIOUT,DWORD); +MMRESULT WINAPI midiOutLongMsg(HMIDIOUT,LPMIDIHDR,UINT); +MMRESULT WINAPI midiOutReset(HMIDIOUT); +MMRESULT WINAPI midiOutCachePatches(HMIDIOUT,UINT,LPWORD,UINT); +MMRESULT WINAPI midiOutCacheDrumPatches(HMIDIOUT,UINT,LPWORD,UINT); +MMRESULT WINAPI midiOutGetID(HMIDIOUT,LPUINT); +MMRESULT WINAPI midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD); +UINT WINAPI midiInGetNumDevs(void); +MMRESULT WINAPI midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT); +MMRESULT WINAPI midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT); +MMRESULT WINAPI midiInGetErrorTextA(MMRESULT,LPSTR,UINT); +MMRESULT WINAPI midiInGetErrorTextW(MMRESULT,LPWSTR,UINT); +MMRESULT WINAPI midiInOpen(LPHMIDIIN,UINT,DWORD,DWORD,DWORD); +MMRESULT WINAPI midiInClose(HMIDIIN); +MMRESULT WINAPI midiInPrepareHeader(HMIDIIN,LPMIDIHDR,UINT); +MMRESULT WINAPI midiInUnprepareHeader(HMIDIIN,LPMIDIHDR,UINT); +MMRESULT WINAPI midiInAddBuffer(HMIDIIN,LPMIDIHDR,UINT); +MMRESULT WINAPI midiInStart(HMIDIIN); +MMRESULT WINAPI midiInStop(HMIDIIN); +MMRESULT WINAPI midiInReset(HMIDIIN); +MMRESULT WINAPI midiInGetID(HMIDIIN,LPUINT); +MMRESULT WINAPI midiInMessage(HMIDIIN,UINT,DWORD,DWORD); +UINT WINAPI auxGetNumDevs(void); +MMRESULT WINAPI auxGetDevCapsA(UINT,LPAUXCAPSA,UINT); +MMRESULT WINAPI auxGetDevCapsW(UINT,LPAUXCAPSW,UINT); +MMRESULT WINAPI auxSetVolume(UINT,DWORD); +MMRESULT WINAPI auxGetVolume(UINT,PDWORD); +MMRESULT WINAPI auxOutMessage(UINT,UINT,DWORD,DWORD); +UINT WINAPI mixerGetNumDevs(void); +MMRESULT WINAPI mixerGetDevCapsA(UINT,LPMIXERCAPSA,UINT); +MMRESULT WINAPI mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT); +MMRESULT WINAPI mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD); +MMRESULT WINAPI mixerClose(HMIXER); +DWORD WINAPI mixerMessage(HMIXER,UINT,DWORD,DWORD); +MMRESULT WINAPI mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD); +MMRESULT WINAPI mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD); +MMRESULT WINAPI mixerGetID(HMIXEROBJ,PUINT,DWORD); +MMRESULT WINAPI mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD); +MMRESULT WINAPI mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD); +MMRESULT WINAPI mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD); +MMRESULT WINAPI mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD); +MMRESULT WINAPI mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD); +MMRESULT WINAPI timeGetSystemTime(LPMMTIME,UINT); +DWORD WINAPI timeGetTime(void); +MMRESULT WINAPI timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT); +MMRESULT WINAPI timeKillEvent(UINT); +MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS,UINT); +MMRESULT WINAPI timeBeginPeriod(UINT); +MMRESULT WINAPI timeEndPeriod(UINT); +UINT WINAPI joyGetNumDevs(void); +MMRESULT WINAPI joyGetDevCapsA(UINT,LPJOYCAPSA,UINT); +MMRESULT WINAPI joyGetDevCapsW(UINT,LPJOYCAPSW,UINT); +MMRESULT WINAPI joyGetPos(UINT,LPJOYINFO); +MMRESULT WINAPI joyGetPosEx(UINT,LPJOYINFOEX); +MMRESULT WINAPI joyGetThreshold(UINT,LPUINT); +MMRESULT WINAPI joyReleaseCapture(UINT); +MMRESULT WINAPI joySetCapture(HWND,UINT,UINT,BOOL); +MMRESULT WINAPI joySetThreshold(UINT,UINT); +FOURCC WINAPI mmioStringToFOURCCA(LPCSTR,UINT); +FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR,UINT); +LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD); +LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD); +HMMIO WINAPI mmioOpenA(LPSTR,LPMMIOINFO,DWORD); +HMMIO WINAPI mmioOpenW(LPWSTR,LPMMIOINFO,DWORD); +MMRESULT WINAPI mmioRenameA(LPCSTR,LPCSTR,LPCMMIOINFO,DWORD); +MMRESULT WINAPI mmioRenameW(LPCWSTR,LPCWSTR,LPCMMIOINFO,DWORD); +MMRESULT WINAPI mmioClose(HMMIO,UINT); +LONG WINAPI mmioRead(HMMIO,HPSTR,LONG); +LONG WINAPI mmioWrite(HMMIO,LPCSTR,LONG); +LONG WINAPI mmioSeek(HMMIO,LONG,int); +MMRESULT WINAPI mmioGetInfo(HMMIO,LPMMIOINFO,UINT); +MMRESULT WINAPI mmioSetInfo(HMMIO,LPCMMIOINFO,UINT); +MMRESULT WINAPI mmioSetBuffer(HMMIO,LPSTR,LONG,UINT); +MMRESULT WINAPI mmioFlush(HMMIO,UINT); +MMRESULT WINAPI mmioAdvance(HMMIO,LPMMIOINFO,UINT); +LRESULT WINAPI mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM); +MMRESULT WINAPI mmioDescend(HMMIO,LPMMCKINFO,const MMCKINFO*,UINT); +MMRESULT WINAPI mmioAscend(HMMIO,LPMMCKINFO,UINT); +MMRESULT WINAPI mmioCreateChunk(HMMIO,LPMMCKINFO,UINT); +MCIERROR WINAPI mciSendCommandA(MCIDEVICEID,UINT,DWORD,DWORD); +MCIERROR WINAPI mciSendCommandW(MCIDEVICEID,UINT,DWORD,DWORD); +MCIERROR WINAPI mciSendStringA(LPCSTR,LPSTR,UINT,HWND); +MCIERROR WINAPI mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND); +MCIDEVICEID WINAPI mciGetDeviceIDA(LPCSTR); +MCIDEVICEID WINAPI mciGetDeviceIDW(LPCWSTR); +MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA(DWORD,LPCSTR); +MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR); +BOOL WINAPI mciGetErrorStringA(MCIERROR,LPSTR,UINT); +BOOL WINAPI mciGetErrorStringW(MCIERROR,LPWSTR,UINT); +BOOL WINAPI mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD); +HTASK WINAPI mciGetCreatorTask(MCIDEVICEID); +YIELDPROC WINAPI mciGetYieldProc(MCIDEVICEID,PDWORD); + +typedef struct tagMCI_SEQ_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} MCI_SEQ_SET_PARMS,*PMCI_SEQ_SET_PARMS,*LPMCI_SEQ_SET_PARMS; +typedef struct tagMCI_ANIM_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_ANIM_OPEN_PARMSA,*PMCI_ANIM_OPEN_PARMSA,*LPMCI_ANIM_OPEN_PARMSA; +typedef struct tagMCI_ANIM_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_ANIM_OPEN_PARMSW,*PMCI_ANIM_OPEN_PARMSW,*LPMCI_ANIM_OPEN_PARMSW; +typedef struct tagMCI_ANIM_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} MCI_ANIM_PLAY_PARMS,*PMCI_ANIM_PLAY_PARMS,*LPMCI_ANIM_PLAY_PARMS; +typedef struct tagMCI_ANIM_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} MCI_ANIM_STEP_PARMS,*PMCI_ANIM_STEP_PARMS,*LPMCI_ANIM_STEP_PARMS; +typedef struct tagMCI_ANIM_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} MCI_ANIM_WINDOW_PARMSA,*PMCI_ANIM_WINDOW_PARMSA,*LPMCI_ANIM_WINDOW_PARMSA; +typedef struct tagMCI_ANIM_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} MCI_ANIM_WINDOW_PARMSW,*PMCI_ANIM_WINDOW_PARMSW,*LPMCI_ANIM_WINDOW_PARMSW; +typedef struct tagMCI_ANIM_RECT_PARMS { + DWORD dwCallback; +#ifdef MCI_USE_OFFEXT + POINT ptOffset; + POINT ptExtent; +#else + RECT rc; +#endif +} MCI_ANIM_RECT_PARMS,*PMCI_ANIM_RECT_PARMS,*LPMCI_ANIM_RECT_PARMS; +typedef struct tagMCI_ANIM_UPDATE_PARMS { + DWORD dwCallback; + RECT rc; + HDC hDC; +} MCI_ANIM_UPDATE_PARMS,*PMCI_ANIM_UPDATE_PARMS,*LPMCI_ANIM_UPDATE_PARMS; +typedef struct tagMCI_OVLY_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_OVLY_OPEN_PARMSA,*PMCI_OVLY_OPEN_PARMSA,*LPMCI_OVLY_OPEN_PARMSA; +typedef struct tagMCI_OVLY_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} MCI_OVLY_OPEN_PARMSW,*PMCI_OVLY_OPEN_PARMSW,*LPMCI_OVLY_OPEN_PARMSW; +typedef struct tagMCI_OVLY_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} MCI_OVLY_WINDOW_PARMSA,*PMCI_OVLY_WINDOW_PARMSA,*LPMCI_OVLY_WINDOW_PARMSA; +typedef struct tagMCI_OVLY_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} MCI_OVLY_WINDOW_PARMSW,*PMCI_OVLY_WINDOW_PARMSW,*LPMCI_OVLY_WINDOW_PARMSW; +typedef struct tagMCI_OVLY_RECT_PARMS { + DWORD dwCallback; +#ifdef MCI_USE_OFFEXT + POINT ptOffset; + POINT ptExtent; +#else + RECT rc; +#endif +} MCI_OVLY_RECT_PARMS,*PMCI_OVLY_RECT_PARMS,*LPMCI_OVLY_RECT_PARMS; +typedef struct tagMCI_OVLY_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} MCI_OVLY_SAVE_PARMSA,*PMCI_OVLY_SAVE_PARMSA,*LPMCI_OVLY_SAVE_PARMSA; +typedef struct tagMCI_OVLY_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} MCI_OVLY_SAVE_PARMSW,*PMCI_OVLY_SAVE_PARMSW,*LPMCI_OVLY_SAVE_PARMSW; +typedef struct tagMCI_OVLY_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} MCI_OVLY_LOAD_PARMSA,*PMCI_OVLY_LOAD_PARMSA,*LPMCI_OVLY_LOAD_PARMSA; +typedef struct tagMCI_OVLY_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} MCI_OVLY_LOAD_PARMSW,*PMCI_OVLY_LOAD_PARMSW,*LPMCI_OVLY_LOAD_PARMSW; + +#ifdef UNICODE +typedef WAVEOUTCAPSW WAVEOUTCAPS,*PWAVEOUTCAPS,*LPWAVEOUTCAPS; +typedef WAVEINCAPSW WAVEINCAPS,*PWAVEINCAPS,*LPWAVEINCAPS; +typedef MIDIOUTCAPSW MIDIOUTCAPS,*PMIDIOUTCAPS,*LPMIDIOUTCAPS; +typedef MIDIINCAPSW MIDIINCAPS,*PMIDIINCAPS,*LPMIDIINCAPS; +typedef AUXCAPSW AUXCAPS,*PAUXCAPS,*LPAUXCAPS; +typedef MIXERCAPSW MIXERCAPS,*PMIXERCAPS,*LPMIXERCAPS; +typedef MIXERLINEW MIXERLINE,*PMIXERLINE,*LPMIXERLINE; +typedef MIXERCONTROLA MIXERCONTROL,*PMIXERCONTROL,*LPMIXERCONTROL; +typedef MIXERLINECONTROLSW MIXERLINECONTROLS,*PMIXERLINECONTROLS,*LPMIXERLINECONTROLS; +typedef MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT,*PMIXERCONTROLDETAILS_LISTTEXT,*LPMIXERCONTROLDETAILS_LISTTEXT; +typedef JOYCAPSW JOYCAPS,*PJOYCAPS,*LPJOYCAPS; +typedef MCI_OPEN_PARMSW MCI_OPEN_PARMS,*PMCI_OPEN_PARMS,*LPMCI_OPEN_PARMS; +typedef MCI_INFO_PARMSW MCI_INFO_PARMS,*LPMCI_INFO_PARMS; +typedef MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS,*PMCI_SYSINFO_PARMS,*LPMCI_SYSINFO_PARMS; +typedef MCI_SAVE_PARMSW MCI_SAVE_PARMS,*PMCI_SAVE_PARMS,*LPMCI_SAVE_PARMS; +typedef MCI_LOAD_PARMSW MCI_LOAD_PARMS,*PMCI_LOAD_PARMS,*LPMCI_LOAD_PARMS; +typedef MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS,*PMCI_VD_ESCAPE_PARMS,*LPMCI_VD_ESCAPE_PARMS; +typedef MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS,*PMCI_WAVE_OPEN_PARMS,*LPMCI_WAVE_OPEN_PARMS; +typedef MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS,*PMCI_ANIM_OPEN_PARMS,*LPMCI_ANIM_OPEN_PARMS; +typedef MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS,*PMCI_ANIM_WINDOW_PARMS,*LPMCI_ANIM_WINDOW_PARMS; +typedef MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS,*PMCI_OVLY_OPEN_PARMS,*LPMCI_OVLY_OPEN_PARMS; +typedef MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS,*PMCI_OVLY_WINDOW_PARMS,*LPMCI_OVLY_WINDOW_PARMS; +typedef MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS,*PMCI_OVLY_SAVE_PARMS,*LPMCI_OVLY_SAVE_PARMS; +#define sndPlaySound sndPlaySoundW +#define PlaySound PlaySoundW +#define waveOutGetDevCaps waveOutGetDevCapsW +#define waveOutGetErrorText waveOutGetErrorTextW +#define waveInGetDevCaps waveInGetDevCapsW +#define waveInGetErrorText waveInGetErrorTextW +#define midiOutGetDevCaps midiOutGetDevCapsW +#define midiOutGetErrorText midiOutGetErrorTextW +#define midiInGetDevCaps midiInGetDevCapsW +#define midiInGetErrorText midiInGetErrorTextW +#define auxGetDevCaps auxGetDevCapsW +#define mixerGetDevCaps mixerGetDevCapsW +#define mixerGetLineInfo mixerGetLineInfoW +#define mixerGetLineControls mixerGetLineControlsW +#define mixerGetControlDetails mixerGetControlDetailsW +#define joyGetDevCaps joyGetDevCapsW +#define mmioInstallIOProc mmioInstallIOProcW +#define mmioStringToFOURCC mmioStringToFOURCCW +#define mmioOpen mmioOpenW +#define mmioRename mmioRenameW +#define mciSendCommand mciSendCommandW +#define mciSendString mciSendStringW +#define mciGetDeviceID mciGetDeviceIDW +#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDW +#define mciGetErrorString mciGetErrorStringW +#else +typedef WAVEOUTCAPSA WAVEOUTCAPS,*PWAVEOUTCAPS,*LPWAVEOUTCAPS; +typedef WAVEINCAPSA WAVEINCAPS,*PWAVEINCAPS,*LPWAVEINCAPS; +typedef MIDIOUTCAPSA MIDIOUTCAPS,*PMIDIOUTCAPS,*LPMIDIOUTCAPS; +typedef MIDIINCAPSA MIDIINCAPS,*PMIDIINCAPS,*LPMIDIINCAPS; +typedef AUXCAPSA AUXCAPS,*PAUXCAPS,*LPAUXCAPS; +typedef MIXERCAPSA MIXERCAPS,*PMIXERCAPS,*LPMIXERCAPS; +typedef MIXERLINEA MIXERLINE,*PMIXERLINE,*LPMIXERLINE; +typedef MIXERCONTROLA MIXERCONTROL,*PMIXERCONTROL,*LPMIXERCONTROL; +typedef MIXERLINECONTROLSA MIXERLINECONTROLS,*PMIXERLINECONTROLS,*LPMIXERLINECONTROLS; +typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT,*PMIXERCONTROLDETAILS_LISTTEXT,*LPMIXERCONTROLDETAILS_LISTTEXT; +typedef JOYCAPSA JOYCAPS,*PJOYCAPS,*LPJOYCAPS; +typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS,*PMCI_OPEN_PARMS,*LPMCI_OPEN_PARMS; +typedef MCI_INFO_PARMSA MCI_INFO_PARMS,*LPMCI_INFO_PARMS; +typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS,*PMCI_SYSINFO_PARMS,*LPMCI_SYSINFO_PARMS; +typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS,*PMCI_SAVE_PARMS,*LPMCI_SAVE_PARMS; +typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS,*PMCI_LOAD_PARMS,*LPMCI_LOAD_PARMS; +typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS,*PMCI_VD_ESCAPE_PARMS,*LPMCI_VD_ESCAPE_PARMS; +typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS,*PMCI_WAVE_OPEN_PARMS,*LPMCI_WAVE_OPEN_PARMS; +typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS,*PMCI_ANIM_OPEN_PARMS,*LPMCI_ANIM_OPEN_PARMS; +typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS,*PMCI_ANIM_WINDOW_PARMS,*LPMCI_ANIM_WINDOW_PARMS; +typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS,*PMCI_OVLY_OPEN_PARMS,*LPMCI_OVLY_OPEN_PARMS; +typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS,*PMCI_OVLY_WINDOW_PARMS,*LPMCI_OVLY_WINDOW_PARMS; +typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS,*PMCI_OVLY_SAVE_PARMS,*LPMCI_OVLY_SAVE_PARMS; +#define sndPlaySound sndPlaySoundA +#define PlaySound PlaySoundA +#define waveOutGetDevCaps waveOutGetDevCapsA +#define waveOutGetErrorText waveOutGetErrorTextA +#define waveInGetDevCaps waveInGetDevCapsA +#define waveInGetErrorText waveInGetErrorTextA +#define midiOutGetDevCaps midiOutGetDevCapsA +#define midiOutGetErrorText midiOutGetErrorTextA +#define midiInGetDevCaps midiInGetDevCapsA +#define midiInGetErrorText midiInGetErrorTextA +#define auxGetDevCaps auxGetDevCapsA +#define mixerGetDevCaps mixerGetDevCapsA +#define mixerGetLineInfo mixerGetLineInfoA +#define mixerGetLineControls mixerGetLineControlsA +#define mixerGetControlDetails mixerGetControlDetailsA +#define joyGetDevCaps joyGetDevCapsA +#define mmioInstallIOProc mmioInstallIOProcA +#define mmioStringToFOURCC mmioStringToFOURCCA +#define mmioOpen mmioOpenA +#define mmioRename mmioRenameA +#define mciSendCommand mciSendCommandA +#define mciSendString mciSendStringA +#define mciGetDeviceID mciGetDeviceIDA +#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDA +#define mciGetErrorString mciGetErrorStringA +#endif +#ifdef __cplusplus +} +#endif +#pragma pack(pop) +#endif diff --git a/reactos/w32api/include/mshtml.h b/reactos/w32api/include/mshtml.h new file mode 100644 index 00000000000..40115e9517a --- /dev/null +++ b/reactos/w32api/include/mshtml.h @@ -0,0 +1,454 @@ +#ifndef _MSHTML_H +#define _MSHTML_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef interface IHTMLElementCollection *LPHTMLELEMENTCOLLECTION; +typedef interface IHTMLElement *LPHTMLELEMENT; +typedef interface IHTMLSelectionObject *LPHTMLSELECTIONOBJECT; +typedef interface IHTMLFramesCollection *LPHTMLFRAMESCOLLECTION; +typedef interface IHTMLLocation *LPHTMLLOCATION; +typedef interface IHTMLWindow2 *LPHTMLWINDOW2; +typedef interface IHTMLStyleSheetsCollection *LPHTMLSTYLESHEETSCOLLECTION; +typedef interface IHTMLStyleSheet *LPHTMLSTYLESHEET; +typedef interface IHTMLStyle *LPHTMLSTYLE; +typedef interface IHTMLFiltersCollection *LPHTMLFILTERSCOLLECTION; +typedef interface IHTMLLinkElement *LPHTMLLINKELEMENT; +typedef interface IHTMLImgElement *LPHTMLIMGELEMENT; + +EXTERN_C const IID IID_IHTMLLinkElement; +#undef INTERFACE +#define INTERFACE IHTMLLinkElement +DECLARE_INTERFACE_(IHTMLLinkElement,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(put_href)(THIS_ BSTR) PURE; + STDMETHOD(get_href)(THIS_ BSTR*) PURE; + STDMETHOD(put_rel)(THIS_ BSTR) PURE; + STDMETHOD(get_rel)(THIS_ BSTR*) PURE; + STDMETHOD(put_rev)(THIS_ BSTR) PURE; + STDMETHOD(get_rev)(THIS_ BSTR*) PURE; + STDMETHOD(put_type)(THIS_ BSTR) PURE; + STDMETHOD(get_type)(THIS_ BSTR*) PURE; + STDMETHOD(get_readyState)(THIS_ BSTR*) PURE; + STDMETHOD(put_onreadystatechange)(THIS_ VARIANT) PURE; + STDMETHOD(get_onreadystatechange)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onload)(THIS_ VARIANT) PURE; + STDMETHOD(get_onload)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onerror)(THIS_ VARIANT) PURE; + STDMETHOD(get_onerror)(THIS_ VARIANT*) PURE; + STDMETHOD(get_styleSheet)(THIS_ LPHTMLSTYLESHEET*) PURE; + STDMETHOD(put_disabled)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_disabled)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_media)(THIS_ BSTR) PURE; + STDMETHOD(get_media)(THIS_ BSTR*) PURE; +}; + +EXTERN_C const IID IID_IHTMLImgElement; +#undef INTERFACE +#define INTERFACE IHTMLImgElement +DECLARE_INTERFACE_(IHTMLImgElement,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(put_isMap)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_isMap)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_useMap)(THIS_ BSTR) PURE; + STDMETHOD(get_useMap)(THIS_ BSTR*) PURE; + STDMETHOD(get_mimeType)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileSize)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileCreatedDate)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileModifiedDate)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileUpdatedDate)(THIS_ BSTR*) PURE; + STDMETHOD(get_protocol)(THIS_ BSTR*) PURE; + STDMETHOD(get_href)(THIS_ BSTR*) PURE; + STDMETHOD(get_nameProp)(THIS_ BSTR*) PURE; + STDMETHOD(put_border)(THIS_ VARIANT) PURE; + STDMETHOD(get_border)(THIS_ VARIANT*) PURE; + STDMETHOD(put_vspace)(THIS_ long) PURE; + STDMETHOD(get_vspace)(THIS_ long*) PURE; + STDMETHOD(put_hspace)(THIS_ long) PURE; + STDMETHOD(get_hspace)(THIS_ long*) PURE; + STDMETHOD(put_alt)(THIS_ BSTR) PURE; + STDMETHOD(get_alt)(THIS_ BSTR*) PURE; + STDMETHOD(put_src)(THIS_ BSTR) PURE; + STDMETHOD(get_src)(THIS_ BSTR*) PURE; + STDMETHOD(put_lowsrc)(THIS_ BSTR) PURE; + STDMETHOD(get_lowsrc)(THIS_ BSTR*) PURE; + STDMETHOD(put_vrml)(THIS_ BSTR) PURE; + STDMETHOD(get_vrml)(THIS_ BSTR*) PURE; + STDMETHOD(put_dynsrc)(THIS_ BSTR) PURE; + STDMETHOD(get_dynsrc)(THIS_ BSTR*) PURE; + STDMETHOD(get_readyState)(THIS_ BSTR*) PURE; + STDMETHOD(get_complete)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_loop)(THIS_ VARIANT) PURE; + STDMETHOD(get_loop)(THIS_ VARIANT*) PURE; + STDMETHOD(put_align)(THIS_ BSTR) PURE; + STDMETHOD(get_align)(THIS_ BSTR*) PURE; + STDMETHOD(put_onload)(THIS_ VARIANT) PURE; + STDMETHOD(get_onload)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onerror)(THIS_ VARIANT) PURE; + STDMETHOD(get_onerror)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onabort)(THIS_ VARIANT) PURE; + STDMETHOD(get_onabort)(THIS_ VARIANT*) PURE; + STDMETHOD(put_name)(THIS_ BSTR) PURE; + STDMETHOD(get_name)(THIS_ BSTR*) PURE; + STDMETHOD(put_width)(THIS_ long) PURE; + STDMETHOD(get_width)(THIS_ long*) PURE; + STDMETHOD(put_height)(THIS_ long) PURE; + STDMETHOD(get_height)(THIS_ long*) PURE; + STDMETHOD(put_start)(THIS_ BSTR) PURE; + STDMETHOD(get_start)(THIS_ BSTR*) PURE; +}; + +EXTERN_C const IID IID_IHTMLElementCollection; +#undef INTERFACE +#define INTERFACE IHTMLElementCollection +DECLARE_INTERFACE_(IHTMLElementCollection,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(toString)(THIS_ BSTR*) PURE; + STDMETHOD(put_length)(THIS_ long) PURE; + STDMETHOD(get_length)(THIS_ long*) PURE; + STDMETHOD(get__newEnum)(THIS_ IUnknown**) PURE; + STDMETHOD(item)(THIS_ VARIANT,VARIANT,IDispatch**) PURE; + STDMETHOD(tags)(THIS_ VARIANT,IDispatch**) PURE; +}; + + +EXTERN_C const IID IID_IHTMLDocument; +#undef INTERFACE +#define INTERFACE IHTMLDocument +DECLARE_INTERFACE_(IHTMLDocument,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(get_Script)(THIS_ IDispatch**) PURE; +}; + +EXTERN_C const IID IID_IHTMLDocument2; +#undef INTERFACE +#define INTERFACE IHTMLDocument2 +DECLARE_INTERFACE_(IHTMLDocument2,IHTMLDocument) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(get_Script)(THIS_ IDispatch**) PURE; + + STDMETHOD(get_all)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(get_body)(THIS_ LPHTMLELEMENT*) PURE; + STDMETHOD(get_activeElement)(THIS_ LPHTMLELEMENT*) PURE; + STDMETHOD(get_images)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(get_applets)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(get_links)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(get_forms)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(get_anchors)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(put_title)(THIS_ BSTR) PURE; + STDMETHOD(get_title)(THIS_ BSTR*) PURE; + STDMETHOD(get_scripts)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(put_designMode)(THIS_ BSTR) PURE; + STDMETHOD(get_designMode)(THIS_ BSTR*) PURE; + STDMETHOD(get_selection)(LPHTMLSELECTIONOBJECT*) PURE; + STDMETHOD(get_readyState)(THIS_ BSTR*) PURE; + STDMETHOD(get_frames)(THIS_ LPHTMLFRAMESCOLLECTION*) PURE; + STDMETHOD(get_embeds)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(get_plugins)(THIS_ LPHTMLELEMENTCOLLECTION*) PURE; + STDMETHOD(put_alinkColor)(THIS_ VARIANT) PURE; + STDMETHOD(get_alinkColor)(THIS_ VARIANT*) PURE; + STDMETHOD(put_bgColor)(THIS_ VARIANT) PURE; + STDMETHOD(get_bgColor)(THIS_ VARIANT*) PURE; + STDMETHOD(put_fgColor)(THIS_ VARIANT) PURE; + STDMETHOD(get_fgColor)(THIS_ VARIANT*) PURE; + STDMETHOD(put_linkColor)(THIS_ VARIANT) PURE; + STDMETHOD(get_linkColor)(THIS_ VARIANT*) PURE; + STDMETHOD(put_vlinkColor)(THIS_ VARIANT) PURE; + STDMETHOD(get_vlinkColor)(THIS_ VARIANT*) PURE; + STDMETHOD(get_referrer)(THIS_ BSTR*) PURE; + STDMETHOD(get_location)(THIS_ LPHTMLLOCATION*) PURE; + STDMETHOD(get_lastModified)(THIS_ BSTR*) PURE; + STDMETHOD(put_url)(THIS_ BSTR) PURE; + STDMETHOD(get_url)(THIS_ BSTR*) PURE; + STDMETHOD(put_domain)(THIS_ BSTR) PURE; + STDMETHOD(get_domain)(THIS_ BSTR*) PURE; + STDMETHOD(put_cookie)(THIS_ BSTR) PURE; + STDMETHOD(get_cookie)(THIS_ BSTR*) PURE; + STDMETHOD(put_expands)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(get_expands)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(put_charset)(THIS_ BSTR) PURE; + STDMETHOD(get_charset)(THIS_ BSTR*) PURE; + STDMETHOD(put_defaultCharset)(THIS_ BSTR) PURE; + STDMETHOD(get_defaultCharset)(THIS_ BSTR*) PURE; + STDMETHOD(get_mimeType)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileSize)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileCreatedDate)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileModifiedDate)(THIS_ BSTR*) PURE; + STDMETHOD(get_fileUpdatedDate)(THIS_ BSTR*) PURE; + STDMETHOD(get_security)(THIS_ BSTR*) PURE; + STDMETHOD(get_protocol)(THIS_ BSTR*) PURE; + STDMETHOD(get_nameProp)(THIS_ BSTR*) PURE; + STDMETHOD(write)(THIS_ SAFEARRAY*) PURE; + STDMETHOD(writeln)(THIS_ SAFEARRAY*) PURE; + STDMETHOD(open)(THIS_ BSTR,VARIANT,VARIANT,VARIANT,IDispatch**) PURE; + STDMETHOD(close)(THIS) PURE; + STDMETHOD(clear)(THIS) PURE; + STDMETHOD(queryCommandSupported)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandEnabled)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandState)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandIndeterm)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandText)(THIS_ BSTR,BSTR*) PURE; + STDMETHOD(queryCommandValue)(THIS_ BSTR,VARIANT*) PURE; + STDMETHOD(execCommand)(THIS_ BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*) PURE; + STDMETHOD(execCommandShowHelp)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(createElement)(THIS_ BSTR,LPHTMLELEMENT*) PURE; + STDMETHOD(put_onhelp)(THIS_ VARIANT) PURE; + STDMETHOD(get_onhelp)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onclick)(THIS_ VARIANT) PURE; + STDMETHOD(get_onclick)(THIS_ VARIANT*) PURE; + STDMETHOD(put_ondblclick)(THIS_ VARIANT) PURE; + STDMETHOD(get_ondblclick)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onkeyup)(THIS_ VARIANT) PURE; + STDMETHOD(get_onkeyup)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onkeydown)(THIS_ VARIANT) PURE; + STDMETHOD(get_onkeydown)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onkeypress)(THIS_ VARIANT) PURE; + STDMETHOD(get_onkeypress)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmouseup)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmouseup)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmousedown)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmousedown)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmousemove)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmousemove)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmouseout)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmouseout)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmouseover)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmouseover)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onreadystatechange)(THIS_ VARIANT) PURE; + STDMETHOD(get_onreadystatechange)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onafterupdate)(THIS_ VARIANT) PURE; + STDMETHOD(get_onafterupdate)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onrowexit)(THIS_ VARIANT) PURE; + STDMETHOD(get_onrowexit)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onrowenter)(THIS_ VARIANT) PURE; + STDMETHOD(get_onrowenter)(THIS_ VARIANT*) PURE; + STDMETHOD(put_ondragstart)(THIS_ VARIANT) PURE; + STDMETHOD(get_ondragstart)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onselectstart)(THIS_ VARIANT) PURE; + STDMETHOD(get_onselectstart)(THIS_ VARIANT*) PURE; + STDMETHOD(elementFromPoint)(THIS_ long,long,LPHTMLELEMENT*) PURE; + STDMETHOD(get_parentWindow)(THIS_ LPHTMLWINDOW2*) PURE; + STDMETHOD(get_styleSheets)(THIS_ LPHTMLSTYLESHEETSCOLLECTION*) PURE; + STDMETHOD(put_onbeforeupdate)(THIS_ VARIANT) PURE; + STDMETHOD(get_onbeforeupdate)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onerrorupdate)(THIS_ VARIANT) PURE; + STDMETHOD(get_onerrorupdate)(THIS_ VARIANT*) PURE; + STDMETHOD(toString)(THIS_ BSTR*) PURE; + STDMETHOD(createStyleSheet)(THIS_ BSTR,long,LPHTMLSTYLESHEET*) PURE; +}; + +EXTERN_C const IID IID_IHTMLSelectionObject; +#undef INTERFACE +#define INTERFACE IHTMLSelectionObject +DECLARE_INTERFACE_(IHTMLSelectionObject,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(createRange)(THIS_ IDispatch**) PURE; + STDMETHOD(empty)(THIS) PURE; + STDMETHOD(clear)(THIS) PURE; + STDMETHOD(type)(THIS_ BSTR*) PURE; +}; + +EXTERN_C const IID IID_IHTMLTxtRange; +#undef INTERFACE +#define INTERFACE IHTMLTxtRange +DECLARE_INTERFACE_(IHTMLTxtRange,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(get_htmlText)(THIS_ BSTR*) PURE; + STDMETHOD(put_text)(THIS_ BSTR) PURE; + STDMETHOD(get_text)(THIS_ BSTR*) PURE; + STDMETHOD(parentElement)(THIS_ LPHTMLELEMENT*) PURE; + STDMETHOD(duplicate)(THIS_ IHTMLTxtRange**) PURE; + STDMETHOD(inRange)(THIS_ IHTMLTxtRange*,VARIANT_BOOL*) PURE; + STDMETHOD(isEqual)(THIS_ IHTMLTxtRange*,VARIANT_BOOL*) PURE; + STDMETHOD(scrollIntoView)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(collapse)(THIS_ VARIANT_BOOL) PURE; + STDMETHOD(expand)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(move)(THIS_ BSTR,long,long*) PURE; + STDMETHOD(moveStart)(THIS_ BSTR,long,long*) PURE; + STDMETHOD(moveEnd)(THIS_ BSTR,long,long*) PURE; + STDMETHOD(select)(THIS) PURE; + STDMETHOD(pasteHTML)(THIS_ BSTR) PURE; + STDMETHOD(moveToElementText)(THIS_ LPHTMLELEMENT) PURE; + STDMETHOD(setEndPoint)(THIS_ BSTR,IHTMLTxtRange*) PURE; + STDMETHOD(compareEndPoints)(THIS_ BSTR,IHTMLTxtRange*,long*) PURE; + STDMETHOD(findText)(THIS_ BSTR,long,long,VARIANT_BOOL*) PURE; + STDMETHOD(moveToPoint)(THIS_ long,long) PURE; + STDMETHOD(getBookmark)(THIS_ BSTR*) PURE; + STDMETHOD(moveToBookbark)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandSupported)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandEnabled)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandState)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandIndeterm)(THIS_ BSTR,VARIANT_BOOL*) PURE; + STDMETHOD(queryCommandText)(THIS_ BSTR,BSTR*) PURE; + STDMETHOD(queryCommandValue)(THIS_ BSTR,VARIANT*) PURE; + STDMETHOD(execCommand)(THIS_ BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*) PURE; + STDMETHOD(execCommandShowHelp)(THIS_ BSTR,VARIANT_BOOL*) PURE; +}; + +EXTERN_C const IID IID_IHTMLElement; +#undef INTERFACE +#define INTERFACE IHTMLElement +DECLARE_INTERFACE_(IHTMLElement,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(setAttribute)(THIS_ BSTR,VARIANT,long) PURE; + STDMETHOD(getAttribute)(THIS_ BSTR,long,VARIANT*) PURE; + STDMETHOD(removeAttribute)(THIS_ BSTR,long,VARIANT_BOOL*) PURE; + STDMETHOD(put_className)(THIS_ BSTR) PURE; + STDMETHOD(get_className)(THIS_ BSTR*) PURE; + STDMETHOD(put_id)(THIS_ BSTR) PURE; + STDMETHOD(get_id)(THIS_ BSTR*) PURE; + STDMETHOD(get_tagName)(THIS_ BSTR*) PURE; + STDMETHOD(get_parentElement)(THIS_ LPHTMLELEMENT*) PURE; + STDMETHOD(get_style)(THIS_ LPHTMLSTYLE*) PURE; + STDMETHOD(put_onhelp)(THIS_ VARIANT) PURE; + STDMETHOD(get_onhelp)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onclick)(THIS_ VARIANT) PURE; + STDMETHOD(get_onclick)(THIS_ VARIANT*) PURE; + STDMETHOD(put_ondblclick)(THIS_ VARIANT) PURE; + STDMETHOD(get_ondblclick)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onkeydown)(THIS_ VARIANT) PURE; + STDMETHOD(get_onkeydown)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onkeyup)(THIS_ VARIANT) PURE; + STDMETHOD(get_onkeyup)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onkeypress)(THIS_ VARIANT) PURE; + STDMETHOD(get_onkeypress)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmouseout)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmouseout)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmouseover)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmouseover)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmousemove)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmousemove)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmousedown)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmousedown)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onmouseup)(THIS_ VARIANT) PURE; + STDMETHOD(get_onmouseup)(THIS_ VARIANT*) PURE; + STDMETHOD(get_document)(THIS_ IDispatch**) PURE; + STDMETHOD(put_title)(THIS_ BSTR) PURE; + STDMETHOD(get_title)(THIS_ BSTR*) PURE; + STDMETHOD(put_language)(THIS_ BSTR) PURE; + STDMETHOD(get_language)(THIS_ BSTR*) PURE; + STDMETHOD(put_onselectstart)(THIS_ VARIANT) PURE; + STDMETHOD(get_onselectstart)(THIS_ VARIANT*) PURE; + STDMETHOD(scrollIntoView)(THIS_ VARIANT) PURE; + STDMETHOD(contains)(THIS_ LPHTMLELEMENT,VARIANT_BOOL*) PURE; + STDMETHOD(get_source3Index)(THIS_ long*) PURE; + STDMETHOD(get_recordNumber)(THIS_ VARIANT*) PURE; + STDMETHOD(put_lang)(THIS_ BSTR) PURE; + STDMETHOD(get_lang)(THIS_ BSTR*) PURE; + STDMETHOD(get_offsetLeft)(THIS_ long*) PURE; + STDMETHOD(get_offsetTop)(THIS_ long*) PURE; + STDMETHOD(get_offsetWidth)(THIS_ long*) PURE; + STDMETHOD(get_offsetHeight)(THIS_ long*) PURE; + STDMETHOD(get_offsetParent)(THIS_ LPHTMLELEMENT*) PURE; + STDMETHOD(put_innerHTML)(THIS_ BSTR) PURE; + STDMETHOD(get_innerHTML)(THIS_ BSTR*) PURE; + STDMETHOD(put_innerText)(THIS_ BSTR) PURE; + STDMETHOD(get_innerText)(THIS_ BSTR*) PURE; + STDMETHOD(put_outerHTML)(THIS_ BSTR) PURE; + STDMETHOD(get_outerHTML)(THIS_ BSTR*) PURE; + STDMETHOD(put_outerText)(THIS_ BSTR) PURE; + STDMETHOD(get_outerText)(THIS_ BSTR*) PURE; + STDMETHOD(insertAdjacentHTML)(THIS_ BSTR,BSTR) PURE; + STDMETHOD(insertAdjacentText)(THIS_ BSTR,BSTR) PURE; + STDMETHOD(get_parentTextEdit)(THIS_ LPHTMLELEMENT*) PURE; + STDMETHOD(isTextEdit)(THIS_ VARIANT_BOOL*) PURE; + STDMETHOD(click)(THIS) PURE; + STDMETHOD(get_filters)(THIS_ LPHTMLFILTERSCOLLECTION*) PURE; + STDMETHOD(put_ondragstart)(THIS_ VARIANT) PURE; + STDMETHOD(get_ondragstart)(THIS_ VARIANT*) PURE; + STDMETHOD(toString)(THIS_ BSTR*) PURE; + STDMETHOD(put_onbeforeupdate)(THIS_ VARIANT) PURE; + STDMETHOD(get_onbeforeupdate)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onafterupdate)(THIS_ VARIANT) PURE; + STDMETHOD(get_onafterupdate)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onerrorupdate)(THIS_ VARIANT) PURE; + STDMETHOD(get_onerrorupdate)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onrowexit)(THIS_ VARIANT) PURE; + STDMETHOD(get_onrowexit)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onrowenter)(THIS_ VARIANT) PURE; + STDMETHOD(get_onrowenter)(THIS_ VARIANT*) PURE; + STDMETHOD(put_ondatasetchanged)(THIS_ VARIANT) PURE; + STDMETHOD(get_ondatasetchanged)(THIS_ VARIANT*) PURE; + STDMETHOD(put_ondataavailable)(THIS_ VARIANT) PURE; + STDMETHOD(get_ondataavailable)(THIS_ VARIANT*) PURE; + STDMETHOD(put_ondatasetcomplete)(THIS_ VARIANT) PURE; + STDMETHOD(get_ondatasetcomplete)(THIS_ VARIANT*) PURE; + STDMETHOD(put_onfilterchange)(THIS_ VARIANT) PURE; + STDMETHOD(get_onfilterchange)(THIS_ VARIANT*) PURE; + STDMETHOD(get_children)(THIS_ IDispatch**) PURE; + STDMETHOD(get_all)(THIS_ IDispatch**) PURE; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/mswsock.h b/reactos/w32api/include/mswsock.h new file mode 100644 index 00000000000..0cea0b84003 --- /dev/null +++ b/reactos/w32api/include/mswsock.h @@ -0,0 +1,113 @@ +/* + * mswsock.h + * MS-specific extensions to Windows Sockets, exported from mswsock.dll. + * These functions are N/A on Windows9x. + * + * 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. + */ + +#ifndef _MSWSOCK_H +#define _MSWSOCK_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif +#ifdef __cplusplus +extern "C" { +#endif + +#define SO_CONNDATA 0x7000 +#define SO_CONNOPT 0x7001 +#define SO_DISCDATA 0x7002 +#define SO_DISCOPT 0x7003 +#define SO_CONNDATALEN 0x7004 +#define SO_CONNOPTLEN 0x7005 +#define SO_DISCDATALEN 0x7006 +#define SO_DISCOPTLEN 0x7007 +#define SO_OPENTYPE 0x7008 +#define SO_SYNCHRONOUS_ALERT 0x10 +#define SO_SYNCHRONOUS_NONALERT 0x20 +#define SO_MAXDG 0x7009 +#define SO_MAXPATHDG 0x700A +#define SO_UPDATE_ACCEPT_CONTEXT 0x700B +#define SO_CONNECT_TIME 0x700C +#define TCP_BSDURGENT 0x7000 + +#define TF_DISCONNECT 1 +#define TF_REUSE_SOCKET 2 +#define TF_WRITE_BEHIND 4 +#define TF_USE_DEFAULT_WORKER 0 +#define TF_USE_SYSTEM_THREAD 16 +#define TF_USE_KERNEL_APC 32 + +typedef struct _TRANSMIT_FILE_BUFFERS { + PVOID Head; + DWORD HeadLength; + PVOID Tail; + DWORD TailLength; +} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS; + +int PASCAL WSARecvEx(SOCKET,char*,int,int*); +BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD); +BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED); +VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT); + +#ifdef _WINSOCK2_H /* These require the winsock2 interface. */ + +#define TP_ELEMENT_FILE 1 +#define TP_ELEMENT_MEMORY 2 +#define TP_ELEMENT_EOP 4 + +typedef struct _TRANSMIT_PACKETS_ELEMENT { + ULONG dwElFlags; + ULONG cLength; + _ANONYMOUS_UNION + union { + struct { + LARGE_INTEGER nFileOffset; + HANDLE hFile; + }; + PVOID pBuffer; + }; +} TRANSMIT_PACKETS_ELEMENT; + +typedef struct _WSAMSG { + LPSOCKADDR name; + INT namelen; + LPWSABUF lpBuffers; + DWORD dwBufferCount; + WSABUF Control; + DWORD dwFlags; +} WSAMSG, *PWSAMSG, *LPWSAMSG; + + +/* According to MSDN docs, the WSAMSG.Control buffer starts with a + cmsghdr header of the following form. See also RFC 2292. */ + +typedef struct wsacmsghdr { + UINT cmsg_len; + INT cmsg_level; + INT cmsg_type; + /* followed by UCHAR cmsg_data[]; */ +} WSACMSGHDR; + +/* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ +#if 0 +#define WSA_CMSG_FIRSTHDR(mhdr) +#define WSA_CMSG_NXTHDR(mhdr, cmsg) +#define WSA_CMSG_SPACE(length) +#define WSA_CMSG_LEN(length) +#endif + +BOOL PASCAL DisconnectEx(SOCKET,LPOVERLAPPED,DWORD,DWORD); +int PASCAL WSARecvMsg(SOCKET,LPWSAMSG,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); + +#endif /* _WINSOCK2_H */ + +#ifdef __cplusplus +} +#endif +#endif /* _MSWSOCK_H */ + diff --git a/reactos/w32api/include/nb30.h b/reactos/w32api/include/nb30.h new file mode 100644 index 00000000000..c0ef0e53b92 --- /dev/null +++ b/reactos/w32api/include/nb30.h @@ -0,0 +1,186 @@ +#ifndef _NB30_H +#define _NB30_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define NCBNAMSZ 16 +#define MAX_LANA 254 +#define NAME_FLAGS_MASK 0x87 +#define GROUP_NAME 0x80 +#define UNIQUE_NAME 0x00 +#define REGISTERING 0x00 +#define REGISTERED 0x04 +#define DEREGISTERED 0x05 +#define DUPLICATE 0x06 +#define DUPLICATE_DEREG 0x07 +#define LISTEN_OUTSTANDING 0x01 +#define CALL_PENDING 0x02 +#define SESSION_ESTABLISHED 0x03 +#define HANGUP_PENDING 0x04 +#define HANGUP_COMPLETE 0x05 +#define SESSION_ABORTED 0x06 +#define ALL_TRANSPORTS "M\0\0\0" +#define MS_NBF "MNBF" +#define NCBCALL 0x10 +#define NCBLISTEN 0x11 +#define NCBHANGUP 0x12 +#define NCBSEND 0x14 +#define NCBRECV 0x15 +#define NCBRECVANY 0x16 +#define NCBCHAINSEND 0x17 +#define NCBDGSEND 0x20 +#define NCBDGRECV 0x21 +#define NCBDGSENDBC 0x22 +#define NCBDGRECVBC 0x23 +#define NCBADDNAME 0x30 +#define NCBDELNAME 0x31 +#define NCBRESET 0x32 +#define NCBASTAT 0x33 +#define NCBSSTAT 0x34 +#define NCBCANCEL 0x35 +#define NCBADDGRNAME 0x36 +#define NCBENUM 0x37 +#define NCBUNLINK 0x70 +#define NCBSENDNA 0x71 +#define NCBCHAINSENDNA 0x72 +#define NCBLANSTALERT 0x73 +#define NCBACTION 0x77 +#define NCBFINDNAME 0x78 +#define NCBTRACE 0x79 +#define ASYNCH 0x80 +#define NRC_GOODRET 0x00 +#define NRC_BUFLEN 0x01 +#define NRC_ILLCMD 0x03 +#define NRC_CMDTMO 0x05 +#define NRC_INCOMP 0x06 +#define NRC_BADDR 0x07 +#define NRC_SNUMOUT 0x08 +#define NRC_NORES 0x09 +#define NRC_SCLOSED 0x0a +#define NRC_CMDCAN 0x0b +#define NRC_DUPNAME 0x0d +#define NRC_NAMTFUL 0x0e +#define NRC_ACTSES 0x0f +#define NRC_LOCTFUL 0x11 +#define NRC_REMTFUL 0x12 +#define NRC_ILLNN 0x13 +#define NRC_NOCALL 0x14 +#define NRC_NOWILD 0x15 +#define NRC_INUSE 0x16 +#define NRC_NAMERR 0x17 +#define NRC_SABORT 0x18 +#define NRC_NAMCONF 0x19 +#define NRC_IFBUSY 0x21 +#define NRC_TOOMANY 0x22 +#define NRC_BRIDGE 0x23 +#define NRC_CANOCCR 0x24 +#define NRC_CANCEL 0x26 +#define NRC_DUPENV 0x30 +#define NRC_ENVNOTDEF 0x34 +#define NRC_OSRESNOTAV 0x35 +#define NRC_MAXAPPS 0x36 +#define NRC_NOSAPS 0x37 +#define NRC_NORESOURCES 0x38 +#define NRC_INVADDRESS 0x39 +#define NRC_INVDDID 0x3B +#define NRC_LOCKFAIL 0x3C +#define NRC_OPENERR 0x3f +#define NRC_SYSTEM 0x40 +#define NRC_PENDING 0xff +#define NCB_POST void CALLBACK +typedef struct _ACTION_HEADER { + ULONG transport_id; + USHORT action_code; + USHORT reserved; +} ACTION_HEADER,*PACTION_HEADER; +typedef struct _ADAPTER_STATUS { + UCHAR adapter_address[6]; + 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; +} ADAPTER_STATUS,*PADAPTER_STATUS; +typedef struct _FIND_NAME_BUFFER { + UCHAR length; + UCHAR access_control; + UCHAR frame_control; + UCHAR destination_addr[6]; + UCHAR source_addr[6]; + UCHAR routing_info[18]; +} FIND_NAME_BUFFER,*PFIND_NAME_BUFFER; +typedef struct _FIND_NAME_HEADER { + WORD node_count; + UCHAR reserved; + UCHAR unique_group; +} FIND_NAME_HEADER,*PFIND_NAME_HEADER; +typedef struct _LANA_ENUM { + UCHAR length; + UCHAR lana[MAX_LANA+1]; +} LANA_ENUM,*PLANA_ENUM; +typedef struct _NAME_BUFFER { + UCHAR name[NCBNAMSZ]; + UCHAR name_num; + UCHAR name_flags; +} NAME_BUFFER,*PNAME_BUFFER; +typedef struct _NCB { + UCHAR ncb_command; + UCHAR ncb_retcode; + UCHAR ncb_lsn; + UCHAR ncb_num; + PUCHAR ncb_buffer; + WORD ncb_length; + UCHAR ncb_callname[NCBNAMSZ]; + UCHAR ncb_name[NCBNAMSZ]; + UCHAR ncb_rto; + UCHAR ncb_sto; + void (CALLBACK *ncb_post)(struct _NCB*); + UCHAR ncb_lana_num; + UCHAR ncb_cmd_cplt; + UCHAR ncb_reserve[10]; + HANDLE ncb_event; +} NCB,*PNCB; +typedef struct _SESSION_BUFFER { + UCHAR lsn; + UCHAR state; + UCHAR local_name[NCBNAMSZ]; + UCHAR remote_name[NCBNAMSZ]; + UCHAR rcvs_outstanding; + UCHAR sends_outstanding; +} SESSION_BUFFER,*PSESSION_BUFFER; +typedef struct _SESSION_HEADER { + UCHAR sess_name; + UCHAR num_sess; + UCHAR rcv_dg_outstanding; + UCHAR rcv_any_outstanding; +} SESSION_HEADER,*PSESSION_HEADER; +UCHAR WINAPI Netbios(PNCB); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/nddeapi.h b/reactos/w32api/include/nddeapi.h new file mode 100644 index 00000000000..a6ea207e087 --- /dev/null +++ b/reactos/w32api/include/nddeapi.h @@ -0,0 +1,133 @@ +#ifndef _NDDEAPI_H +#define _NDDEAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#ifndef CNLEN /* also in lmcons.h */ +#define CNLEN 15 +#define UNCLEN (CNLEN + 2) +#endif +#define SEP_CHAR ',' +#define BAR_CHAR "|" +#define SEP_WCHAR L',' +#define BAR_WCHAR L"|" +#define NDDE_NO_ERROR 0 +#define NDDE_ACCESS_DENIED 1 +#define NDDE_BUF_TOO_SMALL 2 +#define NDDE_ERROR_MORE_DATA 3 +#define NDDE_INVALID_SERVER 4 +#define NDDE_INVALID_SHARE 5 +#define NDDE_INVALID_PARAMETER 6 +#define NDDE_INVALID_LEVEL 7 +#define NDDE_INVALID_PASSWORD 8 +#define NDDE_INVALID_ITEMNAME 9 +#define NDDE_INVALID_TOPIC 10 +#define NDDE_INTERNAL_ERROR 11 +#define NDDE_OUT_OF_MEMORY 12 +#define NDDE_INVALID_APPNAME 13 +#define NDDE_NOT_IMPLEMENTED 14 +#define NDDE_SHARE_ALREADY_EXIST 15 +#define NDDE_SHARE_NOT_EXIST 16 +#define NDDE_INVALID_FILENAME 17 +#define NDDE_NOT_RUNNING 18 +#define NDDE_INVALID_WINDOW 19 +#define NDDE_INVALID_SESSION 20 +#define NDDE_INVALID_ITEM_LIST 21 +#define NDDE_SHARE_DATA_CORRUPTED 22 +#define NDDE_REGISTRY_ERROR 23 +#define NDDE_CANT_ACCESS_SERVER 24 +#define NDDE_INVALID_SPECIAL_COMMAND 25 +#define NDDE_INVALID_SECURITY_DESC 26 +#define NDDE_TRUST_SHARE_FAIL 27 +#define MAX_NDDESHARENAME 256 +#define MAX_DOMAINNAME 15 +#define MAX_USERNAME 15 +#define MAX_APPNAME 255 +#define MAX_TOPICNAME 255 +#define MAX_ITEMNAME 255 +#define NDDEF_NOPASSWORDPROMPT 0x0001 +#define NDDEF_NOCACHELOOKUP 0x0002 +#define NDDEF_STRIP_NDDE 0x0004 +#define SHARE_TYPE_OLD 0x01 +#define SHARE_TYPE_NEW 0x02 +#define SHARE_TYPE_STATIC 0x04 +#define NDDE_TRUST_SHARE_START 0x80000000L +#define NDDE_TRUST_SHARE_INIT 0x40000000L +#define NDDE_TRUST_SHARE_DEL 0x20000000L +#define NDDE_TRUST_CMD_SHOW 0x10000000L +#define NDDE_CMD_SHOW_MASK 0x0000FFFFL +struct NDdeShareInfo_tag { + LONG lRevision; + LPTSTR lpszShareName; + LONG lShareType; + LPTSTR lpszAppTopicList; + LONG fSharedFlag; + LONG fService; + LONG fStartAppFlag; + LONG nCmdShow; + LONG qModifyId[2]; + LONG cNumItems; + LPTSTR lpszItemList; +} NDDESHAREINFO,*PNDDESHAREINFO; + +UINT WINAPI NDdeGetErrorStringA(UINT,LPSTR,DWORD); +UINT WINAPI NDdeGetErrorStringW(UINT,LPWSTR,DWORD); +UINT WINAPI NDdeGetShareSecurityA(LPSTR,LPSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD); +UINT WINAPI NDdeGetShareSecurityW(LPWSTR,LPWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD); +UINT WINAPI NDdeGetTrustedShareA(LPSTR,LPSTR,PDWORD,PDWORD,PDWORD); +UINT WINAPI NDdeGetTrustedShareW(LPWSTR,LPWSTR,PDWORD,PDWORD,PDWORD); +BOOL WINAPI NDdeIsValidShareNameA(LPSTR); +BOOL WINAPI NDdeIsValidShareNameW(LPWSTR); +BOOL WINAPI NDdeIsValidAppTopicListA(LPSTR); +BOOL WINAPI NDdeIsValidAppTopicListW(LPWSTR); +UINT WINAPI NDdeSetShareSecurityA(LPSTR,LPSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +UINT WINAPI NDdeSetShareSecurityW(LPWSTR,LPWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +UINT WINAPI NDdeSetTrustedShareA(LPSTR,LPSTR,DWORD); +UINT WINAPI NDdeSetTrustedShareW(LPWSTR,LPWSTR,DWORD); +UINT WINAPI NDdeShareAddA(LPSTR,UINT,PSECURITY_DESCRIPTOR,PBYTE,DWORD); +UINT WINAPI NDdeShareAddW(LPWSTR,UINT,PSECURITY_DESCRIPTOR,PBYTE,DWORD); +UINT WINAPI NDdeShareDelA(LPSTR,LPSTR,UINT); +UINT WINAPI NDdeShareDelW(LPWSTR,LPWSTR,UINT); +UINT WINAPI NDdeShareEnumA(LPSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD); +UINT WINAPI NDdeShareEnumW(LPWSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD); +UINT WINAPI NDdeShareGetInfoA(LPSTR,LPSTR,UINT,PBYTE,DWORD,PDWORD,PWORD); +UINT WINAPI NDdeShareGetInfoW(LPWSTR,LPWSTR,UINT,PBYTE,DWORD,PDWORD,PWORD); +UINT WINAPI NDdeShareSetInfoA(LPSTR,LPSTR,UINT,PBYTE,DWORD,WORD); +UINT WINAPI NDdeShareSetInfoW(LPWSTR,LPWSTR,UINT,PBYTE,DWORD,WORD); +UINT WINAPI NDdeTrustedShareEnumA(LPSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD); +UINT WINAPI NDdeTrustedShareEnumW(LPWSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD); +#ifdef UNICODE +#define NDdeShareAdd NDdeShareAddW +#define NDdeShareDel NDdeShareDelW +#define NDdeSetShareSecurity NDdeSetShareSecurityW +#define NDdeGetShareSecurity NDdeGetShareSecurityW +#define NDdeShareEnum NDdeShareEnumW +#define NDdeShareGetInfo NDdeShareGetInfoW +#define NDdeShareSetInfo NDdeShareSetInfoW +#define NDdeGetErrorString NDdeGetErrorStringW +#define NDdeSetTrustedShare NDdeSetTrustedShareW +#define NDdeGetTrustedShare NDdeGetTrustedShareW +#define NDdeTrustedShareEnum NDdeTrustedShareEnumW +#else +#define NDdeShareAdd NDdeShareAddA +#define NDdeShareDel NDdeShareDelA +#define NDdeSetShareSecurity NDdeSetShareSecurityA +#define NDdeGetShareSecurity NDdeGetShareSecurityA +#define NDdeShareEnum NDdeShareEnumA +#define NDdeShareGetInfo NDdeShareGetInfoA +#define NDdeShareSetInfo NDdeShareSetInfoA +#define NDdeGetErrorString NDdeGetErrorStringA +#define NDdeIsValidShareName NDdeIsValidShareNameA +#define NDdeIsValidAppTopicList NDdeIsValidAppTopicListA +#define NDdeSetTrustedShare NDdeSetTrustedShareA +#define NDdeGetTrustedShare NDdeGetTrustedShareA +#define NDdeTrustedShareEnum NDdeTrustedShareEnumA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/nspapi.h b/reactos/w32api/include/nspapi.h new file mode 100644 index 00000000000..463b1390255 --- /dev/null +++ b/reactos/w32api/include/nspapi.h @@ -0,0 +1,126 @@ +#ifndef _NSPAPI_H +#define _NSPAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define NS_ALL 0 + +#define NS_SAP 1 +#define NS_NDS 2 +#define NS_PEER_BROWSE 3 + +#define NS_TCPIP_LOCAL 10 +#define NS_TCPIP_HOSTS 11 +#define NS_DNS 12 +#define NS_NETBT 13 +#define NS_WINS 14 + +#define NS_NBP 20 + +#define NS_MS 30 +#define NS_STDA 31 +#define NS_NTDS 32 + +#define NS_X500 40 +#define NS_NIS 41 +#define NS_NISPLUS 42 + +#define NS_WRQ 50 + +#define SERVICE_REGISTER 1 +#define SERVICE_DEREGISTER 2 +#define SERVICE_FLUSH 3 +#define SERVICE_FLAG_HARD 0x00000002 + +#ifndef RC_INVOKED + +#if defined (_WINSOCK_H) || defined (_WINSOCK2_H) /* needed for LPSOCKADDR */ +#ifndef __CSADDR_T_DEFINED /* also in winsock2.h, but not in winsock.h */ +#define __CSADDR_T_DEFINED +typedef struct _SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; +} SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS; +typedef struct _CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; +} CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO; +#endif +#endif + +#ifndef __BLOB_T_DEFINED /* also in wtypes.h and winsock2.h */ +#define __BLOB_T_DEFINED +typedef struct _BLOB { + ULONG cbSize; + BYTE *pBlobData; +} BLOB,*PBLOB,*LPBLOB; +#endif + +typedef struct _SERVICE_ADDRESS { + DWORD dwAddressType; + DWORD dwAddressFlags; + DWORD dwAddressLength; + DWORD dwPrincipalLength; + BYTE *lpAddress; + BYTE *lpPrincipal; +} SERVICE_ADDRESS; +typedef struct _SERVICE_ADDRESSES { + DWORD dwAddressCount; + SERVICE_ADDRESS Addresses[1]; +} SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES; +typedef struct _SERVICE_INFOA { + LPGUID lpServiceType; + LPSTR lpServiceName; + LPSTR lpComment; + LPSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} SERVICE_INFOA, *LPSERVICE_INFOA; +typedef struct _SERVICE_INFOW { + LPGUID lpServiceType; + LPWSTR lpServiceName; + LPWSTR lpComment; + LPWSTR lpLocale; + DWORD dwDisplayHint; + DWORD dwVersion; + DWORD dwTime; + LPWSTR lpMachineName; + LPSERVICE_ADDRESSES lpServiceAddress; + BLOB ServiceSpecificInfo; +} SERVICE_INFOW, *LPSERVICE_INFOW; + +typedef void *LPSERVICE_ASYNC_INFO; +INT WINAPI SetServiceA(DWORD,DWORD,DWORD,LPSERVICE_INFOA,LPSERVICE_ASYNC_INFO,LPDWORD); +INT WINAPI SetServiceW(DWORD,DWORD,DWORD,LPSERVICE_INFOW,LPSERVICE_ASYNC_INFO,LPDWORD); +INT WINAPI GetAddressByNameA(DWORD,LPGUID,LPSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPSTR,LPDWORD); +INT WINAPI GetAddressByNameW(DWORD,LPGUID,LPWSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPWSTR,LPDWORD); + +#ifdef UNICODE +typedef SERVICE_INFOW SERVICE_INFO, *LPSERVICE_INFO; +#define _SERVICE_INFO SERVICE_INFOW +#define SetService SetServiceW +#define GetAddressByName GetAddressByNameW +#else +typedef SERVICE_INFOA SERVICE_INFO, *LPSERVICE_INFO; +#define _SERVICE_INFO SERVICE_INFOA +#define SetService SetServiceA +#define GetAddressByName GetAddressByNameA +#endif + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#endif /* _NSPAPI_H */ diff --git a/reactos/w32api/include/ntdef.h b/reactos/w32api/include/ntdef.h new file mode 100644 index 00000000000..83f4fa35643 --- /dev/null +++ b/reactos/w32api/include/ntdef.h @@ -0,0 +1,60 @@ +#ifndef _NTDEF_H +#define _NTDEF_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define NTAPI __stdcall +#define OBJ_INHERIT 2L +#define OBJ_PERMANENT 16L +#define OBJ_EXCLUSIVE 32L +#define OBJ_CASE_INSENSITIVE 64L +#define OBJ_OPENIF 128L +#define OBJ_OPENLINK 256L +#define OBJ_VALID_ATTRIBUTES 498L +#define InitializeObjectAttributes(p,n,a,r,s) { \ + (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ + (p)->RootDirectory = (r); \ + (p)->Attributes = (a); \ + (p)->ObjectName = (n); \ + (p)->SecurityDescriptor = (s); \ + (p)->SecurityQualityOfService = NULL; \ +} +#ifndef NT_SUCCESS +#define NT_SUCCESS(x) ((x)>=0) +#define STATUS_SUCCESS ((NTSTATUS)0) +#endif +#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H) +typedef LONG NTSTATUS, *PNTSTATUS; +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING; +typedef const UNICODE_STRING* PCUNICODE_STRING; +typedef struct _STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING, *PSTRING; +#endif +typedef STRING ANSI_STRING; +typedef PSTRING PANSI_STRING; +typedef STRING OEM_STRING; +typedef PSTRING POEM_STRING; +typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; +typedef enum _SECTION_INHERIT { + ViewShare = 1, + ViewUnmap = 2 +} SECTION_INHERIT; +#if !defined(_NTSECAPI_H) +typedef struct _OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; +#endif +#endif /* _NTDEF_H */ diff --git a/reactos/w32api/include/ntdll.h b/reactos/w32api/include/ntdll.h new file mode 100644 index 00000000000..b666613996b --- /dev/null +++ b/reactos/w32api/include/ntdll.h @@ -0,0 +1,15 @@ +#ifndef _NTDLL_H +#define _NTDLL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +typedef enum _SHUTDOWN_ACTION { + ShutdownNoReboot, + ShutdownReboot, + ShutdownPowerOff + } SHUTDOWN_ACTION; + +DWORD WINAPI NtShutdownSystem (SHUTDOWN_ACTION Action); + +#endif /* _NTDLL_H */ diff --git a/reactos/w32api/include/ntldap.h b/reactos/w32api/include/ntldap.h new file mode 100644 index 00000000000..29236a047ca --- /dev/null +++ b/reactos/w32api/include/ntldap.h @@ -0,0 +1,60 @@ +/* + ntldap.h - Header file for the Windows LDAP API Extensions + + Written by Filip Navara + + References: + 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. +*/ + +#ifndef _NTLDAP_H +#define _NTLDAP_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#define LDAP_SERVER_ASQ_OID "1.2.840.113556.1.4.1504" +#define LDAP_SERVER_ASQ_OID_W L"1.2.840.113556.1.4.1504" +#define LDAP_SERVER_DIRSYNC_OID "1.2.840.113556.1.4.841" +#define LDAP_SERVER_DIRSYNC_OID_W L"1.2.840.113556.1.4.841" +#define LDAP_SERVER_SD_FLAGS_OID "1.2.840.113556.1.4.801" +#define LDAP_SERVER_SD_FLAGS_OID_W L"1.2.840.113556.1.4.801" +#define LDAP_SERVER_FAST_BIND_OID "1.2.840.113556.1.4.1781" +#define LDAP_SERVER_FAST_BIND_OID_W L"1.2.840.113556.1.4.1781" +#define LDAP_MATCHING_RULE_BIT_OR "1.2.840.113556.1.4.804" +#define LDAP_MATCHING_RULE_BIT_OR_W L"1.2.840.113556.1.4.804" +#define LDAP_MATCHING_RULE_BIT_AND "1.2.840.113556.1.4.803" +#define LDAP_MATCHING_RULE_BIT_AND_W L"1.2.840.113556.1.4.803" +#define LDAP_SERVER_EXTENDED_DN_OID "1.2.840.113556.1.4.529" +#define LDAP_SERVER_EXTENDED_DN_OID_W L"1.2.840.113556.1.4.529" +#define LDAP_SERVER_LAZY_COMMIT_OID "1.2.840.113556.1.4.619" +#define LDAP_SERVER_LAZY_COMMIT_OID_W L"1.2.840.113556.1.4.619" +#define LDAP_SERVER_TREE_DELETE_OID "1.2.840.113556.1.4.805" +#define LDAP_SERVER_TREE_DELETE_OID_W L"1.2.840.113556.1.4.805" +#define LDAP_SERVER_VERIFY_NAME_OID "1.2.840.113556.1.4.1338" +#define LDAP_SERVER_VERIFY_NAME_OID_W L"1.2.840.113556.1.4.1338" +#define LDAP_SERVER_SHOW_DELETED_OID "1.2.840.113556.1.4.417" +#define LDAP_SERVER_SHOW_DELETED_OID_W L"1.2.840.113556.1.4.417" +#define LDAP_SERVER_NOTIFICATION_OID "1.2.840.113556.1.4.528" +#define LDAP_SERVER_NOTIFICATION_OID_W L"1.2.840.113556.1.4.528" +#define LDAP_SERVER_DOMAIN_SCOPE_OID "1.2.840.113556.1.4.1339" +#define LDAP_SERVER_DOMAIN_SCOPE_OID_W L"1.2.840.113556.1.4.1339" +#define LDAP_CAP_ACTIVE_DIRECTORY_OID "1.2.840.113556.1.4.800" +#define LDAP_CAP_ACTIVE_DIRECTORY_OID_W L"1.2.840.113556.1.4.800" +#define LDAP_SERVER_SEARCH_OPTIONS_OID "1.2.840.113556.1.4.1340" +#define LDAP_SERVER_SEARCH_OPTIONS_OID_W L"1.2.840.113556.1.4.1340" +#define LDAP_CAP_ACTIVE_DIRECTORY_V51_OID "1.2.840.113556.1.4.1670" +#define LDAP_CAP_ACTIVE_DIRECTORY_V51_OID_W L"1.2.840.113556.1.4.1670" +#define LDAP_SERVER_PERMISSIVE_MODIFY_OID "1.2.840.113556.1.4.1413" +#define LDAP_SERVER_PERMISSIVE_MODIFY_OID_W L"1.2.840.113556.1.4.1413" +#define LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID "1.2.840.113556.1.4.521" +#define LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID_W L"1.2.840.113556.1.4.521" +#define SERVER_SEARCH_FLAG_DOMAIN_SCOPE 1 +#define SERVER_SEARCH_FLAG_PHANTOM_ROOT 2 + +#endif /* _NTLDAP_H */ diff --git a/reactos/w32api/include/ntsecapi.h b/reactos/w32api/include/ntsecapi.h new file mode 100644 index 00000000000..559087292c9 --- /dev/null +++ b/reactos/w32api/include/ntsecapi.h @@ -0,0 +1,612 @@ +#ifndef _NTSECAPI_H +#define _NTSECAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define KERB_WRAP_NO_ENCRYPT 0x80000001 +#define LOGON_GUEST 1 +#define LOGON_NOENCRYPTION 2 +#define LOGON_CACHED_ACCOUNT 4 +#define LOGON_USED_LM_PASSWORD 8 +#define LOGON_EXTRA_SIDS 32 +#define LOGON_SUBAUTH_SESSION_KEY 64 +#define LOGON_SERVER_TRUST_ACCOUNT 128 +#define LOGON_NTLMV2_ENABLED 256 +#define LOGON_RESOURCE_GROUPS 512 +#define LOGON_PROFILE_PATH_RETURNED 1024 +#define LOGON_GRACE_LOGON 16777216 +#define LSA_MODE_PASSWORD_PROTECTED 1 +#define LSA_MODE_INDIVIDUAL_ACCOUNTS 2 +#define LSA_MODE_MANDATORY_ACCESS 3 +#define LSA_MODE_LOG_FULL 4 +#define LSA_SUCCESS(x) ((LONG)(x)>=0) +#define MICROSOFT_KERBEROS_NAME_A "Kerberos" +#define MICROSOFT_KERBEROS_NAME_W L"Kerberos" +#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 32 +#define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 2048 +#define MSV1_0_CHALLENGE_LENGTH 8 +#define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 2 +#define MSV1_0_CRED_LM_PRESENT 1 +#define MSV1_0_CRED_NT_PRESENT 2 +#define MSV1_0_CRED_VERSION 0 +#define MSV1_0_DONT_TRY_GUEST_ACCOUNT 16 +#define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8 +#define MSV1_0_MAX_NTLM3_LIFE 1800 +#define MSV1_0_MAX_AVL_SIZE 64000 +#define MSV1_0_MNS_LOGON 16777216 +#define MSV1_0_NTLM3_RESPONSE_LENGTH 16 +#define MSV1_0_NTLM3_OWF_LENGTH 16 +#define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE)-MSV1_0_NTLM3_RESPONSE_LENGTH) +#define MSV1_0_OWF_PASSWORD_LENGTH 16 +#define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" +#define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" +#define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW)-sizeof(WCHAR) +#define MSV1_0_RETURN_USER_PARAMETERS 8 +#define MSV1_0_RETURN_PASSWORD_EXPIRY 64 +#define MSV1_0_RETURN_PROFILE_PATH 512 +#define MSV1_0_SUBAUTHENTICATION_DLL_EX 1048576 +#define MSV1_0_SUBAUTHENTICATION_DLL 0xff000000 +#define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24 +#define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2 +#define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132 +#define MSV1_0_SUBAUTHENTICATION_FLAGS 0xff000000 +#define MSV1_0_SUBAUTHENTICATION_KEY "System\\CurrentControlSet\\Control\\Lsa\\MSV1_0" +#define MSV1_0_SUBAUTHENTICATION_VALUE "Auth" +#define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 256 +#define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 1024 +#define MSV1_0_UPDATE_LOGON_STATISTICS 4 +#define MSV1_0_USE_CLIENT_CHALLENGE 128 +#define MSV1_0_USER_SESSION_KEY_LENGTH 16 +#define POLICY_VIEW_LOCAL_INFORMATION 1 +#define POLICY_VIEW_AUDIT_INFORMATION 2 +#define POLICY_GET_PRIVATE_INFORMATION 4 +#define POLICY_TRUST_ADMIN 8 +#define POLICY_CREATE_ACCOUNT 16 +#define POLICY_CREATE_SECRET 32 +#define POLICY_CREATE_PRIVILEGE 64 +#define POLICY_SET_DEFAULT_QUOTA_LIMITS 128 +#define POLICY_SET_AUDIT_REQUIREMENTS 256 +#define POLICY_AUDIT_LOG_ADMIN 512 +#define POLICY_SERVER_ADMIN 1024 +#define POLICY_LOOKUP_NAMES 2048 +#define POLICY_READ (STANDARD_RIGHTS_READ|6) +#define POLICY_WRITE (STANDARD_RIGHTS_WRITE|2040) +#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE|2049) +#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|4095) +#define POLICY_AUDIT_EVENT_UNCHANGED 0 +#define POLICY_AUDIT_EVENT_SUCCESS 1 +#define POLICY_AUDIT_EVENT_FAILURE 2 +#define POLICY_AUDIT_EVENT_NONE 4 +#define POLICY_AUDIT_EVENT_MASK 7 +#define POLICY_LOCATION_LOCAL 1 +#define POLICY_LOCATION_DS 2 +#define POLICY_MACHINE_POLICY_LOCAL 0 +#define POLICY_MACHINE_POLICY_DEFAULTED 1 +#define POLICY_MACHINE_POLICY_EXPLICIT 2 +#define POLICY_MACHINE_POLICY_UNKNOWN 0xFFFFFFFF +#define POLICY_QOS_SCHANEL_REQUIRED 1 +#define POLICY_QOS_OUTBOUND_INTEGRITY 2 +#define POLICY_QOS_OUTBOUND_CONFIDENTIALITY 4 +#define POLICY_QOS_INBOUND_INTEGREITY 8 +#define POLICY_QOS_INBOUND_CONFIDENTIALITY 16 +#define POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE 32 +#define POLICY_QOS_RAS_SERVER_ALLOWED 64 +#define POLICY_QOS_DHCP_SERVER_ALLOWD 128 +#define POLICY_KERBEROS_FORWARDABLE 1 +#define POLICY_KERBEROS_PROXYABLE 2 +#define POLICY_KERBEROS_RENEWABLE 4 +#define POLICY_KERBEROS_POSTDATEABLE 8 +#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify" +#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify" +#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter" +#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight") +#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight") +#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight") +#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight") +#define TRUST_ATTRIBUTE_NON_TRANSITIVE 1 +#define TRUST_ATTRIBUTE_UPLEVEL_ONLY 2 +#define TRUST_ATTRIBUTE_TREE_PARENT 4194304 +#define TRUST_ATTRIBUTES_VALID -16580609 +#define TRUST_AUTH_TYPE_NONE 0 +#define TRUST_AUTH_TYPE_NT4OWF 1 +#define TRUST_AUTH_TYPE_CLEAR 2 +#define TRUST_DIRECTION_DISABLED 0 +#define TRUST_DIRECTION_INBOUND 1 +#define TRUST_DIRECTION_OUTBOUND 2 +#define TRUST_DIRECTION_BIDIRECTIONAL 3 +#define TRUST_TYPE_DOWNLEVEL 1 +#define TRUST_TYPE_UPLEVEL 2 +#define TRUST_TYPE_MIT 3 +#define TRUST_TYPE_DCE 4 +#if !defined(_NTDEF_H) && !defined(_SUBAUTH_H) +typedef LONG NTSTATUS, *PNTSTATUS; +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING; +typedef const UNICODE_STRING* PCUNICODE_STRING; +typedef struct _STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING, *PSTRING; +#endif +typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; +typedef STRING LSA_STRING, *PLSA_STRING; +typedef enum _MSV1_0_LOGON_SUBMIT_TYPE { + MsV1_0InteractiveLogon = 2, + MsV1_0Lm20Logon, + MsV1_0NetworkLogon, + MsV1_0SubAuthLogon, + MsV1_0WorkstationUnlockLogon = 7 +} MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE; +typedef enum _MSV1_0_PROFILE_BUFFER_TYPE { + MsV1_0InteractiveProfile = 2, + MsV1_0Lm20LogonProfile, + MsV1_0SmartCardProfile +} MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE; +typedef enum { + MsvAvEOL, + MsvAvNbComputerName, + MsvAvNbDomainName, + MsvAvDnsComputerName, + MsvAvDnsDomainName +} MSV1_0_AVID; +typedef 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_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE; +typedef enum _POLICY_LSA_SERVER_ROLE { + PolicyServerRoleBackup = 2, + PolicyServerRolePrimary +} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE; +typedef enum _POLICY_SERVER_ENABLE_STATE { + PolicyServerEnabled = 2, + PolicyServerDisabled +} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE; +typedef enum _POLICY_INFORMATION_CLASS { + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyEfsInformation +} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS; +typedef enum _POLICY_AUDIT_EVENT_TYPE { + AuditCategorySystem, + AuditCategoryLogon, + AuditCategoryObjectAccess, + AuditCategoryPrivilegeUse, + AuditCategoryDetailedTracking, + AuditCategoryPolicyChange, + AuditCategoryAccountManagement, + AuditCategoryDirectoryServiceAccess, + AuditCategoryAccountLogon +} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE; +typedef enum _POLICY_LOCAL_INFORMATION_CLASS { + PolicyLocalAuditEventsInformation = 1, + PolicyLocalPdAccountInformation, + PolicyLocalAccountDomainInformation, + PolicyLocalLsaServerRoleInformation, + PolicyLocalReplicaSourceInformation, + PolicyLocalModificationInformation, + PolicyLocalAuditFullSetInformation, + PolicyLocalAuditFullQueryInformation, + PolicyLocalDnsDomainInformation, + PolicyLocalIPSecReferenceInformation, + PolicyLocalMachinePasswordInformation, + PolicyLocalQualityOfServiceInformation, + PolicyLocalPolicyLocationInformation +} POLICY_LOCAL_INFORMATION_CLASS, *PPOLICY_LOCAL_INFORMATION_CLASS; +typedef enum _POLICY_DOMAIN_INFORMATION_CLASS { + PolicyDomainIPSecReferenceInformation = 1, + PolicyDomainQualityOfServiceInformation, + PolicyDomainEfsInformation, + PolicyDomainPublicKeyInformation, + PolicyDomainPasswordPolicyInformation, + PolicyDomainLockoutInformation, + PolicyDomainKerberosTicketInformation +} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS; +typedef enum _SECURITY_LOGON_TYPE { + Interactive = 2, + Network, + Batch, + Service, + Proxy, + Unlock +} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE; +typedef enum _TRUSTED_INFORMATION_CLASS { + TrustedDomainNameInformation = 1, + TrustedControllersInformation, + TrustedPosixOffsetInformation, + TrustedPasswordInformation, + TrustedDomainInformationBasic, + TrustedDomainInformationEx, + TrustedDomainAuthInformation, + TrustedDomainFullInformation +} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS; +typedef struct _DOMAIN_PASSWORD_INFORMATION { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION; +typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE; +typedef struct _LSA_ENUMERATION_INFORMATION { + PSID Sid; +} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION; +typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE; +#if !defined(_NTDEF_H) +typedef struct _LSA_OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PLSA_UNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; +#endif +typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES; +typedef struct _LSA_TRUST_INFORMATION { + LSA_UNICODE_STRING Name; + PSID Sid; +} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION; +typedef struct _LSA_REFERENCED_DOMAIN_LIST { + ULONG Entries; + PLSA_TRUST_INFORMATION Domains; +} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST; +typedef struct _LSA_TRANSLATED_SID { + SID_NAME_USE Use; + ULONG RelativeId; + LONG DomainIndex; +} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID; +typedef struct _LSA_TRANSLATED_NAME { + SID_NAME_USE Use; + LSA_UNICODE_STRING Name; + LONG DomainIndex; +} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME; +typedef struct _MSV1_0_INTERACTIVE_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Password; +} MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON; +typedef 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_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE; +typedef struct _MSV1_0_LM20_LOGON { + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; + STRING CaseSensitiveChallengeResponse; + STRING CaseInsensitiveChallengeResponse; + ULONG ParameterControl; +} MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON; +typedef struct _MSV1_0_SUBAUTH_LOGON{ /* W2K only */ + MSV1_0_LOGON_SUBMIT_TYPE MessageType; + UNICODE_STRING LogonDomainName; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; + UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; + STRING AuthenticationInfo1; + STRING AuthenticationInfo2; + ULONG ParameterControl; + ULONG SubAuthPackageId; +} MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON; +typedef struct _MSV1_0_LM20_LOGON_PROFILE { + MSV1_0_PROFILE_BUFFER_TYPE MessageType; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER LogoffTime; + ULONG UserFlags; + UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]; + UNICODE_STRING LogonDomainName; + UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]; + UNICODE_STRING LogonServer; + UNICODE_STRING UserParameters; +} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE; +typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL { + ULONG Version; + ULONG Flags; + UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH]; + UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH]; +} MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL; +typedef struct _MSV1_0_NTLM3_RESPONSE { + UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH]; + UCHAR RespType; + UCHAR HiRespType; + USHORT Flags; + ULONG MsgWord; + ULONGLONG TimeStamp; + UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH]; + ULONG AvPairsOff; + UCHAR Buffer[1]; +} MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE; +typedef struct _MSV1_0_AV_PAIR { + USHORT AvId; + USHORT AvLen; +} MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR; +typedef 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_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST; +typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + BOOLEAN PasswordInfoValid; + DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; +} MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE; +typedef struct _MSV1_0_SUBAUTH_REQUEST{ + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthPackageId; + ULONG SubAuthInfoLength; + PUCHAR SubAuthSubmitBuffer; +} MSV1_0_SUBAUTH_REQUEST, *PMSV1_0_SUBAUTH_REQUEST; +typedef struct _MSV1_0_SUBAUTH_RESPONSE{ + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG SubAuthInfoLength; + PUCHAR SubAuthReturnBuffer; +} MSV1_0_SUBAUTH_RESPONSE, *PMSV1_0_SUBAUTH_RESPONSE; +#define MSV1_0_DERIVECRED_TYPE_SHA1 0 +typedef struct _MSV1_0_DERIVECRED_REQUEST { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + LUID LogonId; + ULONG DeriveCredType; + ULONG DeriveCredInfoLength; + UCHAR DeriveCredSubmitBuffer[1]; +} MSV1_0_DERIVECRED_REQUEST, *PMSV1_0_DERIVECRED_REQUEST; +typedef struct _MSV1_0_DERIVECRED_RESPONSE { + MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; + ULONG DeriveCredInfoLength; + UCHAR DeriveCredReturnBuffer[1]; +} MSV1_0_DERIVECRED_RESPONSE, *PMSV1_0_DERIVECRED_RESPONSE; +typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS; +typedef struct _POLICY_PRIVILEGE_DEFINITION { + LSA_UNICODE_STRING Name; + LUID LocalValue; +} POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION; +typedef struct _POLICY_AUDIT_LOG_INFO { + ULONG AuditLogPercentFull; + ULONG MaximumLogSize; + LARGE_INTEGER AuditRetentionPeriod; + BOOLEAN AuditLogFullShutdownInProgress; + LARGE_INTEGER TimeToShutdown; + ULONG NextAuditRecordId; +} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO; +typedef struct _POLICY_AUDIT_EVENTS_INFO { + BOOLEAN AuditingMode; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + ULONG MaximumAuditEventCount; +} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO; +typedef struct _POLICY_ACCOUNT_DOMAIN_INFO { + LSA_UNICODE_STRING DomainName; + PSID DomainSid; +} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO; +typedef struct _POLICY_PRIMARY_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + PSID Sid; +} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO; +typedef struct _POLICY_DNS_DOMAIN_INFO { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING DnsTreeName; + GUID DomainGuid; + PSID Sid; +} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO; +typedef struct _POLICY_PD_ACCOUNT_INFO { + LSA_UNICODE_STRING Name; +} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO; +typedef struct _POLICY_LSA_SERVER_ROLE_INFO { + POLICY_LSA_SERVER_ROLE LsaServerRole; +} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO; +typedef struct _POLICY_REPLICA_SOURCE_INFO { + LSA_UNICODE_STRING ReplicaSource; + LSA_UNICODE_STRING ReplicaAccountName; +} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO; +typedef struct _POLICY_DEFAULT_QUOTA_INFO { + QUOTA_LIMITS QuotaLimits; +} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO; +typedef struct _POLICY_MODIFICATION_INFO { + LARGE_INTEGER ModifiedId; + LARGE_INTEGER DatabaseCreationTime; +} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO; +typedef struct _POLICY_AUDIT_FULL_SET_INFO { + BOOLEAN ShutDownOnFull; +} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO; +typedef struct _POLICY_AUDIT_FULL_QUERY_INFO { + BOOLEAN ShutDownOnFull; + BOOLEAN LogIsFull; +} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO; +typedef struct _POLICY_EFS_INFO { + ULONG InfoLength; + PUCHAR EfsBlob; +} POLICY_EFS_INFO, *PPOLICY_EFS_INFO; +typedef struct _POLICY_LOCAL_IPSEC_REFERENCE_INFO { + LSA_UNICODE_STRING ObjectPath; +} POLICY_LOCAL_IPSEC_REFERENCE_INFO, *PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; +typedef struct _POLICY_LOCAL_MACHINE_PASSWORD_INFO { + LARGE_INTEGER PasswordChangeInterval; +} POLICY_LOCAL_MACHINE_PASSWORD_INFO, *PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; +typedef struct _POLICY_LOCAL_POLICY_LOCATION_INFO { + ULONG PolicyLocation; +} POLICY_LOCAL_POLICY_LOCATION_INFO, *PPOLICY_LOCAL_POLICY_LOCATION_INFO; +typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO { + ULONG QualityOfService; +} POLICY_LOCAL_QUALITY_OF_SERVICE_INFO, *PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO; +typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; +typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; +typedef struct _POLICY_DOMAIN_PUBLIC_KEY_INFO { + ULONG InfoLength; + PUCHAR PublicKeyInfo; +} POLICY_DOMAIN_PUBLIC_KEY_INFO, *PPOLICY_DOMAIN_PUBLIC_KEY_INFO; +typedef struct _POLICY_DOMAIN_LOCKOUT_INFO { + LARGE_INTEGER LockoutDuration; + LARGE_INTEGER LockoutObservationWindow; + USHORT LockoutThreshold; +} POLICY_DOMAIN_LOCKOUT_INFO, *PPOLICY_DOMAIN_LOCKOUT_INFO; +typedef struct _POLICY_DOMAIN_PASSWORD_INFO { + USHORT MinPasswordLength; + USHORT PasswordHistoryLength; + ULONG PasswordProperties; + LARGE_INTEGER MaxPasswordAge; + LARGE_INTEGER MinPasswordAge; +} POLICY_DOMAIN_PASSWORD_INFO, *PPOLICY_DOMAIN_PASSWORD_INFO; +typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO { + ULONG AuthenticationOptions; + LARGE_INTEGER MinTicketAge; + LARGE_INTEGER MaxTicketAge; + LARGE_INTEGER MaxRenewAge; + LARGE_INTEGER ProxyLifetime; + LARGE_INTEGER ForceLogoff; +} POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; +typedef PVOID LSA_HANDLE, *PLSA_HANDLE; +typedef struct _TRUSTED_DOMAIN_NAME_INFO { + LSA_UNICODE_STRING Name; +} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO; +typedef struct _TRUSTED_CONTROLLERS_INFO { + ULONG Entries; + PLSA_UNICODE_STRING Names; +} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO; +typedef struct _TRUSTED_POSIX_OFFSET_INFO { + ULONG Offset; +} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO; +typedef struct _TRUSTED_PASSWORD_INFO { + LSA_UNICODE_STRING Password; + LSA_UNICODE_STRING OldPassword; +} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO; +typedef LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; +typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; +typedef struct _TRUSTED_DOMAIN_INFORMATION_EX { + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; +} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX; +typedef struct _LSA_AUTH_INFORMATION { + LARGE_INTEGER LastUpdateTime; + ULONG AuthType; + ULONG AuthInfoLength; + PUCHAR AuthInfo; +} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION; +typedef 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; +} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION; +typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION { + TRUSTED_DOMAIN_INFORMATION_EX Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; +} TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION; +NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG); +NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*, + PULONG,PNTSTATUS); +NTSTATUS NTAPI LsaClose(LSA_HANDLE); +NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE); +NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE, + PTRUSTED_DOMAIN_INFORMATION_EX, + PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK, + PLSA_HANDLE); +NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID); +NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE); +NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG); +NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING, + PVOID*,PULONG); +NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, + PVOID*,ULONG,PULONG); +NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE, + TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG); +NTSTATUS NTAPI LsaFreeMemory(PVOID); +NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID); +NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID, + ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG, + PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS); +NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG); +NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING, + PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID*); +NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*, + PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*); +ULONG NTAPI LsaNtStatusToWinError(NTSTATUS); +NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES, + ACCESS_MASK,PLSA_HANDLE); +NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID, + TRUSTED_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS,PVOID*); +NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE); +NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN, + PLSA_UNICODE_STRING,ULONG); +NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING*); +NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE, + POLICY_DOMAIN_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS, PVOID); +NTSTATUS NTAPI LsaSetLocalInformationPolicy(LSA_HANDLE, + POLICY_LOCAL_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID, + TRUSTED_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING, + TRUSTED_INFORMATION_CLASS,PVOID); +NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING, + PLSA_UNICODE_STRING); +typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING, + ULONG,PUNICODE_STRING); +typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)(void); +typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING,PUNICODE_STRING, + PUNICODE_STRING,BOOLEAN); +#ifdef __cplusplus +} +#endif +#endif /* _NTSECAPI_H */ diff --git a/reactos/w32api/include/ntsecpkg.h b/reactos/w32api/include/ntsecpkg.h new file mode 100644 index 00000000000..1b6076a8620 --- /dev/null +++ b/reactos/w32api/include/ntsecpkg.h @@ -0,0 +1,44 @@ +#ifndef _NTSECPKG_H +#define _NTSECPKG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define ISC_REQ_DELEGATE 1 +#define ISC_REQ_MUTUAL_AUTH 2 +#define ISC_REQ_REPLAY_DETECT 4 +#define ISC_REQ_SEQUENCE_DETECT 8 +#define ISC_REQ_CONFIDENTIALITY 16 +#define ISC_REQ_USE_SESSION_KEY 32 +#define ISC_REQ_PROMPT_FOR_CREDS 64 +#define ISC_REQ_USE_SUPPLIED_CREDS 128 +#define ISC_REQ_ALLOCATE_MEMORY 256 +#define ISC_REQ_USE_DCE_STYLE 512 +#define ISC_REQ_DATAGRAM 1024 +#define ISC_REQ_CONNECTION 2048 +#define ISC_REQ_EXTENDED_ERROR 16384 +#define ISC_REQ_STREAM 32768 +#define ISC_REQ_INTEGRITY 65536 +#define ISC_REQ_MANUAL_CRED_VALIDATION 524288 +#define ISC_REQ_HTTP 268435456 + +#define ISC_RET_EXTENDED_ERROR 16384 + +#define ASC_REQ_DELEGATE 1 +#define ASC_REQ_MUTUAL_AUTH 2 +#define ASC_REQ_REPLAY_DETECT 4 +#define ASC_REQ_SEQUENCE_DETECT 8 +#define ASC_REQ_CONFIDENTIALITY 16 +#define ASC_REQ_USE_SESSION_KEY 32 +#define ASC_REQ_ALLOCATE_MEMORY 256 +#define ASC_REQ_USE_DCE_STYLE 512 +#define ASC_REQ_DATAGRAM 1024 +#define ASC_REQ_CONNECTION 2048 +#define ASC_REQ_EXTENDED_ERROR 32768 +#define ASC_REQ_STREAM 65536 +#define ASC_REQ_INTEGRITY 131072 + +#define SECURITY_NATIVE_DREP 16 +#define SECURITY_NETWORK_DREP 0 + +#endif /* _NTSECPKG_H */ diff --git a/reactos/w32api/include/oaidl.h b/reactos/w32api/include/oaidl.h new file mode 100644 index 00000000000..06c4116ab52 --- /dev/null +++ b/reactos/w32api/include/oaidl.h @@ -0,0 +1,705 @@ +#ifndef _OAIDL_H +#define _OAIDL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef NONAMELESSUNION +#define __VARIANT_NAME_1 n1 +#define __VARIANT_NAME_2 n2 +#define __VARIANT_NAME_3 n3 +#define __VARIANT_NAME_4 n4 +#else +#define __tagVARIANT +#define __VARIANT_NAME_1 +#define __VARIANT_NAME_2 +#define __VARIANT_NAME_3 +#define __VARIANT_NAME_4 +#endif +#define DISPID_UNKNOWN (-1) +#define DISPID_VALUE (0) +#define DISPID_PROPERTYPUT (-3) +#define DISPID_NEWENUM (-4) +#define DISPID_EVALUATE (-5) +#define DISPID_CONSTRUCTOR (-6) +#define DISPID_DESTRUCTOR (-7) +#define DISPID_COLLECT (-8) +#define FADF_AUTO (1) +#define FADF_STATIC (2) +#define FADF_EMBEDDED (4) +#define FADF_FIXEDSIZE (16) +#define FADF_BSTR (256) +#define FADF_UNKNOWN (512) +#define FADF_DISPATCH (1024) +#define FADF_VARIANT (2048) +#define FADF_RESERVED (0xf0e8) +#define PARAMFLAG_NONE (0) +#define PARAMFLAG_FIN (1) +#define PARAMFLAG_FOUT (2) +#define PARAMFLAG_FLCID (4) +#define PARAMFLAG_FRETVAL (8) +#define PARAMFLAG_FOPT (16) +#define PARAMFLAG_FHASDEFAULT (32) +#define IDLFLAG_NONE PARAMFLAG_NONE +#define IDLFLAG_FIN PARAMFLAG_FIN +#define IDLFLAG_FOUT PARAMFLAG_FOUT +#define IDLFLAG_FLCID PARAMFLAG_FLCID +#define IDLFLAG_FRETVAL PARAMFLAG_FRETVAL +#define IMPLTYPEFLAG_FDEFAULT 1 +#define IMPLTYPEFLAG_FSOURCE 2 +#define IMPLTYPEFLAG_FRESTRICTED 4 +#define IMPLTYPEFLAG_FDEFAULTVTABLE 8 + +typedef interface ITypeLib *LPTYPELIB; +typedef interface ITypeLib2 *LPTYPELIB2; +typedef interface ICreateTypeInfo *LPCREATETYPEINFO; +typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2; +typedef interface ICreateTypeLib *LPCREATETYPELIB; +typedef interface ICreateTypeLib2 *LPCREATETYPELIB2; +typedef interface ITypeComp *LPTYPECOMP; +typedef interface ITypeInfo *LPTYPEINFO; +typedef interface ITypeInfo2 *LPTYPEINFO2; +typedef interface IErrorInfo *LPERRORINFO; +typedef interface IDispatch *LPDISPATCH; +typedef interface IEnumVARIANT *LPENUMVARIANT; +typedef interface ICreateErrorInfo *LPCREATEERRORINFO; +typedef interface ISupportErrorInfo *LPSUPPORTERRORINFO; +typedef interface IRecordInfo *LPRECORDINFO; + +extern const IID IID_ITypeLib; +extern const IID IID_ITypeLib2; +extern const IID IID_ICreateTypeInfo; +extern const IID IID_ICreateTypeInfo2; +extern const IID IID_ICreateTypeLib; +extern const IID IID_ICreateTypeLib2; +extern const IID IID_ITypeInfo; +extern const IID IID_ITypeInfo2; +extern const IID IID_IErrorInfo; +extern const IID IID_IDispatch; +extern const IID IID_IEnumVARIANT; +extern const IID IID_ICreateErrorInfo; +extern const IID IID_ISupportErrorInfo; +extern const IID IID_IRecordInfo; +extern const IID IID_ITypeMarshal; + +typedef enum tagSYSKIND { + SYS_WIN16,SYS_WIN32,SYS_MAC +} SYSKIND; +typedef enum tagLIBFLAGS { + LIBFLAG_FRESTRICTED=1,LIBFLAG_FCONTROL=2,LIBFLAG_FHIDDEN=4, + LIBFLAG_FHASDISKIMAGE=8 +} LIBFLAGS; +typedef struct tagTLIBATTR { + GUID guid; + LCID lcid; + SYSKIND syskind; + WORD wMajorVerNum; + WORD wMinorVerNum; + WORD wLibFlags; +} TLIBATTR,*LPTLIBATTR; +typedef CY CURRENCY; +typedef struct tagSAFEARRAYBOUND { + ULONG cElements; + LONG lLbound; +}SAFEARRAYBOUND,*LPSAFEARRAYBOUND; +typedef struct _wireSAFEARR_BSTR +{ + ULONG Size; + wireBSTR *aBstr; +}SAFEARR_BSTR; +typedef struct _wireSAFEARR_UNKNOWN { + ULONG Size; + IUnknown **apUnknown; +}SAFEARR_UNKNOWN; +typedef struct _wireSAFEARR_DISPATCH { + ULONG Size; + LPDISPATCH *apDispatch; +}SAFEARR_DISPATCH; +typedef struct _wireSAFEARR_VARIANT { + ULONG Size; + struct _wireVARIANT *aVariant; +}SAFEARR_VARIANT; +typedef enum tagSF_TYPE { + SF_ERROR=VT_ERROR, + SF_I1=VT_I1, + SF_I2=VT_I2, + SF_I4=VT_I4, + SF_I8=VT_I8, + SF_BSTR=VT_BSTR, + SF_UNKNOWN=VT_UNKNOWN, + SF_DISPATCH=VT_DISPATCH, + SF_VARIANT=VT_VARIANT +}SF_TYPE; +typedef struct _wireBRECORD { + ULONG fFlags; + ULONG clSize; + LPRECORDINFO* pRecInfo; + byte* pRecord; +} *wireBRECORD; +typedef struct _wireSAFEARR_BRECORD { + ULONG Size; + wireBRECORD* aRecord; + } SAFEARR_BRECORD; +typedef struct _wireSAFEARR_HAVEIID { + ULONG Size; + IUnknown** apUnknown; + IID iid; + } SAFEARR_HAVEIID; +typedef struct _wireSAFEARRAY_UNION { + ULONG sfType; + union { + 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; +}SAFEARRAYUNION; +typedef struct _wireSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + SAFEARRAYUNION uArrayStructs; + SAFEARRAYBOUND rgsabound[1]; +}*wireSAFEARRAY; +typedef wireSAFEARRAY *wirePSAFEARRAY; +typedef struct tagSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND rgsabound[1]; +}SAFEARRAY,*LPSAFEARRAY; +#if defined (__GNUC__) && !defined (NONAMELESSUNION) +__extension__ /* no named members */ +#endif +typedef struct tagVARIANT { + _ANONYMOUS_UNION union { + struct __tagVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + _ANONYMOUS_UNION union { + long lVal; + unsigned char bVal; + short iVal; + float fltVal; + double dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + BSTR bstrVal; + IUnknown *punkVal; + LPDISPATCH pdispVal; + SAFEARRAY *parray; + unsigned char *pbVal; + short *piVal; + long *plVal; + float *pfltVal; + double *pdblVal; + VARIANT_BOOL *pboolVal; + _VARIANT_BOOL *pbool; + SCODE *pscode; + CY *pcyVal; + DATE *pdate; + BSTR *pbstrVal; + IUnknown **ppunkVal; + LPDISPATCH *ppdispVal; + SAFEARRAY **pparray; + struct tagVARIANT *pvarVal; + void *byref; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + INT intVal; + UINT uintVal; + DECIMAL *pdecVal; + CHAR *pcVal; + USHORT *puiVal; + ULONG *pulVal; + INT *pintVal; + UINT *puintVal; + _ANONYMOUS_STRUCT struct { + PVOID pvRecord; + struct IRecordInfo *pRecInfo; + } __VARIANT_NAME_4; + } __VARIANT_NAME_3; + } __VARIANT_NAME_2; + DECIMAL decVal; + } __VARIANT_NAME_1; +} VARIANT,*LPVARIANT; +typedef VARIANT VARIANTARG; +typedef VARIANT *LPVARIANTARG; +typedef struct _wireVARIANT { + DWORD clSize; + DWORD rpcReserved; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + _ANONYMOUS_UNION union { + LONG lVal; + 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; + struct _wireVARIANT *pvarVal; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + INT intVal; + UINT uintVal; + DECIMAL decVal; + DECIMAL *pdecVal; + CHAR *pcVal; + USHORT *puiVal; + ULONG *pulVal; + INT *pintVal; + UINT *puintVal; + } DUMMYUNIONNAME; +} *wireVARIANT; +typedef LONG DISPID; +typedef DISPID MEMBERID; +typedef DWORD HREFTYPE; +typedef enum tagTYPEKIND { + TKIND_ENUM,TKIND_RECORD,TKIND_MODULE,TKIND_INTERFACE,TKIND_DISPATCH, + TKIND_COCLASS,TKIND_ALIAS,TKIND_UNION,TKIND_MAX +}TYPEKIND; +typedef struct tagTYPEDESC { + _ANONYMOUS_UNION union { + struct tagTYPEDESC *lptdesc; + struct tagARRAYDESC *lpadesc; + HREFTYPE hreftype; + } DUMMYUNIONNAME; + VARTYPE vt; +}TYPEDESC; +typedef struct tagARRAYDESC { + TYPEDESC tdescElem; + USHORT cDims; + SAFEARRAYBOUND rgbounds[1]; +}ARRAYDESC; +typedef struct tagPARAMDESCEX { + ULONG cBytes; + VARIANTARG varDefaultValue; +}PARAMDESCEX,*LPPARAMDESCEX; +typedef struct tagPARAMDESC { + LPPARAMDESCEX pparamdescex; + USHORT wParamFlags; +}PARAMDESC,*LPPARAMDESC; +typedef struct tagIDLDESC { + ULONG dwReserved; + USHORT wIDLFlags; +}IDLDESC,*LPIDLDESC; +typedef struct tagELEMDESC { + TYPEDESC tdesc; + _ANONYMOUS_UNION union { + IDLDESC idldesc; + PARAMDESC paramdesc; + } DUMMYUNIONNAME; +} ELEMDESC,*LPELEMDESC; +typedef struct tagTYPEATTR { + 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; +}TYPEATTR,*LPTYPEATTR; +typedef struct tagDISPPARAMS { + VARIANTARG *rgvarg; + DISPID *rgdispidNamedArgs; + UINT cArgs; + UINT cNamedArgs; +}DISPPARAMS; +typedef struct tagEXCEPINFO { + WORD wCode; + WORD wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + DWORD dwHelpContext; + PVOID pvReserved; + HRESULT(__stdcall * pfnDeferredFillIn)(struct tagEXCEPINFO*); + SCODE scode; +} EXCEPINFO,*LPEXCEPINFO; +typedef enum tagCALLCONV { + 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 +}CALLCONV; +typedef enum tagFUNCKIND { + FUNC_VIRTUAL,FUNC_PUREVIRTUAL,FUNC_NONVIRTUAL, + FUNC_STATIC,FUNC_DISPATCH +}FUNCKIND; +typedef enum tagINVOKEKIND { + INVOKE_FUNC=1,INVOKE_PROPERTYGET,INVOKE_PROPERTYPUT=4, + INVOKE_PROPERTYPUTREF=8 +}INVOKEKIND; +typedef struct tagFUNCDESC { + MEMBERID memid; + SCODE *lprgscode; + ELEMDESC *lprgelemdescParam; + FUNCKIND funckind; + INVOKEKIND invkind; + CALLCONV callconv; + SHORT cParams; + SHORT cParamsOpt; + SHORT oVft; + SHORT cScodes; + ELEMDESC elemdescFunc; + WORD wFuncFlags; +}FUNCDESC,*LPFUNCDESC; +typedef enum tagVARKIND { + VAR_PERINSTANCE,VAR_STATIC,VAR_CONST,VAR_DISPATCH +} VARKIND; +typedef struct tagVARDESC { + MEMBERID memid; + LPOLESTR lpstrSchema; + _ANONYMOUS_UNION union { + ULONG oInst; + VARIANT *lpvarValue; + } DUMMYUNIONNAME; + ELEMDESC elemdescVar; + WORD wVarFlags; + VARKIND varkind; +} VARDESC,*LPVARDESC; +typedef enum tagTYPEFLAGS { + 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 +} TYPEFLAGS; +typedef enum tagFUNCFLAGS { + 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 +} FUNCFLAGS; +typedef enum tagVARFLAGS { + 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 +} VARFLAGS; +typedef struct tagCLEANLOCALSTORAGE { + IUnknown *pInterface; + PVOID pStorage; + DWORD flags; +} CLEANLOCALSTORAGE; +typedef struct tagCUSTDATAITEM { + GUID guid; + VARIANTARG varValue; +} CUSTDATAITEM,*LPCUSTDATAITEM; +typedef struct tagCUSTDATA { + DWORD cCustData; + LPCUSTDATAITEM prgCustData; +} CUSTDATA,*LPCUSTDATA; + +typedef enum tagDESCKIND { + 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; + +typedef union tagBINDPTR { + LPFUNCDESC lpfuncdesc; + LPVARDESC lpvardesc; + LPTYPECOMP lptcomp; +} BINDPTR,*LPBINDPTR; + +#undef INTERFACE +#define INTERFACE IDispatch +DECLARE_INTERFACE_(IDispatch,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; +}; + +#undef INTERFACE +#define INTERFACE IEnumVARIANT +DECLARE_INTERFACE_(IEnumVARIANT,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Next)(THIS_ ULONG,VARIANT*,ULONG*) PURE; + STDMETHOD(Skip)(THIS_ ULONG) PURE; + STDMETHOD(Reset)(THIS) PURE; + STDMETHOD(Clone)(THIS_ IEnumVARIANT**) PURE; +}; + +#undef INTERFACE +#define INTERFACE ITypeComp +DECLARE_INTERFACE_(ITypeComp,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Bind)(THIS_ LPOLESTR,ULONG,WORD,LPTYPEINFO*,DESCKIND*,LPBINDPTR) PURE; + STDMETHOD(BindType)(THIS_ LPOLESTR,ULONG,LPTYPEINFO*,LPTYPECOMP*) PURE; +}; + +#undef INTERFACE +#define INTERFACE ITypeInfo +DECLARE_INTERFACE_(ITypeInfo,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE; + STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE; + STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE; + STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE; + STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE; + STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE; + STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE; + STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE; + STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE; + STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE; + STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE; + STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; + STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE; + STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE; + STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE; + STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE; + STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE; +}; + +#undef INTERFACE +#define INTERFACE ITypeInfo2 +DECLARE_INTERFACE_(ITypeInfo2,ITypeInfo) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE; + STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE; + STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE; + STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE; + STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE; + STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE; + STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE; + STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE; + STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE; + STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE; + STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE; + STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; + STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE; + STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE; + STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE; + STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE; + STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE; + STDMETHOD(GetTypeKind)(THIS_ TYPEKIND*) PURE; + STDMETHOD(GetTypeFlags)(THIS_ ULONG*) PURE; + STDMETHOD(GetFuncIndexOfMemId)(THIS_ MEMBERID,INVOKEKIND,UINT*) PURE; + STDMETHOD(GetVarIndexOfMemId)(THIS_ MEMBERID,UINT*) PURE; + STDMETHOD(GetCustData)(THIS_ REFGUID,VARIANT*) PURE; + STDMETHOD(GetFuncCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE; + STDMETHOD(GetParamCustData)(THIS_ UINT,UINT,REFGUID,VARIANT*) PURE; + STDMETHOD(GetVarCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE; + STDMETHOD(GetImplTypeCustData)(THIS_ UINT,REFGUID,VARIANT*) PURE; + STDMETHOD(GetDocumentation2)(THIS_ MEMBERID,LCID,BSTR*,DWORD*,BSTR*) PURE; + STDMETHOD(GetAllCustData)(THIS_ CUSTDATA*) PURE; + STDMETHOD(GetAllFuncCustData)(THIS_ UINT,CUSTDATA*) PURE; + STDMETHOD(GetAllParamCustData)(THIS_ UINT,UINT,CUSTDATA*) PURE; + STDMETHOD(GetAllVarCustData)(THIS_ UINT,CUSTDATA*) PURE; + STDMETHOD(GetAllImplTypeCustData)(THIS_ UINT,CUSTDATA*) PURE; +}; + +#undef INTERFACE +#define INTERFACE ITypeLib +DECLARE_INTERFACE_(ITypeLib,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE; + STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE; + STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE; + STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE; + STDMETHOD(GetTypeComp)(THIS_ ITypeComp*) PURE; + STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE; + STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE; + STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE; + STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE; +}; + +#undef INTERFACE +#define INTERFACE ITypeLib2 +DECLARE_INTERFACE_(ITypeLib2,ITypeLib) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE; + STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE; + STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE; + STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE; + STDMETHOD(GetTypeComp)(THIS_ ITypeComp*) PURE; + STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE; + STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE; + STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE; + STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE; + STDMETHOD(GetCustData)(THIS_ REFGUID,VARIANT*) PURE; + STDMETHOD(GetLibStatistics)(THIS_ ULONG*,ULONG*) PURE; + STDMETHOD(GetDocumentation2)(THIS_ INT,LCID,BSTR*,DWORD*,BSTR*) PURE; + STDMETHOD(GetAllCustData)(THIS_ CUSTDATA*) PURE; +}; + +EXTERN_C const IID IID_IErrorInfo; +#undef INTERFACE +#define INTERFACE IErrorInfo +DECLARE_INTERFACE_(IErrorInfo, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetGUID)(THIS_ GUID*) PURE; + STDMETHOD(GetSource)(THIS_ BSTR*) PURE; + STDMETHOD(GetDescription)(THIS_ BSTR*) PURE; + STDMETHOD(GetHelpFile)(THIS_ BSTR*) PURE; + STDMETHOD(GetHelpContext)(THIS_ DWORD*) PURE; +}; + +#ifdef COBJMACROS +#define IErrorInfo_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IErrorInfo_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IErrorInfo_Release(T) (T)->lpVtbl->Release(T) +#define IErrorInfo_GetGUID(T,a) (T)->lpVtbl->GetGUID(T,a) +#define IErrorInfo_GetSource(T,a) (T)->lpVtbl->GetSource(T,a) +#define IErrorInfo_GetDescription(T,a) (T)->lpVtbl->GetDescription(T,a) +#define IErrorInfo_GetHelpFile(T,a) (T)->lpVtbl->GetHelpFile(T,a) +#define IErrorInfo_GetHelpContext(T,a) (T)->lpVtbl->GetHelpContext(T,a) +#endif + +EXTERN_C const IID IID_ICreateErrorInfo; +#undef INTERFACE +#define INTERFACE ICreateErrorInfo +DECLARE_INTERFACE_(ICreateErrorInfo, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*)PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetGUID)(THIS_ REFGUID) PURE; + STDMETHOD(SetSource)(THIS_ LPOLESTR) PURE; + STDMETHOD(SetDescription)(THIS_ LPOLESTR) PURE; + STDMETHOD(SetHelpFile)(THIS_ LPOLESTR) PURE; + STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE; +}; + +EXTERN_C const IID IID_ISupportErrorInfo; +#undef INTERFACE +#define INTERFACE ISupportErrorInfo +DECLARE_INTERFACE_(ISupportErrorInfo, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID) PURE; +}; + +EXTERN_C const IID IID_IRecordInfo; +#undef INTERFACE +#define INTERFACE IRecordInfo +DECLARE_INTERFACE_(IRecordInfo, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(RecordInit)(THIS_ PVOID) PURE; + STDMETHOD(RecordClear)(THIS_ PVOID) PURE; + STDMETHOD(RecordCopy)(THIS_ PVOID, PVOID) PURE; + STDMETHOD(GetGuid)(THIS_ GUID*) PURE; + STDMETHOD(GetName)(THIS_ BSTR*) PURE; + STDMETHOD(GetSize)(THIS_ ULONG*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ ITypeInfo**) PURE; + STDMETHOD(GetField)(THIS_ PVOID,LPCOLESTR,VARIANT*) PURE; + STDMETHOD(GetFieldNoCopy)(THIS_ PVOID,LPCOLESTR,VARIANT*,PVOID*) PURE; + STDMETHOD(PutField )(THIS_ ULONG,PVOID,LPCOLESTR, VARIANT*) PURE; + STDMETHOD(PutFieldNoCopy)(THIS_ ULONG,PVOID,LPCOLESTR,VARIANT*) PURE; + STDMETHOD(GetFieldNames)(THIS_ ULONG*,BSTR*) PURE; + STDMETHOD_(BOOL,IsMatchingType)(THIS_ THIS) PURE; + STDMETHOD_(PVOID,RecordCreate)(THIS) PURE; + STDMETHOD(RecordCreateCopy)(THIS_ PVOID,PVOID*) PURE; + STDMETHOD(RecordDestroy )(THIS_ PVOID) PURE; +}; + +EXTERN_C const IID IID_ITypeMarshal; +#undef INTERFACE +#define INTERFACE ITypeMarshal +DECLARE_INTERFACE_(ITypeMarshal, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Size)(THIS_ PVOID,DWORD,PVOID,ULONG*) PURE; + STDMETHOD(Marshal)(THIS_ PVOID,DWORD,PVOID,ULONG,BYTE*,ULONG*) PURE; + STDMETHOD(Unmarshal)(THIS_ PVOID,DWORD,ULONG,BYTE*,ULONG*) PURE; + STDMETHOD(Free)(THIS_ PVOID) PURE; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/objbase.h b/reactos/w32api/include/objbase.h new file mode 100644 index 00000000000..144d52dae2b --- /dev/null +++ b/reactos/w32api/include/objbase.h @@ -0,0 +1,188 @@ +/* Include here to prevent circular dependencies if windows.h + not already included */ +#include +#include + +#ifndef _OBJBASE_H +#define _OBJBASE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#pragma pack(push,8) +#include + +#define WINOLEAPI STDAPI +#define WINOLEAPI_(type) STDAPI_(type) +#define FARSTRUCT +#define HUGEP +#define LISet32(li,v) ((li).HighPart=(v)<0?-1:0,(li).LowPart=(v)) +#define ULISet32(li,v) ((li).HighPart=0,(li).LowPart=(v)) +#define CLSCTX_ALL (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER) +#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER) +#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER) +#define MARSHALINTERFACE_MIN 500 +#define CWCSTORAGENAME 32 +#define STGM_DIRECT 0 +#define STGM_TRANSACTED 0x10000L +#define STGM_SIMPLE 0x8000000L +#define STGM_READ 0 +#define STGM_WRITE 1 +#define STGM_READWRITE 2 +#define STGM_SHARE_DENY_NONE 0x40 +#define STGM_SHARE_DENY_READ 0x30 +#define STGM_SHARE_DENY_WRITE 0x20 +#define STGM_SHARE_EXCLUSIVE 0x10 +#define STGM_PRIORITY 0x40000L +#define STGM_DELETEONRELEASE 0x4000000 +#define STGM_NOSCRATCH 0x100000 +#define STGM_CREATE 0x1000 +#define STGM_CONVERT 0x20000 +#define STGM_NOSNAPSHOT 0x200000 +#define STGM_FAILIFTHERE 0 +#define CWCSTORAGENAME 32 +#define ASYNC_MODE_COMPATIBILITY 1 +#define ASYNC_MODE_DEFAULT 0 +#define STGTY_REPEAT 256 +#define STG_TOEND 0xFFFFFFFF +#define STG_LAYOUT_SEQUENTIAL 0 +#define STG_LAYOUT_INTERLEAVED 1 +#define COM_RIGHTS_EXECUTE 1 +#define COM_RIGHTS_SAFE_FOR_SCRIPTING 2 +typedef enum tagREGCLS { + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2 +} REGCLS; +#include +#include +#include + +#ifdef __cplusplus +inline BOOL IsEqualGUID(REFGUID rguid1, REFGUID rguid2) + { return !memcmp(&rguid1, &rguid2, sizeof(GUID)); } +inline BOOL operator==(const GUID& guidOne, const GUID& guidOther) + { return !memcmp(&guidOne,&guidOther,sizeof(GUID)); } +inline BOOL operator!=(const GUID& g1, const GUID& g2) + { return !(g1 == g2); } +#else +#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#endif +#define IsEqualIID(id1,id2) IsEqualGUID(id1,id2) +#define IsEqualCLSID(id1,id2) IsEqualGUID(id1,id2) +#include + +typedef enum tagCOINIT { + COINIT_APARTMENTTHREADED = 0x2, + COINIT_MULTITHREADED = 0x0, + COINIT_DISABLE_OLE1DDE = 0x4, + COINIT_SPEED_OVER_MEMORY = 0x8 +} COINIT; +typedef enum tagSTDMSHLFLAGS { + SMEXF_SERVER = 0x01, + SMEXF_HANDLER = 0x02 +} STDMSHLFLAGS; + +WINOLEAPI_(DWORD) CoBuildVersion(void); +WINOLEAPI CoInitialize(PVOID); +WINOLEAPI CoInitializeEx(LPVOID,DWORD); +WINOLEAPI_(void) CoUninitialize(void); +WINOLEAPI CoGetMalloc(DWORD,LPMALLOC*); +WINOLEAPI_(DWORD) CoGetCurrentProcess(void); +WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY); +WINOLEAPI CoRevokeMallocSpy(void); +WINOLEAPI CoCreateStandardMalloc(DWORD,IMalloc**); +#ifdef DBG +WINOLEAPI_(ULONG) DebugCoGetRpcFault(void); +WINOLEAPI_(void) DebugCoSetRpcFault(ULONG); +#endif +WINOLEAPI CoGetClassObject(REFCLSID,DWORD,COSERVERINFO*,REFIID,PVOID*); +WINOLEAPI CoRegisterClassObject(REFCLSID,LPUNKNOWN,DWORD,DWORD,PDWORD); +WINOLEAPI CoRevokeClassObject(DWORD); +WINOLEAPI CoGetMarshalSizeMax(ULONG*,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD); +WINOLEAPI CoMarshalInterface(LPSTREAM,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD); +WINOLEAPI CoUnmarshalInterface(LPSTREAM,REFIID,PVOID*); +WINOLEAPI CoMarshalHresult(LPSTREAM,HRESULT); +WINOLEAPI CoUnmarshalHresult(LPSTREAM,HRESULT*); +WINOLEAPI CoReleaseMarshalData(LPSTREAM); +WINOLEAPI CoDisconnectObject(LPUNKNOWN,DWORD); +WINOLEAPI CoLockObjectExternal(LPUNKNOWN,BOOL,BOOL); +WINOLEAPI CoGetStandardMarshal(REFIID,LPUNKNOWN,DWORD,PVOID,DWORD,LPMARSHAL*); +WINOLEAPI CoGetStdMarshalEx(LPUNKNOWN,DWORD,LPUNKNOWN*); +WINOLEAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN); +WINOLEAPI_(BOOL) CoHasStrongExternalConnections(LPUNKNOWN); +WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID,LPUNKNOWN,LPSTREAM*); +WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM,REFIID,PVOID*); +WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN,LPUNKNOWN*); +WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR,BOOL); +WINOLEAPI_(void) CoFreeLibrary(HINSTANCE); +WINOLEAPI_(void) CoFreeAllLibraries(void); +WINOLEAPI_(void) CoFreeUnusedLibraries(void); +WINOLEAPI CoCreateInstance(REFCLSID,LPUNKNOWN,DWORD,REFIID,PVOID*); +WINOLEAPI CoCreateInstanceEx(REFCLSID,IUnknown*,DWORD,COSERVERINFO*,DWORD,MULTI_QI*); +WINOLEAPI StringFromCLSID(REFCLSID,LPOLESTR*); +WINOLEAPI CLSIDFromString(LPOLESTR,LPCLSID); +WINOLEAPI StringFromIID(REFIID,LPOLESTR*); +WINOLEAPI IIDFromString(LPOLESTR,LPIID); +WINOLEAPI_(BOOL) CoIsOle1Class(REFCLSID); +WINOLEAPI ProgIDFromCLSID(REFCLSID,LPOLESTR*); +WINOLEAPI CLSIDFromProgID(LPCOLESTR,LPCLSID); +WINOLEAPI_(int) StringFromGUID2(REFGUID,LPOLESTR,int); +WINOLEAPI CoCreateGuid(GUID*); +WINOLEAPI_(BOOL) CoFileTimeToDosDateTime(FILETIME*,LPWORD,LPWORD); +WINOLEAPI_(BOOL) CoDosDateTimeToFileTime(WORD,WORD,FILETIME*); +WINOLEAPI CoFileTimeNow(FILETIME*); +WINOLEAPI CoRegisterMessageFilter(LPMESSAGEFILTER,LPMESSAGEFILTER*); +WINOLEAPI CoGetTreatAsClass(REFCLSID,LPCLSID); +WINOLEAPI CoTreatAsClass(REFCLSID,REFCLSID); +typedef HRESULT (STDAPICALLTYPE *LPFNGETCLASSOBJECT)(REFCLSID,REFIID,PVOID*); +typedef HRESULT (STDAPICALLTYPE *LPFNCANUNLOADNOW)(void); +STDAPI DllGetClassObject(REFCLSID,REFIID,PVOID*); +STDAPI DllCanUnloadNow(void); +WINOLEAPI_(PVOID) CoTaskMemAlloc(ULONG); +WINOLEAPI_(PVOID) CoTaskMemRealloc(PVOID,ULONG); +WINOLEAPI_(void) CoTaskMemFree(PVOID); +WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*); +WINOLEAPI CreateDataCache(LPUNKNOWN,REFCLSID,REFIID,PVOID*); +WINOLEAPI StgCreateDocfile(const OLECHAR*,DWORD,DWORD,IStorage**); +WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes*,DWORD,DWORD,IStorage**); +WINOLEAPI StgOpenStorage(const OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**); +WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes*,IStorage*,DWORD,SNB,DWORD,IStorage**); +WINOLEAPI StgIsStorageFile(const OLECHAR*); +WINOLEAPI StgIsStorageILockBytes(ILockBytes*); +WINOLEAPI StgSetTimes(OLECHAR const*,FILETIME const*,FILETIME const*,FILETIME const*); +WINOLEAPI BindMoniker(LPMONIKER,DWORD,REFIID,PVOID*); +WINOLEAPI CoGetObject(LPCWSTR,BIND_OPTS*,REFIID,void**); +WINOLEAPI MkParseDisplayName(LPBC,LPCOLESTR,ULONG*,LPMONIKER*); +WINOLEAPI MonikerRelativePathTo(LPMONIKER,LPMONIKER,LPMONIKER*,BOOL); +WINOLEAPI MonikerCommonPrefixWith(LPMONIKER,LPMONIKER,LPMONIKER*); +WINOLEAPI CreateBindCtx(DWORD,LPBC*); +WINOLEAPI CreateGenericComposite(LPMONIKER,LPMONIKER,LPMONIKER*); +WINOLEAPI GetClassFile (LPCOLESTR,CLSID*); +WINOLEAPI CreateFileMoniker(LPCOLESTR,LPMONIKER*); +WINOLEAPI CreateItemMoniker(LPCOLESTR,LPCOLESTR,LPMONIKER*); +WINOLEAPI CreateAntiMoniker(LPMONIKER*); +WINOLEAPI CreatePointerMoniker(LPUNKNOWN,LPMONIKER*); +WINOLEAPI GetRunningObjectTable(DWORD,LPRUNNINGOBJECTTABLE*); +WINOLEAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR,LONG,SOLE_AUTHENTICATION_SERVICE*, void*,DWORD,DWORD,void*,DWORD,void*); +WINOLEAPI CoGetCallContext(REFIID,void**); +WINOLEAPI CoQueryProxyBlanket(IUnknown*, DWORD*,DWORD*,OLECHAR**,DWORD*,DWORD*,RPC_AUTH_IDENTITY_HANDLE*,DWORD*); +WINOLEAPI CoSetProxyBlanket(IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE, DWORD); +WINOLEAPI CoCopyProxy(IUnknown*,IUnknown**); +WINOLEAPI CoQueryClientBlanket(DWORD*,DWORD*,OLECHAR**, DWORD*,DWORD*,RPC_AUTHZ_HANDLE*,DWORD*); +WINOLEAPI CoImpersonateClient(void); +WINOLEAPI CoRevertToSelf(void); +WINOLEAPI CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); +WINOLEAPI CoSwitchCallContext(IUnknown*,IUnknown**); +WINOLEAPI CoGetInstanceFromFile(COSERVERINFO*, CLSID*,IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,MULTI_QI*); +WINOLEAPI CoGetInstanceFromIStorage(COSERVERINFO*,CLSID*, IUnknown*,DWORD,struct IStorage*, DWORD,MULTI_QI*); +WINOLEAPI_(ULONG) CoAddRefServerProcess(void); +WINOLEAPI_(ULONG) CoReleaseServerProcess(void); +WINOLEAPI CoResumeClassObjects(void); +WINOLEAPI CoSuspendClassObjects(void); +WINOLEAPI CoGetPSClsid(REFIID,CLSID*); +WINOLEAPI CoRegisterPSClsid(REFIID,REFCLSID); + +#pragma pack(pop) +#endif diff --git a/reactos/w32api/include/objfwd.h b/reactos/w32api/include/objfwd.h new file mode 100644 index 00000000000..8fede73aa89 --- /dev/null +++ b/reactos/w32api/include/objfwd.h @@ -0,0 +1,57 @@ +#ifndef _OBJFWD_H +#define _OBJFWD_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif +typedef interface IMoniker *LPMONIKER; +typedef interface IStream *LPSTREAM; +typedef interface IMarshal *LPMARSHAL; +typedef interface IMalloc *LPMALLOC; +typedef interface IMallocSpy *LPMALLOCSPY; +typedef interface IMessageFilter *LPMESSAGEFILTER; +typedef interface IPersist *LPPERSIST; +typedef interface IPersistStream *LPPERSISTSTREAM; +typedef interface IRunningObjectTable *LPRUNNINGOBJECTTABLE; +typedef interface IBindCtx *LPBINDCTX,*LPBC; +typedef interface IAdviseSink *LPADVISESINK; +typedef interface IAdviseSink2 *LPADVISESINK2; +typedef interface IDataObject *LPDATAOBJECT; +typedef interface IDataAdviseHolder *LPDATAADVISEHOLDER; +typedef interface IEnumMoniker *LPENUMMONIKER; +typedef interface IEnumFORMATETC *LPENUMFORMATETC; +typedef interface IEnumSTATDATA *LPENUMSTATDATA; +typedef interface IEnumSTATSTG *LPENUMSTATSTG; +typedef interface IEnumSTATPROPSTG LPENUMSTATPROPSTG; +typedef interface IEnumString *LPENUMSTRING; +typedef interface IEnumUnknown *LPENUMUNKNOWN; +typedef interface IStorage *LPSTORAGE; +typedef interface IPersistStorage *LPPERSISTSTORAGE; +typedef interface ILockBytes *LPLOCKBYTES; +typedef interface IStdMarshalInfo *LPSTDMARSHALINFO; +typedef interface IExternalConnection *LPEXTERNALCONNECTION; +typedef interface IRunnableObject *LPRUNNABLEOBJECT; +typedef interface IROTData *LPROTDATA; +typedef interface IPersistFile *LPPERSISTFILE; +typedef interface IRootStorage *LPROOTSTORAGE; +typedef interface IRpcChannelBuffer *LPRPCCHANNELBUFFER; +typedef interface IRpcProxyBuffer *LPRPCPROXYBUFFER; +typedef interface IRpcStubBuffer *LPRPCSTUBBUFFER; +typedef interface IPropertyStorage *LPPROPERTYSTORAGE; +typedef interface IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG; +typedef interface IPropertySetStorage *LPPROPERTYSETSTORAGE; +typedef interface IClientSecurity *LPCLIENTSECURITY; +typedef interface IServerSecurity *LPSERVERSECURITY; +typedef interface IClassActivator *LPCLASSACTIVATOR; +typedef interface IFillLockBytes *LPFILLLOCKBYTES; +typedef interface IProgressNotify *LPPROGRESSNOTIFY; +typedef interface ILayoutStorage *LPLAYOUTSTORAGE; +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/objidl.h b/reactos/w32api/include/objidl.h new file mode 100644 index 00000000000..5dd99fdbb8b --- /dev/null +++ b/reactos/w32api/include/objidl.h @@ -0,0 +1,1734 @@ +#ifndef _OBJIDL_H +#define _OBJIDL_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#include + +typedef struct tagSTATSTG { + LPOLESTR pwcsName; + DWORD type; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; + DWORD grfMode; + DWORD grfLocksSupported; + CLSID clsid; + DWORD grfStateBits; + DWORD reserved; +} STATSTG; +typedef enum tagSTGTY { + STGTY_STORAGE=1, + STGTY_STREAM, + STGTY_LOCKBYTES, + STGTY_PROPERTY +} STGTY; +typedef enum tagSTREAM_SEEK { + STREAM_SEEK_SET, + STREAM_SEEK_CUR, + STREAM_SEEK_END +} STREAM_SEEK; +typedef struct tagINTERFACEINFO { + LPUNKNOWN pUnk; + IID iid; + WORD wMethod; +} INTERFACEINFO,*LPINTERFACEINFO; +typedef enum tagCALLTYPE { + CALLTYPE_TOPLEVEL=1, + CALLTYPE_NESTED, + CALLTYPE_ASYNC, + CALLTYPE_TOPLEVEL_CALLPENDING, + CALLTYPE_ASYNC_CALLPENDING +} CALLTYPE; +typedef enum tagPENDINGTYPE { + PENDINGTYPE_TOPLEVEL=1, + PENDINGTYPE_NESTED +} PENDINGTYPE; +typedef enum tagPENDINGMSG { + PENDINGMSG_CANCELCALL=0, + PENDINGMSG_WAITNOPROCESS, + PENDINGMSG_WAITDEFPROCESS +} PENDINGMSG; +typedef OLECHAR **SNB; +typedef enum tagDATADIR { + DATADIR_GET=1, + DATADIR_SET +} DATADIR; +typedef WORD CLIPFORMAT,*LPCLIPFORMAT; +typedef struct tagDVTARGETDEVICE { + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + BYTE tdData[1]; +} DVTARGETDEVICE; +typedef struct tagFORMATETC { + CLIPFORMAT cfFormat; + DVTARGETDEVICE*ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; +} FORMATETC,*LPFORMATETC; +typedef struct tagRemSTGMEDIUM { + DWORD tymed; + DWORD dwHandleType; + ULONG pData; + unsigned long pUnkForRelease; + unsigned long cbData; + BYTE data[1]; +} RemSTGMEDIUM; +typedef struct tagHLITEM { + ULONG uHLID; + LPWSTR pwzFriendlyName; +} HLITEM; +typedef struct tagSTATDATA { + FORMATETC formatetc; + DWORD grfAdvf; + struct IAdviseSink *pAdvSink; + DWORD dwConnection; +} STATDATA; +typedef struct tagSTATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; +} STATPROPSETSTG; +typedef enum tagEXTCONN { + EXTCONN_STRONG=1, + EXTCONN_WEAK=2, + EXTCONN_CALLABLE=4 +} EXTCONN; +typedef struct tagMULTI_QI { + const IID *pIID; + IUnknown *pItf; + HRESULT hr; +} MULTI_QI; +typedef struct _AUTH_IDENTITY { + USHORT *User; + ULONG UserLength; + USHORT *Domain; + ULONG DomainLength; + USHORT *Password; + ULONG PasswordLength; + ULONG Flags; +} AUTH_IDENTITY; +typedef struct _COAUTHINFO{ + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + LPWSTR pwszServerPrincName; + DWORD dwAuthnLevel; + DWORD dwImpersonationLevel; + AUTH_IDENTITY *pAuthIdentityData; + DWORD dwCapabilities; +} COAUTHINFO; +typedef struct _COSERVERINFO { + DWORD dwReserved1; + LPWSTR pwszName; + COAUTHINFO *pAuthInfo; + DWORD dwReserved2; +} COSERVERINFO; +typedef struct tagBIND_OPTS { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; +} BIND_OPTS,*LPBIND_OPTS; +typedef struct tagBIND_OPTS2 { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; + DWORD dwTrackFlags; + DWORD dwClassContext; + LCID locale; + COSERVERINFO *pServerInfo; +} BIND_OPTS2,*LPBIND_OPTS2; +typedef enum tagBIND_FLAGS { + BIND_MAYBOTHERUSER=1, + BIND_JUSTTESTEXISTENCE +} BIND_FLAGS; +typedef struct tagSTGMEDIUM { + DWORD tymed; + _ANONYMOUS_UNION union { + HBITMAP hBitmap; + PVOID hMetaFilePict; + HENHMETAFILE hEnhMetaFile; + HGLOBAL hGlobal; + LPWSTR lpszFileName; + LPSTREAM pstm; + LPSTORAGE pstg; + } DUMMYUNIONNAME; + LPUNKNOWN pUnkForRelease; +} STGMEDIUM,*LPSTGMEDIUM; +typedef enum tagLOCKTYPE { + LOCK_WRITE=1, + LOCK_EXCLUSIVE=2, + LOCK_ONLYONCE=4 +} LOCKTYPE; +typedef unsigned long RPCOLEDATAREP; +typedef struct tagRPCOLEMESSAGE { + PVOID reserved1; + RPCOLEDATAREP dataRepresentation; + PVOID Buffer; + ULONG cbBuffer; + ULONG iMethod; + PVOID reserved2[5]; + ULONG rpcFlags; +} RPCOLEMESSAGE; +typedef enum tagMKSYS { + MKSYS_NONE, + MKSYS_GENERICCOMPOSITE, + MKSYS_FILEMONIKER, + MKSYS_ANTIMONIKER, + MKSYS_ITEMMONIKER, + MKSYS_POINTERMONIKER +} MKSYS; +typedef enum tagMKREDUCE { + MKRREDUCE_ALL, + MKRREDUCE_ONE=196608, + MKRREDUCE_TOUSER=131072, + MKRREDUCE_THROUGHUSER=65536 +} MKRREDUCE; +typedef struct tagRemSNB { + unsigned long ulCntStr; + unsigned long ulCntChar; + OLECHAR rgString[1]; +} RemSNB; +typedef enum tagADVF { + ADVF_NODATA=1,ADVF_PRIMEFIRST=2,ADVF_ONLYONCE=4,ADVF_DATAONSTOP=64, + ADVFCACHE_NOHANDLER=8,ADVFCACHE_FORCEBUILTIN=16,ADVFCACHE_ONSAVE=32 +} ADVF; +typedef enum tagTYMED { + 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; +typedef enum tagSERVERCALL { + SERVERCALL_ISHANDLED,SERVERCALL_REJECTED,SERVERCALL_RETRYLATER +} SERVERCALL; +typedef struct tagCAUB { + ULONG cElems; + unsigned char *pElems; +}CAUB; +typedef struct tagCAI { + ULONG cElems; + short *pElems; +}CAI; +typedef struct tagCAUI { + ULONG cElems; + USHORT *pElems; +}CAUI; +typedef struct tagCAL { + ULONG cElems; + long *pElems; +}CAL; +typedef struct tagCAUL { + ULONG cElems; + ULONG *pElems; +}CAUL; +typedef struct tagCAFLT { + ULONG cElems; + float *pElems; +}CAFLT; +typedef struct tagCADBL { + ULONG cElems; + double *pElems; +}CADBL; +typedef struct tagCACY { + ULONG cElems; + CY *pElems; +}CACY; +typedef struct tagCADATE { + ULONG cElems; + DATE *pElems; +}CADATE; +typedef struct tagCABSTR { + ULONG cElems; + BSTR *pElems; +}CABSTR; +typedef struct tagCABSTRBLOB { + ULONG cElems; + BSTRBLOB *pElems; +}CABSTRBLOB; +typedef struct tagCABOOL { + ULONG cElems; + VARIANT_BOOL *pElems; +}CABOOL; +typedef struct tagCASCODE { + ULONG cElems; + SCODE *pElems; +}CASCODE; +typedef struct tagCAH { + ULONG cElems; + LARGE_INTEGER *pElems; +}CAH; +typedef struct tagCAUH { + ULONG cElems; + ULARGE_INTEGER *pElems; +}CAUH; +typedef struct tagCALPSTR { + ULONG cElems; + LPSTR *pElems; +}CALPSTR; +typedef struct tagCALPWSTR { + ULONG cElems; + LPWSTR *pElems; +}CALPWSTR; +typedef struct tagCAFILETIME { + ULONG cElems; + FILETIME *pElems; +}CAFILETIME; +typedef struct tagCACLIPDATA { + ULONG cElems; + CLIPDATA *pElems; +}CACLIPDATA; +typedef struct tagCACLSID { + ULONG cElems; + CLSID *pElems; +}CACLSID; +typedef struct tagPROPVARIANT *LPPROPVARIANT; +typedef struct tagCAPROPVARIANT { + ULONG cElems; + LPPROPVARIANT pElems; +}CAPROPVARIANT; +typedef struct tagPROPVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + _ANONYMOUS_UNION union { + CHAR cVal; + UCHAR bVal; + short iVal; + USHORT uiVal; + VARIANT_BOOL boolVal; +#if 0 +/* bool is a standard type in C++, and a standard macro expanding + to the _Bool type in C99 (see stdbool.h) */ + _VARIANT_BOOL bool; +#endif + long 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; + } DUMMYUNIONNAME; +} PROPVARIANT; +typedef struct tagPROPSPEC { + ULONG ulKind; + _ANONYMOUS_UNION union { + PROPID propid; + LPOLESTR lpwstr; + } DUMMYUNIONNAME; +}PROPSPEC; +typedef struct tagSTATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; +} STATPROPSTG; +typedef enum PROPSETFLAG { + PROPSETFLAG_DEFAULT,PROPSETFLAG_NONSIMPLE,PROPSETFLAG_ANSI, + PROPSETFLAG_UNBUFFERED=4 +} PROPSETFLAG; +typedef struct tagSTORAGELAYOUT { + DWORD LayoutType; + OLECHAR* pwcsElementName; + LARGE_INTEGER cOffset; + LARGE_INTEGER cBytes; +} STORAGELAYOUT; +typedef struct tagSOLE_AUTHENTICATION_SERVICE { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + OLECHAR *pPrincipalName; + HRESULT hr; +} SOLE_AUTHENTICATION_SERVICE; +#define COLE_DEFAULT_PRINCIPAL ( ( OLECHAR* )-1 ) +typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { + EOAC_NONE = 0, + EOAC_MUTUAL_AUTH = 0x1, + EOAC_STATIC_CLOAKING = 0x20, + EOAC_DYNAMIC_CLOAKING = 0x40, + EOAC_ANY_AUTHORITY = 0x80, + EOAC_MAKE_FULLSIC = 0x100, + EOAC_DEFAULT = 0x800, + EOAC_SECURE_REFS = 0x2, + EOAC_ACCESS_CONTROL = 0x4, + EOAC_APPID = 0x8, + EOAC_DYNAMIC = 0x10, + EOAC_REQUIRE_FULLSIC = 0x200, + EOAC_AUTO_IMPERSONATE = 0x400, + EOAC_NO_CUSTOM_MARSHAL = 0x2000, + EOAC_DISABLE_AAA = 0x1000 +} EOLE_AUTHENTICATION_CAPABILITIES; +typedef struct tagSOLE_AUTHENTICATION_INFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + void* pAuthInfo; +} SOLE_AUTHENTICATION_INFO; +#define COLE_DEFAULT_AUTHINFO ( ( void* )-1 ) +typedef struct tagSOLE_AUTHENTICATION_LIST { + DWORD cAuthInfo; + SOLE_AUTHENTICATION_INFO* aAuthInfo; +} SOLE_AUTHENTICATION_LIST; + +EXTERN_C const FMTID FMTID_SummaryInformation; +EXTERN_C const FMTID FMTID_DocSummaryInformation; +EXTERN_C const FMTID FMTID_UserDefinedProperties; + +DECLARE_ENUMERATOR(FORMATETC); +DECLARE_ENUMERATOR(HLITEM); +DECLARE_ENUMERATOR(STATDATA); +DECLARE_ENUMERATOR(STATPROPSETSTG); +DECLARE_ENUMERATOR(STATPROPSTG); +DECLARE_ENUMERATOR(STATSTG); +DECLARE_ENUMERATOR_(IEnumString,LPOLESTR); +DECLARE_ENUMERATOR_(IEnumMoniker,interface IMoniker*); +DECLARE_ENUMERATOR_(IEnumUnknown,IUnknown*); + +EXTERN_C const IID IID_ISequentialStream; +#undef INTERFACE +#define INTERFACE ISequentialStream +DECLARE_INTERFACE_(ISequentialStream,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE; + STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE; +}; + +EXTERN_C const IID IID_IStream; +#undef INTERFACE +#define INTERFACE IStream +DECLARE_INTERFACE_(IStream,ISequentialStream) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE; + STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE; + STDMETHOD(Seek)(THIS_ LARGE_INTEGER,DWORD,ULARGE_INTEGER*) PURE; + STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE; + STDMETHOD(CopyTo)(THIS_ IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*) PURE; + STDMETHOD(Commit)(THIS_ DWORD) PURE; + STDMETHOD(Revert)(THIS) PURE; + STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; + STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; + STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; + STDMETHOD(Clone)(THIS_ LPSTREAM*) PURE; +}; + +EXTERN_C const IID IID_IMarshal; +#undef INTERFACE +#define INTERFACE IMarshal +DECLARE_INTERFACE_(IMarshal,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetUnmarshalClass) (THIS_ REFIID,PVOID,DWORD,PVOID,DWORD,CLSID*) PURE; + STDMETHOD(GetMarshalSizeMax) (THIS_ REFIID,PVOID,DWORD,PVOID,PDWORD,ULONG*) PURE; + STDMETHOD(MarshalInterface) (THIS_ IStream*,REFIID,PVOID,DWORD,PVOID,DWORD) PURE; + STDMETHOD(UnmarshalInterface) (THIS_ IStream*,REFIID,void**) PURE; + STDMETHOD(ReleaseMarshalData) (THIS_ IStream*) PURE; + STDMETHOD(DisconnectObject) (THIS_ DWORD) PURE; +}; + +EXTERN_C const IID IID_IStdMarshalInfo; +#undef INTERFACE +#define INTERFACE IStdMarshalInfo +DECLARE_INTERFACE_(IStdMarshalInfo,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassForHandler)(THIS_ DWORD,PVOID,CLSID*) PURE; +}; + +EXTERN_C const IID IID_IMalloc; +#undef INTERFACE +#define INTERFACE IMalloc +DECLARE_INTERFACE_(IMalloc,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(void*,Alloc)(THIS_ ULONG) PURE; + STDMETHOD_(void*,Realloc)(THIS_ void*,ULONG) PURE; + STDMETHOD_(void,Free)(THIS_ void*) PURE; + STDMETHOD_(ULONG,GetSize)(THIS_ void*) PURE; + STDMETHOD_(int,DidAlloc)(THIS_ void*) PURE; + STDMETHOD_(void,HeapMinimize)(THIS) PURE; +}; + +EXTERN_C const IID IID_IMallocSpy; +#undef INTERFACE +#define INTERFACE IMallocSpy +DECLARE_INTERFACE_(IMallocSpy,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(ULONG,PreAlloc)(THIS_ ULONG) PURE; + STDMETHOD_(void*,PostAlloc)(THIS_ void*) PURE; + STDMETHOD_(void*,PreFree)(THIS_ void*,BOOL) PURE; + STDMETHOD_(void,PostFree)(THIS_ BOOL) PURE; + STDMETHOD_(ULONG,PreRealloc)(THIS_ void*,ULONG,void**,BOOL) PURE; + STDMETHOD_(void*,PostRealloc)(THIS_ void*,BOOL) PURE; + STDMETHOD_(void*,PreGetSize)(THIS_ void*,BOOL) PURE; + STDMETHOD_(ULONG,PostGetSize)(THIS_ ULONG,BOOL) PURE; + STDMETHOD_(void*,PreDidAlloc)(THIS_ void*,BOOL) PURE; + STDMETHOD_(int,PostDidAlloc)(THIS_ void*,BOOL,int) PURE; + STDMETHOD_(void,PreHeapMinimize)(THIS) PURE; + STDMETHOD_(void,PostHeapMinimize)(THIS) PURE; +}; + +EXTERN_C const IID IID_IMessageFilter; +#undef INTERFACE +#define INTERFACE IMessageFilter +DECLARE_INTERFACE_(IMessageFilter,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(DWORD,HandleInComingCall)(THIS_ DWORD,HTASK,DWORD,LPINTERFACEINFO) PURE; + STDMETHOD_(DWORD,RetryRejectedCall)(THIS_ HTASK,DWORD,DWORD) PURE; + STDMETHOD_(DWORD,MessagePending)(THIS_ HTASK,DWORD,DWORD) PURE; +}; + +EXTERN_C const IID IID_IPersist; +#undef INTERFACE +#define INTERFACE IPersist +DECLARE_INTERFACE_(IPersist,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; +}; + +EXTERN_C const IID IID_IPersistStream; +#undef INTERFACE +#define INTERFACE IPersistStream +DECLARE_INTERFACE_(IPersistStream,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; + STDMETHOD(IsDirty)(THIS) PURE; + STDMETHOD(Load)(THIS_ IStream*) PURE; + STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE; + STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; +}; + +EXTERN_C const IID IID_IRunningObjectTable; +#undef INTERFACE +#define INTERFACE IRunningObjectTable +DECLARE_INTERFACE_(IRunningObjectTable,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Register)(THIS_ DWORD,LPUNKNOWN,LPMONIKER,PDWORD) PURE; + STDMETHOD(Revoke)(THIS_ DWORD) PURE; + STDMETHOD(IsRunning)(THIS_ LPMONIKER) PURE; + STDMETHOD(GetObject)(THIS_ LPMONIKER,LPUNKNOWN*) PURE; + STDMETHOD(NoteChangeTime)(THIS_ DWORD,LPFILETIME) PURE; + STDMETHOD(GetTimeOfLastChange)(THIS_ LPMONIKER,LPFILETIME) PURE; + STDMETHOD(EnumRunning)(THIS_ IEnumMoniker**) PURE; +}; + +EXTERN_C const IID IID_IBindCtx; +#undef INTERFACE +#define INTERFACE IBindCtx +DECLARE_INTERFACE_(IBindCtx,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(RegisterObjectBound)(THIS_ LPUNKNOWN) PURE; + STDMETHOD(RevokeObjectBound)(THIS_ LPUNKNOWN) PURE; + STDMETHOD(ReleaseBoundObjects)(THIS) PURE; + STDMETHOD(SetBindOptions)(THIS_ LPBIND_OPTS) PURE; + STDMETHOD(GetBindOptions)(THIS_ LPBIND_OPTS) PURE; + STDMETHOD(GetRunningObjectTable)(THIS_ IRunningObjectTable**) PURE; + STDMETHOD(RegisterObjectParam)(THIS_ LPOLESTR,IUnknown*) PURE; + STDMETHOD(GetObjectParam)(THIS_ LPOLESTR,IUnknown**) PURE; + STDMETHOD(EnumObjectParam)(THIS_ IEnumString**) PURE; + STDMETHOD(RevokeObjectParam)(THIS_ LPOLESTR) PURE; +}; + +EXTERN_C const IID IID_IMoniker; +#undef INTERFACE +#define INTERFACE IMoniker +DECLARE_INTERFACE_(IMoniker,IPersistStream) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; + STDMETHOD(IsDirty)(THIS) PURE; + STDMETHOD(Load)(THIS_ IStream*) PURE; + STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE; + STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; + STDMETHOD(BindToObject)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE; + STDMETHOD(BindToStorage)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE; + STDMETHOD(Reduce)(THIS_ IBindCtx*,DWORD,IMoniker**,IMoniker**) PURE; + STDMETHOD(ComposeWith)(THIS_ IMoniker*,BOOL,IMoniker**) PURE; + STDMETHOD(Enum)(THIS_ BOOL,IEnumMoniker**) PURE; + STDMETHOD(IsEqual)(THIS_ IMoniker*) PURE; + STDMETHOD(Hash)(THIS_ PDWORD) PURE; + STDMETHOD(IsRunning)(THIS_ IBindCtx*,IMoniker*,IMoniker*) PURE; + STDMETHOD(GetTimeOfLastChange)(THIS_ IBindCtx*,IMoniker*,LPFILETIME) PURE; + STDMETHOD(Inverse)(THIS_ IMoniker**) PURE; + STDMETHOD(CommonPrefixWith)(THIS_ IMoniker*,IMoniker**) PURE; + STDMETHOD(RelativePathTo)(THIS_ IMoniker*,IMoniker**) PURE; + STDMETHOD(GetDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR*) PURE; + STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR,ULONG*,IMoniker**) PURE; + STDMETHOD(IsSystemMoniker)(THIS_ PDWORD) PURE; +}; + +EXTERN_C const IID IID_IPersistStorage; +#undef INTERFACE +#define INTERFACE IPersistStorage +DECLARE_INTERFACE_(IPersistStorage,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(IsDirty)(THIS) PURE; + STDMETHOD(InitNew)(THIS_ LPSTORAGE) PURE; + STDMETHOD(Load)(THIS_ LPSTORAGE) PURE; + STDMETHOD(Save)(THIS_ LPSTORAGE,BOOL) PURE; + STDMETHOD(SaveCompleted)(THIS_ LPSTORAGE) PURE; + STDMETHOD(HandsOffStorage)(THIS) PURE; +}; + +EXTERN_C const IID IID_IPersistFile; +#undef INTERFACE +#define INTERFACE IPersistFile +DECLARE_INTERFACE_(IPersistFile,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(IsDirty)(THIS) PURE; + STDMETHOD(Load)(THIS_ LPCOLESTR,DWORD) PURE; + STDMETHOD(Save)(THIS_ LPCOLESTR,BOOL) PURE; + STDMETHOD(SaveCompleted)(THIS_ LPCOLESTR) PURE; + STDMETHOD(GetCurFile)(THIS_ LPOLESTR*) PURE; +}; + +EXTERN_C const IID IID_IAdviseSink; +#undef INTERFACE +#define INTERFACE IAdviseSink +DECLARE_INTERFACE_(IAdviseSink,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; + STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; + STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; + STDMETHOD_(void,OnSave)(THIS) PURE; + STDMETHOD_(void,OnClose)(THIS) PURE; +}; + +EXTERN_C const IID IID_IAdviseSink2; +#undef INTERFACE +#define INTERFACE IAdviseSink2 +DECLARE_INTERFACE_(IAdviseSink2,IAdviseSink) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; + STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; + STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; + STDMETHOD_(void,OnSave)(THIS) PURE; + STDMETHOD_(void,OnClose)(THIS) PURE; + STDMETHOD_(void,OnLinkSrcChange)(THIS_ IMoniker*); +}; + +EXTERN_C const IID IID_IDataObject; +#undef INTERFACE +#define INTERFACE IDataObject +DECLARE_INTERFACE_(IDataObject,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetData)(THIS_ FORMATETC*,STGMEDIUM*) PURE; + STDMETHOD(GetDataHere)(THIS_ FORMATETC*,STGMEDIUM*) PURE; + STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE; + STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE; + STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE; + STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC**) PURE; + STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE; + STDMETHOD(DUnadvise)(THIS_ DWORD) PURE; + STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**) PURE; +}; + +EXTERN_C const IID IID_IDataAdviseHolder; +#undef INTERFACE +#define INTERFACE IDataAdviseHolder +DECLARE_INTERFACE_(IDataAdviseHolder,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Advise)(THIS_ IDataObject*,FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE; + STDMETHOD(Unadvise)(THIS_ DWORD) PURE; + STDMETHOD(EnumAdvise)(THIS_ IEnumSTATDATA**) PURE; + STDMETHOD(SendOnDataChange)(THIS_ IDataObject*,DWORD,DWORD) PURE; +}; + +EXTERN_C const IID IID_IStorage; +#undef INTERFACE +#define INTERFACE IStorage +DECLARE_INTERFACE_(IStorage,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(CreateStream)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStream**) PURE; + STDMETHOD(OpenStream)(THIS_ LPCWSTR,PVOID,DWORD,DWORD,IStream**) PURE; + STDMETHOD(CreateStorage)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStorage**) PURE; + STDMETHOD(OpenStorage)(THIS_ LPCWSTR,IStorage*,DWORD,SNB,DWORD,IStorage**) PURE; + STDMETHOD(CopyTo)(THIS_ DWORD,IID const*,SNB,IStorage*) PURE; + STDMETHOD(MoveElementTo)(THIS_ LPCWSTR,IStorage*,LPCWSTR,DWORD) PURE; + STDMETHOD(Commit)(THIS_ DWORD) PURE; + STDMETHOD(Revert)(THIS) PURE; + STDMETHOD(EnumElements)(THIS_ DWORD,PVOID,DWORD,IEnumSTATSTG**) PURE; + STDMETHOD(DestroyElement)(THIS_ LPCWSTR) PURE; + STDMETHOD(RenameElement)(THIS_ LPCWSTR,LPCWSTR) PURE; + STDMETHOD(SetElementTimes)(THIS_ LPCWSTR,FILETIME const*,FILETIME const*,FILETIME const*) PURE; + STDMETHOD(SetClass)(THIS_ REFCLSID) PURE; + STDMETHOD(SetStateBits)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; +}; + +EXTERN_C const IID IID_IRootStorage; +#undef INTERFACE +#define INTERFACE IRootStorage +DECLARE_INTERFACE_(IRootStorage,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SwitchToFile)(THIS_ LPOLESTR) PURE; +}; + +EXTERN_C const IID IID_IRpcChannelBuffer; +#undef INTERFACE +#define INTERFACE IRpcChannelBuffer +DECLARE_INTERFACE_(IRpcChannelBuffer,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetBuffer)(THIS_ RPCOLEMESSAGE*,REFIID) PURE; + STDMETHOD(SendReceive)(THIS_ RPCOLEMESSAGE*,PULONG) PURE; + STDMETHOD(FreeBuffer)(THIS_ RPCOLEMESSAGE*) PURE; + STDMETHOD(GetDestCtx)(THIS_ PDWORD,PVOID*) PURE; + STDMETHOD(IsConnected)(THIS) PURE; +}; + +EXTERN_C const IID IID_IRpcProxyBuffer; +#undef INTERFACE +#define INTERFACE IRpcProxyBuffer +DECLARE_INTERFACE_(IRpcProxyBuffer,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Connect)(THIS_ IRpcChannelBuffer*) PURE; + STDMETHOD_(void,Disconnect)(THIS) PURE; + +}; + +EXTERN_C const IID IID_IRpcStubBuffer; +#undef INTERFACE +#define INTERFACE IRpcStubBuffer +DECLARE_INTERFACE_(IRpcStubBuffer,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Connect)(THIS_ LPUNKNOWN) PURE; + STDMETHOD_(void,Disconnect)(THIS) PURE; + STDMETHOD(Invoke)(THIS_ RPCOLEMESSAGE*,LPRPCSTUBBUFFER) PURE; + STDMETHOD_(LPRPCSTUBBUFFER,IsIIDSupported)(THIS_ REFIID) PURE; + STDMETHOD_(ULONG,CountRefs)(THIS) PURE; + STDMETHOD(DebugServerQueryInterface)(THIS_ PVOID*) PURE; + STDMETHOD(DebugServerRelease)(THIS_ PVOID) PURE; +}; + +EXTERN_C const IID IID_IPSFactoryBuffer; +#undef INTERFACE +#define INTERFACE IPSFactoryBuffer +DECLARE_INTERFACE_(IPSFactoryBuffer,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(CreateProxy)(THIS_ LPUNKNOWN,REFIID,LPRPCPROXYBUFFER*,PVOID*) PURE; + STDMETHOD(CreateStub)(THIS_ REFIID,LPUNKNOWN,LPRPCSTUBBUFFER*) PURE; +}; +typedef interface IPSFactoryBuffer *LPPSFACTORYBUFFER; + +EXTERN_C const IID IID_ILockBytes; +#undef INTERFACE +#define INTERFACE ILockBytes +DECLARE_INTERFACE_(ILockBytes,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ReadAt)(THIS_ ULARGE_INTEGER,PVOID,ULONG,ULONG*) PURE; + STDMETHOD(WriteAt)(THIS_ ULARGE_INTEGER,PCVOID,ULONG,ULONG*) PURE; + STDMETHOD(Flush)(THIS) PURE; + STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE; + STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; + STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE; + STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE; +}; + +EXTERN_C const IID IID_IExternalConnection; +#undef INTERFACE +#define INTERFACE IExternalConnection +DECLARE_INTERFACE_(IExternalConnection,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(AddConnection)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(ReleaseConnection)(THIS_ DWORD,DWORD,BOOL) PURE; +}; + +EXTERN_C const IID IID_IRunnableObject; +#undef INTERFACE +#define INTERFACE IRunnableObject +DECLARE_INTERFACE_(IRunnableObject,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetRunningClass)(THIS_ LPCLSID) PURE; + STDMETHOD(Run)(THIS_ LPBC) PURE; + STDMETHOD_(BOOL,IsRunning)(THIS) PURE; + STDMETHOD(LockRunning)(THIS_ BOOL,BOOL) PURE; + STDMETHOD(SetContainedObject)(THIS_ BOOL) PURE; +}; + +EXTERN_C const IID IID_IROTData; +#undef INTERFACE +#define INTERFACE IROTData +DECLARE_INTERFACE_(IROTData,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetComparisonData)(THIS_ PVOID,ULONG,PULONG) PURE; +}; + +EXTERN_C const IID IID_IChannelHook; +#undef INTERFACE +#define INTERFACE IChannelHook +DECLARE_INTERFACE_(IChannelHook,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(void,ClientGetSize)(THIS_ REFGUID,REFIID,PULONG) PURE; + STDMETHOD_(void,ClientFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID) PURE; + STDMETHOD_(void,ClientNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD,HRESULT) PURE; + STDMETHOD_(void,ServerNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD) PURE; + STDMETHOD_(void,ServerGetSize)(THIS_ REFGUID,REFIID,HRESULT,PULONG) PURE; + STDMETHOD_(void,ServerFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID,HRESULT) PURE; +}; + +EXTERN_C const IID IID_IPropertyStorage; +#undef INTERFACE +#define INTERFACE IPropertyStorage +DECLARE_INTERFACE_(IPropertyStorage,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ReadMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*) PURE; + STDMETHOD(WriteMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*,PROPID) PURE; + STDMETHOD(DeleteMultiple)(THIS_ ULONG,PROPSPEC const*) PURE; + STDMETHOD(ReadPropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR*) PURE; + STDMETHOD(WritePropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR const*) PURE; + STDMETHOD(DeletePropertyNames)(THIS_ ULONG,PROPID const*) PURE; + STDMETHOD(SetClass)(THIS_ REFCLSID) PURE; + STDMETHOD(Commit)(THIS_ DWORD) PURE; + STDMETHOD(Revert)(THIS) PURE; + STDMETHOD(Enum)(THIS_ IEnumSTATPROPSTG**) PURE; + STDMETHOD(Stat)(THIS_ STATPROPSTG*) PURE; + STDMETHOD(SetTimes)(THIS_ FILETIME const*,FILETIME const*,FILETIME const*) PURE; +}; + +EXTERN_C const IID IID_IPropertySetStorage; +#undef INTERFACE +#define INTERFACE IPropertySetStorage +DECLARE_INTERFACE_(IPropertySetStorage,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Create)(THIS_ REFFMTID,CLSID*,DWORD,DWORD,LPPROPERTYSTORAGE*) PURE; + STDMETHOD(Open)(THIS_ REFFMTID,DWORD,LPPROPERTYSTORAGE*) PURE; + STDMETHOD(Delete)(THIS_ REFFMTID) PURE; + STDMETHOD(Enum)(THIS_ IEnumSTATPROPSETSTG**) PURE; +}; + +EXTERN_C const IID IID_IClientSecurity; +#undef INTERFACE +#define INTERFACE IClientSecurity +DECLARE_INTERFACE_(IClientSecurity,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryBlanket)(THIS_ PVOID,PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTH_IDENTITY_HANDLE**,PDWORD*) PURE; + STDMETHOD(SetBlanket)(THIS_ PVOID,DWORD,DWORD,LPWSTR,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE*,DWORD) PURE; + STDMETHOD(CopyProxy)(THIS_ LPUNKNOWN,LPUNKNOWN*) PURE; +}; + +EXTERN_C const IID IID_IServerSecurity; +#undef INTERFACE +#define INTERFACE IServerSecurity +DECLARE_INTERFACE_(IServerSecurity,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryBlanket)(THIS_ PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTHZ_HANDLE*,PDWORD*) PURE; + STDMETHOD(ImpersonateClient)(THIS) PURE; + STDMETHOD(RevertToSelf)(THIS) PURE; + STDMETHOD(IsImpersonating)(THIS) PURE; +}; + +EXTERN_C const IID IID_IClassActivator; +#undef INTERFACE +#define INTERFACE IClassActivator +DECLARE_INTERFACE_(IClassActivator,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassObject)(THIS_ REFCLSID,DWORD,LCID,REFIID,PVOID*) PURE; +}; + +EXTERN_C const IID IID_IFillLockBytes; +#undef INTERFACE +#define INTERFACE IFillLockBytes +DECLARE_INTERFACE_(IFillLockBytes,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(FillAppend)(THIS_ void const*,ULONG,PULONG) PURE; + STDMETHOD(FillAt)(THIS_ ULARGE_INTEGER,void const*,ULONG,PULONG) PURE; + STDMETHOD(SetFillSize)(THIS_ ULARGE_INTEGER) PURE; + STDMETHOD(Terminate)(THIS_ BOOL) PURE; +}; + +EXTERN_C const IID IID_IProgressNotify; +#undef INTERFACE +#define INTERFACE IProgressNotify +DECLARE_INTERFACE_(IProgressNotify,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnProgress)(THIS_ DWORD,DWORD,BOOL,BOOL) PURE; +}; + +EXTERN_C const IID IID_ILayoutStorage; +#undef INTERFACE +#define INTERFACE ILayoutStorage +DECLARE_INTERFACE_(ILayoutStorage,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(LayoutScript)(THIS_ STORAGELAYOUT*,DWORD,DWORD) PURE; + STDMETHOD(BeginMonitor)(THIS) PURE; + STDMETHOD(EndMonitor)(THIS) PURE; + STDMETHOD(ReLayoutDocfile)(THIS_ OLECHAR*) PURE; +}; + +EXTERN_C const IID IID_IGlobalInterfaceTable; +#undef INTERFACE +#define INTERFACE IGlobalInterfaceTable +DECLARE_INTERFACE_(IGlobalInterfaceTable,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(RegisterInterfaceInGlobal)(THIS_ IUnknown*,REFIID,DWORD*) PURE; + STDMETHOD(RevokeInterfaceFromGlobal)(THIS_ DWORD) PURE; + STDMETHOD(GetInterfaceFromGlobal)(THIS_ DWORD,REFIID,void**) PURE; +}; + +#ifdef COBJMACROS +#define IGlobalInterfaceTable_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IGlobalInterfaceTable_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IGlobalInterfaceTable_Release(T) (T)->lpVtbl->Release(T) +#define IGlobalInterfaceTable_RegisterInterfaceInGlobal(T,a,b,c) (T)->lpVtbl->RegisterInterfaceInGlobal(T,a,b,c) +#define IGlobalInterfaceTable_RevokeInterfaceFromGlobal(T,a) (T)->lpVtbl->RevokeInterfaceFromGlobal(T,a) +#define IGlobalInterfaceTable_GetInterfaceFromGlobal(T,a,b,c) (T)->lpVtbl->GetInterfaceFromGlobal(T,a,b,c) +#endif + +HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,CLSID*); +void STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,DWORD*); +void STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void*,DWORD,void*,DWORD); +void STDMETHODCALLTYPE IMarshal_MarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void**); +void STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(IMarshal*,IStream*); +void STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(IMarshal*,DWORD); +void STDMETHODCALLTYPE IMarshal_DisconnectObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void* STDMETHODCALLTYPE IMalloc_Alloc_Proxy(IMalloc*,ULONG); +void STDMETHODCALLTYPE IMalloc_Alloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void* STDMETHODCALLTYPE IMalloc_Realloc_Proxy(IMalloc*,void*,ULONG); +void STDMETHODCALLTYPE IMalloc_Realloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IMalloc_Free_Proxy(IMalloc*,void*); +void STDMETHODCALLTYPE IMalloc_Free_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(IMalloc*,void*); +void STDMETHODCALLTYPE IMalloc_GetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(IMalloc*,void*); +void STDMETHODCALLTYPE IMalloc_DidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(IMalloc*); +void STDMETHODCALLTYPE IMalloc_HeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(IMallocSpy*,ULONG cbRequest); +void STDMETHODCALLTYPE IMallocSpy_PreAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void* STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(IMallocSpy*,void*); +void STDMETHODCALLTYPE IMallocSpy_PostAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void* STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(IMallocSpy*,void*,BOOL); +void STDMETHODCALLTYPE IMallocSpy_PreFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(IMallocSpy*,BOOL); +void STDMETHODCALLTYPE IMallocSpy_PostFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(IMallocSpy*,void*,ULONG,void**,BOOL); +void STDMETHODCALLTYPE IMallocSpy_PreRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void* STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(IMallocSpy*,void*,BOOL); +void STDMETHODCALLTYPE IMallocSpy_PostRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void* STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(IMallocSpy*,void*,BOOL); +void STDMETHODCALLTYPE IMallocSpy_PreGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(IMallocSpy*,ULONG,BOOL); +void STDMETHODCALLTYPE IMallocSpy_PostGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void* STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(IMallocSpy*,void*,BOOL); +void STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(IMallocSpy*,void*,BOOL,int); +void STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy* ); +void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy*); +void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo*,DWORD,void*,CLSID*); +void STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(IExternalConnection*,DWORD,DWORD); +void STDMETHODCALLTYPE IExternalConnection_AddConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(IExternalConnection*,DWORD,DWORD,BOOL); +void STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*); +void STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(IEnumUnknown*,ULONG); +void STDMETHODCALLTYPE IEnumUnknown_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(IEnumUnknown* ); +void STDMETHODCALLTYPE IEnumUnknown_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(IEnumUnknown*,IEnumUnknown**); +void STDMETHODCALLTYPE IEnumUnknown_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(IBindCtx*,IUnknown*punk); +void STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*_pRpcChannelBuffer,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(IBindCtx*,IUnknown*punk); +void STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx*); +void STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Proxy(IBindCtx*,BIND_OPTS*); +void STDMETHODCALLTYPE IBindCtx_SetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Proxy(IBindCtx*,BIND_OPTS*pbindopts); +void STDMETHODCALLTYPE IBindCtx_GetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(IBindCtx*,IRunningObjectTable**); +void STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown*); +void STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown**); +void STDMETHODCALLTYPE IBindCtx_GetObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(IBindCtx*,IEnumString**); +void STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(IBindCtx*,LPCSTR); +void STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*); +void STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(IEnumMoniker*,ULONG); +void STDMETHODCALLTYPE IEnumMoniker_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(IEnumMoniker*); +void STDMETHODCALLTYPE IEnumMoniker_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(IEnumMoniker*,IEnumMoniker**); +void STDMETHODCALLTYPE IEnumMoniker_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(IRunnableObject*,LPCLSID); +void STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(IRunnableObject*,LPBINDCTX); +void STDMETHODCALLTYPE IRunnableObject_Run_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +BOOL STDMETHODCALLTYPE IRunnableObject_IsRunning_Proxy(IRunnableObject*); +void STDMETHODCALLTYPE IRunnableObject_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(IRunnableObject*,BOOL,BOOL); +void STDMETHODCALLTYPE IRunnableObject_LockRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(IRunnableObject*,BOOL); +void STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(IRunningObjectTable*,DWORD,IUnknown*,IMoniker*,DWORD*); +void STDMETHODCALLTYPE IRunningObjectTable_Register_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(IRunningObjectTable*,DWORD); +void STDMETHODCALLTYPE IRunningObjectTable_Revoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable*,IMoniker*); +void STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(IRunningObjectTable*,IMoniker*,IUnknown**); +void STDMETHODCALLTYPE IRunningObjectTable_GetObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable*,DWORD,FILETIME*); +void STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable*,IMoniker*,FILETIME*); +void STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable*,IEnumMoniker**); +void STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(IPersist*,CLSID*); +void STDMETHODCALLTYPE IPersist_GetClassID_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(IPersistStream*); +void STDMETHODCALLTYPE IPersistStream_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(IPersistStream*,IStream*); +void STDMETHODCALLTYPE IPersistStream_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(IPersistStream*,IStream*,BOOL); +void STDMETHODCALLTYPE IPersistStream_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(IPersistStream*,ULARGE_INTEGER*); +void STDMETHODCALLTYPE IPersistStream_GetSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); +void STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); +void STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(IMoniker*,IBindCtx*,DWORD,IMoniker**,IMoniker**); +void STDMETHODCALLTYPE IMoniker_Reduce_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(IMoniker*,IMoniker*,BOOL,IMoniker**); +void STDMETHODCALLTYPE IMoniker_ComposeWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(IMoniker*,BOOL,IEnumMoniker**); +void STDMETHODCALLTYPE IMoniker_Enum_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(IMoniker*,IMoniker*); +void STDMETHODCALLTYPE IMoniker_IsEqual_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(IMoniker*,DWORD*); +void STDMETHODCALLTYPE IMoniker_Hash_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(IMoniker*,IBindCtx*,IMoniker*,IMoniker*); +void STDMETHODCALLTYPE IMoniker_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(IMoniker*,IBindCtx*,IMoniker*,FILETIME*); +void STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(IMoniker*,IMoniker**); +void STDMETHODCALLTYPE IMoniker_Inverse_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(IMoniker*,IMoniker*,IMoniker**); +void STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(IMoniker*,IMoniker*,IMoniker**); +void STDMETHODCALLTYPE IMoniker_RelativePathTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR*); +void STDMETHODCALLTYPE IMoniker_GetDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR,ULONG*,IMoniker**); +void STDMETHODCALLTYPE IMoniker_ParseDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(IMoniker*,DWORD*); +void STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(IROTData*,BYTE*,ULONG cbMax,ULONG*); +void STDMETHODCALLTYPE IROTData_GetComparisonData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(IEnumString*,ULONG,LPCSTR*rgelt,ULONG*); +void STDMETHODCALLTYPE IEnumString_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(IEnumString*,ULONG); +void STDMETHODCALLTYPE IEnumString_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(IEnumString*); +void STDMETHODCALLTYPE IEnumString_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(IEnumString*,IEnumString**); +void STDMETHODCALLTYPE IEnumString_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_RemoteRead_Proxy(IStream*,BYTE*,ULONG,ULONG*); +void STDMETHODCALLTYPE IStream_RemoteRead_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_RemoteWrite_Proxy(IStream*,BYTE*pv,ULONG,ULONG*); +void STDMETHODCALLTYPE IStream_RemoteWrite_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); +void STDMETHODCALLTYPE IStream_RemoteSeek_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(IStream*,ULARGE_INTEGER); +void STDMETHODCALLTYPE IStream_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); +void STDMETHODCALLTYPE IStream_RemoteCopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(IStream*,DWORD); +void STDMETHODCALLTYPE IStream_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(IStream*); +void STDMETHODCALLTYPE IStream_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); +void STDMETHODCALLTYPE IStream_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); +void STDMETHODCALLTYPE IStream_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(IStream*,STATSTG*,DWORD); +void STDMETHODCALLTYPE IStream_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(IStream*,IStream**); +void STDMETHODCALLTYPE IStream_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); +void STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG*,ULONG celt); +void STDMETHODCALLTYPE IEnumSTATSTG_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG*); +void STDMETHODCALLTYPE IEnumSTATSTG_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG*,IEnumSTATSTG**); +void STDMETHODCALLTYPE IEnumSTATSTG_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStream**); +void STDMETHODCALLTYPE IStorage_CreateStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(IStorage*,const OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream**); +void STDMETHODCALLTYPE IStorage_RemoteOpenStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStorage**); +void STDMETHODCALLTYPE IStorage_CreateStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(IStorage*,OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**); +void STDMETHODCALLTYPE IStorage_OpenStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(IStorage*,DWORD,const IID*,SNB,IStorage*); +void STDMETHODCALLTYPE IStorage_CopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(IStorage*,const OLECHAR*,IStorage*,const OLECHAR*,DWORD); +void STDMETHODCALLTYPE IStorage_MoveElementTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(IStorage*,DWORD); +void STDMETHODCALLTYPE IStorage_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(IStorage*); +void STDMETHODCALLTYPE IStorage_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**); +void STDMETHODCALLTYPE IStorage_RemoteEnumElements_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(IStorage*,OLECHAR*); +void STDMETHODCALLTYPE IStorage_DestroyElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(IStorage*,const OLECHAR*,const OLECHAR*); +void STDMETHODCALLTYPE IStorage_RenameElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(IStorage*,const OLECHAR*,const FILETIME*,const FILETIME*,const FILETIME*); +void STDMETHODCALLTYPE IStorage_SetElementTimes_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(IStorage*,REFCLSID); +void STDMETHODCALLTYPE IStorage_SetClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(IStorage*,DWORD,DWORD); +void STDMETHODCALLTYPE IStorage_SetStateBits_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(IStorage*,STATSTG*,DWORD); +void STDMETHODCALLTYPE IStorage_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(IPersistFile*); +void STDMETHODCALLTYPE IPersistFile_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(IPersistFile*,LPCOLESTR,DWORD); +void STDMETHODCALLTYPE IPersistFile_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(IPersistFile*,LPCOLESTR pszFileName,BOOL); +void STDMETHODCALLTYPE IPersistFile_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(IPersistFile*,LPCOLESTR); +void STDMETHODCALLTYPE IPersistFile_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(IPersistFile*,LPCSTR*); +void STDMETHODCALLTYPE IPersistFile_GetCurFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(IPersistStorage*); +void STDMETHODCALLTYPE IPersistStorage_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(IPersistStorage*,IStorage*); +void STDMETHODCALLTYPE IPersistStorage_InitNew_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(IPersistStorage*,IStorage*); +void STDMETHODCALLTYPE IPersistStorage_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(IPersistStorage*,IStorage*,BOOL); +void STDMETHODCALLTYPE IPersistStorage_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(IPersistStorage*,IStorage*); +void STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(IPersistStorage*); +void STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); +void STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*pv,ULONG,ULONG*); +void STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(ILockBytes*); +void STDMETHODCALLTYPE ILockBytes_Flush_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(ILockBytes*,ULARGE_INTEGER); +void STDMETHODCALLTYPE ILockBytes_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); +void STDMETHODCALLTYPE ILockBytes_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD); +void STDMETHODCALLTYPE ILockBytes_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(ILockBytes*,STATSTG*,DWORD); +void STDMETHODCALLTYPE ILockBytes_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); +void STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC*,ULONG); +void STDMETHODCALLTYPE IEnumFORMATETC_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC*); +void STDMETHODCALLTYPE IEnumFORMATETC_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC*,IEnumFORMATETC**); +void STDMETHODCALLTYPE IEnumFORMATETC_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Stub(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); +void STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA*,ULONG); +void STDMETHODCALLTYPE IEnumSTATDATA_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA*); +void STDMETHODCALLTYPE IEnumSTATDATA_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA*,IEnumSTATDATA**); +void STDMETHODCALLTYPE IEnumSTATDATA_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Stub(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*); +HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(IRootStorage*,LPCSTR); +void STDMETHODCALLTYPE IRootStorage_SwitchToFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink*,DWORD,LONG); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(IAdviseSink*,IMoniker*); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(IAdviseSink*); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(IAdviseSink*); +void STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Proxy(IAdviseSink*,FORMATETC*,STGMEDIUM*); +void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Stub(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*); +void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Proxy(IAdviseSink*,DWORD,LONG); +void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Stub(IAdviseSink*,DWORD,LONG); +void STDMETHODCALLTYPE IAdviseSink_OnRename_Proxy(IAdviseSink*,IMoniker*); +void STDMETHODCALLTYPE IAdviseSink_OnRename_Stub(IAdviseSink*,IMoniker*); +void STDMETHODCALLTYPE IAdviseSink_OnSave_Proxy(IAdviseSink*); +void STDMETHODCALLTYPE IAdviseSink_OnSave_Stub(IAdviseSink*); +void STDMETHODCALLTYPE IAdviseSink_OnClose_Proxy(IAdviseSink*); +HRESULT STDMETHODCALLTYPE IAdviseSink_OnClose_Stub(IAdviseSink*); +void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*); +void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*); +void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2*,IMoniker*); +HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**); +void STDMETHODCALLTYPE IDataObject_RemoteGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**); +void STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(IDataObject*,FORMATETC*); +void STDMETHODCALLTYPE IDataObject_QueryGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject*,FORMATETC*,FORMATETC*); +void STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL); +void STDMETHODCALLTYPE IDataObject_RemoteSetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(IDataObject*,DWORD,IEnumFORMATETC**); +void STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*); +void STDMETHODCALLTYPE IDataObject_DAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(IDataObject*,DWORD); +void STDMETHODCALLTYPE IDataObject_DUnadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(IDataObject*,IEnumSTATDATA**); +void STDMETHODCALLTYPE IDataObject_EnumDAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataObject_GetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*); +HRESULT STDMETHODCALLTYPE IDataObject_GetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**); +HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*); +HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**); +HRESULT STDMETHODCALLTYPE IDataObject_SetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*,BOOL); +HRESULT STDMETHODCALLTYPE IDataObject_SetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL); +HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder*,IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*); +void STDMETHODCALLTYPE IDataAdviseHolder_Advise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder*,DWORD); +void STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder*,IEnumSTATDATA**); +void STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder*,IDataObject*,DWORD,DWORD); +void STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(IMessageFilter*,DWORD,HTASK,DWORD,LPINTERFACEINFO); +void STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter*,HTASK,DWORD,DWORD); +void STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(IMessageFilter*,HTASK,DWORD,DWORD); +void STDMETHODCALLTYPE IMessageFilter_MessagePending_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,REFIID); +void STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,ULONG*); +void STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*); +void STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer*,DWORD*,void**); +void STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer*); +void STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer*,IRpcChannelBuffer*pRpcChannelBuffer); +void STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer*); +void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer*,IUnknown*); +void STDMETHODCALLTYPE IRpcStubBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer*); +void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*); +void STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +IRpcStubBuffer*STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer*,REFIID); +void STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer*); +void STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer*,void**); +void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer*,void*); +void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer*,IUnknown*,REFIID,IRpcProxyBuffer**,void**); +void STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer*,REFIID,IUnknown*,IRpcStubBuffer**); +void STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD); +void STDMETHODCALLTYPE SNB_to_xmit(SNB*,RemSNB**); +void STDMETHODCALLTYPE SNB_from_xmit(RemSNB*,SNB*); +void STDMETHODCALLTYPE SNB_free_inst(SNB*); +void STDMETHODCALLTYPE SNB_free_xmit(RemSNB*); +HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Stub(IEnumUnknown*,ULONG,IUnknown**,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Stub(IEnumMoniker*,ULONG,IMoniker**,ULONG*); +HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**); +HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); +HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**); +HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**); +HRESULT STDMETHODCALLTYPE IEnumString_Next_Proxy(IEnumString*,ULONG,LPCSTR*,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumString_Next_Stub(IEnumString*,ULONG,LPCSTR*,ULONG*); +HRESULT STDMETHODCALLTYPE IStream_Read_Proxy(IStream*,void*,ULONG,ULONG*); +HRESULT STDMETHODCALLTYPE IStream_Read_Stub(IStream*,BYTE*,ULONG,ULONG*); +HRESULT STDMETHODCALLTYPE IStream_Write_Proxy(IStream*,void*,ULONG,ULONG*); +HRESULT STDMETHODCALLTYPE IStream_Write_Stub(IStream*,BYTE*,ULONG,ULONG*); +HRESULT STDMETHODCALLTYPE IStream_Seek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); +HRESULT STDMETHODCALLTYPE IStream_Seek_Stub(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*); +HRESULT STDMETHODCALLTYPE IStream_CopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); +HRESULT STDMETHODCALLTYPE IStream_CopyTo_Stub(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*); +HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); +HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Stub(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*); +HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Proxy(IStorage*,OLECHAR*,void*,DWORD,DWORD,IStream**); +HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Stub(IStorage*,OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream** ); +HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Proxy(IStorage*,DWORD,void*,DWORD,IEnumSTATSTG**); +HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Stub(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**); +HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,void*,ULONG,ULONG*); +HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); +HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,const void*,ULONG,ULONG*); +HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*); + +#if (!defined (__cplusplus) || defined (CINTERFACE)) \ + && defined (COBJMACROS) +#define IMarshal_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IMarshal_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMarshal_Release(This) (This)->lpVtbl->Release(This) +#define IMarshal_GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) (T)->lpVtbl->GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) +#define IMarshal_GetMarshalSizeMax(T,r,pv,dw,pD,m,p) (T)->lpVtbl->GetMarshalSizeMax(T,r,pv,dw,pD,m,p) +#define IMarshal_MarshalInterface(T,p,r,pv,dw,pvD,m) (T)->lpVtbl->MarshalInterface(T,p,r,pv,dw,pv,m) +#define IMarshal_UnmarshalInterface(T,p,r,pp) (T)->lpVtbl->UnmarshalInterface(T,p,r,pp) +#define IMarshal_ReleaseMarshalData(T,p) (T)->lpVtbl->ReleaseMarshalData(T,p) +#define IMarshal_DisconnectObject(T,d) (T)->lpVtbl->DisconnectObject(T,d) +#define IMalloc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMalloc_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMalloc_Release(This) (This)->lpVtbl->Release(This) +#define IMalloc_Alloc(This,cb) (This)->lpVtbl->Alloc(This,cb) +#define IMalloc_Realloc(This,pv,cb) (This)->lpVtbl->Realloc(This,pv,cb) +#define IMalloc_Free(This,pv) (This)->lpVtbl->Free(This,pv) +#define IMalloc_GetSize(This,pv) (This)->lpVtbl->GetSize(This,pv) +#define IMalloc_DidAlloc(This,pv) (This)->lpVtbl->DidAlloc(This,pv) +#define IMalloc_HeapMinimize(This) (This)->lpVtbl->HeapMinimize(This) +#define IMallocSpy_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IMallocSpy_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMallocSpy_Release(This) (This)->lpVtbl->Release(This) +#define IMallocSpy_PreAlloc(T,c) (T)->lpVtbl->PreAlloc(T,c) +#define IMallocSpy_PostAlloc(This,p) (This)->lpVtbl->PostAlloc(This,p) +#define IMallocSpy_PreFree(This,p,f) (This)->lpVtbl->PreFree(This,p,f) +#define IMallocSpy_PostFree(This,fSpyed) (This)->lpVtbl->PostFree(This,fSpyed) +#define IMallocSpy_PreRealloc(T,p,c,pp,f) (T)->lpVtbl->PreRealloc(T,p,c,pp,f) +#define IMallocSpy_PostRealloc(T,p,f) (T)->lpVtbl->PostRealloc(T,p,f) +#define IMallocSpy_PreGetSize(This,p,f) (This)->lpVtbl->PreGetSize(This,p,f) +#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) (This)->lpVtbl->PostGetSize(This,cbActual,fSpyed) +#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) (This)->lpVtbl->PreDidAlloc(This,pRequest,fSpyed) +#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) (This)->lpVtbl->PostDidAlloc(This,pRequest,fSpyed,fActual) +#define IMallocSpy_PreHeapMinimize(T) (T)->lpVtbl->PreHeapMinimize(T) +#define IMallocSpy_PostHeapMinimize(T) (T)->lpVtbl->PostHeapMinimize(T) +#define IStdMarshalInfo_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p) +#define IStdMarshalInfo_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IStdMarshalInfo_Release(This) (This)->lpVtbl->Release(This) +#define IStdMarshalInfo_GetClassForHandler(This,D,p,C) (This)->lpVtbl->GetClassForHandler(This,D,p,C) +#define IExternalConnection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IExternalConnection_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IExternalConnection_Release(This) (This)->lpVtbl->Release(This) +#define IExternalConnection_AddConnection(T,e,r) (T)->lpVtbl->AddConnection(T,e,r) +#define IExternalConnection_ReleaseConnection(This,e,r,f) (This)->lpVtbl->ReleaseConnection(This,e,r,f) +#define IEnumUnknown_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p) +#define IEnumUnknown_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IEnumUnknown_Release(This) (This)->lpVtbl->Release(This) +#define IEnumUnknown_Next(This,celt,rgelt,p) (This)->lpVtbl->Next(This,celt,rgelt,p) +#define IEnumUnknown_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) +#define IEnumUnknown_Reset(This) (This)->lpVtbl->Reset(This) +#define IEnumUnknown_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) +#define IBindCtx_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IBindCtx_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IBindCtx_Release(This) (This)->lpVtbl->Release(This) +#define IBindCtx_RegisterObjectBound(T,p) (T)->lpVtbl->RegisterObjectBound(T,p) +#define IBindCtx_RevokeObjectBound(T,p) (T)->lpVtbl->RevokeObjectBound(T,p) +#define IBindCtx_ReleaseBoundObjects(T) (T)->lpVtbl->ReleaseBoundObjects(T) +#define IBindCtx_SetBindOptions(T,p) (T)->lpVtbl->SetBindOptions(T,p) +#define IBindCtx_GetBindOptions(This,pbindopts) (This)->lpVtbl->GetBindOptions(This,pbindopts) +#define IBindCtx_GetRunningObjectTable(This,pprot) (This)->lpVtbl->GetRunningObjectTable(This,pprot) +#define IBindCtx_RegisterObjectParam(This,pszKey,punk) (This)->lpVtbl->RegisterObjectParam(This,pszKey,punk) +#define IBindCtx_GetObjectParam(This,pszKey,ppunk) (This)->lpVtbl->GetObjectParam(This,pszKey,ppunk) +#define IBindCtx_EnumObjectParam(This,ppenum) (This)->lpVtbl->EnumObjectParam(This,ppenum) +#define IBindCtx_RevokeObjectParam(This,pszKey) (This)->lpVtbl->RevokeObjectParam(This,pszKey) +#define IEnumMoniker_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IEnumMoniker_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IEnumMoniker_Release(This) (This)->lpVtbl->Release(This) +#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) +#define IEnumMoniker_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) +#define IEnumMoniker_Reset(This) (This)->lpVtbl->Reset(This) +#define IEnumMoniker_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) +#define IRunnableObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IRunnableObject_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IRunnableObject_Release(This) (This)->lpVtbl->Release(This) +#define IRunnableObject_GetRunningClass(This,lpClsid) (This)->lpVtbl->GetRunningClass(This,lpClsid) +#define IRunnableObject_Run(This,pbc) (This)->lpVtbl->Run(This,pbc) +#define IRunnableObject_IsRunning(This) (This)->lpVtbl->IsRunning(This) +#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) (This)->lpVtbl->LockRunning(This,fLock,fLastUnlockCloses) +#define IRunnableObject_SetContainedObject(This,fContained) (This)->lpVtbl->SetContainedObject(This,fContained) +#define IRunningObjectTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IRunningObjectTable_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IRunningObjectTable_Release(This) (This)->lpVtbl->Release(This) +#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) (This)->lpVtbl->Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) +#define IRunningObjectTable_Revoke(This,dwRegister) (This)->lpVtbl->Revoke(This,dwRegister) +#define IRunningObjectTable_IsRunning(This,pmkObjectName) (This)->lpVtbl->IsRunning(This,pmkObjectName) +#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) (This)->lpVtbl->GetObject(This,pmkObjectName,ppunkObject) +#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) (This)->lpVtbl->NoteChangeTime(This,dwRegister,pfiletime) +#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) (This)->lpVtbl->GetTimeOfLastChange(This,pmkObjectName,pfiletime) +#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) (This)->lpVtbl->EnumRunning(This,ppenumMoniker) +#define IPersist_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IPersist_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IPersist_Release(This) (This)->lpVtbl->Release(This) +#define IPersist_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) +#define IPersistStream_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IPersistStream_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IPersistStream_Release(This) (This)->lpVtbl->Release(This) +#define IPersistStream_GetClassID(T,p) (T)->lpVtbl->GetClassID(T,p) +#define IPersistStream_IsDirty(This) (This)->lpVtbl->IsDirty(This) +#define IPersistStream_Load(This,pStm) (This)->lpVtbl->Load(This,pStm) +#define IPersistStream_Save(T,p,f) (T)->lpVtbl->Save(T,p,f) +#define IPersistStream_GetSizeMax(T,p) (T)->lpVtbl->GetSizeMax(T,p) +#define IMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMoniker_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMoniker_Release(This) (This)->lpVtbl->Release(This) +#define IMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) +#define IMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This) +#define IMoniker_Load(This,pStm) (This)->lpVtbl->Load(This,pStm) +#define IMoniker_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty) +#define IMoniker_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize) +#define IMoniker_BindToObject(T,p,pm,r,pp) (T)->lpVtbl->BindToObject(T,p,pm,r,pp) +#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) +#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) (This)->lpVtbl->Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) +#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) (This)->lpVtbl->ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) +#define IMoniker_Enum(T,f,pp) (T)->lpVtbl->Enum(T,f,pp) +#define IMoniker_IsEqual(This,p) (This)->lpVtbl->IsEqual(This,p) +#define IMoniker_Hash(This,pdwHash) (This)->lpVtbl->Hash(This,pdwHash) +#define IMoniker_IsRunning(T,pbc,Left,N) (T)->lpVtbl->IsRunning(T,pbc,Left,N) +#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) (This)->lpVtbl->GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) +#define IMoniker_Inverse(This,ppmk) (This)->lpVtbl->Inverse(This,ppmk) +#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) (This)->lpVtbl->CommonPrefixWith(This,pmkOther,ppmkPrefix) +#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) (This)->lpVtbl->RelativePathTo(This,pmkOther,ppmkRelPath) +#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) (This)->lpVtbl->GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) +#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) +#define IMoniker_IsSystemMoniker(This,pdwMksys) (This)->lpVtbl->IsSystemMoniker(This,pdwMksys) +#define IROTData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IROTData_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IROTData_Release(This) (This)->lpVtbl->Release(This) +#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) (This)->lpVtbl->GetComparisonData(This,pbData,cbMax,pcbData) +#define IEnumString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IEnumString_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IEnumString_Release(This) (This)->lpVtbl->Release(This) +#define IEnumString_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) +#define IEnumString_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) +#define IEnumString_Reset(This) (This)->lpVtbl->Reset(This) +#define IEnumString_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) +#define IStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IStream_Release(This) (This)->lpVtbl->Release(This) +#define IStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead) +#define IStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten) +#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition) +#define IStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize) +#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten) +#define IStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags) +#define IStream_Revert(This) (This)->lpVtbl->Revert(This) +#define IStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType) +#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType) +#define IStream_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag) +#define IStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm) +#define IEnumSTATSTG_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IEnumSTATSTG_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IEnumSTATSTG_Release(This) (This)->lpVtbl->Release(This) +#define IEnumSTATSTG_Next(T,c,r,p) (T)->lpVtbl->Next(T,c,r,p) +#define IEnumSTATSTG_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) +#define IEnumSTATSTG_Reset(This) (This)->lpVtbl->Reset(This) +#define IEnumSTATSTG_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) +#define IStorage_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IStorage_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IStorage_Release(This) (This)->lpVtbl->Release(This) +#define IStorage_CreateStream(T,p,g,r1,r2,pp) (T)->lpVtbl->CreateStream(T,p,g,r1,r2,pp) +#define IStorage_OpenStream(T,p,r1,g,r2,pp) (T)->lpVtbl->OpenStream(T,p,r1,g,r2,pp) +#define IStorage_CreateStorage(T,p,g,d,r2,pp) (T)->lpVtbl->CreateStorage(T,p,g,d,r2,pp) +#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) (This)->lpVtbl->OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) +#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) (This)->lpVtbl->CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) +#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) (This)->lpVtbl->MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) +#define IStorage_Commit(This,g) (This)->lpVtbl->Commit(This,g) +#define IStorage_Revert(This) (This)->lpVtbl->Revert(This) +#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) (This)->lpVtbl->EnumElements(This,reserved1,reserved2,reserved3,ppenum) +#define IStorage_DestroyElement(This,pwcsName) (This)->lpVtbl->DestroyElement(This,pwcsName) +#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) (This)->lpVtbl->RenameElement(This,pwcsOldName,pwcsNewName) +#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) (This)->lpVtbl->SetElementTimes(This,pwcsName,pctime,patime,pmtime) +#define IStorage_SetClass(This,clsid) (This)->lpVtbl->SetClass(This,clsid) +#define IStorage_SetStateBits(This,grfStateBits,grfMask) (This)->lpVtbl->SetStateBits(This,grfStateBits,grfMask) +#define IStorage_Stat(This,p,g) (This)->lpVtbl->Stat(This,p,g) +#define IPersistFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IPersistFile_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IPersistFile_Release(This) (This)->lpVtbl->Release(This) +#define IPersistFile_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) +#define IPersistFile_IsDirty(This) (This)->lpVtbl->IsDirty(This) +#define IPersistFile_Load(This,pszFileName,dwMode) (This)->lpVtbl->Load(This,pszFileName,dwMode) +#define IPersistFile_Save(This,pszFileName,fRemember) (This)->lpVtbl->Save(This,pszFileName,fRemember) +#define IPersistFile_SaveCompleted(This,pszFileName) (This)->lpVtbl->SaveCompleted(This,pszFileName) +#define IPersistFile_GetCurFile(This,ppszFileName) (This)->lpVtbl->GetCurFile(This,ppszFileName) +#define IPersistStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IPersistStorage_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IPersistStorage_Release(This) (This)->lpVtbl->Release(This) +#define IPersistStorage_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID) +#define IPersistStorage_IsDirty(This) (This)->lpVtbl->IsDirty(This) +#define IPersistStorage_InitNew(This,pStg) (This)->lpVtbl->InitNew(This,pStg) +#define IPersistStorage_Load(This,pStg) (This)->lpVtbl->Load(This,pStg) +#define IPersistStorage_Save(This,pStgSave,fSameAsLoad) (This)->lpVtbl->Save(This,pStgSave,fSameAsLoad) +#define IPersistStorage_SaveCompleted(This,pStgNew) (This)->lpVtbl->SaveCompleted(This,pStgNew) +#define IPersistStorage_HandsOffStorage(This) (This)->lpVtbl->HandsOffStorage(This) +#define ILockBytes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define ILockBytes_AddRef(This) (This)->lpVtbl->AddRef(This) +#define ILockBytes_Release(This) (This)->lpVtbl->Release(This) +#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) (This)->lpVtbl->ReadAt(This,ulOffset,pv,cb,pcbRead) +#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) (This)->lpVtbl->WriteAt(This,ulOffset,pv,cb,pcbWritten) +#define ILockBytes_Flush(This) (This)->lpVtbl->Flush(This) +#define ILockBytes_SetSize(This,cb) (This)->lpVtbl->SetSize(This,cb) +#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType) +#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType) +#define ILockBytes_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag) +#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IEnumFORMATETC_Release(This) (This)->lpVtbl->Release(This) +#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) +#define IEnumFORMATETC_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) +#define IEnumFORMATETC_Reset(This) (This)->lpVtbl->Reset(This) +#define IEnumFORMATETC_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) +#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IEnumSTATDATA_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IEnumSTATDATA_Release(This) (This)->lpVtbl->Release(This) +#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) +#define IEnumSTATDATA_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) +#define IEnumSTATDATA_Reset(This) (This)->lpVtbl->Reset(This) +#define IEnumSTATDATA_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) +#define IRootStorage_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O) +#define IRootStorage_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IRootStorage_Release(This) (This)->lpVtbl->Release(This) +#define IRootStorage_SwitchToFile(This,pszFile) (This)->lpVtbl->SwitchToFile(This,pszFile) +#define IAdviseSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IAdviseSink_Release(This) (This)->lpVtbl->Release(This) +#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed) +#define IAdviseSink_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex) +#define IAdviseSink_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk) +#define IAdviseSink_OnSave(This) (This)->lpVtbl->OnSave(This) +#define IAdviseSink_OnClose(This) (This)->lpVtbl->OnClose(This) +#define IAdviseSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IAdviseSink2_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IAdviseSink2_Release(This) (This)->lpVtbl->Release(This) +#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed) +#define IAdviseSink2_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex) +#define IAdviseSink2_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk) +#define IAdviseSink2_OnSave(This) (This)->lpVtbl->OnSave(This) +#define IAdviseSink2_OnClose(This) (This)->lpVtbl->OnClose(This) +#define IAdviseSink2_OnLinkSrcChange(This,pmk) (This)->lpVtbl->OnLinkSrcChange(This,pmk) +#define IDataObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IDataObject_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IDataObject_Release(This) (This)->lpVtbl->Release(This) +#define IDataObject_GetData(This,pformatetcIn,pmedium) (This)->lpVtbl->GetData(This,pformatetcIn,pmedium) +#define IDataObject_GetDataHere(This,pformatetc,pmedium) (This)->lpVtbl->GetDataHere(This,pformatetc,pmedium) +#define IDataObject_QueryGetData(This,pformatetc) (This)->lpVtbl->QueryGetData(This,pformatetc) +#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) (This)->lpVtbl->GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) +#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease) +#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) (This)->lpVtbl->EnumFormatEtc(This,dwDirection,ppenumFormatEtc) +#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) (This)->lpVtbl->DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) +#define IDataObject_DUnadvise(This,dwConnection) (This)->lpVtbl->DUnadvise(This,dwConnection) +#define IDataObject_EnumDAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumDAdvise(This,ppenumAdvise) +#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IDataAdviseHolder_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IDataAdviseHolder_Release(This) (This)->lpVtbl->Release(This) +#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) (This)->lpVtbl->Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) +#define IDataAdviseHolder_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection) +#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumAdvise(This,ppenumAdvise) +#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) (This)->lpVtbl->SendOnDataChange(This,pDataObject,dwReserved,advf) +#define IMessageFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IMessageFilter_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IMessageFilter_Release(This) (This)->lpVtbl->Release(This) +#define IMessageFilter_HandleInComingCall(T,d,h,dw,lp) (T)->lpVtbl->HandleInComingCall(T,d,h,dw,lp) +#define IMessageFilter_RetryRejectedCall(s,C,T,R) (s)->lpVtbl->RetryRejectedCall(s,C,T,R) +#define IMessageFilter_MessagePending(s,C,T,P) (s)->lpVtbl->MessagePending(This,C,T,P) +#define IRpcChannelBuffer_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p) +#define IRpcChannelBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IRpcChannelBuffer_Release(This) (This)->lpVtbl->Release(This) +#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid) +#define IRpcChannelBuffer_SendReceive(T,p,pS) (T)->lpVtbl->SendReceive(T,p,pS) +#define IRpcChannelBuffer_FreeBuffer(T,p) (T)->lpVtbl->FreeBuffer(T,p) +#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext) +#define IRpcChannelBuffer_IsConnected(This) (This)->lpVtbl->IsConnected(This) +#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IRpcProxyBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IRpcProxyBuffer_Release(This) (This)->lpVtbl->Release(This) +#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer) (This)->lpVtbl->Connect(This,pRpcChannelBuffer) +#define IRpcProxyBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This) +#define IRpcStubBuffer_QueryInterface(T,r,pp) (T)->lpVtbl->QueryInterface(T,r,pp) +#define IRpcStubBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IRpcStubBuffer_Release(This) (This)->lpVtbl->Release(This) +#define IRpcStubBuffer_Connect(This,p) (This)->lpVtbl->Connect(This,p) +#define IRpcStubBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This) +#define IRpcStubBuffer_Invoke(T,_prpcmsg,_p) (T)->lpVtbl->Invoke(T,_prpcmsg,_p) +#define IRpcStubBuffer_IsIIDSupported(T,d) (T)->lpVtbl->IsIIDSupported(T,d) +#define IRpcStubBuffer_CountRefs(This) (This)->lpVtbl->CountRefs(This) +#define IRpcStubBuffer_DebugServerQueryInterface(T,p) (T)->lpVtbl->DebugServerQueryInterface(T,p) +#define IRpcStubBuffer_DebugServerRelease(T,p) (T)->lpVtbl->DebugServerRelease(T,p) +#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IPSFactoryBuffer_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IPSFactoryBuffer_Release(This) (This)->lpVtbl->Release(This) +#define IPSFactoryBuffer_CreateProxy(T,U,r,P,p) (T)->lpVtbl->CreateProxy(T,U,r,P,p) +#define IPSFactoryBuffer_CreateStub(T,r,U,p) (T)->lpVtbl->CreateStub(T,r,U,p) +#define IClassActivator_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IClassActivator_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IClassActivator_Release(T) (T)->lpVtbl->Release(T) +#define IClassActivator_GetClassObject(T,a,b,c,d,e) (T)->lpVtbl->GetClassObject(T,a,b,c,d,e) +#endif /* COBJMACROS */ + +#endif diff --git a/reactos/w32api/include/ocidl.h b/reactos/w32api/include/ocidl.h new file mode 100644 index 00000000000..3dbfac2965b --- /dev/null +++ b/reactos/w32api/include/ocidl.h @@ -0,0 +1,817 @@ +#ifndef _OCIDL_H +#define _OCIDL_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef interface IErrorLog *LPERRORLOG; +typedef interface IPropertyBag *LPPROPERTYBAG; +typedef interface IPropertyBag2 *LPPROPERTYBAG2; +typedef interface IEnumConnections *LPENUMCONNECTIONS; +typedef interface IConnectionPoint *LPCONNECTIONPOINT; +typedef interface IEnumConnectionPoints *LPENUMCONNECTIONPOINTS; +typedef interface IPropertyPageSite *LPPROPERTYPAGESITE; +typedef interface IFont *LPFONT; +typedef interface IFontDisp *LPFONTDISP; +typedef interface IOleUndoManager *LPOLEUNDOMANAGER; + +#ifndef OLE2ANSI +typedef TEXTMETRICW TEXTMETRICOLE; +#else +typedef TEXTMETRIC TEXTMETRICOLE; +#endif +typedef TEXTMETRICOLE *LPTEXTMETRICOLE; +typedef DWORD OLE_COLOR; +typedef UINT OLE_HANDLE; +typedef long OLE_XPOS_HIMETRIC; +typedef long OLE_YPOS_HIMETRIC; +typedef long OLE_XSIZE_HIMETRIC; +typedef long OLE_YSIZE_HIMETRIC; + +typedef enum tagREADYSTATE { + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 +} READYSTATE; +typedef enum tagPROPBAG2_TYPE { + PROPBAG2_TYPE_UNDEFINED = 0, + PROPBAG2_TYPE_DATA = 1, + PROPBAG2_TYPE_URL = 2, + PROPBAG2_TYPE_OBJECT = 3, + PROPBAG2_TYPE_STREAM = 4, + PROPBAG2_TYPE_STORAGE = 5, + PROPBAG2_TYPE_MONIKER = 6 +} PROPBAG2_TYPE; +typedef struct tagPROPBAG2 +{ + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; +} PROPBAG2; +enum tagQACONTAINERFLAGS +{ + QACONTAINER_SHOWHATCHING = 1, + QACONTAINER_SHOWGRABHANDLES = 2, + QACONTAINER_USERMODE = 4, + QACONTAINER_DISPLAYASDEFAULT = 8, + QACONTAINER_UIDEAD = 16, + QACONTAINER_AUTOCLIP = 32, + QACONTAINER_MESSAGEREFLECT = 64, + QACONTAINER_SUPPORTSMNEMONICS = 128 +} QACONTAINERFLAGS; +typedef struct tagQACONTAINER +{ + ULONG cbSize; + interface IOleClientSite *pClientSite; + interface IAdviseSinkEx *pAdviseSink; + interface IPropertyNotifySink *pPropertyNotifySink; + IUnknown *pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + interface IFont *pFont; + interface IOleUndoManager *pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + interface IBindHost *pBindHost; + interface IOleControlSite *pOleControlSite; + interface IServiceProvider *pServiceProvider; +} QACONTAINER; +typedef struct tagQACONTROL +{ + ULONG cbSize; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; +} QACONTROL; +typedef struct tagPOINTF { + float x; + float y; +} POINTF,*LPPOINTF; +typedef struct tagCONTROLINFO { + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; +} CONTROLINFO,*LPCONTROLINFO; +typedef struct tagCONNECTDATA { + LPUNKNOWN pUnk; + DWORD dwCookie; +} CONNECTDATA,*LPCONNECTDATA; +typedef struct tagLICINFO { + long cbLicInfo; + BOOL fRuntimeKeyAvail; + BOOL fLicVerified; +} LICINFO,*LPLICINFO; +typedef struct tagCAUUID { + ULONG cElems; + GUID *pElems; +} CAUUID,*LPCAUUID; +typedef struct tagCALPOLESTR { + ULONG cElems; + LPOLESTR *pElems; +} CALPOLESTR,*LPCALPOLESTR; +typedef struct tagCADWORD { + ULONG cElems; + DWORD *pElems; +} CADWORD,*LPCADWORD; +typedef struct tagPROPPAGEINFO { + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; +} PROPPAGEINFO,*LPPROPPAGEINFO; + +EXTERN_C const IID IID_IOleControl; +#undef INTERFACE +#define INTERFACE IOleControl +DECLARE_INTERFACE_(IOleControl,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetControlInfo)(THIS_ LPCONTROLINFO) PURE; + STDMETHOD(OnMnemonic)(THIS_ LPMSG) PURE; + STDMETHOD(OnAmbientPropertyChange)(THIS_ DISPID) PURE; + STDMETHOD(FreezeEvents)(THIS_ BOOL) PURE; +}; + +EXTERN_C const IID IID_IOleControlSite; +#undef INTERFACE +#define INTERFACE IOleControlSite +DECLARE_INTERFACE_(IOleControlSite,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnControlInfoChanged)(THIS) PURE; + STDMETHOD(LockInPlaceActive)(THIS_ BOOL) PURE; + STDMETHOD(GetExtendedControl)(THIS_ LPDISPATCH*) PURE; + STDMETHOD(TransformCoords)(THIS_ POINTL*,POINTF*,DWORD) PURE; + STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,DWORD) PURE; + STDMETHOD(OnFocus)(THIS_ BOOL) PURE; + STDMETHOD(ShowPropertyFrame)(THIS) PURE; +}; + +#ifdef COBJMACROS +#define IOleControlSite_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleControlSite_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleControlSite_Release(T) (T)->lpVtbl->Release(T) +#define IOleControlSite_OnControlInfoChanged(T) (T)->lpVtbl->OnControlInfoChanged(T) +#define IOleControlSite_LockInPlaceActive(T,a) (T)->lpVtbl->LockInPlaceActive(T,a) +#define IOleControlSite_GetExtendedControl(T,a) (T)->lpVtbl->GetExtendedControl(T,a) +#define IOleControlSite_TransformCoords(T,a,b,c) (T)->lpVtbl->TransformCoords(T,a,b,c) +#define IOleControlSite_TranslateAccelerator(T,a,b) (T)->lpVtbl->TranslateAccelerator(T,a,b) +#define IOleControlSite_OnFocus(T,a) (T)->lpVtbl->OnFocus(T,a) +#define IOleControlSite_ShowPropertyFrame(T) (T)->lpVtbl->ShowPropertyFrame(T) +#endif + +EXTERN_C const IID IID_ISimpleFrameSite; +#undef INTERFACE +#define INTERFACE ISimpleFrameSite +DECLARE_INTERFACE_(ISimpleFrameSite,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(PreMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,PDWORD) PURE; + STDMETHOD(PostMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,DWORD) PURE; +}; + +EXTERN_C const IID IID_IErrorLog; +#undef INTERFACE +#define INTERFACE IErrorLog +DECLARE_INTERFACE_(IErrorLog,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(AddError)(THIS_ LPCOLESTR,LPEXCEPINFO) PURE; +}; + +EXTERN_C const IID IID_IPropertyBag; +#undef INTERFACE +#define INTERFACE IPropertyBag +DECLARE_INTERFACE_(IPropertyBag,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Read)(THIS_ LPCOLESTR,LPVARIANT,LPERRORLOG) PURE; + STDMETHOD(Write)(THIS_ LPCOLESTR,LPVARIANT) PURE; +}; + +EXTERN_C const IID IID_IPropertyBag2; +#undef INTERFACE +#define INTERFACE IPropertyBag2 +DECLARE_INTERFACE_(IPropertyBag2,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Read)(THIS_ ULONG,PROPBAG2*,LPERRORLOG,VARIANT*,HRESULT*) PURE; + STDMETHOD(Write)(THIS_ ULONG,PROPBAG2*,VARIANT*) PURE; + STDMETHOD(CountProperties)(THIS_ ULONG*) PURE; + STDMETHOD(GetPropertyInfo)(THIS_ ULONG,ULONG,PROPBAG2*,ULONG*) PURE; + STDMETHOD(LoadObject)(THIS_ LPCOLESTR,DWORD,IUnknown*,LPERRORLOG) PURE; +}; + +EXTERN_C const IID IID_IPersistPropertyBag; +#undef INTERFACE +#define INTERFACE IPersistPropertyBag +DECLARE_INTERFACE_(IPersistPropertyBag,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; + STDMETHOD(InitNew)(THIS) PURE; + STDMETHOD(Load)(THIS_ LPPROPERTYBAG,LPERRORLOG) PURE; + STDMETHOD(Save)(THIS_ LPPROPERTYBAG,BOOL,BOOL) PURE; +}; + +#ifdef COBJMACROS +#define IPersistPropertyBag_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistPropertyBag_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistPropertyBag_Release(T) (T)->lpVtbl->Release(T) +#define IPersistPropertyBag_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistPropertyBag_InitNew(T) (T)->lpVtbl->InitNew(T) +#define IPersistPropertyBag_Load(T,a,b) (T)->lpVtbl->Load(T,a,b) +#define IPersistPropertyBag_Save(T,a,b,c) (T)->lpVtbl->Save(T,a,b,c) +#endif + +EXTERN_C const IID IID_IPersistPropertyBag2; +#undef INTERFACE +#define INTERFACE IPersistPropertyBag2 +DECLARE_INTERFACE_(IPersistPropertyBag2,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; + STDMETHOD(InitNew)(THIS) PURE; + STDMETHOD(Load)(THIS_ LPPROPERTYBAG2,LPERRORLOG) PURE; + STDMETHOD(Save)(THIS_ LPPROPERTYBAG2,BOOL,BOOL) PURE; + STDMETHOD(IsDirty)(THIS) PURE; +}; + +#ifdef COBJMACROS +#define IPersistPropertyBag2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistPropertyBag2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistPropertyBag2_Release(T) (T)->lpVtbl->Release(T) +#define IPersistPropertyBag2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistPropertyBag2_InitNew(T) (T)->lpVtbl->InitNew(T) +#define IPersistPropertyBag2_Load(T,a,b) (T)->lpVtbl->Load(T,a,b) +#define IPersistPropertyBag2_Save(T,a,b,c) (T)->lpVtbl->Save(T,a,b,c) +#define IPersistPropertyBag2_IsDirty(T) (T)->lpVtbl->IsDirty(T) +#endif + +EXTERN_C const IID IID_IPersistStreamInit; +#undef INTERFACE +#define INTERFACE IPersistStreamInit +DECLARE_INTERFACE_(IPersistStreamInit,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; + STDMETHOD(IsDirty)(THIS) PURE; + STDMETHOD(Load)(THIS_ LPSTREAM) PURE; + STDMETHOD(Save)(THIS_ LPSTREAM,BOOL) PURE; + STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE; + STDMETHOD(InitNew)(THIS) PURE; +}; + +EXTERN_C const IID IID_IPersistMemory; +#undef INTERFACE +#define INTERFACE IPersistMemory +DECLARE_INTERFACE_(IPersistMemory,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE; + STDMETHOD(IsDirty)(THIS) PURE; + STDMETHOD(Load)(THIS_ PVOID,ULONG) PURE; + STDMETHOD(Save)(THIS_ PVOID,BOOL,ULONG) PURE; + STDMETHOD(GetSizeMax)(THIS_ PULONG) PURE; + STDMETHOD(InitNew)(THIS) PURE; +}; + +EXTERN_C const IID IID_IPropertyNotifySink; +#undef INTERFACE +#define INTERFACE IPropertyNotifySink +DECLARE_INTERFACE_(IPropertyNotifySink,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnChanged)(THIS_ DISPID) PURE; + STDMETHOD(OnRequestEdit)(THIS_ DISPID) PURE; +}; + +#ifdef COBJMACROS +#define IPropertyNotifySink_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPropertyNotifySink_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPropertyNotifySink_Release(T) (T)->lpVtbl->Release(T) +#define IPropertyNotifySink_OnChanged(T,a) (T)->lpVtbl->OnChanged(T,a) +#define IPropertyNotifySink_OnRequestEdit(T,a) (T)->lpVtbl->OnRequestEdit(T,a) +#endif + +EXTERN_C const IID IID_IProvideClassInfo; +#undef INTERFACE +#define INTERFACE IProvideClassInfo +DECLARE_INTERFACE_(IProvideClassInfo,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE; +}; + +EXTERN_C const IID IID_IProvideClassInfo2; +#undef INTERFACE +#define INTERFACE IProvideClassInfo2 +DECLARE_INTERFACE_(IProvideClassInfo2,IProvideClassInfo) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE; + STDMETHOD(GetGUID)(THIS_ DWORD,GUID*) PURE; +}; + +EXTERN_C const IID IID_IConnectionPointContainer; +#undef INTERFACE +#define INTERFACE IConnectionPointContainer +DECLARE_INTERFACE_(IConnectionPointContainer,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(EnumConnectionPoints)(THIS_ LPENUMCONNECTIONPOINTS*) PURE; + STDMETHOD(FindConnectionPoint)(THIS_ REFIID,LPCONNECTIONPOINT*) PURE; +}; + +#ifdef COBJMACROS +#define IConnectionPointContainer_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IConnectionPointContainer_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IConnectionPointContainer_Release(T) (T)->lpVtbl->Release(T) +#define IConnectionPointContainer_EnumConnectionPoints(T,a) (T)->lpVtbl->EnumConnectionPoints(T,a) +#define IConnectionPointContainer_FindConnectionPoint(T,a,b) (T)->lpVtbl->FindConnectionPoint(T,a,b) +#endif + +EXTERN_C const IID IID_IEnumConnectionPoints; +#undef INTERFACE +#define INTERFACE IEnumConnectionPoints +DECLARE_INTERFACE_(IEnumConnectionPoints,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Next)(THIS_ ULONG,LPCONNECTIONPOINT*,ULONG*) PURE; + STDMETHOD(Skip)(THIS_ ULONG) PURE; + STDMETHOD(Reset)(THIS) PURE; + STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONPOINTS*) PURE; +}; + +EXTERN_C const IID IID_IConnectionPoint; +#undef INTERFACE +#define INTERFACE IConnectionPoint +DECLARE_INTERFACE_(IConnectionPoint,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetConnectionInterface)(THIS_ IID*) PURE; + STDMETHOD(GetConnectionPointContainer)(THIS_ IConnectionPointContainer**) PURE; + STDMETHOD(Advise)(THIS_ LPUNKNOWN,PDWORD) PURE; + STDMETHOD(Unadvise)(THIS_ DWORD) PURE; + STDMETHOD(EnumConnections)(THIS_ LPENUMCONNECTIONS*) PURE; +}; + +#ifdef COBJMACROS +#define IConnectionPoint_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IConnectionPoint_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IConnectionPoint_Release(T) (T)->lpVtbl->Release(T) +#define IConnectionPoint_GetConnectionInterface(T,a) (T)->lpVtbl->GetConnectionInterface(T,a) +#define IConnectionPoint_GetConnectionPointContainer(T,a) (T)->lpVtbl->GetConnectionPointContainer(T,a) +#define IConnectionPoint_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b) +#define IConnectionPoint_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a) +#define IConnectionPoint_EnumConnections(T,a) (T)->lpVtbl->EnumConnections(T,a) +#endif + +EXTERN_C const IID IID_IEnumConnections; +#undef INTERFACE +#define INTERFACE IEnumConnections +DECLARE_INTERFACE_(IEnumConnections,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Next)(THIS_ ULONG,LPCONNECTDATA,PULONG) PURE; + STDMETHOD(Skip)(THIS_ ULONG) PURE; + STDMETHOD(Reset)(THIS) PURE; + STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONS*) PURE; +}; + +#ifdef COBJMACROS +#define IEnumConnections_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IEnumConnections_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IEnumConnections_Release(T) (T)->lpVtbl->Release(T) +#define IEnumConnections_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c) +#define IEnumConnections_Skip(T,a) (T)->lpVtbl->Skip(T,a) +#define IEnumConnections_Reset(T) (T)->lpVtbl->Reset(T) +#define IEnumConnections_Clone(T,a) (T)->lpVtbl->Clone(T,a) +#endif + +EXTERN_C const IID IID_IClassFactory2; +#undef INTERFACE +#define INTERFACE IClassFactory2 +DECLARE_INTERFACE_(IClassFactory2,IClassFactory) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; + STDMETHOD(LockServer)(THIS_ BOOL) PURE; + STDMETHOD(GetLicInfo)(THIS_ LPLICINFO) PURE; + STDMETHOD(RequestLicKey)(THIS_ DWORD,BSTR*) PURE; + STDMETHOD(CreateInstanceLic)(THIS_ LPUNKNOWN,LPUNKNOWN,REFIID,BSTR,PVOID*) PURE; +}; + +EXTERN_C const IID IID_ISpecifyPropertyPages; +#undef INTERFACE +#define INTERFACE ISpecifyPropertyPages +DECLARE_INTERFACE_(ISpecifyPropertyPages,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetPages)(THIS_ CAUUID*) PURE; +}; + +EXTERN_C const IID IID_IPerPropertyBrowsing; +#undef INTERFACE +#define INTERFACE IPerPropertyBrowsing +DECLARE_INTERFACE_(IPerPropertyBrowsing,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetDisplayString)(THIS_ DISPID,BSTR*) PURE; + STDMETHOD(MapPropertyToPage)(THIS_ DISPID,LPCLSID) PURE; + STDMETHOD(GetPredefinedStrings)(THIS_ DISPID,CALPOLESTR*,CADWORD*) PURE; + STDMETHOD(GetPredefinedValue)(THIS_ DISPID,DWORD,VARIANT*) PURE; +}; + +EXTERN_C const IID IID_IPropertyPageSite; +#undef INTERFACE +#define INTERFACE IPropertyPageSite +DECLARE_INTERFACE_(IPropertyPageSite,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnStatusChange)(THIS_ DWORD) PURE; + STDMETHOD(GetLocaleID)(THIS_ LCID*) PURE; + STDMETHOD(GetPageContainer)(THIS_ LPUNKNOWN*) PURE; + STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; +}; + +EXTERN_C const IID IID_IPropertyPage; +#undef INTERFACE +#define INTERFACE IPropertyPage +DECLARE_INTERFACE_(IPropertyPage,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE; + STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE; + STDMETHOD(Deactivate)(THIS) PURE; + STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE; + STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE; + STDMETHOD(Show)(THIS_ UINT) PURE; + STDMETHOD(Move)(THIS_ LPCRECT) PURE; + STDMETHOD(IsPageDirty)(THIS) PURE; + STDMETHOD(Apply)(THIS) PURE; + STDMETHOD(Help)(THIS_ LPCOLESTR) PURE; + STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; +}; + +EXTERN_C const IID IID_IPropertyPage2; +#undef INTERFACE +#define INTERFACE IPropertyPage2 +DECLARE_INTERFACE_(IPropertyPage2,IPropertyPage) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE; + STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE; + STDMETHOD(Deactivate)(THIS) PURE; + STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE; + STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE; + STDMETHOD(Show)(THIS_ UINT) PURE; + STDMETHOD(Move)(THIS_ LPCRECT) PURE; + STDMETHOD(IsPageDirty)(THIS) PURE; + STDMETHOD(Apply)(THIS) PURE; + STDMETHOD(Help)(THIS_ LPCOLESTR) PURE; + STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; + STDMETHOD(EditProperty)(THIS_ DISPID) PURE; +}; + +EXTERN_C const IID IID_IFont; +#undef INTERFACE +#define INTERFACE IFont +DECLARE_INTERFACE_(IFont,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(get_Name)(THIS_ BSTR*) PURE; + STDMETHOD(put_Name)(THIS_ BSTR) PURE; + STDMETHOD(get_Size)(THIS_ CY*) PURE; + STDMETHOD(put_Size)(THIS_ CY) PURE; + STDMETHOD(get_Bold)(THIS_ BOOL*) PURE; + STDMETHOD(put_Bold)(THIS_ BOOL) PURE; + STDMETHOD(get_Italic)(THIS_ BOOL*) PURE; + STDMETHOD(put_Italic)(THIS_ BOOL) PURE; + STDMETHOD(get_Underline)(THIS_ BOOL*) PURE; + STDMETHOD(put_Underline)(THIS_ BOOL) PURE; + STDMETHOD(get_Strikethrough)(THIS_ BOOL*) PURE; + STDMETHOD(put_Strikethrough)(THIS_ BOOL) PURE; + STDMETHOD(get_Weight)(THIS_ short*) PURE; + STDMETHOD(put_Weight)(THIS_ short) PURE; + STDMETHOD(get_Charset)(THIS_ short*) PURE; + STDMETHOD(put_Charset)(THIS_ short) PURE; + STDMETHOD(get_hFont)(THIS_ HFONT*) PURE; + STDMETHOD(Clone)(THIS_ IFont**) PURE; + STDMETHOD(IsEqual)(THIS_ IFont*) PURE; + STDMETHOD(SetRatio)(THIS_ long,long) PURE; + STDMETHOD(QueryTextMetrics)(THIS_ LPTEXTMETRICOLE) PURE; + STDMETHOD(AddRefHfont)(THIS_ HFONT) PURE; + STDMETHOD(ReleaseHfont)(THIS_ HFONT) PURE; + STDMETHOD(SetHdc)(THIS_ HDC) PURE; +}; + +EXTERN_C const IID IID_IFontDisp; +#undef INTERFACE +#define INTERFACE IFontDisp +DECLARE_INTERFACE_(IFontDisp,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; +}; + +EXTERN_C const IID IID_IPicture; +#undef INTERFACE +#define INTERFACE IPicture +DECLARE_INTERFACE_(IPicture,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(get_Handle)(THIS_ OLE_HANDLE*) PURE; + STDMETHOD(get_hPal)(THIS_ OLE_HANDLE*) PURE; + STDMETHOD(get_Type)(THIS_ short*) PURE; + STDMETHOD(get_Width)(THIS_ OLE_XSIZE_HIMETRIC*) PURE; + STDMETHOD(get_Height)(THIS_ OLE_YSIZE_HIMETRIC*) PURE; + STDMETHOD(Render)(THIS_ HDC,long,long,long,long,OLE_XPOS_HIMETRIC,OLE_YPOS_HIMETRIC,OLE_XSIZE_HIMETRIC,OLE_YSIZE_HIMETRIC,LPCRECT) PURE; + STDMETHOD(set_hPal)(THIS_ OLE_HANDLE) PURE; + STDMETHOD(get_CurDC)(THIS_ HDC*) PURE; + STDMETHOD(SelectPicture)(THIS_ HDC,HDC*,OLE_HANDLE*) PURE; + STDMETHOD(get_KeepOriginalFormat)(THIS_ BOOL*) PURE; + STDMETHOD(put_KeepOriginalFormat)(THIS_ BOOL) PURE; + STDMETHOD(PictureChanged)(THIS) PURE; + STDMETHOD(SaveAsFile)(THIS_ LPSTREAM,BOOL,LONG*) PURE; + STDMETHOD(get_Attributes)(THIS_ PDWORD) PURE; +}; + +EXTERN_C const IID IID_IPictureDisp; +#undef INTERFACE +#define INTERFACE IPictureDisp +DECLARE_INTERFACE_(IPictureDisp,IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; +}; + +EXTERN_C const IID IID_IOleInPlaceSiteEx; +#undef INTERFACE +#define INTERFACE IOleInPlaceSiteEx +DECLARE_INTERFACE_(IOleInPlaceSiteEx,IOleInPlaceSite) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(CanInPlaceActivate)(THIS) PURE; + STDMETHOD(OnInPlaceActivate)(THIS) PURE; + STDMETHOD(OnUIActivate)(THIS) PURE; + STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE; + STDMETHOD(Scroll)(THIS_ SIZE) PURE; + STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE; + STDMETHOD(OnInPlaceDeactivate)(THIS) PURE; + STDMETHOD(DiscardUndoState)(THIS) PURE; + STDMETHOD(DeactivateAndUndo)(THIS) PURE; + STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE; + STDMETHOD(OnInPlaceActivateEx)(THIS_ BOOL*,DWORD) PURE; + STDMETHOD(OnInPlaceDeactivateEx)(THIS_ BOOL) PURE; + STDMETHOD(RequestUIActivate)(THIS) PURE; +}; + +EXTERN_C const IID IID_IObjectWithSite; +#undef INTERFACE +#define INTERFACE IObjectWithSite +DECLARE_INTERFACE_(IObjectWithSite,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetSite)(THIS_ IUnknown*) PURE; + STDMETHOD(GetSite)(THIS_ REFIID, void**) PURE; +}; + +EXTERN_C const IID IID_IOleInPlaceSiteWindowless; +#undef INTERFACE +#define INTERFACE IOleInPlaceSiteWindowless +DECLARE_INTERFACE_(IOleInPlaceSiteWindowless,IOleInPlaceSiteEx) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(CanInPlaceActivate)(THIS) PURE; + STDMETHOD(OnInPlaceActivate)(THIS) PURE; + STDMETHOD(OnUIActivate)(THIS) PURE; + STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE; + STDMETHOD(Scroll)(THIS_ SIZE) PURE; + STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE; + STDMETHOD(OnInPlaceDeactivate)(THIS) PURE; + STDMETHOD(DiscardUndoState)(THIS) PURE; + STDMETHOD(DeactivateAndUndo)(THIS) PURE; + STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE; + + STDMETHOD(OnInPlaceActivateEx)(THIS_ BOOL*,DWORD) PURE; + STDMETHOD(OnInPlaceDeactivateEx)(THIS_ BOOL) PURE; + STDMETHOD(RequestUIActivate)(THIS) PURE; + + STDMETHOD(CanWindowlessActivate)(THIS) PURE; + STDMETHOD(GetCapture)(THIS) PURE; + STDMETHOD(SetCapture)(THIS_ BOOL) PURE; + STDMETHOD(GetFocus)(THIS) PURE; + STDMETHOD(SetFocus)(THIS_ BOOL) PURE; + STDMETHOD(GetDC)(THIS_ LPCRECT,DWORD,HDC*) PURE; + STDMETHOD(ReleaseDC)(THIS_ HDC) PURE; + STDMETHOD(InvalidateRect)(THIS_ LPCRECT,BOOL) PURE; + STDMETHOD(InvalidateRgn)(THIS_ HRGN,BOOL) PURE; + STDMETHOD(ScrollRect)(THIS_ INT,INT,LPCRECT,LPCRECT) PURE; + STDMETHOD(AdjustRect)(THIS_ LPCRECT) PURE; + STDMETHOD(OnDefWindowMessage)(THIS_ UINT,WPARAM,LPARAM,LRESULT*) PURE; +}; + +EXTERN_C const IID IID_IAdviseSinkEx; +#undef INTERFACE +#define INTERFACE IAdviseSinkEx +DECLARE_INTERFACE_(IAdviseSinkEx,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE; + STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE; + STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE; + STDMETHOD_(void,OnSave)(THIS) PURE; + STDMETHOD_(void,OnClose)(THIS) PURE; + STDMETHOD(OnViewStatusChange)(THIS_ DWORD) PURE; +}; + +EXTERN_C const IID IID_IPointerInactive; +#undef INTERFACE +#define INTERFACE IPointerInactive +DECLARE_INTERFACE_(IPointerInactive,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetActivationPolicy)(THIS_ DWORD*) PURE; + STDMETHOD(OnInactiveMouseMove)(THIS_ LPCRECT,LONG,LONG,DWORD) PURE; + STDMETHOD(OnInactiveSetCursor)(THIS_ LPCRECT,LONG,LONG,DWORD,BOOL) PURE; +}; + +EXTERN_C const IID IID_IOleUndoUnit; +#undef INTERFACE +#define INTERFACE IOleUndoUnit +DECLARE_INTERFACE_(IOleUndoUnit,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Do)(THIS_ LPOLEUNDOMANAGER) PURE; + STDMETHOD(GetDescription)(THIS_ BSTR*) PURE; + STDMETHOD(GetUnitType)(THIS_ CLSID*,LONG*) PURE; + STDMETHOD(OnNextAdd)(THIS) PURE; +}; + +EXTERN_C const IID IID_IOleParentUndoUnit; +#undef INTERFACE +#define INTERFACE IOleParentUndoUnit +DECLARE_INTERFACE_(IOleParentUndoUnit,IOleUndoUnit) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Do)(THIS_ LPOLEUNDOMANAGER) PURE; + STDMETHOD(GetDescription)(THIS_ BSTR*) PURE; + STDMETHOD(GetUnitType)(THIS_ CLSID*,LONG*) PURE; + STDMETHOD(OnNextAdd)(THIS) PURE; + STDMETHOD(Open)(THIS_ IOleParentUndoUnit*) PURE; + STDMETHOD(Close)(THIS_ IOleParentUndoUnit*,BOOL) PURE; + STDMETHOD(Add)(THIS_ IOleUndoUnit*) PURE; + STDMETHOD(FindUnit)(THIS_ IOleUndoUnit*) PURE; + STDMETHOD(GetParentState)(THIS_ DWORD*) PURE; +}; + +EXTERN_C const IID IID_IEnumOleUndoUnits; +#undef INTERFACE +#define INTERFACE IEnumOleUndoUnits +DECLARE_INTERFACE_(IEnumOleUndoUnits,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Next)(THIS_ ULONG,IOleUndoUnit**,ULONG*) PURE; + STDMETHOD(Skip)(THIS_ ULONG) PURE; + STDMETHOD(Reset)(THIS) PURE; + STDMETHOD(Clone)(THIS_ IEnumOleUndoUnits**) PURE; +}; + +EXTERN_C const IID IID_IOleUndoManager; +#undef INTERFACE +#define INTERFACE IOleUndoManager +DECLARE_INTERFACE_(IOleUndoManager,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Open)(THIS_ IOleParentUndoUnit*) PURE; + STDMETHOD(Close)(THIS_ IOleParentUndoUnit*,BOOL) PURE; + STDMETHOD(Add)(THIS_ IOleUndoUnit*) PURE; + STDMETHOD(GetOpenParentState)(THIS_ DWORD*) PURE; + STDMETHOD(DiscardFrom)(THIS_ IOleUndoUnit*) PURE; + STDMETHOD(UndoTo)(THIS_ IOleUndoUnit*) PURE; + STDMETHOD(RedoTo)(THIS_ IOleUndoUnit*) PURE; + STDMETHOD(EnumUndoable)(THIS_ IEnumOleUndoUnits**) PURE; + STDMETHOD(EnumRedoable)(THIS_ IEnumOleUndoUnits**) PURE; + STDMETHOD(GetLastUndoDescription)(THIS_ BSTR*) PURE; + STDMETHOD(GetLastRedoDescription)(THIS_ BSTR*) PURE; + STDMETHOD(Enable)(THIS_ BOOL) PURE; +}; + +EXTERN_C const IID IID_IQuickActivate; +#undef INTERFACE +#define INTERFACE IQuickActivate +DECLARE_INTERFACE_(IQuickActivate,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QuickActivate)(THIS_ QACONTAINER*,QACONTROL*) PURE; + STDMETHOD(SetContentExtent)(THIS_ LPSIZEL) PURE; + STDMETHOD(GetContentExtent)(THIS_ LPSIZEL) PURE; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/odbcinst.h b/reactos/w32api/include/odbcinst.h new file mode 100644 index 00000000000..b90464f272a --- /dev/null +++ b/reactos/w32api/include/odbcinst.h @@ -0,0 +1,148 @@ +#ifndef _ODBCINST_H +#define _ODBCINST_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif +#include +#ifdef __cplusplus +extern "C" { +#endif +#ifndef ODBCVER +#define ODBCVER 0x0351 +#endif +#define INSTAPI __stdcall +#define ODBC_ADD_DSN 1 +#define ODBC_CONFIG_DSN 2 +#define ODBC_REMOVE_DSN 3 +#if (ODBCVER >= 0x0250) +#define ODBC_ADD_SYS_DSN 4 +#define ODBC_CONFIG_SYS_DSN 5 +#define ODBC_REMOVE_SYS_DSN 6 +#define ODBC_INSTALL_INQUIRY 1 +#define ODBC_INSTALL_COMPLETE 2 +#define ODBC_INSTALL_DRIVER 1 +#define ODBC_REMOVE_DRIVER 2 +#define ODBC_CONFIG_DRIVER 3 +#define ODBC_CONFIG_DRIVER_MAX 100 +#endif /* (ODBCVER >= 0x0250) */ +#if (ODBCVER >= 0x0300) +#define ODBC_REMOVE_DEFAULT_DSN 7 +#define ODBC_BOTH_DSN 0 +#define ODBC_USER_DSN 1 +#define ODBC_SYSTEM_DSN 2 +#define ODBC_ERROR_GENERAL_ERR 1 +#define ODBC_ERROR_INVALID_BUFF_LEN 2 +#define ODBC_ERROR_INVALID_HWND 3 +#define ODBC_ERROR_INVALID_STR 4 +#define ODBC_ERROR_INVALID_REQUEST_TYPE 5 +#define ODBC_ERROR_COMPONENT_NOT_FOUND 6 +#define ODBC_ERROR_INVALID_NAME 7 +#define ODBC_ERROR_INVALID_KEYWORD_VALUE 8 +#define ODBC_ERROR_INVALID_DSN 9 +#define ODBC_ERROR_INVALID_INF 10 +#define ODBC_ERROR_REQUEST_FAILED 11 +#define ODBC_ERROR_INVALID_PATH 12 +#define ODBC_ERROR_LOAD_LIB_FAILED 13 +#define ODBC_ERROR_INVALID_PARAM_SEQUENCE 14 +#define ODBC_ERROR_INVALID_LOG_FILE 15 +#define ODBC_ERROR_USER_CANCELED 16 +#define ODBC_ERROR_USAGE_UPDATE_FAILED 17 +#define ODBC_ERROR_CREATE_DSN_FAILED 18 +#define ODBC_ERROR_WRITING_SYSINFO_FAILED 19 +#define ODBC_ERROR_REMOVE_DSN_FAILED 20 +#define ODBC_ERROR_OUT_OF_MEM 21 +#define ODBC_ERROR_OUTPUT_STRING_TRUNCATED 22 +#endif /* ODBCVER >= 0x0300 */ + +#ifndef RC_INVOKED +BOOL INSTAPI ConfigDSN(HWND,WORD,LPCSTR,LPCSTR); +BOOL INSTAPI ConfigDSNW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL INSTAPI ConfigTranslator(HWND,DWORD*); +BOOL INSTAPI SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR); +BOOL INSTAPI SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL INSTAPI SQLCreateDataSource(HWND,LPCSTR); +BOOL INSTAPI SQLCreateDataSourceW(HWND,LPCWSTR); +BOOL INSTAPI SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*); +BOOL INSTAPI SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*); +BOOL INSTAPI SQLGetInstalledDrivers(LPSTR,WORD,WORD*); +BOOL INSTAPI SQLGetInstalledDriversW(LPWSTR,WORD,WORD*); +int INSTAPI SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,int,LPCSTR); +int INSTAPI SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,int,LPCWSTR); +BOOL INSTAPI SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*); +BOOL INSTAPI SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*); +BOOL INSTAPI SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*); +BOOL INSTAPI SQLInstallDriverManager(LPSTR,WORD,WORD*); +BOOL INSTAPI SQLInstallDriverManagerW(LPWSTR,WORD,WORD*); +BOOL INSTAPI SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); +BOOL INSTAPI SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR); +BOOL INSTAPI SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR); +BOOL INSTAPI SQLManageDataSources(HWND); +BOOL INSTAPI SQLRemoveDefaultDataSource(void); +BOOL INSTAPI SQLRemoveDSNFromIni(LPCSTR); +BOOL INSTAPI SQLRemoveDSNFromIniW(LPCWSTR); +BOOL INSTAPI SQLValidDSN(LPCSTR); +BOOL INSTAPI SQLValidDSNW(LPCWSTR); +BOOL INSTAPI SQLWriteDSNToIni(LPCSTR,LPCSTR); +BOOL INSTAPI SQLWriteDSNToIniW(LPCWSTR,LPCWSTR); +BOOL INSTAPI SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL INSTAPI SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +#if(ODBCVER >= 0x0250) +BOOL INSTAPI ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); +BOOL INSTAPI ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); +BOOL INSTAPI SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); +BOOL INSTAPI SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); +BOOL INSTAPI SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); +BOOL INSTAPI SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); +BOOL INSTAPI SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); +BOOL INSTAPI SQLRemoveDriverManager(LPDWORD); +BOOL INSTAPI SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); +BOOL INSTAPI SQLRemoveTranslator(LPCSTR,LPDWORD); +BOOL INSTAPI SQLRemoveTranslatorW(LPCWSTR,LPDWORD); +#endif /* ODBCVER >= 0x0250 */ +#if (ODBCVER >= 0x0300) +BOOL INSTAPI SQLGetConfigMode(UWORD*); +BOOL INSTAPI SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); +BOOL INSTAPI SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); +SQLRETURN INSTAPI SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); +SQLRETURN INSTAPI SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); +BOOL INSTAPI SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); +BOOL INSTAPI SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); +SQLRETURN INSTAPI SQLPostInstallerError(DWORD,LPCSTR); +SQLRETURN INSTAPI SQLPostInstallerErrorW(DWORD,LPCWSTR); +BOOL INSTAPI SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); +BOOL INSTAPI SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); +BOOL INSTAPI SQLSetConfigMode(UWORD); +BOOL INSTAPI SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL INSTAPI SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +#endif /* ODBCVER >= 0x0300 */ + +#if defined (UNICODE) && !defined (SQL_NOUNICODEMAP) +#define SQLConfigDataSource SQLConfigDataSourceW +#define SQLConfigDriver SQLConfigDriverW +#define SQLCreateDataSource SQLCreateDataSourceW +#define SQLGetAvailableDrivers SQLGetAvailableDriversW +#define SQLGetInstalledDrivers SQLGetInstalledDriversW +#define SQLGetPrivateProfileString SQLGetPrivateProfileStringW +#define SQLGetTranslator SQLGetTranslatorW +#define SQLInstallDriver SQLInstallDriverW +#define SQLInstallDriverEx SQLInstallDriverExW +#define SQLInstallDriverManager SQLInstallDriverManagerW +#define SQLInstallerError SQLInstallerErrorW +#define SQLInstallODBC SQLInstallODBCW +#define SQLInstallTranslator SQLInstallTranslatorW +#define SQLInstallTranslatorEx SQLInstallTranslatorExW +#define SQLPostInstallerError SQLPostInstallerErrorW +#define SQLReadFileDSN SQLReadFileDSNW +#define SQLRemoveDriver SQLRemoveDriverW +#define SQLRemoveDSNFromIni SQLRemoveDSNFromIniW +#define SQLRemoveTranslator SQLRemoveTranslatorW +#define SQLValidDSN SQLValidDSNW +#define SQLWriteDSNToIni SQLWriteDSNToIniW +#define SQLWriteFileDSN SQLWriteFileDSNW +#define SQLWritePrivateProfileString SQLWritePrivateProfileStringW +#endif /* UNICODE && !SQL_NOUNICODEMAP */ +#endif /* RC_INVOKED */ +#ifdef __cplusplus +} +#endif +#endif /* _ODBCINST_H */ diff --git a/reactos/w32api/include/ole.h b/reactos/w32api/include/ole.h new file mode 100644 index 00000000000..d2dd2020a92 --- /dev/null +++ b/reactos/w32api/include/ole.h @@ -0,0 +1,308 @@ +#ifndef _OLE_H +#define _OLE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef STRICT +#define OLE_LPCSTR LPCSTR +#define OLE_CONST const +#else +#define OLE_LPCSTR LPSTR +#define OLE_CONST +#endif +#define LRESULT LONG +#define HGLOBAL HANDLE +#define OT_LINK 1L +#define OT_EMBEDDED 2L +#define OT_STATIC 3L +#define OLEVERB_PRIMARY 0 +#define OF_SET 1 +#define OF_GET 2 +#define OF_HANDLER 4 + +typedef struct _OLETARGETDEVICE { + USHORT otdDeviceNameOffset; + USHORT otdDriverNameOffset; + USHORT otdPortNameOffset; + USHORT otdExtDevmodeOffset; + USHORT otdExtDevmodeSize; + USHORT otdEnvironmentOffset; + USHORT otdEnvironmentSize; + BYTE otdData[1]; +} OLETARGETDEVICE; +typedef OLETARGETDEVICE *LPOLETARGETDEVICE; +typedef enum { +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 +} OLESTATUS; +typedef enum { + OLE_CHANGED, + OLE_SAVED, + OLE_CLOSED, + OLE_RENAMED, + OLE_QUERY_PAINT, + OLE_RELEASE, + OLE_QUERY_RETRY +} OLE_NOTIFICATION; +typedef enum { + 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_RELEASE_METHOD; +typedef enum { + olerender_none, + olerender_draw, + olerender_format + } OLEOPT_RENDER; +typedef WORD OLECLIPFORMAT; +typedef enum { + oleupdate_always, + oleupdate_onsave, +#ifdef OLE_INTERNAL + oleupdate_oncall, + oleupdate_onclose +#else + oleupdate_oncall +#endif +} OLEOPT_UPDATE; +typedef HANDLE HOBJECT; +typedef LONG LHSERVER; +typedef LONG LHCLIENTDOC; +typedef LONG LHSERVERDOC; +typedef struct _OLEOBJECT *LPOLEOBJECT; +typedef struct _OLESTREAM *LPOLESTREAM; +typedef struct _OLECLIENT *LPOLECLIENT; +typedef struct _OLEOBJECTVTBL { + void *(CALLBACK* QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR); + OLESTATUS (CALLBACK* Release)(LPOLEOBJECT); + OLESTATUS (CALLBACK* Show)(LPOLEOBJECT,BOOL); + OLESTATUS (CALLBACK* DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL); + OLESTATUS (CALLBACK* GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*); + OLESTATUS (CALLBACK* SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE); + OLESTATUS (CALLBACK* SetTargetDevice)(LPOLEOBJECT,HGLOBAL); + OLESTATUS (CALLBACK* SetBounds)(LPOLEOBJECT,OLE_CONST RECT*); + OLECLIPFORMAT (CALLBACK* EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK* SetColorScheme)(LPOLEOBJECT,OLE_CONST LOGPALETTE*); +#ifndef SERVERONLY + OLESTATUS (CALLBACK* Delete)(LPOLEOBJECT); + OLESTATUS (CALLBACK* SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR); + OLESTATUS (CALLBACK* SaveToStream)(LPOLEOBJECT,LPOLESTREAM); + OLESTATUS (CALLBACK* Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); + OLESTATUS (CALLBACK* CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); + OLESTATUS (CALLBACK* Equal)(LPOLEOBJECT,LPOLEOBJECT); + OLESTATUS (CALLBACK* CopyToClipboard)(LPOLEOBJECT); + OLESTATUS (CALLBACK* Draw)(LPOLEOBJECT,HDC,OLE_CONST RECT*,OLE_CONST RECT*,HDC); + OLESTATUS (CALLBACK* Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,OLE_CONST RECT*); + OLESTATUS (CALLBACK* Execute)(LPOLEOBJECT,HGLOBAL,UINT); + OLESTATUS (CALLBACK* Close)(LPOLEOBJECT); + OLESTATUS (CALLBACK* Update)(LPOLEOBJECT); + OLESTATUS (CALLBACK* Reconnect)(LPOLEOBJECT); + OLESTATUS (CALLBACK* ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); + OLESTATUS (CALLBACK* GetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE*); + OLESTATUS (CALLBACK* SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); + OLESTATUS (CALLBACK* Rename)(LPOLEOBJECT,OLE_LPCSTR); + OLESTATUS (CALLBACK* QueryName)(LPOLEOBJECT,LPSTR,UINT*); + OLESTATUS (CALLBACK* QueryType)(LPOLEOBJECT,LONG*); + OLESTATUS (CALLBACK* QueryBounds)(LPOLEOBJECT,RECT*); + OLESTATUS (CALLBACK* QuerySize)(LPOLEOBJECT,DWORD*); + OLESTATUS (CALLBACK* QueryOpen)(LPOLEOBJECT); + OLESTATUS (CALLBACK* QueryOutOfDate)(LPOLEOBJECT); + OLESTATUS (CALLBACK* QueryReleaseStatus)(LPOLEOBJECT); + OLESTATUS (CALLBACK* QueryReleaseError)(LPOLEOBJECT); + OLE_RELEASE_METHOD (CALLBACK* QueryReleaseMethod)(LPOLEOBJECT); + OLESTATUS (CALLBACK* RequestData)(LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK* ObjectLong)(LPOLEOBJECT,UINT,LONG*); + OLESTATUS (CALLBACK* ChangeData)(LPOLEOBJECT,HANDLE,LPOLECLIENT,BOOL); +#endif +} OLEOBJECTVTBL; +typedef OLEOBJECTVTBL*LPOLEOBJECTVTBL; +#ifndef OLE_INTERNAL +typedef struct _OLEOBJECT { LPOLEOBJECTVTBL lpvtbl; } OLEOBJECT; +#endif +typedef struct _OLECLIENTVTBL { int (CALLBACK* CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); } OLECLIENTVTBL; +typedef OLECLIENTVTBL *LPOLECLIENTVTBL; +typedef struct _OLECLIENT { LPOLECLIENTVTBL lpvtbl; } OLECLIENT; +typedef struct _OLESTREAMVTBL { + DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD); + DWORD (CALLBACK* Put)(LPOLESTREAM,OLE_CONST void*,DWORD); +} OLESTREAMVTBL; +typedef OLESTREAMVTBL *LPOLESTREAMVTBL; +typedef struct _OLESTREAM { LPOLESTREAMVTBL lpstbl; } OLESTREAM; +typedef enum { + OLE_SERVER_MULTI, + OLE_SERVER_SINGLE +} OLE_SERVER_USE; +typedef struct _OLESERVER *LPOLESERVER; +typedef struct _OLESERVERDOC *LPOLESERVERDOC; +typedef struct _OLESERVERVTBL { + OLESTATUS (CALLBACK* Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC*); + OLESTATUS (CALLBACK* Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); + OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); + OLESTATUS (CALLBACK* Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); + OLESTATUS (CALLBACK* Exit)(LPOLESERVER); + OLESTATUS (CALLBACK* Release)(LPOLESERVER); + OLESTATUS (CALLBACK* Execute)(LPOLESERVER,HGLOBAL); +} OLESERVERVTBL; +typedef OLESERVERVTBL *LPOLESERVERVTBL; +typedef struct _OLESERVER { LPOLESERVERVTBL lpvtbl; } OLESERVER; +typedef struct _OLESERVERDOCVTBL { + OLESTATUS (CALLBACK* Save)(LPOLESERVERDOC); + OLESTATUS (CALLBACK* Close)(LPOLESERVERDOC); + OLESTATUS (CALLBACK* SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR); + OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC,OLE_CONST RECT*); + OLESTATUS (CALLBACK* GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT); + OLESTATUS (CALLBACK* Release)(LPOLESERVERDOC); + OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC,OLE_CONST LOGPALETTE*); + OLESTATUS (CALLBACK* Execute)(LPOLESERVERDOC,HGLOBAL); +} OLESERVERDOCVTBL; +typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL; +typedef struct _OLESERVERDOC { LPOLESERVERDOCVTBL lpvtbl; } OLESERVERDOC; +OLESTATUS WINAPI OleDelete(LPOLEOBJECT); +OLESTATUS WINAPI OleRelease(LPOLEOBJECT); +OLESTATUS WINAPI OleSaveToStream(LPOLEOBJECT,LPOLESTREAM); +OLESTATUS WINAPI OleEqual(LPOLEOBJECT,LPOLEOBJECT ); +OLESTATUS WINAPI OleCopyToClipboard(LPOLEOBJECT); +OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT,LPCSTR,LPCSTR); +OLESTATUS WINAPI OleSetTargetDevice(LPOLEOBJECT,HGLOBAL); +OLESTATUS WINAPI OleSetBounds(LPOLEOBJECT,LPCRECT); +OLESTATUS WINAPI OleSetColorScheme(LPOLEOBJECT,const LOGPALETTE*); +OLESTATUS WINAPI OleQueryBounds(LPOLEOBJECT,RECT*); +OLESTATUS WINAPI OleQuerySize(LPOLEOBJECT,DWORD*); +OLESTATUS WINAPI OleDraw(LPOLEOBJECT,HDC,LPCRECT,LPCRECT,HDC); +OLESTATUS WINAPI OleQueryOpen(LPOLEOBJECT); +OLESTATUS WINAPI OleActivate(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPCRECT); +OLESTATUS WINAPI OleExecute(LPOLEOBJECT,HGLOBAL,UINT); +OLESTATUS WINAPI OleClose(LPOLEOBJECT); +OLESTATUS WINAPI OleUpdate(LPOLEOBJECT); +OLESTATUS WINAPI OleReconnect(LPOLEOBJECT); +OLESTATUS WINAPI OleGetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE*); +OLESTATUS WINAPI OleSetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE); +WINAPI void *OleQueryProtocol(LPOLEOBJECT,LPCSTR); +OLESTATUS WINAPI OleQueryReleaseStatus(LPOLEOBJECT); +OLESTATUS WINAPI OleQueryReleaseError(LPOLEOBJECT); +OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod(LPOLEOBJECT); +OLESTATUS WINAPI OleQueryType(LPOLEOBJECT,LONG*); +DWORD WINAPI OleQueryClientVersion(void); +DWORD WINAPI OleQueryServerVersion(void); +OLECLIPFORMAT WINAPI OleEnumFormats(LPOLEOBJECT,OLECLIPFORMAT); +OLESTATUS WINAPI OleGetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*); +OLESTATUS WINAPI OleSetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE); +OLESTATUS WINAPI OleQueryOutOfDate(LPOLEOBJECT); +OLESTATUS WINAPI OleRequestData(LPOLEOBJECT,OLECLIPFORMAT); +OLESTATUS WINAPI OleQueryLinkFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleQueryCreateFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleCreateFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleCreateLinkFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleCreateFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleCreateLinkFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleLoadFromStream(LPOLESTREAM,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*); +OLESTATUS WINAPI OleCreate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleCreateInvisible(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT,BOOL); +OLESTATUS WINAPI OleCreateFromTemplate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT); +OLESTATUS WINAPI OleClone(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*); +OLESTATUS WINAPI OleCopyFromLink(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*); +OLESTATUS WINAPI OleObjectConvert(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*); +OLESTATUS WINAPI OleRename(LPOLEOBJECT,LPCSTR); +OLESTATUS WINAPI OleQueryName(LPOLEOBJECT,LPSTR,UINT*); +OLESTATUS WINAPI OleRevokeObject(LPOLECLIENT); +BOOL WINAPI OleIsDcMeta(HDC); +OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC*); +OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC); +OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR); +OLESTATUS WINAPI OleRevertClientDoc(LHCLIENTDOC); +OLESTATUS WINAPI OleSavedClientDoc(LHCLIENTDOC); +OLESTATUS WINAPI OleEnumObjects(LHCLIENTDOC,LPOLEOBJECT*); +OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER*,HINSTANCE,OLE_SERVER_USE); +OLESTATUS WINAPI OleRevokeServer(LHSERVER); +OLESTATUS WINAPI OleBlockServer(LHSERVER); +OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL*); +OLESTATUS WINAPI OleLockServer(LPOLEOBJECT,LHSERVER*); +OLESTATUS WINAPI OleUnlockServer(LHSERVER); +OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC*); +OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC); +OLESTATUS WINAPI OleRenameServerDoc(LHSERVERDOC,LPCSTR); +OLESTATUS WINAPI OleRevertServerDoc(LHSERVERDOC); +OLESTATUS WINAPI OleSavedServerDoc(LHSERVERDOC); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/ole2.h b/reactos/w32api/include/ole2.h new file mode 100644 index 00000000000..c80a9a958e5 --- /dev/null +++ b/reactos/w32api/include/ole2.h @@ -0,0 +1,110 @@ +#ifndef _OLE2_H +#define _OLE2_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#pragma pack(push,8) +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +#define E_DRAW VIEW_E_DRAW +#define DATA_E_FORMATETC DV_E_FORMATETC +#define OLEIVERB_PRIMARY (0L) +#define OLEIVERB_SHOW (-1L) +#define OLEIVERB_OPEN (-2L) +#define OLEIVERB_HIDE (-3L) +#define OLEIVERB_UIACTIVATE (-4L) +#define OLEIVERB_INPLACEACTIVATE (-5L) +#define OLEIVERB_DISCARDUNDOSTATE (-6L) +#define EMBDHLP_INPROC_HANDLER 0x0000L +#define EMBDHLP_INPROC_SERVER 0x0001L +#define EMBDHLP_CREATENOW 0x00000000L +#define EMBDHLP_DELAYCREATE 0x00010000L +#include + +typedef struct _OLESTREAMVTBL *LPOLESTREAMVTBL; +typedef struct _OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} OLESTREAM,*LPOLESTREAM; +typedef struct _OLESTREAMVTBL { + DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD); + DWORD (CALLBACK* Put)(LPOLESTREAM,const void*,DWORD); +} OLESTREAMVTBL; + +WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*); +WINOLEAPI_(DWORD) OleBuildVersion(void); +WINOLEAPI ReadClassStg(LPSTORAGE,CLSID*); +WINOLEAPI WriteClassStg(LPSTORAGE,REFCLSID); +WINOLEAPI ReadClassStm(LPSTREAM,CLSID*); +WINOLEAPI WriteClassStm(LPSTREAM,REFCLSID); +WINOLEAPI WriteFmtUserTypeStg(LPSTORAGE,CLIPFORMAT,LPOLESTR); +WINOLEAPI ReadFmtUserTypeStg(LPSTORAGE,CLIPFORMAT*,LPOLESTR*); +WINOLEAPI OleInitialize(PVOID); +WINOLEAPI_(void) OleUninitialize(void); +WINOLEAPI OleQueryLinkFromData(LPDATAOBJECT); +WINOLEAPI OleQueryCreateFromData(LPDATAOBJECT); +WINOLEAPI OleCreate(REFCLSID,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); +WINOLEAPI OleCreateFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); +WINOLEAPI OleCreateLinkFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); +WINOLEAPI OleCreateStaticFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); +WINOLEAPI OleCreateLink(LPMONIKER,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); +WINOLEAPI OleCreateLinkToFile(LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); +WINOLEAPI OleCreateFromFile(REFCLSID,LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*); +WINOLEAPI OleLoad(LPSTORAGE,REFIID,LPOLECLIENTSITE,PVOID*); +WINOLEAPI OleSave(LPPERSISTSTORAGE,LPSTORAGE,BOOL); +WINOLEAPI OleLoadFromStream(LPSTREAM,REFIID,PVOID*); +WINOLEAPI OleSaveToStream(LPPERSISTSTREAM,LPSTREAM); +WINOLEAPI OleSetContainedObject(LPUNKNOWN,BOOL); +WINOLEAPI OleNoteObjectVisible(LPUNKNOWN,BOOL); +WINOLEAPI RegisterDragDrop(HWND,LPDROPTARGET); +WINOLEAPI RevokeDragDrop(HWND); +WINOLEAPI DoDragDrop(LPDATAOBJECT,LPDROPSOURCE,DWORD,PDWORD); +WINOLEAPI OleSetClipboard(LPDATAOBJECT); +WINOLEAPI OleGetClipboard(LPDATAOBJECT*); +WINOLEAPI OleFlushClipboard(void); +WINOLEAPI OleIsCurrentClipboard(LPDATAOBJECT); +WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor(HMENU,LPOLEMENUGROUPWIDTHS); +WINOLEAPI OleSetMenuDescriptor(HOLEMENU,HWND,HWND,LPOLEINPLACEFRAME,LPOLEINPLACEACTIVEOBJECT); +WINOLEAPI OleDestroyMenuDescriptor(HOLEMENU); +WINOLEAPI OleTranslateAccelerator(LPOLEINPLACEFRAME,LPOLEINPLACEFRAMEINFO,LPMSG); +WINOLEAPI_(HANDLE) OleDuplicateData(HANDLE,CLIPFORMAT,UINT); +WINOLEAPI OleDraw(LPUNKNOWN,DWORD,HDC,LPCRECT); +WINOLEAPI OleRun(LPUNKNOWN); +WINOLEAPI_(BOOL) OleIsRunning(LPOLEOBJECT); +WINOLEAPI OleLockRunning(LPUNKNOWN,BOOL,BOOL); +WINOLEAPI_(void) ReleaseStgMedium(LPSTGMEDIUM); +WINOLEAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER*); +WINOLEAPI OleCreateDefaultHandler(REFCLSID,LPUNKNOWN,REFIID,PVOID*); +WINOLEAPI OleCreateEmbeddingHelper(REFCLSID,LPUNKNOWN,DWORD,LPCLASSFACTORY,REFIID,PVOID*); +WINOLEAPI_(BOOL) IsAccelerator(HACCEL,int,LPMSG,WORD*); +WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR,BOOL); +WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID,LPOLESTR,BOOL); +WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON,LPOLESTR,LPOLESTR,UINT); +WINOLEAPI OleRegGetUserType(REFCLSID,DWORD,LPOLESTR*); +WINOLEAPI OleRegGetMiscStatus(REFCLSID,DWORD,DWORD*); +WINOLEAPI OleRegEnumFormatEtc (REFCLSID,DWORD,LPENUMFORMATETC*); +WINOLEAPI OleRegEnumVerbs (REFCLSID,LPENUMOLEVERB*); +WINOLEAPI OleConvertOLESTREAMToIStorage(LPOLESTREAM,LPSTORAGE,const DVTARGETDEVICE*); +WINOLEAPI OleConvertIStorageToOLESTREAM(LPSTORAGE,LPOLESTREAM); +WINOLEAPI GetHGlobalFromILockBytes(LPLOCKBYTES,HGLOBAL*); +WINOLEAPI CreateILockBytesOnHGlobal(HGLOBAL,BOOL,LPLOCKBYTES*); +WINOLEAPI GetHGlobalFromStream(LPSTREAM,HGLOBAL*); +WINOLEAPI CreateStreamOnHGlobal(HGLOBAL,BOOL,LPSTREAM*); +WINOLEAPI OleDoAutoConvert(LPSTORAGE,LPCLSID); +WINOLEAPI OleGetAutoConvert(REFCLSID,LPCLSID); +WINOLEAPI OleSetAutoConvert(REFCLSID,REFCLSID); +WINOLEAPI GetConvertStg(LPSTORAGE); +WINOLEAPI SetConvertStg(LPSTORAGE,BOOL); +WINOLEAPI OleConvertIStorageToOLESTREAMEx(LPSTORAGE,CLIPFORMAT,LONG,LONG,DWORD,LPSTGMEDIUM,LPOLESTREAM); +WINOLEAPI OleConvertOLESTREAMToIStorageEx(LPOLESTREAM,LPSTORAGE,CLIPFORMAT*,LONG*,LONG*,DWORD*,LPSTGMEDIUM); +#ifdef __cplusplus +} +#endif +#pragma pack(pop) +#endif diff --git a/reactos/w32api/include/ole2ver.h b/reactos/w32api/include/ole2ver.h new file mode 100644 index 00000000000..667003a8253 --- /dev/null +++ b/reactos/w32api/include/ole2ver.h @@ -0,0 +1,8 @@ +#ifndef _OLE2VER_H +#define _OLE2VER_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif +#define rmm 23 +#define rup 639 +#endif diff --git a/reactos/w32api/include/oleacc.h b/reactos/w32api/include/oleacc.h new file mode 100644 index 00000000000..e78949820f8 --- /dev/null +++ b/reactos/w32api/include/oleacc.h @@ -0,0 +1,219 @@ +#ifndef _OLEACC_H +#define _OLEACC_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define DISPID_ACC_PARENT (-5000) +#define DISPID_ACC_CHILDCOUNT (-5001) +#define DISPID_ACC_CHILD (-5002) + +#define DISPID_ACC_NAME (-5003) +#define DISPID_ACC_VALUE (-5004) +#define DISPID_ACC_DESCRIPTION (-5005) +#define DISPID_ACC_ROLE (-5006) +#define DISPID_ACC_STATE (-5007) +#define DISPID_ACC_HELP (-5008) +#define DISPID_ACC_HELPTOPIC (-5009) +#define DISPID_ACC_KEYBOARDSHORTCUT (-5010) +#define DISPID_ACC_FOCUS (-5011) +#define DISPID_ACC_SELECTION (-5012) +#define DISPID_ACC_DEFAULTACTION (-5013) + +#define DISPID_ACC_SELECT (-5014) +#define DISPID_ACC_LOCATION (-5015) +#define DISPID_ACC_NAVIGATE (-5016) +#define DISPID_ACC_HITTEST (-5017) +#define DISPID_ACC_DODEFAULTACTION (-5018) + +#define NAVDIR_DOWN 2 +#define NAVDIR_FIRSTCHILD 7 +#define NAVDIR_LASTCHILD 8 +#define NAVDIR_LEFT 3 +#define NAVDIR_NEXT 5 +#define NAVDIR_PREVIOUS 6 +#define NAVDIR_RIGHT 4 +#define NAVDIR_UP 1 + +#define ROLE_SYSTEM_ALERT 8 +#define ROLE_SYSTEM_ANIMATION 54 +#define ROLE_SYSTEM_APPLICATION 14 +#define ROLE_SYSTEM_BORDER 19 +#define ROLE_SYSTEM_BUTTONDROPDOWN 56 +#define ROLE_SYSTEM_BUTTONDROPDOWNGRID 58 +#define ROLE_SYSTEM_BUTTONMENU 57 +#define ROLE_SYSTEM_CARET 7 +#define ROLE_SYSTEM_CELL 29 +#define ROLE_SYSTEM_CHARACTER 32 +#define ROLE_SYSTEM_CHART 17 +#define ROLE_SYSTEM_CHECKBUTTON 44 +#define ROLE_SYSTEM_CLIENT 10 +#define ROLE_SYSTEM_CLOCK 61 +#define ROLE_SYSTEM_COLUMN 27 +#define ROLE_SYSTEM_COLUMNHEADER 25 +#define ROLE_SYSTEM_COMBOBOX 46 +#define ROLE_SYSTEM_CURSOR 6 +#define ROLE_SYSTEM_DIAGRAM 53 +#define ROLE_SYSTEM_DIAL 49 +#define ROLE_SYSTEM_DIALOG 18 +#define ROLE_SYSTEM_DOCUMENT 15 +#define ROLE_SYSTEM_DROPLIST 47 +#define ROLE_SYSTEM_EQUATION 55 +#define ROLE_SYSTEM_GRAPHIC 40 +#define ROLE_SYSTEM_GRIP 4 +#define ROLE_SYSTEM_GROUPING 20 +#define ROLE_SYSTEM_HELPBALLOON 31 +#define ROLE_SYSTEM_HOTKEYFIELD 50 +#define ROLE_SYSTEM_INDICATOR 39 +#define ROLE_SYSTEM_LINK 30 +#define ROLE_SYSTEM_LIST 33 +#define ROLE_SYSTEM_LISTITEM 34 +#define ROLE_SYSTEM_MENUBAR 2 +#define ROLE_SYSTEM_MENUITEM 12 +#define ROLE_SYSTEM_MENUPOPUP 11 +#define ROLE_SYSTEM_OUTLINE 35 +#define ROLE_SYSTEM_OUTLINEITEM 36 +#define ROLE_SYSTEM_PAGETAB 37 +#define ROLE_SYSTEM_PAGETABLIST 60 +#define ROLE_SYSTEM_PANE 16 +#define ROLE_SYSTEM_PROGRESSBAR 48 +#define ROLE_SYSTEM_PROPERTYPAGE 38 +#define ROLE_SYSTEM_PUSHBUTTON 43 +#define ROLE_SYSTEM_RADIOBUTTON 45 +#define ROLE_SYSTEM_ROW 28 +#define ROLE_SYSTEM_ROWHEADER 26 +#define ROLE_SYSTEM_SCROLLBAR 3 +#define ROLE_SYSTEM_SEPARATOR 21 +#define ROLE_SYSTEM_SLIDER 51 +#define ROLE_SYSTEM_SOUND 5 +#define ROLE_SYSTEM_SPINBUTTON 52 +#define ROLE_SYSTEM_STATICTEXT 41 +#define ROLE_SYSTEM_STATUSBAR 23 +#define ROLE_SYSTEM_TABLE 24 +#define ROLE_SYSTEM_TEXT 42 +#define ROLE_SYSTEM_TITLEBAR 1 +#define ROLE_SYSTEM_TOOLBAR 22 +#define ROLE_SYSTEM_TOOLTIP 13 +#define ROLE_SYSTEM_WHITESPACE 59 +#define ROLE_SYSTEM_WINDOW 9 + +#define STATE_SYSTEM_UNAVAILABLE 0x00000001 +#define STATE_SYSTEM_SELECTED 0x00000002 +#define STATE_SYSTEM_FOCUSED 0x00000004 +#define STATE_SYSTEM_PRESSED 0x00000008 +#define STATE_SYSTEM_CHECKED 0x00000010 +#define STATE_SYSTEM_MIXED 0x00000020 +#define STATE_SYSTEM_READONLY 0x00000040 +#define STATE_SYSTEM_HOTTRACKED 0x00000080 +#define STATE_SYSTEM_DEFAULT 0x00000100 +#define STATE_SYSTEM_EXPANDED 0x00000200 +#define STATE_SYSTEM_COLLAPSED 0x00000400 +#define STATE_SYSTEM_BUSY 0x00000800 +#define STATE_SYSTEM_FLOATING 0x00001000 +#define STATE_SYSTEM_MARQUEED 0x00002000 +#define STATE_SYSTEM_ANIMATED 0x00004000 +#define STATE_SYSTEM_INVISIBLE 0x00008000 +#define STATE_SYSTEM_OFFSCREEN 0x00010000 +#define STATE_SYSTEM_SIZEABLE 0x00020000 +#define STATE_SYSTEM_MOVEABLE 0x00040000 +#define STATE_SYSTEM_SELFVOICING 0x00080000 +#define STATE_SYSTEM_FOCUSABLE 0x00100000 +#define STATE_SYSTEM_SELECTABLE 0x00200000 +#define STATE_SYSTEM_LINKED 0x00400000 +#define STATE_SYSTEM_TRAVERSED 0x00800000 +#define STATE_SYSTEM_MULTISELECTABLE 0x01000000 +#define STATE_SYSTEM_EXTSELECTABLE 0x02000000 +#define STATE_SYSTEM_ALERT_LOW 0x04000000 +#define STATE_SYSTEM_ALERT_MEDIUM 0x08000000 +#define STATE_SYSTEM_ALERT_HIGH 0x10000000 +#define STATE_SYSTEM_VALID 0x1fffffff + +typedef enum tagSELFLAG +{ + SELFLAG_NONE = 0, + SELFLAG_TAKEFOCUS = 1, + SELFLAG_TAKESELECTION = 2, + SELFLAG_EXTENDSELECTION = 4, + SELFLAG_ADDSELECTION = 8, + SELFLAG_REMOVESELECTION = 16 +} SELFLAG; + +#define SELFLAG_VALID 0x0000001F + +/* DEFINE_GUID(LIBID_Accessibility, 0x1ea4dbf0, 0x3c3b,0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); */ +/* DEFINE_GUID(IID_IAccessible, 0x618736e0, 0x3c3d,0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); */ +EXTERN_C const IID LIBID_Accessibility; +EXTERN_C const IID IID_IAccessible; + +#undef INTERFACE +#define INTERFACE IAccessible +DECLARE_INTERFACE_(IAccessible, IDispatch) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; + STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; + STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; + STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; + + STDMETHOD(get_accParent)(THIS_ IDispatch**) PURE; + STDMETHOD(get_accChildCount)(THIS_ long*) PURE; + STDMETHOD(get_accChild)(THIS_ VARIANT, IDispatch **) PURE; + STDMETHOD(get_accName)(THIS_ VARIANT, BSTR*) PURE; + STDMETHOD(get_accValue)(THIS_ VARIANT, BSTR*) PURE; + STDMETHOD(get_accDescription)(THIS_ VARIANT, BSTR*) PURE; + STDMETHOD(get_accRole)(THIS_ VARIANT, VARIANT*) PURE; + STDMETHOD(get_accState)(THIS_ VARIANT, VARIANT*) PURE; + STDMETHOD(get_accHelp)(THIS_ VARIANT, BSTR*) PURE; + STDMETHOD(get_accHelpTopic)(THIS_ BSTR*, VARIANT, long*) PURE; + STDMETHOD(get_accKeyboardShortcut)(THIS_ VARIANT, BSTR*) PURE; + STDMETHOD(get_accFocus)(THIS_ VARIANT*) PURE; + STDMETHOD(get_accSelection)(THIS_ VARIANT*) PURE; + STDMETHOD(get_accDefaultAction)(THIS_ VARIANT, BSTR*) PURE; + + STDMETHOD(accSelect)(THIS_ long, VARIANT) PURE; + STDMETHOD(accLocation)(THIS_ long*, long*, long*, long*, VARIANT) PURE; + STDMETHOD(accNavigate)(THIS_ long, VARIANT, VARIANT*) PURE; + STDMETHOD(accHitTest)(THIS_ long, long, VARIANT*) PURE; + STDMETHOD(accDoDefaultAction)(THIS_ VARIANT) PURE; + + STDMETHOD(put_accName)(THIS_ VARIANT, BSTR) PURE; + STDMETHOD(put_accValue)(THIS_ VARIANT, BSTR) PURE; +}; +typedef IAccessible* LPACCESSIBLE; + +STDAPI AccessibleChildren(IAccessible*,LONG,LONG,VARIANT*,LONG*); +STDAPI AccessibleObjectFromEvent(HWND,DWORD,DWORD,IAccessible*,VARIANT*); +STDAPI AccessibleObjectFromPoint(POINT,IAccessible**,VARIANT*); +STDAPI AccessibleObjectFromWindow(HWND,DWORD,REFIID,void**); +STDAPI CreateStdAccessibleObject(HWND,LONG,REFIID,void**); +STDAPI CreateStdAccessibleProxyA(HWND,LPCSTR,LONG,REFIID,void**); +STDAPI CreateStdAccessibleProxyW(HWND,LPCWSTR,LONG,REFIID,void**); +void WINAPI GetOleaccVersionInfo(DWORD*,DWORD*); +UINT WINAPI GetRoleTextA(DWORD,LPSTR,UINT); +UINT WINAPI GetRoleTextW(DWORD,LPWSTR,UINT); +UINT WINAPI GetStateTextA(DWORD,LPSTR,UINT); +UINT WINAPI GetStateTextW(DWORD,LPWSTR,UINT); +LRESULT WINAPI LresultFromObject(REFIID,WPARAM,LPUNKNOWN); +STDAPI ObjectFromLresult(LRESULT,REFIID,WPARAM,void**); +STDAPI WindowFromAccessibleObject(IAccessible*,HWND*); + +#ifdef UNICODE +#define CreateStdAccessibleProxy CreateStdAccessibleProxyW +#define GetRoleText GetRoleTextW +#define GetStateText GetStateTextW +#else +#define CreateStdAccessibleProxy CreateStdAccessibleProxyA +#define GetRoleText GetRoleTextA +#define GetStateText GetStateTextA +#endif + +#ifdef __cplusplus +} +#endif +#endif /* _OLEACC_H */ diff --git a/reactos/w32api/include/oleauto.h b/reactos/w32api/include/oleauto.h new file mode 100644 index 00000000000..d28067c7af1 --- /dev/null +++ b/reactos/w32api/include/oleauto.h @@ -0,0 +1,261 @@ +#ifndef _OLEAUTO_H +#define _OLEAUTO_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#pragma pack(push,8) +#define WINOLEAUTAPI STDAPI +#define WINOLEAUTAPI_(type) STDAPI_(type) +#define STDOLE_MAJORVERNUM 1 +#define STDOLE_MINORVERNUM 0 +#define STDOLE_LCID 0 +#define VARIANT_NOVALUEPROP 0x01 +#define VARIANT_ALPHABOOL 0x02 +#define VARIANT_NOUSEOVERRIDE 0x04 +#define VARIANT_LOCALBOOL 0x08 +#define VAR_TIMEVALUEONLY 0x0001 +#define VAR_DATEVALUEONLY 0x0002 +#define MEMBERID_NIL DISPID_UNKNOWN +#define ID_DEFAULTINST (-2) +#define DISPATCH_METHOD 1 +#define DISPATCH_PROPERTYGET 2 +#define DISPATCH_PROPERTYPUT 4 +#define DISPATCH_PROPERTYPUTREF 8 +#define LHashValOfName(l,n) LHashValOfNameSys(SYS_WIN32,l,n) +#define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h))) +#define IsHashValCompatible(h1,h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) +#define ACTIVEOBJECT_STRONG 0 +#define ACTIVEOBJECT_WEAK 1 +#ifdef NONAMELESSUNION +#define V_UNION(X,Y) ((X)->n1.n2.n3.Y) +#define V_VT(X) ((X)->n1.n2.vt) +#else +#define V_UNION(X,Y) ((X)->Y) +#define V_VT(X) ((X)->vt) +#endif +#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_I2REF(X) V_UNION(X,piVal) +#define V_I4(X) V_UNION(X,lVal) +#define V_I4REF(X) V_UNION(X,plVal) +#define V_I8(X) V_UNION(X,hVal) +#define V_I8REF(X) V_UNION(X,phVal) +#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) V_UNION(X,decVal) +#define V_DECIMALREF(X) V_UNION(X,pdecVal) +#define V_I1(X) V_UNION(X,cVal) + +#include + +typedef enum tagREGKIND { + REGKIND_DEFAULT, + REGKIND_REGISTER, + REGKIND_NONE +} REGKIND; +typedef struct tagPARAMDATA { + OLECHAR *szName; + VARTYPE vt; +} PARAMDATA,*LPPARAMDATA; +typedef struct tagMETHODDATA { + OLECHAR *szName; + PARAMDATA *ppdata; + DISPID dispid; + UINT iMeth; + CALLCONV cc; + UINT cArgs; + WORD wFlags; + VARTYPE vtReturn; +} METHODDATA,*LPMETHODDATA; +typedef struct tagINTERFACEDATA { + METHODDATA *pmethdata; + UINT cMembers; +} INTERFACEDATA,*LPINTERFACEDATA; + +WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR*); +WINOLEAUTAPI_(int) SysReAllocString(BSTR*,const OLECHAR*); +WINOLEAUTAPI_(BSTR) SysAllocStringLen(const OLECHAR*,unsigned int); +WINOLEAUTAPI_(int) SysReAllocStringLen(BSTR*,const OLECHAR*,unsigned int); +WINOLEAUTAPI_(void) SysFreeString(BSTR); +WINOLEAUTAPI_(unsigned int) SysStringLen(BSTR); +WINOLEAUTAPI_(unsigned int) SysStringByteLen(BSTR); +WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(const char*,unsigned int); +WINOLEAUTAPI_(int) DosDateTimeToVariantTime(unsigned short,unsigned short,double*); +WINOLEAUTAPI_(int) VariantTimeToDosDateTime(double,unsigned short*,unsigned short*); +WINOLEAUTAPI_(int) VariantTimeToSystemTime(double,LPSYSTEMTIME); +WINOLEAUTAPI_(int) SystemTimeToVariantTime(LPSYSTEMTIME, double*); +WINOLEAUTAPI SafeArrayAllocDescriptor(unsigned int,SAFEARRAY**); +WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY*); +WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreate(VARTYPE,unsigned int,SAFEARRAYBOUND*); +WINOLEAUTAPI SafeArrayDestroyDescriptor(SAFEARRAY*); +WINOLEAUTAPI SafeArrayDestroyData(SAFEARRAY*); +WINOLEAUTAPI SafeArrayDestroy(SAFEARRAY*); +WINOLEAUTAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*); +WINOLEAUTAPI_(unsigned int) SafeArrayGetDim(SAFEARRAY*); +WINOLEAUTAPI_(unsigned int) SafeArrayGetElemsize(SAFEARRAY*); +WINOLEAUTAPI SafeArrayGetUBound(SAFEARRAY*,unsigned int,long*); +WINOLEAUTAPI SafeArrayGetLBound(SAFEARRAY*,unsigned int,long*); +WINOLEAUTAPI SafeArrayLock(SAFEARRAY*); +WINOLEAUTAPI SafeArrayUnlock(SAFEARRAY*); +WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY*,void**); +WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY*); +WINOLEAUTAPI SafeArrayGetElement(SAFEARRAY*,long*,void*); +WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY*,long*,void*); +WINOLEAUTAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**); +WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY*,long*,void**); +WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVector(VARTYPE,LONG,UINT); +WINOLEAUTAPI_(void) VariantInit(VARIANTARG*); +WINOLEAUTAPI VariantClear(VARIANTARG*); +WINOLEAUTAPI VariantCopy(VARIANTARG*,VARIANTARG*); +WINOLEAUTAPI VariantCopyInd(VARIANT*,VARIANTARG*); +WINOLEAUTAPI VariantChangeType(VARIANTARG*,VARIANTARG*,unsigned short,VARTYPE); +WINOLEAUTAPI VariantChangeTypeEx(VARIANTARG*,VARIANTARG*,LCID,unsigned short,VARTYPE); +WINOLEAUTAPI VarUI1FromI2(short,unsigned char*); +WINOLEAUTAPI VarUI1FromI4(long,unsigned char*); +WINOLEAUTAPI VarUI1FromR4(float,unsigned char*); +WINOLEAUTAPI VarUI1FromR8(double,unsigned char*); +WINOLEAUTAPI VarUI1FromCy(CY,unsigned char*); +WINOLEAUTAPI VarUI1FromDate(DATE,unsigned char*); +WINOLEAUTAPI VarUI1FromStr(OLECHAR*,LCID,unsigned long,unsigned char*); +WINOLEAUTAPI VarUI1FromDisp(LPDISPATCH*,LCID,unsigned char*); +WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL,unsigned char*); +WINOLEAUTAPI VarI2FromUI1(unsigned char,short*); +WINOLEAUTAPI VarI2FromI4(long,short*); +WINOLEAUTAPI VarI2FromR4(float,short*); +WINOLEAUTAPI VarI2FromR8(double,short*); +WINOLEAUTAPI VarI2FromCy(CY cyIn,short*); +WINOLEAUTAPI VarI2FromDate(DATE,short*); +WINOLEAUTAPI VarI2FromStr(OLECHAR*,LCID,unsigned long,short*); +WINOLEAUTAPI VarI2FromDisp(LPDISPATCH*,LCID,short*); +WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL,short*); +WINOLEAUTAPI VarI4FromUI1(unsigned char,long*); +WINOLEAUTAPI VarI4FromI2(short,long*); +WINOLEAUTAPI VarI4FromR4(float,long*); +WINOLEAUTAPI VarI4FromR8(double,long*); +WINOLEAUTAPI VarI4FromCy(CY,long*); +WINOLEAUTAPI VarI4FromDate(DATE,long*); +WINOLEAUTAPI VarI4FromStr(OLECHAR*,LCID,unsigned long,long*); +WINOLEAUTAPI VarI4FromDisp(LPDISPATCH*,LCID,long*); +WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL,long*); +WINOLEAUTAPI VarR4FromUI1(unsigned char,float*); +WINOLEAUTAPI VarR4FromI2(short,float*); +WINOLEAUTAPI VarR4FromI4(long,float*); +WINOLEAUTAPI VarR4FromR8(double,float*); +WINOLEAUTAPI VarR4FromCy(CY,float*); +WINOLEAUTAPI VarR4FromDate(DATE,float*); +WINOLEAUTAPI VarR4FromStr(OLECHAR*,LCID,unsigned long,float*); +WINOLEAUTAPI VarR4FromDisp(LPDISPATCH*,LCID,float*); +WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL,float*); +WINOLEAUTAPI VarR8FromUI1(unsigned char,double*); +WINOLEAUTAPI VarR8FromI2(short,double*); +WINOLEAUTAPI VarR8FromI4(long,double*); +WINOLEAUTAPI VarR8FromR4(float,double*); +WINOLEAUTAPI VarR8FromCy(CY,double*); +WINOLEAUTAPI VarR8FromDate(DATE,double*); +WINOLEAUTAPI VarR8FromStr(OLECHAR*,LCID,unsigned long,double*); +WINOLEAUTAPI VarR8FromDisp(LPDISPATCH*,LCID,double*); +WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL,double*); +WINOLEAUTAPI VarR8FromDec(DECIMAL*,double*); +WINOLEAUTAPI VarDateFromUI1(unsigned char,DATE*); +WINOLEAUTAPI VarDateFromI2(short,DATE*); +WINOLEAUTAPI VarDateFromI4(long,DATE*); +WINOLEAUTAPI VarDateFromR4(float,DATE*); +WINOLEAUTAPI VarDateFromR8(double,DATE*); +WINOLEAUTAPI VarDateFromCy(CY,DATE*); +WINOLEAUTAPI VarDateFromStr(OLECHAR*,LCID,unsigned long,DATE*); +WINOLEAUTAPI VarDateFromDisp(LPDISPATCH*,LCID,DATE*); +WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL,DATE*); +WINOLEAUTAPI VarCyFromUI1(unsigned char,CY*); +WINOLEAUTAPI VarCyFromI2(short,CY*); +WINOLEAUTAPI VarCyFromI4(long,CY*); +WINOLEAUTAPI VarCyFromR4(float,CY*); +WINOLEAUTAPI VarCyFromR8(double,CY*); +WINOLEAUTAPI VarCyFromDate(DATE,CY*); +WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,unsigned long,CY*); +WINOLEAUTAPI VarCyFromDisp(LPDISPATCH*,LCID,CY*); +WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL,CY*); +WINOLEAUTAPI VarBstrFromUI1(unsigned char,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromI2(short,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromI4(long,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromR4(float,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromR8(double,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromCy(CY,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromDate(DATE,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromDisp(LPDISPATCH*,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL,LCID,unsigned long,BSTR*); +WINOLEAUTAPI VarBoolFromUI1(unsigned char,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromI2(short,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromI4(long,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromR4(float,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromR8(double,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromDate(DATE,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromCy(CY,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromStr(OLECHAR*,LCID,unsigned long,VARIANT_BOOL*); +WINOLEAUTAPI VarBoolFromDisp(LPDISPATCH*,LCID,VARIANT_BOOL*); +WINOLEAUTAPI VarDecFromR8(double,DECIMAL*); +WINOLEAUTAPI_(ULONG) LHashValOfNameSysA(SYSKIND,LCID,const char*); +WINOLEAUTAPI_(ULONG) LHashValOfNameSys(SYSKIND,LCID,const OLECHAR*); +WINOLEAUTAPI LoadTypeLib(const OLECHAR*,LPTYPELIB*); +WINOLEAUTAPI LoadTypeLibEx(LPCOLESTR,REGKIND,LPTYPELIB*); +WINOLEAUTAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,LPTYPELIB*); +WINOLEAUTAPI QueryPathOfRegTypeLib(REFGUID,unsigned short,unsigned short,LCID,LPBSTR); +WINOLEAUTAPI RegisterTypeLib(LPTYPELIB,OLECHAR*,OLECHAR*); +WINOLEAUTAPI UnRegisterTypeLib(REFGUID,WORD,WORD,LCID,SYSKIND); +WINOLEAUTAPI CreateTypeLib(SYSKIND,const OLECHAR*,LPCREATETYPELIB*); +WINOLEAUTAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*); +WINOLEAUTAPI DispGetIDsOfNames(LPTYPEINFO,OLECHAR**,UINT,DISPID*); +WINOLEAUTAPI DispInvoke(void*,LPTYPEINFO,DISPID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*); +WINOLEAUTAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,LPTYPEINFO*); +WINOLEAUTAPI CreateStdDispatch(IUnknown*,void*,LPTYPEINFO,IUnknown**); +WINOLEAUTAPI RegisterActiveObject(IUnknown*,REFCLSID,DWORD,DWORD*); +WINOLEAUTAPI RevokeActiveObject(DWORD,void*); +WINOLEAUTAPI GetActiveObject(REFCLSID,void*,IUnknown**); +WINOLEAUTAPI SetErrorInfo(unsigned long,LPERRORINFO); +WINOLEAUTAPI GetErrorInfo(unsigned long,LPERRORINFO*); +WINOLEAUTAPI CreateErrorInfo(LPCREATEERRORINFO*); +WINOLEAUTAPI_(unsigned long) OaBuildVersion(void); +WINOLEAUTAPI VectorFromBstr (BSTR, SAFEARRAY **); +WINOLEAUTAPI BstrFromVector (SAFEARRAY *, BSTR *); + +WINOLEAUTAPI VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); +WINOLEAUTAPI VarSub(LPVARIANT, LPVARIANT, LPVARIANT); +WINOLEAUTAPI VarMul(LPVARIANT, LPVARIANT, LPVARIANT); +WINOLEAUTAPI VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); +#pragma pack(pop) + +#endif diff --git a/reactos/w32api/include/olectl.h b/reactos/w32api/include/olectl.h new file mode 100644 index 00000000000..f0b86bc321f --- /dev/null +++ b/reactos/w32api/include/olectl.h @@ -0,0 +1,323 @@ +#ifndef _OLECTL_H +#define _OLECTL_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n) +#define CTL_E_ILLEGALFUNCTIONCALL STD_CTL_SCODE(5) +#define CTL_E_OVERFLOW STD_CTL_SCODE(6) +#define CTL_E_OUTOFMEMORY STD_CTL_SCODE(7) +#define CTL_E_DIVISIONBYZERO STD_CTL_SCODE(11) +#define CTL_E_OUTOFSTRINGSPACE STD_CTL_SCODE(14) +#define CTL_E_OUTOFSTACKSPACE STD_CTL_SCODE(28) +#define CTL_E_BADFILENAMEORNUMBER STD_CTL_SCODE(52) +#define CTL_E_FILENOTFOUND STD_CTL_SCODE(53) +#define CTL_E_BADFILEMODE STD_CTL_SCODE(54) +#define CTL_E_FILEALREADYOPEN STD_CTL_SCODE(55) +#define CTL_E_DEVICEIOERROR STD_CTL_SCODE(57) +#define CTL_E_FILEALREADYEXISTS STD_CTL_SCODE(58) +#define CTL_E_BADRECORDLENGTH STD_CTL_SCODE(59) +#define CTL_E_DISKFULL STD_CTL_SCODE(61) +#define CTL_E_BADRECORDNUMBER STD_CTL_SCODE(63) +#define CTL_E_BADFILENAME STD_CTL_SCODE(64) +#define CTL_E_TOOMANYFILES STD_CTL_SCODE(67) +#define CTL_E_DEVICEUNAVAILABLE STD_CTL_SCODE(68) +#define CTL_E_PERMISSIONDENIED STD_CTL_SCODE(70) +#define CTL_E_DISKNOTREADY STD_CTL_SCODE(71) +#define CTL_E_PATHFILEACCESSERROR STD_CTL_SCODE(75) +#define CTL_E_PATHNOTFOUND STD_CTL_SCODE(76) +#define CTL_E_INVALIDPATTERNSTRING STD_CTL_SCODE(93) +#define CTL_E_INVALIDUSEOFNULL STD_CTL_SCODE(94) +#define CTL_E_INVALIDFILEFORMAT STD_CTL_SCODE(321) +#define CTL_E_INVALIDPROPERTYVALUE STD_CTL_SCODE(380) +#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381) +#define CTL_E_SETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(382) +#define CTL_E_SETNOTSUPPORTED STD_CTL_SCODE(383) +#define CTL_E_NEEDPROPERTYARRAYINDEX STD_CTL_SCODE(385) +#define CTL_E_SETNOTPERMITTED STD_CTL_SCODE(387) +#define CTL_E_GETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(393) +#define CTL_E_GETNOTSUPPORTED STD_CTL_SCODE(394) +#define CTL_E_PROPERTYNOTFOUND STD_CTL_SCODE(422) +#define CTL_E_INVALIDCLIPBOARDFORMAT STD_CTL_SCODE(460) +#define CTL_E_INVALIDPICTURE STD_CTL_SCODE(481) +#define CTL_E_PRINTERERROR STD_CTL_SCODE(482) +#define CTL_E_CANTSAVEFILETOTEMP STD_CTL_SCODE(735) +#define CTL_E_SEARCHTEXTNOTFOUND STD_CTL_SCODE(744) +#define CTL_E_REPLACEMENTSTOOLONG STD_CTL_SCODE(746) +#define CUSTOM_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n) +#define CTL_E_CUSTOM_FIRST CUSTOM_CTL_SCODE(600) +#define CLASS_E_NOTLICENSED (CLASSFACTORY_E_FIRST+2) +#define CONNECT_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200) +#define CONNECT_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F) +#define CONNECT_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200) +#define CONNECT_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F) +#define CONNECT_E_NOCONNECTION (CONNECT_E_FIRST+0) +#define CONNECT_E_ADVISELIMIT (CONNECT_E_FIRST+1) +#define CONNECT_E_CANNOTCONNECT (CONNECT_E_FIRST+2) +#define CONNECT_E_OVERRIDDEN (CONNECT_E_FIRST+3) +#define SELFREG_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200) +#define SELFREG_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F) +#define SELFREG_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200) +#define SELFREG_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F) +#define SELFREG_E_TYPELIB (SELFREG_E_FIRST+0) +#define SELFREG_E_CLASS (SELFREG_E_FIRST+1) +#define PERPROP_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200) +#define PERPROP_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F) +#define PERPROP_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200) +#define PERPROP_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F) +#define PERPROP_E_NOPAGEAVAILABLE PERPROP_E_FIRST +#define OLEMISC_RECOMPOSEONRESIZE 0x1 +#define OLEMISC_ONLYICONIC 0x2 +#define OLEMISC_INSERTNOTREPLACE 0x4 +#define OLEMISC_STATIC 0x8 +#define OLEMISC_CANTLINKINSIDE 0x10 +#define OLEMISC_CANLINKBYOLE1 0x20 +#define OLEMISC_ISLINKOBJECT 0x40 +#define OLEMISC_INSIDEOUT 0x80 +#define OLEMISC_ACTIVATEWHENVISIBLE 0x100 +#define OLEMISC_RENDERINGISDEVICEINDEPENDENT 0x200 +#define OLEMISC_INVISIBLEATRUNTIME 0x400 +#define OLEMISC_ALWAYSRUN 0x800 +#define OLEMISC_ACTSLIKEBUTTON 0x1000 +#define OLEMISC_ACTSLIKELABEL 0x2000 +#define OLEMISC_NOUIACTIVATE 0x4000 +#define OLEMISC_ALIGNABLE 0x8000 +#define OLEMISC_SIMPLEFRAME 0x10000 +#define OLEMISC_SETCLIENTSITEFIRST 0x20000 +#define OLEMISC_IMEMODE 0x40000 +#define OLEMISC_IGNOREACTIVATEWHENVISIBLE 0x80000 +#define OLEMISC_WANTSTOMENUMERGE 0x100000 +#define OLEMISC_SUPPORTSMULTILEVELUNDO 0x200000 +#define OLEIVERB_PROPERTIES (-7) +#define VT_STREAMED_PROPSET 73 +#define VT_STORED_PROPSET 74 +#define VT_BLOB_PROPSET 75 +#define VT_VERBOSE_ENUM 76 +#define VT_COLOR VT_I4 +#define VT_XPOS_PIXELS VT_I4 +#define VT_YPOS_PIXELS VT_I4 +#define VT_XSIZE_PIXELS VT_I4 +#define VT_YSIZE_PIXELS VT_I4 +#define VT_XPOS_HIMETRIC VT_I4 +#define VT_YPOS_HIMETRIC VT_I4 +#define VT_XSIZE_HIMETRIC VT_I4 +#define VT_YSIZE_HIMETRIC VT_I4 +#define VT_TRISTATE VT_I2 +#define VT_OPTEXCLUSIVE VT_BOOL +#define VT_FONT VT_DISPATCH +#define VT_PICTURE VT_DISPATCH +#define VT_HANDLE VT_I4 +#define OCM__BASE (WM_USER+0x1c00) +#define OCM_COMMAND (OCM__BASE+WM_COMMAND) +#define OCM_CTLCOLORBTN (OCM__BASE+WM_CTLCOLORBTN) +#define OCM_CTLCOLOREDIT (OCM__BASE+WM_CTLCOLOREDIT) +#define OCM_CTLCOLORDLG (OCM__BASE+WM_CTLCOLORDLG) +#define OCM_CTLCOLORLISTBOX (OCM__BASE+WM_CTLCOLORLISTBOX) +#define OCM_CTLCOLORMSGBOX (OCM__BASE+WM_CTLCOLORMSGBOX) +#define OCM_CTLCOLORSCROLLBAR (OCM__BASE+WM_CTLCOLORSCROLLBAR) +#define OCM_CTLCOLORSTATIC (OCM__BASE+WM_CTLCOLORSTATIC) +#define OCM_DRAWITEM (OCM__BASE+WM_DRAWITEM) +#define OCM_MEASUREITEM (OCM__BASE+WM_MEASUREITEM) +#define OCM_DELETEITEM (OCM__BASE+WM_DELETEITEM) +#define OCM_VKEYTOITEM (OCM__BASE+WM_VKEYTOITEM) +#define OCM_CHARTOITEM (OCM__BASE+WM_CHARTOITEM) +#define OCM_COMPAREITEM (OCM__BASE+WM_COMPAREITEM) +#define OCM_HSCROLL (OCM__BASE+WM_HSCROLL) +#define OCM_VSCROLL (OCM__BASE+WM_VSCROLL) +#define OCM_PARENTNOTIFY (OCM__BASE+WM_PARENTNOTIFY) +#define OCM_NOTIFY (OCM__BASE+WM_NOTIFY) +#define CTRLINFO_EATS_RETURN 1 +#define CTRLINFO_EATS_ESCAPE 2 +#define XFORMCOORDS_POSITION 1 +#define XFORMCOORDS_SIZE 2 +#define XFORMCOORDS_HIMETRICTOCONTAINER 4 +#define XFORMCOORDS_CONTAINERTOHIMETRIC 8 +#define GUIDKIND_DEFAULT_SOURCE_DISP_IID 1 +#define PROPPAGESTATUS_DIRTY 1 +#define PROPPAGESTATUS_VALIDATE 2 +#define FONTSIZE(n) {n##0000,0} +#define PICTURE_SCALABLE 1 +#define PICTURE_TRANSPARENT 2 +#define PICTYPE_UNINITIALIZED (-1) +#define PICTYPE_NONE 0 +#define PICTYPE_BITMAP 1 +#define PICTYPE_METAFILE 2 +#define PICTYPE_ICON 3 +#define PICTYPE_ENHMETAFILE 4 +#define DISPID_AUTOSIZE (-500) +#define DISPID_BACKCOLOR (-501) +#define DISPID_BACKSTYLE (-502) +#define DISPID_BORDERCOLOR (-503) +#define DISPID_BORDERSTYLE (-504) +#define DISPID_BORDERWIDTH (-505) +#define DISPID_DRAWMODE (-507) +#define DISPID_DRAWSTYLE (-508) +#define DISPID_DRAWWIDTH (-509) +#define DISPID_FILLCOLOR (-510) +#define DISPID_FILLSTYLE (-511) +#define DISPID_FONT (-512) +#define DISPID_FORECOLOR (-513) +#define DISPID_ENABLED (-514) +#define DISPID_HWND (-515) +#define DISPID_TABSTOP (-516) +#define DISPID_TEXT (-517) +#define DISPID_CAPTION (-518) +#define DISPID_BORDERVISIBLE (-519) +#define DISPID_APPEARANCE (-520) +#define DISPID_MOUSEPOINTER (-521) +#define DISPID_MOUSEICON (-522) +#define DISPID_PICTURE (-523) +#define DISPID_VALID (-524) +#define DISPID_REFRESH (-550) +#define DISPID_DOCLICK (-551) +#define DISPID_ABOUTBOX (-552) +#define DISPID_CLICK (-600) +#define DISPID_DBLCLICK (-601) +#define DISPID_KEYDOWN (-602) +#define DISPID_KEYPRESS (-603) +#define DISPID_KEYUP (-604) +#define DISPID_MOUSEDOWN (-605) +#define DISPID_MOUSEMOVE (-606) +#define DISPID_MOUSEUP (-607) +#define DISPID_ERROREVENT (-608) +#define DISPID_AMBIENT_BACKCOLOR (-701) +#define DISPID_AMBIENT_DISPLAYNAME (-702) +#define DISPID_AMBIENT_FONT (-703) +#define DISPID_AMBIENT_FORECOLOR (-704) +#define DISPID_AMBIENT_LOCALEID (-705) +#define DISPID_AMBIENT_MESSAGEREFLECT (-706) +#define DISPID_AMBIENT_SCALEUNITS (-707) +#define DISPID_AMBIENT_TEXTALIGN (-708) +#define DISPID_AMBIENT_USERMODE (-709) +#define DISPID_AMBIENT_UIDEAD (-710) +#define DISPID_AMBIENT_SHOWGRABHANDLES (-711) +#define DISPID_AMBIENT_SHOWHATCHING (-712) +#define DISPID_AMBIENT_DISPLAYASDEFAULT (-713) +#define DISPID_AMBIENT_SUPPORTSMNEMONICS (-714) +#define DISPID_AMBIENT_AUTOCLIP (-715) +#define DISPID_AMBIENT_APPEARANCE (-716) +#define DISPID_AMBIENT_CODEPAGE (-725) +#define DISPID_AMBIENT_PALETTE (-726) +#define DISPID_AMBIENT_CHARSET (-727) +#define DISPID_AMBIENT_RIGHTTOLEFT (-732) +#define DISPID_AMBIENT_TOPTOBOTTOM (-733) + +#define DISPID_FONT_NAME 0 +#define DISPID_FONT_SIZE 2 +#define DISPID_FONT_BOLD 3 +#define DISPID_FONT_ITALIC 4 +#define DISPID_FONT_UNDER 5 +#define DISPID_FONT_STRIKE 6 +#define DISPID_FONT_WEIGHT 7 +#define DISPID_FONT_CHARSET 8 +#define DISPID_PICT_HANDLE 0 +#define DISPID_PICT_HPAL 2 +#define DISPID_PICT_TYPE 3 +#define DISPID_PICT_WIDTH 4 +#define DISPID_PICT_HEIGHT 5 +#define DISPID_PICT_RENDER 6 + +typedef interface IOleControl *LPOLECONTROL; +typedef interface IOleControlSite *LPOLECONTROLSITE; +typedef interface ISimpleFrameSite *LPSIMPLEFRAMESITE; +typedef interface IPersistPropertyBag *LPPERSISTPROPERTYBAG; +typedef interface IPersistStreamInit *LPPERSISTSTREAMINIT; +typedef interface IPersistMemory *LPPERSISTMEMORY; +typedef interface IPropertyNotifySink* LPPROPERTYNOTIFYSINK; +typedef interface IProvideClassInfo *LPPROVIDECLASSINFO; +typedef interface IProvideClassInfo2 *LPPROVIDECLASSINFO2; +typedef interface IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER; +typedef interface IClassFactory2 *LPCLASSFACTORY2; +typedef interface ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; +typedef interface IPerPropertyBrowsing *LPPERPROPERTYBROWSING; +typedef interface IPropertyPage *LPPROPERTYPAGE; +typedef interface IPropertyPage2 *LPPROPERTYPAGE2; + +typedef interface IPicture *LPPICTURE; +typedef interface IPictureDisp *LPPICTUREDISP; +typedef long OLE_XPOS_PIXELS; +typedef long OLE_YPOS_PIXELS; +typedef long OLE_XSIZE_PIXELS; +typedef long OLE_YSIZE_PIXELS; +typedef float OLE_XPOS_CONTAINER; +typedef float OLE_YPOS_CONTAINER; +typedef float OLE_XSIZE_CONTAINER; + +typedef VARIANT_BOOL OLE_OPTEXCLUSIVE; +typedef VARIANT_BOOL OLE_CANCELBOOL; +typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; + +#pragma pack(push,8) +typedef enum { triUnchecked,triChecked1,triGray } OLE_TRISTATE; +typedef struct tagOCPFIPARAMS { + ULONG cbStructSize; + HWND hWndOwner; + int x; + int y; + LPCOLESTR lpszCaption; + ULONG cObjects; + LPUNKNOWN *lplpUnk; + ULONG cPages; + CLSID *lpPages; + LCID lcid; + DISPID dispidInitialProperty; +} OCPFIPARAMS,*LPOCPFIPARAMS; +typedef struct tagFONTDESC { + UINT cbSizeofstruct; + LPOLESTR lpstrName; + CY cySize; + SHORT sWeight; + SHORT sCharset; + BOOL fItalic; + BOOL fUnderline; + BOOL fStrikethrough; +} FONTDESC,*LPFONTDESC; +typedef struct tagPICTDESC { + UINT cbSizeofstruct; + UINT picType; + _ANONYMOUS_UNION union { + struct { + HBITMAP hbitmap; + HPALETTE hpal; + } bmp; + struct { + HMETAFILE hmeta; + int xExt; + int yExt; + } wmf; + struct { + HICON hicon; + } icon; + struct { + HENHMETAFILE hemf; + } emf; + } DUMMYUNIONNAME; +} PICTDESC,*LPPICTDESC; +#pragma pack(pop) + +STDAPI DllRegisterServer(void); +STDAPI DllUnregisterServer(void); +STDAPI OleCreateFontIndirect(LPFONTDESC,REFIID,PVOID*); +STDAPI OleCreatePictureIndirect(LPPICTDESC,REFIID,BOOL,PVOID*); +STDAPI OleCreatePropertyFrame(HWND,UINT,UINT,LPCOLESTR,ULONG,LPUNKNOWN*,ULONG,LPCLSID,LCID,DWORD,PVOID); +STDAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); +STDAPI_(HCURSOR) OleIconToCursor(HINSTANCE,HICON); +STDAPI OleLoadPicture(LPSTREAM,LONG,BOOL,REFIID,PVOID*); +STDAPI OleLoadPictureEx(LPSTREAM,LONG,BOOL,REFIID,DWORD,DWORD,DWORD,LPVOID*); +STDAPI OleLoadPicturePath(LPOLESTR,LPUNKNOWN,DWORD,OLE_COLOR,REFIID,LPVOID*); +STDAPI OleLoadPictureFile(VARIANT,LPDISPATCH*); +STDAPI OleLoadPictureFileEx(VARIANT,DWORD,DWORD,DWORD,LPDISPATCH*); +STDAPI OleSavePictureFile(LPDISPATCH,BSTR); +STDAPI OleTranslateColor(OLE_COLOR,HPALETTE,COLORREF*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/olectlid.h b/reactos/w32api/include/olectlid.h new file mode 100644 index 00000000000..73e935cca08 --- /dev/null +++ b/reactos/w32api/include/olectlid.h @@ -0,0 +1,114 @@ +#ifndef _OLECTLID_H +#define _OLECTLID_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern const GUID IID_IDispatch; +extern const GUID IID_IPropertyNotifySink; +extern const GUID IID_IClassFactory2; +extern const GUID IID_IProvideClassInfo; +extern const GUID IID_IProvideClassInfo2; +extern const GUID IID_IConnectionPointContainer; +extern const GUID IID_IEnumConnectionPoints; +extern const GUID IID_IConnectionPoint; +extern const GUID IID_IEnumConnections; +extern const GUID IID_IOleControl; +extern const GUID IID_IOleControlSite; +extern const GUID IID_ISimpleFrameSite; +extern const GUID IID_IPersistStreamInit; +extern const GUID IID_IPersistMemory; +extern const GUID IID_IPersistPropertyBag; +extern const GUID IID_IPropertyBag; +extern const GUID IID_IErrorLog; +extern const GUID IID_IPropertyFrame; +extern const GUID IID_ISpecifyPropertyPages; +extern const GUID IID_IPerPropertyBrowsing; +extern const GUID IID_IPropertyPageSite; +extern const GUID IID_IPropertyPage; +extern const GUID IID_IPropertyPage2; +extern const GUID CLSID_CFontPropPage; +extern const GUID CLSID_CColorPropPage; +extern const GUID CLSID_CPicturePropPage; +extern const GUID CLSID_PersistPropset; +extern const GUID CLSID_ConvertVBX; +extern const GUID CLSID_StdFont; +extern const GUID CLSID_StdPicture; +extern const GUID IID_IFont; +extern const GUID IID_IFontDisp; +extern const GUID IID_IPicture; +extern const GUID IID_IPictureDisp; +extern const GUID GUID_HIMETRIC; +extern const GUID GUID_COLOR; +extern const GUID GUID_XPOSPIXEL; +extern const GUID GUID_YPOSPIXEL; +extern const GUID GUID_XSIZEPIXEL; +extern const GUID GUID_YSIZEPIXEL; +extern const GUID GUID_XPOS; +extern const GUID GUID_YPOS; +extern const GUID GUID_XSIZE; +extern const GUID GUID_YSIZE; +extern const GUID GUID_TRISTATE; +extern const GUID GUID_OPTIONVALUEEXCLUSIVE; +extern const GUID GUID_CHECKVALUEEXCLUSIVE; +extern const GUID GUID_FONTNAME; +extern const GUID GUID_FONTSIZE; +extern const GUID GUID_FONTBOLD; +extern const GUID GUID_FONTITALIC; +extern const GUID GUID_FONTUNDERSCORE; +extern const GUID GUID_FONTSTRIKETHROUGH; +extern const GUID GUID_HANDLE; +extern const GUID IID_IEnumUnknown; +extern const GUID IID_IEnumString; +extern const GUID IID_IEnumMoniker; +extern const GUID IID_IEnumFORMATETC; +extern const GUID IID_IEnumOLEVERB; +extern const GUID IID_IEnumSTATDATA; +extern const GUID IID_IEnumSTATSTG; +extern const GUID IID_IEnumGeneric; +extern const GUID IID_IEnumHolder; +extern const GUID IID_IEnumCallback; +extern const GUID IID_IPersistStream; +extern const GUID IID_IPersistStorage; +extern const GUID IID_IPersistFile; +extern const GUID IID_IPersist; +extern const GUID IID_IViewObject; +extern const GUID IID_IDataObject; +extern const GUID IID_IAdviseSink; +extern const GUID IID_IDataAdviseHolder; +extern const GUID IID_IOleAdviseHolder; +extern const GUID IID_IOleObject; +extern const GUID IID_IOleInPlaceObject; +extern const GUID IID_IOleWindow; +extern const GUID IID_IOleInPlaceUIWindow; +extern const GUID IID_IOleInPlaceFrame; +extern const GUID IID_IOleInPlaceActiveObject; +extern const GUID IID_IOleClientSite; +extern const GUID IID_IOleInPlaceSite; +extern const GUID IID_IParseDisplayName; +extern const GUID IID_IOleContainer; +extern const GUID IID_IOleItemContainer; +extern const GUID IID_IOleLink; +extern const GUID IID_IOleCache; +extern const GUID IID_IOleManager; +extern const GUID IID_IOlePresObj; +extern const GUID IID_IDropSource; +extern const GUID IID_IDropTarget; +extern const GUID IID_IDebug; +extern const GUID IID_IDebugStream; +extern const GUID IID_IAdviseSink2; +extern const GUID IID_IRunnableObject; +extern const GUID IID_IViewObject2; +extern const GUID IID_IOleCache2; +extern const GUID IID_IOleCacheControl; +extern const GUID CLSID_Picture_Metafile; +extern const GUID CLSID_Picture_Dib; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/oledlg.h b/reactos/w32api/include/oledlg.h new file mode 100644 index 00000000000..11dd88b9f1e --- /dev/null +++ b/reactos/w32api/include/oledlg.h @@ -0,0 +1,935 @@ +#ifndef _OLEDLG_H +#define _OLEDLG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include +#include +#include +/* #include */ +#include +#include +#define PS_MAXLINKTYPES 8 +#define OLESTDDELIM TEXT("\\") +#define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP") +#define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG") +#define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE") +#define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON") +#define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG") +#define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT") +#define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE") +#define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL") +#define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN") +#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG") +#define IDC_OLEUIHELP 99 +#define IDC_IO_CREATENEW 2100 +#define IDC_IO_CREATEFROMFILE 2101 +#define IDC_IO_LINKFILE 2102 +#define IDC_IO_OBJECTTYPELIST 2103 +#define IDC_IO_DISPLAYASICON 2104 +#define IDC_IO_CHANGEICON 2105 +#define IDC_IO_FILE 2106 +#define IDC_IO_FILEDISPLAY 2107 +#define IDC_IO_RESULTIMAGE 2108 +#define IDC_IO_RESULTTEXT 2109 +#define IDC_IO_ICONDISPLAY 2110 +#define IDC_IO_OBJECTTYPETEXT 2111 +#define IDC_IO_FILETEXT 2112 +#define IDC_IO_FILETYPE 2113 +#define IDC_IO_INSERTCONTROL 2114 +#define IDC_IO_ADDCONTROL 2115 +#define IDC_IO_CONTROLTYPELIST 2116 +#define IDC_PS_PASTE 500 +#define IDC_PS_PASTELINK 501 +#define IDC_PS_SOURCETEXT 502 +#define IDC_PS_PASTELIST 503 +#define IDC_PS_PASTELINKLIST 504 +#define IDC_PS_DISPLAYLIST 505 +#define IDC_PS_DISPLAYASICON 506 +#define IDC_PS_ICONDISPLAY 507 +#define IDC_PS_CHANGEICON 508 +#define IDC_PS_RESULTIMAGE 509 +#define IDC_PS_RESULTTEXT 510 +#define IDC_CI_GROUP 120 +#define IDC_CI_CURRENT 121 +#define IDC_CI_CURRENTICON 122 +#define IDC_CI_DEFAULT 123 +#define IDC_CI_DEFAULTICON 124 +#define IDC_CI_FROMFILE 125 +#define IDC_CI_FROMFILEEDIT 126 +#define IDC_CI_ICONLIST 127 +#define IDC_CI_LABEL 128 +#define IDC_CI_LABELEDIT 129 +#define IDC_CI_BROWSE 130 +#define IDC_CI_ICONDISPLAY 131 +#define IDC_CV_OBJECTTYPE 150 +#define IDC_CV_DISPLAYASICON 152 +#define IDC_CV_CHANGEICON 153 +#define IDC_CV_ACTIVATELIST 154 +#define IDC_CV_CONVERTTO 155 +#define IDC_CV_ACTIVATEAS 156 +#define IDC_CV_RESULTTEXT 157 +#define IDC_CV_CONVERTLIST 158 +#define IDC_CV_ICONDISPLAY 165 +#define IDC_EL_CHANGESOURCE 201 +#define IDC_EL_AUTOMATIC 202 +#define IDC_EL_CANCELLINK 209 +#define IDC_EL_UPDATENOW 210 +#define IDC_EL_OPENSOURCE 211 +#define IDC_EL_MANUAL 212 +#define IDC_EL_LINKSOURCE 216 +#define IDC_EL_LINKTYPE 217 +#define IDC_EL_LINKSLISTBOX 206 +#define IDC_EL_COL1 220 +#define IDC_EL_COL2 221 +#define IDC_EL_COL3 222 +#define IDC_BZ_RETRY 600 +#define IDC_BZ_ICON 601 +#define IDC_BZ_MESSAGE1 602 +#define IDC_BZ_SWITCHTO 604 +#define IDC_UL_METER 1029 +#define IDC_UL_STOP 1030 +#define IDC_UL_PERCENT 1031 +#define IDC_UL_PROGRESS 1032 +#define IDC_PU_LINKS 900 +#define IDC_PU_TEXT 901 +#define IDC_PU_CONVERT 902 +#define IDC_PU_ICON 908 +#define IDC_GP_OBJECTNAME 1009 +#define IDC_GP_OBJECTTYPE 1010 +#define IDC_GP_OBJECTSIZE 1011 +#define IDC_GP_CONVERT 1013 +#define IDC_GP_OBJECTICON 1014 +#define IDC_GP_OBJECTLOCATION 1022 +#define IDC_VP_PERCENT 1000 +#define IDC_VP_CHANGEICON 1001 +#define IDC_VP_EDITABLE 1002 +#define IDC_VP_ASICON 1003 +#define IDC_VP_RELATIVE 1005 +#define IDC_VP_SPIN 1006 +#define IDC_VP_SCALETXT 1034 +#define IDC_VP_ICONDISPLAY 1021 +#define IDC_VP_RESULTIMAGE 1033 +#define IDC_LP_OPENSOURCE 1006 +#define IDC_LP_UPDATENOW 1007 +#define IDC_LP_BREAKLINK 1008 +#define IDC_LP_LINKSOURCE 1012 +#define IDC_LP_CHANGESOURCE 1015 +#define IDC_LP_AUTOMATIC 1016 +#define IDC_LP_MANUAL 1017 +#define IDC_LP_DATE 1018 +#define IDC_LP_TIME 1019 +#define IDD_INSERTOBJECT 1000 +#define IDD_CHANGEICON 1001 +#define IDD_CONVERT 1002 +#define IDD_PASTESPECIAL 1003 +#define IDD_EDITLINKS 1004 +#define IDD_BUSY 1006 +#define IDD_UPDATELINKS 1007 +#define IDD_CHANGESOURCE 1009 +#define IDD_INSERTFILEBROWSE 1010 +#define IDD_CHANGEICONBROWSE 1011 +#define IDD_CONVERTONLY 1012 +#define IDD_CHANGESOURCE4 1013 +#define IDD_GNRLPROPS 1100 +#define IDD_VIEWPROPS 1101 +#define IDD_LINKPROPS 1102 +#define IDD_CANNOTUPDATELINK 1008 +#define IDD_LINKSOURCEUNAVAILABLE 1020 +#define IDD_SERVERNOTFOUND 1023 +#define IDD_OUTOFMEMORY 1024 +#define IDD_SERVERNOTREGW 1021 +#define IDD_LINKTYPECHANGEDW 1022 +#define IDD_SERVERNOTREGA 1025 +#define IDD_LINKTYPECHANGEDA 1026 +#define ID_BROWSE_CHANGEICON 1 +#define ID_BROWSE_INSERTFILE 2 +#define ID_BROWSE_ADDCONTROL 3 +#define ID_BROWSE_CHANGESOURCE 4 +#define OLEUI_FALSE 0 +#define OLEUI_SUCCESS 1 +#define OLEUI_OK 1 +#define OLEUI_CANCEL 2 +#define OLEUI_ERR_STANDARDMIN 100 +#define OLEUI_ERR_STRUCTURENULL 101 +#define OLEUI_ERR_STRUCTUREINVALID 102 +#define OLEUI_ERR_CBSTRUCTINCORRECT 103 +#define OLEUI_ERR_HWNDOWNERINVALID 104 +#define OLEUI_ERR_LPSZCAPTIONINVALID 105 +#define OLEUI_ERR_LPFNHOOKINVALID 106 +#define OLEUI_ERR_HINSTANCEINVALID 107 +#define OLEUI_ERR_LPSZTEMPLATEINVALID 108 +#define OLEUI_ERR_HRESOURCEINVALID 109 +#define OLEUI_ERR_FINDTEMPLATEFAILURE 110 +#define OLEUI_ERR_LOADTEMPLATEFAILURE 111 +#define OLEUI_ERR_DIALOGFAILURE 112 +#define OLEUI_ERR_LOCALMEMALLOC 113 +#define OLEUI_ERR_GLOBALMEMALLOC 114 +#define OLEUI_ERR_LOADSTRING 115 +#define OLEUI_ERR_OLEMEMALLOC 116 +#define OLEUI_ERR_STANDARDMAX 116 +#define OPF_OBJECTISLINK 1 +#define OPF_NOFILLDEFAULT 2 +#define OPF_SHOWHELP 4 +#define OPF_DISABLECONVERT 8 +#define OLEUI_OPERR_SUBPROPNULL OLEUI_ERR_STANDARDMAX +#define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3) +#define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4) +#define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5) +#define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6) +#define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7) +#define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8) +#define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9) +#define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+10) +#define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11) +#define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12) +#define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13) +#define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14) +#define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15) +#define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16) +#define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17) +#define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18) +#define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19) +#define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20) +#define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21) +#define OLEUI_QUERY_GETCLASSID 65280 +#define OLEUI_QUERY_LINKBROKEN 65281 +#define IOF_SHOWHELP 1 +#define IOF_SELECTCREATENEW 2 +#define IOF_SELECTCREATEFROMFILE 4 +#define IOF_CHECKLINK 8 +#define IOF_CHECKDISPLAYASICON 16 +#define IOF_CREATENEWOBJECT 32 +#define IOF_CREATEFILEOBJECT 64 +#define IOF_CREATELINKOBJECT 128 +#define IOF_DISABLELINK 256 +#define IOF_VERIFYSERVERSEXIST 512 +#define IOF_DISABLEDISPLAYASICON 1024 +#define IOF_HIDECHANGEICON 2048 +#define IOF_SHOWINSERTCONTROL 4096 +#define IOF_SELECTCREATECONTROL 8192 +#define OLEUI_IOERR_LPSZFILEINVALID OLEUI_ERR_STANDARDMAX +#define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3) +#define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4) +#define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5) +#define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6) +#define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7) +#define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8) +#define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9) +#define PSF_SHOWHELP 1 +#define PSF_SELECTPASTE 2 +#define PSF_SELECTPASTELINK 4 +#define PSF_CHECKDISPLAYASICON 8 +#define PSF_DISABLEDISPLAYASICON 16 +#define PSF_HIDECHANGEICON 32 +#define PSF_STAYONCLIPBOARDCHANGE 64 +#define PSF_NOREFRESHDATAOBJECT 128 +#define OLEUI_IOERR_SRCDATAOBJECTINVALID OLEUI_ERR_STANDARDMAX +#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3) +#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4) +#define OLEUI_ELERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX +#define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1) +#define ELF_SHOWHELP 1 +#define ELF_DISABLEUPDATENOW 2 +#define ELF_DISABLEOPENSOURCE 4 +#define ELF_DISABLECHANGESOURCE 8 +#define ELF_DISABLECANCELLINK 16 +#define CIF_SHOWHELP 1 +#define CIF_SELECTCURRENT 2 +#define CIF_SELECTDEFAULT 4 +#define CIF_SELECTFROMFILE 8 +#define CIF_USEICONEXE 16 +#define OLEUI_CIERR_MUSTHAVECLSID OLEUI_ERR_STANDARDMAX +#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2) +#define CF_SHOWHELPBUTTON 1 +#define CF_SETCONVERTDEFAULT 2 +#define CF_SETACTIVATEDEFAULT 4 +#define CF_SELECTCONVERTTO 8 +#define CF_SELECTACTIVATEAS 16 +#define CF_DISABLEDISPLAYASICON 32 +#define CF_DISABLEACTIVATEAS 64 +#define CF_HIDECHANGEICON 128 +#define CF_CONVERTONLY 256 +#define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3) +#define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4) +#define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5) +#define BZ_DISABLECANCELBUTTON 1 +#define BZ_DISABLESWITCHTOBUTTON 2 +#define BZ_DISABLERETRYBUTTON 4 +#define BZ_NOTRESPONDINGDIALOG 8 +#define OLEUI_BZERR_HTASKINVALID OLEUI_ERR_STANDARDMAX +#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3) +#define CSF_SHOWHELP 1 +#define CSF_VALIDSOURCE 2 +#define CSF_ONLYGETSOURCE 4 +#define CSF_EXPLORER 8 +#define OLEUI_CSERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX +#define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1) +#define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2) +#define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3) +#define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4) +#define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5) +#define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6) +#define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+7) +#define VPF_SELECTRELATIVE 1 +#define VPF_DISABLERELATIVE 2 +#define VPF_DISABLESCALE 4 + +#ifndef RC_INVOKED +#pragma pack(push, 8) +typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM); +typedef struct tagOLEUIINSERTOBJECTW { + 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; +} OLEUIINSERTOBJECTW,*POLEUIINSERTOBJECTW,*LPOLEUIINSERTOBJECTW; +typedef struct tagOLEUIINSERTOBJECTA { + 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; +} OLEUIINSERTOBJECTA,*POLEUIINSERTOBJECTA,*LPOLEUIINSERTOBJECTA; +STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); +STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); +typedef enum tagOLEUIPASTEFLAG { + 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 +} OLEUIPASTEFLAG; +typedef struct tagOLEUIPASTEENTRYW { + FORMATETC fmtetc; + LPCWSTR lpstrFormatName; + LPCWSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} OLEUIPASTEENTRYW,*POLEUIPASTEENTRYW,*LPOLEUIPASTEENTRYW; +typedef struct tagOLEUIPASTEENTRYA { + FORMATETC fmtetc; + LPCSTR lpstrFormatName; + LPCSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} OLEUIPASTEENTRYA,*POLEUIPASTEENTRYA,*LPOLEUIPASTEENTRYA; +typedef struct tagOLEUIPASTESPECIALW { + 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; +} OLEUIPASTESPECIALW,*POLEUIPASTESPECIALW,*LPOLEUIPASTESPECIALW; +typedef struct tagOLEUIPASTESPECIALA { + 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; +} OLEUIPASTESPECIALA,*POLEUIPASTESPECIALA,*LPOLEUIPASTESPECIALA; +#undef INTERFACE +#define INTERFACE IOleUILinkContainerW +DECLARE_INTERFACE_(IOleUILinkContainerW, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE; + STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE; + STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE; + STDMETHOD(SetLinkSource) (THIS_ DWORD, LPWSTR,ULONG,PULONG,BOOL) PURE; + STDMETHOD(GetLinkSource) (THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE; + STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE; + STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE; + STDMETHOD(CancelLink) (THIS_ DWORD) PURE; +}; +typedef IOleUILinkContainerW *LPOLEUILINKCONTAINERW; +#undef INTERFACE +#define INTERFACE IOleUILinkContainerA +DECLARE_INTERFACE_(IOleUILinkContainerA, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD) PURE; + STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE; + STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE; + STDMETHOD(SetLinkSource) (THIS_ DWORD, LPSTR,ULONG,PULONG,BOOL) PURE; + STDMETHOD(GetLinkSource) (THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE; + STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE; + STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE; + STDMETHOD(CancelLink) (THIS_ DWORD) PURE; +}; +typedef IOleUILinkContainerA *LPOLEUILINKCONTAINERA; +typedef struct tagOLEUIEDITLINKSW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; +} OLEUIEDITLINKSW,*POLEUIEDITLINKSW,*LPOLEUIEDITLINKSW; +typedef struct tagOLEUIEDITLINKSA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; +} OLEUIEDITLINKSA,*POLEUIEDITLINKSA,*LPOLEUIEDITLINKSA; +typedef struct tagOLEUICHANGEICONW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + WCHAR szIconExe[MAX_PATH]; + int cchIconExe; +} OLEUICHANGEICONW,*POLEUICHANGEICONW,*LPOLEUICHANGEICONW; +typedef struct tagOLEUICHANGEICONA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + CHAR szIconExe[MAX_PATH]; + int cchIconExe; +} OLEUICHANGEICONA,*POLEUICHANGEICONA,*LPOLEUICHANGEICONA; +typedef struct tagOLEUICONVERTW { + 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; +} OLEUICONVERTW,*POLEUICONVERTW,*LPOLEUICONVERTW; +typedef struct tagOLEUICONVERTA { + 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; +} OLEUICONVERTA,*POLEUICONVERTA,*LPOLEUICONVERTA; +typedef struct tagOLEUIBUSYW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} OLEUIBUSYW,*POLEUIBUSYW,*LPOLEUIBUSYW; +typedef struct tagOLEUIBUSYA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} OLEUIBUSYA,*POLEUIBUSYA,*LPOLEUIBUSYA; +typedef struct tagOLEUICHANGESOURCEW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEW* lpOFN; + DWORD dwReserved1[4]; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; + DWORD dwLink; + LPWSTR lpszDisplayName; + ULONG nFileLength; + LPWSTR lpszFrom; + LPWSTR lpszTo; +} OLEUICHANGESOURCEW,*POLEUICHANGESOURCEW,*LPOLEUICHANGESOURCEW; +typedef struct tagOLEUICHANGESOURCEA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEA *lpOFN; + DWORD dwReserved1[4]; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; + DWORD dwLink; + LPSTR lpszDisplayName; + ULONG nFileLength; + LPSTR lpszFrom; + LPSTR lpszTo; +} OLEUICHANGESOURCEA,*POLEUICHANGESOURCEA,*LPOLEUICHANGESOURCEA; +#undef INTERFACE +#define INTERFACE IOleUIObjInfoW +DECLARE_INTERFACE_(IOleUIObjInfoW, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPWSTR*,LPWSTR*,LPWSTR*,LPWSTR*) PURE; + STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE; + STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE; + STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE; + STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE; +}; +typedef IOleUIObjInfoW *LPOLEUIOBJINFOW; +#undef INTERFACE +#define INTERFACE IOleUIObjInfoA +DECLARE_INTERFACE_(IOleUIObjInfoA, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPSTR*,LPSTR*,LPSTR*,LPSTR*) PURE; + STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE; + STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE; + STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE; + STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE; +}; +typedef IOleUIObjInfoA *LPOLEUIOBJINFOA; +#undef INTERFACE +#define INTERFACE IOleUILinkInfoW +DECLARE_INTERFACE_(IOleUILinkInfoW, IOleUILinkContainerW) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE; + STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE; + STDMETHOD(SetLinkSource)(THIS_ DWORD,LPWSTR,ULONG,PULONG,BOOL) PURE; + STDMETHOD(GetLinkSource)(THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE; + STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE; + STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE; + STDMETHOD(CancelLink)(THIS_ DWORD) PURE; + STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE; +}; +typedef IOleUILinkInfoW *LPOLEUILINKINFOW; +#undef INTERFACE +#define INTERFACE IOleUILinkInfoA +DECLARE_INTERFACE_(IOleUILinkInfoA, IOleUILinkContainerA) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE; + STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE; + STDMETHOD(SetLinkSource)(THIS_ DWORD,LPSTR,ULONG,PULONG,BOOL) PURE; + STDMETHOD(GetLinkSource)(THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE; + STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE; + STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE; + STDMETHOD(CancelLink)(THIS_ DWORD) PURE; + STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE; +}; +typedef IOleUILinkInfoA* LPOLEUILINKINFOA; +struct tagOLEUIOBJECTPROPSW; +struct tagOLEUIOBJECTPROPSA; +typedef struct tagOLEUIGNRLPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSW* lpOP; +} OLEUIGNRLPROPSW,*POLEUIGNRLPROPSW,*LPOLEUIGNRLPROPSW; +typedef struct tagOLEUIGNRLPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSA* lpOP; +} OLEUIGNRLPROPSA,*POLEUIGNRLPROPSA,*LPOLEUIGNRLPROPSA; +typedef struct tagOLEUIVIEWPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSW* lpOP; + int nScaleMin; + int nScaleMax; +} OLEUIVIEWPROPSW,*POLEUIVIEWPROPSW,*LPOLEUIVIEWPROPSW; +typedef struct tagOLEUIVIEWPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSA *lpOP; + int nScaleMin; + int nScaleMax; +} OLEUIVIEWPROPSA,*POLEUIVIEWPROPSA,*LPOLEUIVIEWPROPSA; +typedef struct tagOLEUILINKPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSW *lpOP; +} OLEUILINKPROPSW, *POLEUILINKPROPSW,* LPOLEUILINKPROPSW; +typedef struct tagOLEUILINKPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD dwReserved1[2]; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD dwReserved2[3]; + struct tagOLEUIOBJECTPROPSA* lpOP; +} OLEUILINKPROPSA,*POLEUILINKPROPSA,*LPOLEUILINKPROPSA; +typedef struct tagOLEUIOBJECTPROPSW { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERW lpPS; + DWORD dwObject; + LPOLEUIOBJINFOW lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOW lpLinkInfo; + LPOLEUIGNRLPROPSW lpGP; + LPOLEUIVIEWPROPSW lpVP; + LPOLEUILINKPROPSW lpLP; +} OLEUIOBJECTPROPSW,*POLEUIOBJECTPROPSW,*LPOLEUIOBJECTPROPSW; +typedef struct tagOLEUIOBJECTPROPSA { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERA lpPS; + DWORD dwObject; + LPOLEUIOBJINFOA lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOA lpLinkInfo; + LPOLEUIGNRLPROPSA lpGP; + LPOLEUIVIEWPROPSA lpVP; + LPOLEUILINKPROPSA lpLP; +} OLEUIOBJECTPROPSA,*POLEUIOBJECTPROPSA,*LPOLEUIOBJECTPROPSA; + +STDAPI_(BOOL) OleUIAddVerbMenuW(LPOLEOBJECT,LPCWSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*); +STDAPI_(BOOL) OleUIAddVerbMenuA(LPOLEOBJECT,LPCSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*); +STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW); +STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA); +STDAPI_(BOOL) OleUICanConvertOrActivateAs(REFCLSID,BOOL,WORD); +STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW); +STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA); +STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW); +STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA); +STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW); +STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA); +STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW); +STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA); +STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); +STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); +STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); +STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); +int OleUIPromptUserW(int,HWND,...); +int OleUIPromptUserA(int,HWND,...); +STDAPI_(BOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW,HWND,LPWSTR,int); +STDAPI_(BOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA,HWND,LPSTR,int); + +#ifdef UNICODE +#define IDD_SERVERNOTREG IDD_SERVERNOTREGW +#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDW +#define OleUIUpdateLinks OleUIUpdateLinksW +#define OleUIAddVerbMenu OleUIAddVerbMenuW +#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW +#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW +#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW +#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW +#define OleUIObjectProperties OleUIObjectPropertiesW +#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW +#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW +#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW +#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW +#define OleUIInsertObject OleUIInsertObjectW +#define OleUIPromptUser OleUIPromptUserW +#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW +#define OLEUIPASTEENTRY OLEUIPASTEENTRYW +#define POLEUIPASTEENTRY POLEUIPASTEENTRYW +#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW +#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW +#define OLEUIPASTESPECIAL OLEUIPASTESPECIALW +#define POLEUIPASTESPECIAL POLEUIPASTESPECIALW +#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW +#define OleUIPasteSpecial OleUIPasteSpecialW +#define IOleUILinkContainer IOleUILinkContainerW +#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW +#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW +#define OLEUIEDITLINKS OLEUIEDITLINKSW +#define POLEUIEDITLINKS POLEUIEDITLINKSW +#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW +#define OleUIEditLinks OleUIEditLinksW +#define tagOLEUICHANGEICON tagOLEUICHANGEICONW +#define OLEUICHANGEICON OLEUICHANGEICONW +#define POLEUICHANGEICON POLEUICHANGEICONW +#define LPOLEUICHANGEICON LPOLEUICHANGEICONW +#define OleUIChangeIcon OleUIChangeIconW +#define tagOLEUICONVERT tagOLEUICONVERTW +#define OLEUICONVERT OLEUICONVERTW +#define POLEUICONVERT POLEUICONVERTW +#define LPOLEUICONVERT LPOLEUICONVERTW +#define OleUIConvert OleUIConvertW +#define tagOLEUIBUSY tagOLEUIBUSYW +#define OLEUIBUSY OLEUIBUSYW +#define POLEUIBUSY POLEUIBUSYW +#define LPOLEUIBUSY LPOLEUIBUSYW +#define OleUIBusy OleUIBusyW +#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW +#define OLEUICHANGESOURCE OLEUICHANGESOURCEW +#define POLEUICHANGESOURCE POLEUICHANGESOURCEW +#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW +#define OleUIChangeSource OleUIChangeSourceW +#define IOleUIObjInfo IOleUIObjInfoW +#define LPOLEUIOBJINFO LPOLEUIOBJINFOW +#define IOleUILinkInfo IOleUILinkInfoW +#define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl +#define LPOLEUILINKINFO LPOLEUILINKINFOW +#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW +#define OLEUIGNRLPROPS OLEUIGNRLPROPSW +#define POLEUIGNRLPROPS POLEUIGNRLPROPSW +#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW +#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW +#define OLEUIVIEWPROPS OLEUIVIEWPROPSW +#define POLEUIVIEWPROPS POLEUIVIEWPROPSW +#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW +#define tagOLEUILINKPROPS tagOLEUILINKPROPSW +#define OLEUILINKPROPS OLEUILINKPROPSW +#define POLEUILINKPROPS POLEUILINKPROPSW +#define LPOLEUILINKPROPS LPOLEUILINKPROPSW +#else +#define IDD_SERVERNOTREG IDD_SERVERNOTREGA +#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDA +#define OleUIUpdateLinks OleUIUpdateLinksA +#define OleUIAddVerbMenu OleUIAddVerbMenuA +#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA +#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA +#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA +#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA +#define OleUIObjectProperties OleUIObjectPropertiesA +#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA +#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA +#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA +#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA +#define OleUIInsertObject OleUIInsertObjectA +#define OleUIPromptUser OleUIPromptUserA +#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA +#define OLEUIPASTEENTRY OLEUIPASTEENTRYA +#define POLEUIPASTEENTRY POLEUIPASTEENTRYA +#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA +#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA +#define OLEUIPASTESPECIAL OLEUIPASTESPECIALA +#define POLEUIPASTESPECIAL POLEUIPASTESPECIALA +#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA +#define OleUIPasteSpecial OleUIPasteSpecialA +#define IOleUILinkContainer IOleUILinkContainerA +#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA +#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA +#define OLEUIEDITLINKS OLEUIEDITLINKSA +#define POLEUIEDITLINKS POLEUIEDITLINKSA +#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA +#define OleUIEditLinks OleUIEditLinksA +#define tagOLEUICHANGEICON tagOLEUICHANGEICONA +#define OLEUICHANGEICON OLEUICHANGEICONA +#define POLEUICHANGEICON POLEUICHANGEICONA +#define LPOLEUICHANGEICON LPOLEUICHANGEICONA +#define OleUIChangeIcon OleUIChangeIconA +#define tagOLEUICONVERT tagOLEUICONVERTA +#define OLEUICONVERT OLEUICONVERTA +#define POLEUICONVERT POLEUICONVERTA +#define LPOLEUICONVERT LPOLEUICONVERTA +#define OleUIConvert OleUIConvertA +#define tagOLEUIBUSY tagOLEUIBUSYA +#define OLEUIBUSY OLEUIBUSYA +#define POLEUIBUSY POLEUIBUSYA +#define LPOLEUIBUSY LPOLEUIBUSYA +#define OleUIBusy OleUIBusyA +#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA +#define OLEUICHANGESOURCE OLEUICHANGESOURCEA +#define POLEUICHANGESOURCE POLEUICHANGESOURCEA +#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA +#define OleUIChangeSource OleUIChangeSourceA +#define IOleUIObjInfo IOleUIObjInfoA +#define LPOLEUIOBJINFO LPOLEUIOBJINFOA +#define IOleUILinkInfo IOleUILinkInfoA +#define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl +#define LPOLEUILINKINFO LPOLEUILINKINFOA +#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA +#define OLEUIGNRLPROPS OLEUIGNRLPROPSA +#define POLEUIGNRLPROPS POLEUIGNRLPROPSA +#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA +#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA +#define OLEUIVIEWPROPS OLEUIVIEWPROPSA +#define POLEUIVIEWPROPS POLEUIVIEWPROPSA +#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA +#define tagOLEUILINKPROPS tagOLEUILINKPROPSA +#define OLEUILINKPROPS OLEUILINKPROPSA +#define POLEUILINKPROPS POLEUILINKPROPSA +#define LPOLEUILINKPROPS LPOLEUILINKPROPSA +#endif +#pragma pack(pop) +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/oleidl.h b/reactos/w32api/include/oleidl.h new file mode 100644 index 00000000000..0043c878fe8 --- /dev/null +++ b/reactos/w32api/include/oleidl.h @@ -0,0 +1,575 @@ +#ifndef _OLEIDL_H +#define _OLEIDL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define MK_ALT 32 + +typedef interface IParseDisplayName *LPPARSEDISPLAYNAME; +typedef interface IOleContainer *LPOLECONTAINER; +typedef interface IOleClientSite *LPOLECLIENTSITE; +typedef interface IOleObject *LPOLEOBJECT; +typedef interface IDropTarget *LPDROPTARGET; +typedef interface IDropSource *LPDROPSOURCE; +typedef interface IEnumOleUndoUnits *LPENUMOLEUNDOUNITS; +typedef interface IEnumOLEVERB *LPENUMOLEVERB; +typedef interface IOleWindow *LPOLEWINDOW; +typedef interface IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW; +typedef interface IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT; +typedef interface IOleInPlaceFrame *LPOLEINPLACEFRAME; +typedef interface IOleAdviseHolder *LPOLEADVISEHOLDER; +typedef interface IViewObject *LPVIEWOBJECT; +typedef interface IViewObject2 *LPVIEWOBJECT2; +typedef interface IOleCache *LPOLECACHE; +typedef interface IOleCache2 *LPOLECACHE2; +typedef interface IOleCacheControl *LPOLECACHECONTROL; + +typedef enum tagBINDSPEED +{ + BINDSPEED_INDEFINITE=1, + BINDSPEED_MODERATE, + BINDSPEED_IMMEDIATE +} BINDSPEED; +typedef enum tagOLEWHICHMK { + OLEWHICHMK_CONTAINER=1, + OLEWHICHMK_OBJREL, + OLEWHICHMK_OBJFULL +} OLEWHICHMK; +typedef enum tagOLEGETMONIKER { + OLEGETMONIKER_ONLYIFTHERE=1, + OLEGETMONIKER_FORCEASSIGN, + OLEGETMONIKER_UNASSIGN, + OLEGETMONIKER_TEMPFORUSER +} OLEGETMONIKER; +typedef enum tagUSERCLASSTYPE { + USERCLASSTYPE_FULL=1, + USERCLASSTYPE_SHORT, + USERCLASSTYPE_APPNAME +} USERCLASSTYPE; + +#ifdef __GNUC__ +__extension__ /* IS0 C says enums limited to range of int */ +#endif +typedef enum tagDROPEFFECT { + DROPEFFECT_NONE=0, + DROPEFFECT_COPY=1, + DROPEFFECT_MOVE=2, + DROPEFFECT_LINK=4, + DROPEFFECT_SCROLL=0x80000000 +} DROPEFFECT; +typedef struct tagOleMenuGroupWidths { + LONG width[6]; +} OLEMENUGROUPWIDTHS,*LPOLEMENUGROUPWIDTHS; +typedef HGLOBAL HOLEMENU; +typedef enum tagOLECLOSE { + OLECLOSE_SAVEIFDIRTY, + OLECLOSE_NOSAVE, + OLECLOSE_PROMPTSAVE +} OLECLOSE; +typedef struct tagOLEVERB { + LONG lVerb; + LPWSTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; +} OLEVERB,*LPOLEVERB; +typedef RECT BORDERWIDTHS; +typedef LPRECT LPBORDERWIDTHS; +typedef LPCRECT LPCBORDERWIDTHS; +typedef struct tagOIFI { + UINT cb; + BOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + UINT cAccelEntries; +}OLEINPLACEFRAMEINFO,*LPOLEINPLACEFRAMEINFO; + +DECLARE_ENUMERATOR(OLEVERB); +typedef IEnumOLEVERB IEnumOleVerb; + +EXTERN_C const IID IID_IParseDisplayName; +#undef INTERFACE +#define INTERFACE IParseDisplayName +DECLARE_INTERFACE_(IParseDisplayName,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE; +}; + +#ifdef COBJMACROS +#define IParseDisplayName_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IParseDisplayName_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IParseDisplayName_Release(T) (T)->lpVtbl->Release(T) +#define IParseDisplayName_ParseDisplayName(T,a,b,c,d) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d) +#endif + +EXTERN_C const IID IID_IOleContainer; +#undef INTERFACE +#define INTERFACE IOleContainer +DECLARE_INTERFACE_(IOleContainer,IParseDisplayName) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE; + STDMETHOD(EnumObjects)(THIS_ DWORD,IEnumUnknown**) PURE; + STDMETHOD(LockContainer)(THIS_ BOOL) PURE; +}; + +EXTERN_C const IID IID_IOleItemContainer; +#undef INTERFACE +#define INTERFACE IOleItemContainer +DECLARE_INTERFACE_(IOleItemContainer,IOleContainer) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE; + STDMETHOD(EnumObjects)(THIS_ DWORD,IEnumUnknown**) PURE; + STDMETHOD(LockContainer)(THIS_ BOOL) PURE; + STDMETHOD(GetObject)(THIS_ LPOLESTR,DWORD,IBindCtx*,REFIID,void**) PURE; + STDMETHOD(GetObjectStorage)(THIS_ LPOLESTR,IBindCtx*,REFIID,void**) PURE; + STDMETHOD(IsRunning)(THIS_ LPOLESTR) PURE; +}; + +#ifdef COBJMACROS +#define IOleItemContainer_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleItemContainer_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleItemContainer_Release(T) (T)->lpVtbl->Release(T) +#define IOleItemContainer_ParseDisplayName(T,a,b,c,d) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d) +#define IOleItemContainer_EnumObjects(T,a,b) (T)->lpVtbl->EnumObjects(T,a,b) +#define IOleItemContainer_LockContainer(T,a) (T)->lpVtbl->LockContainer(T,a) +#define IOleItemContainer_GetObject(T,a,b,c,d,e) (T)->lpVtbl->GetObject(T,a,b,c,d,e) +#define IOleItemContainer_GetObjectStorage(T,a,b,c,d) (T)->lpVtbl->GetObjectStorage(T,a,b,c,d) +#define IOleItemContainer_IsRunning(T,a) (T)->lpVtbl->IsRunning(T,a) +#endif + +EXTERN_C const IID IID_IOleClientSite; +#undef INTERFACE +#define INTERFACE IOleClientSite +DECLARE_INTERFACE_(IOleClientSite,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SaveObject)(THIS) PURE; + STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE; + STDMETHOD(GetContainer)(THIS_ LPOLECONTAINER*) PURE; + STDMETHOD(ShowObject)(THIS) PURE; + STDMETHOD(OnShowWindow)(THIS_ BOOL) PURE; + STDMETHOD(RequestNewObjectLayout)(THIS) PURE; +}; + +#ifdef COBJMACROS +#define IOleClientSite_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleClientSite_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleClientSite_Release(T) (T)->lpVtbl->Release(T) +#define IOleClientSite_SaveObject(T) (T)->lpVtbl->SaveObject(T) +#define IOleClientSite_GetMoniker(T,a,b,c) (T)->lpVtbl->GetMoniker(T,a,b,c) +#define IOleClientSite_GetContainer(T,a) (T)->lpVtbl->GetContainer(T,a) +#define IOleClientSite_ShowObject(T) (T)->lpVtbl->ShowObject(T) +#define IOleClientSite_OnShowWindow(T,a) (T)->lpVtbl->OnShowWindow(T,a) +#define IOleClientSite_RequestNewObjectLayout(T) (T)->lpVtbl->RequestNewObjectLayout(T) +#endif + +EXTERN_C const IID IID_IOleObject; +#undef INTERFACE +#define INTERFACE IOleObject +DECLARE_INTERFACE_(IOleObject,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetClientSite)(THIS_ LPOLECLIENTSITE) PURE; + STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE; + STDMETHOD(SetHostNames)(THIS_ LPCOLESTR,LPCOLESTR) PURE; + STDMETHOD(Close)(THIS_ DWORD) PURE; + STDMETHOD(SetMoniker)(THIS_ DWORD,LPMONIKER) PURE; + STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE; + STDMETHOD(InitFromData)(THIS_ LPDATAOBJECT,BOOL,DWORD) PURE; + STDMETHOD(GetClipboardData)(THIS_ DWORD,LPDATAOBJECT*) PURE; + STDMETHOD(DoVerb)(THIS_ LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT) PURE; + STDMETHOD(EnumVerbs)(THIS_ LPENUMOLEVERB*) PURE; + STDMETHOD(Update)(THIS) PURE; + STDMETHOD(IsUpToDate)(THIS) PURE; + STDMETHOD(GetUserClassID)(THIS_ LPCLSID) PURE; + STDMETHOD(GetUserType)(THIS_ DWORD,LPOLESTR*) PURE; + STDMETHOD(SetExtent)(THIS_ DWORD,SIZEL*) PURE; + STDMETHOD(GetExtent)(THIS_ DWORD,SIZEL*) PURE; + STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE; + STDMETHOD(Unadvise)(THIS_ DWORD) PURE; + STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE; + STDMETHOD(GetMiscStatus)(THIS_ DWORD,PDWORD) PURE; + STDMETHOD(SetColorScheme)(THIS_ LPLOGPALETTE) PURE; +}; + +#ifdef COBJMACROS +#define IOleObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleObject_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleObject_Release(T) (T)->lpVtbl->Release(T) +#define IOleObject_SetClientSite(T,a) (T)->lpVtbl->SetClientSite(T,a) +#define IOleObject_GetClientSite(T,a) (T)->lpVtbl->GetClientSite(T,a) +#define IOleObject_SetHostNames(T,a,b) (T)->lpVtbl->SetHostNames(T,a,b) +#define IOleObject_Close(T,a) (T)->lpVtbl->Close(T,a) +#define IOleObject_SetMoniker(T,a,b) (T)->lpVtbl->SetMoniker(T,a,b) +#define IOleObject_GetMoniker(T,a,b,c) (T)->lpVtbl->GetMoniker(T,a,b,c) +#define IOleObject_InitFromData(T,a,b,c) (T)->lpVtbl->InitFromData(T,a,b,c) +#define IOleObject_GetClipboardData(T,a,b) (T)->lpVtbl->GetClipboardData(T,a,b) +#define IOleObject_DoVerb(T,a,b,c,d,e,f) (T)->lpVtbl->DoVerb(T,a,b,c,d,e,f) +#define IOleObject_EnumVerbs(T,a) (T)->lpVtbl->EnumVerbs(T,a) +#define IOleObject_Update(T) (T)->lpVtbl->Update(T) +#define IOleObject_IsUpToDate(T) (T)->lpVtbl->IsUpToDate(T) +#define IOleObject_GetUserClassID(T,a) (T)->lpVtbl->GetUserClassID(T,a) +#define IOleObject_GetUserType(T,a,b) (T)->lpVtbl->GetUserType(T,a,b) +#define IOleObject_SetExtent(T,a,b) (T)->lpVtbl->SetExtent(T,a,b) +#define IOleObject_GetExtent(T,a,b) (T)->lpVtbl->GetExtent(T,a,b) +#define IOleObject_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b) +#define IOleObject_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a) +#define IOleObject_EnumAdvise(T,a) (T)->lpVtbl->EnumAdvise(T,a) +#define IOleObject_GetMiscStatus(T,a,b) (T)->lpVtbl->GetMiscStatus(T,a,b) +#define IOleObject_SetColorScheme(T,a) (T)->lpVtbl->SetColorScheme(T,a) +#endif + +EXTERN_C const IID IID_IOleWindow; +#undef INTERFACE +#define INTERFACE IOleWindow +DECLARE_INTERFACE_(IOleWindow,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; +}; + +#ifdef COBJMACROS +#define IOleWindow_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleWindow_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleWindow_Release(T) (T)->lpVtbl->Release(T) +#define IOleWindow_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) +#define IOleWindow_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) +#endif + +EXTERN_C const IID IID_IOleInPlaceUIWindow; +#undef INTERFACE +#define INTERFACE IOleInPlaceUIWindow +DECLARE_INTERFACE_(IOleInPlaceUIWindow,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(GetBorder)(THIS_ LPRECT) PURE; + STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; + STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; + STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE; +}; + +EXTERN_C const IID IID_IOleInPlaceObject; +#undef INTERFACE +#define INTERFACE IOleInPlaceObject +DECLARE_INTERFACE_(IOleInPlaceObject,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(InPlaceDeactivate)(THIS) PURE; + STDMETHOD(UIDeactivate)(THIS) PURE; + STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE; + STDMETHOD(ReactivateAndUndo)(THIS) PURE; +}; + +EXTERN_C const IID IID_IOleInPlaceActiveObject; +#undef INTERFACE +#define INTERFACE IOleInPlaceActiveObject +DECLARE_INTERFACE_(IOleInPlaceActiveObject,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE; + STDMETHOD(OnFrameWindowActivate)(THIS_ BOOL) PURE; + STDMETHOD(OnDocWindowActivate)(THIS_ BOOL) PURE; + STDMETHOD(ResizeBorder)(THIS_ LPCRECT,LPOLEINPLACEUIWINDOW,BOOL) PURE; + STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; +}; + +EXTERN_C const IID IID_IOleInPlaceFrame; +#undef INTERFACE +#define INTERFACE IOleInPlaceFrame +DECLARE_INTERFACE_(IOleInPlaceFrame,IOleInPlaceUIWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(GetBorder)(THIS_ LPRECT) PURE; + STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; + STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE; + STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE; + STDMETHOD(InsertMenus)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE; + STDMETHOD(SetMenu)(THIS_ HMENU,HOLEMENU,HWND) PURE; + STDMETHOD(RemoveMenus)(THIS_ HMENU) PURE; + STDMETHOD(SetStatusText)(THIS_ LPCOLESTR) PURE; + STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,WORD) PURE; +}; + +#ifdef COBJMACROS +#define IOleInPlaceFrame_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleInPlaceFrame_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleInPlaceFrame_Release(T) (T)->lpVtbl->Release(T) +#define IOleInPlaceFrame_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) +#define IOleInPlaceFrame_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) +#define IOleInPlaceFrame_GetBorder(T,a) (T)->lpVtbl->GetBorder(T,a) +#define IOleInPlaceFrame_RequestBorderSpace(T,a) (T)->lpVtbl->RequestBorderSpace(T,a) +#define IOleInPlaceFrame_SetBorderSpace(T,a) (T)->lpVtbl->SetBorderSpace(T,a) +#define IOleInPlaceFrame_SetActiveObject(T,a,b) (T)->lpVtbl->SetActiveObject(T,a,b) +#define IOleInPlaceFrame_InsertMenus(T,a,b) (T)->lpVtbl->InsertMenus(T,a,b) +#define IOleInPlaceFrame_SetMenu(T,a,b,c) (T)->lpVtbl->SetMenu(T,a,b,c) +#define IOleInPlaceFrame_RemoveMenus(T,a) (T)->lpVtbl->RemoveMenus(T,a) +#define IOleInPlaceFrame_SetStatusText(T,a) (T)->lpVtbl->SetStatusText(T,a) +#define IOleInPlaceFrame_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a) +#define IOleInPlaceFrame_TranslateAccelerator(T,a,b) (T)->lpVtbl->TranslateAccelerator(T,a,b) +#endif + +EXTERN_C const IID IID_IOleInPlaceSite; +#undef INTERFACE +#define INTERFACE IOleInPlaceSite +DECLARE_INTERFACE_(IOleInPlaceSite,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(CanInPlaceActivate)(THIS) PURE; + STDMETHOD(OnInPlaceActivate)(THIS) PURE; + STDMETHOD(OnUIActivate)(THIS) PURE; + STDMETHOD(GetWindowContext)(THIS_ IOleInPlaceFrame**,IOleInPlaceUIWindow**,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO) PURE; + STDMETHOD(Scroll)(THIS_ SIZE) PURE; + STDMETHOD(OnUIDeactivate)(THIS_ BOOL) PURE; + STDMETHOD(OnInPlaceDeactivate)(THIS) PURE; + STDMETHOD(DiscardUndoState)(THIS) PURE; + STDMETHOD(DeactivateAndUndo)(THIS) PURE; + STDMETHOD(OnPosRectChange)(THIS_ LPCRECT) PURE; +}; + +EXTERN_C const IID IID_IOleAdviseHolder; +#undef INTERFACE +#define INTERFACE IOleAdviseHolder +DECLARE_INTERFACE_(IOleAdviseHolder,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE; + STDMETHOD(Unadvise)(THIS_ DWORD) PURE; + STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE; + STDMETHOD(SendOnRename)(THIS_ LPMONIKER) PURE; + STDMETHOD(SendOnSave)(THIS) PURE; + STDMETHOD(SendOnClose)(THIS) PURE; +}; + +#ifdef COBJMACROS +#define IOleAdviseHolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleAdviseHolder_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleAdviseHolder_Release(T) (T)->lpVtbl->Release(T) +#define IOleAdviseHolder_Advise(T,a,b) (T)->lpVtbl->Advise(T,a,b) +#define IOleAdviseHolder_Unadvise(T,a) (T)->lpVtbl->Unadvise(T,a) +#define IOleAdviseHolder_EnumAdvise(T,a) (T)->lpVtbl->EnumAdvise(T,a) +#define IOleAdviseHolder_SendOnRename(T,a) (T)->lpVtbl->SendOnRename(T,a) +#define IOleAdviseHolder_SendOnSave(T) (T)->lpVtbl->SendOnSave(T) +#define IOleAdviseHolder_SendOnClose(T) (T)->lpVtbl->SendOnClose(T) +#endif + +EXTERN_C const IID IID_IDropSource; +#undef INTERFACE +#define INTERFACE IDropSource +DECLARE_INTERFACE_(IDropSource,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryContinueDrag)(THIS_ BOOL,DWORD) PURE; + STDMETHOD(GiveFeedback)(THIS_ DWORD) PURE; +}; + +#ifdef COBJMACROS +#define IDropSource_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IDropSource_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IDropSource_Release(T) (T)->lpVtbl->Release(T) +#define IDropSource_QueryContinueDrag(T,a,b) (T)->lpVtbl->QueryContinueDrag(T,a,b) +#define IDropSource_GiveFeedback(T,a) (T)->lpVtbl->GiveFeedback(T,a) +#endif + +EXTERN_C const IID IID_IDropTarget; +#undef INTERFACE +#define INTERFACE IDropTarget +DECLARE_INTERFACE_(IDropTarget,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(DragEnter)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE; + STDMETHOD(DragOver)(THIS_ DWORD,POINTL,PDWORD) PURE; + STDMETHOD(DragLeave)(THIS) PURE; + STDMETHOD(Drop)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE; +}; + +#ifdef COBJMACROS +#define IDropTarget_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IDropTarget_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IDropTarget_Release(T) (T)->lpVtbl->Release(T) +#define IDropTarget_DragEnter(T,a,b,c,d) (T)->lpVtbl->DragEnter(T,a,b,c,d) +#define IDropTarget_DragOver(T,a,b,c) (T)->lpVtbl->DragOver(T,a,b,c) +#define IDropTarget_DragLeave(T) (T)->lpVtbl->DragLeave(T) +#define IDropTarget_Drop(T,a,b,c,d) (T)->lpVtbl->Drop(T,a,b,c,d) +#endif + +typedef BOOL(CALLBACK *__IView_pfncont)(DWORD); +EXTERN_C const IID IID_IViewObject; +#undef INTERFACE +#define INTERFACE IViewObject +DECLARE_INTERFACE_(IViewObject,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE; + STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE; + STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE; + STDMETHOD(Unfreeze)(THIS_ DWORD) PURE; + STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE; + STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE; +}; + +#ifdef COBJMACROS +#define IViewObject_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IViewObject_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IViewObject_Release(T) (T)->lpVtbl->Release(T) +#define IViewObject_Draw(T,a,b,c,d,e,f,g,h,i,j) (T)->lpVtbl->Draw(T,a,b,c,d,e,f,g,h,i,j) +#define IViewObject_GetColorSet(T,a,b,c,d,e,f) (T)->lpVtbl->GetColorSet(T,a,b,c,d,e,f) +#define IViewObject_Freeze(T,a,b,c,d) (T)->lpVtbl->Freeze(T,a,b,c,d) +#define IViewObject_Unfreeze(T,a) (T)->lpVtbl->Unfreeze(T,a) +#define IViewObject_SetAdvise(T,a,b,c) (T)->lpVtbl->SetAdvise(T,a,b,c) +#define IViewObject_GetAdvise(T,a,b,c) (T)->lpVtbl->GetAdvise(T,a,b,c) +#endif + +EXTERN_C const IID IID_IViewObject2; +#undef INTERFACE +#define INTERFACE IViewObject2 +DECLARE_INTERFACE_(IViewObject2,IViewObject) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE; + STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE; + STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE; + STDMETHOD(Unfreeze)(THIS_ DWORD) PURE; + STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE; + STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE; + STDMETHOD(GetExtent)(THIS_ DWORD,LONG,DVTARGETDEVICE*,LPSIZEL) PURE; +}; + +#ifdef COBJMACROS +#define IViewObject2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IViewObject2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IViewObject2_Release(T) (T)->lpVtbl->Release(T) +#define IViewObject2_Draw(T,a,b,c,d,e,f,g,h,i,j) (T)->lpVtbl->Draw(T,a,b,c,d,e,f,g,h,i,j) +#define IViewObject2_GetColorSet(T,a,b,c,d,e,f) (T)->lpVtbl->GetColorSet(T,a,b,c,d,e,f) +#define IViewObject2_Freeze(T,a,b,c,d) (T)->lpVtbl->Freeze(T,a,b,c,d) +#define IViewObject2_Unfreeze(T,a) (T)->lpVtbl->Unfreeze(T,a) +#define IViewObject2_SetAdvise(T,a,b,c) (T)->lpVtbl->SetAdvise(T,a,b,c) +#define IViewObject2_GetAdvise(T,a,b,c) (T)->lpVtbl->GetAdvise(T,a,b,c) +#define IViewObject2_GetExtent(T,a,b,c,d) (T)->lpVtbl->GetExtent(T,a,b,c,d) +#endif + +EXTERN_C const IID IID_IOleCache; +#undef INTERFACE +#define INTERFACE IOleCache +DECLARE_INTERFACE_(IOleCache,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Cache)(THIS_ FORMATETC*,DWORD,DWORD*) PURE; + STDMETHOD(Uncache)(THIS_ DWORD) PURE; + STDMETHOD(EnumCache)(THIS_ IEnumSTATDATA**); + STDMETHOD(InitCache)(THIS_ LPDATAOBJECT); + STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL); +}; + +#ifdef COBJMACROS +#define IOleCache_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleCache_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleCache_Release(T) (T)->lpVtbl->Release(T) +#define IOleCache_Cache(T,a,b,c) (T)->lpVtbl->Cache(T,a,b,c) +#define IOleCache_Uncache(T,a) (T)->lpVtbl->Uncache(T,a) +#define IOleCache_EnumCache(T,a) (T)->lpVtbl->EnumCache(T,a) +#define IOleCache_InitCache(T,a) (T)->lpVtbl->InitCache(T,a) +#define IOleCache_SetData(T,a,b,c) (T)->lpVtbl->SetData(T,a,b,c) +#endif + +EXTERN_C const IID IID_IOleCache2; +#undef INTERFACE +#define INTERFACE IOleCache2 +DECLARE_INTERFACE_(IOleCache2,IOleCache) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Cache)(THIS_ FORMATETC*,DWORD,DWORD*) PURE; + STDMETHOD(Uncache)(THIS_ DWORD) PURE; + STDMETHOD(EnumCache)(THIS_ IEnumSTATDATA**) PURE; + STDMETHOD(InitCache)(THIS_ LPDATAOBJECT) PURE; + STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE; + STDMETHOD(UpdateCache)(THIS_ LPDATAOBJECT,DWORD,LPVOID) PURE; + STDMETHOD(DiscardCache)(THIS_ DWORD) PURE; +}; + +#ifdef COBJMACROS +#define IOleCache2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IOleCache2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IOleCache2_Release(T) (T)->lpVtbl->Release(T) +#define IOleCache2_Cache(T,a,b,c) (T)->lpVtbl->Cache(T,a,b,c) +#define IOleCache2_Uncache(T,a) (T)->lpVtbl->Uncache(T,a) +#define IOleCache2_EnumCache(T,a) (T)->lpVtbl->EnumCache(T,a) +#define IOleCache2_InitCache(T,a) (T)->lpVtbl->InitCache(T,a) +#define IOleCache2_SetData(T,a,b,c) (T)->lpVtbl->SetData(T,a,b,c) +#define IOleCache2_UpdateCache(T,a,b,c) (T)->lpVtbl->UpdateCache(T,a,b,c) +#define IOleCache2_DiscardCache(T,a) (T)->lpVtbl->DiscardCache(T,a) +#endif + +EXTERN_C const IID IID_IOleCacheControl; +#undef INTERFACE +#define INTERFACE IOleCacheControl +DECLARE_INTERFACE_(IOleCacheControl,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnRun)(THIS_ LPDATAOBJECT) PURE; + STDMETHOD(OnStop)(THIS) PURE; +}; + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/reactos/w32api/include/pbt.h b/reactos/w32api/include/pbt.h new file mode 100644 index 00000000000..2001e1b2916 --- /dev/null +++ b/reactos/w32api/include/pbt.h @@ -0,0 +1,20 @@ +#ifndef _PBT_H +#define _PBT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define PBT_APMQUERYSUSPEND 0 +#define PBT_APMQUERYSTANDBY 1 +#define PBT_APMQUERYSUSPENDFAILED 2 +#define PBT_APMQUERYSTANDBYFAILED 3 +#define PBT_APMSUSPEND 4 +#define PBT_APMSTANDBY 5 +#define PBT_APMRESUMECRITICAL 6 +#define PBT_APMRESUMESUSPEND 7 +#define PBT_APMRESUMESTANDBY 8 +#define PBTF_APMRESUMEFROMFAILURE 1 +#define PBT_APMBATTERYLOW 9 +#define PBT_APMPOWERSTATUSCHANGE 10 +#define PBT_APMOEMEVENT 11 +#endif diff --git a/reactos/w32api/include/poppack.h b/reactos/w32api/include/poppack.h new file mode 100644 index 00000000000..bb04d4524b2 --- /dev/null +++ b/reactos/w32api/include/poppack.h @@ -0,0 +1,3 @@ +#ifndef RC_INVOKED +#pragma pack(pop) +#endif diff --git a/reactos/w32api/include/powrprof.h b/reactos/w32api/include/powrprof.h new file mode 100644 index 00000000000..dc7d1f356f8 --- /dev/null +++ b/reactos/w32api/include/powrprof.h @@ -0,0 +1,120 @@ +#ifndef _POWRPROF_H +#define _POWRPROF_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define EnableMultiBatteryDisplay 2 +#define EnablePasswordLogon 4 +#define EnableSysTrayBatteryMeter 1 +#define EnableWakeOnRing 8 +#define EnableVideoDimDisplay 16 +#define NEWSCHEME (UINT)-1 + +#ifndef RC_INVOKED +#include /* for NTSTATUS */ +typedef struct _GLOBAL_MACHINE_POWER_POLICY{ + ULONG Revision; + SYSTEM_POWER_STATE LidOpenWakeAc; + SYSTEM_POWER_STATE LidOpenWakeDc; + ULONG BroadcastCapacityResolution; +} GLOBAL_MACHINE_POWER_POLICY, *PGLOBAL_MACHINE_POWER_POLICY; +typedef 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 DischargePolicy[NUM_DISCHARGE_POLICIES]; + ULONG GlobalFlags; +} GLOBAL_USER_POWER_POLICY, *PGLOBAL_USER_POWER_POLICY; +typedef struct _GLOBAL_POWER_POLICY{ + GLOBAL_USER_POWER_POLICY user; + GLOBAL_MACHINE_POWER_POLICY mach; +} GLOBAL_POWER_POLICY, *PGLOBAL_POWER_POLICY; +typedef 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 pad1[2]; + POWER_ACTION_POLICY OverThrottledAc; + POWER_ACTION_POLICY OverThrottledDc; +} MACHINE_POWER_POLICY, *PMACHINE_POWER_POLICY; +typedef struct _MACHINE_PROCESSOR_POWER_POLICY { + ULONG Revision; + PROCESSOR_POWER_POLICY ProcessorPolicyAc; + PROCESSOR_POWER_POLICY ProcessorPolicyDc; +} MACHINE_PROCESSOR_POWER_POLICY, *PMACHINE_PROCESSOR_POWER_POLICY; +typedef 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 Reserved[2]; + ULONG VideoTimeoutAc; + ULONG VideoTimeoutDc; + ULONG SpindownTimeoutAc; + ULONG SpindownTimeoutDc; + BOOLEAN OptimizeForPowerAc; + BOOLEAN OptimizeForPowerDc; + UCHAR FanThrottleToleranceAc; + UCHAR FanThrottleToleranceDc; + UCHAR ForcedThrottleAc; + UCHAR ForcedThrottleDc; +} USER_POWER_POLICY, *PUSER_POWER_POLICY; +typedef struct _POWER_POLICY{ + USER_POWER_POLICY user; + MACHINE_POWER_POLICY mach; +} POWER_POLICY, *PPOWER_POLICY; +typedef BOOLEAN (CALLBACK* PWRSCHEMESENUMPROC)(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, LPARAM); +typedef BOOLEAN (CALLBACK* PFNNTINITIATEPWRACTION)(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN); +NTSTATUS WINAPI CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, PVOID, ULONG); +BOOLEAN WINAPI CanUserWritePwrScheme(VOID); +BOOLEAN WINAPI DeletePwrScheme(UINT); +BOOLEAN WINAPI EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); +BOOLEAN WINAPI GetActivePwrScheme(PUINT); +BOOLEAN WINAPI GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); +BOOLEAN WINAPI GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); +BOOLEAN WINAPI GetPwrDiskSpindownRange(PUINT, PUINT); +BOOLEAN WINAPI IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); +BOOLEAN WINAPI IsPwrHibernateAllowed(VOID); +BOOLEAN WINAPI IsPwrShutdownAllowed(VOID); +BOOLEAN WINAPI IsPwrSuspendAllowed(VOID); +BOOLEAN WINAPI ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); +BOOLEAN WINAPI ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); +BOOLEAN WINAPI ReadPwrScheme(UINT, PPOWER_POLICY); +BOOLEAN WINAPI SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); +BOOLEAN WINAPI SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); +BOOLEAN WINAPI WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); +BOOLEAN WINAPI WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); +BOOLEAN WINAPI ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); +BOOLEAN WINAPI WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif + +#endif /* _POWRPROF_H */ diff --git a/reactos/w32api/include/prsht.h b/reactos/w32api/include/prsht.h new file mode 100644 index 00000000000..299834b68e0 --- /dev/null +++ b/reactos/w32api/include/prsht.h @@ -0,0 +1,304 @@ +#ifndef _PRSHT_H +#define _PRSHT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAXPROPPAGES 100 +#define PSP_DEFAULT 0 +#define PSP_DLGINDIRECT 1 +#define PSP_USEHICON 2 +#define PSP_USEICONID 4 +#define PSP_USETITLE 8 +#define PSP_RTLREADING 16 +#define PSP_HASHELP 32 +#define PSP_USEREFPARENT 64 +#define PSP_USECALLBACK 128 +#define PSP_PREMATURE 1024 +#if (_WIN32_IE >= 0x0400) +#define PSP_HIDEHEADER 2048 +#define PSP_USEHEADERTITLE 4096 +#define PSP_USEHEADERSUBTITLE 8192 +#endif +#define PSPCB_RELEASE 1 +#define PSPCB_CREATE 2 +#define PSH_DEFAULT 0 +#define PSH_PROPTITLE 1 +#define PSH_USEHICON 2 +#define PSH_USEICONID 4 +#define PSH_PROPSHEETPAGE 8 +#define PSH_WIZARDHASFINISH 16 +#define PSH_WIZARD 32 +#define PSH_USEPSTARTPAGE 64 +#define PSH_NOAPPLYNOW 128 +#define PSH_USECALLBACK 256 +#define PSH_HASHELP 512 +#define PSH_MODELESS 1024 +#define PSH_RTLREADING 2048 +#define PSH_WIZARDCONTEXTHELP 4096 +#if (_WIN32_IE >= 0x0400) +#define PSH_WATERMARK 32768 +#define PSH_USEHBMWATERMARK 65536 +#define PSH_USEHPLWATERMARK 131072 +#define PSH_STRETCHWATERMARK 262144 +#define PSH_HEADER 524288 +#define PSH_USEHBMHEADER 1048576 +#define PSH_USEPAGELANG 2097152 +#if (_WIN32_IE < 0x0500) +#define PSH_WIZARD97 0x00002000 +#else +#define PSH_WIZARD97 0x01000000 +#endif +#endif /* _WIN32_IE >= 0x0400 */ +#if (_WIN32_IE >= 0x0500) +#define PSH_WIZARD_LITE 0x400000 +#define PSH_NOCONTEXTHELP 0x2000000 +#endif +#define PSCB_INITIALIZED 1 +#define PSCB_PRECREATE 2 +#define PSM_GETTABCONTROL 1140 +#define PSM_GETCURRENTPAGEHWND 1142 +#define PSM_ISDIALOGMESSAGE 1141 +#define PSM_PRESSBUTTON 1137 +#define PSM_SETCURSELID 1138 +#define PSM_SETFINISHTEXTW 1145 +#define PSM_SETFINISHTEXTA 1139 +#define PSN_FIRST (-200) +#define PSN_LAST (-299) +#define PSN_APPLY (-202) +#define PSN_HELP (-205) +#define PSN_KILLACTIVE (-201) +#define PSN_QUERYCANCEL (-209) +#define PSN_RESET (-203) +#define PSN_SETACTIVE (-200) +#define PSN_WIZBACK (-206) +#define PSN_WIZFINISH (-208) +#define PSN_WIZNEXT (-207) +#define PSNRET_NOERROR 0 +#define PSNRET_INVALID 1 +#define PSNRET_INVALID_NOCHANGEPAGE 2 +#define ID_PSRESTARTWINDOWS 2 +#define ID_PSREBOOTSYSTEM 3 +#define WIZ_CXDLG 276 +#define WIZ_CYDLG 140 +#define WIZ_CXBMP 80 +#define WIZ_BODYX 92 +#define WIZ_BODYCX 184 +#define PROP_SM_CXDLG 212 +#define PROP_SM_CYDLG 188 +#define PROP_MED_CXDLG 227 +#define PROP_MED_CYDLG 215 +#define PROP_LG_CXDLG 252 +#define PROP_LG_CYDLG 218 +#define PSBTN_MAX 6 +#define PSBTN_BACK 0 +#define PSBTN_NEXT 1 +#define PSBTN_FINISH 2 +#define PSBTN_OK 3 +#define PSBTN_APPLYNOW 4 +#define PSBTN_CANCEL 5 +#define PSBTN_HELP 6 +#define PSWIZB_BACK 1 +#define PSWIZB_NEXT 2 +#define PSWIZB_FINISH 4 +#define PSWIZB_DISABLEDFINISH 8 +#define PSM_SETWIZBUTTONS (WM_USER+112) +#define PSM_APPLY (WM_USER+110) +#define PSM_UNCHANGED (WM_USER+109) +#define PSM_QUERYSIBLINGS (WM_USER+108) +#define PSM_CANCELTOCLOSE (WM_USER+107) +#define PSM_REBOOTSYSTEM (WM_USER+106) +#define PSM_RESTARTWINDOWS (WM_USER+105) +#define PSM_CHANGED (WM_USER+104) +#define PSM_ADDPAGE (WM_USER+103) +#define PSM_REMOVEPAGE (WM_USER+102) +#define PSM_SETCURSEL (WM_USER+101) +#define PSM_SETTITLEA (WM_USER+111) +#define PSM_SETTITLEW (WM_USER+120) + +#ifndef RC_INVOKED + +#pragma pack(push,8) +typedef struct _PROPSHEETPAGEA { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + _ANONYMOUS_UNION union { + LPCSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } DUMMYUNIONNAME; + _ANONYMOUS_UNION union { + HICON hIcon; + LPCSTR pszIcon; + } DUMMYUNIONNAME2; + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEA*); + UINT *pcRefParent; +#if (_WIN32_IE >= 0x0400) + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; +#endif +} PROPSHEETPAGEA,*LPPROPSHEETPAGEA; +typedef const PROPSHEETPAGEA *LPCPROPSHEETPAGEA; +typedef struct _PROPSHEETPAGEW { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + _ANONYMOUS_UNION union { + LPCWSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } DUMMYUNIONNAME; + _ANONYMOUS_UNION union { + HICON hIcon; + LPCWSTR pszIcon; + } DUMMYUNIONNAME2; + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEW*); + UINT *pcRefParent; +#if (_WIN32_IE >= 0x0400) + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; +#endif +} PROPSHEETPAGEW,*LPPROPSHEETPAGEW; +typedef const PROPSHEETPAGEW *LPCPROPSHEETPAGEW; +typedef UINT(CALLBACK *LPFNPSPCALLBACKA)(HWND,UINT,LPPROPSHEETPAGEA); +typedef UINT(CALLBACK *LPFNPSPCALLBACKW)(HWND,UINT,LPPROPSHEETPAGEW); +typedef int(CALLBACK *PFNPROPSHEETCALLBACK)(HWND,UINT,LPARAM); +DECLARE_HANDLE(HPROPSHEETPAGE); +typedef struct _PROPSHEETHEADERA { + DWORD dwSize; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + _ANONYMOUS_UNION union { + HICON hIcon; + LPCSTR pszIcon; + }DUMMYUNIONNAME; + LPCSTR pszCaption; + UINT nPages; + _ANONYMOUS_UNION union { + UINT nStartPage; + LPCSTR pStartPage; + }DUMMYUNIONNAME2; + _ANONYMOUS_UNION union { + LPCPROPSHEETPAGEA ppsp; + HPROPSHEETPAGE *phpage; + }DUMMYUNIONNAME3; + PFNPROPSHEETCALLBACK pfnCallback; +#if (_WIN32_IE >= 0x0400) + _ANONYMOUS_UNION union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; + } DUMMYUNIONNAME4; + HPALETTE hplWatermark; + _ANONYMOUS_UNION union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; + } DUMMYUNIONNAME5; +#endif +} PROPSHEETHEADERA,*LPPROPSHEETHEADERA; +typedef const PROPSHEETHEADERA *LPCPROPSHEETHEADERA; +typedef struct _PROPSHEETHEADERW { + DWORD dwSize; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + _ANONYMOUS_UNION union { + HICON hIcon; + LPCWSTR pszIcon; + }DUMMYUNIONNAME; + LPCWSTR pszCaption; + UINT nPages; + _ANONYMOUS_UNION union { + UINT nStartPage; + LPCWSTR pStartPage; + }DUMMYUNIONNAME2; + _ANONYMOUS_UNION union { + LPCPROPSHEETPAGEW ppsp; + HPROPSHEETPAGE *phpage; + }DUMMYUNIONNAME3; + PFNPROPSHEETCALLBACK pfnCallback; +#if (_WIN32_IE >= 0x0400) + _ANONYMOUS_UNION union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; + } DUMMYUNIONNAME4; + HPALETTE hplWatermark; + _ANONYMOUS_UNION union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; + } DUMMYUNIONNAME5; +#endif +} PROPSHEETHEADERW,*LPPROPSHEETHEADERW; +typedef const PROPSHEETHEADERW *LPCPROPSHEETHEADERW; +typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE,LPARAM); +typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGES)(LPVOID,LPFNADDPROPSHEETPAGE,LPARAM); +typedef struct _PSHNOTIFY { + NMHDR hdr; + LPARAM lParam; +} PSHNOTIFY,*LPPSHNOTIFY; + +#pragma pack(pop) + +HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(LPCPROPSHEETPAGEA); +HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW); +BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE); +int WINAPI PropertySheetA(LPCPROPSHEETHEADERA); +int WINAPI PropertySheetW(LPCPROPSHEETHEADERW); +#define PropSheet_AddPage(d,p) SendMessage(d,PSM_ADDPAGE,0,(LPARAM)p) +#define PropSheet_Apply(d) SendMessage(d,PSM_APPLY,0,0) +#define PropSheet_CancelToClose(d) SendMessage(d,PSM_CANCELTOCLOSE,0,0) +#define PropSheet_Changed(d,w) SendMessage(d,PSM_CHANGED,(WPARAM)w,0) +#define PropSheet_GetCurrentPageHwnd(d) (HWND)SendMessage(d,PSM_GETCURRENTPAGEHWND,0,0) +#define PropSheet_GetTabControl(d) (HWND)SendMessage(d,PSM_GETTABCONTROL,0,0) +#define PropSheet_IsDialogMessage(d,m) (BOOL)SendMessage(d,PSM_ISDIALOGMESSAGE,0,(LPARAM)m) +#define PropSheet_PressButton(d,i) SendMessage(d,PSM_PRESSBUTTON,i,0) +#define PropSheet_QuerySiblings(d,w,l) SendMessage(d,PSM_QUERYSIBLINGS,w,l) +#define PropSheet_RebootSystem(d) SendMessage(d,PSM_REBOOTSYSTEM,0,0) +#define PropSheet_RemovePage(d,i,p) SendMessage(d,PSM_REMOVEPAGE,i,(LPARAM)p) +#define PropSheet_RestartWindows(d) SendMessage(d,PSM_RESTARTWINDOWS,0,0) +#define PropSheet_SetCurSel(d,p,i) SendMessage(d,PSM_SETCURSEL,i,(LPARAM)p) +#define PropSheet_SetCurSelByID(d,i) SendMessage(d,PSM_SETCURSELID,0,i) +#define PropSheet_SetFinishText(d,s) SendMessage(d,PSM_SETFINISHTEXT,0,(LPARAM)s) +#define PropSheet_SetTitle(d,w,s) SendMessage(d,PSM_SETTITLE,w,(LPARAM)s) +#define PropSheet_SetWizButtons(d,f) PostMessage(d,PSM_SETWIZBUTTONS,0,(LPARAM)f) +#define PropSheet_UnChanged(d,w) SendMessage(d,PSM_UNCHANGED,(WPARAM)w,0) +#endif + +#ifdef UNICODE +#define LPFNPSPCALLBACK LPFNPSPCALLBACKW +#define PROPSHEETPAGE PROPSHEETPAGEW +#define LPPROPSHEETPAGE LPPROPSHEETPAGEW +#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEW +#define PROPSHEETHEADER PROPSHEETHEADERW +#define LPPROPSHEETHEADER LPPROPSHEETHEADERW +#define LPCPROPSHEETHEADER LPCPROPSHEETHEADERW +#define PSM_SETTITLE PSM_SETTITLEW +#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTW +#define CreatePropertySheetPage CreatePropertySheetPageW +#define PropertySheet PropertySheetW +#else +#define LPFNPSPCALLBACK LPFNPSPCALLBACKA +#define PROPSHEETPAGE PROPSHEETPAGEA +#define LPPROPSHEETPAGE LPPROPSHEETPAGEA +#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEA +#define PROPSHEETHEADER PROPSHEETHEADERA +#define LPPROPSHEETHEADER LPPROPSHEETHEADERA +#define LPCPROPSHEETHEADER LPCPROPSHEETHEADERA +#define PSM_SETTITLE PSM_SETTITLEA +#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTA +#define CreatePropertySheetPage CreatePropertySheetPageA +#define PropertySheet PropertySheetA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/psapi.h b/reactos/w32api/include/psapi.h new file mode 100644 index 00000000000..af72931ef70 --- /dev/null +++ b/reactos/w32api/include/psapi.h @@ -0,0 +1,95 @@ +/* + psapi.h - Include file for PSAPI.DLL APIs + + Written by Mumit Khan + + This file is part of a free library for the Win32 API. + + 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. + + 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. + +*/ +#ifndef _PSAPI_H +#define _PSAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef RC_INVOKED + +typedef struct _MODULEINFO { + LPVOID lpBaseOfDll; + DWORD SizeOfImage; + LPVOID EntryPoint; +} MODULEINFO,*LPMODULEINFO; + +typedef struct _PSAPI_WS_WATCH_INFORMATION { + LPVOID FaultingPc; + LPVOID FaultingVa; +} PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION; + +typedef struct _PROCESS_MEMORY_COUNTERS { + DWORD cb; + DWORD PageFaultCount; + DWORD PeakWorkingSetSize; + DWORD WorkingSetSize; + DWORD QuotaPeakPagedPoolUsage; + DWORD QuotaPagedPoolUsage; + DWORD QuotaPeakNonPagedPoolUsage; + DWORD QuotaNonPagedPoolUsage; + DWORD PagefileUsage; + DWORD PeakPagefileUsage; +} PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS; + +/* Grouped by application,not in alphabetical order. */ +BOOL WINAPI EnumProcesses(DWORD *,DWORD,DWORD *); +BOOL WINAPI EnumProcessModules(HANDLE,HMODULE *,DWORD,LPDWORD); +DWORD WINAPI GetModuleBaseNameA(HANDLE,HMODULE,LPSTR,DWORD); +DWORD WINAPI GetModuleBaseNameW(HANDLE,HMODULE,LPWSTR,DWORD); +DWORD WINAPI GetModuleFileNameExA(HANDLE,HMODULE,LPSTR,DWORD); +DWORD WINAPI GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD); +BOOL WINAPI GetModuleInformation(HANDLE,HMODULE,LPMODULEINFO,DWORD); +BOOL WINAPI EmptyWorkingSet(HANDLE); +BOOL WINAPI QueryWorkingSet(HANDLE,PVOID,DWORD); +BOOL WINAPI InitializeProcessForWsWatch(HANDLE); +BOOL WINAPI GetWsChanges(HANDLE,PPSAPI_WS_WATCH_INFORMATION,DWORD); +DWORD WINAPI GetMappedFileNameW(HANDLE,LPVOID,LPWSTR,DWORD); +DWORD WINAPI GetMappedFileNameA(HANDLE,LPVOID,LPSTR,DWORD); +BOOL WINAPI EnumDeviceDrivers(LPVOID *,DWORD,LPDWORD); +DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID,LPSTR,DWORD); +DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID,LPWSTR,DWORD); +DWORD WINAPI GetDeviceDriverFileNameA(LPVOID,LPSTR,DWORD); +DWORD WINAPI GetDeviceDriverFileNameW(LPVOID,LPWSTR,DWORD); +BOOL WINAPI GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD); + +#endif /* not RC_INVOKED */ + +#ifdef UNICODE +#define GetModuleBaseName GetModuleBaseNameW +#define GetModuleFileNameEx GetModuleFileNameExW +#define GetMappedFilenameEx GetMappedFilenameExW +#define GetDeviceDriverBaseName GetDeviceDriverBaseNameW +#define GetDeviceDriverFileName GetDeviceDriverFileNameW +#else +#define GetModuleBaseName GetModuleBaseNameA +#define GetModuleFileNameEx GetModuleFileNameExA +#define GetMappedFilenameEx GetMappedFilenameExA +#define GetDeviceDriverBaseName GetDeviceDriverBaseNameA +#define GetDeviceDriverFileName GetDeviceDriverFileNameA +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _PSAPI_H */ + diff --git a/reactos/w32api/include/pshpack1.h b/reactos/w32api/include/pshpack1.h new file mode 100644 index 00000000000..3cbcf238bb2 --- /dev/null +++ b/reactos/w32api/include/pshpack1.h @@ -0,0 +1,3 @@ +#ifndef RC_INVOKED +#pragma pack(push,1) +#endif diff --git a/reactos/w32api/include/pshpack2.h b/reactos/w32api/include/pshpack2.h new file mode 100644 index 00000000000..4d88e004e16 --- /dev/null +++ b/reactos/w32api/include/pshpack2.h @@ -0,0 +1,3 @@ +#ifndef RC_INVOKED +#pragma pack(push,2) +#endif diff --git a/reactos/w32api/include/pshpack4.h b/reactos/w32api/include/pshpack4.h new file mode 100644 index 00000000000..c1c3cf95913 --- /dev/null +++ b/reactos/w32api/include/pshpack4.h @@ -0,0 +1,3 @@ +#ifndef RC_INVOKED +#pragma pack(push,4) +#endif diff --git a/reactos/w32api/include/pshpack8.h b/reactos/w32api/include/pshpack8.h new file mode 100644 index 00000000000..f0c4539b94e --- /dev/null +++ b/reactos/w32api/include/pshpack8.h @@ -0,0 +1,3 @@ +#ifndef RC_INVOKED +#pragma pack(push,8) +#endif diff --git a/reactos/w32api/include/rapi.h b/reactos/w32api/include/rapi.h new file mode 100644 index 00000000000..4cf6515b488 --- /dev/null +++ b/reactos/w32api/include/rapi.h @@ -0,0 +1,54 @@ +/* rapi.h - main header file for the RAPI API + + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. + +*/ + +#ifndef _RAPI_H +#define _RAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +typedef struct IRAPIStream +{ + struct IRAPIStreamVtbl * lpVtbl; +} IRAPIStream; + +typedef struct IRAPIStreamVtbl IRAPIStreamVtbl; + +typedef enum tagRAPISTREAMFLAG +{ + STREAM_TIMEOUT_READ +} RAPISTREAMFLAG; + +struct IRAPIStreamVtbl +{ + HRESULT (__stdcall * SetRapiStat)( IRAPIStream *, RAPISTREAMFLAG, DWORD); + HRESULT (__stdcall * GetRapiStat)( IRAPIStream *, RAPISTREAMFLAG, DWORD *); +}; + +typedef HRESULT (STDAPICALLTYPE RAPIEXT)(DWORD, BYTE, DWORD, BYTE, IRAPIStream *); + +typedef struct _RAPIINIT +{ + DWORD cbSize; + HANDLE heRapiInit; + HRESULT hrRapiInit; +} RAPIINIT; + +STDAPI CeRapiInit (void); +STDAPI CeRapiInitEx (RAPIINIT*); +STDAPI_(BOOL) CeCreateProcess (LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, + BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, LPPROCESS_INFORMATION); +STDAPI CeRapiUninit (void); + +STDAPI_(BOOL) CeWriteFile (HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED); +STDAPI_(HANDLE) CeCreateFile (LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); +STDAPI_(BOOL) CeCreateDirectory (LPCWSTR, LPSECURITY_ATTRIBUTES); +STDAPI_(DWORD) CeGetLastError (void); +STDAPI_(BOOL) CeGetFileTime (HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); +STDAPI_(BOOL) CeCloseHandle (HANDLE); + +#endif /* _RAPI_H */ diff --git a/reactos/w32api/include/ras.h b/reactos/w32api/include/ras.h new file mode 100644 index 00000000000..2799be3b703 --- /dev/null +++ b/reactos/w32api/include/ras.h @@ -0,0 +1,966 @@ +#ifndef _RAS_H +#define _RAS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +#ifndef _LMCONS_H +#include +#endif + +/* TODO +include from winnt.h so that this typedef is not necessary +*/ +#ifndef _BASETSD_H +typedef unsigned long ULONG_PTR, *PULONG_PTR; +#endif + +#include + +#define RAS_MaxDeviceType 16 +#define RAS_MaxPhoneNumber 128 +#define RAS_MaxIpAddress 15 +#define RAS_MaxIpxAddress 21 +#define RAS_MaxEntryName 256 +#define RAS_MaxDeviceName 128 +#define RAS_MaxCallbackNumber RAS_MaxPhoneNumber +#define RAS_MaxAreaCode 10 +#define RAS_MaxPadType 32 +#define RAS_MaxX25Address 200 +#define RAS_MaxFacilities 200 +#define RAS_MaxUserData 200 +#define RAS_MaxReplyMessage 1024 +#define RDEOPT_UsePrefixSuffix 0x00000001 +#define RDEOPT_PausedStates 0x00000002 +#define RDEOPT_IgnoreModemSpeaker 0x00000004 +#define RDEOPT_SetModemSpeaker 0x00000008 +#define RDEOPT_IgnoreSoftwareCompression 0x00000010 +#define RDEOPT_SetSoftwareCompression 0x00000020 +#define RDEOPT_DisableConnectedUI 0x00000040 +#define RDEOPT_DisableReconnectUI 0x00000080 +#define RDEOPT_DisableReconnect 0x00000100 +#define RDEOPT_NoUser 0x00000200 +#define RDEOPT_PauseOnScript 0x00000400 +#define RDEOPT_Router 0x00000800 +#define REN_User 0x00000000 +#define REN_AllUsers 0x00000001 +#define VS_Default 0 +#define VS_PptpOnly 1 +#define VS_PptpFirst 2 +#define VS_L2tpOnly 3 +#define VS_L2tpFirst 4 +#define RASDIALEVENT "RasDialEvent" +#define WM_RASDIALEVENT 0xCCCD +#define RASEO_UseCountryAndAreaCodes 0x00000001 +#define RASEO_SpecificIpAddr 0x00000002 +#define RASEO_SpecificNameServers 0x00000004 +#define RASEO_IpHeaderCompression 0x00000008 +#define RASEO_RemoteDefaultGateway 0x00000010 +#define RASEO_DisableLcpExtensions 0x00000020 +#define RASEO_TerminalBeforeDial 0x00000040 +#define RASEO_TerminalAfterDial 0x00000080 +#define RASEO_ModemLights 0x00000100 +#define RASEO_SwCompression 0x00000200 +#define RASEO_RequireEncryptedPw 0x00000400 +#define RASEO_RequireMsEncryptedPw 0x00000800 +#define RASEO_RequireDataEncryption 0x00001000 +#define RASEO_NetworkLogon 0x00002000 +#define RASEO_UseLogonCredentials 0x00004000 +#define RASEO_PromoteAlternates 0x00008000 +#define RASNP_NetBEUI 0x00000001 +#define RASNP_Ipx 0x00000002 +#define RASNP_Ip 0x00000004 +#define RASFP_Ppp 0x00000001 +#define RASFP_Slip 0x00000002 +#define RASFP_Ras 0x00000004 +#define RASDT_Modem TEXT("modem") +#define RASDT_Isdn TEXT("isdn") +#define RASDT_X25 TEXT("x25") +#define RASDT_Vpn TEXT("vpn") +#define RASDT_Pad TEXT("pad") +#define RASDT_Generic TEXT("GENERIC") +#define RASDT_Serial TEXT("SERIAL") +#define RASDT_FrameRelay TEXT("FRAMERELAY") +#define RASDT_Atm TEXT("ATM") +#define RASDT_Sonet TEXT("SONET") +#define RASDT_SW56 TEXT("SW56") +#define RASDT_Irda TEXT("IRDA") +#define RASDT_Parallel TEXT("PARALLEL") +#define RASET_Phone 1 +#define RASET_Vpn 2 +#define RASET_Direct 3 +#define RASET_Internet 4 +#if (WINVER >= 0x401) +#define RASEO_SecureLocalFiles 0x00010000 +#define RASCN_Connection 0x00000001 +#define RASCN_Disconnection 0x00000002 +#define RASCN_BandwidthAdded 0x00000004 +#define RASCN_BandwidthRemoved 0x00000008 +#define RASEDM_DialAll 1 +#define RASEDM_DialAsNeeded 2 +#define RASIDS_Disabled 0xffffffff +#define RASIDS_UseGlobalValue 0 +#define RASADFLG_PositionDlg 0x00000001 +#define RASCM_UserName 0x00000001 +#define RASCM_Password 0x00000002 +#define RASCM_Domain 0x00000004 +#define RASADP_DisableConnectionQuery 0 +#define RASADP_LoginSessionDisable 1 +#define RASADP_SavedAddressesLimit 2 +#define RASADP_FailedConnectionTimeout 3 +#define RASADP_ConnectionQueryTimeout 4 +#endif /* (WINVER >= 0x401) */ +#if (WINVER >= 0x500) +#define RDEOPT_CustomDial 0x00001000 +#define RASLCPAP_PAP 0xC023 +#define RASLCPAP_SPAP 0xC027 +#define RASLCPAP_CHAP 0xC223 +#define RASLCPAP_EAP 0xC227 +#define RASLCPAD_CHAP_MD5 0x05 +#define RASLCPAD_CHAP_MS 0x80 +#define RASLCPAD_CHAP_MSV2 0x81 +#define RASLCPO_PFC 0x00000001 +#define RASLCPO_ACFC 0x00000002 +#define RASLCPO_SSHF 0x00000004 +#define RASLCPO_DES_56 0x00000008 +#define RASLCPO_3_DES 0x00000010 +#define RASCCPCA_MPPC 0x00000006 +#define RASCCPCA_STAC 0x00000005 +#define RASCCPO_Compression 0x00000001 +#define RASCCPO_HistoryLess 0x00000002 +#define RASCCPO_Encryption56bit 0x00000010 +#define RASCCPO_Encryption40bit 0x00000020 +#define RASCCPO_Encryption128bit 0x00000040 +#define RASEO_RequireEAP 0x00020000 +#define RASEO_RequirePAP 0x00040000 +#define RASEO_RequireSPAP 0x00080000 +#define RASEO_Custom 0x00100000 +#define RASEO_PreviewPhoneNumber 0x00200000 +#define RASEO_SharedPhoneNumbers 0x00800000 +#define RASEO_PreviewUserPw 0x01000000 +#define RASEO_PreviewDomain 0x02000000 +#define RASEO_ShowDialingProgress 0x04000000 +#define RASEO_RequireCHAP 0x08000000 +#define RASEO_RequireMsCHAP 0x10000000 +#define RASEO_RequireMsCHAP2 0x20000000 +#define RASEO_RequireW95MSCHAP 0x40000000 +#define RASEO_CustomScript 0x80000000 +#define RASIPO_VJ 0x00000001 +#define RCD_SingleUser 0 +#define RCD_AllUsers 0x00000001 +#define RCD_Eap 0x00000002 +#define RASEAPF_NonInteractive 0x00000002 +#define RASEAPF_Logon 0x00000004 +#define RASEAPF_Preview 0x00000008 +#define ET_40Bit 1 +#define ET_128Bit 2 +#define ET_None 0 +#define ET_Require 1 +#define ET_RequireMax 2 +#define ET_Optional 3 +#endif /* (WINVER >= 0x500) */ + +#define RASCS_PAUSED 0x1000 +#define RASCS_DONE 0x2000 +typedef enum tagRASCONNSTATE { + 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, +#if (WINVER >= 0x500) + RASCS_InvokeEapUI, +#endif + RASCS_Connected = RASCS_DONE, + RASCS_Disconnected +} RASCONNSTATE, *LPRASCONNSTATE; + +typedef enum tagRASPROJECTION { + RASP_Amb = 0x10000, + RASP_PppNbf = 0x803F, + RASP_PppIpx = 0x802B, + RASP_PppIp = 0x8021, +#if (WINVER >= 0x500) + RASP_PppCcp = 0x80FD, +#endif + RASP_PppLcp = 0xC021, + RASP_Slip = 0x20000 +} RASPROJECTION, *LPRASPROJECTION; + +DECLARE_HANDLE (HRASCONN); +typedef HRASCONN* LPHRASCONN; + +typedef struct tagRASCONNW { + DWORD dwSize; + HRASCONN hrasconn; + WCHAR szEntryName[RAS_MaxEntryName + 1]; +#if (WINVER >= 0x400) + WCHAR szDeviceType[RAS_MaxDeviceType + 1]; + WCHAR szDeviceName[RAS_MaxDeviceName + 1]; +#endif +#if (WINVER >= 0x401) + WCHAR szPhonebook[MAX_PATH]; + DWORD dwSubEntry; +#endif +#if (WINVER >= 0x500) + GUID guidEntry; +#endif +#if (WINVER >= 0x501) + DWORD dwSessionId; + DWORD dwFlags; + LUID luid; +#endif +} RASCONNW, *LPRASCONNW; + +typedef struct tagRASCONNA { + DWORD dwSize; + HRASCONN hrasconn; + CHAR szEntryName[RAS_MaxEntryName + 1]; +#if (WINVER >= 0x400) + CHAR szDeviceType[RAS_MaxDeviceType + 1]; + CHAR szDeviceName[RAS_MaxDeviceName + 1]; +#endif +#if (WINVER >= 0x401) + CHAR szPhonebook[MAX_PATH]; + DWORD dwSubEntry; +#endif +#if (WINVER >= 0x500) + GUID guidEntry; +#endif +#if (WINVER >= 0x501) + DWORD dwSessionId; + DWORD dwFlags; + LUID luid; +#endif +} RASCONNA, *LPRASCONNA; + +typedef struct tagRASCONNSTATUSW { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + WCHAR szDeviceType[RAS_MaxDeviceType + 1]; + WCHAR szDeviceName[RAS_MaxDeviceName + 1]; +#if (WINVER >= 0x401) + WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; +#endif +} RASCONNSTATUSW, *LPRASCONNSTATUSW; + +typedef struct tagRASCONNSTATUSA { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + CHAR szDeviceType[RAS_MaxDeviceType + 1]; + CHAR szDeviceName[RAS_MaxDeviceName + 1]; +#if (WINVER >= 0x401) + CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; +#endif +} RASCONNSTATUSA, *LPRASCONNSTATUSA; + +typedef struct tagRASDIALPARAMSW { + DWORD dwSize; + WCHAR szEntryName[RAS_MaxEntryName + 1]; + WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; + WCHAR szCallbackNumber[RAS_MaxCallbackNumber + 1]; + WCHAR szUserName[UNLEN + 1]; + WCHAR szPassword[PWLEN + 1]; + WCHAR szDomain[DNLEN + 1]; +#if (WINVER >= 0x401) + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; +#endif +} RASDIALPARAMSW, *LPRASDIALPARAMSW; + +typedef struct tagRASDIALPARAMSA { + DWORD dwSize; + CHAR szEntryName[RAS_MaxEntryName + 1]; + CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; + CHAR szCallbackNumber[RAS_MaxCallbackNumber + 1]; + CHAR szUserName[UNLEN + 1]; + CHAR szPassword[PWLEN + 1]; + CHAR szDomain[DNLEN + 1]; +#if (WINVER >= 0x401) + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; +#endif +} RASDIALPARAMSA, *LPRASDIALPARAMSA; + +#if (WINVER >= 0x500) +typedef struct tagRASEAPINFO { + DWORD dwSizeofEapInfo; + BYTE *pbEapInfo; +} RASEAPINFO; +#endif + +typedef struct tagRASDIALEXTENSIONS { + DWORD dwSize; + DWORD dwfOptions; + HWND hwndParent; + ULONG_PTR reserved; +#if (WINVER >= 0x500) + ULONG_PTR reserved1; + RASEAPINFO RasEapInfo; +#endif +} RASDIALEXTENSIONS, *LPRASDIALEXTENSIONS; + +typedef struct tagRASENTRYNAMEW { + DWORD dwSize; + WCHAR szEntryName[RAS_MaxEntryName + 1]; +#if (WINVER >= 0x500) + DWORD dwFlags; + WCHAR szPhonebookPath[MAX_PATH + 1]; +#endif +} RASENTRYNAMEW, *LPRASENTRYNAMEW; + +typedef struct tagRASENTRYNAMEA { + DWORD dwSize; + CHAR szEntryName[RAS_MaxEntryName + 1]; +#if (WINVER >= 0x500) + DWORD dwFlags; + CHAR szPhonebookPath[MAX_PATH + 1]; +#endif +} RASENTRYNAMEA, *LPRASENTRYNAMEA; + +typedef struct tagRASAMBW { + DWORD dwSize; + DWORD dwError; + WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; + BYTE bLana; +} RASAMBW, *LPRASAMBW; + +typedef struct tagRASAMBA { + DWORD dwSize; + DWORD dwError; + CHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; + BYTE bLana; +} RASAMBA, *LPRASAMBA; + +typedef struct tagRASPPPNBFW { + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; + WCHAR szWorkstationName[NETBIOS_NAME_LEN + 1]; + BYTE bLana; +} RASPPPNBFW, *LPRASPPPNBFW; + +typedef struct tagRASPPPNBFA { + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + CHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; + CHAR szWorkstationName[NETBIOS_NAME_LEN + 1]; + BYTE bLana; +} RASPPPNBFA, *LPRASPPPNBFA; + +typedef struct tagRASIPXW { + DWORD dwSize; + DWORD dwError; + WCHAR szIpxAddress[RAS_MaxIpxAddress + 1]; +} RASPPPIPXW, *LPRASPPPIPXW; + +typedef struct tagRASIPXA { + DWORD dwSize; + DWORD dwError; + CHAR szIpxAddress[RAS_MaxIpxAddress + 1]; +} RASPPPIPXA, *LPRASPPPIPXA; + +typedef struct tagRASPPPIPW { + DWORD dwSize; + DWORD dwError; + WCHAR szIpAddress[RAS_MaxIpAddress + 1]; +#ifndef WINNT35COMPATIBLE + WCHAR szServerIpAddress[RAS_MaxIpAddress + 1]; +#endif +#if (WINVER >= 0x500) + DWORD dwOptions; + DWORD dwServerOptions; +#endif +} RASPPPIPW, *LPRASPPPIPW; + +typedef struct tagRASPPPIPA { + DWORD dwSize; + DWORD dwError; + CHAR szIpAddress[RAS_MaxIpAddress + 1]; +#ifndef WINNT35COMPATIBLE + CHAR szServerIpAddress[RAS_MaxIpAddress + 1]; +#endif +#if (WINVER >= 0x500) + DWORD dwOptions; + DWORD dwServerOptions; +#endif +} RASPPPIPA, *LPRASPPPIPA; + +typedef struct tagRASPPPLCPW { + DWORD dwSize; + BOOL fBundled; +#if (WINVER >= 0x500) + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + WCHAR szReplyMessage[RAS_MaxReplyMessage]; + DWORD dwOptions; + DWORD dwServerOptions; +#endif +} RASPPPLCPW, *LPRASPPPLCPW; + +typedef struct tagRASPPPLCPA { + DWORD dwSize; + BOOL fBundled; +#if (WINVER >= 0x500) + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + CHAR szReplyMessage[RAS_MaxReplyMessage]; + DWORD dwOptions; + DWORD dwServerOptions; +#endif +} RASPPPLCPA, *LPRASPPPLCPA; + +typedef struct tagRASSLIPW { + DWORD dwSize; + DWORD dwError; + WCHAR szIpAddress[RAS_MaxIpAddress + 1]; +} RASSLIPW, *LPRASSLIPW; + + +typedef struct tagRASSLIPA { + DWORD dwSize; + DWORD dwError; + CHAR szIpAddress[RAS_MaxIpAddress + 1]; +} RASSLIPA, *LPRASSLIPA; + +typedef struct tagRASDEVINFOW { + DWORD dwSize; + WCHAR szDeviceType[RAS_MaxDeviceType + 1]; + WCHAR szDeviceName[RAS_MaxDeviceName + 1]; +} RASDEVINFOW, *LPRASDEVINFOW; + +typedef struct tagRASDEVINFOA { + DWORD dwSize; + CHAR szDeviceType[RAS_MaxDeviceType + 1]; + CHAR szDeviceName[RAS_MaxDeviceName + 1]; +} RASDEVINFOA, *LPRASDEVINFOA; + +typedef struct tagRASCTRYINFO { + DWORD dwSize; + DWORD dwCountryID; + DWORD dwNextCountryID; + DWORD dwCountryCode; + DWORD dwCountryNameOffset; +} RASCTRYINFO, *LPRASCTRYINFO; + +typedef RASCTRYINFO RASCTRYINFOW, *LPRASCTRYINFOW; +typedef RASCTRYINFO RASCTRYINFOA, *LPRASCTRYINFOA; + +typedef struct tagRASIPADDR { + BYTE a; + BYTE b; + BYTE c; + BYTE d; +} RASIPADDR; + +typedef struct tagRASENTRYW { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + WCHAR szAreaCode[RAS_MaxAreaCode + 1]; + WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + WCHAR szScript[MAX_PATH]; + WCHAR szAutodialDll[MAX_PATH]; + WCHAR szAutodialFunc[MAX_PATH]; + WCHAR szDeviceType[RAS_MaxDeviceType + 1]; + WCHAR szDeviceName[RAS_MaxDeviceName + 1]; + WCHAR szX25PadType[RAS_MaxPadType + 1]; + WCHAR szX25Address[RAS_MaxX25Address + 1]; + WCHAR szX25Facilities[RAS_MaxFacilities + 1]; + WCHAR szX25UserData[RAS_MaxUserData + 1]; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; +#if (WINVER >= 0x401) + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; +#endif +#if (WINVER >= 0x500) + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + WCHAR szCustomDialDll[MAX_PATH]; + DWORD dwVpnStrategy; +#endif +} RASENTRYW, *LPRASENTRYW; + +typedef struct tagRASENTRYA { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + CHAR szAreaCode[RAS_MaxAreaCode + 1]; + CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + CHAR szScript[MAX_PATH]; + CHAR szAutodialDll[MAX_PATH]; + CHAR szAutodialFunc[MAX_PATH]; + CHAR szDeviceType[RAS_MaxDeviceType + 1]; + CHAR szDeviceName[RAS_MaxDeviceName + 1]; + CHAR szX25PadType[RAS_MaxPadType + 1]; + CHAR szX25Address[RAS_MaxX25Address + 1]; + CHAR szX25Facilities[RAS_MaxFacilities + 1]; + CHAR szX25UserData[RAS_MaxUserData + 1]; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; +#if (WINVER >= 0x401) + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; +#endif +#if (WINVER >= 0x500) + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + CHAR szCustomDialDll[MAX_PATH]; + DWORD dwVpnStrategy; +#endif +} RASENTRYA, *LPRASENTRYA; + + +#if (WINVER >= 0x401) +typedef struct tagRASADPARAMS { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; +} RASADPARAMS, *LPRASADPARAMS; + +typedef struct tagRASSUBENTRYW { + DWORD dwSize; + DWORD dwfFlags; + WCHAR szDeviceType[RAS_MaxDeviceType + 1]; + WCHAR szDeviceName[RAS_MaxDeviceName + 1]; + WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; + DWORD dwAlternateOffset; +} RASSUBENTRYW, *LPRASSUBENTRYW; + +typedef struct tagRASSUBENTRYA { + DWORD dwSize; + DWORD dwfFlags; + CHAR szDeviceType[RAS_MaxDeviceType + 1]; + CHAR szDeviceName[RAS_MaxDeviceName + 1]; + CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; + DWORD dwAlternateOffset; +} RASSUBENTRYA, *LPRASSUBENTRYA; + +typedef struct tagRASCREDENTIALSW { + DWORD dwSize; + DWORD dwMask; + WCHAR szUserName[UNLEN + 1]; + WCHAR szPassword[PWLEN + 1]; + WCHAR szDomain[DNLEN + 1]; +} RASCREDENTIALSW, *LPRASCREDENTIALSW; + +typedef struct tagRASCREDENTIALSA { + DWORD dwSize; + DWORD dwMask; + CHAR szUserName[UNLEN + 1]; + CHAR szPassword[PWLEN + 1]; + CHAR szDomain[DNLEN + 1]; +} RASCREDENTIALSA, *LPRASCREDENTIALSA; + +typedef struct tagRASAUTODIALENTRYW { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + WCHAR szEntry[RAS_MaxEntryName + 1]; +} RASAUTODIALENTRYW, *LPRASAUTODIALENTRYW; + +typedef struct tagRASAUTODIALENTRYA { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + CHAR szEntry[RAS_MaxEntryName + 1]; +} RASAUTODIALENTRYA, *LPRASAUTODIALENTRYA; +#endif /* (WINVER >= 0x401) */ + +#if (WINVER >= 0x500) +typedef struct tagRASPPPCCP { + DWORD dwSize; + DWORD dwError; + DWORD dwCompressionAlgorithm; + DWORD dwOptions; + DWORD dwServerCompressionAlgorithm; + DWORD dwServerOptions; +} RASPPPCCP, *LPRASPPPCCP; + +typedef struct tagRASEAPUSERIDENTITYW { + WCHAR szUserName[UNLEN + 1]; + DWORD dwSizeofEapInfo; + BYTE pbEapInfo[1]; +} RASEAPUSERIDENTITYW, *LPRASEAPUSERIDENTITYW; + +typedef struct tagRASEAPUSERIDENTITYA { + CHAR szUserName[UNLEN + 1]; + DWORD dwSizeofEapInfo; + BYTE pbEapInfo[1]; +} RASEAPUSERIDENTITYA, *LPRASEAPUSERIDENTITYA; + +typedef struct tagRAS_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; +} RAS_STATS, *PRAS_STATS; +#endif /* (WINVER >= 0x500) */ + + +/* UNICODE typedefs for structures*/ +#ifdef UNICODE +typedef RASCONNW RASCONN, *LPRASCONN; +typedef RASENTRYW RASENTRY, *LPRASENTRY; +typedef RASCONNSTATUSW RASCONNSTATUS, *LPRASCONNSTATUS; +typedef RASDIALPARAMSW RASDIALPARAMS, *LPRASDIALPARAMS; +typedef RASAMBW RASAMB, *LPRASAM; +typedef RASPPPNBFW RASPPPNBF, *LPRASPPPNBF; +typedef RASPPPIPXW RASPPPIPX, *LPRASPPPIPX; +typedef RASPPPIPW RASPPPIP, *LPRASPPPIP; +typedef RASPPPLCPW RASPPPLCP, *LPRASPPPLCP; +typedef RASSLIPW RASSLIP, *LPRASSLIP; +typedef RASDEVINFOW RASDEVINFO, *LPRASDEVINFO; +typedef RASENTRYNAMEW RASENTRYNAME, *LPRASENTRYNAME; + +#if (WINVER >= 0x401) +typedef RASSUBENTRYW RASSUBENTRY, *LPRASSUBENTRY; +typedef RASCREDENTIALSW RASCREDENTIALS, *LPRASCREDENTIALS; +typedef RASAUTODIALENTRYW RASAUTODIALENTRY, *LPRASAUTODIALENTRY; +#endif /* (WINVER >= 0x401) */ + +#if (WINVER >= 0x500) +typedef RASEAPUSERIDENTITYW RASEAPUSERIDENTITY, *LPRASEAPUSERIDENTITY; +#endif /* (WINVER >= 0x500) */ + +#else /* ! defined UNICODE */ +typedef RASCONNA RASCONN, *LPRASCONN; +typedef RASENTRYA RASENTRY, *LPRASENTRY; +typedef RASCONNSTATUSA RASCONNSTATUS, *LPRASCONNSTATUS; +typedef RASDIALPARAMSA RASDIALPARAMS, *LPRASDIALPARAMS; +typedef RASAMBA RASAMB, *LPRASAM; +typedef RASPPPNBFA RASPPPNBF, *LPRASPPPNBF; +typedef RASPPPIPXA RASPPPIPX, *LPRASPPPIPX; +typedef RASPPPIPA RASPPPIP, *LPRASPPPIP; +typedef RASPPPLCPA RASPPPLCP, *LPRASPPPLCP; +typedef RASSLIPA RASSLIP, *LPRASSLIP; +typedef RASDEVINFOA RASDEVINFO, *LPRASDEVINFO; +typedef RASENTRYNAMEA RASENTRYNAME, *LPRASENTRYNAME; + +#if (WINVER >= 0x401) +typedef RASSUBENTRYA RASSUBENTRY, *LPRASSUBENTRY; +typedef RASCREDENTIALSA RASCREDENTIALS, *LPRASCREDENTIALS; +typedef RASAUTODIALENTRYA RASAUTODIALENTRY, *LPRASAUTODIALENTRY; +#endif /*(WINVER >= 0x401)*/ +#if (WINVER >= 0x500) +typedef RASEAPUSERIDENTITYA RASEAPUSERIDENTITY, *LPRASEAPUSERIDENTITY; +#endif /* (WINVER >= 0x500) */ +#endif /* ! UNICODE */ + +/* Callback prototypes */ +typedef BOOL (WINAPI * ORASADFUNC) (HWND, LPSTR, DWORD, LPDWORD); /* deprecated */ +typedef VOID (WINAPI * RASDIALFUNC) (UINT, RASCONNSTATE, DWORD); +typedef VOID (WINAPI * RASDIALFUNC1) (HRASCONN, UINT, RASCONNSTATE, DWORD, + DWORD); +typedef DWORD (WINAPI * RASDIALFUNC2) (ULONG_PTR, DWORD, HRASCONN, UINT, + RASCONNSTATE, DWORD, DWORD); + +/* External functions */ +DWORD APIENTRY RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, + DWORD, LPVOID, LPHRASCONN); +DWORD APIENTRY RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, + DWORD, LPVOID, LPHRASCONN); +DWORD APIENTRY RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD); +DWORD APIENTRY RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD); +DWORD APIENTRY RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, + LPDWORD); +DWORD APIENTRY RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, + LPDWORD); +DWORD APIENTRY RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA); +DWORD APIENTRY RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW); +DWORD APIENTRY RasGetErrorStringA (UINT, LPSTR, DWORD); +DWORD APIENTRY RasGetErrorStringW (UINT, LPWSTR, DWORD); +DWORD APIENTRY RasHangUpA (HRASCONN); +DWORD APIENTRY RasHangUpW (HRASCONN); +DWORD APIENTRY RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID, + LPDWORD); +DWORD APIENTRY RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID, + LPDWORD); +DWORD APIENTRY RasCreatePhonebookEntryA (HWND, LPCSTR); +DWORD APIENTRY RasCreatePhonebookEntryW (HWND, LPCWSTR); +DWORD APIENTRY RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR); +DWORD APIENTRY RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR); +DWORD APIENTRY RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL); +DWORD APIENTRY RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL); +DWORD APIENTRY RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL); +DWORD APIENTRY RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL); +DWORD APIENTRY RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD); +DWORD APIENTRY RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD); +DWORD APIENTRY RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD); +DWORD APIENTRY RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD); +DWORD APIENTRY RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, + LPBYTE, LPDWORD); +DWORD APIENTRY RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, + LPDWORD, LPBYTE, LPDWORD); +DWORD APIENTRY RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD, + LPBYTE, DWORD); +DWORD APIENTRY RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, + LPBYTE, DWORD); +DWORD APIENTRY RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR); +DWORD APIENTRY RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR); +DWORD APIENTRY RasDeleteEntryA (LPCSTR, LPCSTR); +DWORD APIENTRY RasDeleteEntryW (LPCWSTR, LPCWSTR); +DWORD APIENTRY RasValidateEntryNameA (LPCSTR, LPCSTR); +DWORD APIENTRY RasValidateEntryNameW (LPCWSTR, LPCWSTR); + +#if (WINVER >= 0x401) +typedef BOOL (WINAPI * RASADFUNCA) (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD); +typedef BOOL (WINAPI * RASADFUNCW) (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD); + +DWORD APIENTRY RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN); +DWORD APIENTRY RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN); +DWORD APIENTRY RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA); +DWORD APIENTRY RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); +DWORD APIENTRY RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); +DWORD APIENTRY RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); +DWORD APIENTRY RasConnectionNotificationA (HRASCONN, HANDLE, DWORD); +DWORD APIENTRY RasConnectionNotificationW (HRASCONN, HANDLE, DWORD); +DWORD APIENTRY RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, + LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); +DWORD APIENTRY RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, + LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); +DWORD APIENTRY RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, + LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); +DWORD APIENTRY RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, + LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); +DWORD APIENTRY RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, + LPDWORD, LPDWORD); +DWORD APIENTRY RasGetAutodialAddressW (LPCWSTR, LPDWORD, + LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); +DWORD APIENTRY RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA, + DWORD, DWORD); +DWORD APIENTRY RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW, + DWORD, DWORD); +DWORD APIENTRY RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD); +DWORD APIENTRY RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD); +DWORD APIENTRY RasGetAutodialEnableA (DWORD, LPBOOL); +DWORD APIENTRY RasGetAutodialEnableW (DWORD, LPBOOL); +DWORD APIENTRY RasSetAutodialEnableA (DWORD, BOOL); +DWORD APIENTRY RasSetAutodialEnableW (DWORD, BOOL); +DWORD APIENTRY RasGetAutodialParamA (DWORD, LPVOID, LPDWORD); +DWORD APIENTRY RasGetAutodialParamW (DWORD, LPVOID, LPDWORD); +DWORD APIENTRY RasSetAutodialParamA (DWORD, LPVOID, DWORD); +DWORD APIENTRY RasSetAutodialParamW (DWORD, LPVOID, DWORD); +#endif + +#if (WINVER >= 0x500) +typedef DWORD (WINAPI * RasCustomHangUpFn) (HRASCONN); +typedef DWORD (WINAPI * RasCustomDeleteEntryNotifyFn) (LPCTSTR, LPCTSTR, DWORD); +typedef DWORD (WINAPI * RasCustomDialFn) (HINSTANCE, LPRASDIALEXTENSIONS, + LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD); + +DWORD APIENTRY RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); +DWORD APIENTRY RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*); +DWORD APIENTRY RasGetConnectionStatistics (HRASCONN, RAS_STATS*); +DWORD APIENTRY RasClearLinkStatistics (HRASCONN, DWORD); +DWORD APIENTRY RasClearConnectionStatistics (HRASCONN); +DWORD APIENTRY RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); +DWORD APIENTRY RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); +DWORD APIENTRY RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); +DWORD APIENTRY RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); +DWORD APIENTRY RasGetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD*); +DWORD APIENTRY RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*); +DWORD APIENTRY RasSetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD); +DWORD APIENTRY RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD); +DWORD APIENTRY RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); +DWORD APIENTRY RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); +VOID APIENTRY RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW); +VOID APIENTRY RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA); +#endif /* (WINVER >= 0x500) */ + + +/* UNICODE defines for functions */ +#ifdef UNICODE +#define RasDial RasDialW +#define RasEnumConnections RasEnumConnectionsW +#define RasEnumEntries RasEnumEntriesW +#define RasGetConnectStatus RasGetConnectStatusW +#define RasGetErrorString RasGetErrorStringW +#define RasHangUp RasHangUpW +#define RasGetProjectionInfo RasGetProjectionInfoW +#define RasCreatePhonebookEntry RasCreatePhonebookEntryW +#define RasEditPhonebookEntry RasEditPhonebookEntryW +#define RasSetEntryDialParams RasSetEntryDialParamsW +#define RasGetEntryDialParams RasGetEntryDialParamsW +#define RasEnumDevices RasEnumDevicesW +#define RasGetCountryInfo RasGetCountryInfoW +#define RasGetEntryProperties RasGetEntryPropertiesW +#define RasSetEntryProperties RasSetEntryPropertiesW +#define RasRenameEntry RasRenameEntryW +#define RasDeleteEntry RasDeleteEntryW +#define RasValidateEntryName RasValidateEntryNameW +#if (WINVER >= 0x401) +#define RASADFUNC RASADFUNCW +#define RasGetSubEntryHandle RasGetSubEntryHandleW +#define RasConnectionNotification RasConnectionNotificationW +#define RasGetSubEntryProperties RasGetSubEntryPropertiesW +#define RasSetSubEntryProperties RasSetSubEntryPropertiesW +#define RasGetCredentials RasGetCredentialsW +#define RasSetCredentials RasSetCredentialsW +#define RasGetAutodialAddress RasGetAutodialAddressW +#define RasSetAutodialAddress RasSetAutodialAddressW +#define RasEnumAutodialAddresses RasEnumAutodialAddressesW +#define RasGetAutodialEnable RasGetAutodialEnableW +#define RasSetAutodialEnable RasSetAutodialEnableW +#define RasGetAutodialParam RasGetAutodialParamW +#define RasSetAutodialParam RasSetAutodialParamW +#endif /* (WINVER >= 0x401) */ +#if (WINVER >= 0x500) +#define RasGetEapUserData RasGetEapUserDataW +#define RasSetEapUserData RasSetEapUserDataW +#define RasGetCustomAuthData RasGetCustomAuthDataW +#define RasSetCustomAuthData RasSetCustomAuthDataW +#define RasGetEapUserIdentity RasGetEapUserIdentityW +#define RasFreeEapUserIdentity RasFreeEapUserIdentityW +#endif /* (WINVER >= 0x500) */ + +#else /* ! defined UNICODE */ +#define RasDial RasDialA +#define RasEnumConnections RasEnumConnectionsA +#define RasEnumEntries RasEnumEntriesA +#define RasGetConnectStatus RasGetConnectStatusA +#define RasGetErrorString RasGetErrorStringA +#define RasHangUp RasHangUpA +#define RasGetProjectionInfo RasGetProjectionInfoA +#define RasCreatePhonebookEntry RasCreatePhonebookEntryA +#define RasEditPhonebookEntry RasEditPhonebookEntryA +#define RasSetEntryDialParams RasSetEntryDialParamsA +#define RasGetEntryDialParams RasGetEntryDialParamsA +#define RasEnumDevices RasEnumDevicesA +#define RasGetCountryInfo RasGetCountryInfoA +#define RasGetEntryProperties RasGetEntryPropertiesA +#define RasSetEntryProperties RasSetEntryPropertiesA +#define RasRenameEntry RasRenameEntryA +#define RasDeleteEntry RasDeleteEntryA +#define RasValidateEntryName RasValidateEntryNameA + +#if (WINVER >= 0x401) +#define RASADFUNC RASADFUNCA +#define RasGetSubEntryHandle RasGetSubEntryHandleA +#define RasConnectionNotification RasConnectionNotificationA +#define RasGetSubEntryProperties RasGetSubEntryPropertiesA +#define RasSetSubEntryProperties RasSetSubEntryPropertiesA +#define RasGetCredentials RasGetCredentialsA +#define RasSetCredentials RasSetCredentialsA +#define RasGetAutodialAddress RasGetAutodialAddressA +#define RasSetAutodialAddress RasSetAutodialAddressA +#define RasEnumAutodialAddressesRasEnumAutodialAddressesA +#define RasGetAutodialEnable RasGetAutodialEnableA +#define RasSetAutodialEnable RasSetAutodialEnableA +#define RasGetAutodialParam RasGetAutodialParamA +#define RasSetAutodialParam RasSetAutodialParamA +#endif /*(WINVER >= 0x401)*/ + +#if (WINVER >= 0x500) +#define RasGetEapUserData RasGetEapUserDataA +#define RasSetEapUserData RasSetEapUserDataA +#define RasGetCustomAuthData RasGetCustomAuthDataA +#define RasSetCustomAuthData RasSetCustomAuthDataA +#define RasGetEapUserIdentity RasGetEapUserIdentityA +#define RasFreeEapUserIdentity RasFreeEapUserIdentityA +#endif /* (WINVER >= 0x500) */ +#endif /* ! UNICODE */ + +#ifdef __cplusplus +} +#endif +#include +#endif /* _RAS_H */ diff --git a/reactos/w32api/include/rasdlg.h b/reactos/w32api/include/rasdlg.h new file mode 100644 index 00000000000..b0f4c141703 --- /dev/null +++ b/reactos/w32api/include/rasdlg.h @@ -0,0 +1,148 @@ +#ifndef _RASDLG_H_ +#define _RASDLG_H_ +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define RASPBDEVENT_AddEntry 1 +#define RASPBDEVENT_EditEntry 2 +#define RASPBDEVENT_RemoveEntry 3 +#define RASPBDEVENT_DialEntry 4 +#define RASPBDEVENT_EditGlobals 5 +#define RASPBDEVENT_NoUser 6 +#define RASPBDEVENT_NoUserEdit 7 + +#define RASPBDFLAG_PositionDlg 1 +#define RASPBDFLAG_ForceCloseOnDial 2 +#define RASPBDFLAG_NoUser 16 + +#define RASEDFLAG_PositionDlg 1 +#define RASEDFLAG_NewEntry 2 +#define RASEDFLAG_CloneEntry 4 + +#define RASDDFLAG_PositionDlg 1 + +#ifndef RC_INVOKED +#include + +typedef struct tagRASENTRYDLGA +{ + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + CHAR szEntry[RAS_MaxEntryName + 1]; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} RASENTRYDLGA, *LPRASENTRYDLGA; +typedef struct tagRASENTRYDLGW +{ + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + WCHAR szEntry[RAS_MaxEntryName + 1]; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} RASENTRYDLGW, *LPRASENTRYDLGW; + +typedef struct tagRASDIALDLG +{ + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + DWORD dwSubEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} RASDIALDLG, *LPRASDIALDLG; + +/* Application-defined callback functions */ +typedef VOID (WINAPI* RASPBDLGFUNCW)(DWORD, DWORD, LPWSTR, LPVOID); +typedef VOID (WINAPI* RASPBDLGFUNCA)(DWORD, DWORD, LPSTR, LPVOID); + +typedef struct tagRASPBDLGA +{ + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCA pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} RASPBDLGA, *LPRASPBDLGA; +typedef struct tagRASPBDLGW +{ + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCW pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} RASPBDLGW, *LPRASPBDLGW; + +typedef struct tagRASNOUSERA +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwTimeoutMs; + CHAR szUserName[UNLEN + 1]; + CHAR szPassword[PWLEN + 1]; + CHAR szDomain[DNLEN + 1]; +} RASNOUSERA, *LPRASNOUSERA; +typedef struct tagRASNOUSERW +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwTimeoutMs; + WCHAR szUserName[UNLEN + 1]; + WCHAR szPassword[PWLEN + 1]; + WCHAR szDomain[DNLEN + 1]; +} RASNOUSERW, *LPRASNOUSERW ; + +#include + +BOOL APIENTRY RasDialDlgA(LPSTR,LPSTR,LPSTR,LPRASDIALDLG); +BOOL APIENTRY RasDialDlgW(LPWSTR,LPWSTR,LPWSTR,LPRASDIALDLG); +BOOL APIENTRY RasEntryDlgA(LPSTR,LPSTR,LPRASENTRYDLGA); +BOOL APIENTRY RasEntryDlgW(LPWSTR,LPWSTR,LPRASENTRYDLGW); +BOOL APIENTRY RasPhonebookDlgA(LPSTR,LPSTR,LPRASPBDLGA); +BOOL APIENTRY RasPhonebookDlgW(LPWSTR,LPWSTR,LPRASPBDLGW); + +#ifdef UNICODE +typedef RASENTRYDLGW RASENTRYDLG, *LPRASENTRYDLG; +typedef RASPBDLGW RASPBDLG, *LPRASPBDLG; +typedef RASNOUSERW RASNOUSER, *LPRASNOUSER; +#define RasDialDlg RasDialDlgW +#define RasEntryDlg RasEntryDlgW +#define RasPhonebookDlg RasPhonebookDlgW +#else +typedef RASENTRYDLGA RASENTRYDLG, *LPRASENTRYDLG; +typedef RASPBDLGA RASPBDLG, *LPRASPBDLG; +typedef RASNOUSERA RASNOUSER, *LPRASNOUSER; +#define RasDialDlg RasDialDlgA +#define RasEntryDlg RasEntryDlgA +#define RasPhonebookDlg RasPhonebookDlgA +#endif /* UNICODE */ + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/raserror.h b/reactos/w32api/include/raserror.h new file mode 100644 index 00000000000..97498b05967 --- /dev/null +++ b/reactos/w32api/include/raserror.h @@ -0,0 +1,210 @@ +#ifndef _RASERROR_H +#define _RASERROR_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define RASBASE 600 +#define SUCCESS 0 +#define PENDING (RASBASE+0) +#define ERROR_INVALID_PORT_HANDLE (RASBASE+1) +#define ERROR_PORT_ALREADY_OPEN (RASBASE+2) +#define ERROR_BUFFER_TOO_SMALL (RASBASE+3) +#define ERROR_WRONG_INFO_SPECIFIED (RASBASE+4) +#define ERROR_CANNOT_SET_PORT_INFO (RASBASE+5) +#define ERROR_PORT_NOT_CONNECTED (RASBASE+6) +#define ERROR_EVENT_INVALID (RASBASE+7) +#define ERROR_DEVICE_DOES_NOT_EXIST (RASBASE+8) +#define ERROR_DEVICETYPE_DOES_NOT_EXIST (RASBASE+9) +#define ERROR_BUFFER_INVALID (RASBASE+10) +#define ERROR_ROUTE_NOT_AVAILABLE (RASBASE+11) +#define ERROR_ROUTE_NOT_ALLOCATED (RASBASE+12) +#define ERROR_INVALID_COMPRESSION_SPECIFIED (RASBASE+13) +#define ERROR_OUT_OF_BUFFERS (RASBASE+14) +#define ERROR_PORT_NOT_FOUND (RASBASE+15) +#define ERROR_ASYNC_REQUEST_PENDING (RASBASE+16) +#define ERROR_ALREADY_DISCONNECTING (RASBASE+17) +#define ERROR_PORT_NOT_OPEN (RASBASE+18) +#define ERROR_PORT_DISCONNECTED (RASBASE+19) +#define ERROR_NO_ENDPOINTS (RASBASE+20) +#define ERROR_CANNOT_OPEN_PHONEBOOK (RASBASE+21) +#define ERROR_CANNOT_LOAD_PHONEBOOK (RASBASE+22) +#define ERROR_CANNOT_FIND_PHONEBOOK_ENTRY (RASBASE+23) +#define ERROR_CANNOT_WRITE_PHONEBOOK (RASBASE+24) +#define ERROR_CORRUPT_PHONEBOOK (RASBASE+25) +#define ERROR_CANNOT_LOAD_STRING (RASBASE+26) +#define ERROR_KEY_NOT_FOUND (RASBASE+27) +#define ERROR_DISCONNECTION (RASBASE+28) +#define ERROR_REMOTE_DISCONNECTION (RASBASE+29) +#define ERROR_HARDWARE_FAILURE (RASBASE+30) +#define ERROR_USER_DISCONNECTION (RASBASE+31) +#define ERROR_INVALID_SIZE (RASBASE+32) +#define ERROR_PORT_NOT_AVAILABLE (RASBASE+33) +#define ERROR_CANNOT_PROJECT_CLIENT (RASBASE+34) +#define ERROR_UNKNOWN (RASBASE+35) +#define ERROR_WRONG_DEVICE_ATTACHED (RASBASE+36) +#define ERROR_BAD_STRING (RASBASE+37) +#define ERROR_REQUEST_TIMEOUT (RASBASE+38) +#define ERROR_CANNOT_GET_LANA (RASBASE+39) +#define ERROR_NETBIOS_ERROR (RASBASE+40) +#define ERROR_SERVER_OUT_OF_RESOURCES (RASBASE+41) +#define ERROR_NAME_EXISTS_ON_NET (RASBASE+42) +#define ERROR_SERVER_GENERAL_NET_FAILURE (RASBASE+43) +#define WARNING_MSG_ALIAS_NOT_ADDED (RASBASE+44) +#define ERROR_AUTH_INTERNAL (RASBASE+45) +#define ERROR_RESTRICTED_LOGON_HOURS (RASBASE+46) +#define ERROR_ACCT_DISABLED (RASBASE+47) +#define ERROR_PASSWD_EXPIRED (RASBASE+48) +#define ERROR_NO_DIALIN_PERMISSION (RASBASE+49) +#define ERROR_SERVER_NOT_RESPONDING (RASBASE+50) +#define ERROR_FROM_DEVICE (RASBASE+51) +#define ERROR_UNRECOGNIZED_RESPONSE (RASBASE+52) +#define ERROR_MACRO_NOT_FOUND (RASBASE+53) +#define ERROR_MACRO_NOT_DEFINED (RASBASE+54) +#define ERROR_MESSAGE_MACRO_NOT_FOUND (RASBASE+55) +#define ERROR_DEFAULTOFF_MACRO_NOT_FOUND (RASBASE+56) +#define ERROR_FILE_COULD_NOT_BE_OPENED (RASBASE+57) +#define ERROR_DEVICENAME_TOO_LONG (RASBASE+58) +#define ERROR_DEVICENAME_NOT_FOUND (RASBASE+59) +#define ERROR_NO_RESPONSES (RASBASE+60) +#define ERROR_NO_COMMAND_FOUND (RASBASE+61) +#define ERROR_WRONG_KEY_SPECIFIED (RASBASE+62) +#define ERROR_UNKNOWN_DEVICE_TYPE (RASBASE+63) +#define ERROR_ALLOCATING_MEMORY (RASBASE+64) +#define ERROR_PORT_NOT_CONFIGURED (RASBASE+65) +#define ERROR_DEVICE_NOT_READY (RASBASE+66) +#define ERROR_READING_INI_FILE (RASBASE+67) +#define ERROR_NO_CONNECTION (RASBASE+68) +#define ERROR_BAD_USAGE_IN_INI_FILE (RASBASE+69) +#define ERROR_READING_SECTIONNAME (RASBASE+70) +#define ERROR_READING_DEVICETYPE (RASBASE+71) +#define ERROR_READING_DEVICENAME (RASBASE+72) +#define ERROR_READING_USAGE (RASBASE+73) +#define ERROR_READING_MAXCONNECTBPS (RASBASE+74) +#define ERROR_READING_MAXCARRIERBPS (RASBASE+75) +#define ERROR_LINE_BUSY (RASBASE+76) +#define ERROR_VOICE_ANSWER (RASBASE+77) +#define ERROR_NO_ANSWER (RASBASE+78) +#define ERROR_NO_CARRIER (RASBASE+79) +#define ERROR_NO_DIALTONE (RASBASE+80) +#define ERROR_IN_COMMAND (RASBASE+81) +#define ERROR_WRITING_SECTIONNAME (RASBASE+82) +#define ERROR_WRITING_DEVICETYPE (RASBASE+83) +#define ERROR_WRITING_DEVICENAME (RASBASE+84) +#define ERROR_WRITING_MAXCONNECTBPS (RASBASE+85) +#define ERROR_WRITING_MAXCARRIERBPS (RASBASE+86) +#define ERROR_WRITING_USAGE (RASBASE+87) +#define ERROR_WRITING_DEFAULTOFF (RASBASE+88) +#define ERROR_READING_DEFAULTOFF (RASBASE+89) +#define ERROR_EMPTY_INI_FILE (RASBASE+90) +#define ERROR_AUTHENTICATION_FAILURE (RASBASE+91) +#define ERROR_PORT_OR_DEVICE (RASBASE+92) +#define ERROR_NOT_BINARY_MACRO (RASBASE+93) +#define ERROR_DCB_NOT_FOUND (RASBASE+94) +#define ERROR_STATE_MACHINES_NOT_STARTED (RASBASE+95) +#define ERROR_STATE_MACHINES_ALREADY_STARTED (RASBASE+96) +#define ERROR_PARTIAL_RESPONSE_LOOPING (RASBASE+97) +#define ERROR_UNKNOWN_RESPONSE_KEY (RASBASE+98) +#define ERROR_RECV_BUF_FULL (RASBASE+99) +#define ERROR_CMD_TOO_LONG (RASBASE+100) +#define ERROR_UNSUPPORTED_BPS (RASBASE+101) +#define ERROR_UNEXPECTED_RESPONSE (RASBASE+102) +#define ERROR_INTERACTIVE_MODE (RASBASE+103) +#define ERROR_BAD_CALLBACK_NUMBER (RASBASE+104) +#define ERROR_INVALID_AUTH_STATE (RASBASE+105) +#define ERROR_WRITING_INITBPS (RASBASE+106) +#define ERROR_X25_DIAGNOSTIC (RASBASE+107) +#define ERROR_ACCT_EXPIRED (RASBASE+108) +#define ERROR_CHANGING_PASSWORD (RASBASE+109) +#define ERROR_OVERRUN (RASBASE+110) +#define ERROR_RASMAN_CANNOT_INITIALIZE (RASBASE+111) +#define ERROR_BIPLEX_PORT_NOT_AVAILABLE (RASBASE+112) +#define ERROR_NO_ACTIVE_ISDN_LINES (RASBASE+113) +#define ERROR_NO_ISDN_CHANNELS_AVAILABLE (RASBASE+114) +#define ERROR_TOO_MANY_LINE_ERRORS (RASBASE+115) +#define ERROR_IP_CONFIGURATION (RASBASE+116) +#define ERROR_NO_IP_ADDRESSES (RASBASE+117) +#define ERROR_PPP_TIMEOUT (RASBASE+118) +#define ERROR_PPP_REMOTE_TERMINATED (RASBASE+119) +#define ERROR_PPP_NO_PROTOCOLS_CONFIGURED (RASBASE+120) +#define ERROR_PPP_NO_RESPONSE (RASBASE+121) +#define ERROR_PPP_INVALID_PACKET (RASBASE+122) +#define ERROR_PHONE_NUMBER_TOO_LONG (RASBASE+123) +#define ERROR_IPXCP_NO_DIALOUT_CONFIGURED (RASBASE+124) +#define ERROR_IPXCP_NO_DIALIN_CONFIGURED (RASBASE+125) +#define ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE (RASBASE+126) +#define ERROR_ACCESSING_TCPCFGDLL (RASBASE+127) +#define ERROR_NO_IP_RAS_ADAPTER (RASBASE+128) +#define ERROR_SLIP_REQUIRES_IP (RASBASE+129) +#define ERROR_PROJECTION_NOT_COMPLETE (RASBASE+130) +#define ERROR_PROTOCOL_NOT_CONFIGURED (RASBASE+131) +#define ERROR_PPP_NOT_CONVERGING (RASBASE+132) +#define ERROR_PPP_CP_REJECTED (RASBASE+133) +#define ERROR_PPP_LCP_TERMINATED (RASBASE+134) +#define ERROR_PPP_REQUIRED_ADDRESS_REJECTED (RASBASE+135) +#define ERROR_PPP_NCP_TERMINATED (RASBASE+136) +#define ERROR_PPP_LOOPBACK_DETECTED (RASBASE+137) +#define ERROR_PPP_NO_ADDRESS_ASSIGNED (RASBASE+138) +#define ERROR_CANNOT_USE_LOGON_CREDENTIALS (RASBASE+139) +#define ERROR_TAPI_CONFIGURATION (RASBASE+140) +#define ERROR_NO_LOCAL_ENCRYPTION (RASBASE+141) +#define ERROR_NO_REMOTE_ENCRYPTION (RASBASE+142) +#define ERROR_REMOTE_REQUIRES_ENCRYPTION (RASBASE+143) +#define ERROR_IPXCP_NET_NUMBER_CONFLICT (RASBASE+144) +#define ERROR_INVALID_SMM (RASBASE+145) +#define ERROR_SMM_UNINITIALIZED (RASBASE+146) +#define ERROR_NO_MAC_FOR_PORT (RASBASE+147) +#define ERROR_SMM_TIMEOUT (RASBASE+148) +#define ERROR_BAD_PHONE_NUMBER (RASBASE+149) +#define ERROR_WRONG_MODULE (RASBASE+150) +#define ERROR_INVALID_CALLBACK_NUMBER (RASBASE+151) + +#define ERROR_SCRIPT_SYNTAX (RASBASE+152) +#define ERROR_HANGUP_FAILED (RASBASE+153) +#define ERROR_BUNDLE_NOT_FOUND (RASBASE+154) +#define ERROR_CANNOT_DO_CUSTOMDIAL (RASBASE+155) +#define ERROR_DIAL_ALREADY_IN_PROGRESS (RASBASE+156) +#define ERROR_RASAUTO_CANNOT_INITIALIZE (RASBASE+157) +#define ERROR_CONNECTION_ALREADY_SHARED (RASBASE+158) +#define ERROR_SHARING_CHANGE_FAILED (RASBASE+159) +#define ERROR_SHARING_ROUTER_INSTALL (RASBASE+160) +#define ERROR_SHARE_CONNECTION_FAILED (RASBASE+161) +#define ERROR_SHARING_PRIVATE_INSTALL (RASBASE+162) +#define ERROR_CANNOT_SHARE_CONNECTION (RASBASE+163) +#define ERROR_NO_SMART_CARD_READER (RASBASE+164) +#define ERROR_SHARING_ADDRESS_EXISTS (RASBASE+165) +#define ERROR_NO_CERTIFICATE (RASBASE+166) +#define ERROR_SHARING_MULTIPLE_ADDRESSES (RASBASE+167) +#define ERROR_FAILED_TO_ENCRYPT (RASBASE+168) +#define ERROR_BAD_ADDRESS_SPECIFIED (RASBASE+169) +#define ERROR_CONNECTION_REJECT (RASBASE+170) +#define ERROR_CONGESTION (RASBASE+171) +#define ERROR_INCOMPATIBLE (RASBASE+172) +#define ERROR_NUMBERCHANGED (RASBASE+173) +#define ERROR_TEMPFAILURE (RASBASE+174) +#define ERROR_BLOCKED (RASBASE+175) +#define ERROR_DONOTDISTURB (RASBASE+176) +#define ERROR_OUTOFORDER (RASBASE+177) +#define ERROR_UNABLE_TO_AUTHENTICATE_SERVER (RASBASE+178) +#define ERROR_SMART_CARD_REQUIRED (RASBASE+179) +#define ERROR_INVALID_FUNCTION_FOR_ENTRY (RASBASE+180) +#define ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND (RASBASE+181) +#define ERROR_SHARING_RRAS_CONFLICT (RASBASE+182) +#define ERROR_SHARING_NO_PRIVATE_LAN (RASBASE+183) +#define ERROR_NO_DIFF_USER_AT_LOGON (RASBASE+184) +#define ERROR_NO_REG_CERT_AT_LOGON (RASBASE+185) +#define ERROR_OAKLEY_NO_CERT (RASBASE+186) +#define ERROR_OAKLEY_AUTH_FAIL (RASBASE+187) +#define ERROR_OAKLEY_ATTRIB_FAIL (RASBASE+188) +#define ERROR_OAKLEY_GENERAL_PROCESSING (RASBASE+189) +#define ERROR_OAKLEY_NO_PEER_CERT (RASBASE+190) +#define ERROR_OAKLEY_NO_POLICY (RASBASE+191) +#define ERROR_OAKLEY_TIMED_OUT (RASBASE+192) +#define ERROR_OAKLEY_ERROR (RASBASE+193) +#define ERROR_UNKNOWN_FRAMED_PROTOCOL (RASBASE+194) +#define ERROR_WRONG_TUNNEL_TYPE (RASBASE+195) +#define ERROR_UNKNOWN_SERVICE_TYPE (RASBASE+196) +#define ERROR_CONNECTING_DEVICE_NOT_FOUND (RASBASE+197) +#define ERROR_NO_EAPTLS_CERTIFICATE (RASBASE+198) +#define RASBASEEND (RASBASE+198) +#endif /* _RASERROR_H */ diff --git a/reactos/w32api/include/rassapi.h b/reactos/w32api/include/rassapi.h new file mode 100644 index 00000000000..9ba4afb41eb --- /dev/null +++ b/reactos/w32api/include/rassapi.h @@ -0,0 +1,182 @@ +#ifndef _RASSAPI_H +#define _RASSAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#ifndef UNLEN +#include +#endif +#define RASSAPI_MAX_PHONENUMBER_SIZE 128 +#define RASSAPI_MAX_MEDIA_NAME 16 +#define RASSAPI_MAX_PORT_NAME 16 +#define RASSAPI_MAX_DEVICE_NAME 128 +#define RASSAPI_MAX_DEVICETYPE_NAME 16 +#define RASSAPI_MAX_PARAM_KEY_SIZE 32 +#define RASPRIV_NoCallback 0x01 +#define RASPRIV_AdminSetCallback 0x02 +#define RASPRIV_CallerSetCallback 0x04 +#define RASPRIV_DialinPrivilege 0x08 +#define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \ + | RASPRIV_CallerSetCallback \ + | RASPRIV_NoCallback) +#define RAS_MODEM_OPERATIONAL 1 +#define RAS_MODEM_NOT_RESPONDING 2 +#define RAS_MODEM_HARDWARE_FAILURE 3 +#define RAS_MODEM_INCORRECT_RESPONSE 4 +#define RAS_MODEM_UNKNOWN 5 +#define RAS_PORT_NON_OPERATIONAL 1 +#define RAS_PORT_DISCONNECTED 2 +#define RAS_PORT_CALLING_BACK 3 +#define RAS_PORT_LISTENING 4 +#define RAS_PORT_AUTHENTICATING 5 +#define RAS_PORT_AUTHENTICATED 6 +#define RAS_PORT_INITIALIZING 7 +#define MEDIA_UNKNOWN 0 +#define MEDIA_SERIAL 1 +#define MEDIA_RAS10_SERIAL 2 +#define MEDIA_X25 3 +#define MEDIA_ISDN 4 +#define USER_AUTHENTICATED 0x0001 +#define MESSENGER_PRESENT 0x0002 +#define PPP_CLIENT 0x0004 +#define GATEWAY_ACTIVE 0x0008 +#define REMOTE_LISTEN 0x0010 +#define PORT_MULTILINKED 0x0020 +#define RAS_IPADDRESSLEN 15 +#define RAS_IPXADDRESSLEN 22 +#define RAS_ATADDRESSLEN 32 +#define RASDOWNLEVEL 10 +#define RASADMIN_35 35 +#define RASADMIN_CURRENT 40 + +typedef ULONG IPADDR; +typedef enum _RAS_PARAMS_FORMAT { + ParamNumber = 0, + ParamString = 1 +} RAS_PARAMS_FORMAT; +typedef union RAS_PARAMS_VALUE { + DWORD Number; + struct { + DWORD Length; + PCHAR Data; + } String; +} RAS_PARAMS_VALUE; +typedef struct RAS_PARAMETERS { + CHAR P_Key [RASSAPI_MAX_PARAM_KEY_SIZE]; + RAS_PARAMS_FORMAT P_Type; + BYTE P_Attributes; + RAS_PARAMS_VALUE P_Value; +} RAS_PARAMETERS; +typedef struct _RAS_USER_0 { + BYTE bfPrivilege; + WCHAR szPhoneNumber[RASSAPI_MAX_PHONENUMBER_SIZE + 1]; +} RAS_USER_0, *PRAS_USER_0; +typedef struct _RAS_PORT_0 { + WCHAR wszPortName[RASSAPI_MAX_PORT_NAME]; + WCHAR wszDeviceType[RASSAPI_MAX_DEVICETYPE_NAME]; + WCHAR wszDeviceName[RASSAPI_MAX_DEVICE_NAME]; + WCHAR wszMediaName[RASSAPI_MAX_MEDIA_NAME]; + DWORD reserved; + DWORD Flags; + WCHAR wszUserName[UNLEN + 1]; + WCHAR wszComputer[NETBIOS_NAME_LEN]; + DWORD dwStartSessionTime; /* seconds from 1/1/1970 */ + WCHAR wszLogonDomain[DNLEN + 1]; + BOOL fAdvancedServer; +} RAS_PORT_0, *PRAS_PORT_0; +typedef struct _RAS_PPP_NBFCP_RESULT { + DWORD dwError; + DWORD dwNetBiosError; + CHAR szName[ NETBIOS_NAME_LEN + 1 ]; + WCHAR wszWksta[ NETBIOS_NAME_LEN + 1 ]; +} RAS_PPP_NBFCP_RESULT; +typedef struct _RAS_PPP_IPCP_RESULT{ + DWORD dwError; + WCHAR wszAddress[ RAS_IPADDRESSLEN + 1 ]; +} RAS_PPP_IPCP_RESULT; +typedef struct _RAS_PPP_IPXCP_RESULT { + DWORD dwError; + WCHAR wszAddress[ RAS_IPXADDRESSLEN + 1 ]; +} RAS_PPP_IPXCP_RESULT; +typedef struct _RAS_PPP_ATCP_RESULT { + DWORD dwError; + WCHAR wszAddress[ RAS_ATADDRESSLEN + 1 ]; +} RAS_PPP_ATCP_RESULT; +typedef 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_PROJECTION_RESULT; +typedef 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_1, *PRAS_PORT_1; +typedef 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; +} RAS_PORT_STATISTICS, *PRAS_PORT_STATISTICS; +typedef struct _RAS_SERVER_0 { + WORD TotalPorts; + WORD PortsInUse; + DWORD RasVersion; +} RAS_SERVER_0, *PRAS_SERVER_0; + +DWORD APIENTRY RasAdminServerGetInfo( const WCHAR*, PRAS_SERVER_0 ); +DWORD APIENTRY RasAdminGetUserAccountServer( const WCHAR*, const WCHAR*, LPWSTR ); +DWORD APIENTRY RasAdminUserGetInfo( const WCHAR*, const WCHAR*, PRAS_USER_0 ); +DWORD APIENTRY RasAdminUserSetInfo( const WCHAR*, const WCHAR*, const PRAS_USER_0 ); +DWORD APIENTRY RasAdminPortEnum( const WCHAR*, PRAS_PORT_0*, WORD*); +DWORD APIENTRY RasAdminPortGetInfo( const WCHAR*, const WCHAR*, RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS** ); +DWORD APIENTRY RasAdminPortClearStatistics( const WCHAR*, const WCHAR* ); +DWORD APIENTRY RasAdminPortDisconnect( const WCHAR*, const WCHAR* ); +DWORD APIENTRY RasAdminFreeBuffer(PVOID); +DWORD APIENTRY RasAdminGetErrorString( UINT, WCHAR*, DWORD ); +BOOL APIENTRY RasAdminAcceptNewConnection( RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS* ); +VOID APIENTRY RasAdminConnectionHangupNotification ( RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS* ); +DWORD APIENTRY RasAdminGetIpAddressForUser ( WCHAR*, WCHAR*, IPADDR*, BOOL*); +VOID APIENTRY RasAdminReleaseIpAddress ( WCHAR*, WCHAR*,IPADDR* ); +DWORD APIENTRY RasAdminGetUserParms( WCHAR*, PRAS_USER_0 ); +DWORD APIENTRY RasAdminSetUserParms( WCHAR*, DWORD, PRAS_USER_0 ); + +#ifdef __cplusplus +} +#endif + +#endif /* _RASSAPI_H */ diff --git a/reactos/w32api/include/regstr.h b/reactos/w32api/include/regstr.h new file mode 100644 index 00000000000..ccf80ea40c4 --- /dev/null +++ b/reactos/w32api/include/regstr.h @@ -0,0 +1,769 @@ +#ifndef _REGSTR_H +#define _REGSTR_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define REGSTR_KEY_CLASS TEXT("Class") +#define REGSTR_KEY_CONFIG TEXT("Config") +#define REGSTR_KEY_ENUM TEXT("Enum") +#define REGSTR_KEY_ROOTENUM TEXT("Root") +#define REGSTR_KEY_BIOSENUM TEXT("BIOS") +#define REGSTR_KEY_PCMCIAENUM TEXT("PCMCIA") +#define REGSTR_KEY_PCIENUM TEXT("PCI") +#define REGSTR_KEY_LOGCONFIG TEXT("LogConfig") +#define REGSTR_KEY_SYSTEMBOARD TEXT("*PNP0C01") +#define REGSTR_KEY_APM TEXT("*PNP0C05") +#define REGSTR_KEY_INIUPDATE TEXT("IniUpdate") +#define REG_KEY_INSTDEV TEXT("Installed") +#define REGSTR_KEY_DOSOPTCDROM TEXT("CD-ROM") +#define REGSTR_KEY_DOSOPTMOUSE TEXT("MOUSE") +#define REGSTR_DEFAULT_INSTANCE TEXT("0000") +#define REGSTR_PATH_MOTHERBOARD REGSTR_KEY_SYSTEMBOARD TEXT("\\" REGSTR_DEFAULT_INSTANCE +#define REGSTR_PATH_SETUP TEXT("Software\\Microsoft\\Windows\\CurrentVersion") +#define REGSTR_PATH_PIFCONVERT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\PIFConvert") +#define REGSTR_PATH_MSDOSOPTS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSOptions") +#define REGSTR_PATH_MSDOSEMU TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOS Emulation") +#define REGSTR_PATH_NEWDOSBOX TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOS Emulation\\AppCompat") +#define REGSTR_PATH_RUNONCE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce") +#define REGSTR_PATH_RUN TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run") +#define REGSTR_PATH_RUNSERVICESONCE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce") +#define REGSTR_PATH_RUNSERVICES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServices") +#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */ +#define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer") +#endif +#define REGSTR_PATH_DETECT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Detect") +#define REGSTR_PATH_APPPATHS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\App Paths") +#define REGSTR_PATH_UNINSTALL TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall") +#define REGSTR_PATH_REALMODENET TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Real Mode Net") +#define REGSTR_PATH_NETEQUIV TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Equivalent") +#define REGSTR_PATH_CVNETWORK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network") +#define REGSTR_PATH_IDCONFIGDB TEXT("System\\CurrentControlSet\\Control\\IDConfigDB") +#define REGSTR_PATH_CLASS TEXT("System\\CurrentControlSet\\Services\\Class") +#define REGSTR_PATH_DISPLAYSETTINGS TEXT("Display\\Settings") +#define REGSTR_PATH_FONTS TEXT("Display\\Fonts") +#define REGSTR_PATH_ENUM TEXT("Enum") +#define REGSTR_PATH_ROOT TEXT("Enum\\Root") +#define REGSTR_PATH_SERVICES TEXT("System\\CurrentControlSet\\Services") +#define REGSTR_PATH_VXD TEXT("System\\CurrentControlSet\\Services\\VxD") +#define REGSTR_PATH_IOS TEXT("System\\CurrentControlSet\\Services\\VxD\\IOS") +#define REGSTR_PATH_VMM TEXT("System\\CurrentControlSet\\Services\\VxD\\VMM") +#define REGSTR_PATH_VPOWERD TEXT("System\\CurrentControlSet\\Services\\VxD\\VPOWERD") +#define REGSTR_PATH_VNETSUP TEXT("System\\CurrentControlSet\\Services\\VxD\\VNETSUP") +#define REGSTR_PATH_NWREDIR TEXT("System\\CurrentControlSet\\Services\\VxD\\NWREDIR") +#define REGSTR_PATH_NCPSERVER TEXT("System\\CurrentControlSet\\Services\\NcpServer\\Parameters") +#define REGSTR_PATH_IOARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IOArb") +#define REGSTR_PATH_ADDRARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\AddrArb") +#define REGSTR_PATH_DMAARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\DMAArb") +#define REGSTR_PATH_IRQARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IRQArb") +#define REGSTR_PATH_CODEPAGE TEXT("System\\CurrentControlSet\\Control\\Nls\\Codepage") +#define REGSTR_PATH_FILESYSTEM TEXT("System\\CurrentControlSet\\Control\\FileSystem") +#define REGSTR_PATH_FILESYSTEM_NOVOLTRACK TEXT("System\\CurrentControlSet\\Control\\FileSystem\\NoVolTrack") +#define REGSTR_PATH_CDFS TEXT("System\\CurrentControlSet\\Control\\FileSystem\\CDFS") +#define REGSTR_PATH_WINBOOT TEXT("System\\CurrentControlSet\\Control\\WinBoot") +#define REGSTR_PATH_INSTALLEDFILES TEXT("System\\CurrentControlSet\\Control\\InstalledFiles") +#define REGSTR_PATH_VMM32FILES TEXT("System\\CurrentControlSet\\Control\\VMM32Files") +#define REGSTR_MAX_VALUE_LENGTH 256 +#define REGSTR_VAL_BITSPERPIXEL TEXT("BitsPerPixel") +#define REGSTR_VAL_RESOLUTION TEXT("Resolution") +#define REGSTR_VAL_DPILOGICALX TEXT("DPILogicalX") +#define REGSTR_VAL_DPILOGICALY TEXT("DPILogicalY") +#define REGSTR_VAL_DPIPHYSICALX TEXT("DPIPhysicalX") +#define REGSTR_VAL_DPIPHYSICALY TEXT("DPIPhysicalY") +#define REGSTR_VAL_REFRESHRATE TEXT("RefreshRate") +#define REGSTR_VAL_DISPLAYFLAGS TEXT("DisplayFlags") +#define REGSTR_PATH_CONTROLPANEL TEXT("Control Panel") +#define REGSTR_PATH_CONTROLSFOLDER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Controls Folder") +#define REGSTR_VAL_DOSCP TEXT("OEMCP") +#define REGSTR_VAL_WINCP TEXT("ACP") +#define REGSTR_PATH_DYNA_ENUM TEXT("Config Manager\\Enum") +#define REGSTR_VAL_HARDWARE_KEY TEXT("HardWareKey") +#define REGSTR_VAL_ALLOCATION TEXT("Allocation") +#define REGSTR_VAL_PROBLEM TEXT("Problem") +#define REGSTR_VAL_STATUS TEXT("Status") +#define REGSTR_VAL_DONTUSEMEM TEXT("DontAllocLastMem") +#define REGSTR_VAL_SYSTEMROOT TEXT("SystemRoot") +#define REGSTR_VAL_BOOTCOUNT TEXT("BootCount") +#define REGSTR_VAL_REALNETSTART TEXT("RealNetStart") +#define REGSTR_VAL_MEDIA TEXT("MediaPath") +#define REGSTR_VAL_CONFIG TEXT("ConfigPath") +#define REGSTR_VAL_DEVICEPATH TEXT("DevicePath") +#define REGSTR_VAL_SRCPATH TEXT("SourcePath") +#define REGSTR_VAL_OLDWINDIR TEXT("OldWinDir") +#define REGSTR_VAL_SETUPFLAGS TEXT("SetupFlags") +#define REGSTR_VAL_REGOWNER TEXT("RegisteredOwner") +#define REGSTR_VAL_REGORGANIZATION TEXT("RegisteredOrganization") +#define REGSTR_VAL_LICENSINGINFO TEXT("LicensingInfo") +#define REGSTR_VAL_OLDMSDOSVER TEXT("OldMSDOSVer") +#define REGSTR_VAL_FIRSTINSTALLDATETIME TEXT("FirstInstallDateTime") +#define REGSTR_VAL_INSTALLTYPE TEXT("InstallType") +#define REGSTR_VAL_WRAPPER TEXT("Wrapper") +#define IT_COMPACT 0 +#define IT_TYPICAL 1 +#define IT_PORTABLE 2 +#define IT_CUSTOM 3 +#define REGSTR_KEY_SETUP TEXT("\\Setup") +#define REGSTR_VAL_BOOTDIR TEXT("BootDir") +#define REGSTR_VAL_WINBOOTDIR TEXT("WinbootDir") +#define REGSTR_VAL_WINDIR TEXT("WinDir") +#define REGSTR_VAL_APPINSTPATH TEXT("AppInstallPath") +#define REGSTR_PATH_EBD REGSTR_PATH_SETUP REGSTR_KEY_SETUP TEXT("\\EBD") +#define REGSTR_KEY_EBDFILESLOCAL TEXT("EBDFilesLocale") +#define REGSTR_KEY_EBDFILESKEYBOARD TEXT("EBDFilesKeyboard") +#define REGSTR_KEY_EBDAUTOEXECBATLOCAL TEXT("EBDAutoexecBatLocale") +#define REGSTR_KEY_EBDAUTOEXECBATKEYBOARD TEXT("EBDAutoexecBatKeyboard") +#define REGSTR_KEY_EBDCONFIGSYSLOCAL TEXT("EBDConfigSysLocale") +#define REGSTR_KEY_EBDCONFIGSYSKEYBOARD TEXT("EBDConfigSysKeyboard") +#define REGSTR_VAL_MSDOSMODE TEXT("MSDOSMode") +#define REGSTR_VAL_MSDOSMODEDISCARD TEXT("Discard") +#define REGSTR_VAL_DOSOPTGLOBALFLAGS TEXT("GlobalFlags") +#define DOSOPTGF_DEFCLEAN 1 +#define REGSTR_VAL_DOSOPTFLAGS TEXT("Flags") +#define REGSTR_VAL_OPTORDER TEXT("Order") +#define REGSTR_VAL_CONFIGSYS TEXT("Config.Sys") +#define REGSTR_VAL_AUTOEXEC TEXT("Autoexec.Bat") +#define REGSTR_VAL_STDDOSOPTION TEXT("StdOption") +#define REGSTR_VAL_DOSOPTTIP TEXT("TipText") +#define DOSOPTF_DEFAULT 1 +#define DOSOPTF_SUPPORTED 2 +#define DOSOPTF_ALWAYSUSE 4 +#define DOSOPTF_USESPMODE 8 +#define DOSOPTF_PROVIDESUMB 16 +#define DOSOPTF_NEEDSETUP 32 +#define DOSOPTF_INDOSSTART 64 +#define DOSOPTF_MULTIPLE 128 +#define SUF_FIRSTTIME 1 +#define SUF_EXPRESS 2 +#define SUF_BATCHINF 4 +#define SUF_CLEAN 8 +#define SUF_INSETUP 16 +#define SUF_NETSETUP 32 +#define SUF_NETHDBOOT 64 +#define SUF_NETRPLBOOT 128 +#define SUF_SBSCOPYOK 256 +#define REGSTR_VAL_DOSPAGER TEXT("DOSPager") +#define REGSTR_VAL_VXDGROUPS TEXT("VXDGroups") +#define REGSTR_VAL_VPOWERDFLAGS TEXT("Flags") +#define VPDF_DISABLEPWRMGMT 1 +#define VPDF_FORCEAPM10MODE 2 +#define VPDF_SKIPINTELSLCHECK 4 +#define VPDF_DISABLEPWRSTATUSPOLL 8 +#define REGSTR_VAL_WORKGROUP TEXT("Workgroup") +#define REGSTR_VAL_DIRECTHOST TEXT("DirectHost") +#define REGSTR_VAL_FILESHARING TEXT("FileSharing") +#define REGSTR_VAL_PRINTSHARING TEXT("PrintSharing") +#define REGSTR_VAL_FIRSTNETDRIVE TEXT("FirstNetworkDrive") +#define REGSTR_VAL_MAXCONNECTIONS TEXT("MaxConnections") +#define REGSTR_VAL_APISUPPORT TEXT("APISupport") +#define REGSTR_VAL_MAXRETRY TEXT("MaxRetry") +#define REGSTR_VAL_MINRETRY TEXT("MinRetry") +#define REGSTR_VAL_SUPPORTLFN TEXT("SupportLFN") +#define REGSTR_VAL_SUPPORTBURST TEXT("SupportBurst") +#define REGSTR_VAL_SUPPORTTUNNELLING TEXT("SupportTunnelling") +#define REGSTR_VAL_FULLTRACE TEXT("FullTrace") +#define REGSTR_VAL_READCACHING TEXT("ReadCaching") +#define REGSTR_VAL_SHOWDOTS TEXT("ShowDots") +#define REGSTR_VAL_GAPTIME TEXT("GapTime") +#define REGSTR_VAL_SEARCHMODE TEXT("SearchMode") +#define REGSTR_VAL_SHELLVERSION TEXT("ShellVersion") +#define REGSTR_VAL_MAXLIP TEXT("MaxLIP") +#define REGSTR_VAL_PRESERVECASE TEXT("PreserveCase") +#define REGSTR_VAL_OPTIMIZESFN TEXT("OptimizeSFN") +#define REGSTR_VAL_NCP_BROWSEMASTER TEXT("BrowseMaster") +#define REGSTR_VAL_NCP_USEPEERBROWSING TEXT("Use_PeerBrowsing") +#define REGSTR_VAL_NCP_USESAP TEXT("Use_Sap") +#define REGSTR_VAL_WIN31FILESYSTEM TEXT("Win31FileSystem") +#define REGSTR_VAL_PRESERVELONGNAMES TEXT("PreserveLongNames") +#define REGSTR_VAL_DRIVEWRITEBEHIND TEXT("DriveWriteBehind") +#define REGSTR_VAL_ASYNCFILECOMMIT TEXT("AsyncFileCommit") +#define REGSTR_VAL_PATHCACHECOUNT TEXT("PathCache") +#define REGSTR_VAL_NAMECACHECOUNT TEXT("NameCache") +#define REGSTR_VAL_CONTIGFILEALLOC TEXT("ContigFileAllocSize") +#define REGSTR_VAL_VOLIDLETIMEOUT TEXT("VolumeIdleTimeout") +#define REGSTR_VAL_BUFFIDLETIMEOUT TEXT("BufferIdleTimeout") +#define REGSTR_VAL_BUFFAGETIMEOUT TEXT("BufferAgeTimeout") +#define REGSTR_VAL_NAMENUMERICTAIL TEXT("NameNumericTail") +#define REGSTR_VAL_READAHEADTHRESHOLD TEXT("ReadAheadThreshold") +#define REGSTR_VAL_DOUBLEBUFFER TEXT("DoubleBuffer") +#define REGSTR_VAL_SOFTCOMPATMODE TEXT("SoftCompatMode") +#define REGSTR_VAL_DRIVESPINDOWN TEXT("DriveSpinDown") +#define REGSTR_VAL_FORCEPMIO TEXT("ForcePMIO") +#define REGSTR_VAL_FORCERMIO TEXT("ForceRMIO") +#define REGSTR_VAL_LASTBOOTPMDRVS TEXT("LastBootPMDrvs") +#define REGSTR_VAL_VIRTUALHDIRQ TEXT("VirtualHDIRQ") +#define REGSTR_VAL_SRVNAMECACHECOUNT TEXT("ServerNameCacheMax") +#define REGSTR_VAL_SRVNAMECACHE TEXT("ServerNameCache") +#define REGSTR_VAL_SRVNAMECACHENETPROV TEXT("ServerNameCacheNumNets") +#define REGSTR_VAL_AUTOMOUNT TEXT("AutoMountDrives") +#define REGSTR_VAL_COMPRESSIONMETHOD TEXT("CompressionAlgorithm") +#define REGSTR_VAL_COMPRESSIONTHRESHOLD TEXT("CompressionThreshold") +#define REGSTR_VAL_CDCACHESIZE TEXT("CacheSize") +#define REGSTR_VAL_CDPREFETCH TEXT("Prefetch") +#define REGSTR_VAL_CDPREFETCHTAIL TEXT("PrefetchTail") +#define REGSTR_VAL_CDRAWCACHE TEXT("RawCache") +#define REGSTR_VAL_CDEXTERRORS TEXT("ExtendedErrors") +#define REGSTR_VAL_CDSVDSENSE TEXT("SVDSense") +#define REGSTR_VAL_CDSHOWVERSIONS TEXT("ShowVersions") +#define REGSTR_VAL_CDCOMPATNAMES TEXT("MSCDEXCompatNames") +#define REGSTR_VAL_CDNOREADAHEAD TEXT("NoReadAhead") +#define REGSTR_VAL_SCSI TEXT("SCSI\\") +#define REGSTR_VAL_ESDI TEXT("ESDI\\") +#define REGSTR_VAL_FLOP TEXT("FLOP\\") +#define REGSTR_VAL_DISK TEXT("GenDisk") +#define REGSTR_VAL_CDROM TEXT("GenCD") +#define REGSTR_VAL_TAPE TEXT("TAPE") +#define REGSTR_VAL_SCANNER TEXT("SCANNER") +#define REGSTR_VAL_FLOPPY TEXT("FLOPPY") +#define REGSTR_VAL_SCSITID TEXT("SCSITargetID") +#define REGSTR_VAL_SCSILUN TEXT("SCSILUN") +#define REGSTR_VAL_REVLEVEL TEXT("RevisionLevel") +#define REGSTR_VAL_PRODUCTID TEXT("ProductId") +#define REGSTR_VAL_PRODUCTTYPE TEXT("ProductType") +#define REGSTR_VAL_DEVTYPE TEXT("DeviceType") +#define REGSTR_VAL_REMOVABLE TEXT("Removable") +#define REGSTR_VAL_CURDRVLET TEXT("CurrentDriveLetterAssignment") +#define REGSTR_VAL_USRDRVLET TEXT("UserDriveLetterAssignment") +#define REGSTR_VAL_SYNCDATAXFER TEXT("SyncDataXfer") +#define REGSTR_VAL_AUTOINSNOTE TEXT("AutoInsertNotification") +#define REGSTR_VAL_DISCONNECT TEXT("Disconnect") +#define REGSTR_VAL_INT13 TEXT("Int13") +#define REGSTR_VAL_PMODE_INT13 TEXT("PModeInt13") +#define REGSTR_VAL_USERSETTINGS TEXT("AdapterSettings") +#define REGSTR_VAL_NOIDE TEXT("NoIDE") +#define REGSTR_VAL_DISKCLASSNAME TEXT("DiskDrive") +#define REGSTR_VAL_CDROMCLASSNAME TEXT("CDROM") +#define REGSTR_VAL_FORCELOAD TEXT("ForceLoadPD") +#define REGSTR_VAL_FORCEFIFO TEXT("ForceFIFO") +#define REGSTR_VAL_FORCECL TEXT("ForceChangeLine") +#define REGSTR_VAL_NOUSECLASS TEXT("NoUseClass") +#define REGSTR_VAL_NOINSTALLCLASS TEXT("NoInstallClass") +#define REGSTR_VAL_NODISPLAYCLASS TEXT("NoDisplayClass") +#define REGSTR_VAL_SILENTINSTALL TEXT("SilentInstall") +#define REGSTR_KEY_PCMCIA_CLASS TEXT("PCMCIA") +#define REGSTR_KEY_SCSI_CLASS TEXT("SCSIAdapter") +#define REGSTR_KEY_PORTS_CLASS TEXT("ports") +#define REGSTR_KEY_MEDIA_CLASS TEXT("MEDIA") +#define REGSTR_KEY_DISPLAY_CLASS TEXT("Display") +#define REGSTR_KEY_KEYBOARD_CLASS TEXT("Keyboard") +#define REGSTR_KEY_MOUSE_CLASS TEXT("Mouse") +#define REGSTR_KEY_MONITOR_CLASS TEXT("Monitor") +#define REGSTR_VAL_PCMCIA_OPT TEXT("Options") +#define PCMCIA_OPT_HAVE_SOCKET 1 +#define PCMCIA_OPT_AUTOMEM 4 +#define PCMCIA_OPT_NO_SOUND 8 +#define PCMCIA_OPT_NO_AUDIO 16 +#define PCMCIA_OPT_NO_APMREMOVE 32 +#define REGSTR_VAL_PCMCIA_MEM TEXT("Memory") +#define PCMCIA_DEF_MEMBEGIN 0xC0000 +#define PCMCIA_DEF_MEMEND 0xFFFFFF +#define PCMCIA_DEF_MEMLEN 0x1000 +#define REGSTR_VAL_PCMCIA_ALLOC TEXT("AllocMemWin") +#define REGSTR_VAL_PCMCIA_ATAD TEXT("ATADelay") +#define REGSTR_VAL_PCMCIA_SIZ TEXT("MinRegionSize") +#define PCMCIA_DEF_MIN_REGION 0x10000 +#define REGSTR_VAL_P1284MDL TEXT("Model") +#define REGSTR_VAL_P1284MFG TEXT("Manufacturer") +#define REGSTR_VAL_ISAPNP TEXT("ISAPNP") +#define REGSTR_VAL_ISAPNP_RDP_OVERRIDE TEXT("RDPOverRide") +#define REGSTR_VAL_PCI TEXT("PCI") +#define REGSTR_PCI_OPTIONS TEXT("Options") +#define REGSTR_PCI_DUAL_IDE TEXT("PCIDualIDE") +#define PCI_OPTIONS_USE_BIOS 1 +#define PCI_OPTIONS_USE_IRQ_STEERING 2 +#define PCI_FLAG_NO_VIDEO_IRQ 1 +#define PCI_FLAG_PCMCIA_WANT_IRQ 2 +#define PCI_FLAG_DUAL_IDE 4 +#define PCI_FLAG_NO_ENUM_AT_ALL 8 +#define PCI_FLAG_ENUM_NO_RESOURCE 16 +#define PCI_FLAG_NEED_DWORD_ACCESS 32 +#define PCI_FLAG_SINGLE_FUNCTION 64 +#define PCI_FLAG_ALWAYS_ENABLED 128 +#define PCI_FLAG_IS_IDE 256 +#define PCI_FLAG_IS_VIDEO 512 +#define PCI_FLAG_FAIL_START 1024 +#define REGSTR_KEY_CRASHES TEXT("Crashes") +#define REGSTR_KEY_DANGERS TEXT("Dangers") +#define REGSTR_KEY_DETMODVARS TEXT("DetModVars") +#define REGSTR_KEY_NDISINFO TEXT("NDISInfo") +#define REGSTR_VAL_PROTINIPATH TEXT("ProtIniPath") +#define REGSTR_VAL_RESOURCES TEXT("Resources") +#define REGSTR_VAL_CRASHFUNCS TEXT("CrashFuncs") +#define REGSTR_VAL_CLASS TEXT("Class") +#define REGSTR_VAL_DEVDESC TEXT("DeviceDesc") +#define REGSTR_VAL_BOOTCONFIG TEXT("BootConfig") +#define REGSTR_VAL_DETFUNC TEXT("DetFunc") +#define REGSTR_VAL_DETFLAGS TEXT("DetFlags") +#define REGSTR_VAL_COMPATIBLEIDS TEXT("CompatibleIDs") +#define REGSTR_VAL_DETCONFIG TEXT("DetConfig") +#define REGSTR_VAL_VERIFYKEY TEXT("VerifyKey") +#define REGSTR_VAL_COMINFO TEXT("ComInfo") +#define REGSTR_VAL_INFNAME TEXT("InfName") +#define REGSTR_VAL_CARDSPECIFIC TEXT("CardSpecific") +#define REGSTR_VAL_NETOSTYPE TEXT("NetOSType") +#define REGSTR_DATA_NETOS_NDIS TEXT("NDIS") +#define REGSTR_DATA_NETOS_ODI TEXT("ODI") +#define REGSTR_DATA_NETOS_IPX TEXT("IPX") +#define REGSTR_VAL_MFG TEXT("Mfg") +#define REGSTR_VAL_SCAN_ONLY_FIRST TEXT("ScanOnlyFirstDrive") +#define REGSTR_VAL_SHARE_IRQ TEXT("ForceIRQSharing") +#define REGSTR_VAL_NONSTANDARD_ATAPI TEXT("NonStandardATAPI") +#define REGSTR_VAL_IDE_FORCE_SERIALIZE TEXT("ForceSerialization") +#define REGSTR_VAL_MAX_HCID_LEN 1024 +#define REGSTR_VAL_HWREV TEXT("HWRevision") +#define REGSTR_VAL_ENABLEINTS TEXT("EnableInts") +#define REGDF_NOTDETIO 1 +#define REGDF_NOTDETMEM 2 +#define REGDF_NOTDETIRQ 4 +#define REGDF_NOTDETDMA 8 +#define REGDF_NOTDETALL (REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA) +#define REGDF_NEEDFULLCONFIG 16 +#define REGDF_GENFORCEDCONFIG 32 +#define REGDF_NODETCONFIG 0x8000 +#define REGDF_CONFLICTIO 0x10000 +#define REGDF_CONFLICTMEM 0x20000 +#define REGDF_CONFLICTIRQ 0x40000 +#define REGDF_CONFLICTDMA 0x80000 +#define REGDF_CONFLICTALL (REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA) +#define REGDF_MAPIRQ2TO9 0x100000 +#define REGDF_NOTVERIFIED 0x80000000 +#define REGSTR_VAL_APMBIOSVER TEXT("APMBiosVer") +#define REGSTR_VAL_APMFLAGS TEXT("APMFlags") +#define REGSTR_VAL_SLSUPPORT TEXT("SLSupport") +#define REGSTR_VAL_MACHINETYPE TEXT("MachineType") +#define REGSTR_VAL_SETUPMACHINETYPE TEXT("SetupMachineType") +#define REGSTR_MACHTYPE_UNKNOWN TEXT("Unknown") +#define REGSTR_MACHTYPE_IBMPC TEXT("IBM PC") +#define REGSTR_MACHTYPE_IBMPCJR TEXT("IBM PCjr") +#define REGSTR_MACHTYPE_IBMPCCONV TEXT("IBM PC Convertible") +#define REGSTR_MACHTYPE_IBMPCXT TEXT("IBM PC/XT") +#define REGSTR_MACHTYPE_IBMPCXT_286 TEXT("IBM PC/XT 286") +#define REGSTR_MACHTYPE_IBMPCAT TEXT("IBM PC/AT") +#define REGSTR_MACHTYPE_IBMPS2_25 TEXT("IBM PS/2-25") +#define REGSTR_MACHTYPE_IBMPS2_30_286 TEXT("IBM PS/2-30 286") +#define REGSTR_MACHTYPE_IBMPS2_30 TEXT("IBM PS/2-30") +#define REGSTR_MACHTYPE_IBMPS2_50 TEXT("IBM PS/2-50") +#define REGSTR_MACHTYPE_IBMPS2_50Z TEXT("IBM PS/2-50Z") +#define REGSTR_MACHTYPE_IBMPS2_55SX TEXT("IBM PS/2-55SX") +#define REGSTR_MACHTYPE_IBMPS2_60 TEXT("IBM PS/2-60") +#define REGSTR_MACHTYPE_IBMPS2_65SX TEXT("IBM PS/2-65SX") +#define REGSTR_MACHTYPE_IBMPS2_70 TEXT("IBM PS/2-70") +#define REGSTR_MACHTYPE_IBMPS2_P70 TEXT("IBM PS/2-P70") +#define REGSTR_MACHTYPE_IBMPS2_70_80 TEXT("IBM PS/2-70/80") +#define REGSTR_MACHTYPE_IBMPS2_80 TEXT("IBM PS/2-80") +#define REGSTR_MACHTYPE_IBMPS2_90 TEXT("IBM PS/2-90") +#define REGSTR_MACHTYPE_IBMPS1 TEXT("IBM PS/1") +#define REGSTR_MACHTYPE_PHOENIX_PCAT TEXT("Phoenix PC/AT Compatible") +#define REGSTR_MACHTYPE_HP_VECTRA TEXT("HP Vectra") +#define REGSTR_MACHTYPE_ATT_PC TEXT("AT&T PC") +#define REGSTR_MACHTYPE_ZENITH_PC TEXT("Zenith PC") +#define REGSTR_VAL_APMMENUSUSPEND TEXT("APMMenuSuspend") +#define APMMENUSUSPEND_DISABLED 0 +#define APMMENUSUSPEND_ENABLED 1 +#define APMMENUSUSPEND_UNDOCKED 2 +#define APMMENUSUSPEND_NOCHANGE 128 +#define REGSTR_VAL_BUSTYPE TEXT("BusType") +#define REGSTR_VAL_CPU TEXT("CPU") +#define REGSTR_VAL_NDP TEXT("NDP") +#define REGSTR_VAL_PNPBIOSVER TEXT("PnPBIOSVer") +#define REGSTR_VAL_PNPSTRUCOFFSET TEXT("PnPStrucOffset") +#define REGSTR_VAL_PCIBIOSVER TEXT("PCIBIOSVer") +#define REGSTR_VAL_HWMECHANISM TEXT("HWMechanism") +#define REGSTR_VAL_LASTPCIBUSNUM TEXT("LastPCIBusNum") +#define REGSTR_VAL_CONVMEM TEXT("ConvMem") +#define REGSTR_VAL_EXTMEM TEXT("ExtMem") +#define REGSTR_VAL_COMPUTERNAME TEXT("ComputerName") +#define REGSTR_VAL_BIOSNAME TEXT("BIOSName") +#define REGSTR_VAL_BIOSVERSION TEXT("BIOSVersion") +#define REGSTR_VAL_BIOSDATE TEXT("BIOSDate") +#define REGSTR_VAL_MODEL TEXT("Model") +#define REGSTR_VAL_SUBMODEL TEXT("Submodel") +#define REGSTR_VAL_REVISION TEXT("Revision") +#define REGSTR_VAL_FIFODEPTH TEXT("FIFODepth") +#define REGSTR_VAL_RDINTTHRESHOLD TEXT("RDIntThreshold") +#define REGSTR_VAL_WRINTTHRESHOLD TEXT("WRIntThreshold") +#define REGSTR_VAL_PRIORITY TEXT("Priority") +#define REGSTR_VAL_DRIVER TEXT("Driver") +#define REGSTR_VAL_FUNCDESC TEXT("FunctionDesc") +#define REGSTR_VAL_FORCEDCONFIG TEXT("ForcedConfig") +#define REGSTR_VAL_CONFIGFLAGS TEXT("ConfigFlags") +#define REGSTR_VAL_CSCONFIGFLAGS TEXT("CSConfigFlags") +#define CONFIGFLAG_DISABLED 1 +#define CONFIGFLAG_REMOVED 2 +#define CONFIGFLAG_MANUAL_INSTALL 4 +#define CONFIGFLAG_IGNORE_BOOT_LC 8 +#define CONFIGFLAG_NET_BOOT 16 +#define CONFIGFLAG_REINSTALL 32 +#define CONFIGFLAG_FAILEDINSTALL 64 +#define CONFIGFLAG_CANTSTOPACHILD 128 +#define CONFIGFLAG_OKREMOVEROM 256 +#define CONFIGFLAG_NOREMOVEEXIT 512 +#define CSCONFIGFLAG_BITS 7 +#define CSCONFIGFLAG_DISABLED 1 +#define CSCONFIGFLAG_DO_NOT_CREATE 2 +#define CSCONFIGFLAG_DO_NOT_START 4 +#define DMSTATEFLAG_APPLYTOALL 1 +#define REGSTR_VAL_ROOT_DEVNODE TEXT("HTREE\\ROOT\\0") +#define REGSTR_VAL_RESERVED_DEVNODE TEXT("HTREE\\RESERVED\\0") +#define REGSTR_PATH_READDATAPORT REGSTR_KEY_ISAENUM TEXT("\\ReadDataPort\\0") +#define REGSTR_PATH_MULTI_FUNCTION TEXT("MF") +#define REGSTR_VAL_RESOURCE_MAP TEXT("ResourceMap") +#define REGSTR_PATH_CHILD_PREFIX TEXT("Child") +#define NUM_RESOURCE_MAP 256 +#define REGSTR_VAL_MF_FLAGS TEXT("MFFlags") +#define MF_FLAGS_EVEN_IF_NO_RESOURCE 1 +#define MF_FLAGS_NO_CREATE_IF_NO_RESOURCE 2 +#define MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE 4 +#define MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED 8 +#define EISAFLAG_NO_IO_MERGE 1 +#define EISAFLAG_SLOT_IO_FIRST 2 +#define EISA_NO_MAX_FUNCTION 0xFF +#define NUM_EISA_RANGES 4 +#define REGSTR_VAL_DRVDESC TEXT("DriverDesc") +#define REGSTR_VAL_DEVLOADER TEXT("DevLoader") +#define REGSTR_VAL_STATICVXD TEXT("StaticVxD") +#define REGSTR_VAL_PROPERTIES TEXT("Properties") +#define REGSTR_VAL_MANUFACTURER TEXT("Manufacturer") +#define REGSTR_VAL_EXISTS TEXT("Exists") +#define REGSTR_VAL_CMENUMFLAGS TEXT("CMEnumFlags") +#define REGSTR_VAL_CMDRIVFLAGS TEXT("CMDrivFlags") +#define REGSTR_VAL_ENUMERATOR TEXT("Enumerator") +#define REGSTR_VAL_DEVICEDRIVER TEXT("DeviceDriver") +#define REGSTR_VAL_PORTNAME TEXT("PortName") +#define REGSTR_VAL_INFPATH TEXT("InfPath") +#define REGSTR_VAL_INFSECTION TEXT("InfSection") +#define REGSTR_VAL_POLLING TEXT("Polling") +#define REGSTR_VAL_DONTLOADIFCONFLICT TEXT("DontLoadIfConflict") +#define REGSTR_VAL_PORTSUBCLASS TEXT("PortSubClass") +#define REGSTR_VAL_NETCLEAN TEXT("NetClean") +#define REGSTR_VAL_IDE_NO_SERIALIZE TEXT("IDENoSerialize") +#define REGSTR_VAL_NOCMOSORFDPT TEXT("NoCMOSorFDPT") +#define REGSTR_VAL_COMVERIFYBASE TEXT("COMVerifyBase") +#define REGSTR_KEY_OVERRIDE TEXT("Override") +#define REGSTR_VAL_CONFIGMG TEXT("CONFIGMG") +#define REGSTR_VAL_SYSDM TEXT("SysDM") +#define REGSTR_VAL_SYSDMFUNC TEXT("SysDMFunc") +#define REGSTR_VAL_PRIVATE TEXT("Private") +#define REGSTR_VAL_PRIVATEFUNC TEXT("PrivateFunc") +#define REGSTR_VAL_DETECT TEXT("Detect") +#define REGSTR_VAL_DETECTFUNC TEXT("DetectFunc") +#define REGSTR_VAL_ASKFORCONFIG TEXT("AskForConfig") +#define REGSTR_VAL_ASKFORCONFIGFUNC TEXT("AskForConfigFunc") +#define REGSTR_VAL_WAITFORUNDOCK TEXT("WaitForUndock") +#define REGSTR_VAL_WAITFORUNDOCKFUNC TEXT("WaitForUndockFunc") +#define REGSTR_VAL_REMOVEROMOKAY TEXT("RemoveRomOkay") +#define REGSTR_VAL_REMOVEROMOKAYFUNC TEXT("RemoveRomOkayFunc") +#define REGSTR_VAL_CURCONFIG TEXT("CurrentConfig") +#define REGSTR_VAL_FRIENDLYNAME TEXT("FriendlyName") +#define REGSTR_VAL_CURRENTCONFIG TEXT("CurrentConfig") +#define REGSTR_VAL_MAP TEXT("Map") +#define REGSTR_VAL_ID TEXT("CurrentID") +#define REGSTR_VAL_DOCKED TEXT("CurrentDockedState") +#define REGSTR_VAL_CHECKSUM TEXT("CurrentChecksum") +#define REGSTR_VAL_HWDETECT TEXT("HardwareDetect") +#define REGSTR_VAL_INHIBITRESULTS TEXT("InhibitResults") +#define REGSTR_VAL_PROFILEFLAGS TEXT("ProfileFlags") +#define REGSTR_KEY_PCMCIA TEXT("PCMCIA\\") +#define REGSTR_KEY_PCUNKNOWN TEXT("UNKNOWN_MANUFACTURER") +#define REGSTR_VAL_PCSSDRIVER TEXT("Driver") +#define REGSTR_KEY_PCMTD TEXT("MTD-") +#define REGSTR_VAL_PCMTDRIVER TEXT("MTD") +#define REGSTR_VAL_HARDWAREID TEXT("HardwareID") +#define REGSTR_VAL_INSTALLER TEXT("Installer") +#define REGSTR_VAL_INSICON TEXT("Icon") +#define REGSTR_VAL_ENUMPROPPAGES TEXT("EnumPropPages") +#define REGSTR_VAL_BASICPROPERTIES TEXT("BasicProperties") +#define REGSTR_VAL_PRIVATEPROBLEM TEXT("PrivateProblem") +#define REGSTR_KEY_CURRENT TEXT("Current") +#define REGSTR_KEY_DEFAULT TEXT("Default") +#define REGSTR_KEY_MODES TEXT("Modes") +#define REGSTR_VAL_MODE TEXT("Mode") +#define REGSTR_VAL_BPP TEXT("BPP") +#define REGSTR_VAL_HRES TEXT("HRes") +#define REGSTR_VAL_VRES TEXT("VRes") +#define REGSTR_VAL_FONTSIZE TEXT("FontSize") +#define REGSTR_VAL_DRV TEXT("drv") +#define REGSTR_VAL_GRB TEXT("grb") +#define REGSTR_VAL_VDD TEXT("vdd") +#define REGSTR_VAL_VER TEXT("Ver") +#define REGSTR_VAL_MAXRES TEXT("MaxResolution") +#define REGSTR_VAL_DPMS TEXT("DPMS") +#define REGSTR_VAL_RESUMERESET TEXT("ResumeReset") +#define REGSTR_VAL_DESCRIPTION TEXT("Description") +#define REGSTR_KEY_SYSTEM TEXT("System") +#define REGSTR_KEY_USER TEXT("User") +#define REGSTR_VAL_DPI TEXT("dpi") +#define REGSTR_VAL_PCICOPTIONS TEXT("PCICOptions") +#ifndef NEC_98 +#define PCIC_DEFAULT_IRQMASK 0x4EB8 +#else +#define PCIC_DEFAULT_IRQMASK 0x1468 +#endif +#define PCIC_DEFAULT_NUMSOCKETS 0 +#define REGSTR_VAL_PCICIRQMAP TEXT("PCICIRQMap") +#define REGSTR_PATH_APPEARANCE TEXT("Control Panel\\Appearance") +#define REGSTR_PATH_LOOKSCHEMES TEXT("Control Panel\\Appearance\\Schemes") +#define REGSTR_VAL_CUSTOMCOLORS TEXT("CustomColors") +#define REGSTR_PATH_SCREENSAVE TEXT("Control Panel\\Desktop") +#define REGSTR_VALUE_USESCRPASSWORD TEXT("ScreenSaveUsePassword") +#define REGSTR_VALUE_SCRPASSWORD TEXT("ScreenSave_Data") +#define REGSTR_VALUE_LOWPOWERTIMEOUT TEXT("ScreenSaveLowPowerTimeout") +#define REGSTR_VALUE_POWEROFFTIMEOUT TEXT("ScreenSavePowerOffTimeout") +#define REGSTR_VALUE_LOWPOWERACTIVE TEXT("ScreenSaveLowPowerActive") +#define REGSTR_VALUE_POWEROFFACTIVE TEXT("ScreenSavePowerOffActive") +#define REGSTR_PATH_WINDOWSAPPLETS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets") +#define REGSTR_PATH_SYSTRAY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray") +#define REGSTR_VAL_SYSTRAYSVCS TEXT("Services") +#define REGSTR_VAL_SYSTRAYBATFLAGS TEXT("PowerFlags") +#define REGSTR_VAL_SYSTRAYPCCARDFLAGS TEXT("PCMCIAFlags") +#define REGSTR_PATH_NETWORK_USERSETTINGS TEXT("Network") +#define REGSTR_KEY_NETWORK_PERSISTENT TEXT("\\Persistent") +#define REGSTR_KEY_NETWORK_RECENT TEXT("\\Recent") +#define REGSTR_VAL_REMOTE_PATH TEXT("RemotePath") +#define REGSTR_VAL_USER_NAME TEXT("UserName") +#define REGSTR_VAL_PROVIDER_NAME TEXT("ProviderName") +#define REGSTR_VAL_CONNECTION_TYPE TEXT("ConnectionType") +#define REGSTR_VAL_UPGRADE TEXT("Upgrade") +#define REGSTR_KEY_LOGON TEXT("\\Logon") +#define REGSTR_VAL_MUSTBEVALIDATED TEXT("MustBeValidated") +#define REGSTR_VAL_RUNLOGINSCRIPT TEXT("ProcessLoginScript") +#define REGSTR_KEY_NETWORKPROVIDER TEXT("\\NetworkProvider") +#define REGSTR_PATH_NW32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\NWNP32" REGSTR_KEY_NETWORKPROVIDER +#define REGSTR_PATH_MS32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\MSNP32" REGSTR_KEY_NETWORKPROVIDER +#define REGSTR_VAL_AUTHENT_AGENT TEXT("AuthenticatingAgent") +#define REGSTR_VAL_PREFREDIR TEXT("PreferredRedir") +#define REGSTR_VAL_AUTOSTART TEXT("AutoStart") +#define REGSTR_VAL_AUTOLOGON TEXT("AutoLogon") +#define REGSTR_VAL_NETCARD TEXT("Netcard") +#define REGSTR_VAL_TRANSPORT TEXT("Transport") +#define REGSTR_VAL_DYNAMIC TEXT("Dynamic") +#define REGSTR_VAL_TRANSITION TEXT("Transition") +#define REGSTR_VAL_STATICDRIVE TEXT("StaticDrive") +#define REGSTR_VAL_LOADHI TEXT("LoadHi") +#define REGSTR_VAL_LOADRMDRIVERS TEXT("LoadRMDrivers") +#define REGSTR_VAL_SETUPN TEXT("SetupN") +#define REGSTR_VAL_SETUPNPATH TEXT("SetupNPath") +#define REGSTR_VAL_WRKGRP_FORCEMAPPING TEXT("WrkgrpForceMapping") +#define REGSTR_VAL_WRKGRP_REQUIRED TEXT("WrkgrpRequired") +#define REGSTR_PATH_CURRENT_CONTROL_SET TEXT("System\\CurrentControlSet\\Control") +#define REGSTR_VAL_CURRENT_USER TEXT("Current User") +#define REGSTR_PATH_PWDPROVIDER TEXT("System\\CurrentControlSet\\Control\\PwdProvider") +#define REGSTR_VAL_PWDPROVIDER_PATH TEXT("ProviderPath") +#define REGSTR_VAL_PWDPROVIDER_DESC TEXT("Description") +#define REGSTR_VAL_PWDPROVIDER_CHANGEPWD TEXT("ChangePassword") +#define REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND TEXT("ChangePasswordHwnd") +#define REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS TEXT("GetPasswordStatus") +#define REGSTR_VAL_PWDPROVIDER_ISNP TEXT("NetworkProvider") +#define REGSTR_VAL_PWDPROVIDER_CHANGEORDER TEXT("ChangeOrder") +#define REGSTR_PATH_POLICIES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies") +#define REGSTR_PATH_UPDATE TEXT("System\\CurrentControlSet\\Control\\Update") +#define REGSTR_VALUE_ENABLE TEXT("Enable") +#define REGSTR_VALUE_VERBOSE TEXT("Verbose") +#define REGSTR_VALUE_NETPATH TEXT("NetworkPath") +#define REGSTR_VALUE_DEFAULTLOC TEXT("UseDefaultNetLocation") +#define REGSTR_KEY_NETWORK TEXT("Network") +#define REGSTR_KEY_SYSTEM TEXT("System") +#define REGSTR_KEY_PRINTERS TEXT("Printers") +#define REGSTR_KEY_WINOLDAPP TEXT("WinOldApp") +#define REGSTR_VAL_NOFILESHARING TEXT("NoFileSharing") +#define REGSTR_VAL_NOPRINTSHARING TEXT("NoPrintSharing") +#define REGSTR_VAL_NOFILESHARINGCTRL TEXT("NoFileSharingControl") +#define REGSTR_VAL_NOPRINTSHARINGCTRL TEXT("NoPrintSharingControl") +#define REGSTR_VAL_HIDESHAREPWDS TEXT("HideSharePwds") +#define REGSTR_VAL_DISABLEPWDCACHING TEXT("DisablePwdCaching") +#define REGSTR_VAL_ALPHANUMPWDS TEXT("AlphanumPwds") +#define REGSTR_VAL_NETSETUP_DISABLE TEXT("NoNetSetup") +#define REGSTR_VAL_NETSETUP_NOCONFIGPAGE TEXT("NoNetSetupConfigPage") +#define REGSTR_VAL_NETSETUP_NOIDPAGE TEXT("NoNetSetupIDPage") +#define REGSTR_VAL_NETSETUP_NOSECURITYPAGE TEXT("NoNetSetupSecurityPage") +#define REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE TEXT("NoVirtMemPage") +#define REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE TEXT("NoDevMgrPage") +#define REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE TEXT("NoConfigPage") +#define REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE TEXT("NoFileSysPage") +#define REGSTR_VAL_DISPCPL_NODISPCPL TEXT("NoDispCPL") +#define REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE TEXT("NoDispBackgroundPage") +#define REGSTR_VAL_DISPCPL_NOSCRSAVPAGE TEXT("NoDispScrSavPage") +#define REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE TEXT("NoDispAppearancePage") +#define REGSTR_VAL_DISPCPL_NOSETTINGSPAGE TEXT("NoDispSettingsPage") +#define REGSTR_VAL_SECCPL_NOSECCPL TEXT("NoSecCPL") +#define REGSTR_VAL_SECCPL_NOPWDPAGE TEXT("NoPwdPage") +#define REGSTR_VAL_SECCPL_NOADMINPAGE TEXT("NoAdminPage") +#define REGSTR_VAL_SECCPL_NOPROFILEPAGE TEXT("NoProfilePage") +#define REGSTR_VAL_PRINTERS_HIDETABS TEXT("NoPrinterTabs") +#define REGSTR_VAL_PRINTERS_NODELETE TEXT("NoDeletePrinter") +#define REGSTR_VAL_PRINTERS_NOADD TEXT("NoAddPrinter") +#define REGSTR_VAL_WINOLDAPP_DISABLED TEXT("Disabled") +#define REGSTR_VAL_WINOLDAPP_NOREALMODE TEXT("NoRealMode") +#define REGSTR_VAL_NOENTIRENETWORK TEXT("NoEntireNetwork") +#define REGSTR_VAL_NOWORKGROUPCONTENTS TEXT("NoWorkgroupContents") +#define REGSTR_VAL_MINPWDLEN TEXT("MinPwdLen") +#define REGSTR_VAL_PWDEXPIRATION TEXT("PwdExpiration") +#define REGSTR_VAL_WIN31PROVIDER TEXT("Win31Provider") +#define REGSTR_VAL_DISABLEREGTOOLS TEXT("DisableRegistryTools") +#define REGSTR_PATH_WINLOGON TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Winlogon") +#define REGSTR_VAL_LEGALNOTICECAPTION TEXT("LegalNoticeCaption") +#define REGSTR_VAL_LEGALNOTICETEXT TEXT("LegalNoticeText") +#define REGSTR_VAL_RESTRICTRUN TEXT("RestrictRun") +#define REGSTR_KEY_POL_USERS TEXT("Users") +#define REGSTR_KEY_POL_COMPUTERS TEXT("Computers") +#define REGSTR_KEY_POL_USERGROUPS TEXT("UserGroups") +#define REGSTR_KEY_POL_DEFAULT TEXT(".default") +#define REGSTR_KEY_POL_USERGROUPDATA TEXT("GroupData\\UserGroups\\Priority") +#define REGSTR_PATH_TIMEZONE TEXT("System\\CurrentControlSet\\Control\\TimeZoneInformation") +#define REGSTR_VAL_TZBIAS TEXT("Bias") +#define REGSTR_VAL_TZDLTBIAS TEXT("DaylightBias") +#define REGSTR_VAL_TZSTDBIAS TEXT("StandardBias") +#define REGSTR_VAL_TZACTBIAS TEXT("ActiveTimeBias") +#define REGSTR_VAL_TZDLTFLAG TEXT("DaylightFlag") +#define REGSTR_VAL_TZSTDSTART TEXT("StandardStart") +#define REGSTR_VAL_TZDLTSTART TEXT("DaylightStart") +#define REGSTR_VAL_TZDLTNAME TEXT("DaylightName") +#define REGSTR_VAL_TZSTDNAME TEXT("StandardName") +#define REGSTR_VAL_TZNOCHANGESTART TEXT("NoChangeStart") +#define REGSTR_VAL_TZNOCHANGEEND TEXT("NoChangeEnd") +#define REGSTR_VAL_TZNOAUTOTIME TEXT("DisableAutoDaylightTimeSet") +#define REGSTR_PATH_FLOATINGPOINTPROCESSOR TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor") +#define REGSTR_PATH_FLOATINGPOINTPROCESSOR0 TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor\\0") +#define REGSTR_PATH_COMPUTRNAME TEXT("System\\CurrentControlSet\\Control\\ComputerName\\ComputerName") +#define REGSTR_VAL_COMPUTRNAME TEXT("ComputerName") +#define REGSTR_PATH_SHUTDOWN TEXT("System\\CurrentControlSet\\Control\\Shutdown") +#define REGSTR_VAL_FORCEREBOOT TEXT("ForceReboot") +#define REGSTR_VAL_SETUPPROGRAMRAN TEXT("SetupProgramRan") +#define REGSTR_VAL_DOES_POLLING TEXT("PollingSupportNeeded") +#define REGSTR_PATH_KNOWNDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownDLLs") +#define REGSTR_PATH_KNOWN16DLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\Known16DLLs") +#define REGSTR_PATH_CHECKVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckVerDLLs") +#define REGSTR_PATH_WARNVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\WarnVerDLLs") +#define REGSTR_PATH_HACKINIFILE TEXT("System\\CurrentControlSet\\Control\\SessionManager\\HackIniFiles") +#define REGSTR_PATH_CHECKBADAPPS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps") +#define REGSTR_PATH_APPPATCH TEXT("System\\CurrentControlSet\\Control\\SessionManager\\AppPatches") +#define REGSTR_PATH_KNOWNVXDS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownVxDs") +#define REGSTR_VAL_UNINSTALLER_DISPLAYNAME TEXT("DisplayName") +#define REGSTR_VAL_UNINSTALLER_COMMANDLINE TEXT("UninstallString") +#define REGSTR_PATH_DESKTOP REGSTR_PATH_SCREENSAVE +#define REGSTR_PATH_MOUSE TEXT("Control Panel\\Mouse") +#define REGSTR_PATH_KEYBOARD TEXT("Control Panel\\Keyboard") +#define REGSTR_PATH_COLORS TEXT("Control Panel\\Colors") +#define REGSTR_PATH_SOUND TEXT("Control Panel\\Sound") +#define REGSTR_PATH_METRICS TEXT("Control Panel\\Desktop\\WindowMetrics") +#define REGSTR_PATH_ICONS TEXT("Control Panel\\Icons") +#define REGSTR_PATH_CURSORS TEXT("Control Panel\\Cursors") +#define REGSTR_PATH_CHECKDISK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive") +#define REGSTR_PATH_CHECKDISKSET TEXT("Settings") +#define REGSTR_PATH_CHECKDISKUDRVS TEXT("NoUnknownDDErrDrvs") +#define REGSTR_PATH_FAULT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Fault") +#define REGSTR_VAL_FAULT_LOGFILE TEXT("LogFile") +#define REGSTR_PATH_AEDEBUG TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug") +#define REGSTR_VAL_AEDEBUG_DEBUGGER TEXT("Debugger") +#define REGSTR_VAL_AEDEBUG_AUTO TEXT("Auto") +#define REGSTR_PATH_GRPCONV TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\GrpConv") +#define REGSTR_VAL_REGITEMDELETEMESSAGE TEXT("Removal Message") +#define REGSTR_PATH_LASTCHECK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastCheck") +#define REGSTR_PATH_LASTOPTIMIZE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastOptimize") +#define REGSTR_PATH_LASTBACKUP TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastBackup") +#define REGSTR_PATH_CHKLASTCHECK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastCheck") +#define REGSTR_PATH_CHKLASTSURFAN TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastSurfaceAnalysis") +#define DTRESULTOK 0 +#define DTRESULTFIX 1 +#define DTRESULTPROB 2 +#define DTRESULTPART 3 +#define REGSTR_KEY_SHARES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\LanMan") +#define REGSTR_VAL_SHARES_FLAGS TEXT("Flags") +#define REGSTR_VAL_SHARES_TYPE TEXT("Type") +#define REGSTR_VAL_SHARES_PATH TEXT("Path") +#define REGSTR_VAL_SHARES_REMARK TEXT("Remark") +#define REGSTR_VAL_SHARES_RW_PASS TEXT("Parm1") +#define REGSTR_VAL_SHARES_RO_PASS TEXT("Parm2") +#define REGSTR_PATH_PRINT TEXT("System\\CurrentControlSet\\Control\\Print") +#define REGSTR_PATH_PRINTERS TEXT("System\\CurrentControlSet\\Control\\Print\\Printers") +#define REGSTR_PATH_PROVIDERS TEXT("System\\CurrentControlSet\\Control\\Print\\Providers") +#define REGSTR_PATH_MONITORS TEXT("System\\CurrentControlSet\\Control\\Print\\Monitors") +#define REGSTR_PATH_ENVIRONMENTS TEXT("System\\CurrentControlSet\\Control\\Print\\Environments") +#define REGSTR_VAL_START_ON_BOOT TEXT("StartOnBoot") +#define REGSTR_VAL_PRINTERS_MASK TEXT("PrintersMask") +#define REGSTR_VAL_DOS_SPOOL_MASK TEXT("DOSSpoolMask") +#define REGSTR_KEY_CURRENT_ENV TEXT("\\Windows 4.0") +#define REGSTR_KEY_DRIVERS TEXT("\\Drivers") +#define REGSTR_KEY_PRINT_PROC TEXT("\\Print Processors") +#define REGSTR_PATH_EVENTLABELS TEXT("AppEvents\\EventLabels") +#define REGSTR_PATH_SCHEMES TEXT("AppEvents\\Schemes") +#define REGSTR_PATH_APPS REGSTR_PATH_SCHEMES TEXT("\\Apps") +#define REGSTR_PATH_APPS_DEFAULT REGSTR_PATH_SCHEMES TEXT("\\Apps\\.Default") +#define REGSTR_PATH_NAMES REGSTR_PATH_SCHEMES TEXT("\\Names") +#define REGSTR_PATH_MULTIMEDIA REGSTR_PATH_SETUP TEXT("\\Multimedia") +#define REGSTR_PATH_MULTIMEDIA_AUDIO TEXT("Software\\Microsoft\\Multimedia\\Audio") +#define REGSTR_PATH_MEDIARESOURCES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaResources") +#define REGSTR_PATH_MEDIAPROPERTIES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaProperties") +#define REGSTR_PATH_PRIVATEPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PrivateProperties") +#define REGSTR_PATH_PUBLICPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PublicProperties") +#define REGSTR_PATH_JOYOEM REGSTR_PATH_PRIVATEPROPERTIES TEXT("\\Joystick\\OEM") +#define REGSTR_PATH_JOYCONFIG REGSTR_PATH_MEDIARESOURCES TEXT("\\Joystick") +#define REGSTR_KEY_JOYCURR TEXT("CurrentJoystickSettings") +#define REGSTR_KEY_JOYSETTINGS TEXT("JoystickSettings") +#define REGSTR_VAL_JOYUSERVALUES TEXT("JoystickUserValues") +#define REGSTR_VAL_JOYCALLOUT TEXT("JoystickCallout") +#define REGSTR_VAL_JOYNCONFIG TEXT("Joystick%dConfiguration") +#define REGSTR_VAL_JOYNOEMNAME TEXT("Joystick%dOEMName") +#define REGSTR_VAL_JOYNOEMCALLOUT TEXT("Joystick%dOEMCallout") +#define REGSTR_VAL_JOYOEMCALLOUT TEXT("OEMCallout") +#define REGSTR_VAL_JOYOEMNAME TEXT("OEMName") +#define REGSTR_VAL_JOYOEMDATA TEXT("OEMData") +#define REGSTR_VAL_JOYOEMXYLABEL TEXT("OEMXYLabel") +#define REGSTR_VAL_JOYOEMZLABEL TEXT("OEMZLabel") +#define REGSTR_VAL_JOYOEMRLABEL TEXT("OEMRLabel") +#define REGSTR_VAL_JOYOEMPOVLABEL TEXT("OEMPOVLabel") +#define REGSTR_VAL_JOYOEMULABEL TEXT("OEMULabel") +#define REGSTR_VAL_JOYOEMVLABEL TEXT("OEMVLabel") +#define REGSTR_VAL_JOYOEMTESTMOVEDESC TEXT("OEMTestMoveDesc") +#define REGSTR_VAL_JOYOEMTESTBUTTONDESC TEXT("OEMTestButtonDesc") +#define REGSTR_VAL_JOYOEMTESTMOVECAP TEXT("OEMTestMoveCap") +#define REGSTR_VAL_JOYOEMTESTBUTTONCAP TEXT("OEMTestButtonCap") +#define REGSTR_VAL_JOYOEMTESTWINCAP TEXT("OEMTestWinCap") +#define REGSTR_VAL_JOYOEMCALCAP TEXT("OEMCalCap") +#define REGSTR_VAL_JOYOEMCALWINCAP TEXT("OEMCalWinCap") +#define REGSTR_VAL_JOYOEMCAL1 TEXT("OEMCal1") +#define REGSTR_VAL_JOYOEMCAL2 TEXT("OEMCal2") +#define REGSTR_VAL_JOYOEMCAL3 TEXT("OEMCal3") +#define REGSTR_VAL_JOYOEMCAL4 TEXT("OEMCal4") +#define REGSTR_VAL_JOYOEMCAL5 TEXT("OEMCal5") +#define REGSTR_VAL_JOYOEMCAL6 TEXT("OEMCal6") +#define REGSTR_VAL_JOYOEMCAL7 TEXT("OEMCal7") +#define REGSTR_VAL_JOYOEMCAL8 TEXT("OEMCal8") +#define REGSTR_VAL_JOYOEMCAL9 TEXT("OEMCal9") +#define REGSTR_VAL_JOYOEMCAL10 TEXT("OEMCal10") +#define REGSTR_VAL_JOYOEMCAL11 TEXT("OEMCal11") +#define REGSTR_VAL_JOYOEMCAL12 TEXT("OEMCal12") +#ifndef NEC_98 +#define REGSTR_KEY_ISAENUM TEXT("ISAPnP") +#define REGSTR_KEY_EISAENUM TEXT("EISA") +#define REGSTR_VAL_EISA_RANGES TEXT("EISARanges") +#define REGSTR_VAL_EISA_FUNCTIONS TEXT("EISAFunctions") +#define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("EISAFunctionsMask") +#define REGSTR_VAL_EISA_FLAGS TEXT("EISAFlags") +#define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("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 +typedef struct _DSKTLSYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; + WORD wResult; +} DSKTLSYSTEMTIME,*PDSKTLSYSTEMTIME,*LPDSKTLSYSTEMTIME; +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/richedit.h b/reactos/w32api/include/richedit.h new file mode 100644 index 00000000000..580b51191d9 --- /dev/null +++ b/reactos/w32api/include/richedit.h @@ -0,0 +1,513 @@ +#ifndef _RICHEDIT_H +#define _RICHEDIT_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#pragma pack(push,4) + +#ifdef UNICODE +#define RICHEDIT_CLASS L"RichEdit20W" +#else +#define RICHEDIT_CLASS "RichEdit20A" +#endif +#define RICHEDIT_CLASS10A "RICHEDIT" +#define CF_RTF TEXT("Rich Text Format") +#define CF_RTFNOOBJS TEXT("Rich Text Format Without Objects") +#define CF_RETEXTOBJ TEXT("RichEdit Text and Objects") +#define CFM_BOLD 1 +#define CFM_ITALIC 2 +#define CFM_UNDERLINE 4 +#define CFM_STRIKEOUT 8 +#define CFM_PROTECTED 16 +#define CFM_LINK 32 +#define CFM_SIZE 0x80000000 +#define CFM_COLOR 0x40000000 +#define CFM_FACE 0x20000000 +#define CFM_OFFSET 0x10000000 +#define CFM_CHARSET 0x08000000 +#define CFM_SUBSCRIPT 0x00030000 +#define CFM_SUPERSCRIPT 0x00030000 +#define CFM_EFFECTS (CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK) +#define CFE_BOLD 1 +#define CFE_ITALIC 2 +#define CFE_UNDERLINE 4 +#define CFE_STRIKEOUT 8 +#define CFE_PROTECTED 16 +#define CFE_AUTOCOLOR 0x40000000 +#define CFE_SUBSCRIPT 0x00010000 +#define CFE_SUPERSCRIPT 0x00020000 +#define IMF_FORCENONE 1 +#define IMF_FORCEENABLE 2 +#define IMF_FORCEDISABLE 4 +#define IMF_CLOSESTATUSWINDOW 8 +#define IMF_VERTICAL 32 +#define IMF_FORCEACTIVE 64 +#define IMF_FORCEINACTIVE 128 +#define IMF_FORCEREMEMBER 256 +#define SEL_EMPTY 0 +#define SEL_TEXT 1 +#define SEL_OBJECT 2 +#define SEL_MULTICHAR 4 +#define SEL_MULTIOBJECT 8 +#define MAX_TAB_STOPS 32 +#define PFM_ALIGNMENT 8 +#define PFM_NUMBERING 32 +#define PFM_OFFSET 4 +#define PFM_OFFSETINDENT 0x80000000 +#define PFM_RIGHTINDENT 2 +#define PFM_STARTINDENT 1 +#define PFM_TABSTOPS 16 +#define PFM_BORDER 2048 +#define PFM_LINESPACING 256 +#define PFM_NUMBERINGSTART 32768 +#define PFM_NUMBERINGSTYLE 8192 +#define PFM_NUMBERINGTAB 16384 +#define PFM_SHADING 4096 +#define PFM_SPACEAFTER 128 +#define PFM_SPACEBEFORE 64 +#define PFM_STYLE 1024 +#define PFM_DONOTHYPHEN 4194304 +#define PFM_KEEP 131072 +#define PFM_KEEPNEXT 262144 +#define PFM_NOLINENUMBER 1048576 +#define PFM_NOWIDOWCONTROL 2097152 +#define PFM_PAGEBREAKBEFORE 524288 +#define PFM_RTLPARA 65536 +#define PFM_SIDEBYSIDE 8388608 +#define PFM_TABLE 1073741824 +#define PFN_BULLET 1 +#define PFE_DONOTHYPHEN 64 +#define PFE_KEEP 2 +#define PFE_KEEPNEXT 4 +#define PFE_NOLINENUMBER 16 +#define PFE_NOWIDOWCONTROL 32 +#define PFE_PAGEBREAKBEFORE 8 +#define PFE_RTLPARA 1 +#define PFE_SIDEBYSIDE 128 +#define PFE_TABLE 16384 +#define PFA_LEFT 1 +#define PFA_RIGHT 2 +#define PFA_CENTER 3 +#define PFA_JUSTIFY 4 +#define PFA_FULL_INTERWORD 4 +#define SF_TEXT 1 +#define SF_RTF 2 +#define SF_RTFNOOBJS 3 +#define SF_TEXTIZED 4 +#define SF_UNICODE 16 +#define SF_USECODEPAGE 32 +#define SF_NCRFORNONASCII 64 +#define SF_RTFVAL 0x0700 +#define SFF_PWD 0x0800 +#define SFF_KEEPDOCINFO 0x1000 +#define SFF_PERSISTVIEWSCALE 0x2000 +#define SFF_PLAINRTF 0x4000 +#define SFF_SELECTION 0x8000 +#define WB_CLASSIFY 3 +#define WB_MOVEWORDLEFT 4 +#define WB_MOVEWORDRIGHT 5 +#define WB_LEFTBREAK 6 +#define WB_RIGHTBREAK 7 +#define WB_MOVEWORDPREV 4 +#define WB_MOVEWORDNEXT 5 +#define WB_PREVBREAK 6 +#define WB_NEXTBREAK 7 +#define WBF_WORDWRAP 16 +#define WBF_WORDBREAK 32 +#define WBF_OVERFLOW 64 +#define WBF_LEVEL1 128 +#define WBF_LEVEL2 256 +#define WBF_CUSTOM 512 +#define ES_DISABLENOSCROLL 8192 +#define ES_EX_NOCALLOLEINIT 16777216 +#define ES_NOIME 524288 +#define ES_NOOLEDRAGDROP 8 +#define ES_SAVESEL 32768 +#define ES_SELECTIONBAR 16777216 +#define ES_SELFIME 262144 +#define ES_SUNKEN 16384 +#define ES_VERTICAL 4194304 +#define EM_CANPASTE (WM_USER+50) +#define EM_DISPLAYBAND (WM_USER+51) +#define EM_EXGETSEL (WM_USER+52) +#define EM_EXLIMITTEXT (WM_USER+53) +#define EM_EXLINEFROMCHAR (WM_USER+54) +#define EM_EXSETSEL (WM_USER+55) +#define EM_FINDTEXT (WM_USER+56) +#define EM_FORMATRANGE (WM_USER+57) +#define EM_GETCHARFORMAT (WM_USER+58) +#define EM_GETEVENTMASK (WM_USER+59) +#define EM_GETOLEINTERFACE (WM_USER+60) +#define EM_GETPARAFORMAT (WM_USER+61) +#define EM_GETSELTEXT (WM_USER+62) +#define EM_HIDESELECTION (WM_USER+63) +#define EM_PASTESPECIAL (WM_USER+64) +#define EM_REQUESTRESIZE (WM_USER+65) +#define EM_SELECTIONTYPE (WM_USER+66) +#define EM_SETBKGNDCOLOR (WM_USER+67) +#define EM_SETCHARFORMAT (WM_USER+68) +#define EM_SETEVENTMASK (WM_USER+69) +#define EM_SETOLECALLBACK (WM_USER+70) +#define EM_SETPARAFORMAT (WM_USER+71) +#define EM_SETTARGETDEVICE (WM_USER+72) +#define EM_STREAMIN (WM_USER+73) +#define EM_STREAMOUT (WM_USER+74) +#define EM_GETTEXTRANGE (WM_USER+75) +#define EM_FINDWORDBREAK (WM_USER+76) +#define EM_SETOPTIONS (WM_USER+77) +#define EM_GETOPTIONS (WM_USER+78) +#define EM_FINDTEXTEX (WM_USER+79) +#define EM_GETWORDBREAKPROCEX (WM_USER+80) +#define EM_SETWORDBREAKPROCEX (WM_USER+81) +/* RichEdit 2.0 messages */ +#define EM_SETUNDOLIMIT (WM_USER+82) +#define EM_REDO (WM_USER+84) +#define EM_CANREDO (WM_USER+85) +#define EM_GETUNDONAME (WM_USER+86) +#define EM_GETREDONAME (WM_USER+87) +#define EM_STOPGROUPTYPING (WM_USER+88) +#define EM_SETTEXTMODE (WM_USER+89) +#define EM_GETTEXTMODE (WM_USER+90) +#define EM_AUTOURLDETECT (WM_USER+91) +#define EM_GETAUTOURLDETECT (WM_USER + 92) +#define EM_SETPALETTE (WM_USER + 93) +#define EM_GETTEXTEX (WM_USER+94) +#define EM_GETTEXTLENGTHEX (WM_USER+95) +#define EM_SHOWSCROLLBAR (WM_USER+96) +#define EM_SETTEXTEX (WM_USER + 97) +#define EM_SETPUNCTUATION (WM_USER + 100) +#define EM_GETPUNCTUATION (WM_USER + 101) +#define EM_SETWORDWRAPMODE (WM_USER + 102) +#define EM_GETWORDWRAPMODE (WM_USER + 103) +#define EM_SETIMECOLOR (WM_USER + 104) +#define EM_GETIMECOLOR (WM_USER + 105) +#define EM_SETIMEOPTIONS (WM_USER + 106) +#define EM_GETIMEOPTIONS (WM_USER + 107) +#define EM_SETLANGOPTIONS (WM_USER+120) +#define EM_GETLANGOPTIONS (WM_USER+121) +#define EM_GETIMECOMPMODE (WM_USER+122) +#define EM_FINDTEXTW (WM_USER + 123) +#define EM_FINDTEXTEXW (WM_USER + 124) +#define EM_RECONVERSION (WM_USER + 125) +#define EM_SETBIDIOPTIONS (WM_USER + 200) +#define EM_GETBIDIOPTIONS (WM_USER + 201) +#define EM_SETTYPOGRAPHYOPTIONS (WM_USER+202) +#define EM_GETTYPOGRAPHYOPTIONS (WM_USER+203) +#define EM_SETEDITSTYLE (WM_USER + 204) +#define EM_GETEDITSTYLE (WM_USER + 205) +#define EM_GETSCROLLPOS (WM_USER+221) +#define EM_SETSCROLLPOS (WM_USER+222) +#define EM_SETFONTSIZE (WM_USER+223) +#define EM_GETZOOM (WM_USER+224) +#define EM_SETZOOM (WM_USER+225) + +#define EN_CORRECTTEXT 1797 +#define EN_DROPFILES 1795 +#define EN_IMECHANGE 1799 +#define EN_LINK 1803 +#define EN_MSGFILTER 1792 +#define EN_OLEOPFAILED 1801 +#define EN_PROTECTED 1796 +#define EN_REQUESTRESIZE 1793 +#define EN_SAVECLIPBOARD 1800 +#define EN_SELCHANGE 1794 +#define EN_STOPNOUNDO 1798 +#define ENM_NONE 0 +#define ENM_CHANGE 1 +#define ENM_CORRECTTEXT 4194304 +#define ENM_DRAGDROPDONE 16 +#define ENM_DROPFILES 1048576 +#define ENM_IMECHANGE 8388608 +#define ENM_KEYEVENTS 65536 +#define ENM_LANGCHANGE 16777216 +#define ENM_LINK 67108864 +#define ENM_MOUSEEVENTS 131072 +#define ENM_OBJECTPOSITIONS 33554432 +#define ENM_PROTECTED 2097152 +#define ENM_REQUESTRESIZE 262144 +#define ENM_SCROLL 4 +#define ENM_SCROLLEVENTS 8 +#define ENM_SELCHANGE 524288 +#define ENM_UPDATE 2 +#define ECO_AUTOWORDSELECTION 1 +#define ECO_AUTOVSCROLL 64 +#define ECO_AUTOHSCROLL 128 +#define ECO_NOHIDESEL 256 +#define ECO_READONLY 2048 +#define ECO_WANTRETURN 4096 +#define ECO_SAVESEL 0x8000 +#define ECO_SELECTIONBAR 0x1000000 +#define ECO_VERTICAL 0x400000 +#define ECOOP_SET 1 +#define ECOOP_OR 2 +#define ECOOP_AND 3 +#define ECOOP_XOR 4 +#define SCF_DEFAULT 0 +#define SCF_SELECTION 1 +#define SCF_WORD 2 +#define SCF_ALL 4 +#define SCF_USEUIRULES 8 +#define TM_PLAINTEXT 1 +#define TM_RICHTEXT 2 +#define TM_SINGLELEVELUNDO 4 +#define TM_MULTILEVELUNDO 8 +#define TM_SINGLECODEPAGE 16 +#define TM_MULTICODEPAGE 32 +#define GT_DEFAULT 0 +#define GT_USECRLF 1 +#define yHeightCharPtsMost 1638 +#define lDefaultTab 720 + +typedef struct _charformat { + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char szFaceName[LF_FACESIZE]; +} CHARFORMATA; +typedef struct _charformatw { + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR szFaceName[LF_FACESIZE]; +} CHARFORMATW; +typedef struct _charformat2a { + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char szFaceName[LF_FACESIZE]; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} CHARFORMAT2A; +typedef struct _charformat2w { + UINT cbSize; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR szFaceName[LF_FACESIZE]; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} CHARFORMAT2W; +typedef struct _charrange { + LONG cpMin; + LONG cpMax; +} CHARRANGE; +typedef struct _compcolor { + COLORREF crText; + COLORREF crBackground; + DWORD dwEffects; +} COMPCOLOR; +typedef DWORD(CALLBACK *EDITSTREAMCALLBACK)(DWORD,PBYTE,LONG,LONG*); +typedef struct _editstream { + DWORD dwCookie; + DWORD dwError; + EDITSTREAMCALLBACK pfnCallback; +} EDITSTREAM; +typedef struct _encorrecttext { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} ENCORRECTTEXT; +typedef struct _endropfiles { + NMHDR nmhdr; + HANDLE hDrop; + LONG cp; + BOOL fProtected; +} ENDROPFILES; +typedef struct _enlink { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} ENLINK; +typedef struct { + NMHDR nmhdr; + LONG iob; + LONG lOper; + HRESULT hr; +} ENOLEOPFAILED; +typedef struct _enprotected { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} ENPROTECTED,*LPENPROTECTED; +typedef struct _ensaveclipboard { + NMHDR nmhdr; + LONG cObjectCount; + LONG cch; +} ENSAVECLIPBOARD; +typedef struct _findtextA { + CHARRANGE chrg; + LPSTR lpstrText; +} FINDTEXTA; +typedef struct _findtextW { + CHARRANGE chrg; + LPWSTR lpstrText; +} FINDTEXTW; +typedef struct _findtextexA { + CHARRANGE chrg; + LPSTR lpstrText; + CHARRANGE chrgText; +} FINDTEXTEXA; +typedef struct _findtextexW { + CHARRANGE chrg; + LPWSTR lpstrText; + CHARRANGE chrgText; +} FINDTEXTEXW; +typedef struct _formatrange { + HDC hdc; + HDC hdcTarget; + RECT rc; + RECT rcPage; + CHARRANGE chrg; +} FORMATRANGE; +typedef struct _msgfilter { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; +} MSGFILTER; +typedef struct _paraformat { + UINT cbSize; + DWORD dwMask; + WORD wNumbering; + WORD wReserved; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG rgxTabs[MAX_TAB_STOPS]; +} PARAFORMAT; +typedef struct _paraformat2 { + UINT cbSize; + DWORD dwMask; + WORD wNumbering; + WORD wEffects; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG rgxTabs[MAX_TAB_STOPS]; + 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; +} PARAFORMAT2; +typedef struct _selchange { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} SELCHANGE; +typedef struct _textrange { + CHARRANGE chrg; + LPSTR lpstrText; +} TEXTRANGEA; +typedef struct _textrangew { + CHARRANGE chrg; + LPWSTR lpstrText; +} TEXTRANGEW; +typedef struct _reqresize { + NMHDR nmhdr; + RECT rc; +} REQRESIZE; +typedef struct _repastespecial { + DWORD dwAspect; + DWORD dwParam; +} REPASTESPECIAL; +typedef struct _punctuation { + UINT iSize; + LPSTR szPunctuation; +} PUNCTUATION; +typedef struct _gettextex { + DWORD cb; + DWORD flags; + UINT codepage; + LPCSTR lpDefaultChar; + LPBOOL lpUsedDefaultChar; +} GETTEXTEX; +typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT); +/* Defines for EM_SETTYPOGRAPHYOPTIONS */ +#define TO_ADVANCEDTYPOGRAPHY 1 +#define TO_SIMPLELINEBREAK 2 +/* Defines for GETTEXTLENGTHEX */ +#define GTL_DEFAULT 0 +#define GTL_USECRLF 1 +#define GTL_PRECISE 2 +#define GTL_CLOSE 4 +#define GTL_NUMCHARS 8 +#define GTL_NUMBYTES 16 +typedef struct _gettextlengthex { + DWORD flags; + UINT codepage; +} GETTEXTLENGTHEX; +#ifdef UNICODE +typedef CHARFORMATW CHARFORMAT; +typedef CHARFORMAT2W CHARFORMAT2; +typedef FINDTEXTW FINDTEXT; +typedef FINDTEXTEXW FINDTEXTEX; +typedef TEXTRANGEW TEXTRANGE; +#else +typedef CHARFORMATA CHARFORMAT; +typedef CHARFORMAT2A CHARFORMAT2; +typedef FINDTEXTA FINDTEXT; +typedef FINDTEXTEXA FINDTEXTEX; +typedef TEXTRANGEA TEXTRANGE; +#endif +#pragma pack(pop) +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/richole.h b/reactos/w32api/include/richole.h new file mode 100644 index 00000000000..da2e336f867 --- /dev/null +++ b/reactos/w32api/include/richole.h @@ -0,0 +1,107 @@ +#ifndef _RICHOLE_H +#define _RICHOLE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#pragma pack(push,4) +#define REO_GETOBJ_NO_INTERFACES 0 +#define REO_GETOBJ_POLEOBJ 1 +#define REO_GETOBJ_PSTG 2 +#define REO_GETOBJ_POLESITE 4 +#define REO_GETOBJ_ALL_INTERFACES 7 +#define REO_CP_SELECTION ((ULONG)-1) +#define REO_IOB_SELECTION ((ULONG)-1) +#define REO_IOB_USE_CP ((ULONG)-2) +#define REO_NULL 0 +#define REO_READWRITEMASK 0x3FL +#define REO_DONTNEEDPALETTE 32 +#define REO_BLANK 16 +#define REO_DYNAMICSIZE 8 +#define REO_INVERTEDSELECT 4 +#define REO_BELOWBASELINE 2 +#define REO_RESIZABLE 1 +#define REO_LINK 0x80000000 +#define REO_STATIC 0x40000000 +#define REO_SELECTED 0x08000000 +#define REO_OPEN 0x4000000 +#define REO_INPLACEACTIVE 0x2000000 +#define REO_HILITED 0x1000000 +#define REO_LINKAVAILABLE 0x800000 +#define REO_GETMETAFILE 0x400000 +#define RECO_PASTE 0 +#define RECO_DROP 1 +#define RECO_COPY 2 +#define RECO_CUT 3 +#define RECO_DRAG 4 + +extern const GUID IID_IRichEditOle; +extern const GUID IID_IRichEditOleCallback; +#ifndef INITGUID +typedef struct _reobject { + DWORD cbStruct; + LONG cp; + CLSID clsid; + LPOLEOBJECT poleobj; + LPSTORAGE pstg; + LPOLECLIENTSITE polesite; + SIZEL sizel; + DWORD dvaspect; + DWORD dwFlags; + DWORD dwUser; +} REOBJECT; + +#undef INTERFACE +#define INTERFACE IRichEditOle +DECLARE_INTERFACE_(IRichEditOle, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE; + STDMETHOD_(LONG,GetObjectCount)(THIS) PURE; + STDMETHOD_(LONG,GetLinkCount)(THIS) PURE; + STDMETHOD(GetObject)(THIS_ LONG, REOBJECT*,DWORD) PURE; + STDMETHOD(InsertObject)(THIS_ REOBJECT*) PURE; + STDMETHOD(ConvertObject)(THIS_ LONG,REFCLSID,LPCSTR) PURE; + STDMETHOD(ActivateAs)(THIS_ REFCLSID,REFCLSID) PURE; + STDMETHOD(SetHostNames)(THIS_ LPCSTR,LPCSTR) PURE; + STDMETHOD(SetLinkAvailable)(THIS_ LONG,BOOL) PURE; + STDMETHOD(SetDvaspect)(THIS_ LONG,DWORD) PURE; + STDMETHOD(HandsOffStorage)(THIS_ LONG) PURE; + STDMETHOD(SaveCompleted)(THIS_ LONG,LPSTORAGE) PURE; + STDMETHOD(InPlaceDeactivate)(THIS) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(GetClipboardData)(THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE; + STDMETHOD(ImportDataObject)(THIS_ LPDATAOBJECT,CLIPFORMAT,HGLOBAL) PURE; +}; +typedef IRichEditOle *LPRICHEDITOLE; + +#undef INTERFACE +#define INTERFACE IRichEditOleCallback +DECLARE_INTERFACE_(IRichEditOleCallback, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetNewStorage)(THIS_ LPSTORAGE*) PURE; + STDMETHOD(GetInPlaceContext)(THIS_ LPOLEINPLACEFRAME*,LPOLEINPLACEUIWINDOW*,LPOLEINPLACEFRAMEINFO) PURE; + STDMETHOD(ShowContainerUI)(THIS_ BOOL) PURE; + STDMETHOD(QueryInsertObject)(THIS_ LPCLSID,LPSTORAGE,LONG) PURE; + STDMETHOD(DeleteObject)(THIS_ LPOLEOBJECT) PURE; + STDMETHOD(QueryAcceptData) (THIS_ LPDATAOBJECT,CLIPFORMAT*,DWORD,BOOL,HGLOBAL) PURE; + STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL) PURE; + STDMETHOD(GetClipboardData) (THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE; + STDMETHOD(GetDragDropEffect) (THIS_ BOOL,DWORD,PDWORD) PURE; + STDMETHOD(GetContextMenu) (THIS_ WORD,LPOLEOBJECT,CHARRANGE*,HMENU*) PURE; +}; +typedef IRichEditOleCallback FAR * LPRICHEDITOLECALLBACK; +#endif +#pragma pack(pop) +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpc.h b/reactos/w32api/include/rpc.h new file mode 100644 index 00000000000..0e3df5eaf1e --- /dev/null +++ b/reactos/w32api/include/rpc.h @@ -0,0 +1,59 @@ +#ifndef RPC_NO_WINDOWS_H +#include +#endif + +#ifndef _RPC_H +#define _RPC_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define __RPC_WIN32__ +#ifndef _WIN95 +#define __RPC_NT__ +#define RPC_UNICODE_SUPPORTED +#endif + +#ifndef __MIDL_USER_DEFINED +#define midl_user_allocate MIDL_user_allocate +#define midl_user_free MIDL_user_free +#define __MIDL_USER_DEFINED +#endif +#define RPC_UNICODE_SUPPORTED +#define __RPC_FAR +#define __RPC_API __stdcall +#define __RPC_USER __stdcall +#define __RPC_STUB __stdcall +#define RPC_ENTRY __stdcall +typedef void *I_RPC_HANDLE; +typedef long RPC_STATUS; + +#include +#include +#include + +#include + +/* SEH is not supported */ +#if 0 +#include +#define RpcTryExcept __try { +#define RpcExcept(x) } __except (x) { +#define RpcEndExcept } +#define RpcTryFinally __try { +#define RpcFinally } __finally { +#define RpcEndFinally } +#define RpcExceptionCode() GetExceptionCode() +#define RpcAbnormalTermination() AbnormalTermination() +#endif /* 0 */ + +RPC_STATUS RPC_ENTRY RpcImpersonateClient(RPC_BINDING_HANDLE); +RPC_STATUS RPC_ENTRY RpcRevertToSelf(void); +long RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpcdce.h b/reactos/w32api/include/rpcdce.h new file mode 100644 index 00000000000..f2adce40fed --- /dev/null +++ b/reactos/w32api/include/rpcdce.h @@ -0,0 +1,392 @@ +#ifndef _RPCDCE_H +#define _RPCDCE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include + +#define IN +#define OUT +#ifndef OPTIONAL +#define OPTIONAL +#endif +#define uuid_t UUID +#define rpc_binding_handle_t RPC_BINDING_HANDLE +#define rpc_binding_vector_t RPC_BINDING_VECTOR +#define uuid_vector_t UUID_VECTOR +#define RPC_C_BINDING_INFINITE_TIMEOUT 10 +#define RPC_C_BINDING_MIN_TIMEOUT 0 +#define RPC_C_BINDING_DEFAULT_TIMEOUT 5 +#define RPC_C_BINDING_MAX_TIMEOUT 9 +#define RPC_C_CANCEL_INFINITE_TIMEOUT (-1) +#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234 +#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10 +#define RPC_C_BIND_TO_ALL_NICS 1 +#define RPC_C_USE_INTERNET_PORT 1 +#define RPC_C_USE_INTRANET_PORT 2 +#define RPC_MGR_EPV void +#define RPC_C_STATS_CALLS_IN 0 +#define RPC_C_STATS_CALLS_OUT 1 +#define RPC_C_STATS_PKTS_IN 2 +#define RPC_C_STATS_PKTS_OUT 3 +#define RPC_IF_AUTOLISTEN 0x0001 +#define RPC_IF_OLE 2 +#define RPC_C_MGMT_INQ_IF_IDS 0 +#define RPC_C_MGMT_INQ_PRINC_NAME 1 +#define RPC_C_MGMT_INQ_STATS 2 +#define RPC_C_MGMT_IS_SERVER_LISTEN 3 +#define RPC_C_MGMT_STOP_SERVER_LISTEN 4 +#define RPC_C_EP_ALL_ELTS 0 +#define RPC_C_EP_MATCH_BY_IF 1 +#define RPC_C_EP_MATCH_BY_OBJ 2 +#define RPC_C_EP_MATCH_BY_BOTH 3 +#define RPC_C_VERS_ALL 1 +#define RPC_C_VERS_COMPATIBLE 2 +#define RPC_C_VERS_EXACT 3 +#define RPC_C_VERS_MAJOR_ONLY 4 +#define RPC_C_VERS_UPTO 5 +#define DCE_C_ERROR_STRING_LEN 256 +#define RPC_C_PARM_MAX_PACKET_LENGTH 1 +#define RPC_C_PARM_BUFFER_LENGTH 2 +#define RPC_C_AUTHN_LEVEL_DEFAULT 0 +#define RPC_C_AUTHN_LEVEL_NONE 1 +#define RPC_C_AUTHN_LEVEL_CONNECT 2 +#define RPC_C_AUTHN_LEVEL_CALL 3 +#define RPC_C_AUTHN_LEVEL_PKT 4 +#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5 +#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6 +#define RPC_C_IMP_LEVEL_ANONYMOUS 1 +#define RPC_C_IMP_LEVEL_IDENTIFY 2 +#define RPC_C_IMP_LEVEL_IMPERSONATE 3 +#define RPC_C_IMP_LEVEL_DELEGATE 4 +#define RPC_C_QOS_IDENTITY_STATIC 0 +#define RPC_C_QOS_IDENTITY_DYNAMIC 1 +#define RPC_C_QOS_CAPABILITIES_DEFAULT 0 +#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1 +#define RPC_C_PROTECT_LEVEL_DEFAULT(RPC_C_AUTHN_LEVEL_DEFAULT) +#define RPC_C_PROTECT_LEVEL_NONE(RPC_C_AUTHN_LEVEL_NONE) +#define RPC_C_PROTECT_LEVEL_CONNECT(RPC_C_AUTHN_LEVEL_CONNECT) +#define RPC_C_PROTECT_LEVEL_CALL(RPC_C_AUTHN_LEVEL_CALL) +#define RPC_C_PROTECT_LEVEL_PKT(RPC_C_AUTHN_LEVEL_PKT) +#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY(RPC_C_AUTHN_LEVEL_PKT_INTEGRITY) +#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY(RPC_C_AUTHN_LEVEL_PKT_PRIVACY) +#define RPC_C_AUTHN_NONE 0 +#define RPC_C_AUTHN_DCE_PRIVATE 1 +#define RPC_C_AUTHN_DCE_PUBLIC 2 +#define RPC_C_AUTHN_DEC_PUBLIC 4 +#define RPC_C_AUTHN_WINNT 10 +#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFF +#define RPC_C_SECURITY_QOS_VERSION L +#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1 +#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2 +#define RPC_C_AUTHZ_NONE 0 +#define RPC_C_AUTHZ_NAME 1 +#define RPC_C_AUTHZ_DCE 2 +#define RPC_C_AUTHZ_DEFAULT 0xFFFFFFFF + +typedef I_RPC_HANDLE RPC_BINDING_HANDLE; +typedef RPC_BINDING_HANDLE handle_t; +typedef struct _RPC_BINDING_VECTOR { + unsigned long Count; + RPC_BINDING_HANDLE BindingH[1]; +} RPC_BINDING_VECTOR; +typedef struct _UUID_VECTOR { + unsigned long Count; + UUID *Uuid[1]; +} UUID_VECTOR; +typedef void *RPC_IF_HANDLE; +typedef struct _RPC_IF_ID { + UUID Uuid; + unsigned short VersMajor; + unsigned short VersMinor; +} RPC_IF_ID; +typedef struct _RPC_POLICY { + unsigned int Length ; + unsigned long EndpointFlags ; + unsigned long NICFlags ; +} RPC_POLICY,*PRPC_POLICY ; +typedef void __RPC_USER RPC_OBJECT_INQ_FN(UUID*,UUID*,RPC_STATUS*); +typedef RPC_STATUS RPC_IF_CALLBACK_FN(RPC_IF_HANDLE,void*); +typedef struct { + unsigned int Count; + unsigned long Stats[1]; +} RPC_STATS_VECTOR; +typedef struct { + unsigned long Count; + RPC_IF_ID*IfId[1]; +} RPC_IF_ID_VECTOR; +typedef void *RPC_AUTH_IDENTITY_HANDLE; +typedef void *RPC_AUTHZ_HANDLE; +typedef struct _RPC_SECURITY_QOS { + unsigned long Version; + unsigned long Capabilities; + unsigned long IdentityTracking; + unsigned long ImpersonationType; +} RPC_SECURITY_QOS,*PRPC_SECURITY_QOS; +typedef struct _SEC_WINNT_AUTH_IDENTITY_W { + unsigned short *User; + unsigned long UserLength; + unsigned short *Domain; + unsigned long DomainLength; + unsigned short *Password; + unsigned long PasswordLength; + unsigned long Flags; +} SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W; +typedef struct _SEC_WINNT_AUTH_IDENTITY_A { + unsigned char *User; + unsigned long UserLength; + unsigned char *Domain; + unsigned long DomainLength; + unsigned char *Password; + unsigned long PasswordLength; + unsigned long Flags; +} SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A; +typedef struct { + unsigned char *UserName; + unsigned char *ComputerName; + unsigned short Privilege; + unsigned long AuthFlags; +} RPC_CLIENT_INFORMATION1,* PRPC_CLIENT_INFORMATION1; +typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE; +typedef int(__RPC_API *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE,unsigned long,RPC_STATUS*); + +#ifdef RPC_UNICODE_SUPPORTED +typedef struct _RPC_PROTSEQ_VECTORA { + unsigned int Count; + unsigned char*Protseq[1]; +} RPC_PROTSEQ_VECTORA; +typedef struct _RPC_PROTSEQ_VECTORW { + unsigned int Count; + unsigned short*Protseq[1]; +} RPC_PROTSEQ_VECTORW; +RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingA(unsigned char *,RPC_BINDING_HANDLE *); +RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingW(unsigned short *,RPC_BINDING_HANDLE *); +RPC_STATUS RPC_ENTRY RpcBindingToStringBindingA(RPC_BINDING_HANDLE,unsigned char**); +RPC_STATUS RPC_ENTRY RpcBindingToStringBindingW(RPC_BINDING_HANDLE,unsigned short**); +RPC_STATUS RPC_ENTRY RpcStringBindingComposeA(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **); +RPC_STATUS RPC_ENTRY RpcStringBindingComposeW(unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short **); +RPC_STATUS RPC_ENTRY RpcStringBindingParseA(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **); +RPC_STATUS RPC_ENTRY RpcStringBindingParseW(unsigned short *,unsigned short **,unsigned short **,unsigned short **,unsigned short **,unsigned short **); +RPC_STATUS RPC_ENTRY RpcStringFreeA(unsigned char**); +RPC_STATUS RPC_ENTRY RpcStringFreeW(unsigned short**); +RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidA(unsigned char*); +RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidW(unsigned short*); +RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); +RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); +RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); +RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqA(unsigned char*,unsigned int,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqW(unsigned short*,unsigned int,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqExA(unsigned char*,unsigned int MaxCalls,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqExW(unsigned short*,unsigned int,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpA(unsigned char*,unsigned int,unsigned char*,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExA(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpW(unsigned short*,unsigned int,unsigned short*,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExW(unsigned short*,unsigned int,unsigned short*,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**); +RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**); +RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameA(unsigned long,unsigned char**); +RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW(unsigned long,unsigned short**); +RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**); +RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientA(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned char**,unsigned long*,unsigned long*,unsigned long*); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientW(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned short**,unsigned long*,unsigned long*,unsigned long*); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE,unsigned short**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*); +RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long); +RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*); +RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long); +RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*,unsigned long,RPC_SECURITY_QOS*); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE,unsigned short ** , unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *, unsigned long , RPC_SECURITY_QOS *); +typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned short*,unsigned long,void**,RPC_STATUS*); +RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoA(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*); +RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoW(unsigned short*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*); +RPC_STATUS RPC_ENTRY UuidToStringA(UUID*,unsigned char**); +RPC_STATUS RPC_ENTRY UuidFromStringA(unsigned char*,UUID*); +RPC_STATUS RPC_ENTRY UuidToStringW(UUID*,unsigned short**); +RPC_STATUS RPC_ENTRY UuidFromStringW(unsigned short*,UUID*); +RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*); +RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*, UUID_VECTOR*,unsigned short*); +RPC_STATUS RPC_ENTRY RpcEpRegisterA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*); +RPC_STATUS RPC_ENTRY RpcEpRegisterW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned short*); +RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS,unsigned char*); +RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS,unsigned short*); +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**); +#ifdef UNICODE +#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW +#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W +#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W +#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W +#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW +#define RpcBindingFromStringBinding RpcBindingFromStringBindingW +#define RpcBindingToStringBinding RpcBindingToStringBindingW +#define RpcStringBindingCompose RpcStringBindingComposeW +#define RpcStringBindingParse RpcStringBindingParseW +#define RpcStringFree RpcStringFreeW +#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW +#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW +#define RpcProtseqVectorFree RpcProtseqVectorFreeW +#define RpcServerUseProtseq RpcServerUseProtseqW +#define RpcServerUseProtseqEx RpcServerUseProtseqExW +#define RpcServerUseProtseqEp RpcServerUseProtseqEpW +#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW +#define RpcServerUseProtseqIf RpcServerUseProtseqIfW +#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW +#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW +#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW +#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW +#define RpcBindingInqAuthClient RpcBindingInqAuthClientW +#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW +#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW +#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW +#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW +#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW +#define UuidFromString UuidFromStringW +#define UuidToString UuidToStringW +#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW +#define RpcEpRegister RpcEpRegisterW +#define DceErrorInqText DceErrorInqTextW +#else /* UNICODE */ +#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA +#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A +#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A +#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A +#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA +#define RpcBindingFromStringBinding RpcBindingFromStringBindingA +#define RpcBindingToStringBinding RpcBindingToStringBindingA +#define RpcStringBindingCompose RpcStringBindingComposeA +#define RpcStringBindingParse RpcStringBindingParseA +#define RpcStringFree RpcStringFreeA +#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA +#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA +#define RpcProtseqVectorFree RpcProtseqVectorFreeA +#define RpcServerUseProtseq RpcServerUseProtseqA +#define RpcServerUseProtseqEx RpcServerUseProtseqExA +#define RpcServerUseProtseqEp RpcServerUseProtseqEpA +#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA +#define RpcServerUseProtseqIf RpcServerUseProtseqIfA +#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA +#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA +#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA +#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA +#define RpcBindingInqAuthClient RpcBindingInqAuthClientA +#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA +#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA +#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA +#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA +#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA +#define UuidFromString UuidFromStringA +#define UuidToString UuidToStringA +#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA +#define RpcEpRegister RpcEpRegisterA +#define DceErrorInqText DceErrorInqTextA +#endif /* UNICODE */ +#else /* RPC_UNICODE_SUPPORTED */ +typedef struct _RPC_PROTSEQ_VECTOR { + unsigned int Count; + unsigned char* Protseq[1]; +} RPC_PROTSEQ_VECTOR; +RPC_STATUS RPC_ENTRY RpcBindingFromStringBinding(unsigned char *,RPC_BINDING_HANDLE *); +RPC_STATUS RPC_ENTRY RpcBindingToStringBinding(RPC_BINDING_HANDLE,unsigned char **); +RPC_STATUS RPC_ENTRY RpcStringBindingCompose(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **); +RPC_STATUS RPC_ENTRY RpcStringBindingParse(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **); +RPC_STATUS RPC_ENTRY RpcStringFree(unsigned char**); +RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValid(unsigned char*); +RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqs(RPC_PROTSEQ_VECTOR **); +RPC_STATUS RPC_ENTRY RpcServerInqBindings(RPC_BINDING_VECTOR **); +RPC_STATUS RPC_ENTRY RpcServerUseProtseq(unsigned char*,unsigned int,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqEx(unsigned char*,unsigned int,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqEp(unsigned char*,unsigned int,unsigned char*,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpEx(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqIf(unsigned char*,unsigned int,RPC_IF_HANDLE,void*); +RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfEx(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincName(RPC_BINDING_HANDLE,unsigned long,unsigned char**); +RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincName(unsigned long,unsigned char**); +RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryName(RPC_BINDING_HANDLE,unsigned long,unsigned char**); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthClient(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE*,unsigned char**,unsigned long*,unsigned long*,unsigned long*); +RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfo(RPC_BINDING_HANDLE,unsigned char **,unsigned long *,unsigned long *,RPC_AUTH_IDENTITY_HANDLE *,unsigned long *); +RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfo(RPC_BINDING_HANDLE,unsigned char *,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long); +typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned char*,unsigned long,void**,RPC_STATUS*); +RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfo(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*); +RPC_STATUS RPC_ENTRY UuidToString(UUID*,unsigned char**); +RPC_STATUS RPC_ENTRY UuidFromString(unsigned char*,UUID*); +RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplace(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*); +RPC_STATUS RPC_ENTRY RpcEpRegister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,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 *,unsigned char **); +#endif /* RPC_UNICODE_SUPPORTED */ + +RPC_STATUS RPC_ENTRY RpcBindingCopy(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*); +RPC_STATUS RPC_ENTRY RpcBindingFree(RPC_BINDING_HANDLE*); +RPC_STATUS RPC_ENTRY RpcBindingInqObject(RPC_BINDING_HANDLE,UUID *); +RPC_STATUS RPC_ENTRY RpcBindingReset(RPC_BINDING_HANDLE); +RPC_STATUS RPC_ENTRY RpcBindingSetObject(RPC_BINDING_HANDLE,UUID *); +RPC_STATUS RPC_ENTRY RpcMgmtInqDefaultProtectLevel(unsigned long,unsigned long *); +RPC_STATUS RPC_ENTRY RpcBindingVectorFree(RPC_BINDING_VECTOR **); +RPC_STATUS RPC_ENTRY RpcIfInqId(RPC_IF_HANDLE,RPC_IF_ID *); +RPC_STATUS RPC_ENTRY RpcMgmtInqComTimeout(RPC_BINDING_HANDLE,unsigned int*); +RPC_STATUS RPC_ENTRY RpcMgmtSetComTimeout(RPC_BINDING_HANDLE,unsigned int); +RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout(long Timeout); +RPC_STATUS RPC_ENTRY RpcObjectInqType(UUID *,UUID *); +RPC_STATUS RPC_ENTRY RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *); +RPC_STATUS RPC_ENTRY RpcObjectSetType(UUID *,UUID *); +RPC_STATUS RPC_ENTRY RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR **); +RPC_STATUS RPC_ENTRY RpcServerInqIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV**); +RPC_STATUS RPC_ENTRY RpcServerListen(unsigned int,unsigned int,unsigned int); +RPC_STATUS RPC_ENTRY RpcServerRegisterIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*); +RPC_STATUS RPC_ENTRY RpcServerRegisterIfEx(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*); +RPC_STATUS RPC_ENTRY RpcServerUnregisterIf(RPC_IF_HANDLE,UUID*,unsigned int); +RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqs(unsigned int,void*); +RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsEx(unsigned int,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIf(unsigned int,RPC_IF_HANDLE,void*); +RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIfEx(unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY); +RPC_STATUS RPC_ENTRY RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); +RPC_STATUS RPC_ENTRY RpcMgmtInqStats(RPC_BINDING_HANDLE,RPC_STATS_VECTOR**); +RPC_STATUS RPC_ENTRY RpcMgmtIsServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RPC_ENTRY RpcMgmtStopServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RPC_ENTRY RpcMgmtWaitServerListen(void); +RPC_STATUS RPC_ENTRY RpcMgmtSetServerStackSize(unsigned long); +void RPC_ENTRY RpcSsDontSerializeContext(void); +RPC_STATUS RPC_ENTRY RpcMgmtEnableIdleCleanup(void); +RPC_STATUS RPC_ENTRY RpcMgmtInqIfIds(RPC_BINDING_HANDLE,RPC_IF_ID_VECTOR**); +RPC_STATUS RPC_ENTRY RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); +RPC_STATUS RPC_ENTRY RpcEpResolveBinding(RPC_BINDING_HANDLE,RPC_IF_HANDLE); +RPC_STATUS RPC_ENTRY RpcBindingServerFromClient(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*); +DECLSPEC_NORETURN void RPC_ENTRY RpcRaiseException(RPC_STATUS); +RPC_STATUS RPC_ENTRY RpcTestCancel(void); +RPC_STATUS RPC_ENTRY RpcCancelThread(void*); +RPC_STATUS RPC_ENTRY UuidCreate(UUID*); +signed int RPC_ENTRY UuidCompare(UUID*,UUID*, RPC_STATUS*); +RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*); +int RPC_ENTRY UuidEqual(UUID*,UUID*, RPC_STATUS*); +unsigned short RPC_ENTRY UuidHash(UUID*,RPC_STATUS*); +int RPC_ENTRY UuidIsNil(UUID*,RPC_STATUS*); +RPC_STATUS RPC_ENTRY RpcEpUnregister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*); +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*); +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); +RPC_STATUS RPC_ENTRY RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*); +RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +RPC_STATUS RPC_ENTRY RpcMgmtInqParameter(unsigned int,unsigned long*); +RPC_STATUS RPC_ENTRY RpcMgmtSetParameter(unsigned int,unsigned long); +RPC_STATUS RPC_ENTRY RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long*); +RPC_STATUS RPC_ENTRY RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long); + +#if _WIN32_WINNT >= 0x0500 +RPC_STATUS RPC_ENTRY UuidCreateSequential(UUID*); +#endif + +#include +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpcdce2.h b/reactos/w32api/include/rpcdce2.h new file mode 100644 index 00000000000..4d065f18965 --- /dev/null +++ b/reactos/w32api/include/rpcdce2.h @@ -0,0 +1,56 @@ +#ifndef _RPCDCE2_H +#define _RPCDCE2_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#include + +#define RPC_C_EP_ALL_ELTS 0 +#define RPC_C_EP_MATCH_BY_IF 1 +#define RPC_C_EP_MATCH_BY_OBJ 2 +#define RPC_C_EP_MATCH_BY_BOTH 3 +#define RPC_C_VERS_ALL 1 +#define RPC_C_VERS_COMPATIBLE 2 +#define RPC_C_VERS_EXACT 3 +#define RPC_C_VERS_MAJOR_ONLY 4 +#define RPC_C_VERS_UPTO 5 +#define DCE_C_ERROR_STRING_LEN 256 +#define RPC_C_MGMT_INQ_IF_IDS 0 +#define RPC_C_MGMT_INQ_PRINC_NAME 1 +#define RPC_C_MGMT_INQ_STATS 2 +#define RPC_C_MGMT_IS_SERVER_LISTEN 3 +#define RPC_C_MGMT_STOP_SERVER_LISTEN 4 + +int RPC_ENTRY UuidCompare(UUID*,UUID*,RPC_STATUS*); +RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*); +int RPC_ENTRY UuidEqual(UUID*,UUID*,RPC_STATUS*); +unsigned short RPC_ENTRY UuidHash(UUID*,RPC_STATUS*); +int RPC_ENTRY UuidIsNil(UUID*,RPC_STATUS*); +#ifdef RPC_UNICODE_SUPPORTED +RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS,unsigned char*); +RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS,unsigned short*); +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**); +#ifdef UNICODE +#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW +#define DceErrorInqText DceErrorInqTextW +#else +#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA +#define DceErrorInqText DceErrorInqTextA +#endif /* UNICODE */ +#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 +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*); +RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); +RPC_STATUS RPC_ENTRY RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*); +RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpcdcep.h b/reactos/w32api/include/rpcdcep.h new file mode 100644 index 00000000000..c45bc46905e --- /dev/null +++ b/reactos/w32api/include/rpcdcep.h @@ -0,0 +1,128 @@ +#ifndef _RPCDCEP_H +#define _RPCDCEP_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define RPC_NCA_FLAGS_DEFAULT 0 +#define RPC_NCA_FLAGS_IDEMPOTENT 1 +#define RPC_NCA_FLAGS_BROADCAST 2 +#define RPC_NCA_FLAGS_MAYBE 4 +#define RPCFLG_ASYNCHRONOUS 0x40000000 +#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000 +#define RPC_FLAGS_VALID_BIT 0x8000 +#define TRANSPORT_TYPE_CN 1 +#define TRANSPORT_TYPE_DG 2 +#define TRANSPORT_TYPE_LPC 4 +#define TRANSPORT_TYPE_WMSG 8 + +typedef struct _RPC_VERSION { + unsigned short MajorVersion; + unsigned short MinorVersion; +} RPC_VERSION; +typedef struct _RPC_SYNTAX_IDENTIFIER { + GUID SyntaxGUID; + RPC_VERSION SyntaxVersion; +} RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER; +typedef struct _RPC_MESSAGE { + HANDLE Handle; + unsigned long DataRepresentation; + void *Buffer; + unsigned int BufferLength; + unsigned int ProcNum; + PRPC_SYNTAX_IDENTIFIER TransferSyntax; + void *RpcInterfaceInformation; + void *ReservedForRuntime; + void *ManagerEpv; + void *ImportContext; + unsigned long RpcFlags; +} RPC_MESSAGE,*PRPC_MESSAGE; +typedef long __stdcall RPC_FORWARD_FUNCTION(GUID*,RPC_VERSION*,GUID*,unsigned char*,void**); +typedef void(__stdcall *RPC_DISPATCH_FUNCTION) ( PRPC_MESSAGE Message); +typedef struct { + unsigned int DispatchTableCount; + RPC_DISPATCH_FUNCTION *DispatchTable; + int Reserved; +} RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE; +typedef struct _RPC_PROTSEQ_ENDPOINT { + unsigned char *RpcProtocolSequence; + unsigned char *Endpoint; +} RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT; +typedef struct _RPC_SERVER_INTERFACE { + unsigned int Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + unsigned int RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + void *DefaultManagerEpv; + void const *InterpreterInfo; +} RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE; +typedef struct _RPC_CLIENT_INTERFACE { + unsigned int Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + unsigned int RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + unsigned long Reserved; + void const *InterpreterInfo; +} RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE; +typedef void *I_RPC_MUTEX; +typedef struct _RPC_TRANSFER_SYNTAX { + GUID Uuid; + unsigned short VersMajor; + unsigned short VersMinor; +} RPC_TRANSFER_SYNTAX; +typedef long(__stdcall *RPC_BLOCKING_FUNCTION)(void*,void*); + +long __stdcall I_RpcGetBuffer(RPC_MESSAGE*); +long __stdcall I_RpcSendReceive(RPC_MESSAGE*); +long __stdcall I_RpcFreeBuffer(RPC_MESSAGE*); +void __stdcall I_RpcRequestMutex(I_RPC_MUTEX*); +void __stdcall I_RpcClearMutex(I_RPC_MUTEX); +void __stdcall I_RpcDeleteMutex(I_RPC_MUTEX); +DECLARE_STDCALL_P(void *) I_RpcAllocate(unsigned int); +void __stdcall I_RpcFree(void*); +void __stdcall I_RpcPauseExecution(unsigned long); +typedef void(__stdcall *PRPC_RUNDOWN) (void*); +long __stdcall I_RpcMonitorAssociation(HANDLE,PRPC_RUNDOWN,void*); +long __stdcall I_RpcStopMonitorAssociation(HANDLE); +HANDLE __stdcall I_RpcGetCurrentCallHandle(void); +long __stdcall I_RpcGetAssociationContext(void**); +long __stdcall I_RpcSetAssociationContext(void*); +#ifdef __RPC_NT__ +long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned short*); +long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE, unsigned short**); +#else +long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned char*); +long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE,unsigned char**); +#endif +long __stdcall I_RpcBindingInqTransportType(HANDLE,unsigned int*); +long __stdcall I_RpcIfInqTransferSyntaxes(HANDLE,RPC_TRANSFER_SYNTAX*,unsigned int,unsigned int*); +long __stdcall I_UuidCreate(GUID*); +long __stdcall I_RpcBindingCopy(HANDLE,HANDLE*); +long __stdcall I_RpcBindingIsClientLocal(HANDLE,unsigned int*); +void __stdcall I_RpcSsDontSerializeContext(void); +long __stdcall I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION*); +long __stdcall I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*); +long __stdcall I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long); +long __stdcall I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FUNCTION); +long __stdcall I_RpcAsyncSendReceive(RPC_MESSAGE*,void*); +long __stdcall I_RpcGetThreadWindowHandle(void**); +long __stdcall I_RpcServerThreadPauseListening(void); +long __stdcall I_RpcServerThreadContinueListening(void); +long __stdcall I_RpcServerUnregisterEndpointA(unsigned char*,unsigned char*); +long __stdcall I_RpcServerUnregisterEndpointW(unsigned short*,unsigned short*); +#ifdef UNICODE +#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW +#else +#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpcndr.h b/reactos/w32api/include/rpcndr.h new file mode 100644 index 00000000000..8b728bbb5f5 --- /dev/null +++ b/reactos/w32api/include/rpcndr.h @@ -0,0 +1,473 @@ +#ifndef __RPCNDR_H__ +#define __RPCNDR_H__ +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifndef __RPCNDR_H_VERSION__ +#define __RPCNDR_H_VERSION__ ( 450 ) +#endif /* __RPCNDR_H_VERSION__ */ +#include +#ifdef __cplusplus +extern "C" { +#endif +#include +#define DECLSPEC_UUID(x) +#define MIDL_INTERFACE(x) struct +#define NDR_CHAR_REP_MASK (unsigned long)0xFL +#define NDR_INT_REP_MASK (unsigned long)0xF0L +#define NDR_FLOAT_REP_MASK (unsigned long)0xFF00L +#define NDR_LITTLE_ENDIAN (unsigned long)0x10L +#define NDR_BIG_ENDIAN (unsigned long)0 +#define NDR_IEEE_FLOAT (unsigned long)0 +#define NDR_VAX_FLOAT (unsigned long)0x100L +#define NDR_ASCII_CHAR (unsigned long)0 +#define NDR_EBCDIC_CHAR (unsigned long)1 +#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0x10L +#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN +#define __RPC_CALLEE __stdcall +#ifndef __MIDL_USER_DEFINED +#define midl_user_allocate MIDL_user_allocate +#define midl_user_free MIDL_user_free +#define __MIDL_USER_DEFINED +#endif +#define RPC_VAR_ENTRY __cdecl +#ifdef _M_IX86 +#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport) +#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport) +#else +#define __MIDL_DECLSPEC_DLLIMPORT +#define __MIDL_DECLSPEC_DLLEXPORT +#endif +#if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64) +#define hyper __int64 +#define MIDL_uhyper unsigned __int64 +#else +#define hyper double +#define MIDL_uhyper double +#endif +#define small char +typedef unsigned char byte; +#define NDRSContextValue(hContext) (&(hContext)->userContext) +#define cbNDRContext 20 +#define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } +#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)); } +#define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } +#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)); } +#define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } +#define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; } +#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)); } +#define MIDL_ascii_strlen(string) strlen(string) +#define MIDL_ascii_strcpy(target,source) strcpy(target,source) +#define MIDL_memset(s,c,n) memset(s,c,n) +#define _midl_ma1( p, cast ) *(*( cast **)&p)++ +#define _midl_ma2( p, cast ) *(*( cast **)&p)++ +#define _midl_ma4( p, cast ) *(*( cast **)&p)++ +#define _midl_ma8( p, cast ) *(*( cast **)&p)++ +#define _midl_unma1( p, cast ) *(( cast *)p)++ +#define _midl_unma2( p, cast ) *(( cast *)p)++ +#define _midl_unma3( p, cast ) *(( cast *)p)++ +#define _midl_unma4( p, cast ) *(( cast *)p)++ +#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) +#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) +#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) +#define _midl_addp( p, n ) (p += n) +#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ +#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p +#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ +#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) +#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l) +#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)) +#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) +#define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) +#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) +#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) +#define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) +#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) +#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) +#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) +#ifdef CONST_VTABLE +#define CONST_VTBL const +#else +#define CONST_VTBL +#endif +typedef void *NDR_CCONTEXT; +typedef struct { + void *pad[2]; + void *userContext; +} *NDR_SCONTEXT; +typedef void (__RPC_USER *NDR_RUNDOWN)(void*); +typedef struct _SCONTEXT_QUEUE { + unsigned long NumberOfObjects; + NDR_SCONTEXT *ArrayOfObjects; +} SCONTEXT_QUEUE,*PSCONTEXT_QUEUE; +struct _MIDL_STUB_MESSAGE; +struct _MIDL_STUB_DESC; +struct _FULL_PTR_XLAT_TABLES; +typedef unsigned char *RPC_BUFPTR; +typedef unsigned long RPC_LENGTH; +typedef void(__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE*); +typedef const unsigned char *PFORMAT_STRING; +typedef struct { + long Dimension; + unsigned long *BufferConformanceMark; + unsigned long *BufferVarianceMark; + unsigned long *MaxCountArray; + unsigned long *OffsetArray; + unsigned long *ActualCountArray; +} ARRAY_INFO,*PARRAY_INFO; + +RPC_BINDING_HANDLE RPC_ENTRY NDRCContextBinding(NDR_CCONTEXT); +void RPC_ENTRY NDRCContextMarshall(NDR_CCONTEXT,void*); +void RPC_ENTRY NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,unsigned long); +void RPC_ENTRY NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN); +NDR_SCONTEXT RPC_ENTRY NDRSContextUnmarshall(void*pBuff,unsigned long); +void RPC_ENTRY RpcSsDestroyClientContext(void**); +void RPC_ENTRY NDRcopy(void*,void*,unsigned int); +unsigned int RPC_ENTRY MIDL_wchar_strlen(wchar_t*); +void RPC_ENTRY MIDL_wchar_strcpy(void*,wchar_t*); +void RPC_ENTRY char_from_ndr(PRPC_MESSAGE,unsigned char*); +void RPC_ENTRY char_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned char*); +void RPC_ENTRY short_from_ndr(PRPC_MESSAGE,unsigned short*); +void RPC_ENTRY short_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned short*); +void RPC_ENTRY short_from_ndr_temp(unsigned char**,unsigned short*,unsigned long); +void RPC_ENTRY long_from_ndr(PRPC_MESSAGE,unsigned long*); +void RPC_ENTRY long_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned long*); +void RPC_ENTRY long_from_ndr_temp(unsigned char**,unsigned long*,unsigned long); +void RPC_ENTRY enum_from_ndr(PRPC_MESSAGE,unsigned int*); +void RPC_ENTRY float_from_ndr(PRPC_MESSAGE,void*); +void RPC_ENTRY float_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,void*); +void RPC_ENTRY double_from_ndr(PRPC_MESSAGE,void*); +void RPC_ENTRY double_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,void*); +void RPC_ENTRY hyper_from_ndr(PRPC_MESSAGE,hyper*); +void RPC_ENTRY hyper_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,hyper*); +void RPC_ENTRY hyper_from_ndr_temp(unsigned char**,hyper*,unsigned long); +void RPC_ENTRY data_from_ndr(PRPC_MESSAGE,void*,char*,unsigned char); +void RPC_ENTRY data_into_ndr(void*,PRPC_MESSAGE,char*,unsigned char); +void RPC_ENTRY tree_into_ndr(void*,PRPC_MESSAGE,char*,unsigned char); +void RPC_ENTRY data_size_ndr(void*,PRPC_MESSAGE,char*,unsigned char); +void RPC_ENTRY tree_size_ndr(void*,PRPC_MESSAGE,char*,unsigned char); +void RPC_ENTRY tree_peek_ndr(PRPC_MESSAGE,unsigned char**,char*,unsigned char); +void *RPC_ENTRY midl_allocate(int); + +#pragma pack(push,4) +typedef struct _MIDL_STUB_MESSAGE { + PRPC_MESSAGE RpcMsg; + unsigned char *Buffer; + unsigned char *BufferStart; + unsigned char *BufferEnd; + unsigned char *BufferMark; + unsigned long BufferLength; + unsigned long MemorySize; + unsigned char *Memory; + int IsClient; + int ReuseBuffer; + unsigned char *AllocAllNodesMemory; + unsigned char *AllocAllNodesMemoryEnd; + int IgnoreEmbeddedPointers; + unsigned char *PointerBufferMark; + unsigned char fBufferValid; + unsigned char Unused; + unsigned long MaxCount; + unsigned long Offset; + unsigned long ActualCount; + void*(__RPC_API *pfnAllocate)(unsigned int); + void(__RPC_API *pfnFree)(void*); + unsigned char *StackTop; + unsigned char *pPresentedType; + unsigned char *pTransmitType; + handle_t SavedHandle; + const struct _MIDL_STUB_DESC *StubDesc; + struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; + unsigned long FullPtrRefId; + int fCheckBounds; + int fInDontFree :1; + int fDontCallFreeInst :1; + int fInOnlyParam :1; + int fHasReturn :1; + unsigned long dwDestContext; + void*pvDestContext; + NDR_SCONTEXT *SavedContextHandles; + long ParamNumber; + struct IRpcChannelBuffer *pRpcChannelBuffer; + PARRAY_INFO pArrayInfo; + unsigned long *SizePtrCountArray; + unsigned long *SizePtrOffsetArray; + unsigned long *SizePtrLengthArray; + void*pArgQueue; + unsigned long dwStubPhase; + unsigned long Reserved[5]; +} MIDL_STUB_MESSAGE,*PMIDL_STUB_MESSAGE; +#pragma pack(pop) +typedef void*(__RPC_API *GENERIC_BINDING_ROUTINE)(void*); +typedef void (__RPC_API *GENERIC_UNBIND_ROUTINE)(void*,unsigned char*); +typedef struct _GENERIC_BINDING_ROUTINE_PAIR { + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} GENERIC_BINDING_ROUTINE_PAIR,*PGENERIC_BINDING_ROUTINE_PAIR; +typedef struct __GENERIC_BINDING_INFO { + void *pObj; + unsigned int Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} GENERIC_BINDING_INFO,*PGENERIC_BINDING_INFO; +typedef void(__RPC_USER *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE); +typedef struct _XMIT_ROUTINE_QUINTUPLE { + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; +} XMIT_ROUTINE_QUINTUPLE,*PXMIT_ROUTINE_QUINTUPLE; +typedef struct _MALLOC_FREE_STRUCT { +void*(__RPC_USER *pfnAllocate)(unsigned int); +void(__RPC_USER *pfnFree)(void*); +} MALLOC_FREE_STRUCT; +typedef struct _COMM_FAULT_OFFSETS { + short CommOffset; + short FaultOffset; +} COMM_FAULT_OFFSETS; +typedef struct _MIDL_STUB_DESC { + void*RpcInterfaceInformation; + void*(__RPC_API *pfnAllocate)(unsigned int); + void(__RPC_API *pfnFree)(void*); + union { + handle_t *pAutoHandle; + handle_t *pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } IMPLICIT_HANDLE_INFO; + const NDR_RUNDOWN *apfnNdrRundownRoutines; + const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs; + const EXPR_EVAL *apfnExprEval; + const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple; + const unsigned char *pFormatTypes; + int fCheckBounds; + unsigned long Version; + MALLOC_FREE_STRUCT *pMallocFreeStruct; + long MIDLVersion; + const COMM_FAULT_OFFSETS *CommFaultOffsets; +} MIDL_STUB_DESC; +typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC; +typedef void*PMIDL_XMIT_TYPE; +typedef struct _MIDL_FORMAT_STRING { + short Pad; + unsigned char Format[1]; +} MIDL_FORMAT_STRING; +typedef void(__RPC_API *STUB_THUNK)(PMIDL_STUB_MESSAGE); +typedef long(__RPC_API *SERVER_ROUTINE)(void); +typedef struct _MIDL_SERVER_INFO_ { + PMIDL_STUB_DESC pStubDesc; + const SERVER_ROUTINE *DispatchTable; + PFORMAT_STRING ProcString; + const unsigned short *FmtStringOffset; + const STUB_THUNK *ThunkTable; +} MIDL_SERVER_INFO,*PMIDL_SERVER_INFO; +typedef struct _MIDL_STUBLESS_PROXY_INFO { + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const unsigned short *FormatStringOffset; +} MIDL_STUBLESS_PROXY_INFO; +typedef MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; +typedef union _CLIENT_CALL_RETURN { + void *Pointer; + long Simple; +} CLIENT_CALL_RETURN; +typedef enum { XLAT_SERVER = 1,XLAT_CLIENT } XLAT_SIDE; +typedef struct _FULL_PTR_TO_REFID_ELEMENT { + struct _FULL_PTR_TO_REFID_ELEMENT *Next; + void*Pointer; + unsigned long RefId; + unsigned char State; +} FULL_PTR_TO_REFID_ELEMENT,*PFULL_PTR_TO_REFID_ELEMENT; +typedef struct _FULL_PTR_XLAT_TABLES { + struct { + void **XlatTable; + unsigned char *StateTable; + unsigned long NumberOfEntries; + } RefIdToPointer; + struct { + PFULL_PTR_TO_REFID_ELEMENT *XlatTable; + unsigned long NumberOfBuckets; + unsigned long HashMask; + } PointerToRefId; + unsigned long NextRefId; + XLAT_SIDE XlatSide; +} FULL_PTR_XLAT_TABLES,*PFULL_PTR_XLAT_TABLES; +void RPC_ENTRY NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned char); +unsigned char *RPC_ENTRY NdrPointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING pFormat); +unsigned char *RPC_ENTRY NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrHardStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char *RPC_ENTRY NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int); +void RPC_ENTRY NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN); +void RPC_ENTRY NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned char); +unsigned char *RPC_ENTRY NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +unsigned char *RPC_ENTRY NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +void RPC_ENTRY NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE); +NDR_SCONTEXT RPC_ENTRY NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE); +void RPC_ENTRY NdrPointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrContextHandleSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void RPC_ENTRY NdrPointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrSimpleStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrHardStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrComplexStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrFixedArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrComplexArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +void RPC_ENTRY NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void RPC_ENTRY NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int); +unsigned char *RPC_ENTRY NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +void RPC_ENTRY NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int); +unsigned char *RPC_ENTRY NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +unsigned char *RPC_ENTRY NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE); +void RPC_ENTRY NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE); +unsigned char *RPC_ENTRY NdrGetBuffer(PMIDL_STUB_MESSAGE,unsigned long,RPC_BINDING_HANDLE); +unsigned char *RPC_ENTRY NdrNsGetBuffer(PMIDL_STUB_MESSAGE,unsigned long,RPC_BINDING_HANDLE); +unsigned char *RPC_ENTRY NdrSendReceive(PMIDL_STUB_MESSAGE,unsigned char*); +unsigned char *RPC_ENTRY NdrNsSendReceive(PMIDL_STUB_MESSAGE,unsigned char*,RPC_BINDING_HANDLE*); +void RPC_ENTRY NdrFreeBuffer(PMIDL_STUB_MESSAGE); +CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...); +typedef enum { + STUB_UNMARSHAL, + STUB_CALL_SERVER, + STUB_MARSHAL, + STUB_CALL_SERVER_NO_HRESULT +} STUB_PHASE; +typedef enum { + PROXY_CALCSIZE, + PROXY_GETBUFFER, + PROXY_MARSHAL, + PROXY_SENDRECEIVE, + PROXY_UNMARSHAL +} PROXY_PHASE; +long RPC_ENTRY NdrStubCall(struct IRpcStubBuffer*,struct IRpcChannelBuffer*,PRPC_MESSAGE,unsigned long*); +void RPC_ENTRY NdrServerCall(PRPC_MESSAGE); +int RPC_ENTRY NdrServerUnmarshall(struct IRpcChannelBuffer*,PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*); +void RPC_ENTRY NdrServerMarshall(struct IRpcStubBuffer*,struct IRpcChannelBuffer*,PMIDL_STUB_MESSAGE,PFORMAT_STRING); +RPC_STATUS RPC_ENTRY NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,unsigned long*,unsigned long*,RPC_STATUS); +int RPC_ENTRY NdrSH_UPDecision(PMIDL_STUB_MESSAGE,unsigned char**,RPC_BUFPTR); +int RPC_ENTRY NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,unsigned char**); +int RPC_ENTRY NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,unsigned char**); +int RPC_ENTRY NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long); +int RPC_ENTRY NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long); +int RPC_ENTRY NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long); +RPC_BUFPTR RPC_ENTRY NdrSH_IfCopy(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long); +RPC_BUFPTR RPC_ENTRY NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long); +unsigned long RPC_ENTRY NdrSH_Copy(unsigned char*,unsigned char*,unsigned long); +void RPC_ENTRY NdrSH_IfFree(PMIDL_STUB_MESSAGE,unsigned char*); +RPC_BUFPTR RPC_ENTRY NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned long,int); +RPC_BUFPTR RPC_ENTRY NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,unsigned char**,int); +typedef void *RPC_SS_THREAD_HANDLE; +typedef void* __RPC_API RPC_CLIENT_ALLOC(unsigned int); +typedef void __RPC_API RPC_CLIENT_FREE(void*); +void*RPC_ENTRY RpcSsAllocate(unsigned int); +void RPC_ENTRY RpcSsDisableAllocate(void); +void RPC_ENTRY RpcSsEnableAllocate(void); +void RPC_ENTRY RpcSsFree(void*); +RPC_SS_THREAD_HANDLE RPC_ENTRY RpcSsGetThreadHandle(void); +void RPC_ENTRY RpcSsSetClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*); +void RPC_ENTRY RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE); +void RPC_ENTRY RpcSsSwapClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*,RPC_CLIENT_ALLOC**,RPC_CLIENT_FREE**); +void*RPC_ENTRY RpcSmAllocate(unsigned int,RPC_STATUS*); +RPC_STATUS RPC_ENTRY RpcSmClientFree(void*); +RPC_STATUS RPC_ENTRY RpcSmDestroyClientContext(void**); +RPC_STATUS RPC_ENTRY RpcSmDisableAllocate(void); +RPC_STATUS RPC_ENTRY RpcSmEnableAllocate(void); +RPC_STATUS RPC_ENTRY RpcSmFree(void*); +RPC_SS_THREAD_HANDLE RPC_ENTRY RpcSmGetThreadHandle(RPC_STATUS*); +RPC_STATUS RPC_ENTRY RpcSmSetClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*); +RPC_STATUS RPC_ENTRY RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE); +RPC_STATUS RPC_ENTRY RpcSmSwapClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*,RPC_CLIENT_ALLOC**,RPC_CLIENT_FREE**); +void RPC_ENTRY NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE); +void RPC_ENTRY NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE); +void RPC_ENTRY NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE); +void*RPC_ENTRY NdrRpcSmClientAllocate(unsigned int); +void RPC_ENTRY NdrRpcSmClientFree(void*); +void*RPC_ENTRY NdrRpcSsDefaultAllocate(unsigned int); +void RPC_ENTRY NdrRpcSsDefaultFree(void*); +PFULL_PTR_XLAT_TABLES RPC_ENTRY NdrFullPointerXlatInit(unsigned long,XLAT_SIDE); +void RPC_ENTRY NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES); +int RPC_ENTRY NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,unsigned char,unsigned long*); +int RPC_ENTRY NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,unsigned long,unsigned char,void**); +void RPC_ENTRY NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,unsigned long,void*); +int RPC_ENTRY NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*); +void*RPC_ENTRY NdrAllocate(PMIDL_STUB_MESSAGE,unsigned int); +void RPC_ENTRY NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*); +void*RPC_ENTRY NdrOleAllocate(unsigned int); +void RPC_ENTRY NdrOleFree(void*); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpcnsi.h b/reactos/w32api/include/rpcnsi.h new file mode 100644 index 00000000000..079d7b2a271 --- /dev/null +++ b/reactos/w32api/include/rpcnsi.h @@ -0,0 +1,122 @@ +#ifndef _RPCNSI_H +#define _RPCNSI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +typedef void *RPC_NS_HANDLE; +#define RPC_C_NS_SYNTAX_DEFAULT 0 +#define RPC_C_NS_SYNTAX_DCE 3 +#define RPC_C_PROFILE_DEFAULT_ELT 0 +#define RPC_C_PROFILE_ALL_ELT 1 +#define RPC_C_PROFILE_MATCH_BY_IF 2 +#define RPC_C_PROFILE_MATCH_BY_MBR 3 +#define RPC_C_PROFILE_MATCH_BY_BOTH 4 +#define RPC_C_NS_DEFAULT_EXP_AGE -1 + +RPC_STATUS RPC_ENTRY RpcNsBindingExportA(unsigned long,unsigned char*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*); +RPC_STATUS RPC_ENTRY RpcNsBindingUnexportA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID_VECTOR*); +RPC_STATUS RPC_ENTRY RpcNsBindingLookupBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsBindingLookupNext(RPC_NS_HANDLE,RPC_BINDING_VECTOR**); +RPC_STATUS RPC_ENTRY RpcNsBindingLookupDone(RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsGroupDeleteA(unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrAddA(unsigned long,unsigned char*,unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrRemoveA(unsigned long,unsigned char*,unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqNextA(RPC_NS_HANDLE,unsigned char**); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsProfileDeleteA(unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltAddA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*,unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltRemoveA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned char*,RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltInqNextA(RPC_NS_HANDLE,RPC_IF_ID*,unsigned char**,unsigned long*,unsigned char**); +RPC_STATUS RPC_ENTRY RpcNsProfileEltInqDone(RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqNext(IN RPC_NS_HANDLE,OUT UUID*); +RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqDone(IN OUT RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsEntryExpandNameA(unsigned long,unsigned char*,unsigned char**); +RPC_STATUS RPC_ENTRY RpcNsMgmtBindingUnexportA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,UUID_VECTOR*); +RPC_STATUS RPC_ENTRY RpcNsMgmtEntryCreateA(unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsMgmtEntryDeleteA(unsigned long,unsigned char*); +RPC_STATUS RPC_ENTRY RpcNsMgmtEntryInqIfIdsA(unsigned long,unsigned char*,RPC_IF_ID_VECTOR**); +RPC_STATUS RPC_ENTRY RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE,unsigned long); +RPC_STATUS RPC_ENTRY RpcNsMgmtInqExpAge(unsigned long*); +RPC_STATUS RPC_ENTRY RpcNsMgmtSetExpAge(unsigned long); +RPC_STATUS RPC_ENTRY RpcNsBindingImportNext(RPC_NS_HANDLE,RPC_BINDING_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsBindingImportDone(RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsBindingSelect(RPC_BINDING_VECTOR*,RPC_BINDING_HANDLE*); +#ifndef UNICODE_ONLY +RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqBeginA(unsigned long,unsigned char*,RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsBindingImportBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*); +#endif +#ifdef RPC_UNICODE_SUPPORTED +RPC_STATUS RPC_ENTRY RpcNsBindingExportW(unsigned long,unsigned short*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*); +RPC_STATUS RPC_ENTRY RpcNsBindingUnexportW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID_VECTOR*); +RPC_STATUS RPC_ENTRY RpcNsBindingLookupBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsGroupDeleteW(unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrAddW(unsigned long,unsigned short*,unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrRemoveW(unsigned long,unsigned short*,unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqBeginW(unsigned long,unsigned short*,unsigned long,RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqNextW(RPC_NS_HANDLE,unsigned short**); +RPC_STATUS RPC_ENTRY RpcNsProfileDeleteW(unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltAddW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*,unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltRemoveW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltInqBeginW(unsigned long,unsigned short*, unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned short*, RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsProfileEltInqNextW(RPC_NS_HANDLE,RPC_IF_ID*, unsigned short**,unsigned long*,unsigned short**); +RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqBeginW(unsigned long,unsigned short*,RPC_NS_HANDLE*); +RPC_STATUS RPC_ENTRY RpcNsEntryExpandNameW(unsigned long,unsigned short*,unsigned short**); +RPC_STATUS RPC_ENTRY RpcNsMgmtBindingUnexportW(unsigned long,unsigned short*,RPC_IF_ID*,unsigned long,UUID_VECTOR*); +RPC_STATUS RPC_ENTRY RpcNsMgmtEntryCreateW(unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsMgmtEntryDeleteW(unsigned long,unsigned short*); +RPC_STATUS RPC_ENTRY RpcNsMgmtEntryInqIfIdsW(unsigned long,unsigned short , RPC_IF_ID_VECTOR**); +RPC_STATUS RPC_ENTRY RpcNsBindingImportBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*); +#endif /* RPC_UNICODE_SUPPORTED */ +#ifdef UNICODE +#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW +#define RpcNsBindingImportBegin RpcNsBindingImportBeginW +#define RpcNsBindingExport RpcNsBindingExportW +#define RpcNsBindingUnexport RpcNsBindingUnexportW +#define RpcNsGroupDelete RpcNsGroupDeleteW +#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW +#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW +#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW +#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW +#define RpcNsEntryExpandName RpcNsEntryExpandNameW +#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW +#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW +#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW +#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW +#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW +#define RpcNsProfileDelete RpcNsProfileDeleteW +#define RpcNsProfileEltAdd RpcNsProfileEltAddW +#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW +#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW +#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW +#else +#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA +#define RpcNsBindingImportBegin RpcNsBindingImportBeginA +#define RpcNsBindingExport RpcNsBindingExportA +#define RpcNsBindingUnexport RpcNsBindingUnexportA +#define RpcNsGroupDelete RpcNsGroupDeleteA +#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA +#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA +#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA +#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA +#define RpcNsEntryExpandName RpcNsEntryExpandNameA +#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA +#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA +#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA +#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA +#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA +#define RpcNsProfileDelete RpcNsProfileDeleteA +#define RpcNsProfileEltAdd RpcNsProfileEltAddA +#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA +#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA +#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpcnsip.h b/reactos/w32api/include/rpcnsip.h new file mode 100644 index 00000000000..15ed761041c --- /dev/null +++ b/reactos/w32api/include/rpcnsip.h @@ -0,0 +1,25 @@ +#ifndef _RPCNSIP_H +#define _RPCNSIP_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +typedef struct { + RPC_NS_HANDLE LookupContext; + RPC_BINDING_HANDLE ProposedHandle; + RPC_BINDING_VECTOR *Bindings; +} RPC_IMPORT_CONTEXT_P,*PRPC_IMPORT_CONTEXT_P; +RPC_STATUS RPC_ENTRY I_RpcNsGetBuffer(IN PRPC_MESSAGE); +RPC_STATUS RPC_ENTRY I_RpcNsSendReceive(IN PRPC_MESSAGE,OUT RPC_BINDING_HANDLE*); +void RPC_ENTRY I_RpcNsRaiseException(IN PRPC_MESSAGE,IN RPC_STATUS); +RPC_STATUS RPC_ENTRY I_RpcReBindBuffer(IN PRPC_MESSAGE); +RPC_STATUS RPC_ENTRY I_NsServerBindSearch(void); +RPC_STATUS RPC_ENTRY I_NsClientBindSearch(void); +void RPC_ENTRY I_NsClientBindDone(void); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/rpcnterr.h b/reactos/w32api/include/rpcnterr.h new file mode 100644 index 00000000000..b23c429c6e9 --- /dev/null +++ b/reactos/w32api/include/rpcnterr.h @@ -0,0 +1,23 @@ +#ifndef _RPCNTERR_H +#define _RPCNTERR_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define RPC_S_OK ERROR_SUCCESS +#define RPC_S_INVALID_ARG ERROR_INVALID_PARAMETER +#define RPC_S_OUT_OF_MEMORY ERROR_OUTOFMEMORY +#define RPC_S_OUT_OF_THREADS ERROR_MAX_THRDS_REACHED +#define RPC_S_INVALID_LEVEL ERROR_INVALID_PARAMETER +#define RPC_S_BUFFER_TOO_SMALL ERROR_INSUFFICIENT_BUFFER +#define RPC_S_INVALID_SECURITY_DESC ERROR_INVALID_SECURITY_DESCR +#define RPC_S_ACCESS_DENIED ERROR_ACCESS_DENIED +#define RPC_S_SERVER_OUT_OF_MEMORY ERROR_NOT_ENOUGH_SERVER_MEMORY +#define RPC_X_NO_MEMORY RPC_S_OUT_OF_MEMORY +#define RPC_X_INVALID_BOUND RPC_S_INVALID_BOUND +#define RPC_X_INVALID_TAG RPC_S_INVALID_TAG +#define RPC_X_ENUM_VALUE_TOO_LARGE RPC_X_ENUM_VALUE_OUT_OF_RANGE +#define RPC_X_SS_CONTEXT_MISMATCH ERROR_INVALID_HANDLE +#define RPC_X_INVALID_BUFFER ERROR_INVALID_USER_BUFFER +#define RPC_X_INVALID_PIPE_OPERATION RPC_X_WRONG_PIPE_ORDER +#endif diff --git a/reactos/w32api/include/rpcproxy.h b/reactos/w32api/include/rpcproxy.h new file mode 100644 index 00000000000..5700e541aae --- /dev/null +++ b/reactos/w32api/include/rpcproxy.h @@ -0,0 +1,200 @@ +/* + -DREGISTER_PROXY_DLL Generates DllMain, DllRegisterServer, and DllUnregisterServer + -DPROXY_CLSID=clsid Specifies a class ID to be used by the proxy DLL. + -DPROXY_CLSID_IS={..} Specifies the class ID to be used by the proxy DLL. + -DNT35_STRICT No new features +*/ +#ifndef _RPCPROXY_H +#define _RPCPROXY_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#if defined __cplusplus && !defined CINTERFACE +#warning "rpcproxy type definitions require CINTERFACE" +#else +#ifdef __cplusplus +extern "C" { +#endif +#include +#include +#include + +#define CStdStubBuffer_METHODS CStdStubBuffer_QueryInterface,CStdStubBuffer_AddRef,\ +CStdStubBuffer_Release,CStdStubBuffer_Connect,CStdStubBuffer_Disconnect,CStdStubBuffer_Invoke,\ +CStdStubBuffer_IsIIDSupported,CStdStubBuffer_CountRefs,CStdStubBuffer_DebugServerQueryInterface,\ +CStdStubBuffer_DebugServerRelease +#define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID,name##_ProxyVtblList[index]->header.piid,16) +#define IID_BS_LOOKUP_SETUP int result, low=-1; +#define IID_BS_LOOKUP_INITIAL_TEST(name,sz,split) if ((result = name##_CHECK_IID(split))>0) { low=sz-split;} else if (!result) { low = split; goto found_label; } +#define IID_BS_LOOKUP_NEXT_TEST(name,split) if ((result = name##_CHECK_IID(low+split))>=0) { low=low+split; if (!result) goto found_label; } +#define IID_BS_LOOKUP_RETURN_RESULT(name,sz,index) low+=1; if ((low>=sz )||(result=name##_CHECK_IID(low))) goto not_found_label; found_label: (index)=low; return 1; not_found_label: return 0; +#define REGISTER_PROXY_DLL_ROUTINES(pProxyFileList, pClsID) \ +HINSTANCE hProxyDll = 0; \ +BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) \ +{ \ +if(fdwReason == DLL_PROCESS_ATTACH) hProxyDll = hinstDLL; \ +return TRUE; \ +} \ +HRESULT STDAPICALLTYPE DllRegisterServer(void) \ +{\ +return NdrDllRegisterProxy(hProxyDll, pProxyFileList, pClsID); \ +}\ +HRESULT STDAPICALLTYPE DllUnregisterServer(void)\ +{\ +return NdrDllUnregisterProxy(hProxyDll, pProxyFileList, pClsID);\ +} +#ifdef PROXY_CLSID +#define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID; +#else +#ifdef PROXY_CLSID_IS +#define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS; +#define PROXY_CLSID CLSID_PSFactoryBuffer +#else +#define CLSID_PSFACTORYBUFFER +#endif +#endif +#ifndef PROXY_CLSID +#define GET_DLL_CLSID (aProxyFileList[0]->pStubVtblList[0] != 0 ? aProxyFileList[0]->pStubVtblList[0]->header.piid : 0) +#else +#define GET_DLL_CLSID &PROXY_CLSID +#endif +#define EXTERN_PROXY_FILE(name) EXTERN_C const ProxyFileInfo name##_ProxyFileInfo; +#define PROXYFILE_LIST_START const ProxyFileInfo * aProxyFileList[] = { +#define REFERENCE_PROXY_FILE(name) & name##_ProxyFileInfo +#define PROXYFILE_LIST_END 0 }; +#define DLLDATA_GETPROXYDLLINFO(pPFList,pClsid) \ +void RPC_ENTRY GetProxyDllInfo( const ProxyFileInfo*** pInfo, const CLSID ** pId ) \ +{ *pInfo = pPFList; *pId = pClsid; }; +#define DLLGETCLASSOBJECTROUTINE(pPFlist, pClsid,pFactory) HRESULT STDAPICALLTYPE DllGetClassObject(REFCLSID rclsid,REFIID riid,void **ppv) \ +{ return NdrDllGetClassObject(rclsid,riid,ppv,pPFlist,pClsid,pFactory ); } +#define DLLCANUNLOADNOW(pFactory) HRESULT STDAPICALLTYPE DllCanUnloadNow(void) \ +{ return NdrDllCanUnloadNow( pFactory ); } +#define DLLDUMMYPURECALL void __cdecl _purecall(void) { } +#define CSTDSTUBBUFFERRELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer *This) \ +{ return NdrCStdStubBuffer_Release(This,(IPSFactoryBuffer *)pFactory); } +#ifdef PROXY_DELEGATION +#define CSTDSTUBBUFFER2RELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This) \ +{ return NdrCStdStubBuffer2_Release(This,(IPSFactoryBuffer *)pFactory); } +#else +#define CSTDSTUBBUFFER2RELEASE(pFactory) +#endif + +#ifdef REGISTER_PROXY_DLL +#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID ) REGISTER_PROXY_DLL_ROUTINES(pProxyFileList,pClsID) +#else +#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID) +#endif +#define DLLDATA_ROUTINES(pProxyFileList,pClsID) \ +CLSID_PSFACTORYBUFFER \ +CStdPSFactoryBuffer gPFactory = {0,0,0,0}; \ +DLLDATA_GETPROXYDLLINFO(pProxyFileList,pClsID) \ +DLLGETCLASSOBJECTROUTINE(pProxyFileList,pClsID,&gPFactory) \ +DLLCANUNLOADNOW(&gPFactory) \ +CSTDSTUBBUFFERRELEASE(&gPFactory) \ +CSTDSTUBBUFFER2RELEASE(&gPFactory) \ +DLLDUMMYPURECALL \ +DLLREGISTRY_ROUTINES(pProxyFileList, pClsID) + +#define DLLDATA_STANDARD_ROUTINES DLLDATA_ROUTINES( (const ProxyFileInfo**) pProxyFileList, &CLSID_PSFactoryBuffer) + +struct tagCInterfaceStubVtbl; +struct tagCInterfaceProxyVtbl; +typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList; +typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList; +typedef const char *PCInterfaceName; +typedef int __stdcall IIDLookupRtn(const IID*,int*); +typedef IIDLookupRtn *PIIDLookup; +typedef struct tagProxyFileInfo { + const PCInterfaceProxyVtblList *pProxyVtblList; + const PCInterfaceStubVtblList *pStubVtblList; + const PCInterfaceName * pNamesArray; + const IID ** pDelegatedIIDs; + const PIIDLookup pIIDLookupRtn; + unsigned short TableSize; + unsigned short TableVersion; + unsigned long Filler1; + unsigned long Filler2; + unsigned long Filler3; + unsigned long Filler4; +}ProxyFileInfo; +typedef ProxyFileInfo ExtendedProxyFileInfo; + +typedef struct tagCInterfaceProxyHeader { +#ifdef USE_STUBLESS_PROXY + const void *pStublessProxyInfo; +#endif + const IID *piid; +} CInterfaceProxyHeader; +typedef struct tagCInterfaceProxyVtbl { + CInterfaceProxyHeader header; +#if defined(__WATCOMC__) + void *Vtbl[1]; +#else +#ifdef __GNUC__ +__extension__ +#endif + void *Vtbl[0]; +#endif +} CInterfaceProxyVtbl; +typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*); +typedef struct tagCInterfaceStubHeader { + const IID *piid; + const MIDL_SERVER_INFO *pServerInfo; + unsigned long DispatchTableCount; + const PRPC_STUB_FUNCTION *pDispatchTable; +} CInterfaceStubHeader; +typedef struct tagCInterfaceStubVtbl { + CInterfaceStubHeader header; + IRpcStubBufferVtbl Vtbl; +} CInterfaceStubVtbl; +typedef struct tagCStdStubBuffer { + const struct IRpcStubBufferVtbl * lpVtbl; + long RefCount; + struct IUnknown *pvServerObject; +} CStdStubBuffer; +typedef struct tagCStdPSFactoryBuffer { + const IPSFactoryBufferVtbl *lpVtbl; + long RefCount; + const ProxyFileInfo ** pProxyFileList; + long Filler1; +} CStdPSFactoryBuffer; +void RPC_ENTRY NdrProxyInitialize(void*,PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int); +void RPC_ENTRY NdrProxyGetBuffer(void*,PMIDL_STUB_MESSAGE); +void RPC_ENTRY NdrProxySendReceive(void*,MIDL_STUB_MESSAGE*); +void RPC_ENTRY NdrProxyFreeBuffer(void*,MIDL_STUB_MESSAGE*); +HRESULT RPC_ENTRY NdrProxyErrorHandler(DWORD); +void RPC_ENTRY NdrStubInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,IRpcChannelBuffer*); +void __RPC_STUB NdrStubForwardingFunction(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*); +void RPC_ENTRY NdrStubGetBuffer(IRpcStubBuffer*,IRpcChannelBuffer*,PMIDL_STUB_MESSAGE); +HRESULT RPC_ENTRY NdrStubErrorHandler(DWORD); +HRESULT STDMETHODCALLTYPE CStdStubBuffer_QueryInterface(IRpcStubBuffer*,REFIID,void**); +ULONG STDMETHODCALLTYPE CStdStubBuffer_AddRef(IRpcStubBuffer*); +ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer*); +ULONG STDMETHODCALLTYPE NdrCStdStubBuffer_Release(IRpcStubBuffer*,IPSFactoryBuffer*); +HRESULT STDMETHODCALLTYPE CStdStubBuffer_Connect(IRpcStubBuffer*,IUnknown*); +void STDMETHODCALLTYPE CStdStubBuffer_Disconnect(IRpcStubBuffer*); +HRESULT STDMETHODCALLTYPE CStdStubBuffer_Invoke(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*); +IRpcStubBuffer* STDMETHODCALLTYPE CStdStubBuffer_IsIIDSupported(IRpcStubBuffer*,REFIID); +ULONG STDMETHODCALLTYPE CStdStubBuffer_CountRefs(IRpcStubBuffer*); +HRESULT STDMETHODCALLTYPE CStdStubBuffer_DebugServerQueryInterface(IRpcStubBuffer*,void**); +void STDMETHODCALLTYPE CStdStubBuffer_DebugServerRelease(IRpcStubBuffer*,void*); +HRESULT RPC_ENTRY NdrDllGetClassObject(REFCLSID,REFIID,void**,const ProxyFileInfo**,const CLSID*,CStdPSFactoryBuffer*); +HRESULT RPC_ENTRY NdrDllCanUnloadNow(CStdPSFactoryBuffer*); +#ifndef NT35_STRICT +HRESULT RPC_ENTRY NdrDllRegisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*); +HRESULT RPC_ENTRY NdrDllUnregisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*); +#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction +ULONG STDMETHODCALLTYPE +CStdStubBuffer2_Release(IRpcStubBuffer*); +ULONG STDMETHODCALLTYPE +NdrCStdStubBuffer2_Release(IRpcStubBuffer*,IPSFactoryBuffer*); +#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0 +#endif + +#ifdef __cplusplus +} +#endif +#endif /* defined __cplusplus && !defined CINTERFACE */ +#endif /* ndef _RPCPROXY_H */ + diff --git a/reactos/w32api/include/schannel.h b/reactos/w32api/include/schannel.h new file mode 100644 index 00000000000..e0105551710 --- /dev/null +++ b/reactos/w32api/include/schannel.h @@ -0,0 +1,90 @@ +#ifndef _SCHANNEL_H +#define _SCHANNEL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SCHANNEL_CRED_VERSION 4 +#define SCHANNEL_SHUTDOWN 1 +/* ? Do these belong here or in wincrypt.h */ +#define AUTHTYPE_CLIENT 1 +#define AUTHTYPE_SERVER 2 + +#define SP_PROT_TLS1_CLIENT 128 +#define SP_PROT_TLS1_SERVER 64 +#define SP_PROT_SSL3_CLIENT 32 +#define SP_PROT_SSL3_SERVER 16 +#define SP_PROT_SSL2_CLIENT 8 +#define SP_PROT_SSL2_SERVER 4 +#define SP_PROT_PCT1_SERVER 1 +#define SP_PROT_PCT1_CLIENT 2 + +#define SP_PROT_PCT1 (SP_PROT_PCT1_CLIENT|SP_PROT_PCT1_SERVER) +#define SP_PROT_TLS1 (SP_PROT_TLS1_CLIENT|SP_PROT_TLS1_SERVER) +#define SP_PROT_SSL2 (SP_PROT_SSL2_CLIENT|SP_PROT_SSL2_SERVER) +#define SP_PROT_SSL3 (SP_PROT_SSL3_CLIENT|SP_PROT_SSL3_SERVER) + +#define SCH_CRED_NO_SYSTEM_MAPPER 2 +#define SCH_CRED_NO_SERVERNAME_CHECK 4 +#define SCH_CRED_MANUAL_CRED_VALIDATION 8 +#define SCH_CRED_NO_DEFAULT_CREDS 16 +#define SCH_CRED_AUTO_CRED_VALIDATION 32 +#define SCH_CRED_REVOCATION_CHECK_CHAIN 512 +#define SCH_CRED_REVOCATION_CHECK_END_CERT 256 +#define SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 1024 +#define SCH_CRED_IGNORE_NO_REVOCATION_CHECK 2048 +#define SCH_CRED_IGNORE_REVOCATION_OFFLINE 4096 +#define SCH_CRED_USE_DEFAULT_CREDS 64 + +typedef struct _SCHANNEL_CRED { + DWORD dwVersion; + DWORD cCreds; + PCCERT_CONTEXT* paCred; + HCERTSTORE hRootStore; + DWORD cMappers; + struct _HMAPPER** aphMappers; + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; + DWORD grbitEnabledProtocols; + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; + DWORD dwSessionLifespan; + DWORD dwFlags; + DWORD reserved; +} SCHANNEL_CRED, *PSCHANNEL_CRED; +typedef struct _SecPkgCred_SupportedAlgs { + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; +} SecPkgCred_SupportedAlgs, *PSecPkgCred_SupportedAlgs; +typedef struct _SecPkgCred_CypherStrengths { + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; +} SecPkgCred_CypherStrengths, *PSecPkgCred_CypherStrengths; +typedef struct _SecPkgCred_SupportedProtocols { + DWORD grbitProtocol; +} SecPkgCred_SupportedProtocols, *PSecPkgCred_SupportedProtocols; +typedef struct _SecPkgContext_IssuerListInfoEx { + PCERT_NAME_BLOB aIssuers; + DWORD cIssuers; +} SecPkgContext_IssuerListInfoEx, *PSecPkgContext_IssuerListInfoEx; +typedef struct _SecPkgContext_ConnectionInfo { + DWORD dwProtocol; + ALG_ID aiCipher; + DWORD dwCipherStrength; + ALG_ID aiHash; + DWORD dwHashStrength; + ALG_ID aiExch; + DWORD dwExchStrength; +} SecPkgContext_ConnectionInfo, *PSecPkgContext_ConnectionInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _SCHANNEL_H */ diff --git a/reactos/w32api/include/schnlsp.h b/reactos/w32api/include/schnlsp.h new file mode 100644 index 00000000000..8e9e09574b2 --- /dev/null +++ b/reactos/w32api/include/schnlsp.h @@ -0,0 +1,14 @@ +#ifndef _SCHNLSP_H +#define _SCHNLSP_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + + +#define SECPKG_ATTR_SUPPORTED_ALGS 86 +#define SECPKG_ATTR_CIPHER_STRENGTHS 87 +#define SECPKG_ATTR_SUPPORTED_PROTOCOLS 88 + +#include + +#endif /* _SCHNLSP_H */ diff --git a/reactos/w32api/include/scrnsave.h b/reactos/w32api/include/scrnsave.h new file mode 100644 index 00000000000..5cee4b66e71 --- /dev/null +++ b/reactos/w32api/include/scrnsave.h @@ -0,0 +1,81 @@ +/* + Screen saver library by Anders Norlander + + This library is (hopefully) compatible with Microsoft's + screen saver library. + + This is public domain software. + + */ +#ifndef _SCRNSAVE_H +#define _SCRNSAVE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* configure dialog identifier */ +#define DLG_SCRNSAVECONFIGURE 2003 + +#define idsIsPassword 1000 +#define idsIniFile 1001 +#define idsScreenSaver 1002 +#define idsPassword 1003 +#define idsDifferentPW 1004 +#define idsChangePW 1005 +#define idsBadOldPW 1006 +#define idsAppName 1007 +#define idsNoHelpMemory 1008 +#define idsHelpFile 1009 +#define idsDefKeyword 1010 + +#define IDS_DESCRIPTION 1 +#define ID_APP 100 + +#define WS_GT (WS_GROUP | WS_TABSTOP) +#define SCRM_VERIFYPW WM_APP +#define MAXFILELEN 13 +#define TITLEBARNAMELEN 40 +#define APPNAMEBUFFERLEN 40 +#define BUFFLEN 255 + +#ifndef RC_INVOKED + +/* functions provided by the aothor of the screen saver */ +BOOL WINAPI ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM); +BOOL WINAPI RegisterDialogClasses(HANDLE); +LONG WINAPI ScreenSaverProc(HWND,UINT,WPARAM,LPARAM); + +/* Change name of function if we are using UNICODE */ +#ifdef UNICODE +#define DefScreenSaverProc DefScreenSaverProcW +#endif + +/* default screen saver proc; call instead of DefWindowProc */ +LONG WINAPI DefScreenSaverProc(HWND,UINT,WPARAM,LPARAM); + +/* change password */ +void WINAPI ScreenSaverChangePassword(HWND); + +/* globals that may be used by screen saver */ +extern HINSTANCE hMainInstance; +extern HWND hMainWindow; +extern BOOL fChildPreview; +extern TCHAR szName[]; +extern TCHAR szAppName[]; +extern TCHAR szIniFile[]; +extern TCHAR szScreenSaver[]; +extern TCHAR szHelpFile[]; +extern TCHAR szNoHelpMemory[]; +extern UINT MyHelpMessage; + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif + +#endif /* _SCRNSAVE_H */ diff --git a/reactos/w32api/include/secext.h b/reactos/w32api/include/secext.h new file mode 100644 index 00000000000..1919f4fefe5 --- /dev/null +++ b/reactos/w32api/include/secext.h @@ -0,0 +1,43 @@ +#ifndef _SECEXT_H +#define _SECEXT_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifndef RC_INVOKED +#if (_WIN32_WINNT >= 0x0500) +typedef enum +{ + NameUnknown = 0, + NameFullyQualifiedDN = 1, + NameSamCompatible = 2, + NameDisplay = 3, + NameUniqueId = 6, + NameCanonical = 7, + NameUserPrincipal = 8, + NameCanonicalEx = 9, + NameServicePrincipal = 10, + NameDnsDomain = 12 +} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT; + +BOOLEAN WINAPI GetComputerObjectNameA(EXTENDED_NAME_FORMAT,LPSTR,PULONG); +BOOLEAN WINAPI GetComputerObjectNameW(EXTENDED_NAME_FORMAT,LPWSTR,PULONG); +BOOLEAN WINAPI GetUserNameExA(EXTENDED_NAME_FORMAT,LPSTR,PULONG); +BOOLEAN WINAPI GetUserNameExW(EXTENDED_NAME_FORMAT,LPWSTR,PULONG); +BOOLEAN WINAPI TranslateNameA(LPCSTR,EXTENDED_NAME_FORMAT,EXTENDED_NAME_FORMAT,LPSTR,PULONG); +BOOLEAN WINAPI TranslateNameW(LPCWSTR,EXTENDED_NAME_FORMAT,EXTENDED_NAME_FORMAT,LPWSTR,PULONG); + +#ifdef UNICODE +#define GetComputerObjectName GetComputerObjectNameW +#define GetUserNameEx GetUserNameExW +#define TranslateName TranslateNameW +#else +#define GetComputerObjectName GetComputerObjectNameA +#define GetUserNameEx GetUserNameExA +#define TranslateName TranslateNameA +#endif + + +#endif /* ! RC_INVOKED */ +#endif /* _WIN32_WINNT >= 0x0500 */ +#endif /* ! _SECEXT_H */ diff --git a/reactos/w32api/include/security.h b/reactos/w32api/include/security.h new file mode 100644 index 00000000000..9685cf05146 --- /dev/null +++ b/reactos/w32api/include/security.h @@ -0,0 +1,42 @@ +#ifndef _SECURITY_H +#define _SECURITY_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + + +#define SEC_E_OK 0 +#define SEC_E_CERT_EXPIRED (-2146893016) +#define SEC_E_INCOMPLETE_MESSAGE (-2146893032) +#define SEC_E_INSUFFICIENT_MEMORY (-2146893056) +#define SEC_E_INTERNAL_ERROR (-2146893052) +#define SEC_E_INVALID_HANDLE (-2146893055) +#define SEC_E_INVALID_TOKEN (-2146893048) +#define SEC_E_LOGON_DENIED (-2146893044) +#define SEC_E_NO_AUTHENTICATING_AUTHORITY (-2146893039) +#define SEC_E_NO_CREDENTIALS (-2146893042) +#define SEC_E_TARGET_UNKNOWN (-2146893053) +#define SEC_E_UNSUPPORTED_FUNCTION (-2146893054) +#define SEC_E_UNTRUSTED_ROOT (-2146893019) +#define SEC_E_WRONG_PRINCIPAL (-2146893022) +#define SEC_E_SECPKG_NOT_FOUND (-2146893051) +#define SEC_E_QOP_NOT_SUPPORTED (-2146893046) +#define SEC_E_UNKNOWN_CREDENTIALS (-2146893043) +#define SEC_E_NOT_OWNER (-2146893050) +#define SEC_I_RENEGOTIATE 590625 +#define SEC_I_COMPLETE_AND_CONTINUE 590612 +#define SEC_I_COMPLETE_NEEDED 590611 +#define SEC_I_CONTINUE_NEEDED 590610 +#define SEC_I_INCOMPLETE_CREDENTIALS 590624 + +/* always a char */ +typedef char SEC_CHAR; +typedef wchar_t SEC_WCHAR; +typedef long SECURITY_STATUS; +#define SEC_FAR + +#include +#include +#include + +#endif /* _SECURITY_H */ diff --git a/reactos/w32api/include/servprov.h b/reactos/w32api/include/servprov.h new file mode 100644 index 00000000000..4905d69e495 --- /dev/null +++ b/reactos/w32api/include/servprov.h @@ -0,0 +1,33 @@ +#ifndef _SERVPROV_H +#define _SERVPROV_H +#define _OLEIDL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +EXTERN_C const IID IID_IServiceProvider; +#undef INTERFACE +#define INTERFACE IServiceProvider +DECLARE_INTERFACE_(IServiceProvider,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryService)(THIS_ REFGUID,REFIID,void**) PURE; +}; + +#ifdef COBJMACROS +#define IServiceProvider_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IServiceProvider_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IServiceProvider_Release(T) (T)->lpVtbl->Release(T) +#define IServiceProvider_QueryService(T,a,b,c) (T)->lpVtbl->QueryService(T,a,b,c) +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/setupapi.h b/reactos/w32api/include/setupapi.h new file mode 100644 index 00000000000..2202141f049 --- /dev/null +++ b/reactos/w32api/include/setupapi.h @@ -0,0 +1,1579 @@ +#ifndef _SETUPAPI_H_ +#define _SETUPAPI_H_ +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define WINSETUPAPI DECLSPEC_IMPORT + +#define LINE_LEN 256 +#define MAX_INF_STRING_LENGTH 4096 +#define MAX_TITLE_LEN 60 +#define MAX_INSTRUCTION_LEN 256 +#define MAX_LABEL_LEN 30 +#define MAX_SERVICE_NAME_LEN 256 +#define MAX_SUBTITLE_LEN 256 +#define SP_MAX_MACHINENAME_LENGTH (MAX_PATH + 3) + +#define COPYFLG_WARN_IF_SKIP 0x00000001 +#define COPYFLG_NOSKIP 0x00000002 +#define COPYFLG_NOVERSIONCHECK 0x00000004 +#define COPYFLG_FORCE_FILE_IN_USE 0x00000008 +#define COPYFLG_NO_OVERWRITE 0x00000010 +#define COPYFLG_NO_VERSION_DIALOG 0x00000020 +#define COPYFLG_OVERWRITE_OLDER_ONLY 0x00000040 +#define COPYFLG_REPLACEONLY 0x00000400 +#define COPYFLG_NODECOMP 0x00000800 +#define COPYFLG_REPLACE_BOOT_FILE 0x00001000 +#define COPYFLG_NOPRUNE 0x00002000 +#define DELFLG_IN_USE 0x00000001 +#define DELFLG_IN_USE1 0x00010000 +#define DI_REMOVEDEVICE_GLOBAL 0x00000001 +#define DI_REMOVEDEVICE_CONFIGSPECIFIC 0x00000002 +#define DI_UNREMOVEDEVICE_CONFIGSPECIFIC 0x00000002 +#define DI_SHOWOEM 0x00000001 +#define DI_SHOWCOMPAT 0x00000002 +#define DI_SHOWCLASS 0x00000004 +#define DI_SHOWALL 0x00000007 +#define DI_NOVCP 0x00000008 +#define DI_DIDCOMPAT 0x00000010 +#define DI_DIDCLASS 0x00000020 +#define DI_AUTOASSIGNRES 0x00000040 +#define DI_NEEDRESTART 0x00000080 +#define DI_NEEDREBOOT 0x00000100 +#define DI_NOBROWSE 0x00000200 +#define DI_MULTMFGS 0x00000400 +#define DI_DISABLED 0x00000800 +#define DI_GENERALPAGE_ADDED 0x00001000 +#define DI_RESOURCEPAGE_ADDED 0x00002000 +#define DI_PROPERTIES_CHANGE 0x00004000 +#define DI_INF_IS_SORTED 0x00008000 +#define DI_ENUMSINGLEINF 0x00010000 +#define DI_DONOTCALLCONFIGMG 0x00020000 +#define DI_INSTALLDISABLED 0x00040000 +#define DI_COMPAT_FROM_CLASS 0x00080000 +#define DI_CLASSINSTALLPARAMS 0x00100000 +#define DI_NODI_DEFAULTACTION 0x00200000 +#define DI_QUIETINSTALL 0x00800000 +#define DI_NOFILECOPY 0x01000000 +#define DI_FORCECOPY 0x02000000 +#define DI_DRIVERPAGE_ADDED 0x04000000 +#define DI_USECI_SELECTSTRINGS 0x08000000 +#define DI_OVERRIDE_INFFLAGS 0x10000000 +#define DI_PROPS_NOCHANGEUSAGE 0x20000000 +#define DI_NOSELECTICONS 0x40000000 +#define DI_NOWRITE_IDS 0x80000000 +#define DI_FLAGSEX_USEOLDINFSEARCH 0x00000001 +#define DI_FLAGSEX_AUTOSELECTRANK0 0x00000002 +#define DI_FLAGSEX_CI_FAILED 0x00000004 +#define DI_FLAGSEX_DIDINFOLIST 0x00000010 +#define DI_FLAGSEX_DIDCOMPATINFO 0x00000020 +#define DI_FLAGSEX_FILTERCLASSES 0x00000040 +#define DI_FLAGSEX_SETFAILEDINSTALL 0x00000080 +#define DI_FLAGSEX_DEVICECHANGE 0x00000100 +#define DI_FLAGSEX_ALWAYSWRITEIDS 0x00000200 +#define DI_FLAGSEX_PROPCHANGE_PENDING 0x00000400 +#define DI_FLAGSEX_ALLOWEXCLUDEDDRVS 0x00000800 +#define DI_FLAGSEX_NOUIONQUERYREMOVE 0x00001000 +#define DI_FLAGSEX_USECLASSFORCOMPAT 0x00002000 +#define DI_FLAGSEX_OLDINF_IN_CLASSLIST 0x00004000 +#define DI_FLAGSEX_NO_DRVREG_MODIFY 0x00008000 +#define DI_FLAGSEX_IN_SYSTEM_SETUP 0x00010000 +#define DI_FLAGSEX_INET_DRIVER 0x00020000 +#define DI_FLAGSEX_APPENDDRIVERLIST 0x00040000 +#define DI_FLAGSEX_PREINSTALLBACKUP 0x00080000 +#define DI_FLAGSEX_BACKUPONREPLACE 0x00100000 +#define DI_FLAGSEX_DRIVERLIST_FROM_URL 0x00200000 +#define DI_FLAGSEX_RESERVED1 0x00400000 +#define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS 0x00800000 +#define DI_FLAGSEX_POWERPAGE_ADDED 0x01000000 +#define DIBCI_NOINSTALLCLASS 0x00000001 +#define DIBCI_NODISPLAYCLASS 0x00000002 +#define DICD_GENERATE_ID 0x00000001 +#define DICD_INHERIT_CLASSDRVS 0x00000002 +#define DICS_ENABLE 1 +#define DICS_FLAG_GLOBAL 1 +#define DICS_DISABLE 2 +#define DICS_FLAG_CONFIGSPECIFIC 2 +#define DICS_PROPCHANGE 3 +#define DICS_START 4 +#define DICS_FLAG_CONFIGGENERAL 4 +#define DICS_STOP 5 +#define DIF_SELECTDEVICE 1 +#define DIF_INSTALLDEVICE 2 +#define DIF_ASSIGNRESOURCES 3 +#define DIF_PROPERTIES 4 +#define DIF_REMOVE 5 +#define DIF_FIRSTTIMESETUP 6 +#define DIF_FOUNDDEVICE 7 +#define DIF_SELECTCLASSDRIVERS 8 +#define DIF_VALIDATECLASSDRIVERS 9 +#define DIF_INSTALLCLASSDRIVERS 10 +#define DIF_CALCDISKSPACE 11 +#define DIF_DESTROYPRIVATEDATA 12 +#define DIF_VALIDATEDRIVER 13 +#define DIF_MOVEDEVICE 14 +#define DIF_DETECT 15 +#define DIF_INSTALLWIZARD 16 +#define DIF_DESTROYWIZARDDATA 17 +#define DIF_PROPERTYCHANGE 18 +#define DIF_ENABLECLASS 19 +#define DIF_DETECTVERIFY 20 +#define DIF_INSTALLDEVICEFILES 21 +#define DIF_UNREMOVE 22 +#define DIF_SELECTBESTCOMPATDRV 23 +#define DIF_ALLOW_INSTALL 24 +#define DIF_REGISTERDEVICE 25 +#define DIF_NEWDEVICEWIZARD_PRESELECT 26 +#define DIF_NEWDEVICEWIZARD_SELECT 27 +#define DIF_NEWDEVICEWIZARD_PREANALYZE 28 +#define DIF_NEWDEVICEWIZARD_POSTANALYZE 29 +#define DIF_NEWDEVICEWIZARD_FINISHINSTALL 30 +#define DIF_UNUSED1 31 +#define DIF_INSTALLINTERFACES 32 +#define DIF_DETECTCANCEL 33 +#define DIF_REGISTER_COINSTALLERS 34 +#define DIF_ADDPROPERTYPAGE_ADVANCED 35 +#define DIF_ADDPROPERTYPAGE_BASIC 36 +#define DIF_RESERVED1 37 +#define DIF_TROUBLESHOOTER 38 +#define DIF_POWERMESSAGEWAKE 39 +#define DIGCF_DEFAULT 0x00000001 +#define DIGCDP_FLAG_BASIC 0x00000001 +#define DIGCF_PRESENT 0x00000002 +#define DIGCDP_FLAG_ADVANCED 0x00000002 +#define DIGCF_ALLCLASSES 0x00000004 +#define DIGCF_PROFILE 0x00000008 +#define DIGCF_DEVICEINTERFACE 0x00000010 +#define DIGCF_INTERFACEDEVICE 0x00000010 +#define DIOCR_INSTALLER 0x00000001 +#define DIOCR_INTERFACE 0x00000002 +#define DIODI_NO_ADD 0x00000001 +#define DIOD_INHERIT_CLASSDRVS 0x00000002 +#define DIOD_CANCEL_REMOVE 0x00000004 +#define DIREG_DEV 0x00000001 +#define DIREG_DRV 0x00000002 +#define DIREG_BOTH 0x00000004 +#define DIRID_ABSOLUTE -1 +#define DIRID_NULL 0 +#define DIRID_SRCPATH 1 +#define DIRID_WINDOWS 10 +#define DIRID_SYSTEM 11 +#define DIRID_DRIVERS 12 +#define DIRID_INF 17 +#define DIRID_HELP 18 +#define DIRID_FONTS 20 +#define DIRID_VIEWERS 21 +#define DIRID_COLOR 23 +#define DIRID_APPS 24 +#define DIRID_SHARED 25 +#define DIRID_BOOT 30 +#define DIRID_SYSTEM16 50 +#define DIRID_SPOOL 51 +#define DIRID_SPOOLDRIVERS 52 +#define DIRID_USERPROFILE 53 +#define DIRID_LOADER 54 +#define DIRID_PRINTPROCESSOR 55 +#define DIRID_COMMON_STARTMENU 16406 +#define DIRID_COMMON_PROGRAMS 16407 +#define DIRID_COMMON_STARTUP 16408 +#define DIRID_COMMON_DESKTOPDIRECTORY 16409 +#define DIRID_COMMON_FAVORITES 16415 +#define DIRID_COMMON_APPDATA 16419 +#define DIRID_PROGRAM_FILES 16422 +#define DIRID_SYSTEM_X86 16425 +#define DIRID_PROGRAM_FILES_X86 16426 +#define DIRID_PROGRAM_FILES_COMMON 16427 +#define DIRID_PROGRAM_FILES_COMMONX86 16428 +#define DIRID_COMMON_TEMPLATES 16429 +#define DIRID_COMMON_DOCUMENTS 16430 +#define DIRID_USER 0x8000 +#define DIRID_ABSOLUTE_16BIT 0xffff +#define DIRID_IOSUBSYS DIRID_DRIVERS +#define DIRID_DEFAULT DIRID_SYSTEM +#define DMI_MASK 0x00000001 +#define DMI_BKCOLOR 0x00000002 +#define DMI_USERECT 0x00000004 +#define DNF_DUPDESC 0x00000001 +#define DNF_OLDDRIVER 0x00000002 +#define DNF_EXCLUDEFROMLIST 0x00000004 +#define DNF_NODRIVER 0x00000008 +#define DNF_LEGACYINF 0x00000010 +#define DNF_CLASS_DRIVER 0x00000020 +#define DNF_COMPATIBLE_DRIVER 0x00000040 +#define DNF_INET_DRIVER 0x00000080 +#define DNF_UNUSED1 0x00000100 +#define DNF_INDEXED_DRIVER 0x00000200 +#define DNF_OLD_INET_DRIVER 0x00000400 +#define DNF_BAD_DRIVER 0x00000800 +#define DNF_DUPPROVIDER 0x00001000 +#define DPROMPT_SUCCESS 0 +#define DPROMPT_CANCEL 1 +#define DPROMPT_SKIPFILE 2 +#define DPROMPT_BUFFERTOOSMALL 3 +#define DPROMPT_OUTOFMEMORY 4 +#define DRIVER_HARDWAREID_RANK 0x00000FFF +#define DYNAWIZ_FLAG_PAGESADDED 0x00000001 +#define DYNAWIZ_FLAG_INSTALLDET_NEXT 0x00000002 +#define DYNAWIZ_FLAG_INSTALLDET_PREV 0x00000004 +#define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT 0x00000008 +#define ENABLECLASS_QUERY 0 +#define ENABLECLASS_SUCCESS 1 +#define ENABLECLASS_FAILURE 2 +#define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0) +#define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1) +#define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2) +#define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3) +#define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100) +#define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000) +#define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101) +#define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102) +#define ERROR_NO_BACKUP (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103) +#define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200) +#define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201) +#define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202) +#define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203) +#define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204) +#define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205) +#define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206) +#define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207) +#define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208) +#define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209) +#define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A) +#define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B) +#define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C) +#define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D) +#define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E) +#define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F) +#define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210) +#define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211) +#define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212) +#define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213) +#define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214) +#define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215) +#define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216) +#define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217) +#define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218) +#define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219) +#define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A) +#define ERROR_DEVICE_INTERFACE_ACTIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B) +#define ERROR_DEVICE_INTERFACE_REMOVED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C) +#define ERROR_BAD_INTERFACE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D) +#define ERROR_NO_SUCH_INTERFACE_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E) +#define ERROR_INVALID_REFERENCE_STRING (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F) +#define ERROR_INVALID_MACHINENAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220) +#define ERROR_REMOTE_COMM_FAILURE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221) +#define ERROR_MACHINE_UNAVAILABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222) +#define ERROR_NO_CONFIGMGR_SERVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223) +#define ERROR_INVALID_PROPPAGE_PROVIDER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224) +#define ERROR_NO_SUCH_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225) +#define ERROR_DI_POSTPROCESSING_REQUIRED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226) +#define ERROR_INVALID_COINSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227) +#define ERROR_NO_COMPAT_DRIVERS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228) +#define ERROR_NO_DEVICE_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229) +#define ERROR_INVALID_INF_LOGCONFIG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A) +#define ERROR_DI_DONT_INSTALL (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B) +#define ERROR_INVALID_FILTER_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C) +#define ERROR_NON_WINDOWS_NT_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D) +#define ERROR_NON_WINDOWS_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E) +#define ERROR_NO_CATALOG_FOR_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F) +#define ERROR_DEVINSTALL_QUEUE_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230) +#define ERROR_NOT_DISABLEABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231) +#define ERROR_CANT_REMOVE_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232) +#define ERROR_INTERFACE_DEVICE_ACTIVE ERROR_DEVICE_INTERFACE_ACTIVE +#define ERROR_INTERFACE_DEVICE_REMOVED ERROR_DEVICE_INTERFACE_REMOVED +#define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE +#define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE + +#define FILEOP_COPY 0 +#define FILEOP_ABORT 0 +#define FILE_COMPRESSION_NONE 0 +#define FILEOP_RENAME 1 +#define FILEOP_DOIT 1 +#define FILE_COMPRESSION_WINLZA 1 +#define FILEOP_DELETE 2 +#define FILEOP_SKIP 2 +#define FILE_COMPRESSION_MSZIP 2 +#define FILEOP_BACKUP 3 +#define FILE_COMPRESSION_NTCAB 3 +#define FILEOP_NEWPATH 4 +#define FILEOP_RETRY FILEOP_DOIT +#define FLG_ADDREG_TYPE_SZ 0x00000000 +#define FLG_ADDREG_BINVALUETYPE 0x00000001 +#define FLG_ADDREG_NOCLOBBER 0x00000002 +#define FLG_ADDREG_DELVAL 0x00000004 +#define FLG_ADDREG_APPEND 0x00000008 +#define FLG_ADDREG_KEYONLY 0x00000010 +#define FLG_ADDREG_OVERWRITEONLY 0x00000020 +#if (_SETUPAPI_VER >= 0x0501) +#define FLG_ADDREG_64BITKEY 0x00001000 +#define FLG_ADDREG_KEYONLY_COMMON 0x00002000 +#define FLG_ADDREG_32BITKEY 0x00004000 +#define FLG_ADDREG_DELREG_BIT 0x00008000 +#endif +#define FLG_ADDREG_TYPE_MULTI_SZ 0x00010000 +#define FLG_ADDREG_TYPE_EXPAND_SZ 0x00020000 +#define FLG_ADDREG_TYPE_BINARY (0x00000000|FLG_ADDREG_BINVALUETYPE) +#define FLG_ADDREG_TYPE_DWORD (0x00010000|FLG_ADDREG_BINVALUETYPE) +#define FLG_ADDREG_TYPE_NONE (0x00020000|FLG_ADDREG_BINVALUETYPE) +#define FLG_ADDREG_TYPE_MASK (0xFFFF0000|FLG_ADDREG_BINVALUETYPE) +#define FLG_DELREG_VALUE 0x00000000 +#if (_SETUPAPI_VER >= 0x0501) +#define FLG_DELREG_TYPE_MASK FLG_ADDREG_TYPE_MASK +#define FLG_DELREG_TYPE_SZ FLG_ADDREG_TYPE_SZ +#define FLG_DELREG_TYPE_MULTI_SZ FLG_ADDREG_TYPE_MULTI_SZ +#define FLG_DELREG_TYPE_EXPAND_SZ FLG_ADDREG_TYPE_EXPAND_SZ +#define FLG_DELREG_TYPE_BINARY FLG_ADDREG_TYPE_BINARY +#define FLG_DELREG_TYPE_DWORD FLG_ADDREG_TYPE_DWORD +#define FLG_DELREG_TYPE_NONE FLG_ADDREG_TYPE_NONE +#define FLG_DELREG_64BITKEY FLG_ADDREG_64BITKEY +#define FLG_DELREG_KEYONLY_COMMON FLG_ADDREG_KEYONLY_COMMON +#define FLG_DELREG_32BITKEY FLG_ADDREG_32BITKEY +#define FLG_DELREG_OPERATION_MASK 0x000000FE +#define FLG_DELREG_MULTI_SZ_DELSTRING (0x00000002|FLG_DELREG_TYPE_MULTI_SZ|FLG_ADDREG_DELREG_BIT) +#endif +#define FLG_BITREG_CLEARBITS 0x00000000 +#define FLG_BITREG_SETBITS 0x00000001 +#define FLG_PROFITEM_CURRENTUSER 0x00000001 +#define FLG_PROFITEM_DELETE 0x00000002 +#define FLG_PROFITEM_GROUP 0x00000004 +#define FLG_PROFITEM_CSIDL 0x00000008 +#define FLG_REGSVR_DLLREGISTER 0x00000001 +#define FLG_REGSVR_DLLINSTALL 0x00000002 +#define MIN_IDD_DYNAWIZ_RESOURCE_ID 10000 +#define MAX_IDD_DYNAWIZ_RESOURCE_ID 11000 +#define IDD_DYNAWIZ_FIRSTPAGE 10000 +#define IDD_DYNAWIZ_SELECT_PREVPAGE 10001 +#define IDD_DYNAWIZ_SELECT_NEXTPAGE 10002 +#define IDD_DYNAWIZ_ANALYZE_PREVPAGE 10003 +#define IDD_DYNAWIZ_ANALYZE_NEXTPAGE 10004 +#define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE 10006 +#define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE 10007 +#define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS 10008 +#define IDD_DYNAWIZ_SELECTDEV_PAGE 10009 +#define IDD_DYNAWIZ_ANALYZEDEV_PAGE 10010 +#define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE 10011 +#define IDD_DYNAWIZ_SELECTCLASS_PAGE 10012 +#define IDF_NOBROWSE 0x00000001 +#define IDF_NOSKIP 0x00000002 +#define IDF_NODETAILS 0x00000004 +#define IDF_NOCOMPRESSED 0x00000008 +#define IDF_CHECKFIRST 0x00000100 +#define IDF_NOBEEP 0x00000200 +#define IDF_NOFOREGROUND 0x00000400 +#define IDF_WARNIFSKIP 0x00000800 +#define IDF_OEMDISK 0x80000000 +#define IDI_RESOURCEFIRST 159 +#define IDI_RESOURCE 159 +#define IDI_RESOURCELAST 161 +#define IDI_RESOURCEOVERLAYFIRST 161 +#define IDI_RESOURCEOVERLAYLAST 161 +#define IDI_CONFLICT 161 +#define IDI_PROBLEM_OVL 500 +#define IDI_DISABLED_OVL 501 +#define IDI_FORCED_OVL 502 +#define IDI_CLASSICON_OVERLAYFIRST 500 +#define IDI_CLASSICON_OVERLAYLAST 502 +#define INF_STYLE_NONE 0x00000000 +#define INF_STYLE_OLDNT 0x00000001 +#define INF_STYLE_WIN4 0x00000002 +#define INF_STYLE_CACHE_ENABLE 0x00000010 +#define INF_STYLE_CACHE_DISABLE 0x00000020 +#define INFINFO_INF_SPEC_IS_HINF 1 +#define INFINFO_INF_NAME_IS_ABSOLUTE 2 +#define INFINFO_DEFAULT_SEARCH 3 +#define INFINFO_REVERSE_DEFAULT_SEARCH 4 +#define INFINFO_INF_PATH_LIST_SEARCH 5 +#define LogSevInformation 0 +#define LogSevWarning 1 +#define LogSevError 2 +#define LogSevFatalError 3 +#define LogSevMaximum 4 +#define LogSeverity DWORD +#define MAX_INSTALLWIZARD_DYNAPAGES 20 +#define NDW_INSTALLFLAG_DIDFACTDEFS 0x00000001 +#define NDW_INSTALLFLAG_HARDWAREALLREADYIN 0x00000002 +#define NDW_INSTALLFLAG_NEEDSHUTDOWN 0x00000200 +#define NDW_INSTALLFLAG_EXPRESSINTRO 0x00000400 +#define NDW_INSTALLFLAG_SKIPISDEVINSTALLED 0x00000800 +#define NDW_INSTALLFLAG_NODETECTEDDEVS 0x00001000 +#define NDW_INSTALLFLAG_INSTALLSPECIFIC 0x00002000 +#define NDW_INSTALLFLAG_SKIPCLASSLIST 0x00004000 +#define NDW_INSTALLFLAG_CI_PICKED_OEM 0x00008000 +#define NDW_INSTALLFLAG_PCMCIAMODE 0x00010000 +#define NDW_INSTALLFLAG_PCMCIADEVICE 0x00020000 +#define NDW_INSTALLFLAG_USERCANCEL 0x00040000 +#define NDW_INSTALLFLAG_KNOWNCLASS 0x00080000 +#define NDW_INSTALLFLAG_NEEDRESTART 0x00000080 +#define NDW_INSTALLFLAG_NEEDREBOOT 0x00000100 +#define SETDIRID_NOT_FULL_PATH 0x00000001 +#define SP_COPY_DELETESOURCE 0x0000001 +#define SP_COPY_REPLACEONLY 0x0000002 +#define SP_COPY_NEWER 0x0000004 +#define SP_COPY_NEWER_OR_SAME 0x0000004 +#define SP_COPY_NOOVERWRITE 0x0000008 +#define SP_COPY_NODECOMP 0x0000010 +#define SP_COPY_LANGUAGEAWARE 0x0000020 +#define SP_COPY_SOURCE_ABSOLUTE 0x0000040 +#define SP_COPY_SOURCEPATH_ABSOLUTE 0x0000080 +#define SP_COPY_IN_USE_NEEDS_REBOOT 0x0000100 +#define SP_COPY_FORCE_IN_USE 0x0000200 +#define SP_COPY_NOSKIP 0x0000400 +#define SP_COPY_FORCE_NOOVERWRITE 0x0001000 +#define SP_COPY_FORCE_NEWER 0x0002000 +#define SP_COPY_WARNIFSKIP 0x0004000 +#define SP_COPY_NOBROWSE 0x0008000 +#define SP_COPY_NEWER_ONLY 0x0010000 +#define SP_COPY_SOURCE_SIS_MASTER 0x0020000 +#define SP_COPY_OEMINF_CATALOG_ONLY 0x0040000 +#define SP_COPY_REPLACE_BOOT_FILE 0x0080000 +#define SP_COPY_NOPRUNE 0x0100000 +#define SP_FLAG_CABINETCONTINUATION 0x0000800 +#define SPCRP_SECURITY 23 +#define SPCRP_SECURITY_SDS 24 +#define SPCRP_DEVTYPE 25 +#define SPCRP_EXCLUSIVE 26 +#define SPCRP_CHARACTERISTICS 27 +#define SPCRP_MAXIMUM_PROPERTY 28 +#define SPDIT_NODRIVER 0 +#define SPDIT_CLASSDRIVER 1 +#define SPDIT_COMPATDRIVER 2 +#define SPDRP_DEVICEDESC 0 +#define SPDRP_HARDWAREID 1 +#define SPDRP_COMPATIBLEIDS 2 +#define SPDRP_UNUSED0 3 +#define SPDRP_SERVICE 4 +#define SPDRP_UNUSED1 5 +#define SPDRP_UNUSED2 6 +#define SPDRP_CLASS 7 +#define SPDRP_CLASSGUID 8 +#define SPDRP_DRIVER 9 +#define SPDRP_CONFIGFLAGS 10 +#define SPDRP_MFG 11 +#define SPDRP_FRIENDLYNAME 12 +#define SPDRP_LOCATION_INFORMATION 13 +#define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME 14 +#define SPDRP_CAPABILITIES 15 +#define SPDRP_UI_NUMBER 16 +#define SPDRP_UPPERFILTERS 17 +#define SPDRP_LOWERFILTERS 18 +#define SPDRP_BUSTYPEGUID 19 +#define SPDRP_LEGACYBUSTYPE 20 +#define SPDRP_BUSNUMBER 21 +#define SPDRP_ENUMERATOR_NAME 22 +#define SPDRP_SECURITY 23 +#define SPDRP_SECURITY_SDS 24 +#define SPDRP_DEVTYPE 25 +#define SPDRP_EXCLUSIVE 26 +#define SPDRP_CHARACTERISTICS 27 +#define SPDRP_ADDRESS 28 +#define SPDRP_UI_NUMBER_DESC_FORMAT 30 +#define SPDRP_MAXIMUM_PROPERTY 31 +#define SPDSL_IGNORE_DISK 1 +#define SPDSL_DISALLOW_NEGATIVE_ADJUST 2 + +#define SPFILENOTIFY_STARTQUEUE 1 +#define SPFILENOTIFY_ENDQUEUE 2 +#define SPFILENOTIFY_STARTSUBQUEUE 3 +#define SPFILENOTIFY_ENDSUBQUEUE 4 +#define SPFILENOTIFY_STARTDELETE 5 +#define SPFILENOTIFY_ENDDELETE 6 +#define SPFILENOTIFY_DELETEERROR 7 +#define SPFILENOTIFY_STARTRENAME 8 +#define SPFILENOTIFY_ENDRENAME 9 +#define SPFILENOTIFY_RENAMEERROR 10 +#define SPFILENOTIFY_STARTCOPY 11 +#define SPFILENOTIFY_ENDCOPY 12 +#define SPFILENOTIFY_COPYERROR 13 +#define SPFILENOTIFY_NEEDMEDIA 14 +#define SPFILENOTIFY_QUEUESCAN 15 +#define SPFILENOTIFY_CABINETINFO 16 +#define SPFILENOTIFY_FILEINCABINET 17 +#define SPFILENOTIFY_NEEDNEWCABINET 18 +#define SPFILENOTIFY_FILEEXTRACTED 19 +#define SPFILENOTIFY_FILEOPDELAYED 20 +#define SPFILENOTIFY_STARTBACKUP 21 +#define SPFILENOTIFY_BACKUPERROR 22 +#define SPFILENOTIFY_ENDBACKUP 23 +#define SPFILENOTIFY_QUEUESCAN_EX 24 +#define SPFILENOTIFY_LANGMISMATCH 0x00010000 +#define SPFILENOTIFY_TARGETEXISTS 0x00020000 +#define SPFILENOTIFY_TARGETNEWER 0x00040000 +#define SPFILELOG_SYSTEMLOG 0x00000001 +#define SPFILELOG_OEMFILE 0x00000001 +#define SPFILELOG_FORCENEW 0x00000002 +#define SPFILELOG_QUERYONLY 0x00000004 +#define SPFILEQ_FILE_IN_USE 0x00000001 +#define SPFILEQ_REBOOT_RECOMMENDED 0x00000002 +#define SPFILEQ_REBOOT_IN_PROGRESS 0x00000004 +#define SPINT_ACTIVE 0x00000001 +#define SPINT_DEFAULT 0x00000002 +#define SPINT_REMOVED 0x00000004 +#define SPID_ACTIVE 0x00000001 +#define SPID_DEFAULT 0x00000002 +#define SPID_REMOVED 0x00000004 +#define SPINST_LOGCONFIG 0x00000001 +#define SPINST_INIFILES 0x00000002 +#define SPINST_REGISTRY 0x00000004 +#define SPINST_INI2REG 0x00000008 +#define SPINST_FILES 0x00000010 +#define SPINST_BITREG 0x00000020 +#define SPINST_REGSVR 0x00000040 +#define SPINST_UNREGSVR 0x00000080 +#define SPINST_PROFILEITEMS 0x00000100 +#if (_SETUPAPI_VER >= 0x0501) +#define SPINST_COPYINF 0x00000200 +#define SPINST_ALL 0x000003ff +#else +#define SPINST_ALL 0x000001ff +#endif +#define SPINST_SINGLESECTION 0x00010000 +#define SPINST_LOGCONFIG_IS_FORCED 0x00020000 +#define SPINST_LOGCONFIGS_ARE_OVERRIDES 0x00040000 +#define SPOST_NONE 0 +#define SPOST_PATH 1 +#define SPOST_URL 2 +#define SPOST_MAX 3 +#define SPPSR_SELECT_DEVICE_RESOURCES 1 +#define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES 2 +#define SPPSR_ENUM_ADV_DEVICE_PROPERTIES 3 +#define SPQ_SCAN_FILE_PRESENCE 0x00000001 +#define SPQ_DELAYED_COPY 0x00000001 +#define SPQ_SCAN_FILE_VALIDITY 0x00000002 +#define SPQ_SCAN_USE_CALLBACK 0x00000004 +#define SPQ_SCAN_USE_CALLBACKEX 0x00000008 +#define SPQ_SCAN_INFORM_USER 0x00000010 +#define SPQ_SCAN_PRUNE_COPY_QUEUE 0x00000020 +#define SPRDI_FIND_DUPS 0x00000001 +#define SPSVCINST_TAGTOFRONT 0x00000001 +#define SPSVCINST_ASSOCSERVICE 0x00000002 +#define SPSVCINST_DELETEEVENTLOGENTRY 0x00000004 +#define SPSVCINST_NOCLOBBER_DISPLAYNAME 0x00000008 +#define SPSVCINST_NOCLOBBER_STARTTYPE 0x00000010 +#define SPSVCINST_NOCLOBBER_ERRORCONTROL 0x00000020 +#define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040 +#define SPSVCINST_NOCLOBBER_DEPENDENCIES 0x00000080 +#define SPSVCINST_NOCLOBBER_DESCRIPTION 0x00000100 +#define SPSVCINST_STOPSERVICE 0x00000200 +#define SPWPT_SELECTDEVICE 0x00000001 +#define SPWP_USE_DEVINFO_DATA 0x00000001 +#define SRCINFO_PATH 1 +#define SRCINFO_TAGFILE 2 +#define SRCINFO_DESCRIPTION 3 +#define SRCINFO_FLAGS 4 +#define SRCLIST_TEMPORARY 0x00000001 +#define SRCLIST_NOBROWSE 0x00000002 +#define SRCLIST_SYSTEM 0x00000010 +#define SRCLIST_USER 0x00000020 +#define SRCLIST_SYSIFADMIN 0x00000040 +#define SRCLIST_SUBDIRS 0x00000100 +#define SRCLIST_APPEND 0x00000200 +#define SRCLIST_NOSTRIPPLATFORM 0x00000400 + +#ifndef RC_INVOKED +typedef PVOID HINF; +typedef PVOID HDSKSPC; +typedef PVOID HDEVINFO; +typedef PVOID HSPFILEQ; +typedef PVOID HSPFILELOG; +typedef UINT DI_FUNCTION; + +typedef enum { + SetupFileLogSourceFilename, + SetupFileLogChecksum, + SetupFileLogDiskTagfile, + SetupFileLogDiskDescription, + SetupFileLogOtherInfo, + SetupFileLogMax +} SetupFileLogInfo; +typedef struct _INFCONTEXT { + PVOID Inf; + PVOID CurrentInf; + UINT Section; + UINT Line; +} INFCONTEXT, *PINFCONTEXT; +typedef struct _SP_INF_INFORMATION { + DWORD InfStyle; + DWORD InfCount; + BYTE VersionData[ANYSIZE_ARRAY]; +} SP_INF_INFORMATION, *PSP_INF_INFORMATION; +typedef struct _SP_ALTPLATFORM_INFO { + DWORD cbSize; + DWORD Platform; + DWORD MajorVersion; + DWORD MinorVersion; + WORD ProcessorArchitecture; + WORD Reserved; +} SP_ALTPLATFORM_INFO, *PSP_ALTPLATFORM_INFO; +typedef struct _SP_ORIGINAL_FILE_INFO_A { + DWORD cbSize; + CHAR OriginalInfName[MAX_PATH]; + CHAR OriginalCatalogName[MAX_PATH]; +} SP_ORIGINAL_FILE_INFO_A, *PSP_ORIGINAL_FILE_INFO_A; +typedef struct _SP_ORIGINAL_FILE_INFO_W { + DWORD cbSize; + WCHAR OriginalInfName[MAX_PATH]; + WCHAR OriginalCatalogName[MAX_PATH]; +} SP_ORIGINAL_FILE_INFO_W, *PSP_ORIGINAL_FILE_INFO_W; +typedef struct _FILEPATHS_A { + PCSTR Target; + PCSTR Source; + UINT Win32Error; + DWORD Flags; +} FILEPATHS_A, *PFILEPATHS_A; +typedef struct _FILEPATHS_W { + PCWSTR Target; + PCWSTR Source; + UINT Win32Error; + DWORD Flags; +} FILEPATHS_W, *PFILEPATHS_W; +typedef struct _SOURCE_MEDIA_A { + PCSTR Reserved; + PCSTR Tagfile; + PCSTR Description; + PCSTR SourcePath; + PCSTR SourceFile; + DWORD Flags; +} SOURCE_MEDIA_A, *PSOURCE_MEDIA_A; +typedef struct _SOURCE_MEDIA_W { + PCWSTR Reserved; + PCWSTR Tagfile; + PCWSTR Description; + PCWSTR SourcePath; + PCWSTR SourceFile; + DWORD Flags; +} SOURCE_MEDIA_W, *PSOURCE_MEDIA_W; +typedef struct _CABINET_INFO_A { + PCSTR CabinetPath; + PCSTR CabinetFile; + PCSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} CABINET_INFO_A, *PCABINET_INFO_A; +typedef struct _CABINET_INFO_W { + PCWSTR CabinetPath; + PCWSTR CabinetFile; + PCWSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} CABINET_INFO_W, *PCABINET_INFO_W; +typedef struct _FILE_IN_CABINET_INFO_A { + PCSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + CHAR FullTargetName[MAX_PATH]; +} FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A; +typedef struct _FILE_IN_CABINET_INFO_W { + PCWSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + WCHAR FullTargetName[MAX_PATH]; +} FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W; +typedef struct _SP_FILE_COPY_PARAMS_A { + DWORD cbSize; + HSPFILEQ QueueHandle; + PCSTR SourceRootPath; + PCSTR SourcePath; + PCSTR SourceFilename; + PCSTR SourceDescription; + PCSTR SourceTagfile; + PCSTR TargetDirectory; + PCSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCSTR SecurityDescriptor; +} SP_FILE_COPY_PARAMS_A, *PSP_FILE_COPY_PARAMS_A; +typedef struct _SP_FILE_COPY_PARAMS_W { + DWORD cbSize; + HSPFILEQ QueueHandle; + PCWSTR SourceRootPath; + PCWSTR SourcePath; + PCWSTR SourceFilename; + PCWSTR SourceDescription; + PCWSTR SourceTagfile; + PCWSTR TargetDirectory; + PCWSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCWSTR SecurityDescriptor; +} SP_FILE_COPY_PARAMS_W, *PSP_FILE_COPY_PARAMS_W; +typedef struct _SP_DEVINFO_DATA { + DWORD cbSize; + GUID ClassGuid; + DWORD DevInst; + ULONG_PTR Reserved; +} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA; +typedef struct _SP_DEVICE_INTERFACE_DATA { + DWORD cbSize; + GUID InterfaceClassGuid; + DWORD Flags; + ULONG_PTR Reserved; +} SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA; +/* For backward compatability */ +typedef SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA, *PSP_INTERFACE_DEVICE_DATA; + +typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A { + DWORD cbSize; + CHAR DevicePath[ANYSIZE_ARRAY]; +} SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A; +typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W { + DWORD cbSize; + WCHAR DevicePath[ANYSIZE_ARRAY]; +} SP_DEVICE_INTERFACE_DETAIL_DATA_W, *PSP_DEVICE_INTERFACE_DETAIL_DATA_W; +/* For backward compatability */ +typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A, + *PSP_INTERFACE_DEVICE_DETAIL_DATA_A; +typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W, + *PSP_INTERFACE_DEVICE_DETAIL_DATA_W; + +typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A { + DWORD cbSize; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + CHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH]; +} SP_DEVINFO_LIST_DETAIL_DATA_A, *PSP_DEVINFO_LIST_DETAIL_DATA_A; +typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W { + DWORD cbSize; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + WCHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH]; +} SP_DEVINFO_LIST_DETAIL_DATA_W, *PSP_DEVINFO_LIST_DETAIL_DATA_W; + +typedef UINT (CALLBACK* PSP_FILE_CALLBACK_A)(PVOID,UINT,UINT_PTR,UINT_PTR); +typedef UINT (CALLBACK* PSP_FILE_CALLBACK_W)(PVOID,UINT,UINT_PTR,UINT_PTR); +typedef struct _SP_DEVINSTALL_PARAMS_A { + DWORD cbSize; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_A InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + CHAR DriverPath[MAX_PATH]; +} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A; +typedef struct _SP_DEVINSTALL_PARAMS_W { + DWORD cbSize; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_W InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + WCHAR DriverPath[MAX_PATH]; +} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W; +typedef struct _SP_CLASSINSTALL_HEADER { + DWORD cbSize; + DI_FUNCTION InstallFunction; +} SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER; +typedef struct _SP_ENABLECLASS_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + GUID ClassGuid; + DWORD EnableMessage; +} SP_ENABLECLASS_PARAMS, *PSP_ENABLECLASS_PARAMS; +typedef struct _SP_MOVEDEV_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + SP_DEVINFO_DATA SourceDeviceInfoData; +} SP_MOVEDEV_PARAMS, *PSP_MOVEDEV_PARAMS; +typedef struct _SP_PROPCHANGE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD StateChange; + DWORD Scope; + DWORD HwProfile; +} SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS; +typedef struct _SP_REMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS; +typedef struct _SP_UNREMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} SP_UNREMOVEDEVICE_PARAMS, *PSP_UNREMOVEDEVICE_PARAMS; +typedef struct _SP_SELECTDEVICE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR Title[MAX_TITLE_LEN]; + CHAR Instructions[MAX_INSTRUCTION_LEN]; + CHAR ListLabel[MAX_LABEL_LEN]; + CHAR SubTitle[MAX_SUBTITLE_LEN]; + BYTE Reserved[2]; +} SP_SELECTDEVICE_PARAMS_A, *PSP_SELECTDEVICE_PARAMS_A; +typedef struct _SP_SELECTDEVICE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR Title[MAX_TITLE_LEN]; + WCHAR Instructions[MAX_INSTRUCTION_LEN]; + WCHAR ListLabel[MAX_LABEL_LEN]; + WCHAR SubTitle[MAX_SUBTITLE_LEN]; +} SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W; + +typedef BOOL (CALLBACK* PDETECT_PROGRESS_NOTIFY)(PVOID,DWORD); +typedef struct _SP_DETECTDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + PDETECT_PROGRESS_NOTIFY DetectProgressNotify; + PVOID ProgressNotifyParam; +} SP_DETECTDEVICE_PARAMS, *PSP_DETECTDEVICE_PARAMS; +typedef struct _SP_INSTALLWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES]; + DWORD NumDynamicPages; + DWORD DynamicPageFlags; + DWORD PrivateFlags; + LPARAM PrivateData; + HWND hwndWizardDlg; +} SP_INSTALLWIZARD_DATA, *PSP_INSTALLWIZARD_DATA; +typedef struct _SP_NEWDEVICEWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES]; + DWORD NumDynamicPages; + HWND hwndWizardDlg; +} SP_NEWDEVICEWIZARD_DATA, *PSP_NEWDEVICEWIZARD_DATA; +typedef SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA, + *PSP_ADDPROPERTYPAGE_DATA; +typedef struct _SP_TROUBLESHOOTER_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR ChmFile[MAX_PATH]; + CHAR HtmlTroubleShooter[MAX_PATH]; +} SP_TROUBLESHOOTER_PARAMS_A, *PSP_TROUBLESHOOTER_PARAMS_A; +typedef struct _SP_TROUBLESHOOTER_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR ChmFile[MAX_PATH]; + WCHAR HtmlTroubleShooter[MAX_PATH]; +} SP_TROUBLESHOOTER_PARAMS_W, *PSP_TROUBLESHOOTER_PARAMS_W; +typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR PowerMessageWake[LINE_LEN*2]; +} SP_POWERMESSAGEWAKE_PARAMS_A, *PSP_POWERMESSAGEWAKE_PARAMS_A; +typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR PowerMessageWake[LINE_LEN*2]; +} SP_POWERMESSAGEWAKE_PARAMS_W, *PSP_POWERMESSAGEWAKE_PARAMS_W; +typedef struct _SP_DRVINFO_DATA_V2_A { + DWORD cbSize; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR Description[LINE_LEN]; + CHAR MfgName[LINE_LEN]; + CHAR ProviderName[LINE_LEN]; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} SP_DRVINFO_DATA_V2_A, *PSP_DRVINFO_DATA_V2_A; +typedef struct _SP_DRVINFO_DATA_V2_W { + DWORD cbSize; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR Description[LINE_LEN]; + WCHAR MfgName[LINE_LEN]; + WCHAR ProviderName[LINE_LEN]; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} SP_DRVINFO_DATA_V2_W, *PSP_DRVINFO_DATA_V2_W; +typedef struct _SP_DRVINFO_DATA_V1_A { + DWORD cbSize; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR Description[LINE_LEN]; + CHAR MfgName[LINE_LEN]; + CHAR ProviderName[LINE_LEN]; +} SP_DRVINFO_DATA_V1_A, *PSP_DRVINFO_DATA_V1_A; +typedef struct _SP_DRVINFO_DATA_V1_W { + DWORD cbSize; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR Description[LINE_LEN]; + WCHAR MfgName[LINE_LEN]; + WCHAR ProviderName[LINE_LEN]; +} SP_DRVINFO_DATA_V1_W, *PSP_DRVINFO_DATA_V1_W; + +#ifdef UNICODE +typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1; +typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2; +#else +typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1; +typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2; +#endif + +#if USE_SP_DRVINFO_DATA_V1 +typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A; +typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W; +typedef SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA; +#else +typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A; +typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W; +typedef SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA; +#endif + +typedef DWORD (CALLBACK* PSP_DETSIG_CMPPROC)(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINFO_DATA,PVOID); + +typedef struct _SP_DRVINFO_DETAIL_DATA_A { + DWORD cbSize; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + CHAR SectionName[LINE_LEN]; + CHAR InfFileName[MAX_PATH]; + CHAR DrvDescription[LINE_LEN]; + CHAR HardwareID[ANYSIZE_ARRAY]; +} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A; +typedef struct _SP_DRVINFO_DETAIL_DATA_W { + DWORD cbSize; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + WCHAR SectionName[LINE_LEN]; + WCHAR InfFileName[MAX_PATH]; + WCHAR DrvDescription[LINE_LEN]; + WCHAR HardwareID[ANYSIZE_ARRAY]; +} SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W; +typedef struct _SP_DRVINSTALL_PARAMS { + DWORD cbSize; + DWORD Rank; + DWORD Flags; + DWORD_PTR PrivateData; + DWORD Reserved; +} SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS; + + +typedef struct _COINSTALLER_CONTEXT_DATA { + BOOL PostProcessing; + DWORD InstallResult; + PVOID PrivateData; +} COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA; +typedef struct _SP_CLASSIMAGELIST_DATA { + DWORD cbSize; + HIMAGELIST ImageList; + ULONG_PTR Reserved; +} SP_CLASSIMAGELIST_DATA, *PSP_CLASSIMAGELIST_DATA; +typedef struct _SP_PROPSHEETPAGE_REQUEST { + DWORD cbSize; + DWORD PageRequested; + HDEVINFO DeviceInfoSet; + PSP_DEVINFO_DATA DeviceInfoData; +} SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST; +typedef struct _SP_BACKUP_QUEUE_PARAMS_A { + DWORD cbSize; + CHAR FullInfPath[MAX_PATH]; + INT FilenameOffset; +} SP_BACKUP_QUEUE_PARAMS_A, *PSP_BACKUP_QUEUE_PARAMS_A; +typedef struct _SP_BACKUP_QUEUE_PARAMS_W { + DWORD cbSize; + WCHAR FullInfPath[MAX_PATH]; + INT FilenameOffset; +} SP_BACKUP_QUEUE_PARAMS_W, *PSP_BACKUP_QUEUE_PARAMS_W; + + +#ifdef UNICODE +typedef SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO; +typedef FILEPATHS_W FILEPATHS, *PFILEPATHS; +typedef SOURCE_MEDIA_W SOURCE_MEDIA, *PSOURCE_MEDIA; +typedef CABINET_INFO_W CABINET_INFO, *PCABINET_INFO; +typedef FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO; +typedef SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS, PSP_FILE_COPY_PARAMS; +typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA, + *PSP_DEVICE_INTERFACE_DETAIL_DATA; +typedef SP_INTERFACE_DEVICE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA, + *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */ +typedef SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA, + *PSP_DEVINFO_LIST_DETAIL_DATA; +typedef SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS, *PSP_DEVINSTALL_PARAMS; +typedef SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS, *PSP_SELECTDEVICE_PARAMS; +typedef SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS, + *PSP_TROUBLESHOOTER_PARAMS; +typedef SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS, + *PSP_POWERMESSAGEWAKE_PARAMS; +typedef SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA, + *PSP_DRVINFO_DETAIL_DATA; +typedef SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS, + *PSP_BACKUP_QUEUE_PARAMS; +#else +typedef SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO; +typedef FILEPATHS_A FILEPATHS, *PFILEPATHS; +typedef SOURCE_MEDIA_A SOURCE_MEDIA, *PSOURCE_MEDIA; +typedef CABINET_INFO_A CABINET_INFO, *PCABINET_INFO; +typedef FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO; +typedef SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS, *PSP_FILE_COPY_PARAMS; +typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA, + *PSP_DEVICE_INTERFACE_DETAIL_DATA; +typedef SP_INTERFACE_DEVICE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA, + *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */ +typedef SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA, + *PSP_DEVINFO_LIST_DETAIL_DATA; +typedef SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS, *PSP_DEVINSTALL_PARAMS; +typedef SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS, + *PSP_SELECTDEVICE_PARAMS; +typedef SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS, + *PSP_TROUBLESHOOTER_PARAMS; +typedef SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS, + *PSP_POWERMESSAGEWAKE_PARAMS; +typedef SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA, + *PSP_DRVINFO_DETAIL_DATA; +typedef SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS, + *PSP_BACKUP_QUEUE_PARAMS; +#endif /* UNICODE */ + +WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListA(HDSKSPC,PCSTR,LONGLONG,UINT,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListW(HDSKSPC,PCWSTR,LONGLONG,UINT,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupAddToSourceListA(DWORD,PCSTR); +WINSETUPAPI BOOL WINAPI SetupAddToSourceListW(DWORD,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListA(HDSKSPC,LPCSTR,LONGLONG,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListW(HDSKSPC,LPCWSTR,LONGLONG,PVOID,UINT); +WINSETUPAPI UINT WINAPI SetupBackupErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD); +WINSETUPAPI UINT WINAPI SetupBackupErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD); +WINSETUPAPI BOOL WINAPI SetupCancelTemporary(VOID); +WINSETUPAPI BOOL WINAPI SetupCloseFileQueue(HSPFILEQ); +WINSETUPAPI VOID WINAPI SetupCloseInfFile(HINF); +WINSETUPAPI VOID WINAPI SetupCloseLog(VOID); +WINSETUPAPI BOOL WINAPI SetupCommitFileQueueA(HWND,HSPFILEQ,PSP_FILE_CALLBACK_A,PVOID); +WINSETUPAPI BOOL WINAPI SetupCommitFileQueueW(HWND,HSPFILEQ,PSP_FILE_CALLBACK_W,PVOID); +WINSETUPAPI UINT WINAPI SetupCopyErrorA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,DWORD,PSTR,DWORD,PDWORD); +WINSETUPAPI UINT WINAPI SetupCopyErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupCopyOEMInfA(PCSTR,PCSTR,DWORD,DWORD,PSTR,DWORD,PDWORD,PSTR*); +WINSETUPAPI BOOL WINAPI SetupCopyOEMInfW(PCWSTR,PCWSTR,DWORD,DWORD,PWSTR,DWORD,PDWORD,PWSTR*); +WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListA(PVOID,DWORD,UINT); +WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListW(PVOID,DWORD,UINT); +WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileA(PCSTR,PCSTR,PUINT); +WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileW(PCWSTR,PCWSTR,PUINT); +WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackA(PVOID,UINT,UINT_PTR,UINT_PTR); +WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackW(PVOID,UINT,UINT_PTR,UINT_PTR); +WINSETUPAPI UINT WINAPI SetupDeleteErrorA(HWND,PCSTR,PCSTR,UINT,DWORD); +WINSETUPAPI UINT WINAPI SetupDeleteErrorW(HWND,PCWSTR,PCWSTR,UINT,DWORD); +WINSETUPAPI BOOL WINAPI SetupDestroyDiskSpaceList(HDSKSPC); +WINSETUPAPI BOOL WINAPI SetupDiAskForOEMDisk(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoList(DWORD,LPGUID,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoListExA(DWORD,LPGUID,DWORD,PDWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoListExW(DWORD,LPGUID,DWORD,PDWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiBuildDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION,HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiCancelDriverInfoSearch(HDEVINFO); +WINSETUPAPI BOOL WINAPI SetupDiChangeState(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameA(PCSTR,LPGUID,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameW(PCWSTR,LPGUID,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameExA(PCSTR,LPGUID,DWORD,PDWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameExW(PCWSTR,LPGUID,DWORD,PDWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidA(CONST GUID*,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidW(CONST GUID*,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidExA(CONST GUID*,PSTR,DWORD,PDWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidExW(CONST GUID*,PWSTR,DWORD,PDWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO,PCSTR,CONST GUID*,PCSTR,HWND,DWORD,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoW(HDEVINFO,PCWSTR,CONST GUID*,PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA); +WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoList(CONST GUID*,HWND); +WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(CONST GUID*,HWND,PCSTR,PVOID); +WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(CONST GUID*,HWND,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceW(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCSTR); +WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCWSTR); +WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCSTR); +WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiDeleteDevRegKey(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); +WINSETUPAPI BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO); +WINSETUPAPI BOOL WINAPI SetupDiDestroyDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD); +WINSETUPAPI INT WINAPI SetupDiDrawMiniIcon(HDC,RECT,INT,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO,DWORD,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,DWORD,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_A); +WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_W); +WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallA(HINF,PCSTR,PSTR,DWORD,PDWORD,PSTR*); +WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF,PCWSTR,PWSTR,DWORD,PDWORD,PWSTR*); +WINSETUPAPI BOOL WINAPI SetupDiGetClassBitmapIndex(CONST GUID*,PINT); +WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionA(CONST GUID*,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionW(CONST GUID*,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionExA(CONST GUID*,PSTR,DWORD,PDWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionExW(CONST GUID*,PWSTR,DWORD,PDWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERA,DWORD,PDWORD,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsW(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERW,DWORD,PDWORD,DWORD); +WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID*,PCSTR,HWND,DWORD); +WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID*,PCWSTR,HWND,DWORD); +WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExA(CONST GUID*,PCSTR,HWND,DWORD,HDEVINFO,PCSTR,PVOID); +WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExW(CONST GUID*,PCWSTR,HWND,DWORD,HDEVINFO,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA,CONST GUID*,PINT); +WINSETUPAPI BOOL WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); +WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetClassRegistryPropertyA(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetClassRegistryPropertyW(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListClass(HDEVINFO,LPGUID); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailA(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_A); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailW(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_W); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO,PSP_DEVINFO_DATA,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstanceIdW(HDEVINFO,PSP_DEVINFO_DATA,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceAlias(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,CONST GUID*,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_A,DWORD,PDWORD,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_W,DWORD,PDWORD,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetDriverInfoDetailA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINFO_DETAIL_DATA_A,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetDriverInfoDetailW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINFO_DETAIL_DATA_W,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS); +WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS); +WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameA(DWORD,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameExA(DWORD,PSTR,DWORD,PDWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameExW(DWORD,PWSTR,DWORD,PDWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameW(DWORD,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileList(PDWORD,DWORD,PDWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileListExA(PDWORD,DWORD,PDWORD,PDWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileListExW(PDWORD,DWORD,PDWORD,PDWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiGetINFClassA(PCSTR,LPGUID,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetINFClassW(PCWSTR,LPGUID,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A); +WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W); +WINSETUPAPI HPROPSHEETPAGE WINAPI SetupDiGetWizardage(HDEVINFO,PSP_DEVINFO_DATA,PSP_INSTALLWIZARD_DATA,DWORD,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiInstallClassA(HWND,PCSTR,DWORD,HSPFILEQ); +WINSETUPAPI BOOL WINAPI SetupDiInstallClassW(HWND,PCWSTR,DWORD,HSPFILEQ); +WINSETUPAPI BOOL WINAPI SetupDiInstallClassExA(HWND,PCSTR,DWORD,HSPFILEQ,CONST GUID*,PVOID,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiInstallClassExW(HWND,PCWSTR,DWORD,HSPFILEQ,CONST GUID*,PVOID,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiInstallDevice(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiInstallDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiInstallDriverFiles(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiLoadClassIcon(CONST GUID*,HICON*,PINT); +WINSETUPAPI BOOL WINAPI SetupDiMoveDuplicateDevice(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKey(CONST GUID*,REGSAM); +WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExA(CONST GUID*,REGSAM,DWORD,PCSTR,PVOID); +WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExW(CONST GUID*,REGSAM,DWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoA(HDEVINFO,PCSTR,HWND,DWORD,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoW(HDEVINFO,PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceA(HDEVINFO,PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceW(HDEVINFO,PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI HKEY WINAPI SetupDiOpenDeviceInterfaceRegKey(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM); +WINSETUPAPI HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,REGSAM); +WINSETUPAPI BOOL WINAPI SetupDiRegisterCoDeviceInstallers(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PSP_DETSIG_CMPPROC,PVOID,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiRemoveDevice(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiRemoveDeviceInterface(HDEVINFO,PSP_DEVICE_INTERFACE_DATA); +WINSETUPAPI BOOL WINAPI SetupDiSelectBestCompatDrv(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiSelectDevice(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiSelectOEMDrv(HWND,HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiSetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiSetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiSetClassRegistryPropertyA(LPGUID,DWORD,CONST BYTE*,DWORD,PCSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiSetClassRegistryPropertyW(LPGUID,DWORD,CONST BYTE*,DWORD,PCWSTR,PVOID); +WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A); +WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W); +WINSETUPAPI BOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CONST BYTE*,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CONST BYTE*,DWORD); +WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS); +WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS); +WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A); +WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W); +WINSETUPAPI BOOL WINAPI SetupDiUnremoveDevice(HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListA(HDSKSPC,PVOID,DWORD,UINT); +WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListW(HDSKSPC,PVOID,DWORD,UINT); +WINSETUPAPI BOOL WINAPI SetupFindFirstLineA(HINF,PCSTR,PCSTR,PINFCONTEXT); +WINSETUPAPI BOOL WINAPI SetupFindFirstLineW(HINF,PCWSTR,PCWSTR,PINFCONTEXT); +WINSETUPAPI BOOL WINAPI SetupFindNextLine(PINFCONTEXT,PINFCONTEXT); +WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineA(PINFCONTEXT,PCSTR,PINFCONTEXT); +WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineW(PINFCONTEXT,PCWSTR,PINFCONTEXT); +WINSETUPAPI BOOL WINAPI SetupFreeA(PCSTR**,UINT); +WINSETUPAPI BOOL WINAPI SetupFreeW(PCWSTR**,UINT); +WINSETUPAPI BOOL WINAPI SetupGetBackupInformationA(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_A); +WINSETUPAPI BOOL WINAPI SetupGetBackupInformationW(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_W); +WINSETUPAPI BOOL WINAPI SetupGetBinaryField(PINFCONTEXT,DWORD,PBYTE,DWORD,LPDWORD); +WINSETUPAPI DWORD WINAPI SetupGetFieldCount(PINFCONTEXT); +WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoA(PCSTR,PSTR*,PDWORD,PDWORD,PUINT); +WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoW(PCWSTR,PWSTR*,PDWORD,PDWORD,PUINT); +WINSETUPAPI BOOL WINAPI SetupGetInfFileListA(PCSTR,DWORD,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetInfFileListW(PCWSTR,DWORD,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetInfInformationA(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetInfInformationW(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetIntField(PINFCONTEXT,DWORD,PINT); +WINSETUPAPI BOOL WINAPI SetupGetLineByIndexA(HINF,PCSTR,DWORD,PINFCONTEXT); +WINSETUPAPI BOOL WINAPI SetupGetLineByIndexW(HINF,PCWSTR,DWORD,PINFCONTEXT); +WINSETUPAPI LONG WINAPI SetupGetLineCountA(HINF,PCSTR); +WINSETUPAPI LONG WINAPI SetupGetLineCountW(HINF,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupGetLineTextA(PINFCONTEXT,HINF,PCSTR,PCSTR,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetLineTextW(PINFCONTEXT,HINF,PCWSTR,PCWSTR,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetMultiSzFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,LPDWORD); +WINSETUPAPI BOOL WINAPI SetupGetMultiSzFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,LPDWORD); +WINSETUPAPI BOOL WINAPI SetupGetSourceFileLocationA(HINF,PINFCONTEXT,PCSTR,PUINT,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetSourceFileLocationW(HINF,PINFCONTEXT,PCWSTR,PUINT,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeA(HINF,PINFCONTEXT,PCSTR,PCSTR,PDWORD,UINT); +WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PDWORD,UINT); +WINSETUPAPI BOOL WINAPI SetupGetSourceInfoA(HINF,UINT,UINT,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetSourceInfoW(HINF,UINT,UINT,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetStringFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetStringFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetTargetPathA(HINF,PINFCONTEXT,PCSTR,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupGetTargetPathW(HINF,PINFCONTEXT,PCWSTR,PWSTR,DWORD,PDWORD); +WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallback(HWND); +WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallbackEx(HWND,HWND,UINT,DWORD,PVOID); +WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogA(PCSTR,DWORD); +WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogW(PCWSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupInstallFileA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID); +WINSETUPAPI BOOL WINAPI SetupInstallFileW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID); +WINSETUPAPI BOOL WINAPI SetupInstallFileExA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID,PBOOL); +WINSETUPAPI BOOL WINAPI SetupInstallFileExW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID,PBOOL); +WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionA(HINF,HINF,HSPFILEQ,PCSTR,PCSTR,UINT); +WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionW(HINF,HINF,HSPFILEQ,PCWSTR,PCWSTR,UINT); +WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionA(HWND,HINF,PCSTR,UINT,HKEY,PCSTR,UINT,PSP_FILE_CALLBACK_A,PVOID,HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionW(HWND,HINF,PCWSTR,UINT,HKEY,PCWSTR,UINT,PSP_FILE_CALLBACK_W,PVOID,HDEVINFO,PSP_DEVINFO_DATA); +WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionA(HINF,PCSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionW(HINF,PCWSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExA(HINF,PCSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID); +WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF,PCWSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID); +WINSETUPAPI BOOL WINAPI SetupIterateCabinetA(PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID); +WINSETUPAPI BOOL WINAPI SetupIterateCabinetW(PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID); +WINSETUPAPI BOOL WINAPI SetupLogErrorA(LPCSTR,LogSeverity); +WINSETUPAPI BOOL WINAPI SetupLogErrorW(LPCWSTR,LogSeverity); +WINSETUPAPI BOOL WINAPI SetupLogFileA(HSPFILELOG,PCSTR,PCSTR,PCSTR,DWORD,PCSTR,PCSTR,PCSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupLogFileW(HSPFILELOG,PCWSTR,PCWSTR,PCWSTR,DWORD,PCWSTR,PCWSTR,PCWSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupOpenAppendInfFileA(PCSTR,HINF,PUINT); +WINSETUPAPI BOOL WINAPI SetupOpenAppendInfFileW(PCWSTR,HINF,PUINT); +WINSETUPAPI HSPFILEQ WINAPI SetupOpenFileQueue(VOID); +WINSETUPAPI HINF WINAPI SetupOpenInfFileA(PCSTR,PCSTR,DWORD,PUINT); +WINSETUPAPI HINF WINAPI SetupOpenInfFileW(PCWSTR,PCWSTR,DWORD,PUINT); +WINSETUPAPI BOOL WINAPI SetupOpenLog(BOOL); +WINSETUPAPI HINF WINAPI SetupOpenMasterInf(VOID); +WINSETUPAPI UINT WINAPI SetupPromptForDiskA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD,PSTR,DWORD,PDWORD); +WINSETUPAPI UINT WINAPI SetupPromptForDiskW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD,PWSTR,DWORD,PDWORD); +WINSETUPAPI INT WINAPI SetupPromptReboot(HSPFILEQ,HWND,BOOL); +WINSETUPAPI BOOL WINAPI SetupQueryA(DWORD,PCSTR**,PUINT); +WINSETUPAPI BOOL WINAPI SetupQueryW(DWORD,PCWSTR**,PUINT); +WINSETUPAPI BOOL WINAPI SetupQueryDrivesInDiskSpaceListA(HDSKSPC,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQueryDrivesInDiskSpaceListW(HDSKSPC,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQueryFileLogA(HSPFILELOG,PCSTR,PCSTR,SetupFileLogInfo,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQueryFileLogW(HSPFILELOG,PCWSTR,PCWSTR,SetupFileLogInfo,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION,UINT,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQueryInfFileInformationW(PSP_INF_INFORMATION,UINT,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_A); +WINSETUPAPI BOOL WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_W); +WINSETUPAPI BOOL WINAPI SetupQueryInfVersionInformationA(PSP_INF_INFORMATION,UINT,PSTR,PSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQueryInfVersionInformationW(PSP_INF_INFORMATION,UINT,PCWSTR,PWSTR,DWORD,PDWORD); +WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveA(HDSKSPC,PCSTR,LONGLONG*,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveW(HDSKSPC,PCWSTR,LONGLONG*,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupQueueCopyA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupQueueCopyW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); +WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); +WINSETUPAPI BOOL WINAPI SetupQueueCopySectionA(HSPFILEQ,PCSTR,HINF,HINF,PCSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupQueueCopySectionW(HSPFILEQ,PCWSTR,HINF,HINF,PCWSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyA(HSPFILEQ,HINF,PCSTR,PCSTR,PCSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyW(HSPFILEQ,HINF,PCWSTR,PCWSTR,PCWSTR,DWORD); +WINSETUPAPI BOOL WINAPI SetupQueueDeleteA(HSPFILEQ,PCSTR,PCSTR); +WINSETUPAPI BOOL WINAPI SetupQueueDeleteW(HSPFILEQ,PCWSTR,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionA(HSPFILEQ,HINF,HINF,PCSTR); +WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionW(HSPFILEQ,HINF,HINF,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupQueueRenameA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR); +WINSETUPAPI BOOL WINAPI SetupQueueRenameW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionA(HSPFILEQ,HINF,HINF,PCSTR); +WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionW(HSPFILEQ,HINF,HINF,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryA(HSPFILELOG,PCSTR,PCSTR); +WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryW(HSPFILELOG,PCWSTR,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListA(HDSKSPC,PCSTR,UINT,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListW(HDSKSPC,PCWSTR,UINT,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListA(DWORD,PCSTR); +WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListW(DWORD,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT); +WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT); +WINSETUPAPI UINT WINAPI SetupRenameErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD); +WINSETUPAPI UINT WINAPI SetupRenameErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD); +WINSETUPAPI BOOL WINAPI SetupScanFileQueueA(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_A,PVOID,PDWORD); +WINSETUPAPI BOOL WINAPI SetupScanFileQueueW(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_W,PVOID,PDWORD); +WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdA(HINF,DWORD,PCSTR); +WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdW(HINF,DWORD,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExA(HINF,DWORD,PCSTR,DWORD,DWORD,PVOID); +WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExW(HINF,DWORD,PCWSTR,DWORD,DWORD,PVOID); +WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformA(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCSTR); +WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformW(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCWSTR); +WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideA(PCSTR); +WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideW(PCWSTR); +WINSETUPAPI BOOL WINAPI SetupSetSourceListA(DWORD,PCSTR*,UINT); +WINSETUPAPI BOOL WINAPI SetupSetSourceListW(DWORD,PCWSTR*,UINT); +WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(PVOID); +WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG); + +/* for backward compatability */ +#define SetupDiCreateInterfaceDeviceW SetupDiCreateDeviceInterfaceW +#define SetupDiCreateInterfaceDeviceRegKeyW SetupDiCreateDeviceInterfaceRegKeyW +#define SetupDiOpenInterfaceDeviceW SetupDiOpenDeviceInterfaceW +#define SetupDiGetInterfaceDeviceDetailW SetupDiGetDeviceInterfaceDetailW +#define SetupDiCreateInterfaceDeviceA SetupDiCreateDeviceInterfaceA +#define SetupDiCreateInterfaceDeviceRegKeyA SetupDiCreateDeviceInterfaceRegKeyA +#define SetupDiOpenInterfaceDeviceA SetupDiOpenDeviceInterfaceA +#define SetupDiGetInterfaceDeviceDetailA SetupDiGetDeviceInterfaceDetailA + +#ifdef UNICODE +#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_W +#define SetupAddInstallSectionToDiskSpaceList SetupAddInstallSectionToDiskSpaceListW +#define SetupAddSectionToDiskSpaceList SetupAddSectionToDiskSpaceListW +#define SetupAddToDiskSpaceList SetupAddToDiskSpaceListW +#define SetupAddToSourceList SetupAddToSourceListW +#define SetupAdjustDiskSpaceList SetupAdjustDiskSpaceListW +#define SetupBackupError SetupBackupErrorW +#define SetupCommitFileQueue SetupCommitFileQueueW +#define SetupCopyError SetupCopyErrorW +#define SetupCopyOEMInf SetupCopyOEMInfW +#define SetupCreateDiskSpaceList SetupCreateDiskSpaceListW +#define SetupDecompressOrCopyFile SetupDecompressOrCopyFileW +#define SetupDefaultQueueCallback SetupDefaultQueueCallbackW +#define SetupDeleteError SetupDeleteErrorW +#define SetupDiBuildClassInfoListEx SetupDiBuildClassInfoListExW +#define SetupDiClassGuidsFromNameEx SetupDiClassGuidsFromNameExW +#define SetupDiClassGuidsFromName SetupDiClassGuidsFromNameW +#define SetupDiClassNameFromGuidEx SetupDiClassNameFromGuidExW +#define SetupDiClassNameFromGuid SetupDiClassNameFromGuidW +#define SetupDiCreateDeviceInfoListEx SetupDiCreateDeviceInfoListExW +#define SetupDiCreateDeviceInfo SetupDiCreateDeviceInfoW +#define SetupDiCreateDeviceInterfaceRegKey SetupDiCreateDeviceInterfaceRegKeyW +#define SetupDiCreateInterfaceDeviceRegKey SetupDiCreateDeviceInterfaceRegKeyW +#define SetupDiCreateDeviceInterface SetupDiCreateDeviceInterfaceW +#define SetupDiCreateInterfaceDevice SetupDiCreateDeviceInterfaceW +#define SetupDiCreateDevRegKey SetupDiCreateDevRegKeyW +#define SetupDiEnumDriverInfo SetupDiEnumDriverInfoW +#define SetupDiGetActualSectionToInstall SetupDiGetActualSectionToInstallW +#define SetupDiGetClassDescriptionEx SetupDiGetClassDescriptionExW +#define SetupDiGetClassDescription SetupDiGetClassDescriptionW +#define SetupDiGetClassDevPropertySheets SetupDiGetClassDevPropertySheetsW +#define SetupDiGetClassDevsEx SetupDiGetClassDevsExW +#define SetupDiGetClassDevs SetupDiGetClassDevsW +#define SetupDiGetClassImageListEx SetupDiGetClassImageListExW +#define SetupDiGetClassInstallParams SetupDiGetClassInstallParamsW +#define SetupDiGetClassRegistryProperty SetupDiGetClassRegistryPropertyW +#define SetupDiGetDeviceInfoListDetail SetupDiGetDeviceInfoListDetailW +#define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsW +#define SetupDiGetDeviceInstanceId SetupDiGetDeviceInstanceIdW +#define SetupDiGetDeviceInterfaceDetail SetupDiGetDeviceInterfaceDetailW +#define SetupDiGetInterfaceDeviceDetail SetupDiGetDeviceInterfaceDetailW +#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyW +#define SetupDiGetDriverInfoDetail SetupDiGetDriverInfoDetailW +#define SetupDiGetDriverInstallParams SetupDiGetDriverInstallParamsW +#define SetupDiGetHwProfileFriendlyNameEx SetupDiGetHwProfileFriendlyNameExW +#define SetupDiGetHwProfileFriendlyName SetupDiGetHwProfileFriendlyNameW +#define SetupDiGetHwProfileListEx SetupDiGetHwProfileListExW +#define SetupDiGetINFClass SetupDiGetINFClassW +#define SetupDiGetSelectedDriver SetupDiGetSelectedDriverW +#define SetupDiInstallClassEx SetupDiInstallClassExW +#define SetupDiInstallClass SetupDiInstallClassW +#define SetupDiOpenClassRegKeyEx SetupDiOpenClassRegKeyExW +#define SetupDiOpenDeviceInfo SetupDiOpenDeviceInfoW +#define SetupDiOpenDeviceInterface SetupDiOpenDeviceInterfaceW +#define SetupDiOpenInterfaceDevice SetupDiOpenDeviceInterfaceW +#define SetupDiSetClassInstallParams SetupDiSetClassInstallParamsW +#define SetupDiSetClassRegistryProperty SetupDiSetClassRegistryPropertyW +#define SetupDiSetDeviceInstallParams SetupDiSetDeviceInstallParamsW +#define SetupDiSetDeviceRegistryProperty SetupDiSetDeviceRegistryPropertyW +#define SetupDiSetDriverInstallParams SetupDiSetDriverInstallParamsW +#define SetupDiSetSelectedDriver SetupDiSetSelectedDriverW +#define SetupDuplicateDiskSpaceList SetupDuplicateDiskSpaceListW +#define SetupFindFirstLine SetupFindFirstLineW +#define SetupFindNextMatchLine SetupFindNextMatchLineW +#define SetupFreeSourceList SetupFreeSourceListW +#define SetupGetBackupInformation SetupGetBackupInformationW +#define SetupGetFileCompressionInfo SetupGetFileCompressionInfoW +#define SetupGetInfFileList SetupGetInfFileListW +#define SetupGetInfInformation SetupGetInfInformationW +#define SetupGetLineByIndex SetupGetLineByIndexW +#define SetupGetLineCount SetupGetLineCountW +#define SetupGetLineText SetupGetLineTextW +#define SetupGetMultiSzField SetupGetMultiSzFieldW +#define SetupGetSourceFileLocation SetupGetSourceFileLocationW +#define SetupGetSourceFileSize SetupGetSourceFileSizeW +#define SetupGetSourceInfo SetupGetSourceInfoW +#define SetupGetStringField SetupGetStringFieldW +#define SetupGetTargetPath SetupGetTargetPathW +#define SetupInitializeFileLog SetupInitializeFileLogW +#define SetupInstallFileEx SetupInstallFileExW +#define SetupInstallFilesFromInfSection SetupInstallFilesFromInfSectionW +#define SetupInstallFile SetupInstallFileW +#define SetupInstallFromInfSection SetupInstallFromInfSectionW +#define SetupInstallServicesFromInfSectionEx SetupInstallServicesFromInfSectionExW +#define SetupInstallServicesFromInfSection SetupInstallServicesFromInfSectionW +#define SetupIterateCabinet SetupIterateCabinetW +#define SetupLogError SetupLogErrorW +#define SetupLogFile SetupLogFileW +#define SetupOpenAppendInfFile SetupOpenAppendInfFileW +#define SetupOpenInfFile SetupOpenInfFileW +#define SetupPromptForDisk SetupPromptForDiskW +#define SetupQueryDrivesInDiskSpaceList SetupQueryDrivesInDiskSpaceListW +#define SetupQueryFileLog SetupQueryFileLogW +#define SetupQueryInfFileInformation SetupQueryInfFileInformationW +#define SetupQueryInfOriginalFileInformation SetupQueryInfOriginalFileInformationW +#define SetupQueryInfVersionInformation SetupQueryInfVersionInformationW +#define SetupQuerySourceList SetupQuerySourceListW +#define SetupQuerySpaceRequiredOnDrive SetupQuerySpaceRequiredOnDriveW +#define SetupQueueCopyIndirect SetupQueueCopyIndirectW +#define SetupQueueCopySection SetupQueueCopySectionW +#define SetupQueueCopy SetupQueueCopyW +#define SetupQueueDefaultCopy SetupQueueDefaultCopyW +#define SetupQueueDeleteSection SetupQueueDeleteSectionW +#define SetupQueueDelete SetupQueueDeleteW +#define SetupQueueRenameSection SetupQueueRenameSectionW +#define SetupQueueRename SetupQueueRenameW +#define SetupRemoveFileLogEntry SetupRemoveFileLogEntryW +#define SetupRemoveFromDiskSpaceList SetupRemoveFromDiskSpaceListW +#define SetupRemoveFromSourceList SetupRemoveFromSourceListW +#define SetupRemoveInstallSectionFromDiskSpaceList SetupRemoveInstallSectionFromDiskSpaceListW +#define SetupRemoveSectionFromDiskSpaceList SetupRemoveSectionFromDiskSpaceListW +#define SetupRenameError SetupRenameErrorW +#define SetupScanFileQueue SetupScanFileQueueW +#define SetupSetDirectoryIdEx SetupSetDirectoryIdExW +#define SetupSetDirectoryId SetupSetDirectoryIdW +#define SetupSetFileQueueAlternatePlatform SetupSetFileQueueAlternatePlatformW +#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideW +#define SetupSetSourceList SetupSetSourceListW +#else +#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A +#define SetupAddInstallSectionToDiskSpaceList SetupAddInstallSectionToDiskSpaceListA +#define SetupAddSectionToDiskSpaceList SetupAddSectionToDiskSpaceListA +#define SetupAddToDiskSpaceList SetupAddToDiskSpaceListA +#define SetupAddToSourceList SetupAddToSourceListA +#define SetupAdjustDiskSpaceList SetupAdjustDiskSpaceListA +#define SetupBackupError SetupBackupErrorA +#define SetupCommitFileQueue SetupCommitFileQueueA +#define SetupCopyError SetupCopyErrorA +#define SetupCopyOEMInf SetupCopyOEMInfA +#define SetupCreateDiskSpaceList SetupCreateDiskSpaceListA +#define SetupDecompressOrCopyFile SetupDecompressOrCopyFileA +#define SetupDefaultQueueCallback SetupDefaultQueueCallbackA +#define SetupDeleteError SetupDeleteErrorA +#define SetupDiBuildClassInfoListEx SetupDiBuildClassInfoListExA +#define SetupDiClassGuidsFromName SetupDiClassGuidsFromNameA +#define SetupDiClassGuidsFromNameEx SetupDiClassGuidsFromNameExA +#define SetupDiClassNameFromGuid SetupDiClassNameFromGuidA +#define SetupDiClassNameFromGuidEx SetupDiClassNameFromGuidExA +#define SetupDiCreateDeviceInfo SetupDiCreateDeviceInfoA +#define SetupDiCreateDeviceInfoListEx SetupDiCreateDeviceInfoListExA +#define SetupDiCreateDeviceInterface SetupDiCreateDeviceInterfaceA +#define SetupDiCreateInterfaceDevice SetupDiCreateDeviceInterfaceA +#define SetupDiCreateDeviceInterfaceRegKey SetupDiCreateDeviceInterfaceRegKeyA +#define SetupDiCreateInterfaceDeviceRegKey SetupDiCreateDeviceInterfaceRegKeyA +#define SetupDiCreateDevRegKey SetupDiCreateDevRegKeyA +#define SetupDiDeleteInterfaceDeviceData SetupDiDeleteDeviceInterfaceData +#define SetupDiEnumDriverInfo SetupDiEnumDriverInfoA +#define SetupDiGetActualSectionToInstall SetupDiGetActualSectionToInstallA +#define SetupDiGetClassDescription SetupDiGetClassDescriptionA +#define SetupDiGetClassDescriptionEx SetupDiGetClassDescriptionExA +#define SetupDiGetClassDevPropertySheets SetupDiGetClassDevPropertySheetsA +#define SetupDiGetClassDevs SetupDiGetClassDevsA +#define SetupDiGetClassDevsEx SetupDiGetClassDevsExA +#define SetupDiGetClassImageListEx SetupDiGetClassImageListExA +#define SetupDiGetClassInstallParams SetupDiGetClassInstallParamsA +#define SetupDiGetClassRegistryProperty SetupDiGetClassRegistryPropertyA +#define SetupDiGetDeviceInfoListDetail SetupDiGetDeviceInfoListDetailA +#define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsA +#define SetupDiGetDeviceInstanceId SetupDiGetDeviceInstanceIdA +#define SetupDiGetDeviceInterfaceDetail SetupDiGetDeviceInterfaceDetailA +#define SetupDiGetInterfaceDeviceDetail SetupDiGetDeviceInterfaceDetailA +#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyA +#define SetupDiGetDriverInfoDetail SetupDiGetDriverInfoDetailA +#define SetupDiGetDriverInstallParams SetupDiGetDriverInstallParamsA +#define SetupDiGetHwProfileFriendlyName SetupDiGetHwProfileFriendlyNameA +#define SetupDiGetHwProfileFriendlyNameEx SetupDiGetHwProfileFriendlyNameExA +#define SetupDiGetHwProfileListEx SetupDiGetHwProfileListExA +#define SetupDiGetINFClass SetupDiGetINFClassA +#define SetupDiGetSelectedDriver SetupDiGetSelectedDriverA +#define SetupDiInstallClass SetupDiInstallClassA +#define SetupDiInstallClassEx SetupDiInstallClassExA +#define SetupDiOpenClassRegKeyEx SetupDiOpenClassRegKeyExA +#define SetupDiOpenDeviceInfo SetupDiOpenDeviceInfoA +#define SetupDiOpenDeviceInterface SetupDiOpenDeviceInterfaceA +#define SetupDiOpenInterfaceDevice SetupDiOpenDeviceInterfaceA +#define SetupDiSetClassInstallParams SetupDiSetClassInstallParamsA +#define SetupDiSetClassRegistryProperty SetupDiSetClassRegistryPropertyA +#define SetupDiSetDeviceInstallParams SetupDiSetDeviceInstallParamsA +#define SetupDiSetDeviceRegistryProperty SetupDiSetDeviceRegistryPropertyA +#define SetupDiSetDriverInstallParams SetupDiSetDriverInstallParamsA +#define SetupDiSetSelectedDriver SetupDiSetSelectedDriverA +#define SetupDuplicateDiskSpaceList SetupDuplicateDiskSpaceListA +#define SetupFindFirstLine SetupFindFirstLineA +#define SetupFindNextMatchLine SetupFindNextMatchLineA +#define SetupFreeSourceList SetupFreeSourceListA +#define SetupGetBackupInformation SetupGetBackupInformationA +#define SetupGetFileCompressionInfo SetupGetFileCompressionInfoA +#define SetupGetInfFileList SetupGetInfFileListA +#define SetupGetInfInformation SetupGetInfInformationA +#define SetupGetLineByIndex SetupGetLineByIndexA +#define SetupGetLineCount SetupGetLineCountA +#define SetupGetLineText SetupGetLineTextA +#define SetupGetMultiSzField SetupGetMultiSzFieldA +#define SetupGetSourceFileLocation SetupGetSourceFileLocationA +#define SetupGetSourceFileSize SetupGetSourceFileSizeA +#define SetupGetSourceInfo SetupGetSourceInfoA +#define SetupGetStringField SetupGetStringFieldA +#define SetupGetTargetPath SetupGetTargetPathA +#define SetupInitializeFileLog SetupInitializeFileLogA +#define SetupInstallFile SetupInstallFileA +#define SetupInstallFileEx SetupInstallFileExA +#define SetupInstallFilesFromInfSection SetupInstallFilesFromInfSectionA +#define SetupInstallFromInfSection SetupInstallFromInfSectionA +#define SetupInstallServicesFromInfSection SetupInstallServicesFromInfSectionA +#define SetupInstallServicesFromInfSectionEx SetupInstallServicesFromInfSectionExA +#define SetupIterateCabinet SetupIterateCabinetA +#define SetupLogError SetupLogErrorA +#define SetupLogFile SetupLogFileA +#define SetupOpenAppendInfFile SetupOpenAppendInfFileA +#define SetupOpenInfFile SetupOpenInfFileA +#define SetupPromptForDisk SetupPromptForDiskA +#define SetupQueryDrivesInDiskSpaceList SetupQueryDrivesInDiskSpaceListA +#define SetupQueryFileLog SetupQueryFileLogA +#define SetupQueryInfFileInformation SetupQueryInfFileInformationA +#define SetupQueryInfOriginalFileInformation SetupQueryInfOriginalFileInformationA +#define SetupQueryInfVersionInformation SetupQueryInfVersionInformationA +#define SetupQuerySourceList SetupQuerySourceListA +#define SetupQuerySpaceRequiredOnDrive SetupQuerySpaceRequiredOnDriveA +#define SetupQueueCopy SetupQueueCopyA +#define SetupQueueCopyIndirect SetupQueueCopyIndirectA +#define SetupQueueCopySection SetupQueueCopySectionA +#define SetupQueueDefaultCopy SetupQueueDefaultCopyA +#define SetupQueueDelete SetupQueueDeleteA +#define SetupQueueDeleteSection SetupQueueDeleteSectionA +#define SetupQueueRename SetupQueueRenameA +#define SetupQueueRenameSection SetupQueueRenameSectionA +#define SetupRemoveFileLogEntry SetupRemoveFileLogEntryA +#define SetupRemoveFromDiskSpaceList SetupRemoveFromDiskSpaceListA +#define SetupRemoveFromSourceList SetupRemoveFromSourceListA +#define SetupRemoveInstallSectionFromDiskSpaceList SetupRemoveInstallSectionFromDiskSpaceListA +#define SetupRemoveSectionFromDiskSpaceList SetupRemoveSectionFromDiskSpaceListA +#define SetupRenameError SetupRenameErrorA +#define SetupScanFileQueue SetupScanFileQueueA +#define SetupSetDirectoryId SetupSetDirectoryIdA +#define SetupSetDirectoryIdEx SetupSetDirectoryIdExA +#define SetupSetFileQueueAlternatePlatform SetupSetFileQueueAlternatePlatformA +#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideA +#define SetupSetSourceList SetupSetSourceListA +#endif /* UNICODE */ + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif + +#include +#endif /* _SETUPAPI_H_ */ + diff --git a/reactos/w32api/include/shellapi.h b/reactos/w32api/include/shellapi.h new file mode 100644 index 00000000000..0a583077caf --- /dev/null +++ b/reactos/w32api/include/shellapi.h @@ -0,0 +1,282 @@ +#ifndef _SHELLAPI_H +#define _SHELLAPI_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define WINSHELLAPI DECLSPEC_IMPORT +#define ABE_LEFT 0 +#define ABE_TOP 1 +#define ABE_RIGHT 2 +#define ABE_BOTTOM 3 +#define ABS_AUTOHIDE 1 +#define ABS_ALWAYSONTOP 2 +#define SEE_MASK_CLASSNAME 1 +#define SEE_MASK_CLASSKEY 3 +#define SEE_MASK_IDLIST 4 +#define SEE_MASK_INVOKEIDLIST 12 +#define SEE_MASK_ICON 0x10 +#define SEE_MASK_HOTKEY 0x20 +#define SEE_MASK_NOCLOSEPROCESS 0x40 +#define SEE_MASK_CONNECTNETDRV 0x80 +#define SEE_MASK_FLAG_DDEWAIT 0x100 +#define SEE_MASK_DOENVSUBST 0x200 +#define SEE_MASK_FLAG_NO_UI 0x400 +#define SEE_MASK_NO_CONSOLE 0x8000 +#define SEE_MASK_UNICODE 0x10000 +#define SEE_MASK_ASYNCOK 0x100000 +#define SEE_MASK_HMONITOR 0x200000 +#define ABM_NEW 0 +#define ABM_REMOVE 1 +#define ABM_QUERYPOS 2 +#define ABM_SETPOS 3 +#define ABM_GETSTATE 4 +#define ABM_GETTASKBARPOS 5 +#define ABM_ACTIVATE 6 +#define ABM_GETAUTOHIDEBAR 7 +#define ABM_SETAUTOHIDEBAR 8 +#define ABM_WINDOWPOSCHANGED 9 +#define ABN_STATECHANGE 0 +#define ABN_POSCHANGED 1 +#define ABN_FULLSCREENAPP 2 +#define ABN_WINDOWARRANGE 3 +#define NIM_ADD 0 +#define NIM_MODIFY 1 +#define NIM_DELETE 2 +#define NIF_MESSAGE 1 +#define NIF_ICON 2 +#define NIF_TIP 4 +#define SE_ERR_FNF 2 +#define SE_ERR_PNF 3 +#define SE_ERR_ACCESSDENIED 5 +#define SE_ERR_OOM 8 +#define SE_ERR_DLLNOTFOUND 32 +#define SE_ERR_SHARE 26 +#define SE_ERR_ASSOCINCOMPLETE 27 +#define SE_ERR_DDETIMEOUT 28 +#define SE_ERR_DDEFAIL 29 +#define SE_ERR_DDEBUSY 30 +#define SE_ERR_NOASSOC 31 +#define FO_MOVE 1 +#define FO_COPY 2 +#define FO_DELETE 3 +#define FO_RENAME 4 +#define FOF_MULTIDESTFILES 1 +#define FOF_CONFIRMMOUSE 2 +#define FOF_SILENT 4 +#define FOF_RENAMEONCOLLISION 8 +#define FOF_NOCONFIRMATION 16 +#define FOF_WANTMAPPINGHANDLE 32 +#define FOF_ALLOWUNDO 64 +#define FOF_FILESONLY 128 +#define FOF_SIMPLEPROGRESS 256 +#define FOF_NOCONFIRMMKDIR 512 +#define FOF_NOERRORUI 1024 +#define FOF_NOCOPYSECURITYATTRIBS 2048 +#define PO_DELETE 19 +#define PO_RENAME 20 +#define PO_PORTCHANGE 32 +#define PO_REN_PORT 52 +#define SHGFI_ICON 256 +#define SHGFI_DISPLAYNAME 512 +#define SHGFI_TYPENAME 1024 +#define SHGFI_ATTRIBUTES 2048 +#define SHGFI_ICONLOCATION 4096 +#define SHGFI_EXETYPE 8192 +#define SHGFI_SYSICONINDEX 16384 +#define SHGFI_LINKOVERLAY 32768 +#define SHGFI_SELECTED 65536 +#define SHGFI_ATTR_SPECIFIED 131072 +#define SHGFI_LARGEICON 0 +#define SHGFI_SMALLICON 1 +#define SHGFI_OPENICON 2 +#define SHGFI_SHELLICONSIZE 4 +#define SHGFI_PIDL 8 +#define SHGFI_USEFILEATTRIBUTES 16 +#define SHERB_NOCONFIRMATION 1 +#define SHERB_NOPROGRESSUI 2 +#define SHERB_NOSOUND 4 + +typedef WORD FILEOP_FLAGS; +typedef WORD PRINTEROP_FLAGS; +#include +typedef struct _AppBarData { + DWORD cbSize; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; +} APPBARDATA,*PAPPBARDATA; +DECLARE_HANDLE(HDROP); +typedef struct _NOTIFYICONDATAA { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + CHAR szTip[64]; +} NOTIFYICONDATAA,*PNOTIFYICONDATAA; +typedef struct _NOTIFYICONDATAW { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + WCHAR szTip[64]; +} NOTIFYICONDATAW,*PNOTIFYICONDATAW; +typedef struct _SHELLEXECUTEINFOA { + DWORD cbSize; + 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; +} SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA; +typedef struct _SHELLEXECUTEINFOW { + DWORD cbSize; + 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; +} SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW; +typedef struct _SHFILEOPSTRUCTA { + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCSTR lpszProgressTitle; +} SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA; +typedef struct _SHFILEOPSTRUCTW { + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCWSTR lpszProgressTitle; +} SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW; +typedef struct _SHFILEINFOA { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + CHAR szDisplayName[MAX_PATH]; + CHAR szTypeName[80]; +} SHFILEINFOA; +typedef struct _SHFILEINFOW { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + WCHAR szDisplayName[MAX_PATH]; + WCHAR szTypeName[80]; +} SHFILEINFOW; +typedef struct _SHQUERYRBINFO { + DWORD cbSize; + __int64 i64Size; + __int64 i64NumItems; +} SHQUERYRBINFO, *LPSHQUERYRBINFO; +#include + +LPWSTR * WINAPI CommandLineToArgvW(LPCWSTR,int*); +void WINAPI DragAcceptFiles(HWND,BOOL); +void WINAPI DragFinish(HDROP); +UINT WINAPI DragQueryFileA(HDROP,UINT,LPSTR,UINT); +UINT WINAPI DragQueryFileW(HDROP,UINT,LPWSTR,UINT); +BOOL WINAPI DragQueryPoint(HDROP,LPPOINT); +HICON WINAPI ExtractAssociatedIconA(HINSTANCE,LPCSTR,PWORD); +HICON WINAPI ExtractAssociatedIconW(HINSTANCE,LPCWSTR,PWORD); +HICON WINAPI ExtractIconA(HINSTANCE,LPCSTR,UINT); +HICON WINAPI ExtractIconW(HINSTANCE,LPCWSTR,UINT); +UINT WINAPI ExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT); +UINT WINAPI ExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT); +HINSTANCE WINAPI FindExecutableA(LPCSTR,LPCSTR,LPSTR); +HINSTANCE WINAPI FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR); +UINT WINAPI SHAppBarMessage(DWORD,PAPPBARDATA); +BOOL WINAPI Shell_NotifyIconA(DWORD,PNOTIFYICONDATAA); +BOOL WINAPI Shell_NotifyIconW(DWORD,PNOTIFYICONDATAW); +int WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON); +int WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON); +HINSTANCE WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT); +HINSTANCE WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT); +BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA); +BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW); +int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA); +int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW); +void WINAPI SHFreeNameMappings(HANDLE); +DWORD WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT); +DWORD WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT); +HRESULT WINAPI SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); +HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); +HRESULT WINAPI SHEmptyRecycleBinA(HWND,LPCSTR,DWORD); +HRESULT WINAPI SHEmptyRecycleBinW(HWND,LPCWSTR,DWORD); + +#ifdef UNICODE +typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA; +typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO; +typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT; +typedef SHFILEINFOW SHFILEINFO; +#define DragQueryFile DragQueryFileW +#define ExtractAssociatedIcon ExtractAssociatedIconW +#define ExtractIcon ExtractIconW +#define ExtractIconEx ExtractIconExW +#define FindExecutable FindExecutableW +#define Shell_NotifyIcon Shell_NotifyIconW +#define ShellAbout ShellAboutW +#define ShellExecute ShellExecuteW +#define ShellExecuteEx ShellExecuteExW +#define SHFileOperation SHFileOperationW +#define SHGetFileInfo SHGetFileInfoW +#define SHQueryRecycleBin SHQueryRecycleBinW +#define SHEmptyRecycleBin SHEmptyRecycleBinW + +#else +typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA; +typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO; +typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT; +typedef SHFILEINFOA SHFILEINFO; +#define DragQueryFile DragQueryFileA +#define ExtractAssociatedIcon ExtractAssociatedIconA +#define ExtractIcon ExtractIconA +#define ExtractIconEx ExtractIconExA +#define FindExecutable FindExecutableA +#define Shell_NotifyIcon Shell_NotifyIconA +#define ShellAbout ShellAboutA +#define ShellExecute ShellExecuteA +#define ShellExecuteEx ShellExecuteExA +#define SHFileOperation SHFileOperationA +#define SHGetFileInfo SHGetFileInfoA +#define SHQueryRecycleBin SHQueryRecycleBinA +#define SHEmptyRecycleBin SHEmptyRecycleBinA +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/shlguid.h b/reactos/w32api/include/shlguid.h new file mode 100644 index 00000000000..5bbc7af414e --- /dev/null +++ b/reactos/w32api/include/shlguid.h @@ -0,0 +1,94 @@ +#ifndef _SHLGUID_H +#define _SHLGUID_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) +#define SID_SShellBrowser IID_IShellBrowser +extern const GUID CLSID_ShellDesktop; +extern const GUID CLSID_ShellLink; +extern const GUID FMTID_Intshcut; +extern const GUID FMTID_InternetSite; +extern const GUID CGID_Explorer; +extern const GUID CGID_ShellDocView; +extern const GUID CGID_ShellServiceObject; +extern const GUID IID_INewShortcutHookA; +extern const GUID IID_IShellBrowser; +extern const GUID IID_IShellView; +extern const GUID IID_IContextMenu; +extern const GUID IID_IColumnProvider; +extern const GUID IID_IQueryInfo; +extern const GUID IID_IShellIcon; +extern const GUID IID_IShellIconOverlayIdentifier; +extern const GUID IID_IShellFolder; +extern const GUID IID_IShellExtInit; +extern const GUID IID_IShellPropSheetExt; +extern const GUID IID_IPersistFolder; +extern const GUID IID_IExtractIconA; +extern const GUID IID_IShellLinkA; +extern const GUID IID_IShellCopyHookA; +extern const GUID IID_IFileViewerA; +extern const GUID IID_ICommDlgBrowser; +extern const GUID IID_IEnumIDList; +extern const GUID IID_IFileViewerSite; +extern const GUID IID_IContextMenu2; +extern const GUID IID_IShellExecuteHookA; +extern const GUID IID_IPropSheetPage; +extern const GUID IID_INewShortcutHookW; +extern const GUID IID_IFileViewerW; +extern const GUID IID_IShellLinkW; +extern const GUID IID_IExtractIconW; +extern const GUID IID_IShellExecuteHookW; +extern const GUID IID_IShellCopyHookW; +extern const GUID IID_IShellView2; +extern const GUID LIBID_SHDocVw; +extern const GUID IID_IShellExplorer; +extern const GUID DIID_DShellExplorerEvents; +extern const GUID CLSID_ShellExplorer; +extern const GUID IID_ISHItemOC; +extern const GUID DIID_DSHItemOCEvents; +extern const GUID CLSID_SHItemOC; +extern const GUID IID_DHyperLink; +extern const GUID IID_DIExplorer; +extern const GUID DIID_DExplorerEvents; +extern const GUID CLSID_InternetExplorer; +extern const GUID CLSID_StdHyperLink; +extern const GUID CLSID_FileTypes; +extern const GUID CLSID_InternetShortcut; +extern const GUID IID_IUniformResourceLocator; +extern const GUID CLSID_DragDropHelper; +extern const GUID IID_IDropTargetHelper; +extern const GUID IID_IDragSourceHelper; +#if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) +extern const GUID IID_IPersistFolder2; +#endif +#if (_WIN32_WINNT >= 0x500) +extern const GUID IID_IPersistFolder3; +extern const GUID IID_IShellFolder2; +extern const GUID IID_IFileSystemBindData; +#endif +#ifdef UNICODE +#define IID_IFileViewer IID_IFileViewerW +#define IID_IShellLink IID_IShellLinkW +#define IID_IExtractIcon IID_IExtractIconW +#define IID_IShellCopyHook IID_IShellCopyHookW +#define IID_IShellExecuteHook IID_IShellExecuteHookW +#define IID_INewShortcutHook IID_INewShortcutHookW +#else +#define IID_IFileViewer IID_IFileViewerA +#define IID_IShellLink IID_IShellLinkA +#define IID_IExtractIcon IID_IExtractIconA +#define IID_IShellCopyHook IID_IShellCopyHookA +#define IID_IShellExecuteHook IID_IShellExecuteHookA +#define IID_INewShortcutHook IID_INewShortcutHookA +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/reactos/w32api/include/shlobj.h b/reactos/w32api/include/shlobj.h new file mode 100644 index 00000000000..2243bd4dcef --- /dev/null +++ b/reactos/w32api/include/shlobj.h @@ -0,0 +1,1440 @@ +#ifndef _SHLOBJ_H +#define _SHLOBJ_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#pragma pack(push,1) +#include + +#define BIF_RETURNONLYFSDIRS 1 +#define BIF_DONTGOBELOWDOMAIN 2 +#define BIF_STATUSTEXT 4 +#define BIF_RETURNFSANCESTORS 8 +#define BIF_EDITBOX 16 +#define BIF_VALIDATE 32 +#define BIF_NEWDIALOGSTYLE 64 +#define BIF_BROWSEINCLUDEURLS 128 +#define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE ) +#define BIF_BROWSEFORCOMPUTER 0x1000 +#define BIF_BROWSEFORPRINTER 0x2000 +#define BIF_BROWSEINCLUDEFILES 0x4000 +#define BIF_SHAREABLE 0x8000 +#define BFFM_INITIALIZED 1 +#define BFFM_SELCHANGED 2 +#define BFFM_VALIDATEFAILEDA 3 +#define BFFM_VALIDATEFAILEDW 4 +#define BFFM_SETSTATUSTEXTA (WM_USER + 100) +#define BFFM_SETSTATUSTEXTW (WM_USER + 104) +#define BFFM_ENABLEOK (WM_USER + 101) +#define BFFM_SETSELECTIONA (WM_USER + 102) +#define BFFM_SETSELECTIONW (WM_USER + 103) +#define BFFM_SETOKTEXT (WM_USER + 105) +#define BFFM_SETEXPANDED (WM_USER + 106) +#ifdef UNICODE +#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW +#define BFFM_SETSELECTION BFFM_SETSELECTIONW +#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW +#else +#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA +#define BFFM_SETSELECTION BFFM_SETSELECTIONA +#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA +#endif +#define DVASPECT_SHORTNAME 2 +#define SHARD_PIDL 1 +#define SHARD_PATH 2 +#define SHCNE_RENAMEITEM 1 +#define SHCNE_CREATE 2 +#define SHCNE_DELETE 4 +#define SHCNE_MKDIR 8 +#define SHCNE_RMDIR 16 +#define SHCNE_MEDIAINSERTED 32 +#define SHCNE_MEDIAREMOVED 64 +#define SHCNE_DRIVEREMOVED 128 +#define SHCNE_DRIVEADD 256 +#define SHCNE_NETSHARE 512 +#define SHCNE_NETUNSHARE 1024 +#define SHCNE_ATTRIBUTES 2048 +#define SHCNE_UPDATEDIR 4096 +#define SHCNE_UPDATEITEM 8192 +#define SHCNE_SERVERDISCONNECT 16384 +#define SHCNE_UPDATEIMAGE 32768 +#define SHCNE_DRIVEADDGUI 65536 +#define SHCNE_RENAMEFOLDER 0x20000 +#define SHCNE_FREESPACE 0x40000 +#define SHCNE_ASSOCCHANGED 0x8000000 +#define SHCNE_DISKEVENTS 0x2381F +#define SHCNE_GLOBALEVENTS 0xC0581E0 +#define SHCNE_ALLEVENTS 0x7FFFFFFF +#define SHCNE_INTERRUPT 0x80000000 +#define SHCNF_IDLIST 0 +#define SHCNF_PATHA 1 +#define SHCNF_PRINTERA 2 +#define SHCNF_DWORD 3 +#define SHCNF_PATHW 5 +#define SHCNF_PRINTERW 6 +#define SHCNF_TYPE 0xFF +#define SHCNF_FLUSH 0x1000 +#define SHCNF_FLUSHNOWAIT 0x2000 +#ifdef UNICODE +#define SHCNF_PATH SHCNF_PATHW +#define SHCNF_PRINTER SHCNF_PRINTERW +#else +#define SHCNF_PATH SHCNF_PATHA +#define SHCNF_PRINTER SHCNF_PRINTERA +#endif +#define SFGAO_CANCOPY DROPEFFECT_COPY +#define SFGAO_CANMOVE DROPEFFECT_MOVE +#define SFGAO_CANLINK DROPEFFECT_LINK +#define SFGAO_CANRENAME 0x00000010L +#define SFGAO_CANDELETE 0x00000020L +#define SFGAO_HASPROPSHEET 0x00000040L +#define SFGAO_DROPTARGET 0x00000100L +#define SFGAO_CAPABILITYMASK 0x00000177L +#define SFGAO_GHOSTED 0x00008000L +#define SFGAO_LINK 0x00010000L +#define SFGAO_SHARE 0x00020000L +#define SFGAO_READONLY 0x00040000L +#define SFGAO_HIDDEN 0x00080000L +#define SFGAO_DISPLAYATTRMASK 0x000F0000L +#define SFGAO_FILESYSANCESTOR 0x10000000L +#define SFGAO_FOLDER 0x20000000L +#define SFGAO_FILESYSTEM 0x40000000L +#define SFGAO_HASSUBFOLDER 0x80000000L +#define SFGAO_CONTENTSMASK 0x80000000L +#define SFGAO_VALIDATE 0x01000000L +#define SFGAO_REMOVABLE 0x02000000L +#define SFGAO_COMPRESSED 0x04000000L +#define STRRET_WSTR 0 +#define STRRET_OFFSET 1 +#define STRRET_CSTR 2 +#define SHGDFIL_FINDDATA 1 +#define SHGDFIL_NETRESOURCE 2 +#define SHGDFIL_DESCRIPTIONID 3 +#define SHDID_ROOT_REGITEM 1 +#define SHDID_FS_FILE 2 +#define SHDID_FS_DIRECTORY 3 +#define SHDID_FS_OTHER 4 +#define SHDID_COMPUTER_DRIVE35 5 +#define SHDID_COMPUTER_DRIVE525 6 +#define SHDID_COMPUTER_REMOVABLE 7 +#define SHDID_COMPUTER_FIXED 8 +#define SHDID_COMPUTER_NETDRIVE 9 +#define SHDID_COMPUTER_CDROM 10 +#define SHDID_COMPUTER_RAMDISK 11 +#define SHDID_COMPUTER_OTHER 12 +#define SHDID_NET_DOMAIN 13 +#define SHDID_NET_SERVER 14 +#define SHDID_NET_SHARE 15 +#define SHDID_NET_RESTOFNET 16 +#define SHDID_NET_OTHER 17 +#ifndef REGSTR_PATH_EXPLORER +#define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer") +#endif +#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders") +#define CSIDL_DESKTOP 0 +#define CSIDL_INTERNET 1 +#define CSIDL_PROGRAMS 2 +#define CSIDL_CONTROLS 3 +#define CSIDL_PRINTERS 4 +#define CSIDL_PERSONAL 5 +#define CSIDL_FAVORITES 6 +#define CSIDL_STARTUP 7 +#define CSIDL_RECENT 8 +#define CSIDL_SENDTO 9 +#define CSIDL_BITBUCKET 10 +#define CSIDL_STARTMENU 11 +#define CSIDL_DESKTOPDIRECTORY 16 +#define CSIDL_DRIVES 17 +#define CSIDL_NETWORK 18 +#define CSIDL_NETHOOD 19 +#define CSIDL_FONTS 20 +#define CSIDL_TEMPLATES 21 +#define CSIDL_COMMON_STARTMENU 22 +#define CSIDL_COMMON_PROGRAMS 23 +#define CSIDL_COMMON_STARTUP 24 +#define CSIDL_COMMON_DESKTOPDIRECTORY 25 +#define CSIDL_APPDATA 26 +#define CSIDL_PRINTHOOD 27 +#define CSIDL_LOCAL_APPDATA 28 +#define CSIDL_ALTSTARTUP 29 +#define CSIDL_COMMON_ALTSTARTUP 30 +#define CSIDL_COMMON_FAVORITES 31 +#define CSIDL_INTERNET_CACHE 32 +#define CSIDL_COOKIES 33 +#define CSIDL_HISTORY 34 +#define CSIDL_COMMON_APPDATA 35 +#define CSIDL_WINDOWS 36 +#define CSIDL_SYSTEM 37 +#define CSIDL_PROGRAM_FILES 38 +#define CSIDL_MYPICTURES 39 +#define CSIDL_PROFILE 40 +#define CSIDL_SYSTEMX86 41 +#define CSIDL_PROGRAM_FILESX86 42 +#define CSIDL_PROGRAM_FILES_COMMON 43 +#define CSIDL_PROGRAM_FILES_COMMONX86 44 +#define CSIDL_COMMON_TEMPLATES 45 +#define CSIDL_COMMON_DOCUMENTS 46 +#define CSIDL_COMMON_ADMINTOOLS 47 +#define CSIDL_ADMINTOOLS 48 +#define CSIDL_CONNECTIONS 49 +#define CSIDL_COMMON_MUSIC 53 +#define CSIDL_COMMON_PICTURES 54 +#define CSIDL_COMMON_VIDEO 55 +#define CSIDL_RESOURCES 56 +#define CSIDL_RESOURCES_LOCALIZED 57 +#define CSIDL_COMMON_OEM_LINKS 58 +#define CSIDL_CDBURN_AREA 59 +#define CSIDL_COMPUTERSNEARME 61 +#define CSIDL_FLAG_DONT_VERIFY 0x4000 +#define CSIDL_FLAG_CREATE 0x8000 +#define CSIDL_FLAG_MASK 0xFF00 +#define CFSTR_SHELLIDLIST TEXT("Shell IDList Array") +#define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") +#define CFSTR_NETRESOURCES TEXT("Net Resource") +#define CFSTR_FILECONTENTS TEXT("FileContents") +#define CFSTR_FILENAMEA TEXT("FileName") +#define CFSTR_FILENAMEMAPA TEXT("FileNameMap") +#define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor") +#define CFSTR_INETURLA TEXT("UniformResourceLocator") +#define CFSTR_SHELLURL CFSTR_INETURLA +#define CFSTR_FILENAMEW TEXT("FileNameW") +#define CFSTR_FILENAMEMAPW TEXT("FileNameMapW") +#define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW") +#define CFSTR_INETURLW TEXT("UniformResourceLocatorW") +#ifdef UNICODE +#define CFSTR_FILENAME CFSTR_FILENAMEW +#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW +#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW +#define CFSTR_INETURL CFSTR_INETURLW +#else +#define CFSTR_FILENAME CFSTR_FILENAMEA +#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA +#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA +#define CFSTR_INETURL CFSTR_INETURLA +#endif +#define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") +#define CFSTR_INDRAGLOOP TEXT("InShellDragLoop") +#define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded") +#define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect") +#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect") +#define CMF_NORMAL 0 +#define CMF_DEFAULTONLY 1 +#define CMF_VERBSONLY 2 +#define CMF_EXPLORE 4 +#define CMF_NOVERBS 8 +#define CMF_CANRENAME 16 +#define CMF_NODEFAULT 32 +#define CMF_INCLUDESTATIC 64 +#define CMF_RESERVED 0xffff0000 +#define GCS_VERBA 0 +#define GCS_HELPTEXTA 1 +#define GCS_VALIDATEA 2 +#define GCS_VERBW 4 +#define GCS_HELPTEXTW 5 +#define GCS_VALIDATEW 6 +#define GCS_UNICODE 4 +#ifdef UNICODE +#define GCS_VERB GCS_VERBW +#define GCS_HELPTEXT GCS_HELPTEXTW +#define GCS_VALIDATE GCS_VALIDATEW +#else +#define GCS_VERB GCS_VERBA +#define GCS_HELPTEXT GCS_HELPTEXTA +#define GCS_VALIDATE GCS_VALIDATEA +#endif +#define CMDSTR_NEWFOLDERA "NewFolder" +#define CMDSTR_VIEWLISTA "ViewList" +#define CMDSTR_VIEWDETAILSA "ViewDetails" +#define CMDSTR_NEWFOLDERW L"NewFolder" +#define CMDSTR_VIEWLISTW L"ViewList" +#define CMDSTR_VIEWDETAILSW L"ViewDetails" +#ifdef UNICODE +#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERW +#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTW +#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSW +#else +#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDER +#define CMDSTR_VIEWLIST CMDSTR_VIEWLIST +#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILS +#endif +#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY +#define CMIC_MASK_ICON SEE_MASK_ICON +#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI +#define CMIC_MASK_MODAL 0x80000000 +#define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS +#define GIL_OPENICON 1 +#define GIL_FORSHELL 2 +#define GIL_SIMULATEDOC 1 +#define GIL_PERINSTANCE 2 +#define GIL_PERCLASS 4 +#define GIL_NOTFILENAME 8 +#define GIL_DONTCACHE 16 +#define FVSIF_RECT 1 +#define FVSIF_PINNED 2 +#define FVSIF_NEWFAILED 0x8000000 +#define FVSIF_NEWFILE 0x80000000 +#define FVSIF_CANVIEWIT 0x40000000 +#define CDBOSC_SETFOCUS 0 +#define CDBOSC_KILLFOCUS 1 +#define CDBOSC_SELCHANGE 2 +#define CDBOSC_RENAME 3 +#define FCIDM_SHVIEWFIRST 0 +#define FCIDM_SHVIEWLAST 0x7fff +#define FCIDM_BROWSERFIRST 0xa000 +#define FCIDM_BROWSERLAST 0xbf00 +#define FCIDM_GLOBALFIRST 0x8000 +#define FCIDM_GLOBALLAST 0x9fff +#define FCIDM_MENU_FILE FCIDM_GLOBALFIRST +#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040) +#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080) +#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081) +#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0) +#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1) +#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100) +#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140) +#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150) +#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170) +#define FCIDM_TOOLBAR FCIDM_BROWSERFIRST +#define FCIDM_STATUS (FCIDM_BROWSERFIRST+1) +#define SBSP_DEFBROWSER 0 +#define SBSP_SAMEBROWSER 1 +#define SBSP_NEWBROWSER 2 +#define SBSP_DEFMODE 0 +#define SBSP_OPENMODE 16 +#define SBSP_EXPLOREMODE 32 +#define SBSP_ABSOLUTE 0 +#define SBSP_RELATIVE 0x1000 +#define SBSP_PARENT 0x2000 +#define SBSP_INITIATEDBYHLINKFRAME 0x80000000 +#define SBSP_REDIRECT 0x40000000 +#define FCW_STATUS 1 +#define FCW_TOOLBAR 2 +#define FCW_TREE 3 +#define FCT_MERGE 1 +#define FCT_CONFIGABLE 2 +#define FCT_ADDTOEND 4 +#define SVSI_DESELECT 0 +#define SVSI_SELECT 1 +#define SVSI_EDIT 3 +#define SVSI_DESELECTOTHERS 4 +#define SVSI_ENSUREVISIBLE 8 +#define SVSI_FOCUSED 16 +#define SVGIO_BACKGROUND 0 +#define SVGIO_SELECTION 1 +#define SVGIO_ALLVIEW 2 +#define SV2GV_CURRENTVIEW ((UINT)-1) +#define SV2GV_DEFAULTVIEW ((UINT)-2) + +typedef ULONG SFGAOF; +typedef DWORD SHGDNF; + +typedef struct _IDA { + UINT cidl; + UINT aoffset[1]; +} CIDA,*LPIDA; +typedef struct _SHITEMID { + USHORT cb; + BYTE abID[1]; +} SHITEMID, * LPSHITEMID; +typedef const SHITEMID *LPCSHITEMID; +typedef struct _ITEMIDLIST { + SHITEMID mkid; +} ITEMIDLIST,*LPITEMIDLIST; +typedef const ITEMIDLIST *LPCITEMIDLIST; +typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM); +typedef struct _browseinfoA { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPSTR pszDisplayName; + LPCSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA; +typedef struct _browseinfoW { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPWSTR pszDisplayName; + LPCWSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW; +typedef struct _CMInvokeCommandInfo { + DWORD cbSize; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + DWORD dwHotKey; + HANDLE hIcon; +} CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO; +typedef struct _DROPFILES { + DWORD pFiles; + POINT pt; + BOOL fNC; + BOOL fWide; +} DROPFILES,*LPDROPFILES; +typedef enum tagSHGDN { + SHGDN_NORMAL=0, + SHGDN_INFOLDER, + SHGDN_FOREDITING=0x1000, + SHGDN_INCLUDE_NONFILESYS=0x2000, + SHGDN_FORADDRESSBAR=0x4000, + SHGDN_FORPARSING=0x8000 +} SHGNO; +typedef enum tagSHCONTF { + 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; +typedef struct _STRRET { + UINT uType; + _ANONYMOUS_UNION union { + LPWSTR pOleStr; + UINT uOffset; + char cStr[MAX_PATH]; + } DUMMYUNIONNAME; +} STRRET,*LPSTRRET; +typedef enum { + 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_FLAGS; +typedef struct _FILEDESCRIPTOR { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + CHAR cFileName[MAX_PATH]; +} FILEDESCRIPTOR,*LPFILEDESCRIPTOR; +typedef struct _FILEGROUPDESCRIPTOR { + UINT cItems; + FILEDESCRIPTOR fgd[1]; +} FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR; +typedef enum { + 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_FLAGS; +typedef enum { + SLGP_SHORTPATH=1, + SLGP_UNCPRIORITY +} SLGP_FLAGS; +typedef PBYTE LPVIEWSETTINGS; +typedef enum { + 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 +} FOLDERFLAGS; +typedef enum { + FVM_ICON=1, + FVM_SMALLICON, + FVM_LIST, + FVM_DETAILS +} FOLDERVIEWMODE; +typedef struct { + UINT ViewMode; + UINT fFlags; +} FOLDERSETTINGS,*LPFOLDERSETTINGS; +typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS; +typedef struct { + DWORD cbSize; + HWND hwndOwner; + int iShow; + DWORD dwFlags; + RECT rect; + LPUNKNOWN punkRel; + OLECHAR strNewFile[MAX_PATH]; +} FVSHOWINFO,*LPFVSHOWINFO; +typedef struct _NRESARRAY { + UINT cItems; + NETRESOURCE nr[1]; +} 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 +}; +typedef enum { + SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS, + SVUIA_INPLACEACTIVATE +} SVUIA_STATUS; +#if (_WIN32_IE >= 0x0500) +typedef struct tagEXTRASEARCH +{ + GUID guidSearch; + WCHAR wszFriendlyName[80]; + WCHAR wszUrl[2084]; +} EXTRASEARCH, *LPEXTRASEARCH; +typedef DWORD SHCOLSTATEF; +typedef struct +{ + GUID fmtid; + DWORD pid; +} SHCOLUMNID, *LPSHCOLUMNID; +typedef const SHCOLUMNID *LPCSHCOLUMNID; +typedef struct _SHELLDETAILS +{ + int fmt; + int cxChar; + STRRET str; +} SHELLDETAILS, *LPSHELLDETAILS; +typedef struct +{ + LPITEMIDLIST pidlTargetFolder; + WCHAR szTargetParsingName[MAX_PATH]; + WCHAR szNetworkProvider[MAX_PATH]; + DWORD dwAttributes; + int csidl; +} PERSIST_FOLDER_TARGET_INFO; +#endif + +DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST); +typedef IEnumIDList *LPENUMIDLIST; + +#ifdef COBJMACROS +#define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T) +#define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T) +#define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c) +#define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a) +#define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T) +#define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a) +#endif + +#undef INTERFACE +#define INTERFACE IContextMenu +DECLARE_INTERFACE_(IContextMenu,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE; +}; +typedef IContextMenu *LPCONTEXTMENU; + +#ifdef COBJMACROS +#define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IContextMenu_Release(T) (T)->lpVtbl->Release(T) +#define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e) +#define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a) +#define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e) +#endif + +#undef INTERFACE +#define INTERFACE IContextMenu2 +DECLARE_INTERFACE_(IContextMenu2,IContextMenu) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE; + STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE; + STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE; + STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE; +}; +typedef IContextMenu2 *LPCONTEXTMENU2; + +#if (_WIN32_IE >= 0x0500) +#pragma pack(push,8) +typedef struct { + ULONG dwFlags; + ULONG dwReserved; + WCHAR wszFolder[MAX_PATH]; +} SHCOLUMNINIT,*LPSHCOLUMNINIT; +typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT; +typedef struct { + ULONG dwFlags; + DWORD dwFileAttributes; + ULONG dwReserved; + WCHAR *pwszExt; + WCHAR wszFile[MAX_PATH]; +} SHCOLUMNDATA,*LPSHCOLUMNDATA; +typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA; +#pragma pack(pop) + +#define MAX_COLUMN_NAME_LEN 80 +#define MAX_COLUMN_DESC_LEN 128 + +#pragma pack(push,1) +typedef struct { + SHCOLUMNID scid; + VARTYPE vt; + DWORD fmt; + UINT cChars; + DWORD csFlags; + WCHAR wszTitle[MAX_COLUMN_NAME_LEN]; + WCHAR wszDescription[MAX_COLUMN_DESC_LEN]; +} SHCOLUMNINFO,*LPSHCOLUMNINFO; +typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO; +#pragma pack(pop) + +typedef enum { + 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 +} SHCOLSTATE; + +#ifdef COBJMACROS +#define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IContextMenu2_Release(T) (T)->lpVtbl->Release(T) +#define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e) +#define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a) +#define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e) +#define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c) +#endif + +#undef INTERFACE +#define INTERFACE IColumnProvider +DECLARE_INTERFACE_(IColumnProvider,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE; + STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE; + STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE; +}; +#endif /* _WIN32_IE >= 0x0500 */ + +#undef INTERFACE +#define INTERFACE IQueryInfo +DECLARE_INTERFACE_(IQueryInfo,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE; + STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE; +}; + +#undef INTERFACE +#define INTERFACE IShellExtInit +DECLARE_INTERFACE_(IShellExtInit, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE; +}; +typedef IShellExtInit *LPSHELLEXTINIT; + +#undef INTERFACE +#define INTERFACE IShellPropSheetExt +DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE; + STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE; +}; +typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT; + +#undef INTERFACE +#define INTERFACE IExtractIconA +DECLARE_INTERFACE_(IExtractIconA, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE; + STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE; +}; +typedef IExtractIconA *LPEXTRACTICONA; + +#ifdef COBJMACROS +#define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IExtractIconA_Release(T) (T)->lpVtbl->Release(T) +#define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) +#define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) +#endif + +#undef INTERFACE +#define INTERFACE IExtractIconW +DECLARE_INTERFACE_(IExtractIconW, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE; + STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE; +}; +typedef IExtractIconW *LPEXTRACTICONW; + +#ifdef COBJMACROS +#define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IExtractIconW_Release(T) (T)->lpVtbl->Release(T) +#define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e) +#define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e) +#endif + +#ifdef UNICODE +#define IExtractIcon IExtractIconW +#define LPEXTRACTICON LPEXTRACTICONW +#else +#define IExtractIcon IExtractIconA +#define LPEXTRACTICON LPEXTRACTICONA +#endif + +#undef INTERFACE +#define INTERFACE IShellLinkA +DECLARE_INTERFACE_(IShellLinkA, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE; + STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE; + STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE; + STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE; + STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE; + STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE; + STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE; + STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE; + STDMETHOD(GetHotkey)(THIS_ PWORD) PURE; + STDMETHOD(SetHotkey)(THIS_ WORD) PURE; + STDMETHOD(GetShowCmd)(THIS_ int*) PURE; + STDMETHOD(SetShowCmd)(THIS_ int) PURE; + STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE; + STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE; + STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE; + STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE; + STDMETHOD(SetPath)(THIS_ LPCSTR) PURE; +}; + +#ifdef COBJMACROS +#define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellLinkA_Release(T) (T)->lpVtbl->Release(T) +#define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) +#define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) +#define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) +#define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) +#define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) +#define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) +#define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) +#define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) +#define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) +#define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) +#define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) +#define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) +#define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) +#define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) +#define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) +#define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) +#define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) +#define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) +#endif + +#undef INTERFACE +#define INTERFACE IShellLinkW +DECLARE_INTERFACE_(IShellLinkW, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE; + STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE; + STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE; + STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE; + STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE; + STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE; + STDMETHOD(GetHotkey)(THIS_ PWORD) PURE; + STDMETHOD(SetHotkey)(THIS_ WORD) PURE; + STDMETHOD(GetShowCmd)(THIS_ int*) PURE; + STDMETHOD(SetShowCmd)(THIS_ int) PURE; + STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE; + STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE; + STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE; + STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE; + STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE; +}; + +#ifdef COBJMACROS +#define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellLinkW_Release(T) (T)->lpVtbl->Release(T) +#define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d) +#define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a) +#define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a) +#define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b) +#define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a) +#define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b) +#define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a) +#define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b) +#define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a) +#define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a) +#define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a) +#define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a) +#define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a) +#define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c) +#define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b) +#define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b) +#define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b) +#define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a) +#endif + +#undef INTERFACE +#define INTERFACE IShellFolder +DECLARE_INTERFACE_(IShellFolder, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE; + STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE; + STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE; + STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE; + STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE; + STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE; + STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE; + STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE; +}; +typedef IShellFolder *LPSHELLFOLDER; + +#ifdef COBJMACROS +#define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellFolder_Release(T) (T)->lpVtbl->Release(T) +#define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f) +#define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c) +#define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d) +#define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d) +#define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c) +#define IShellFolder_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b) +#define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c) +#define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f) +#define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c) +#define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) +#endif + +#if (_WIN32_IE >= 0x0500) + +DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH); +typedef IEnumExtraSearch *LPENUMEXTRASEARCH; + +#undef INTERFACE +#define INTERFACE IShellFolder2 +DECLARE_INTERFACE_(IShellFolder2, IShellFolder) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE; + STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE; + STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE; + STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE; + STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE; + STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE; + STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE; + STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE; + STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE; + STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE; + STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE; + STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE; + STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE; + STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE; + STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE; + STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE; +}; +typedef IShellFolder2 *LPSHELLFOLDER2; + +#ifdef COBJMACROS +#define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellFolder2_Release(T) (T)->lpVtbl->Release(T) +#define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f) +#define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c) +#define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d) +#define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d) +#define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c) +#define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b) +#define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c) +#define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f) +#define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c) +#define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e) +#define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a) +#define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a) +#define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c) +#define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b) +#define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c) +#define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c) +#define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b) +#endif + +#endif /* _WIN32_IE >= 0x0500 */ +#undef INTERFACE +#define INTERFACE ICopyHook +DECLARE_INTERFACE_(ICopyHook, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE; +}; +typedef ICopyHook *LPCOPYHOOK; + +#undef INTERFACE +#define INTERFACE IFileViewerSite +DECLARE_INTERFACE(IFileViewerSite) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE; + STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE; +}; +typedef IFileViewerSite *LPFILEVIEWERSITE; + +#undef INTERFACE +#define INTERFACE IFileViewer +DECLARE_INTERFACE(IFileViewer) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE; + STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE; + STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE; +}; +typedef IFileViewer *LPFILEVIEWER; + +#undef INTERFACE +#define INTERFACE IFileSystemBindData +DECLARE_INTERFACE_(IFileSystemBindData, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE; + STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE; +}; + +#undef INTERFACE +#define INTERFACE IPersistFolder +DECLARE_INTERFACE_(IPersistFolder,IPersist) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; +}; +typedef IPersistFolder *LPPERSISTFOLDER; + +#ifdef COBJMACROS +#define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#endif + +#if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500) + +#undef INTERFACE +#define INTERFACE IPersistFolder2 +DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; +}; +typedef IPersistFolder2 *LPPERSISTFOLDER2; + +#ifdef COBJMACROS +#define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) +#endif + +#endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_IE >= 0x0500) + +#undef INTERFACE +#define INTERFACE IPersistFolder3 +DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetClassID)(THIS_ CLSID*) PURE; + STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE; + STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE; + STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE; + STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE; +}; +typedef IPersistFolder3 *LPPERSISTFOLDER3; + +#ifdef COBJMACROS +#define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T) +#define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a) +#define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a) +#define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a) +#define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c) +#define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a) +#endif + +#endif /* _WIN32_IE >= 0x0500 */ + +typedef interface IShellBrowser *LPSHELLBROWSER; +typedef interface IShellView *LPSHELLVIEW; + +#undef INTERFACE +#define INTERFACE IShellBrowser +DECLARE_INTERFACE_(IShellBrowser,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE; + STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE; + STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE; + STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE; + STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE; + STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE; + STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE; + STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE; + STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE; + STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE; + STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE; + STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE; +}; + +#ifdef COBJMACROS +#define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellBrowser_Release(T) (T)->lpVtbl->Release(T) +#define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) +#define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) +#define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b) +#define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c) +#define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a) +#define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a) +#define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a) +#define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b) +#define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b) +#define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b) +#define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b) +#define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e) +#define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a) +#define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a) +#define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c) +#endif + +#undef INTERFACE +#define INTERFACE IShellView +DECLARE_INTERFACE_(IShellView,IOleWindow) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE; +#ifdef _FIX_ENABLEMODELESS_CONFLICT + STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +#else + STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; +#endif + STDMETHOD(UIActivate)(THIS_ UINT) PURE; + STDMETHOD(Refresh) (THIS) PURE; + STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE; + STDMETHOD(DestroyViewWindow)(THIS) PURE; + STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE; + STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE; + STDMETHOD(SaveViewState)(THIS) PURE; + STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE; + STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE; +}; + +#ifdef COBJMACROS +#define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IShellView_Release(T) (T)->lpVtbl->Release(T) +#define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a) +#define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a) +#define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a) +#ifdef _FIX_ENABLEMODELESS_CONFLICT +#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a) +#else +#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a) +#endif +#define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a) +#define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T) +#define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e) +#define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T) +#define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a) +#define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c) +#define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T) +#define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b) +#define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c) +#endif + +#undef INTERFACE +#define INTERFACE ICommDlgBrowser +DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE; + STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE; + STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE; +}; +typedef ICommDlgBrowser *LPCOMMDLGBROWSER; + +#ifdef COBJMACROS +#define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b) +#define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T) +#define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T) +#define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a) +#define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b) +#define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b) +#endif + +typedef GUID SHELLVIEWID; +typedef struct _SV2CVW2_PARAMS { + DWORD cbSize; + IShellView *psvPrev; + FOLDERSETTINGS const *pfs; + IShellBrowser *psbOwner; + RECT *prcView; + SHELLVIEWID const *pvid; + HWND hwndView; +} SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS; +#undef INTERFACE +#define INTERFACE IShellView2 +DECLARE_INTERFACE_(IShellView2,IShellView) +{ + + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE; + STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE; +#ifdef _FIX_ENABLEMODELESS_CONFLICT + STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +#else + STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; +#endif + STDMETHOD(UIActivate)(THIS_ UINT) PURE; + STDMETHOD(Refresh) (THIS) PURE; + STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE; + STDMETHOD(DestroyViewWindow)(THIS) PURE; + STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE; + STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE; + STDMETHOD(SaveViewState)(THIS) PURE; + STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE; + STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE; + STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE; + STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE; +}; + +#undef INTERFACE +#define INTERFACE IShellExecuteHookA +DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE; +}; +#undef INTERFACE +#define INTERFACE IShellExecuteHookW +DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE; +}; + +#undef INTERFACE +#define INTERFACE IShellIcon +DECLARE_INTERFACE_(IShellIcon,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE; +}; +typedef IShellIcon *LPSHELLICON; + +typedef struct { + 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; +} SHELLFLAGSTATE, * LPSHELLFLAGSTATE; + +#define SSF_SHOWALLOBJECTS 0x1 +#define SSF_SHOWEXTENSIONS 0x2 +#define SSF_SHOWCOMPCOLOR 0x8 +#define SSF_SHOWSYSFILES 0x20 +#define SSF_DOUBLECLICKINWEBVIEW 0x80 +#define SSF_SHOWATTRIBCOL 0x100 +#define SSF_DESKTOPHTML 0x200 +#define SSF_WIN95CLASSIC 0x400 +#define SSF_DONTPRETTYPATH 0x800 +#define SSF_MAPNETDRVBUTTON 0x1000 +#define SSF_SHOWINFOTIP 0x2000 +#define SSF_HIDEICONS 0x4000 +#define SSF_NOCONFIRMRECYCLE 0x8000 + +#undef INTERFACE +#define INTERFACE IShellIconOverlayIdentifier +DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE; + STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE; + STDMETHOD(GetPriority)(THIS_ int*) PURE; +}; + +#define ISIOI_ICONFILE 0x00000001 +#define ISIOI_ICONINDEX 0x00000002 + +#if (_WIN32_WINNT >= 0x0500) /* W2K */ +typedef struct { + 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; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT version; + UINT uNotUsed; + BOOL fSepProcess : 1; + BOOL fStartPanelOn : 1; + BOOL fShowStartPage : 1; + UINT fSpareFlags : 13; +} SHELLSTATE, *LPSHELLSTATE; +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_IE >= 0x0500) +#pragma pack(push,8) +typedef struct +{ + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; +} SHDRAGIMAGE, *LPSHDRAGIMAGE; +#pragma pack(pop) + +#undef INTERFACE +#define INTERFACE IDragSourceHelper +DECLARE_INTERFACE_(IDragSourceHelper, IUnknown) +{ + STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE; + STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE; +}; + +#undef INTERFACE +#define INTERFACE IDropTargetHelper +DECLARE_INTERFACE_(IDropTargetHelper, IUnknown) +{ + STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE; + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; + STDMETHOD (DragLeave)(THIS) PURE; + STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE; + STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; + STDMETHOD (Show)(THIS_ BOOL fShow) PURE; +}; +#endif /* _WIN32_IE >= 0x0500 */ + +void WINAPI SHAddToRecentDocs(UINT,PCVOID); +LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA); +LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW); +void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID); +HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); +HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); +HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*); +HRESULT WINAPI SHGetInstanceExplorer(IUnknown **); +HRESULT WINAPI SHGetMalloc(LPMALLOC*); +BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR); +BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR); +HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*); +HRESULT WINAPI SHLoadInProc(REFCLSID); +#if (_WIN32_IE >= 0x0400) +BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); +BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL); +#endif +/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ +HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR); +HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR); +#if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */ +HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*); +#endif +#if (_WIN32_WINNT >= 0x0500) +INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES); +INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES); +HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*); +#endif +#if (_WIN32_WINNT >= 0x0501) /* XP */ +HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR); +HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR); +#endif +void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD); +#if (_WIN32_WINNT >= 0x0500) /* W2K */ +void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL); +#endif + +#if (_WIN32_WINNT >= 0x0500) /* W2K */ +BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); +BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); +BOOL WINAPI ILRemoveLastID(LPITEMIDLIST); +HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*); +HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); +LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST); +LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST); +UINT WINAPI ILGetSize(LPCITEMIDLIST); +void WINAPI ILFree(LPITEMIDLIST); + +HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**); +#endif + +#ifdef UNICODE +typedef IShellExecuteHookW IShellExecuteHook; +typedef IShellLinkW IShellLink; +typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; +#define SHBrowseForFolder SHBrowseForFolderW +#define SHGetDataFromIDList SHGetDataFromIDListW +#define SHGetPathFromIDList SHGetPathFromIDListW +#if (_WIN32_IE >= 0x0400) +#define SHGetSpecialFolderPath SHGetSpecialFolderPathW +#endif +#define SHGetFolderPath SHGetFolderPathW +#if (_WIN32_WINNT >= 0x0500) +#define SHCreateDirectoryEx SHCreateDirectoryExW +#endif +#if (_WIN32_WINNT >= 0x0501) +#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW +#endif + +#else +typedef IShellExecuteHookA IShellExecuteHook; +typedef IShellLinkA IShellLink; +typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO; +#define SHBrowseForFolder SHBrowseForFolderA +#define SHGetDataFromIDList SHGetDataFromIDListA +#define SHGetPathFromIDList SHGetPathFromIDListA +#if (_WIN32_IE >= 0x0400) +#define SHGetSpecialFolderPath SHGetSpecialFolderPathA +#endif +#define SHGetFolderPath SHGetFolderPathA +#if (_WIN32_WINNT >= 0x0500) +#define SHCreateDirectoryEx SHCreateDirectoryExA +#endif +#if (_WIN32_WINNT >= 0x0501) +#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA +#endif +#endif /* UNICODE */ + +#pragma pack(pop) +#ifdef __cplusplus +} +#endif + + +#endif /* _SHLOBJ_H */ diff --git a/reactos/w32api/include/shlwapi.h b/reactos/w32api/include/shlwapi.h new file mode 100644 index 00000000000..764af951798 --- /dev/null +++ b/reactos/w32api/include/shlwapi.h @@ -0,0 +1,712 @@ +#ifndef _SHLWAPI_H +#define _SHLWAPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef __OBJC__ +#include +#include +#endif + +#ifndef WINSHLWAPI +#define WINSHLWAPI DECLSPEC_IMPORT +#endif + +#define DLLVER_PLATFORM_WINDOWS 0x00000001 +#define DLLVER_PLATFORM_NT 0x00000002 + +#define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000 +#define URL_DONT_SIMPLIFY 0x08000000 +#define URL_ESCAPE_PERCENT 0x00001000 +#define URL_ESCAPE_SEGMENT_ONLY 0x00002000 +#define URL_ESCAPE_SPACES_ONLY 0x04000000 +#define URL_ESCAPE_UNSAFE 0x20000000 +#define URL_INTERNAL_PATH 0x00800000 +#define URL_PARTFLAG_KEEPSCHEME 0x00000001 +#define URL_PLUGGABLE_PROTOCOL 0x40000000 +#define URL_UNESCAPE 0x10000000 +#define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000 +#define URL_UNESCAPE_INPLACE 0x00100000 + +#ifndef RC_INVOKED +#include +typedef struct _DllVersionInfo +{ + DWORD cbSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformID; +} DLLVERSIONINFO; +typedef struct _DLLVERSIONINFO2 +{ + DLLVERSIONINFO info1; + DWORD dwFlags; + ULONGLONG ullVersion; +} DLLVERSIONINFO2; +#include + +#define MAKEDLLVERULL(major, minor, build, qfe) \ + (((ULONGLONG)(major) << 48) | \ + ((ULONGLONG)(minor) << 32) | \ + ((ULONGLONG)(build) << 16) | \ + ((ULONGLONG)( qfe) << 0)) + +typedef enum { + ASSOCSTR_COMMAND, + ASSOCSTR_EXECUTABLE, + ASSOCSTR_FRIENDLYDOCNAME, + ASSOCSTR_FRIENDLYAPPNAME, + ASSOCSTR_NOOPEN, + ASSOCSTR_SHELLNEWVALUE, + ASSOCSTR_DDECOMMAND, + ASSOCSTR_DDEIFEXEC, + ASSOCSTR_DDEAPPLICATION, + ASSOCSTR_DDETOPIC +} ASSOCSTR; +typedef enum +{ + ASSOCKEY_SHELLEXECCLASS = 1, + ASSOCKEY_APP, + ASSOCKEY_CLASS, + ASSOCKEY_BASECLASS +} ASSOCKEY; +typedef enum +{ + ASSOCDATA_MSIDESCRIPTOR = 1, + ASSOCDATA_NOACTIVATEHANDLER, + ASSOCDATA_QUERYCLASSSTORE +} ASSOCDATA; +typedef DWORD ASSOCF; +typedef enum +{ + SHREGDEL_DEFAULT = 0x00000000, + SHREGDEL_HKCU = 0x00000001, + SHREGDEL_HKLM = 0x00000010, + SHREGDEL_BOTH = 0x00000011 +} SHREGDEL_FLAGS; +typedef enum +{ + SHREGENUM_DEFAULT = 0x00000000, + SHREGENUM_HKCU = 0x00000001, + SHREGENUM_HKLM = 0x00000010, + SHREGENUM_BOTH = 0x00000011 +} SHREGENUM_FLAGS; +typedef enum +{ + URLIS_URL, + URLIS_OPAQUE, + URLIS_NOHISTORY, + URLIS_FILEURL, + URLIS_APPLIABLE, + URLIS_DIRECTORY, + URLIS_HASQUERY +} URLIS; + +typedef HANDLE HUSKEY, *PHUSKEY; + +typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *); + +WINSHLWAPI BOOL WINAPI ChrCmpIA(WORD,WORD); +WINSHLWAPI BOOL WINAPI ChrCmpIW(WCHAR,WCHAR); +#define IntlStrEqNA(pStr1, pStr2, nChar) IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); +#define IntlStrEqNW(pStr1, pStr2, nChar) IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); +#define IntlStrEqNIA(pStr1, pStr2, nChar) IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); +#define IntlStrEqNIW(pStr1, pStr2, nChar) IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); +WINSHLWAPI BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int); +WINSHLWAPI BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int); +WINSHLWAPI HRESULT WINAPI SHStrDupA(LPCSTR,LPWSTR*); +WINSHLWAPI HRESULT WINAPI SHStrDupW(LPCWSTR,LPWSTR*); +WINSHLWAPI LPSTR WINAPI StrCatA(LPSTR,LPCSTR); +WINSHLWAPI LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR); +WINSHLWAPI LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,int); +WINSHLWAPI LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,int); +WINSHLWAPI DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR); +WINSHLWAPI LPSTR WINAPI StrChrA(LPCSTR,WORD); +WINSHLWAPI LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR); +WINSHLWAPI LPSTR WINAPI StrChrIA(LPCSTR,WORD); +WINSHLWAPI LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR); +#define StrCmpIA lstrcmpiA +#define StrCmpA lstrcmpA +#define StrCpyA lstrcpyA +#define StrCpyNA lstrcpynA +WINSHLWAPI int WINAPI StrCmpIW(LPCWSTR,LPCWSTR); +WINSHLWAPI int WINAPI StrCmpW(LPCWSTR,LPCWSTR); +WINSHLWAPI LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR); +WINSHLWAPI LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int); +WINSHLWAPI int WINAPI StrCmpNA(LPCSTR,LPCSTR,int); +WINSHLWAPI int WINAPI StrCmpNW(LPCWSTR,LPCWSTR,int); +WINSHLWAPI int WINAPI StrCmpNIA(LPCSTR,LPCSTR,int); +WINSHLWAPI int WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,int); +WINSHLWAPI int WINAPI StrCSpnA(LPCSTR,LPCSTR); +WINSHLWAPI int WINAPI StrCSpnW(LPCWSTR,LPCWSTR); +WINSHLWAPI int WINAPI StrCSpnIA(LPCSTR,LPCSTR); +WINSHLWAPI int WINAPI StrCSpnIW(LPCWSTR,LPCWSTR); +WINSHLWAPI LPSTR WINAPI StrDupA(LPCSTR); +WINSHLWAPI LPWSTR WINAPI StrDupW(LPCWSTR); +WINSHLWAPI LPSTR WINAPI StrFormatByteSize64A(LONGLONG,LPSTR,UINT); +WINSHLWAPI LPSTR WINAPI StrFormatByteSizeA(DWORD,LPSTR,UINT); +WINSHLWAPI LPWSTR WINAPI StrFormatByteSizeW(LONGLONG,LPWSTR,UINT); +WINSHLWAPI LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT); +WINSHLWAPI LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT); +WINSHLWAPI int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int); +WINSHLWAPI int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int); +WINSHLWAPI BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int); +WINSHLWAPI BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int); +WINSHLWAPI LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int); +WINSHLWAPI LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int); +WINSHLWAPI LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR); +WINSHLWAPI LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR); +WINSHLWAPI LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD); +WINSHLWAPI LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WCHAR); +WINSHLWAPI LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD); +WINSHLWAPI LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WCHAR); +#ifndef __OBJC__ +WINSHLWAPI HRESULT WINAPI StrRetToBufA(LPSTRRET,LPCITEMIDLIST,LPSTR,UINT); +WINSHLWAPI HRESULT WINAPI StrRetToBufW(LPSTRRET,LPCITEMIDLIST,LPWSTR,UINT); +WINSHLWAPI HRESULT WINAPI StrRetToStrA(LPSTRRET,LPCITEMIDLIST,LPSTR*); +WINSHLWAPI HRESULT WINAPI StrRetToStrW(LPSTRRET,LPCITEMIDLIST,LPWSTR*); +#endif +WINSHLWAPI LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR); +WINSHLWAPI LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR); +WINSHLWAPI int WINAPI StrSpnA(LPCSTR,LPCSTR); +WINSHLWAPI int WINAPI StrSpnW(LPCWSTR,LPCWSTR); +WINSHLWAPI LPSTR WINAPI StrStrA(LPCSTR, LPCSTR); +WINSHLWAPI LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR); +WINSHLWAPI LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR); +WINSHLWAPI LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR); +WINSHLWAPI int WINAPI StrToIntA(LPCSTR); +WINSHLWAPI int WINAPI StrToIntW(LPCWSTR); +WINSHLWAPI BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*); +WINSHLWAPI BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*); +WINSHLWAPI BOOL WINAPI StrTrimA(LPSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR); +WINSHLWAPI LPSTR WINAPI PathAddBackslashA(LPSTR); +WINSHLWAPI LPWSTR WINAPI PathAddBackslashW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR); +WINSHLWAPI BOOL WINAPI PathAppendA(LPSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR); +WINSHLWAPI LPSTR WINAPI PathBuildRootA(LPSTR,int); +WINSHLWAPI LPWSTR WINAPI PathBuildRootW(LPWSTR,int); +WINSHLWAPI BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR); +WINSHLWAPI LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR); +WINSHLWAPI LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR); +WINSHLWAPI int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR); +WINSHLWAPI int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR); +WINSHLWAPI BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT); +WINSHLWAPI BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT); +WINSHLWAPI BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD); +WINSHLWAPI BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD); +WINSHLWAPI HRESULT WINAPI PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +WINSHLWAPI BOOL WINAPI PathFileExistsA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathFileExistsW(LPCWSTR); +WINSHLWAPI LPSTR WINAPI PathFindExtensionA(LPCSTR); +WINSHLWAPI LPWSTR WINAPI PathFindExtensionW(LPCWSTR); +WINSHLWAPI LPSTR WINAPI PathFindFileNameA(LPCSTR); +WINSHLWAPI LPWSTR WINAPI PathFindFileNameW(LPCWSTR); +WINSHLWAPI LPSTR WINAPI PathFindNextComponentA(LPCSTR); +WINSHLWAPI LPWSTR WINAPI PathFindNextComponentW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*); +WINSHLWAPI BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*); +WINSHLWAPI LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR*,int); +WINSHLWAPI LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR*,int); +WINSHLWAPI LPSTR WINAPI PathGetArgsA(LPCSTR); +WINSHLWAPI LPWSTR WINAPI PathGetArgsW(LPCWSTR); +WINSHLWAPI UINT WINAPI PathGetCharTypeA(UCHAR); +WINSHLWAPI UINT WINAPI PathGetCharTypeW(WCHAR); +WINSHLWAPI int WINAPI PathGetDriveNumberA(LPCSTR); +WINSHLWAPI int WINAPI PathGetDriveNumberW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsDirectoryA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsDirectoryW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsFileSpecA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsFileSpecW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsNetworkPathA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsNetworkPathW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsRelativeA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsRelativeW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsRootA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsRootW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD); +WINSHLWAPI BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD); +WINSHLWAPI BOOL WINAPI PathIsUNCA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsUNCServerA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsUNCServerShareA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsUNCServerShareW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsUNCServerW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsUNCW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathIsURLA(LPCSTR); +WINSHLWAPI BOOL WINAPI PathIsURLW(LPCWSTR); +WINSHLWAPI BOOL WINAPI PathMakePrettyA(LPSTR); +WINSHLWAPI BOOL WINAPI PathMakePrettyW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathMakeSystemFolderA(LPSTR); +WINSHLWAPI BOOL WINAPI PathMakeSystemFolderW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR); +WINSHLWAPI int WINAPI PathParseIconLocationA(LPSTR); +WINSHLWAPI int WINAPI PathParseIconLocationW(LPWSTR); +WINSHLWAPI void WINAPI PathQuoteSpacesA(LPSTR); +WINSHLWAPI void WINAPI PathQuoteSpacesW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD); +WINSHLWAPI BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD); +WINSHLWAPI void WINAPI PathRemoveArgsA(LPSTR); +WINSHLWAPI void WINAPI PathRemoveArgsW(LPWSTR); +WINSHLWAPI LPSTR WINAPI PathRemoveBackslashA(LPSTR); +WINSHLWAPI LPWSTR WINAPI PathRemoveBackslashW(LPWSTR); +WINSHLWAPI void WINAPI PathRemoveBlanksA(LPSTR); +WINSHLWAPI void WINAPI PathRemoveBlanksW(LPWSTR); +WINSHLWAPI void WINAPI PathRemoveExtensionA(LPSTR); +WINSHLWAPI void WINAPI PathRemoveExtensionW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathRemoveFileSpecA(LPSTR); +WINSHLWAPI BOOL WINAPI PathRemoveFileSpecW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR); +WINSHLWAPI BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR); +WINSHLWAPI BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT); +WINSHLWAPI BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT); +WINSHLWAPI void WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR); +WINSHLWAPI void WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR); +WINSHLWAPI LPSTR WINAPI PathSkipRootA(LPCSTR); +WINSHLWAPI LPWSTR WINAPI PathSkipRootW(LPCWSTR); +WINSHLWAPI void WINAPI PathStripPathA(LPSTR); +WINSHLWAPI void WINAPI PathStripPathW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathStripToRootA(LPSTR); +WINSHLWAPI BOOL WINAPI PathStripToRootW(LPWSTR); +WINSHLWAPI void WINAPI PathUndecorateA(LPSTR); +WINSHLWAPI void WINAPI PathUndecorateW(LPWSTR); +WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT); +WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT); +WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderA(LPSTR); +WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderW(LPWSTR); +WINSHLWAPI void WINAPI PathUnquoteSpacesA(LPSTR); +WINSHLWAPI void WINAPI PathUnquoteSpacesW(LPWSTR); +WINSHLWAPI HRESULT WINAPI SHAutoComplete(HWND,DWORD); +#ifndef __OBJC__ +WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**); +WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**); +WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD); +WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD); +WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD); +WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD); +#endif +WINSHLWAPI BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE); +WINSHLWAPI DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD); +WINSHLWAPI DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD); +WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR); +WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR); +WINSHLWAPI DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR); +WINSHLWAPI DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR); +WINSHLWAPI DWORD WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD); +WINSHLWAPI DWORD WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD); +WINSHLWAPI DWORD WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +WINSHLWAPI DWORD WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +WINSHLWAPI DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +WINSHLWAPI DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +#ifndef __OBJC__ +WINSHLWAPI HRESULT WINAPI SHGetThreadRef(IUnknown**); +WINSHLWAPI HRESULT WINAPI SHSetThreadRef(IUnknown*); +WINSHLWAPI BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*); +#endif +WINSHLWAPI DWORD WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +WINSHLWAPI DWORD WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); +WINSHLWAPI DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD); +WINSHLWAPI DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD); +WINSHLWAPI DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD); +WINSHLWAPI DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD); +WINSHLWAPI DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR); +WINSHLWAPI DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR); +WINSHLWAPI HRESULT WINAPI AssocCreate(CLSID,const IID* const,LPVOID*); +WINSHLWAPI HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,HKEY*); +WINSHLWAPI HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,HKEY*); +WINSHLWAPI HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,DWORD*); +WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,DWORD*); +WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,DWORD*); +WINSHLWAPI HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD*); + +WINSHLWAPI HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD); +WINSHLWAPI int WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL); +WINSHLWAPI int WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL); +WINSHLWAPI HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); +WINSHLWAPI LPCSTR WINAPI UrlGetLocationA(LPCSTR); +WINSHLWAPI LPCWSTR WINAPI UrlGetLocationW(LPCWSTR); +WINSHLWAPI HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlHashA(LPCSTR,LPBYTE,DWORD); +WINSHLWAPI HRESULT WINAPI UrlHashW(LPCWSTR,LPBYTE,DWORD); +WINSHLWAPI BOOL WINAPI UrlIsA(LPCSTR,URLIS); +WINSHLWAPI BOOL WINAPI UrlIsW(LPCWSTR,URLIS); +#define UrlIsFileUrlA(pszURL) UrlIsA(pzURL, URLIS_FILEURL) +#define UrlIsFileUrlW(pszURL) UrlIsW(pszURL, URLIS_FILEURL) +WINSHLWAPI BOOL WINAPI UrlIsNoHistoryA(LPCSTR); +WINSHLWAPI BOOL WINAPI UrlIsNoHistoryW(LPCWSTR); +WINSHLWAPI BOOL WINAPI UrlIsOpaqueA(LPCSTR); +WINSHLWAPI BOOL WINAPI UrlIsOpaqueW(LPCWSTR); +WINSHLWAPI HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD); +WINSHLWAPI HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD); +#define UrlUnescapeInPlaceA(pszUrl,dwFlags )\ + UrlUnescapeA(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE) +#define UrlUnescapeInPlaceW(pszUrl,dwFlags )\ + UrlUnescapeW(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE) +WINSHLWAPI DWORD WINAPI SHRegCloseUSKey(HUSKEY); +WINSHLWAPI LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); +WINSHLWAPI LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); +WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); +WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); +WINSHLWAPI LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); +WINSHLWAPI LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); +WINSHLWAPI HKEY WINAPI SHRegDuplicateHKey(HKEY); +WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI DWORD WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI DWORD WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL); +WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL); +WINSHLWAPI DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD); +WINSHLWAPI DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD); +WINSHLWAPI LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); +WINSHLWAPI LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); +WINSHLWAPI LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); +WINSHLWAPI LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); +WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS); +WINSHLWAPI LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); +WINSHLWAPI LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); +WINSHLWAPI DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD); +WINSHLWAPI DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD); +WINSHLWAPI LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD); +WINSHLWAPI LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); +WINSHLWAPI LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD); +WINSHLWAPI LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); +WINSHLWAPI HRESULT WINAPI HashData(LPBYTE,DWORD,LPBYTE,DWORD); +WINSHLWAPI HPALETTE WINAPI SHCreateShellPalette(HDC); +WINSHLWAPI COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD); +WINSHLWAPI COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL); +WINSHLWAPI void WINAPI ColorRGBToHLS(COLORREF,WORD*,WORD*,WORD*); +WINSHLWAPI int __cdecl wnsprintfA(LPSTR,int,LPCSTR,...); +WINSHLWAPI int __cdecl wnsprintfW(LPWSTR,int,LPCWSTR,...); +WINSHLWAPI int WINAPI wvnsprintfA(LPSTR,int,LPCSTR,va_list); +WINSHLWAPI int WINAPI wvnsprintfW(LPWSTR,int,LPCWSTR,va_list); + +HINSTANCE WINAPI MLLoadLibraryA(LPCSTR,HANDLE,DWORD,LPCSTR,BOOL); +HINSTANCE WINAPI MLLoadLibraryW(LPCWSTR,HANDLE,DWORD,LPCWSTR,BOOL); + +HRESULT WINAPI DllInstall(BOOL,LPCWSTR); + +#ifdef UNICODE +#define ChrCmpI ChrCmpIW +#define IntlStrEqN IntlStrEqNW +#define IntlStrEqNI IntlStrEqNIW +#define IntlStrEqWorker IntlStrEqWorkerW +#define SHStrDup SHStrDupW +#define StrCat StrCatW +#define StrCatBuff StrCatBuffW +#define StrChr StrChrW +#define StrChrI StrChrIW +#define StrCmp StrCmpW +#define StrCmpI StrCmpIW +#define StrCmpNI StrCmpNIW +#define StrCmpN StrCmpNW +#define StrCpyN StrCpyNW +#define StrCpy StrCpyW +#define StrCSpnI StrCSpnIW +#define StrCSpn StrCSpnW +#define StrDup StrDupW +#define StrFormatByteSize StrFormatByteSizeW +#define StrFormatKBSize StrFormatKBSizeW +#define StrFromTimeInterval StrFromTimeIntervalW +#define StrIsIntlEqual StrIsIntlEqualW +#define StrNCat StrNCatW +#define StrPBrk StrPBrkW +#define StrRChr StrRChrW +#define StrRChrI StrRChrIW +#ifndef __OBJC__ +#define StrRetToBuf StrRetToBufW +#define StrRetToStr StrRetToStrW +#endif +#define StrRStrI StrRStrIW +#define StrSpn StrSpnW +#define StrStrI StrStrIW +#define StrStr StrStrW +#define StrToInt StrToIntW +#define StrToIntEx StrToIntExW +#define StrTrim StrTrimW +#define PathAddBackslash PathAddBackslashW +#define PathAddExtension PathAddExtensionW +#define PathAppend PathAppendW +#define PathBuildRoot PathBuildRootW +#define PathCanonicalize PathCanonicalizeW +#define PathCombine PathCombineW +#define PathCommonPrefix PathCommonPrefixW +#define PathCompactPath PathCompactPathW +#define PathCompactPathEx PathCompactPathExW +#define PathCreateFromUrl PathCreateFromUrlW +#define PathFileExists PathFileExistsW +#define PathFindExtension PathFindExtensionW +#define PathFindFileName PathFindFileNameW +#define PathFindNextComponent PathFindNextComponentW +#define PathFindOnPath PathFindOnPathW +#define PathFindSuffixArray PathFindSuffixArrayW +#define PathGetArgs PathGetArgsW +#define PathGetCharType PathGetCharTypeW +#define PathGetDriveNumber PathGetDriveNumberW +#define PathIsContentType PathIsContentTypeW +#define PathIsDirectoryEmpty PathIsDirectoryEmptyW +#define PathIsDirectory PathIsDirectoryW +#define PathIsFileSpec PathIsFileSpecW +#define PathIsLFNFileSpec PathIsLFNFileSpecW +#define PathIsNetworkPath PathIsNetworkPathW +#define PathIsPrefix PathIsPrefixW +#define PathIsRelative PathIsRelativeW +#define PathIsRoot PathIsRootW +#define PathIsSameRoot PathIsSameRootW +#define PathIsSystemFolder PathIsSystemFolderW +#define PathIsUNCServerShare PathIsUNCServerShareW +#define PathIsUNCServer PathIsUNCServerW +#define PathIsUNC PathIsUNCW +#define PathIsURL PathIsURLW +#define PathMakePretty PathMakePrettyW +#define PathMakeSystemFolder PathMakeSystemFolderW +#define PathMatchSpec PathMatchSpecW +#define PathParseIconLocation PathParseIconLocationW +#define PathQuoteSpaces PathQuoteSpacesW +#define PathRelativePathTo PathRelativePathToW +#define PathRemoveArgs PathRemoveArgsW +#define PathRemoveBackslash PathRemoveBackslashW +#define PathRemoveBlanks PathRemoveBlanksW +#define PathRemoveExtension PathRemoveExtensionW +#define PathRemoveFileSpec PathRemoveFileSpecW +#define PathRenameExtension PathRenameExtensionW +#define PathSearchAndQualify PathSearchAndQualifyW +#define PathSetDlgItemPath PathSetDlgItemPathW +#define PathSkipRoot PathSkipRootW +#define PathStripPath PathStripPathW +#define PathStripToRoot PathStripToRootW +#define PathUndecorate PathUndecorateW +#define PathUnExpandEnvStrings PathUnExpandEnvStringsW +#define PathUnmakeSystemFolder PathUnmakeSystemFolderW +#define PathUnquoteSpaces PathUnquoteSpacesW +#ifndef __OBJC__ +#define SHCreateStreamOnFile SHCreateStreamOnFileW +#define SHOpenRegStream SHOpenRegStreamW +#define SHOpenRegStream2 SHOpenRegStream2W +#endif +#define SHCopyKey SHCopyKeyW +#define SHDeleteEmptyKey SHDeleteEmptyKeyW +#define SHDeleteKey SHDeleteKeyW +#define SHEnumKeyEx SHEnumKeyExW +#define SHQueryInfoKey SHRegQueryInfoKeyW +#define SHQueryValueEx SHQueryValueExW +#define SHEnumValue SHEnumValueW +#define SHGetValue SHGetValueW +#define SHSetValue SHSetValueW +#define SHDeleteValue SHDeleteValueW +#define AssocQueryKey AssocQueryKeyW +#define AssocQueryStringByKey AssocQueryStringByKeyW +#define AssocQueryString AssocQueryStringW +#define UrlApplyScheme UrlApplySchemeW +#define UrlCanonicalize UrlCanonicalizeW +#define UrlCombine UrlCombineW +#define UrlCompare UrlCompareW +#define UrlCreateFromPath UrlCreateFromPathW +#define UrlEscape UrlEscapeW +#define UrlGetLocation UrlGetLocationW +#define UrlGetPart UrlGetPartW +#define UrlHash UrlHashW +#define UrlIs UrlIsW +#define UrlIsFileUrl UrlIsFileUrlW +#define UrlIsNoHistory UrlIsNoHistoryW +#define UrlIsOpaque UrlIsOpaqueW +#define UrlUnescape UrlUnescapeW +#define UrlUnescapeInPlace UrlUnescapeInPlaceW +#define SHRegCreateUSKey SHRegCreateUSKeyW +#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyW +#define SHRegDeleteUSValue SHRegDeleteUSValueW +#define SHRegEnumUSKey SHRegEnumUSKeyW +#define SHRegEnumUSValue SHRegEnumUSValueW +#define SHRegGetBoolUSValue SHRegGetBoolUSValueW +#define SHRegGetPath SHRegGetPathW +#define SHRegGetUSValue SHRegGetUSValueW +#define SHRegOpenUSKey SHRegOpenUSKeyW +#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyW +#define SHRegQueryUSValue SHRegQueryUSValueW +#define SHRegSetPath SHRegSetPathW +#define SHRegSetUSValue SHRegSetUSValueW +#define SHRegWriteUSValue SHRegWriteUSValueW +#define wnsprintf wnsprintfW +#define wvnsprintf wvnsprintfW +#else /* UNICODE */ +#define ChrCmpI ChrCmpIA +#define IntlStrEqN IntlStrEqNA +#define IntlStrEqNI IntlStrEqNIA +#define IntlStrEqWorker IntlStrEqWorkerA +#define SHStrDup SHStrDupA +#define StrCat lstrcatA +#define StrCatBuff StrCatBuffA +#define StrChr StrChrA +#define StrChrI StrChrIA +#define StrCmp lstrcmpA +#define StrCmpI lstrcmpiA +#define StrCmpNI StrCmpNIA +#define StrCmpN StrCmpNA +#define StrCpyN lstrcpynA +#define StrCpy lstrcpyA +#define StrCSpnI StrCSpnIA +#define StrCSpn StrCSpnA +#define StrDup StrDupA +#define StrFormatByteSize StrFormatByteSizeA +#define StrFormatKBSize StrFormatKBSizeA +#define StrFromTimeInterval StrFromTimeIntervalA +#define StrIsIntlEqual StrIsIntlEqualA +#define StrNCat StrNCatA +#define StrPBrk StrPBrkA +#define StrRChr StrRChrA +#define StrRChrI StrRChrIA +#ifndef __OBJC__ +#define StrRetToBuf StrRetToBufA +#define StrRetToStr StrRetToStrA +#endif +#define StrRStrI StrRStrIA +#define StrSpn StrSpnA +#define StrStrI StrStrIA +#define StrStr StrStrA +#define StrToInt StrToIntA +#define StrToIntEx StrToIntExA +#define StrTrim StrTrimA +#define PathAddBackslash PathAddBackslashA +#define PathAddExtension PathAddExtensionA +#define PathAppend PathAppendA +#define PathBuildRoot PathBuildRootA +#define PathCanonicalize PathCanonicalizeA +#define PathCombine PathCombineA +#define PathCommonPrefix PathCommonPrefixA +#define PathCompactPath PathCompactPathA +#define PathCompactPathEx PathCompactPathExA +#define PathCreateFromUrl PathCreateFromUrlA +#define PathFileExists PathFileExistsA +#define PathFindExtension PathFindExtensionA +#define PathFindFileName PathFindFileNameA +#define PathFindNextComponent PathFindNextComponentA +#define PathFindOnPath PathFindOnPathA +#define PathFindSuffixArray PathFindSuffixArrayA +#define PathGetArgs PathGetArgsA +#define PathGetCharType PathGetCharTypeA +#define PathGetDriveNumber PathGetDriveNumberA +#define PathIsContentType PathIsContentTypeA +#define PathIsDirectoryEmpty PathIsDirectoryEmptyA +#define PathIsDirectory PathIsDirectoryA +#define PathIsFileSpec PathIsFileSpecA +#define PathIsLFNFileSpec PathIsLFNFileSpecA +#define PathIsNetworkPath PathIsNetworkPathA +#define PathIsPrefix PathIsPrefixA +#define PathIsRelative PathIsRelativeA +#define PathIsRoot PathIsRootA +#define PathIsSameRoot PathIsSameRootA +#define PathIsSystemFolder PathIsSystemFolderA +#define PathIsUNCServerShare PathIsUNCServerShareA +#define PathIsUNCServer PathIsUNCServerA +#define PathIsUNC PathIsUNCA +#define PathIsURL PathIsURLA +#define PathMakePretty PathMakePrettyA +#define PathMakeSystemFolder PathMakeSystemFolderA +#define PathMatchSpec PathMatchSpecA +#define PathParseIconLocation PathParseIconLocationA +#define PathQuoteSpaces PathQuoteSpacesA +#define PathRelativePathTo PathRelativePathToA +#define PathRemoveArgs PathRemoveArgsA +#define PathRemoveBackslash PathRemoveBackslashA +#define PathRemoveBlanks PathRemoveBlanksA +#define PathRemoveExtension PathRemoveExtensionA +#define PathRemoveFileSpec PathRemoveFileSpecA +#define PathRenameExtension PathRenameExtensionA +#define PathSearchAndQualify PathSearchAndQualifyA +#define PathSetDlgItemPath PathSetDlgItemPathA +#define PathSkipRoot PathSkipRootA +#define PathStripPath PathStripPathA +#define PathStripToRoot PathStripToRootA +#define PathUndecorate PathUndecorateA +#define PathUnExpandEnvStrings PathUnExpandEnvStringsA +#define PathUnmakeSystemFolder PathUnmakeSystemFolderA +#define PathUnquoteSpaces PathUnquoteSpacesA +#ifndef __OBJC__ +#define SHCreateStreamOnFile SHCreateStreamOnFileA +#define SHOpenRegStream SHOpenRegStreamA +#define SHOpenRegStream2 SHOpenRegStream2A +#endif +#define SHCopyKey SHCopyKeyA +#define SHDeleteEmptyKey SHDeleteEmptyKeyA +#define SHDeleteKey SHDeleteKeyA +#define SHEnumKeyEx SHEnumKeyExA +#define SHQueryInfoKey SHRegQueryInfoKeyA +#define SHQueryValueEx SHQueryValueExA +#define SHEnumValue SHEnumValueA +#define SHGetValue SHGetValueA +#define SHSetValue SHSetValueA +#define SHDeleteValue SHDeleteValueA +#define AssocQueryKey AssocQueryKeyA +#define AssocQueryStringByKey AssocQueryStringByKeyA +#define AssocQueryString AssocQueryStringA +#define UrlApplyScheme UrlApplySchemeA +#define UrlCanonicalize UrlCanonicalizeA +#define UrlCombine UrlCombineA +#define UrlCompare UrlCompareA +#define UrlCreateFromPath UrlCreateFromPathA +#define UrlEscape UrlEscapeA +#define UrlGetLocation UrlGetLocationA +#define UrlGetPart UrlGetPartA +#define UrlHash UrlHashA +#define UrlIs UrlIsA +#define UrlIsFileUrl UrlIsFileUrl +#define UrlIsNoHistory UrlIsNoHistoryA +#define UrlIsOpaque UrlIsOpaqueA +#define UrlUnescape UrlUnescapeA +#define UrlUnescapeInPlace UrlUnescapeInPlaceA +#define SHRegCreateUSKey SHRegCreateUSKeyA +#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyA +#define SHRegDeleteUSValue SHRegDeleteUSValueA +#define SHRegEnumUSKey SHRegEnumUSKeyA +#define SHRegEnumUSValue SHRegEnumUSValueA +#define SHRegGetBoolUSValue SHRegGetBoolUSValueA +#define SHRegGetPath SHRegGetPathA +#define SHRegGetUSValue SHRegGetUSValueA +#define SHRegOpenUSKey SHRegOpenUSKeyA +#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyA +#define SHRegQueryUSValue SHRegQueryUSValueA +#define SHRegSetPath SHRegSetPathA +#define SHRegSetUSValue SHRegSetUSValueA +#define SHRegWriteUSValue SHRegWriteUSValueA +#define wnsprintf wnsprintfA +#define wvnsprintf wvnsprintfA +#endif /* UNICODE */ + +#define StrToLong StrToInt + +#endif /* !RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#endif /* ! defined _SHLWAPI_H */ diff --git a/reactos/w32api/include/snmp.h b/reactos/w32api/include/snmp.h new file mode 100644 index 00000000000..f35a2be0818 --- /dev/null +++ b/reactos/w32api/include/snmp.h @@ -0,0 +1,259 @@ +/* + snmp.h - Header file for the Windows SNMP API + + Written by Filip Navara + + References (2003-08-25): + http://msdn.microsoft.com/library/en-us/snmp/snmp/snmp_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. +*/ + +#ifndef _SNMP_H +#define _SNMP_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifndef _WINDOWS_H +#include +#endif + +#include + +#ifndef WINSNMPAPI +#define WINSNMPAPI WINAPI +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define DEFAULT_SNMP_PORT_UDP 161 +#define DEFAULT_SNMP_PORT_IPX 36879 +#define DEFAULT_SNMPTRAP_PORT_UDP 162 +#define DEFAULT_SNMPTRAP_PORT_IPX 36880 +#ifndef _SNMP_ASN_DEFINED +#define _SNMP_ASN_DEFINED +#define ASN_UNIVERSAL 0x00 +#define ASN_PRIMITIVE 0x00 +#define ASN_CONSTRUCTOR 0x20 +#define ASN_APPLICATION 0x40 +#define ASN_CONTEXT 0x80 +#define ASN_PRIVATE 0xC0 +#define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0) +#define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 1) +#define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 2) +#define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 3) +#define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 4) +#define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 4) +#define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 6) +#define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 7) +#define SNMP_PDU_REPORT (ASN_CONTEXT | ASN_CONSTRUCTOR | 8) +#endif /* _SNMP_ASN_DEFINED */ +#define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 2) +#define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 3) +#define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 4) +#define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 5) +#define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 6) +#define ASN_INTEGER32 ASN_INTEGER +#define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10) +#define ASN_SEQUENCEOF ASN_SEQUENCE +#define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00) +#define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01) +#define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02) +#define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03) +#define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04) +#define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06) +#define ASN_UNSIGNED32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07) +#define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00) +#define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01) +#define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02) +#define SNMP_EXTENSION_GET SNMP_PDU_GET +#define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT +#define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK +#define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0) +#define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET +#define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1) +#define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2) +#define SNMP_ERRORSTATUS_NOERROR 0 +#define SNMP_ERRORSTATUS_TOOBIG 1 +#define SNMP_ERRORSTATUS_NOSUCHNAME 2 +#define SNMP_ERRORSTATUS_BADVALUE 3 +#define SNMP_ERRORSTATUS_READONLY 4 +#define SNMP_ERRORSTATUS_GENERR 5 +#define SNMP_ERRORSTATUS_NOACCESS 6 +#define SNMP_ERRORSTATUS_WRONGTYPE 7 +#define SNMP_ERRORSTATUS_WRONGLENGTH 8 +#define SNMP_ERRORSTATUS_WRONGENCODING 9 +#define SNMP_ERRORSTATUS_WRONGVALUE 10 +#define SNMP_ERRORSTATUS_NOCREATION 11 +#define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12 +#define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13 +#define SNMP_ERRORSTATUS_COMMITFAILED 14 +#define SNMP_ERRORSTATUS_UNDOFAILED 15 +#define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16 +#define SNMP_ERRORSTATUS_NOTWRITABLE 17 +#define SNMP_ERRORSTATUS_INCONSISTENTNAME 18 +#define SNMP_GENERICTRAP_COLDSTART 0 +#define SNMP_GENERICTRAP_WARMSTART 1 +#define SNMP_GENERICTRAP_LINKDOWN 2 +#define SNMP_GENERICTRAP_LINKUP 3 +#define SNMP_GENERICTRAP_AUTHFAILURE 4 +#define SNMP_GENERICTRAP_EGPNEIGHLOSS 5 +#define SNMP_GENERICTRAP_ENTERSPECIFIC 6 +#define SNMP_ACCESS_NONE 0 +#define SNMP_ACCESS_NOTIFY 1 +#define SNMP_ACCESS_READ_ONLY 2 +#define SNMP_ACCESS_READ_WRITE 3 +#define SNMP_ACCESS_READ_CREATE 4 +#define SNMPAPI_ERROR FALSE +#define SNMPAPI_NOERROR TRUE +#define SNMP_LOG_SILENT 0 +#define SNMP_LOG_FATAL 1 +#define SNMP_LOG_ERROR 2 +#define SNMP_LOG_WARNING 3 +#define SNMP_LOG_TRACE 4 +#define SNMP_LOG_VERBOSE 5 +#define SNMP_OUTPUT_TO_CONSOLE 1 +#define SNMP_OUTPUT_TO_LOGFILE 2 +#define SNMP_OUTPUT_TO_EVENTLOG 4 +#define SNMP_OUTPUT_TO_DEBUGGER 8 +#define SNMP_MAX_OID_LEN 128 +#define SNMP_MEM_ALLOC_ERROR 1 +#define SNMP_BERAPI_INVALID_LENGTH 10 +#define SNMP_BERAPI_INVALID_TAG 11 +#define SNMP_BERAPI_OVERFLOW 12 +#define SNMP_BERAPI_SHORT_BUFFER 13 +#define SNMP_BERAPI_INVALID_OBJELEM 14 +#define SNMP_PDUAPI_UNRECOGNIZED_PDU 20 +#define SNMP_PDUAPI_INVALID_ES 21 +#define SNMP_PDUAPI_INVALID_GT 22 +#define SNMP_AUTHAPI_INVALID_VERSION 30 +#define SNMP_AUTHAPI_INVALID_MSG_TYPE 31 +#define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32 + +#ifndef RC_INVOKED + +typedef INT SNMPAPI; +typedef LONG AsnInteger32; +typedef ULONG AsnUnsigned32; +typedef ULARGE_INTEGER AsnCounter64; +typedef AsnUnsigned32 AsnCounter32; +typedef AsnUnsigned32 AsnGauge32; +typedef AsnUnsigned32 AsnTimeticks; +typedef struct { + BYTE *stream; + UINT length; + BOOL dynamic; +} AsnOctetString, AsnBits, AsnSequence, AsnImplicitSequence, AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; +typedef struct { + UINT idLength; + UINT *ids; +} AsnObjectIdentifier, AsnObjectName; +typedef struct { + BYTE asnType; + union { + 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; +} AsnAny, AsnObjectSyntax; +typedef struct { + AsnObjectName name; + AsnObjectSyntax value; +} SnmpVarBind; +typedef struct { + SnmpVarBind *list; + UINT len; +} SnmpVarBindList; + +VOID WINSNMPAPI SnmpExtensionClose(void); +BOOL WINSNMPAPI SnmpExtensionInit(DWORD,HANDLE*,AsnObjectIdentifier*); +BOOL WINSNMPAPI SnmpExtensionInitEx(AsnObjectIdentifier*); +BOOL WINSNMPAPI SnmpExtensionMonitor(LPVOID); +BOOL WINSNMPAPI SnmpExtensionQuery(BYTE,SnmpVarBindList*,AsnInteger32*,AsnInteger32*); +BOOL WINSNMPAPI SnmpExtensionQueryEx(DWORD,DWORD,SnmpVarBindList*,AsnOctetString*,AsnInteger32*,AsnInteger32*); +BOOL WINSNMPAPI SnmpExtensionTrap(AsnObjectIdentifier*,AsnInteger32*,AsnInteger32*,AsnTimeticks*,SnmpVarBindList*); +DWORD WINSNMPAPI SnmpSvcGetUptime(void); +VOID WINSNMPAPI SnmpSvcSetLogLevel(INT); +VOID WINSNMPAPI SnmpSvcSetLogType(INT); +SNMPAPI WINSNMPAPI SnmpUtilAsnAnyCpy(AsnAny*,AsnAny*); +VOID WINSNMPAPI SnmpUtilAsnAnyFree(AsnAny*); +VOID WINSNMPAPI SnmpUtilDbgPrint(INT,LPSTR,...); +LPSTR WINSNMPAPI SnmpUtilIdsToA(UINT*,UINT); +LPVOID WINSNMPAPI SnmpUtilMemAlloc(UINT); +VOID WINSNMPAPI SnmpUtilMemFree(LPVOID); +LPVOID WINSNMPAPI SnmpUtilMemReAlloc(LPVOID,UINT); +SNMPAPI WINSNMPAPI SnmpUtilOctetsCmp(AsnOctetString*,AsnOctetString*); +SNMPAPI WINSNMPAPI SnmpUtilOctetsCpy(AsnOctetString*,AsnOctetString*); +VOID WINSNMPAPI SnmpUtilOctetsFree(AsnOctetString*); +SNMPAPI WINSNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*,AsnOctetString*,UINT); +SNMPAPI WINSNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*,AsnObjectIdentifier*); +SNMPAPI WINSNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*,AsnObjectIdentifier*); +SNMPAPI WINSNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*,AsnObjectIdentifier*); +VOID WINSNMPAPI SnmpUtilOidFree(AsnObjectIdentifier*); +SNMPAPI WINSNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*,AsnObjectIdentifier*,UINT); +LPSTR WINSNMPAPI SnmpUtilOidToA(AsnObjectIdentifier*); +VOID WINSNMPAPI SnmpUtilPrintAsnAny(AsnAny*); +VOID WINSNMPAPI SnmpUtilPrintOid(AsnObjectIdentifier*); +SNMPAPI WINSNMPAPI SnmpUtilVarBindCpy( SnmpVarBind*,SnmpVarBind*); +SNMPAPI WINSNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*,SnmpVarBindList*); +VOID WINSNMPAPI SnmpUtilVarBindFree(SnmpVarBind*); +VOID WINSNMPAPI SnmpUtilVarBindListFree(SnmpVarBindList*); + +#ifndef SNMPSTRICT +#define SNMP_malloc SnmpUtilMemAlloc +#define SNMP_free SnmpUtilMemFree +#define SNMP_realloc SnmpUtilMemReAlloc +#define SNMP_DBG_malloc SnmpUtilMemAlloc +#define SNMP_DBG_free SnmpUtilMemFree +#define SNMP_DBG_realloc SnmpUtilMemReAlloc +#define SNMP_oidappend SnmpUtilOidAppend +#define SNMP_oidcmp SnmpUtilOidCmp +#define SNMP_oidcpy SnmpUtilOidCpy +#define SNMP_oidfree SnmpUtilOidFree +#define SNMP_oidncmp SnmpUtilOidNCmp +#define SNMP_printany SnmpUtilPrintAsnAny +#define SNMP_CopyVarBind SnmpUtilVarBindCpy +#define SNMP_CopyVarBindList SnmpUtilVarBindListCpy +#define SNMP_FreeVarBind SnmpUtilVarBindFree +#define SNMP_FreeVarBindList SnmpUtilVarBindListFree +#define ASN_RFC1155_IPADDRESS ASN_IPADDRESS +#define ASN_RFC1155_COUNTER ASN_COUNTER32 +#define ASN_RFC1155_GAUGE ASN_GAUGE32 +#define ASN_RFC1155_TIMETICKS ASN_TIMETICKS +#define ASN_RFC1155_OPAQUE ASN_OPAQUE +#define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING +#define ASN_RFC1157_GETREQUEST SNMP_PDU_GET +#define ASN_RFC1157_GETNEXTREQUEST SNMP_PDU_GETNEXT +#define ASN_RFC1157_GETRESPONSE SNMP_PDU_RESPONSE +#define ASN_RFC1157_SETREQUEST SNMP_PDU_SET +#define ASN_RFC1157_TRAP SNMP_PDU_V1TRAP +#define ASN_CONTEXTSPECIFIC ASN_CONTEXT +#define ASN_PRIMATIVE ASN_PRIMITIVE +#define RFC1157VarBindList SnmpVarBindList +#define RFC1157VarBind SnmpVarBind +#define AsnInteger AsnInteger32 +#define AsnCounter AsnCounter32 +#define AsnGauge AsnGauge32 +#endif /* SNMPSTRICT */ + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#include +#endif diff --git a/reactos/w32api/include/sql.h b/reactos/w32api/include/sql.h new file mode 100644 index 00000000000..2f0391b759f --- /dev/null +++ b/reactos/w32api/include/sql.h @@ -0,0 +1,408 @@ +#ifndef _SQL_H +#define _SQL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#ifndef ODBCVER +#define ODBCVER 0x0351 +#endif +#include +#define SQL_ACCESSIBLE_PROCEDURES 20 +#define SQL_ACCESSIBLE_TABLES 19 +#define SQL_ALL_TYPES 0 +#define SQL_ALTER_TABLE 86 +#define SQL_API_SQLALLOCCONNECT 1 +#define SQL_API_SQLALLOCENV 2 +#define SQL_API_SQLALLOCSTMT 3 +#define SQL_API_SQLBINDCOL 4 +#define SQL_API_SQLCANCEL 5 +#define SQL_API_SQLCOLUMNS 40 +#define SQL_API_SQLCONNECT 7 +#define SQL_API_SQLDATASOURCES 57 +#define SQL_API_SQLDESCRIBECOL 8 +#define SQL_API_SQLDISCONNECT 9 +#define SQL_API_SQLERROR 10 +#define SQL_API_SQLEXECDIRECT 11 +#define SQL_API_SQLEXECUTE 12 +#define SQL_API_SQLFETCH 13 +#define SQL_API_SQLFREECONNECT 14 +#define SQL_API_SQLFREEENV 15 +#define SQL_API_SQLFREESTMT 16 +#define SQL_API_SQLGETCONNECTOPTION 42 +#define SQL_API_SQLGETCURSORNAME 17 +#define SQL_API_SQLGETDATA 43 +#define SQL_API_SQLGETFUNCTIONS 44 +#define SQL_API_SQLGETINFO 45 +#define SQL_API_SQLGETSTMTOPTION 46 +#define SQL_API_SQLGETTYPEINFO 47 +#define SQL_API_SQLNUMRESULTCOLS 18 +#define SQL_API_SQLPARAMDATA 48 +#define SQL_API_SQLPREPARE 19 +#define SQL_API_SQLPUTDATA 49 +#define SQL_API_SQLROWCOUNT 20 +#define SQL_API_SQLSETCONNECTOPTION 50 +#define SQL_API_SQLSETCURSORNAME 21 +#define SQL_API_SQLSETPARAM 22 +#define SQL_API_SQLSETSTMTOPTION 51 +#define SQL_API_SQLSPECIALCOLUMNS 52 +#define SQL_API_SQLSTATISTICS 53 +#define SQL_API_SQLTABLES 54 +#define SQL_API_SQLTRANSACT 23 +#define SQL_CB_CLOSE 1 +#define SQL_CB_DELETE 0 +#define SQL_CB_PRESERVE 2 +#define SQL_CHAR 1 +#define SQL_CLOSE 0 +#define SQL_COMMIT 0 +#define SQL_CURSOR_COMMIT_BEHAVIOR 23 +#define SQL_DATA_AT_EXEC (-2) +#define SQL_DATA_SOURCE_NAME 2 +#define SQL_DATA_SOURCE_READ_ONLY 25 +#define SQL_DBMS_NAME 17 +#define SQL_DBMS_VER 18 +#define SQL_DECIMAL 3 +#define SQL_DEFAULT_TXN_ISOLATION 26 +#define SQL_DOUBLE 8 +#define SQL_DROP 1 +#define SQL_ERROR (-1) +#define SQL_FD_FETCH_ABSOLUTE 16 +#define SQL_FD_FETCH_FIRST 2 +#define SQL_FD_FETCH_LAST 4 +#define SQL_FD_FETCH_NEXT 1 +#define SQL_FD_FETCH_PRIOR 8 +#define SQL_FD_FETCH_RELATIVE 32 +#define SQL_FETCH_ABSOLUTE 5 +#define SQL_FETCH_DIRECTION 8 +#define SQL_FETCH_FIRST 2 +#define SQL_FETCH_LAST 3 +#define SQL_FETCH_NEXT 1 +#define SQL_FETCH_PRIOR 4 +#define SQL_FETCH_RELATIVE 6 +#define SQL_FLOAT 6 +#define SQL_GD_ANY_COLUMN 1 +#define SQL_GD_ANY_ORDER 2 +#define SQL_GETDATA_EXTENSIONS 81 +#define SQL_IC_LOWER 2 +#define SQL_IC_MIXED 4 +#define SQL_IC_SENSITIVE 3 +#define SQL_IC_UPPER 1 +#define SQL_IDENTIFIER_CASE 28 +#define SQL_IDENTIFIER_QUOTE_CHAR 29 +#define SQL_INDEX_ALL 1 +#define SQL_INDEX_CLUSTERED 1 +#define SQL_INDEX_HASHED 2 +#define SQL_INDEX_OTHER 3 +#define SQL_INDEX_UNIQUE 0 +#define SQL_INTEGER 4 +#define SQL_INTEGRITY 73 +#define SQL_INVALID_HANDLE (-2) +#define SQL_MAX_CATALOG_NAME_LEN 34 +#define SQL_MAX_COLUMN_NAME_LEN 30 +#define SQL_MAX_COLUMNS_IN_GROUP_BY 97 +#define SQL_MAX_COLUMNS_IN_INDEX 98 +#define SQL_MAX_COLUMNS_IN_ORDER_BY 99 +#define SQL_MAX_COLUMNS_IN_SELECT 100 +#define SQL_MAX_COLUMNS_IN_TABLE 101 +#define SQL_MAX_CURSOR_NAME_LEN 31 +#define SQL_MAX_INDEX_SIZE 102 +#define SQL_MAX_MESSAGE_LENGTH 512 +#define SQL_MAX_ROW_SIZE 104 +#define SQL_MAX_SCHEMA_NAME_LEN 32 +#define SQL_MAX_STATEMENT_LEN 105 +#define SQL_MAX_TABLE_NAME_LEN 35 +#define SQL_MAX_TABLES_IN_SELECT 106 +#define SQL_MAX_USER_NAME_LEN 107 +#define SQL_MAXIMUM_CATALOG_NAME_LENGTH SQL_MAX_CATALOG_NAME_LEN +#define SQL_MAXIMUM_COLUMN_NAME_LENGTH SQL_MAX_COLUMN_NAME_LEN +#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY SQL_MAX_COLUMNS_IN_GROUP_BY +#define SQL_MAXIMUM_COLUMNS_IN_INDEX SQL_MAX_COLUMNS_IN_INDEX +#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY SQL_MAX_COLUMNS_IN_ORDER_BY +#define SQL_MAXIMUM_COLUMNS_IN_SELECT SQL_MAX_COLUMNS_IN_SELECT +#define SQL_MAXIMUM_CURSOR_NAME_LENGTH SQL_MAX_CURSOR_NAME_LEN +#define SQL_MAXIMUM_INDEX_SIZE SQL_MAX_INDEX_SIZE +#define SQL_MAXIMUM_ROW_SIZE SQL_MAX_ROW_SIZE +#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH SQL_MAX_SCHEMA_NAME_LEN +#define SQL_MAXIMUM_STATEMENT_LENGTH SQL_MAX_STATEMENT_LEN +#define SQL_MAXIMUM_TABLES_IN_SELECT SQL_MAX_TABLES_IN_SELECT +#define SQL_MAXIMUM_USER_NAME_LENGTH SQL_MAX_USER_NAME_LEN +#define SQL_NC_HIGH 0 +#define SQL_NC_LOW 1 +#define SQL_NEED_DATA 99 +#define SQL_NO_NULLS 0 +#define SQL_NTS (-3) +#define SQL_NTSL (-3L) +#define SQL_NULL_COLLATION 85 +#define SQL_NULL_DATA (-1) +#define SQL_NULL_HDBC 0 +#define SQL_NULL_HENV 0 +#define SQL_NULL_HSTMT 0 +#define SQL_NULLABLE 1 +#define SQL_NULLABLE_UNKNOWN 2 +#define SQL_NUMERIC 2 +#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90 +#define SQL_PC_PSEUDO 2 +#define SQL_PC_UNKNOWN 0 +#define SQL_REAL 7 +#define SQL_RESET_PARAMS 3 +#define SQL_ROLLBACK 1 +#define SQL_SCCO_LOCK 2 +#define SQL_SCCO_OPT_ROWVER 4 +#define SQL_SCCO_OPT_VALUES 8 +#define SQL_SCCO_READ_ONLY 1 +#define SQL_SCOPE_CURROW 0 +#define SQL_SCOPE_SESSION 2 +#define SQL_SCOPE_TRANSACTION 1 +#define SQL_SCROLL_CONCURRENCY 43 +#define SQL_SEARCH_PATTERN_ESCAPE 14 +#define SQL_SERVER_NAME 13 +#define SQL_SMALLINT 5 +#define SQL_SPECIAL_CHARACTERS 94 +#define SQL_STILL_EXECUTING 2 +#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) +#define SQL_SUCCESS 0 +#define SQL_SUCCESS_WITH_INFO 1 +#define SQL_TC_ALL 2 +#define SQL_TC_DDL_COMMIT 3 +#define SQL_TC_DDL_IGNORE 4 +#define SQL_TC_DML 1 +#define SQL_TC_NONE 0 +#define SQL_TRANSACTION_CAPABLE SQL_TXN_CAPABLE +#define SQL_TRANSACTION_ISOLATION_OPTION SQL_TXN_ISOLATION_OPTION +#define SQL_TRANSACTION_READ_COMMITTED SQL_TXN_READ_COMMITTED +#define SQL_TRANSACTION_READ_UNCOMMITTED SQL_TXN_READ_UNCOMMITTED +#define SQL_TRANSACTION_REPEATABLE_READ SQL_TXN_REPEATABLE_READ +#define SQL_TRANSACTION_SERIALIZABLE SQL_TXN_SERIALIZABLE +#define SQL_TXN_CAPABLE 46 +#define SQL_TXN_ISOLATION_OPTION 72 +#define SQL_TXN_READ_COMMITTED 2 +#define SQL_TXN_READ_UNCOMMITTED 1 +#define SQL_TXN_REPEATABLE_READ 4 +#define SQL_TXN_SERIALIZABLE 8 +#define SQL_UNBIND 2 +#define SQL_UNKNOWN_TYPE 0 +#define SQL_USER_NAME 47 +#define SQL_VARCHAR 12 +#if (ODBCVER >= 0x0200) +#define SQL_AT_ADD_COLUMN 1 +#define SQL_AT_DROP_COLUMN 2 +#endif /* ODBCVER >= 0x0200 */ +#if (ODBCVER >= 0x0201) +#define SQL_OJ_LEFT 1 +#define SQL_OJ_RIGHT 2 +#define SQL_OJ_FULL 4 +#define SQL_OJ_NESTED 8 +#define SQL_OJ_NOT_ORDERED 16 +#define SQL_OJ_INNER 32 +#define SQL_OJ_ALL_COMPARISON_OPS 64 +#endif /* ODBCVER >= 0x0201 */ +#if (ODBCVER >= 0x0300) +#define SQL_AM_CONNECTION 1 +#define SQL_AM_NONE 0 +#define SQL_AM_STATEMENT 2 +#define SQL_API_SQLALLOCHANDLE 1001 +#define SQL_API_SQLBINDPARAM 1002 +#define SQL_API_SQLCLOSECURSOR 1003 +#define SQL_API_SQLCOLATTRIBUTE 6 +#define SQL_API_SQLCOPYDESC 1004 +#define SQL_API_SQLENDTRAN 1005 +#define SQL_API_SQLFETCHSCROLL 1021 +#define SQL_API_SQLFREEHANDLE 1006 +#define SQL_API_SQLGETCONNECTATTR 1007 +#define SQL_API_SQLGETDESCFIELD 1008 +#define SQL_API_SQLGETDESCREC 1009 +#define SQL_API_SQLGETDIAGFIELD 1010 +#define SQL_API_SQLGETDIAGREC 1011 +#define SQL_API_SQLGETENVATTR 1012 +#define SQL_API_SQLGETSTMTATTR 1014 +#define SQL_API_SQLSETCONNECTATTR 1016 +#define SQL_API_SQLSETDESCFIELD 1017 +#define SQL_API_SQLSETDESCREC 1018 +#define SQL_API_SQLSETENVATTR 1019 +#define SQL_API_SQLSETSTMTATTR 1020 +#define SQL_ARD_TYPE (-99) +#define SQL_AT_ADD_CONSTRAINT 8 +#define SQL_ATTR_APP_PARAM_DESC 10011 +#define SQL_ATTR_APP_ROW_DESC 10010 +#define SQL_ATTR_AUTO_IPD 10001 +#define SQL_ATTR_CURSOR_SCROLLABLE (-1) +#define SQL_ATTR_CURSOR_SENSITIVITY (-2) +#define SQL_ATTR_IMP_PARAM_DESC 10013 +#define SQL_ATTR_IMP_ROW_DESC 10012 +#define SQL_ATTR_METADATA_ID 10014 +#define SQL_ATTR_OUTPUT_NTS 10001 +#define SQL_CATALOG_NAME 10003 +#define SQL_CODE_DATE 1 +#define SQL_CODE_TIME 2 +#define SQL_CODE_TIMESTAMP 3 +#define SQL_COLLATION_SEQ 10004 +#define SQL_CURSOR_SENSITIVITY 10001 +#define SQL_DATE_LEN 10 +#define SQL_DATETIME 9 +#define SQL_DEFAULT 99 +#define SQL_DESC_ALLOC_AUTO 1 +#define SQL_DESC_ALLOC_TYPE 1099 +#define SQL_DESC_ALLOC_USER 2 +#define SQL_DESC_COUNT 1001 +#define SQL_DESC_DATA_PTR 1010 +#define SQL_DESC_DATETIME_INTERVAL_CODE 1007 +#define SQL_DESC_INDICATOR_PTR 1009 +#define SQL_DESC_LENGTH 1003 +#define SQL_DESC_NAME 1011 +#define SQL_DESC_NULLABLE 1008 +#define SQL_DESC_OCTET_LENGTH 1013 +#define SQL_DESC_OCTET_LENGTH_PTR 1004 +#define SQL_DESC_PRECISION 1005 +#define SQL_DESC_SCALE 1006 +#define SQL_DESC_TYPE 1002 +#define SQL_DESC_UNNAMED 1012 +#define SQL_DESCRIBE_PARAMETER 10002 +#define SQL_DIAG_ALTER_DOMAIN 3 +#define SQL_DIAG_ALTER_TABLE 4 +#define SQL_DIAG_CALL 7 +#define SQL_DIAG_CLASS_ORIGIN 8 +#define SQL_DIAG_CONNECTION_NAME 10 +#define SQL_DIAG_CREATE_ASSERTION 6 +#define SQL_DIAG_CREATE_CHARACTER_SET 8 +#define SQL_DIAG_CREATE_COLLATION 10 +#define SQL_DIAG_CREATE_DOMAIN 23 +#define SQL_DIAG_CREATE_INDEX (-1) +#define SQL_DIAG_CREATE_SCHEMA 64 +#define SQL_DIAG_CREATE_TABLE 77 +#define SQL_DIAG_CREATE_TRANSLATION 79 +#define SQL_DIAG_CREATE_VIEW 84 +#define SQL_DIAG_DELETE_WHERE 19 +#define SQL_DIAG_DROP_ASSERTION 24 +#define SQL_DIAG_DROP_CHARACTER_SET 25 +#define SQL_DIAG_DROP_COLLATION 26 +#define SQL_DIAG_DROP_DOMAIN 27 +#define SQL_DIAG_DROP_INDEX (-2) +#define SQL_DIAG_DROP_SCHEMA 31 +#define SQL_DIAG_DROP_TABLE 32 +#define SQL_DIAG_DROP_TRANSLATION 33 +#define SQL_DIAG_DROP_VIEW 36 +#define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38 +#define SQL_DIAG_DYNAMIC_FUNCTION 7 +#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12 +#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81 +#define SQL_DIAG_GRANT 48 +#define SQL_DIAG_INSERT 50 +#define SQL_DIAG_MESSAGE_TEXT 6 +#define SQL_DIAG_NATIVE 5 +#define SQL_DIAG_NUMBER 2 +#define SQL_DIAG_RETURNCODE 1 +#define SQL_DIAG_REVOKE 59 +#define SQL_DIAG_ROW_COUNT 3 +#define SQL_DIAG_SELECT_CURSOR 85 +#define SQL_DIAG_SERVER_NAME 11 +#define SQL_DIAG_SQLSTATE 4 +#define SQL_DIAG_SUBCLASS_ORIGIN 9 +#define SQL_DIAG_UNKNOWN_STATEMENT 0 +#define SQL_DIAG_UPDATE_WHERE 82 +#define SQL_FALSE 0 +#define SQL_HANDLE_DBC 2 +#define SQL_HANDLE_DESC 4 +#define SQL_HANDLE_ENV 1 +#define SQL_HANDLE_STMT 3 +#define SQL_INSENSITIVE 1 +#define SQL_MAX_CONCURRENT_ACTIVITIES 1 +#define SQL_MAX_DRIVER_CONNECTIONS 0 +#define SQL_MAX_IDENTIFIER_LEN 10005 +#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES SQL_MAX_CONCURRENT_ACTIVITIES +#define SQL_MAXIMUM_DRIVER_CONNECTIONS SQL_MAX_DRIVER_CONNECTIONS +#define SQL_MAXIMUM_IDENTIFIER_LENGTH SQL_MAX_IDENTIFIER_LEN +#define SQL_NAMED 0 +#define SQL_NO_DATA 100 +#define SQL_NONSCROLLABLE 0 +#define SQL_NULL_HANDLE 0L +#define SQL_NULL_HDESC 0 +#define SQL_OJ_CAPABILITIES 115 +#define SQL_OUTER_JOIN_CAPABILITIES SQL_OJ_CAPABILITIES +#define SQL_PC_NON_PSEUDO 1 +#define SQL_PRED_BASIC 2 +#define SQL_PRED_CHAR 1 +#define SQL_PRED_NONE 0 +#define SQL_ROW_IDENTIFIER 1 +#define SQL_SCROLLABLE 1 +#define SQL_SENSITIVE 2 +#define SQL_TIME_LEN 8 +#define SQL_TIMESTAMP_LEN 19 +#define SQL_TRUE 1 +#define SQL_TYPE_DATE 91 +#define SQL_TYPE_TIME 92 +#define SQL_TYPE_TIMESTAMP 93 +#define SQL_UNNAMED 1 +#define SQL_UNSPECIFIED 0 +#define SQL_XOPEN_CLI_YEAR 10000 +#endif /* ODBCVER >= 0x0300 */ + +#ifndef RC_INVOKED +SQLRETURN SQL_API SQLAllocConnect(SQLHENV,SQLHDBC*); /* deprecated */ +SQLRETURN SQL_API SQLAllocEnv(SQLHENV*); /* deprecated */ +SQLRETURN SQL_API SQLAllocStmt(SQLHDBC,SQLHSTMT*); /* deprecated */ +SQLRETURN SQL_API SQLBindCol(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*); +SQLRETURN SQL_API SQLCancel(SQLHSTMT); +SQLRETURN SQL_API SQLConnect(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLDescribeCol(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*); +SQLRETURN SQL_API SQLDisconnect(SQLHDBC); +SQLRETURN SQL_API SQLError(SQLHENV,SQLHDBC,SQLHSTMT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); /* deprecated */ +SQLRETURN SQL_API SQLExecDirect(SQLHSTMT,SQLCHAR*,SQLINTEGER); +SQLRETURN SQL_API SQLExecute(SQLHSTMT); +SQLRETURN SQL_API SQLFetch(SQLHSTMT); +SQLRETURN SQL_API SQLFreeConnect(SQLHDBC); /* deprecated */ +SQLRETURN SQL_API SQLFreeEnv(SQLHENV); /* deprecated */ +SQLRETURN SQL_API SQLFreeStmt(SQLHSTMT,SQLUSMALLINT); +SQLRETURN SQL_API SQLGetCursorName(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLNumResultCols(SQLHSTMT,SQLSMALLINT*); +SQLRETURN SQL_API SQLPrepare(SQLHSTMT,SQLCHAR*,SQLINTEGER); +SQLRETURN SQL_API SQLRowCount(SQLHSTMT,SQLLEN*); +SQLRETURN SQL_API SQLSetCursorName(SQLHSTMT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLTransact(SQLHENV,SQLHDBC,SQLUSMALLINT); +SQLRETURN SQL_API SQLSetParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN*); /* deprecated */ +SQLRETURN SQL_API SQLColumns(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLGetConnectOption(SQLHDBC,SQLUSMALLINT,SQLPOINTER); /* deprecated */ +SQLRETURN SQL_API SQLGetData(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*); +SQLRETURN SQL_API SQLGetFunctions(SQLHDBC,SQLUSMALLINT,SQLUSMALLINT*); +SQLRETURN SQL_API SQLGetInfo(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetStmtOption(SQLHSTMT,SQLUSMALLINT,SQLPOINTER); /* deprecated */ +SQLRETURN SQL_API SQLGetTypeInfo(SQLHSTMT,SQLSMALLINT); +SQLRETURN SQL_API SQLParamData(SQLHSTMT,SQLPOINTER*); +SQLRETURN SQL_API SQLPutData(SQLHSTMT,SQLPOINTER,SQLLEN); +SQLRETURN SQL_API SQLSetConnectOption(SQLHDBC,SQLUSMALLINT,SQLULEN); /* deprecated */ +SQLRETURN SQL_API SQLSetStmtOption(SQLHSTMT,SQLUSMALLINT,SQLROWCOUNT); /* deprecated */ +SQLRETURN SQL_API SQLSpecialColumns(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT); +SQLRETURN SQL_API SQLStatistics(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT); +SQLRETURN SQL_API SQLTables(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLDataSources(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +#if (ODBCVER >= 0x0300) +SQLRETURN SQL_API SQLAllocHandle(SQLSMALLINT,SQLHANDLE,SQLHANDLE*); +SQLRETURN SQL_API SQLBindParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN*); +SQLRETURN SQL_API SQLCloseCursor(SQLHSTMT); +SQLRETURN SQL_API SQLColAttribute(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLPOINTER); +SQLRETURN SQL_API SQLCopyDesc(SQLHDESC,SQLHDESC); +SQLRETURN SQL_API SQLEndTran(SQLSMALLINT,SQLHANDLE,SQLSMALLINT); +SQLRETURN SQL_API SQLFetchScroll(SQLHSTMT,SQLSMALLINT,SQLROWOFFSET); +SQLRETURN SQL_API SQLFreeHandle(SQLSMALLINT,SQLHANDLE); +SQLRETURN SQL_API SQLGetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLGetDescField(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLGetDescRec(SQLHDESC,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*, + SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetDiagField(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetDiagRec(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetEnvAttr(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLGetStmtAttr(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLSetDescField(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLSetDescRec(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLLEN,SQLSMALLINT, + SQLSMALLINT,SQLPOINTER,SQLLEN*,SQLLEN*); +SQLRETURN SQL_API SQLSetEnvAttr(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLSetStmtAttr(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER); +#endif /* (ODBCVER >= 0x0300) */ +#endif /* ndef RC_INVOKED */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/sqlext.h b/reactos/w32api/include/sqlext.h new file mode 100644 index 00000000000..884260781de --- /dev/null +++ b/reactos/w32api/include/sqlext.h @@ -0,0 +1,1218 @@ +#ifndef _SQLEXT_H +#define _SQLEXT_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#define SQL_SPEC_MAJOR 3 +#define SQL_SPEC_MINOR 51 +#define SQL_SPEC_STRING "03.51" +#define SQL_ACCESS_MODE 101 +#define SQL_ACTIVE_CONNECTIONS 0 +#define SQL_ACTIVE_STATEMENTS 1 +#define SQL_ADD 4 +#define SQL_ALL_EXCEPT_LIKE 2 +#define SQL_API_ALL_FUNCTIONS 0 +#define SQL_API_LOADBYORDINAL 199 +#define SQL_API_SQLBINDPARAMETER 72 +#define SQL_API_SQLBROWSECONNECT 55 +#define SQL_API_SQLCOLATTRIBUTES 6 +#define SQL_API_SQLCOLUMNPRIVILEGES 56 +#define SQL_API_SQLDESCRIBEPARAM 58 +#define SQL_API_SQLDRIVERCONNECT 41 +#define SQL_API_SQLDRIVERS 71 +#define SQL_API_SQLEXTENDEDFETCH 59 +#define SQL_API_SQLFOREIGNKEYS 60 +#define SQL_API_SQLMORERESULTS 61 +#define SQL_API_SQLNATIVESQL 62 +#define SQL_API_SQLNUMPARAMS 63 +#define SQL_API_SQLPARAMOPTIONS 64 +#define SQL_API_SQLPRIMARYKEYS 65 +#define SQL_API_SQLPROCEDURECOLUMNS 66 +#define SQL_API_SQLPROCEDURES 67 +#define SQL_API_SQLSETPOS 68 +#define SQL_API_SQLSETSCROLLOPTIONS 69 +#define SQL_API_SQLTABLEPRIVILEGES 70 +#define SQL_ASYNC_ENABLE 4 +#define SQL_ASYNC_ENABLE_DEFAULT SQL_ASYNC_ENABLE_OFF +#define SQL_ASYNC_ENABLE_OFF 0UL +#define SQL_ASYNC_ENABLE_ON 1UL +#define SQL_ATTR_CONNECTION_DEAD 1209 +#define SQL_ATTR_READONLY 0 +#define SQL_ATTR_READWRITE_UNKNOWN 2 +#define SQL_ATTR_WRITE 1 +#define SQL_AUTOCOMMIT 102 +#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON +#define SQL_AUTOCOMMIT_OFF 0UL +#define SQL_AUTOCOMMIT_ON 1UL +#define SQL_BEST_ROWID 1 +#define SQL_BIGINT (-5) +#define SQL_BINARY (-2) +#define SQL_BIND_BY_COLUMN 0UL +#define SQL_BIND_TYPE 5 +#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN +#define SQL_BIT (-7) +#define SQL_BOOKMARK_PERSISTENCE 82 +#define SQL_BP_CLOSE 1 +#define SQL_BP_DELETE 2 +#define SQL_BP_DROP 4 +#define SQL_BP_OTHER_HSTMT 32 +#define SQL_BP_SCROLL 64 +#define SQL_BP_TRANSACTION 8 +#define SQL_BP_UPDATE 16 +#define SQL_C_BINARY SQL_BINARY +#define SQL_C_BIT SQL_BIT +#define SQL_C_BOOKMARK SQL_C_ULONG +#define SQL_C_CHAR SQL_CHAR +#define SQL_C_DATE SQL_DATE +#define SQL_C_DEFAULT 99 +#define SQL_C_DOUBLE SQL_DOUBLE +#define SQL_C_FLOAT SQL_REAL +#define SQL_C_LONG SQL_INTEGER +#define SQL_C_SHORT SQL_SMALLINT +#define SQL_C_SLONG (SQL_C_LONG+SQL_SIGNED_OFFSET) +#define SQL_C_SSHORT (SQL_C_SHORT+SQL_SIGNED_OFFSET) +#define SQL_C_STINYINT (SQL_TINYINT+SQL_SIGNED_OFFSET) +#define SQL_C_TIME SQL_TIME +#define SQL_C_TIMESTAMP SQL_TIMESTAMP +#define SQL_C_TINYINT SQL_TINYINT +#define SQL_C_ULONG (SQL_C_LONG+SQL_UNSIGNED_OFFSET) +#define SQL_C_USHORT (SQL_C_SHORT+SQL_UNSIGNED_OFFSET) +#define SQL_C_UTINYINT (SQL_TINYINT+SQL_UNSIGNED_OFFSET) +#define SQL_CASCADE 0 +#define SQL_CB_NON_NULL 1 +#define SQL_CB_NULL 0 +#define SQL_CC_CLOSE SQL_CB_CLOSE /* deprecated */ +#define SQL_CC_DELETE SQL_CB_DELETE /* deprecated */ +#define SQL_CC_PRESERVE SQL_CB_PRESERVE /* deprecated */ +#define SQL_CD_FALSE 0L +#define SQL_CD_TRUE 1L +#define SQL_CN_ANY 2 +#define SQL_CN_DIFFERENT 1 +#define SQL_CN_NONE 0 +#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL +#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT +#define SQL_COLUMN_ALIAS 87 +#define SQL_COLUMN_AUTO_INCREMENT 11 +#define SQL_COLUMN_CASE_SENSITIVE 12 +#define SQL_COLUMN_COUNT 0 +#define SQL_COLUMN_DISPLAY_SIZE 6 +#define SQL_COLUMN_LABEL 18 +#define SQL_COLUMN_LENGTH 3 +#define SQL_COLUMN_MONEY 9 +#define SQL_COLUMN_NAME 1 +#define SQL_COLUMN_NULLABLE 7 +#define SQL_COLUMN_OWNER_NAME 16 +#define SQL_COLUMN_PRECISION 4 +#define SQL_COLUMN_QUALIFIER_NAME 17 +#define SQL_COLUMN_SCALE 5 +#define SQL_COLUMN_SEARCHABLE 13 +#define SQL_COLUMN_TABLE_NAME 15 +#define SQL_COLUMN_TYPE 2 +#define SQL_COLUMN_TYPE_NAME 14 +#define SQL_COLUMN_UNSIGNED 8 +#define SQL_COLUMN_UPDATABLE 10 +#define SQL_CONCAT_NULL_BEHAVIOR 22 +#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY +#define SQL_CONCUR_LOCK 2 +#define SQL_CONCUR_READ_ONLY 1 +#define SQL_CONCUR_ROWVER 3 +#define SQL_CONCUR_TIMESTAMP SQL_CONCUR_ROWVER /* deprecated */ +#define SQL_CONCUR_VALUES 4 +#define SQL_CONCURRENCY 7 +#define SQL_CONVERT_BIGINT 53 +#define SQL_CONVERT_BINARY 54 +#define SQL_CONVERT_BIT 55 +#define SQL_CONVERT_CHAR 56 +#define SQL_CONVERT_DATE 57 +#define SQL_CONVERT_DECIMAL 58 +#define SQL_CONVERT_DOUBLE 59 +#define SQL_CONVERT_FLOAT 60 +#define SQL_CONVERT_FUNCTIONS 48 +#define SQL_CONVERT_INTEGER 61 +#define SQL_CONVERT_LONGVARBINARY 71 +#define SQL_CONVERT_LONGVARCHAR 62 +#define SQL_CONVERT_NUMERIC 63 +#define SQL_CONVERT_REAL 64 +#define SQL_CONVERT_SMALLINT 65 +#define SQL_CONVERT_TIME 66 +#define SQL_CONVERT_TIMESTAMP 67 +#define SQL_CONVERT_TINYINT 68 +#define SQL_CONVERT_VARBINARY 69 +#define SQL_CONVERT_VARCHAR 70 +#define SQL_CORRELATION_NAME 74 +#define SQL_CR_CLOSE SQL_CB_CLOSE /* deprecated */ +#define SQL_CR_DELETE SQL_CB_DELETE /* deprecated */ +#define SQL_CR_PRESERVE SQL_CB_PRESERVE /* deprecated */ +#define SQL_CUR_DEFAULT SQL_CUR_USE_DRIVER +#define SQL_CUR_USE_DRIVER 2UL +#define SQL_CUR_USE_IF_NEEDED 0UL +#define SQL_CUR_USE_ODBC 1UL +#define SQL_CURRENT_QUALIFIER 109 +#define SQL_CURSOR_DYNAMIC 2UL +#define SQL_CURSOR_FORWARD_ONLY 0UL +#define SQL_CURSOR_KEYSET_DRIVEN 1UL +#define SQL_CURSOR_ROLLBACK_BEHAVIOR 24 +#define SQL_CURSOR_STATIC 3UL +#define SQL_CURSOR_TYPE 6 +#define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY +#define SQL_CV_CASCADED 0x00000004L +#define SQL_CV_CHECK_OPTION 0x00000002L +#define SQL_CV_CREATE_VIEW 0x00000001L +#define SQL_CV_LOCAL 0x00000008L +#define SQL_CVT_BIGINT 0x00004000L +#define SQL_CVT_BINARY 0x00000400L +#define SQL_CVT_BIT 0x00001000L +#define SQL_CVT_CHAR 0x00000001L +#define SQL_CVT_DATE 0x00008000L +#define SQL_CVT_DECIMAL 0x00000004L +#define SQL_CVT_DOUBLE 0x00000080L +#define SQL_CVT_FLOAT 0x00000020L +#define SQL_CVT_INTEGER 0x00000008L +#define SQL_CVT_LONGVARBINARY 0x00040000L +#define SQL_CVT_LONGVARCHAR 0x00000200L +#define SQL_CVT_NUMERIC 0x00000002L +#define SQL_CVT_REAL 0x00000040L +#define SQL_CVT_SMALLINT 0x00000010L +#define SQL_CVT_TIME 0x00010000L +#define SQL_CVT_TIMESTAMP 0x00020000L +#define SQL_CVT_TINYINT 0x00002000L +#define SQL_CVT_VARBINARY 0x00000800L +#define SQL_CVT_VARCHAR 0x00000100L +#define SQL_DATABASE_NAME 16 /* deprecated */ +#define SQL_DATE 9 +#define SQL_DEFAULT_PARAM (-5) +#define SQL_DELETE 3 +#define SQL_DRIVER_COMPLETE 1 +#define SQL_DRIVER_COMPLETE_REQUIRED 3 +#define SQL_DRIVER_HDBC 3 +#define SQL_DRIVER_HENV 4 +#define SQL_DRIVER_HLIB 76 +#define SQL_DRIVER_HSTMT 5 +#define SQL_DRIVER_NAME 6 +#define SQL_DRIVER_NOPROMPT 0 +#define SQL_DRIVER_ODBC_VER 77 +#define SQL_DRIVER_PROMPT 2 +#define SQL_DRIVER_VER 7 +#define SQL_DTC_ENLIST_EXPENSIVE 1 +#define SQL_DTC_TRANSITION_COST 1750 +#define SQL_DTC_UNENLIST_EXPENSIVE 2 +#define SQL_ENSURE 1 +#define SQL_ENTIRE_ROWSET 0 +#define SQL_EXPRESSIONS_IN_ORDERBY 27 +#define SQL_FD_FETCH_BOOKMARK 128 +#define SQL_FD_FETCH_PREV SQL_FD_FETCH_PRIOR /* deprecated */ +#define SQL_FD_FETCH_RESUME 64 +#define SQL_FETCH_BOOKMARK 8 +#define SQL_FETCH_PREV SQL_FETCH_PRIOR /* deprecated */ +#define SQL_FETCH_RESUME 7 /* deprecated */ +#define SQL_FILE_CATALOG SQL_FILE_QUALIFIER +#define SQL_FILE_NOT_SUPPORTED 0x0000 +#define SQL_FILE_QUALIFIER 0x0002 +#define SQL_FILE_TABLE 0x0001 +#define SQL_FILE_USAGE 84 +#define SQL_FN_CVT_CONVERT 0x00000001L +#define SQL_FN_NUM_ABS 0x00000001L +#define SQL_FN_NUM_ACOS 0x00000002L +#define SQL_FN_NUM_ASIN 0x00000004L +#define SQL_FN_NUM_ATAN 0x00000008L +#define SQL_FN_NUM_ATAN2 0x00000010L +#define SQL_FN_NUM_CEILING 0x00000020L +#define SQL_FN_NUM_COS 0x00000040L +#define SQL_FN_NUM_COT 0x00000080L +#define SQL_FN_NUM_DEGREES 0x00040000L +#define SQL_FN_NUM_EXP 0x00000100L +#define SQL_FN_NUM_FLOOR 0x00000200L +#define SQL_FN_NUM_LOG 0x00000400L +#define SQL_FN_NUM_LOG10 0x00080000L +#define SQL_FN_NUM_MOD 0x00000800L +#define SQL_FN_NUM_PI 0x00010000L +#define SQL_FN_NUM_POWER 0x00100000L +#define SQL_FN_NUM_RADIANS 0x00200000L +#define SQL_FN_NUM_RAND 0x00020000L +#define SQL_FN_NUM_ROUND 0x00400000L +#define SQL_FN_NUM_SIGN 0x00001000L +#define SQL_FN_NUM_SIN 0x00002000L +#define SQL_FN_NUM_SQRT 0x00004000L +#define SQL_FN_NUM_TAN 0x00008000L +#define SQL_FN_NUM_TRUNCATE 0x00800000L +#define SQL_FN_STR_ASCII 0x00002000L +#define SQL_FN_STR_CHAR 0x00004000L +#define SQL_FN_STR_CONCAT 0x00000001L +#define SQL_FN_STR_DIFFERENCE 0x00008000L +#define SQL_FN_STR_INSERT 0x00000002L +#define SQL_FN_STR_LCASE 0x00000040L +#define SQL_FN_STR_LEFT 0x00000004L +#define SQL_FN_STR_LENGTH 0x00000010L +#define SQL_FN_STR_LOCATE 0x00000020L +#define SQL_FN_STR_LOCATE_2 0x00010000L +#define SQL_FN_STR_LTRIM 0x00000008L +#define SQL_FN_STR_REPEAT 0x00000080L +#define SQL_FN_STR_REPLACE 0x00000100L +#define SQL_FN_STR_RIGHT 0x00000200L +#define SQL_FN_STR_RTRIM 0x00000400L +#define SQL_FN_STR_SOUNDEX 0x00020000L +#define SQL_FN_STR_SPACE 0x00040000L +#define SQL_FN_STR_SUBSTRING 0x00000800L +#define SQL_FN_STR_UCASE 0x00001000L +#define SQL_FN_SYS_DBNAME 0x00000002L +#define SQL_FN_SYS_IFNULL 0x00000004L +#define SQL_FN_SYS_USERNAME 0x00000001L +#define SQL_FN_TD_CURDATE 0x00000002L +#define SQL_FN_TD_CURTIME 0x00000200L +#define SQL_FN_TD_DAYNAME 0x00008000L +#define SQL_FN_TD_DAYOFMONTH 0x00000004L +#define SQL_FN_TD_DAYOFWEEK 0x00000008L +#define SQL_FN_TD_DAYOFYEAR 0x00000010L +#define SQL_FN_TD_HOUR 0x00000400L +#define SQL_FN_TD_MINUTE 0x00000800L +#define SQL_FN_TD_MONTH 0x00000020L +#define SQL_FN_TD_MONTHNAME 0x00010000L +#define SQL_FN_TD_NOW 0x00000001L +#define SQL_FN_TD_QUARTER 0x00000040L +#define SQL_FN_TD_SECOND 0x00001000L +#define SQL_FN_TD_TIMESTAMPADD 0x00002000L +#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L +#define SQL_FN_TD_WEEK 0x00000080L +#define SQL_FN_TD_YEAR 0x00000100L +#define SQL_FN_TSI_DAY 0x00000010L +#define SQL_FN_TSI_FRAC_SECOND 0x00000001L +#define SQL_FN_TSI_HOUR 0x00000008L +#define SQL_FN_TSI_MINUTE 0x00000004L +#define SQL_FN_TSI_MONTH 0x00000040L +#define SQL_FN_TSI_QUARTER 0x00000080L +#define SQL_FN_TSI_SECOND 0x00000002L +#define SQL_FN_TSI_WEEK 0x00000020L +#define SQL_FN_TSI_YEAR 0x00000100L +#define SQL_GB_GROUP_BY_CONTAINS_SELECT 2 +#define SQL_GB_GROUP_BY_EQUALS_SELECT 1 +#define SQL_GB_NO_RELATION 3 +#define SQL_GB_NOT_SUPPORTED 0 +#define SQL_GD_BLOCK 4 +#define SQL_GD_BOUND 8 +#define SQL_GET_BOOKMARK 13 +#define SQL_GROUP_BY 88 +#define SQL_IGNORE (-6) +#define SQL_INFO_FIRST 0 +#define SQL_KEYSET_SIZE 8 +#define SQL_KEYSET_SIZE_DEFAULT 0UL +#define SQL_KEYWORDS 89 +#define SQL_LCK_EXCLUSIVE 2 +#define SQL_LCK_NO_CHANGE 1 +#define SQL_LCK_UNLOCK 4 +#define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) +#define SQL_LEN_BINARY_ATTR_OFFSET (-100) +#define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) +#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100) +#define SQL_LIKE_ESCAPE_CLAUSE 113 +#define SQL_LIKE_ONLY 1 +#define SQL_LOCK_EXCLUSIVE 1 +#define SQL_LOCK_NO_CHANGE 0 +#define SQL_LOCK_TYPES 78 +#define SQL_LOCK_UNLOCK 2 +#define SQL_LOGIN_TIMEOUT 103 +#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL +#define SQL_LONGVARBINARY (-4) +#define SQL_LONGVARCHAR (-1) +#define SQL_MAX_BINARY_LITERAL_LEN 112 +#define SQL_MAX_CHAR_LITERAL_LEN 108 +#define SQL_MAX_DSN_LENGTH 32 +#define SQL_MAX_LENGTH 3 +#define SQL_MAX_LENGTH_DEFAULT 0UL +#define SQL_MAX_OPTION_STRING_LENGTH 256 +#define SQL_MAX_OWNER_NAME_LEN 32 +#define SQL_MAX_PROCEDURE_NAME_LEN 33 +#define SQL_MAX_QUALIFIER_NAME_LEN 34 +#define SQL_MAX_ROW_SIZE_INCLUDES_LONG 103 +#define SQL_MAX_ROWS 1 +#define SQL_MAX_ROWS_DEFAULT 0UL +#define SQL_MODE_DEFAULT SQL_MODE_READ_WRITE +#define SQL_MODE_READ_ONLY 1UL +#define SQL_MODE_READ_WRITE 0UL +#define SQL_MULT_RESULT_SETS 36 +#define SQL_MULTIPLE_ACTIVE_TXN 37 +#define SQL_NC_END 0x0004 +#define SQL_NC_START 0x0002 +#define SQL_NEED_LONG_DATA_LEN 111 +#define SQL_NNC_NON_NULL 0x0001 +#define SQL_NNC_NULL 0x0000 +#define SQL_NO_TOTAL (-4) +#define SQL_NON_NULLABLE_COLUMNS 75 +#define SQL_NOSCAN 2 +#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF +#define SQL_NOSCAN_OFF 0UL +#define SQL_NOSCAN_ON 1UL +#define SQL_NUMERIC_FUNCTIONS 49 +#define SQL_OAC_LEVEL1 0x0001 +#define SQL_OAC_LEVEL2 0x0002 +#define SQL_OAC_NONE 0x0000 +#define SQL_ODBC_API_CONFORMANCE 9 +#define SQL_ODBC_CURSORS 110 +#define SQL_ODBC_SAG_CLI_CONFORMANCE 12 +#define SQL_ODBC_SQL_CONFORMANCE 15 +#define SQL_ODBC_SQL_OPT_IEF 73 +#define SQL_ODBC_VER 10 +#define SQL_OPT_TRACE 104 +#define SQL_OPT_TRACE_DEFAULT SQL_OPT_TRACE_OFF +#define SQL_OPT_TRACE_FILE_DEFAULT "\\SQL.LOG" +#define SQL_OPT_TRACE_OFF 0UL +#define SQL_OPT_TRACE_ON 1UL +#define SQL_OPT_TRACEFILE 105 +#define SQL_OSC_CORE 1 +#define SQL_OSC_EXTENDED 2 +#define SQL_OSC_MINIMUM 0 +#define SQL_OSCC_COMPLIANT 1 +#define SQL_OSCC_NOT_COMPLIANT 0 +#define SQL_OU_DML_STATEMENTS 1 +#define SQL_OU_INDEX_DEFINITION 8 +#define SQL_OU_PRIVILEGE_DEFINITION 16 +#define SQL_OU_PROCEDURE_INVOCATION 2 +#define SQL_OU_TABLE_DEFINITION 4 +#define SQL_OUTER_JOINS 38 +#define SQL_OWNER_TERM 39 +#define SQL_OWNER_USAGE 91 +#define SQL_PACKET_SIZE 112 +#define SQL_PARAM_INPUT 1 +#define SQL_PARAM_INPUT_OUTPUT 2 +#define SQL_PARAM_OUTPUT 4 +#define SQL_PARAM_TYPE_DEFAULT SQL_PARAM_INPUT_OUTPUT +#define SQL_PARAM_TYPE_UNKNOWN 0 +#define SQL_PC_NOT_PSEUDO 1 +#define SQL_POS_ADD 16 +#define SQL_POS_DELETE 8 +#define SQL_POS_OPERATIONS 79 +#define SQL_POS_POSITION 1 +#define SQL_POS_REFRESH 2 +#define SQL_POS_UPDATE 4 +#define SQL_POSITION 0 +#define SQL_POSITIONED_STATEMENTS 80 +#define SQL_PRED_SEARCHABLE SQL_SEARCHABLE +#define SQL_PROCEDURE_TERM 40 +#define SQL_PROCEDURES 21 +#define SQL_PS_POSITIONED_DELETE 1 +#define SQL_PS_POSITIONED_UPDATE 2 +#define SQL_PS_SELECT_FOR_UPDATE 4 +#define SQL_PT_FUNCTION 2 +#define SQL_PT_PROCEDURE 1 +#define SQL_PT_UNKNOWN 0 +#define SQL_QL_END 0x0002 +#define SQL_QL_START 0x0001 +#define SQL_QU_DML_STATEMENTS 1 +#define SQL_QU_INDEX_DEFINITION 8 +#define SQL_QU_PRIVILEGE_DEFINITION 16 +#define SQL_QU_PROCEDURE_INVOCATION 2 +#define SQL_QU_TABLE_DEFINITION 4 +#define SQL_QUALIFIER_LOCATION 114 +#define SQL_QUALIFIER_NAME_SEPARATOR 41 +#define SQL_QUALIFIER_TERM 42 +#define SQL_QUALIFIER_USAGE 92 +#define SQL_QUERY_TIMEOUT 0 +#define SQL_QUERY_TIMEOUT_DEFAULT 0UL +#define SQL_QUICK 0 +#define SQL_QUIET_MODE 111 +#define SQL_QUOTED_IDENTIFIER_CASE 93 +#define SQL_RD_DEFAULT SQL_RD_ON +#define SQL_RD_OFF 0UL +#define SQL_RD_ON 1UL +#define SQL_REFRESH 1 +#define SQL_RESTRICT 1 +#define SQL_RESULT_COL 3 +#define SQL_RETRIEVE_DATA 11 +#define SQL_RETURN_VALUE 5 +#define SQL_ROW_ADDED 4 +#define SQL_ROW_DELETED 1 +#define SQL_ROW_ERROR 5 +#define SQL_ROW_NOROW 3 +#define SQL_ROW_NUMBER 14 +#define SQL_ROW_SUCCESS 0 +#define SQL_ROW_UPDATED 2 +#define SQL_ROW_UPDATES 11 +#define SQL_ROWSET_SIZE 9 +#define SQL_ROWSET_SIZE_DEFAULT 1UL +#define SQL_ROWVER 2 +#define SQL_SC_NON_UNIQUE 0UL +#define SQL_SC_TRY_UNIQUE 1UL +#define SQL_SC_UNIQUE 2UL +#define SQL_SCCO_OPT_TIMESTAMP SQL_SCCO_OPT_ROWVER /* deprecated */ +#define SQL_SCROLL_DYNAMIC (-2L) /* deprecated */ +#define SQL_SCROLL_FORWARD_ONLY 0L /* deprecated */ +#define SQL_SCROLL_KEYSET_DRIVEN (-1L) /* deprecated */ +#define SQL_SCROLL_OPTIONS 44 +#define SQL_SCROLL_STATIC (-3L) /* deprecated */ +#define SQL_SEARCHABLE 3 +#define SQL_SET_NULL 2 +#define SQL_SETPARAM_VALUE_MAX (-1L) +#define SQL_SETPOS_MAX_LOCK_VALUE SQL_LOCK_UNLOCK +#define SQL_SETPOS_MAX_OPTION_VALUE SQL_ADD +#define SQL_SIGNED_OFFSET (-20) +#define SQL_SIMULATE_CURSOR 10 +#define SQL_SO_DYNAMIC 4 +#define SQL_SO_FORWARD_ONLY 1 +#define SQL_SO_KEYSET_DRIVEN 2 +#define SQL_SO_MIXED 8 +#define SQL_SO_STATIC 16 +#define SQL_SQ_COMPARISON 1 +#define SQL_SQ_CORRELATED_SUBQUERIES 16 +#define SQL_SQ_EXISTS 2 +#define SQL_SQ_IN 4 +#define SQL_SQ_QUANTIFIED 8 +#define SQL_SQLSTATE_SIZE 5 +#define SQL_SS_ADDITIONS 1 +#define SQL_SS_DELETIONS 2 +#define SQL_SS_UPDATES 4 +#define SQL_STATIC_SENSITIVITY 83 +#define SQL_STRING_FUNCTIONS 50 +#define SQL_SUBQUERIES 95 +#define SQL_SYSTEM_FUNCTIONS 51 +#define SQL_TABLE_STAT 0 +#define SQL_TABLE_TERM 45 +#define SQL_TIME 10 +#define SQL_TIMEDATE_ADD_INTERVALS 109 +#define SQL_TIMEDATE_DIFF_INTERVALS 110 +#define SQL_TIMEDATE_FUNCTIONS 52 +#define SQL_TIMESTAMP 11 +#define SQL_TINYINT (-6) +#define SQL_TRANSLATE_DLL 106 +#define SQL_TRANSLATE_OPTION 107 +#define SQL_TXN_ISOLATION 108 +#define SQL_TXN_VERSIONING 16 +#define SQL_TYPE_NULL 0 +#define SQL_U_UNION 1 +#define SQL_U_UNION_ALL 2 +#define SQL_UB_DEFAULT SQL_UB_OFF +#define SQL_UB_OFF 0UL +#define SQL_UB_ON 01UL +#define SQL_UNION 96 +#define SQL_UNSEARCHABLE 0 +#define SQL_UNSIGNED_OFFSET (-22) +#define SQL_UPDATE 2 +#define SQL_USE_BOOKMARKS 12 +#define SQL_VARBINARY (-3) +#define SQL_POSITION_TO(s,r) SQLSetPos(s,r,SQL_POSITION,SQL_LOCK_NO_CHANGE) +#define SQL_LOCK_RECORD(s,r,l) SQLSetPos(s,r,SQL_POSITION,l) +#define SQL_REFRESH_RECORD(s,r,l) SQLSetPos(s,r,SQL_REFRESH,l) +#define SQL_UPDATE_RECORD(s,r) SQLSetPos(s,r,SQL_UPDATE,SQL_LOCK_NO_CHANGE) +#define SQL_DELETE_RECORD(s,r) SQLSetPos(s,r,SQL_DELETE,SQL_LOCK_NO_CHANGE) +#define SQL_ADD_RECORD(s,r) SQLSetPos(s,r,SQL_ADD,SQL_LOCK_NO_CHANGE) + +#if (ODBCVER < 0x0300) +#define SQL_CONNECT_OPT_DRVR_START 1000 +#define SQL_CONN_OPT_MAX SQL_PACKET_SIZE +#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE +#define SQL_STMT_OPT_MAX SQL_ROW_NUMBER +#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT +#define SQL_TYPE_DRIVER_START SQL_INTERVAL_YEAR +#define SQL_TYPE_DRIVER_END SQL_UNICODE_LONGVARCHAR +#define SQL_TYPE_MIN SQL_BIT +#define SQL_TYPE_MAX SQL_VARCHAR +#endif + +#if (ODBCVER < 0x0300) +#define SQL_NO_DATA_FOUND 100 +#define SQL_INTERVAL_YEAR (-80) +#define SQL_INTERVAL_MONTH (-81) +#define SQL_INTERVAL_YEAR_TO_MONTH (-82) +#define SQL_INTERVAL_DAY (-83) +#define SQL_INTERVAL_HOUR (-84) +#define SQL_INTERVAL_MINUTE (-85) +#define SQL_INTERVAL_SECOND (-86) +#define SQL_INTERVAL_DAY_TO_HOUR (-87) +#define SQL_INTERVAL_DAY_TO_MINUTE (-88) +#define SQL_INTERVAL_DAY_TO_SECOND (-89) +#define SQL_INTERVAL_HOUR_TO_MINUTE (-90) +#define SQL_INTERVAL_HOUR_TO_SECOND (-91) +#define SQL_INTERVAL_MINUTE_TO_SECOND (-92) +#else +#define SQL_NO_DATA_FOUND SQL_NO_DATA +#define SQL_CODE_YEAR 1 +#define SQL_CODE_MONTH 2 +#define SQL_CODE_DAY 3 +#define SQL_CODE_HOUR 4 +#define SQL_CODE_MINUTE 5 +#define SQL_CODE_SECOND 6 +#define SQL_CODE_YEAR_TO_MONTH 7 +#define SQL_CODE_DAY_TO_HOUR 8 +#define SQL_CODE_DAY_TO_MINUTE 9 +#define SQL_CODE_DAY_TO_SECOND 10 +#define SQL_CODE_HOUR_TO_MINUTE 11 +#define SQL_CODE_HOUR_TO_SECOND 12 +#define SQL_CODE_MINUTE_TO_SECOND 13 +#define SQL_INTERVAL_YEAR (100 + SQL_CODE_SECOND) +#define SQL_INTERVAL_MONTH (100 + SQL_CODE_YEAR_TO_MONTH) +#define SQL_INTERVAL_DAY (100 + SQL_CODE_DAY_TO_HOUR) +#define SQL_INTERVAL_HOUR (100 + SQL_CODE_DAY_TO_MINUTE) +#define SQL_INTERVAL_MINUTE (100 + SQL_CODE_DAY_TO_SECOND) +#define SQL_INTERVAL_SECOND (100 + SQL_CODE_HOUR_TO_MINUTE) +#define SQL_INTERVAL_YEAR_TO_MONTH (100 + SQL_CODE_HOUR_TO_SECOND) +#define SQL_INTERVAL_DAY_TO_HOUR (100 + SQL_CODE_MINUTE_TO_SECOND) +#define SQL_INTERVAL_DAY_TO_MINUTE (100 + SQL_CODE_DAY_TO_MINUTE) +#define SQL_INTERVAL_DAY_TO_SECOND (100 + SQL_CODE_DAY_TO_SECOND) +#define SQL_INTERVAL_HOUR_TO_MINUTE (100 + SQL_CODE_HOUR_TO_MINUTE) +#define SQL_INTERVAL_HOUR_TO_SECOND (100 + SQL_CODE_HOUR_TO_SECOND) +#define SQL_INTERVAL_MINUTE_TO_SECOND (100 + SQL_CODE_MINUTE_TO_SECOND) +#endif + +#if (ODBCVER <= 0x0300) +#define SQL_UNICODE (-95) +#define SQL_UNICODE_VARCHAR (-96) +#define SQL_UNICODE_LONGVARCHAR (-97) +#define SQL_UNICODE_CHAR SQL_UNICODE +#else +#define SQL_UNICODE SQL_WCHAR +#define SQL_UNICODE_VARCHAR SQL_WVARCHAR +#define SQL_UNICODE_LONGVARCHAR SQL_WLONGVARCHAR +#define SQL_UNICODE_CHAR SQL_WCHAR +#endif + +#if (ODBCVER >= 0x0201) && (ODBCVER < 0x0300) +#define SQL_OJ_CAPABILITIES 65003 +#endif /* ODBCVER < 0x0300 */ + +#if (ODBCVER >= 0x0250) +#define SQL_NO_ACTION 3 +#define SQL_SET_DEFAULT 4 +#endif /* ODBCVER >= 0x0250 */ + +#if (ODBCVER >= 0x0300) +#define SQL_ACTIVE_ENVIRONMENTS 116 +#define SQL_AD_ADD_CONSTRAINT_DEFERRABLE 0x00000080L +#define SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED 0x00000020L +#define SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000040L +#define SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE 0x00000100L +#define SQL_AD_ADD_DOMAIN_CONSTRAINT 0x00000002L +#define SQL_AD_ADD_DOMAIN_DEFAULT 0x00000008L +#define SQL_AD_CONSTRAINT_NAME_DEFINITION 0x00000001L +#define SQL_AD_DROP_DOMAIN_CONSTRAINT 0x00000004L +#define SQL_AD_DROP_DOMAIN_DEFAULT 0x00000010L +#define SQL_AF_ALL 0x00000040L +#define SQL_AF_AVG 0x00000001L +#define SQL_AF_COUNT 0x00000002L +#define SQL_AF_DISTINCT 0x00000020L +#define SQL_AF_MAX 0x00000004L +#define SQL_AF_MIN 0x00000008L +#define SQL_AF_SUM 0x00000010L +#define SQL_AGGREGATE_FUNCTIONS 169 +#define SQL_ALL_CATALOGS "%" +#define SQL_ALL_SCHEMAS "%" +#define SQL_ALL_TABLE_TYPES "%" +#define SQL_ALTER_DOMAIN 117 +#define SQL_AM_CONNECTION 1 +#define SQL_AM_NONE 0 +#define SQL_AM_STATEMENT 2 +#define SQL_API_ODBC3_ALL_FUNCTIONS 999 +#define SQL_API_ODBC3_ALL_FUNCTIONS_SIZE 250 +#define SQL_API_SQLALLOCHANDLESTD 73 +#define SQL_API_SQLBULKOPERATIONS 24 +#define SQL_ASYNC_MODE 10021 +#define SQL_AT_ADD_COLUMN_COLLATION 0x00000080L +#define SQL_AT_ADD_COLUMN_DEFAULT 0x00000040L +#define SQL_AT_ADD_COLUMN_SINGLE 0x00000020L +#define SQL_AT_ADD_TABLE_CONSTRAINT 0x00001000L +#define SQL_AT_CONSTRAINT_DEFERRABLE 0x00040000L +#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED 0x00010000L +#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00020000L +#define SQL_AT_CONSTRAINT_NAME_DEFINITION 0x00008000L +#define SQL_AT_CONSTRAINT_NON_DEFERRABLE 0x00080000L +#define SQL_AT_DROP_COLUMN_CASCADE 0x00000400L +#define SQL_AT_DROP_COLUMN_DEFAULT 0x00000200L +#define SQL_AT_DROP_COLUMN_RESTRICT 0x00000800L +#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE 0x00002000L +#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT 0x00004000L +#define SQL_AT_SET_COLUMN_DEFAULT 0x00000100L +#define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE +#define SQL_ATTR_ASYNC_ENABLE 4 +#define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT +#define SQL_ATTR_CONCURRENCY SQL_CONCURRENCY +#define SQL_ATTR_CONNECTION_POOLING 201 +#define SQL_ATTR_CONNECTION_TIMEOUT 113 +#define SQL_ATTR_CP_MATCH 202 +#define SQL_ATTR_CURRENT_CATALOG SQL_CURRENT_QUALIFIER +#define SQL_ATTR_CURSOR_TYPE SQL_CURSOR_TYPE +#define SQL_ATTR_DISCONNECT_BEHAVIOR 114 +#define SQL_ATTR_ENABLE_AUTO_IPD 15 +#define SQL_ATTR_ENLIST_IN_DTC 1207 +#define SQL_ATTR_ENLIST_IN_XA 1208 +#define SQL_ATTR_FETCH_BOOKMARK_PTR 16 +#define SQL_ATTR_KEYSET_SIZE SQL_KEYSET_SIZE +#define SQL_ATTR_LOGIN_TIMEOUT SQL_LOGIN_TIMEOUT +#define SQL_ATTR_MAX_LENGTH SQL_MAX_LENGTH +#define SQL_ATTR_MAX_ROWS SQL_MAX_ROWS +#define SQL_ATTR_NOSCAN SQL_NOSCAN +#define SQL_ATTR_ODBC_CURSORS SQL_ODBC_CURSORS +#define SQL_ATTR_ODBC_VERSION 200 +#define SQL_ATTR_PACKET_SIZE SQL_PACKET_SIZE +#define SQL_ATTR_PARAM_BIND_OFFSET_PTR 17 +#define SQL_ATTR_PARAM_BIND_TYPE 18 +#define SQL_ATTR_PARAM_OPERATION_PTR 19 +#define SQL_ATTR_PARAM_STATUS_PTR 20 +#define SQL_ATTR_PARAMS_PROCESSED_PTR 21 +#define SQL_ATTR_PARAMSET_SIZE 22 +#define SQL_ATTR_QUERY_TIMEOUT SQL_QUERY_TIMEOUT +#define SQL_ATTR_QUIET_MODE SQL_QUIET_MODE +#define SQL_ATTR_RETRIEVE_DATA SQL_RETRIEVE_DATA +#define SQL_ATTR_ROW_ARRAY_SIZE 27 +#define SQL_ATTR_ROW_BIND_OFFSET_PTR 23 +#define SQL_ATTR_ROW_BIND_TYPE SQL_BIND_TYPE +#define SQL_ATTR_ROW_NUMBER SQL_ROW_NUMBER +#define SQL_ATTR_ROW_OPERATION_PTR 24 +#define SQL_ATTR_ROW_STATUS_PTR 25 +#define SQL_ATTR_ROWS_FETCHED_PTR 26 +#define SQL_ATTR_SIMULATE_CURSOR SQL_SIMULATE_CURSOR +#define SQL_ATTR_TRACE SQL_OPT_TRACE +#define SQL_ATTR_TRACEFILE SQL_OPT_TRACEFILE +#define SQL_ATTR_TRANSLATE_LIB SQL_TRANSLATE_DLL +#define SQL_ATTR_TRANSLATE_OPTION SQL_TRANSLATE_OPTION +#define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION +#define SQL_ATTR_USE_BOOKMARKS SQL_USE_BOOKMARKS +#define SQL_BATCH_ROW_COUNT 120 +#define SQL_BATCH_SUPPORT 121 +#define SQL_BRC_EXPLICIT 0x0000002 +#define SQL_BRC_PROCEDURES 0x0000001 +#define SQL_BRC_ROLLED_UP 0x0000004 +#define SQL_BS_ROW_COUNT_EXPLICIT 0x00000002L +#define SQL_BS_ROW_COUNT_PROC 0x00000008L +#define SQL_BS_SELECT_EXPLICIT 0x00000001L +#define SQL_BS_SELECT_PROC 0x00000004L +#define SQL_C_INTERVAL_DAY SQL_INTERVAL_DAY +#define SQL_C_INTERVAL_DAY_TO_HOUR SQL_INTERVAL_DAY_TO_HOUR +#define SQL_C_INTERVAL_DAY_TO_MINUTE SQL_INTERVAL_DAY_TO_MINUTE +#define SQL_C_INTERVAL_DAY_TO_SECOND SQL_INTERVAL_DAY_TO_SECOND +#define SQL_C_INTERVAL_HOUR SQL_INTERVAL_HOUR +#define SQL_C_INTERVAL_HOUR_TO_MINUTE SQL_INTERVAL_HOUR_TO_MINUTE +#define SQL_C_INTERVAL_HOUR_TO_SECOND SQL_INTERVAL_HOUR_TO_SECOND +#define SQL_C_INTERVAL_MINUTE SQL_INTERVAL_MINUTE +#define SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_INTERVAL_MINUTE_TO_SECOND +#define SQL_C_INTERVAL_MONTH SQL_INTERVAL_MONTH +#define SQL_C_INTERVAL_SECOND SQL_INTERVAL_SECOND +#define SQL_C_INTERVAL_YEAR SQL_INTERVAL_YEAR +#define SQL_C_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_YEAR_TO_MONTH +#define SQL_C_NUMERIC SQL_NUMERIC +#define SQL_C_SBIGINT (SQL_BIGINT+SQL_SIGNED_OFFSET) +#define SQL_C_TYPE_DATE SQL_TYPE_DATE +#define SQL_C_TYPE_TIME SQL_TYPE_TIME +#define SQL_C_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP +#define SQL_C_UBIGINT (SQL_BIGINT+SQL_UNSIGNED_OFFSET) +#define SQL_C_VARBOOKMARK SQL_C_BINARY +#define SQL_CA_CONSTRAINT_DEFERRABLE 0x00000040L +#define SQL_CA_CONSTRAINT_INITIALLY_DEFERRED 0x00000010L +#define SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000020L +#define SQL_CA_CONSTRAINT_NON_DEFERRABLE 0x00000080L +#define SQL_CA_CREATE_ASSERTION 0x00000001L +#define SQL_CA1_ABSOLUTE 0x00000002L +#define SQL_CA1_BOOKMARK 0x00000008L +#define SQL_CA1_BULK_ADD 0x00010000L +#define SQL_CA1_BULK_DELETE_BY_BOOKMARK 0x00040000L +#define SQL_CA1_BULK_FETCH_BY_BOOKMARK 0x00080000L +#define SQL_CA1_BULK_UPDATE_BY_BOOKMARK 0x00020000L +#define SQL_CA1_LOCK_EXCLUSIVE 0x00000080L +#define SQL_CA1_LOCK_NO_CHANGE 0x00000040L +#define SQL_CA1_LOCK_UNLOCK 0x00000100L +#define SQL_CA1_NEXT 0x00000001L +#define SQL_CA1_POS_DELETE 0x00000800L +#define SQL_CA1_POS_POSITION 0x00000200L +#define SQL_CA1_POS_REFRESH 0x00001000L +#define SQL_CA1_POS_UPDATE 0x00000400L +#define SQL_CA1_POSITIONED_DELETE 0x00004000L +#define SQL_CA1_POSITIONED_UPDATE 0x00002000L +#define SQL_CA1_RELATIVE 0x00000004L +#define SQL_CA1_SELECT_FOR_UPDATE 0x00008000L +#define SQL_CA2_CRC_APPROXIMATE 0x00002000L +#define SQL_CA2_CRC_EXACT 0x00001000L +#define SQL_CA2_LOCK_CONCURRENCY 0x00000002L +#define 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) +#define SQL_CA2_MAX_ROWS_CATALOG 0x00000800L +#define SQL_CA2_MAX_ROWS_DELETE 0x00000200L +#define SQL_CA2_MAX_ROWS_INSERT 0x00000100L +#define SQL_CA2_MAX_ROWS_SELECT 0x00000080L +#define SQL_CA2_MAX_ROWS_UPDATE 0x00000400L +#define SQL_CA2_OPT_ROWVER_CONCURRENCY 0x00000004L +#define SQL_CA2_OPT_VALUES_CONCURRENCY 0x00000008L +#define SQL_CA2_READ_ONLY_CONCURRENCY 0x00000001L +#define SQL_CA2_SENSITIVITY_ADDITIONS 0x00000010L +#define SQL_CA2_SENSITIVITY_DELETIONS 0x00000020L +#define SQL_CA2_SENSITIVITY_UPDATES 0x00000040L +#define SQL_CA2_SIMULATE_NON_UNIQUE 0x00004000L +#define SQL_CA2_SIMULATE_TRY_UNIQUE 0x00008000L +#define SQL_CA2_SIMULATE_UNIQUE 0x00010000L +#define SQL_CATALOG_LOCATION SQL_QUALIFIER_LOCATION +#define SQL_CATALOG_NAME_SEPARATOR SQL_QUALIFIER_NAME_SEPARATOR +#define SQL_CATALOG_TERM SQL_QUALIFIER_TERM +#define SQL_CATALOG_USAGE SQL_QUALIFIER_USAGE +#define SQL_CCOL_CREATE_COLLATION 0x00000001L +#define SQL_CCS_COLLATE_CLAUSE 0x00000002L +#define SQL_CCS_CREATE_CHARACTER_SET 0x00000001L +#define SQL_CCS_LIMITED_COLLATION 0x00000004L +#define SQL_CDO_COLLATION 0x00000008L +#define SQL_CDO_CONSTRAINT 0x00000004L +#define SQL_CDO_CONSTRAINT_DEFERRABLE 0x00000080L +#define SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED 0x00000020L +#define SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000040L +#define SQL_CDO_CONSTRAINT_NAME_DEFINITION 0x00000010L +#define SQL_CDO_CONSTRAINT_NON_DEFERRABLE 0x00000100L +#define SQL_CDO_CREATE_DOMAIN 0x00000001L +#define SQL_CDO_DEFAULT 0x00000002L +#define SQL_CL_END SQL_QL_END +#define SQL_CL_START SQL_QL_START +#define SQL_COL_PRED_BASIC SQL_ALL_EXCEPT_LIKE +#define SQL_COL_PRED_CHAR SQL_LIKE_ONLY +#define SQL_COLUMN_DRIVER_START 1000 +#define SQL_COLUMN_IGNORE SQL_IGNORE +#define SQL_COLUMN_NUMBER_UNKNOWN (-2) +#define SQL_CONVERT_GUID 173 +#define SQL_CONVERT_INTERVAL_DAY_TIME 123 +#define SQL_CONVERT_INTERVAL_YEAR_MONTH 124 +#define SQL_CONVERT_WCHAR 122 +#define SQL_CONVERT_WLONGVARCHAR 125 +#define SQL_CONVERT_WVARCHAR 126 +#define SQL_CP_DEFAULT SQL_CP_OFF +#define SQL_CP_MATCH_DEFAULT SQL_CP_STRICT_MATCH +#define SQL_CP_OFF 0UL +#define SQL_CP_ONE_PER_DRIVER 1UL +#define SQL_CP_ONE_PER_HENV 2UL +#define SQL_CP_RELAXED_MATCH 1UL +#define SQL_CP_STRICT_MATCH 0UL +#define SQL_CREATE_ASSERTION 127 +#define SQL_CREATE_CHARACTER_SET 128 +#define SQL_CREATE_COLLATION 129 +#define SQL_CREATE_DOMAIN 130 +#define SQL_CREATE_SCHEMA 131 +#define SQL_CREATE_TABLE 132 +#define SQL_CREATE_TRANSLATION 133 +#define SQL_CREATE_VIEW 134 +#define SQL_CS_AUTHORIZATION 0x00000002L +#define SQL_CS_CREATE_SCHEMA 0x00000001L +#define SQL_CS_DEFAULT_CHARACTER_SET 0x00000004L +#define SQL_CT_COLUMN_COLLATION 0x00000800L +#define SQL_CT_COLUMN_CONSTRAINT 0x00000200L +#define SQL_CT_COLUMN_DEFAULT 0x00000400L +#define SQL_CT_COMMIT_DELETE 0x00000004L +#define SQL_CT_COMMIT_PRESERVE 0x00000002L +#define SQL_CT_CONSTRAINT_DEFERRABLE 0x00000080L +#define SQL_CT_CONSTRAINT_INITIALLY_DEFERRED 0x00000020L +#define SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00000040L +#define SQL_CT_CONSTRAINT_NAME_DEFINITION 0x00002000L +#define SQL_CT_CONSTRAINT_NON_DEFERRABLE 0x00000100L +#define SQL_CT_CREATE_TABLE 0x00000001L +#define SQL_CT_GLOBAL_TEMPORARY 0x00000008L +#define SQL_CT_LOCAL_TEMPORARY 0x00000010L +#define SQL_CT_TABLE_CONSTRAINT 0x00001000L +#define SQL_CTR_CREATE_TRANSLATION 0x00000001L +#define SQL_CU_DML_STATEMENTS SQL_QU_DML_STATEMENTS +#define SQL_CU_INDEX_DEFINITION SQL_QU_INDEX_DEFINITION +#define SQL_CU_PRIVILEGE_DEFINITION SQL_QU_PRIVILEGE_DEFINITION +#define SQL_CU_PROCEDURE_INVOCATION SQL_QU_PROCEDURE_INVOCATION +#define SQL_CU_TABLE_DEFINITION SQL_QU_TABLE_DEFINITION +#define SQL_CVT_GUID 0x1000000L +#define SQL_CVT_INTERVAL_DAY_TIME 0x00100000L +#define SQL_CVT_INTERVAL_YEAR_MONTH 0x00080000L +#define SQL_CVT_WCHAR 0x00200000L +#define SQL_CVT_WLONGVARCHAR 0x00400000L +#define SQL_CVT_WVARCHAR 0x00800000L +#define SQL_DA_DROP_ASSERTION 0x00000001L +#define SQL_DATETIME_LITERALS 119 +#define SQL_DB_DEFAULT SQL_DB_RETURN_TO_POOL +#define SQL_DB_DISCONNECT 1UL +#define SQL_DB_RETURN_TO_POOL 0UL +#define SQL_DC_DROP_COLLATION 0x00000001L +#define SQL_DCS_DROP_CHARACTER_SET 0x00000001L +#define SQL_DD_CASCADE 0x00000004L +#define SQL_DD_DROP_DOMAIN 0x00000001L +#define SQL_DD_RESTRICT 0x00000002L +#define SQL_DDL_INDEX 170 +#define SQL_DELETE_BY_BOOKMARK 6 +#define SQL_DESC_ARRAY_SIZE 20 +#define SQL_DESC_ARRAY_STATUS_PTR 21 +#define SQL_DESC_AUTO_UNIQUE_VALUE SQL_COLUMN_AUTO_INCREMENT +#define SQL_DESC_BASE_COLUMN_NAME 22 +#define SQL_DESC_BASE_TABLE_NAME 23 +#define SQL_DESC_BIND_OFFSET_PTR 24 +#define SQL_DESC_BIND_TYPE 25 +#define SQL_DESC_CASE_SENSITIVE SQL_COLUMN_CASE_SENSITIVE +#define SQL_DESC_CATALOG_NAME SQL_COLUMN_QUALIFIER_NAME +#define SQL_DESC_CONCISE_TYPE SQL_COLUMN_TYPE +#define SQL_DESC_DATETIME_INTERVAL_PRECISION 26 +#define SQL_DESC_DISPLAY_SIZE SQL_COLUMN_DISPLAY_SIZE +#define SQL_DESC_FIXED_PREC_SCALE SQL_COLUMN_MONEY +#define SQL_DESC_LABEL SQL_COLUMN_LABEL +#define SQL_DESC_LITERAL_PREFIX 27 +#define SQL_DESC_LITERAL_SUFFIX 28 +#define SQL_DESC_LOCAL_TYPE_NAME 29 +#define SQL_DESC_MAXIMUM_SCALE 30 +#define SQL_DESC_MINIMUM_SCALE 31 +#define SQL_DESC_NUM_PREC_RADIX 32 +#define SQL_DESC_PARAMETER_TYPE 33 +#define SQL_DESC_ROWS_PROCESSED_PTR 34 +#define SQL_DESC_SCHEMA_NAME SQL_COLUMN_OWNER_NAME +#define SQL_DESC_SEARCHABLE SQL_COLUMN_SEARCHABLE +#define SQL_DESC_TABLE_NAME SQL_COLUMN_TABLE_NAME +#define SQL_DESC_TYPE_NAME SQL_COLUMN_TYPE_NAME +#define SQL_DESC_UNSIGNED SQL_COLUMN_UNSIGNED +#define SQL_DESC_UPDATABLE SQL_COLUMN_UPDATABLE +#define SQL_DI_CREATE_INDEX 0x00000001L +#define SQL_DI_DROP_INDEX 0x00000002L +#define SQL_DIAG_COLUMN_NUMBER (-1247) +#define SQL_DIAG_CURSOR_ROW_COUNT (-1249) +#define SQL_DIAG_ROW_NUMBER (-1248) +#define SQL_DL_SQL92_DATE 0x00000001L +#define SQL_DL_SQL92_INTERVAL_DAY 0x00000020L +#define SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR 0x00000400L +#define SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE 0x00000800L +#define SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND 0x00001000L +#define SQL_DL_SQL92_INTERVAL_HOUR 0x00000040L +#define SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE 0x00002000L +#define SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND 0x00004000L +#define SQL_DL_SQL92_INTERVAL_MINUTE 0x00000080L +#define SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND 0x00008000L +#define SQL_DL_SQL92_INTERVAL_MONTH 0x00000010L +#define SQL_DL_SQL92_INTERVAL_SECOND 0x00000100L +#define SQL_DL_SQL92_INTERVAL_YEAR 0x00000008L +#define SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH 0x00000200L +#define SQL_DL_SQL92_TIME 0x00000002L +#define SQL_DL_SQL92_TIMESTAMP 0x00000004L +#define SQL_DM_VER 171 +#define SQL_DRIVER_HDESC 135 +#define SQL_DROP_ASSERTION 136 +#define SQL_DROP_CHARACTER_SET 137 +#define SQL_DROP_COLLATION 138 +#define SQL_DROP_DOMAIN 139 +#define SQL_DROP_SCHEMA 140 +#define SQL_DROP_TABLE 141 +#define SQL_DROP_TRANSLATION 142 +#define SQL_DROP_VIEW 143 +#define SQL_DS_CASCADE 0x00000004L +#define SQL_DS_DROP_SCHEMA 0x00000001L +#define SQL_DS_RESTRICT 0x00000002L +#define SQL_DT_CASCADE 0x00000004L +#define SQL_DT_DROP_TABLE 0x00000001L +#define SQL_DT_RESTRICT 0x00000002L +#define SQL_DTC_DONE 0L +#define SQL_DTR_DROP_TRANSLATION 0x00000001L +#define SQL_DV_CASCADE 0x00000004L +#define SQL_DV_DROP_VIEW 0x00000001L +#define SQL_DV_RESTRICT 0x00000002L +#define SQL_DYNAMIC_CURSOR_ATTRIBUTES1 144 +#define SQL_DYNAMIC_CURSOR_ATTRIBUTES2 145 +#define SQL_EXT_API_LAST SQL_API_SQLBINDPARAMETER +#define SQL_EXT_API_START 40 +#define SQL_FETCH_BY_BOOKMARK 7 +#define SQL_FETCH_FIRST_SYSTEM 32 +#define SQL_FETCH_FIRST_USER 31 +#define SQL_FN_CVT_CAST 0x00000002L +#define SQL_FN_STR_BIT_LENGTH 0x00080000L +#define SQL_FN_STR_CHAR_LENGTH 0x00100000L +#define SQL_FN_STR_CHARACTER_LENGTH 0x00200000L +#define SQL_FN_STR_OCTET_LENGTH 0x00400000L +#define SQL_FN_STR_POSITION 0x00800000L +#define SQL_FN_TD_CURRENT_DATE 0x00020000L +#define SQL_FN_TD_CURRENT_TIME 0x00040000L +#define SQL_FN_TD_CURRENT_TIMESTAMP 0x00080000L +#define SQL_FN_TD_EXTRACT 0x00100000L +#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 146 +#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 147 +#define SQL_FUNC_EXISTS(exists, api) \ + ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? \ + SQL_TRUE : SQL_FALSE ) +#define SQL_GB_COLLATE 0x0004 +#define SQL_HANDLE_SENV 5 +#define SQL_IK_ALL (SQL_IK_ASC | SQL_IK_DESC) +#define SQL_IK_ASC 1 +#define SQL_IK_DESC 2 +#define SQL_IK_NONE 0 +#define SQL_INDEX_KEYWORDS 148 +#define SQL_INFO_DRIVER_START 1000 +#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION +#define SQL_INFO_SCHEMA_VIEWS 149 +#define SQL_INITIALLY_DEFERRED 5 +#define SQL_INITIALLY_IMMEDIATE 6 +#define SQL_INSERT_STATEMENT 172 +#define SQL_INTERVAL 10 +#define SQL_IS_INSERT_LITERALS 0x00000001L +#define SQL_IS_INSERT_SEARCHED 0x00000002L +#define SQL_IS_INTEGER (-6) +#define SQL_IS_POINTER (-4) +#define SQL_IS_SELECT_INTO 0x00000004L +#define SQL_IS_SMALLINT (-8) +#define SQL_IS_UINTEGER (-5) +#define SQL_IS_USMALLINT (-7) +#define SQL_ISV_ASSERTIONS 0x00000001L +#define SQL_ISV_CHARACTER_SETS 0x00000002L +#define SQL_ISV_CHECK_CONSTRAINTS 0x00000004L +#define SQL_ISV_COLLATIONS 0x00000008L +#define SQL_ISV_COLUMN_DOMAIN_USAGE 0x00000010L +#define SQL_ISV_COLUMN_PRIVILEGES 0x00000020L +#define SQL_ISV_COLUMNS 0x00000040L +#define SQL_ISV_CONSTRAINT_COLUMN_USAGE 0x00000080L +#define SQL_ISV_CONSTRAINT_TABLE_USAGE 0x00000100L +#define SQL_ISV_DOMAIN_CONSTRAINTS 0x00000200L +#define SQL_ISV_DOMAINS 0x00000400L +#define SQL_ISV_KEY_COLUMN_USAGE 0x00000800L +#define SQL_ISV_REFERENTIAL_CONSTRAINTS 0x00001000L +#define SQL_ISV_SCHEMATA 0x00002000L +#define SQL_ISV_SQL_LANGUAGES 0x00004000L +#define SQL_ISV_TABLE_CONSTRAINTS 0x00008000L +#define SQL_ISV_TABLE_PRIVILEGES 0x00010000L +#define SQL_ISV_TABLES 0x00020000L +#define SQL_ISV_TRANSLATIONS 0x00040000L +#define SQL_ISV_USAGE_PRIVILEGES 0x00080000L +#define SQL_ISV_VIEW_COLUMN_USAGE 0x00100000L +#define SQL_ISV_VIEW_TABLE_USAGE 0x00200000L +#define SQL_ISV_VIEWS 0x00400000L +#define SQL_KEYSET_CURSOR_ATTRIBUTES1 150 +#define SQL_KEYSET_CURSOR_ATTRIBUTES2 151 +#define SQL_MAX_ASYNC_CONCURRENT_STATEMENTS 10022 +#define SQL_NO_COLUMN_NUMBER (-1) +#define SQL_NO_ROW_NUMBER (-1) +#define SQL_NOT_DEFERRABLE 7 +#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1) +#define SQL_NUM_FUNCTIONS 23 +#define SQL_ODBC_INTERFACE_CONFORMANCE 152 +#define SQL_OIC_CORE 1UL +#define SQL_OIC_LEVEL1 2UL +#define SQL_OIC_LEVEL2 3UL +#define SQL_OV_ODBC2 2UL +#define SQL_OV_ODBC3 3UL +#define SQL_PARAM_ARRAY_ROW_COUNTS 153 +#define SQL_PARAM_ARRAY_SELECTS 154 +#define SQL_PARAM_BIND_BY_COLUMN 0UL +#define SQL_PARAM_BIND_TYPE_DEFAULT SQL_PARAM_BIND_BY_COLUMN +#define SQL_PARAM_DIAG_UNAVAILABLE 1 +#define SQL_PARAM_ERROR 5 +#define SQL_PARAM_IGNORE 1 +#define SQL_PARAM_PROCEED 0 +#define SQL_PARAM_SUCCESS 0 +#define SQL_PARAM_SUCCESS_WITH_INFO 6 +#define SQL_PARAM_UNUSED 7 +#define SQL_PARC_BATCH 1 +#define SQL_PARC_NO_BATCH 2 +#define SQL_PAS_BATCH 1 +#define SQL_PAS_NO_BATCH 2 +#define SQL_PAS_NO_SELECT 3 +#define SQL_ROW_IGNORE 1 +#define SQL_ROW_NUMBER_UNKNOWN (-2) +#define SQL_ROW_PROCEED 0 +#define SQL_ROW_SUCCESS_WITH_INFO 6 +#define SQL_SC_FIPS127_2_TRANSITIONAL 0x00000002L +#define SQL_SC_SQL92_ENTRY 0x00000001L +#define SQL_SC_SQL92_FULL 0x00000008L +#define SQL_SC_SQL92_INTERMEDIATE 0x00000004L +#define SQL_SCC_ISO92_CLI 0x00000002L +#define SQL_SCC_XOPEN_CLI_VERSION1 0x00000001L +#define SQL_SCHEMA_TERM SQL_OWNER_TERM +#define SQL_SCHEMA_USAGE SQL_OWNER_USAGE +#define SQL_SDF_CURRENT_DATE 0x00000001L +#define SQL_SDF_CURRENT_TIME 0x00000002L +#define SQL_SDF_CURRENT_TIMESTAMP 0x00000004L +#define SQL_SFKD_CASCADE 0x00000001L +#define SQL_SFKD_NO_ACTION 0x00000002L +#define SQL_SFKD_SET_DEFAULT 0x00000004L +#define SQL_SFKD_SET_NULL 0x00000008L +#define SQL_SFKU_CASCADE 0x00000001L +#define SQL_SFKU_NO_ACTION 0x00000002L +#define SQL_SFKU_SET_DEFAULT 0x00000004L +#define SQL_SFKU_SET_NULL 0x00000008L +#define SQL_SG_DELETE_TABLE 0x00000020L +#define SQL_SG_INSERT_COLUMN 0x00000080L +#define SQL_SG_INSERT_TABLE 0x00000040L +#define SQL_SG_REFERENCES_COLUMN 0x00000200L +#define SQL_SG_REFERENCES_TABLE 0x00000100L +#define SQL_SG_SELECT_TABLE 0x00000400L +#define SQL_SG_UPDATE_COLUMN 0x00001000L +#define SQL_SG_UPDATE_TABLE 0x00000800L +#define SQL_SG_USAGE_ON_CHARACTER_SET 0x00000002L +#define SQL_SG_USAGE_ON_COLLATION 0x00000004L +#define SQL_SG_USAGE_ON_DOMAIN 0x00000001L +#define SQL_SG_USAGE_ON_TRANSLATION 0x00000008L +#define SQL_SG_WITH_GRANT_OPTION 0x00000010L +#define SQL_SNVF_BIT_LENGTH 0x00000001L +#define SQL_SNVF_CHAR_LENGTH 0x00000002L +#define SQL_SNVF_CHARACTER_LENGTH 0x00000004L +#define SQL_SNVF_EXTRACT 0x00000008L +#define SQL_SNVF_OCTET_LENGTH 0x00000010L +#define SQL_SNVF_POSITION 0x00000020L +#define SQL_SP_BETWEEN 0x00000800L +#define SQL_SP_COMPARISON 0x00001000L +#define SQL_SP_EXISTS 0x00000001L +#define SQL_SP_IN 0x00000400L +#define SQL_SP_ISNOTNULL 0x00000002L +#define SQL_SP_ISNULL 0x00000004L +#define SQL_SP_LIKE 0x00000200L +#define SQL_SP_MATCH_FULL 0x00000008L +#define SQL_SP_MATCH_PARTIAL 0x00000010L +#define SQL_SP_MATCH_UNIQUE_FULL 0x00000020L +#define SQL_SP_MATCH_UNIQUE_PARTIAL 0x00000040L +#define SQL_SP_OVERLAPS 0x00000080L +#define SQL_SP_QUANTIFIED_COMPARISON 0x00002000L +#define SQL_SP_UNIQUE 0x00000100L +#define SQL_SQL_CONFORMANCE 118 +#define SQL_SQL92_DATETIME_FUNCTIONS 155 +#define SQL_SQL92_FOREIGN_KEY_DELETE_RULE 156 +#define SQL_SQL92_FOREIGN_KEY_UPDATE_RULE 157 +#define SQL_SQL92_GRANT 158 +#define SQL_SQL92_NUMERIC_VALUE_FUNCTIONS 159 +#define SQL_SQL92_PREDICATES 160 +#define SQL_SQL92_RELATIONAL_JOIN_OPERATORS 161 +#define SQL_SQL92_REVOKE 162 +#define SQL_SQL92_ROW_VALUE_CONSTRUCTOR 163 +#define SQL_SQL92_STRING_FUNCTIONS 164 +#define SQL_SQL92_VALUE_EXPRESSIONS 165 +#define SQL_SR_CASCADE 0x00000020L +#define SQL_SR_DELETE_TABLE 0x00000080L +#define SQL_SR_GRANT_OPTION_FOR 0x00000010L +#define SQL_SR_INSERT_COLUMN 0x00000200L +#define SQL_SR_INSERT_TABLE 0x00000100L +#define SQL_SR_REFERENCES_COLUMN 0x00000800L +#define SQL_SR_REFERENCES_TABLE 0x00000400L +#define SQL_SR_RESTRICT 0x00000040L +#define SQL_SR_SELECT_TABLE 0x00001000L +#define SQL_SR_UPDATE_COLUMN 0x00004000L +#define SQL_SR_UPDATE_TABLE 0x00002000L +#define SQL_SR_USAGE_ON_CHARACTER_SET 0x00000002L +#define SQL_SR_USAGE_ON_COLLATION 0x00000004L +#define SQL_SR_USAGE_ON_DOMAIN 0x00000001L +#define SQL_SR_USAGE_ON_TRANSLATION 0x00000008L +#define SQL_SRJO_CORRESPONDING_CLAUSE 0x00000001L +#define SQL_SRJO_CROSS_JOIN 0x00000002L +#define SQL_SRJO_EXCEPT_JOIN 0x00000004L +#define SQL_SRJO_FULL_OUTER_JOIN 0x00000008L +#define SQL_SRJO_INNER_JOIN 0x00000010L +#define SQL_SRJO_INTERSECT_JOIN 0x00000020L +#define SQL_SRJO_LEFT_OUTER_JOIN 0x00000040L +#define SQL_SRJO_NATURAL_JOIN 0x00000080L +#define SQL_SRJO_RIGHT_OUTER_JOIN 0x00000100L +#define SQL_SRJO_UNION_JOIN 0x00000200L +#define SQL_SRVC_DEFAULT 0x00000004L +#define SQL_SRVC_NULL 0x00000002L +#define SQL_SRVC_ROW_SUBQUERY 0x00000008L +#define SQL_SRVC_VALUE_EXPRESSION 0x00000001L +#define SQL_SSF_CONVERT 0x00000001L +#define SQL_SSF_LOWER 0x00000002L +#define SQL_SSF_SUBSTRING 0x00000008L +#define SQL_SSF_TRANSLATE 0x00000010L +#define SQL_SSF_TRIM_BOTH 0x00000020L +#define SQL_SSF_TRIM_LEADING 0x00000040L +#define SQL_SSF_TRIM_TRAILING 0x00000080L +#define SQL_SSF_UPPER 0x00000004L +#define SQL_STANDARD_CLI_CONFORMANCE 166 +#define SQL_STATIC_CURSOR_ATTRIBUTES1 167 +#define SQL_STATIC_CURSOR_ATTRIBUTES2 168 +#define SQL_SU_DML_STATEMENTS SQL_OU_DML_STATEMENTS +#define SQL_SU_INDEX_DEFINITION SQL_OU_INDEX_DEFINITION +#define SQL_SU_PRIVILEGE_DEFINITION SQL_OU_PRIVILEGE_DEFINITION +#define SQL_SU_PROCEDURE_INVOCATION SQL_OU_PROCEDURE_INVOCATION +#define SQL_SU_TABLE_DEFINITION SQL_OU_TABLE_DEFINITION +#define SQL_SVE_CASE 0x00000001L +#define SQL_SVE_CAST 0x00000002L +#define SQL_SVE_COALESCE 0x00000004L +#define SQL_SVE_NULLIF 0x00000008L +#define SQL_UB_FIXED SQL_UB_ON +#define SQL_UB_VARIABLE 2UL +#define SQL_UNION_STATEMENT SQL_UNION +#define SQL_UPDATE_BY_BOOKMARK 5 +#define SQL_US_UNION SQL_U_UNION +#define SQL_US_UNION_ALL SQL_U_UNION_ALL +#endif /* ODBCVER >= 0x300 */ +#if (ODBCVER >= 0x0350) +#define SQL_DESC_ROWVER 35 +#define SQL_GUID (-11) +#define 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 */ +#if (ODBCVER >= 0x0351) +#define SQL_ATTR_ANSI_APP 115 +#define SQL_AA_TRUE 1L +#define SQL_AA_FALSE 0L +#endif + +#define TRACE_VERSION 1000 +#define TRACE_ON 1 + +#ifndef RC_INVOKED +#define 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" + +SQLRETURN SQL_API SQLDriverConnect(SQLHDBC,SQLHWND,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT); +SQLRETURN SQL_API SQLBrowseConnect(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLColumnPrivileges(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLColAttributes(SQLHSTMT,SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); +SQLRETURN SQL_API SQLDescribeParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*); +SQLRETURN SQL_API SQLExtendedFetch(SQLHSTMT,SQLUSMALLINT,SQLINTEGER,SQLUINTEGER*,SQLUSMALLINT*); +SQLRETURN SQL_API SQLForeignKeys(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLMoreResults(SQLHSTMT); +SQLRETURN SQL_API SQLNativeSql(SQLHDBC,SQLCHAR*,SQLINTEGER,SQLCHAR*,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLNumParams(SQLHSTMT,SQLSMALLINT*); +SQLRETURN SQL_API SQLParamOptions(SQLHSTMT,SQLUINTEGER,SQLUINTEGER*); +SQLRETURN SQL_API SQLPrimaryKeys(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLProcedureColumns(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLProcedures(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLSetPos(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLUSMALLINT); +SQLRETURN SQL_API SQLTablePrivileges(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLDrivers(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLBindParameter(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*); +SQLRETURN SQL_API SQLSetScrollOptions(SQLHSTMT,SQLUSMALLINT,SQLLEN,SQLUSMALLINT); /* deprecated */ +DWORD SQL_API ODBCGetTryWaitValue(void); +BOOL SQL_API ODBCSetTryWaitValue(DWORD); +RETCODE SQL_API TraceOpenLogFile(LPWSTR,LPWSTR,DWORD); +RETCODE SQL_API TraceCloseLogFile(void); +VOID SQL_API TraceReturn(RETCODE,RETCODE); +DWORD SQL_API TraceVersion(void); +#if (ODBCVER >= 0x0300) +SQLRETURN SQL_API SQLBulkOperations(SQLHSTMT,SQLSMALLINT); +SQLRETURN SQL_API SQLAllocHandleStd( SQLSMALLINT,SQLHANDLE,SQLHANDLE*); +#endif +#endif /* ndef RC_INVOKED */ +#include +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/sqltypes.h b/reactos/w32api/include/sqltypes.h new file mode 100644 index 00000000000..fcc713550c9 --- /dev/null +++ b/reactos/w32api/include/sqltypes.h @@ -0,0 +1,165 @@ +#ifndef _SQLTYPES_H +#define _SQLTYPES_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define SQL_API __stdcall +#ifndef RC_INVOKED +#define __need_wchar_t +#include +typedef signed char SCHAR; +typedef long SDWORD; +typedef short SWORD; +typedef ULONG UDWORD; +typedef USHORT UWORD; +typedef signed long SLONG; +typedef signed short SSHORT; +typedef double SDOUBLE; +typedef double LDOUBLE; +typedef float SFLOAT; +typedef PVOID PTR; +typedef PVOID HENV; +typedef PVOID HDBC; +typedef PVOID HSTMT; +typedef short RETCODE; +typedef UCHAR SQLCHAR; +typedef SCHAR SQLSCHAR; +typedef SDWORD SQLINTEGER; +typedef SWORD SQLSMALLINT; +#ifndef __WIN64 +typedef UDWORD SQLUINTEGER; +#endif +typedef UWORD SQLUSMALLINT; +typedef PVOID SQLPOINTER; +#if (ODBCVER >= 0x0300) +typedef void* SQLHANDLE; +typedef SQLHANDLE SQLHENV; +typedef SQLHANDLE SQLHDBC; +typedef SQLHANDLE SQLHSTMT; +typedef SQLHANDLE SQLHDESC; +#else +typedef void* SQLHENV; +typedef void* SQLHDBC; +typedef void* SQLHSTMT; +#endif +typedef SQLSMALLINT SQLRETURN; +typedef HWND SQLHWND; +typedef ULONG BOOKMARK; +#ifdef _WIN64 +typedef INT64 SQLLEN; +typedef INT64 SQLROWOFFSET; +typedef UINT64 SQLROWCOUNT; +typedef UINT64 SQLULEN; +typedef UINT64 SQLTRANSID; +typedef unsigned long SQLSETPOSIROW; +#else +#define SQLLEN SQLINTEGER +#define SQLROWOFFSET SQLINTEGER +#define SQLROWCOUNT SQLUINTEGER +#define SQLULEN SQLUINTEGER +#define SQLTRANSID DWORD +#define SQLSETPOSIROW SQLUSMALLINT +#endif +typedef wchar_t SQLWCHAR; +#ifdef UNICODE +typedef SQLWCHAR SQLTCHAR; +#else +typedef SQLCHAR SQLTCHAR; +#endif /* UNICODE */ +#if (ODBCVER >= 0x0300) +typedef unsigned char SQLDATE; +typedef unsigned char SQLDECIMAL; +typedef double SQLDOUBLE; +typedef double SQLFLOAT; +typedef unsigned char SQLNUMERIC; +typedef float SQLREAL; +typedef unsigned char SQLTIME; +typedef unsigned char SQLTIMESTAMP; +typedef unsigned char SQLVARCHAR; +#define ODBCINT64 __int64 +typedef __int64 SQLBIGINT; +typedef unsigned __int64 SQLUBIGINT; +#endif + +typedef struct tagDATE_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; +} DATE_STRUCT; +typedef struct tagTIME_STRUCT { + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; +} TIME_STRUCT; +typedef struct tagTIMESTAMP_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; + SQLUINTEGER fraction; +} TIMESTAMP_STRUCT; +#if (ODBCVER >= 0x0300) +typedef DATE_STRUCT SQL_DATE_STRUCT; +typedef TIME_STRUCT SQL_TIME_STRUCT; +typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; +typedef enum { + 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 +} SQLINTERVAL; +typedef struct tagSQL_YEAR_MONTH { + SQLUINTEGER year; + SQLUINTEGER month; +} SQL_YEAR_MONTH_STRUCT; +typedef struct tagSQL_DAY_SECOND { + SQLUINTEGER day; + SQLUINTEGER hour; + SQLUINTEGER minute; + SQLUINTEGER second; + SQLUINTEGER fraction; +} SQL_DAY_SECOND_STRUCT; +typedef struct tagSQL_INTERVAL_STRUCT { + SQLINTERVAL interval_type; + SQLSMALLINT interval_sign; + union { + SQL_YEAR_MONTH_STRUCT year_month; + SQL_DAY_SECOND_STRUCT day_second; + } intval; +} SQL_INTERVAL_STRUCT; +#define SQL_MAX_NUMERIC_LEN 16 +typedef struct tagSQL_NUMERIC_STRUCT { + SQLCHAR precision; + SQLSCHAR scale; + SQLCHAR sign; + SQLCHAR val[SQL_MAX_NUMERIC_LEN]; +} SQL_NUMERIC_STRUCT; +#endif /* ODBCVER >= 0x0300 */ +#if (ODBCVER >= 0x0350) + +#ifdef _GUID_DEFINED +# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead +#endif + +#if defined _GUID_DEFINED || defined GUID_DEFINED +typedef GUID SQLGUID; +#else +typedef struct tagSQLGUID{ + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[ 8 ]; +} SQLGUID; +#endif /* GUID_DEFINED */ +#endif /* ODBCVER >= 0x0350 */ +#endif /* RC_INVOKED */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/sqlucode.h b/reactos/w32api/include/sqlucode.h new file mode 100644 index 00000000000..688ced2c7a8 --- /dev/null +++ b/reactos/w32api/include/sqlucode.h @@ -0,0 +1,142 @@ +#ifndef _SQLUCODE_H +#define _SQLUCODE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#define SQL_WCHAR (-8) +#define SQL_WVARCHAR (-9) +#define SQL_WLONGVARCHAR (-10) +#define SQL_C_WCHAR SQL_WCHAR +#define SQL_SQLSTATE_SIZEW 10 +#ifdef UNICODE +#define SQL_C_TCHAR SQL_C_WCHAR +#else +#define SQL_C_TCHAR SQL_C_CHAR +#endif +#ifndef RC_INVOKED +SQLRETURN SQL_API SQLBrowseConnectA(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLBrowseConnectW(SQLHDBC,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLColAttributeA(SQLHSTMT,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLPOINTER); +SQLRETURN SQL_API SQLColAttributeW(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLPOINTER); +SQLRETURN SQL_API SQLColAttributesA(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*); +SQLRETURN SQL_API SQLColAttributesW(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLLEN*); +SQLRETURN SQL_API SQLColumnPrivilegesA( SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLCHAR*,SQLSMALLINT ); +SQLRETURN SQL_API SQLColumnPrivilegesW( SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ); +SQLRETURN SQL_API SQLColumnsA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLCHAR*,SQLSMALLINT ); +SQLRETURN SQL_API SQLColumnsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLWCHAR*,SQLSMALLINT ); +SQLRETURN SQL_API SQLConnectA(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLConnectW(SQLHDBC,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLDataSourcesA(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLDataSourcesW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLDescribeColA(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*); +SQLRETURN SQL_API SQLDescribeColW(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*); +SQLRETURN SQL_API SQLDriverConnectA(SQLHDBC,SQLHWND,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT); +SQLRETURN SQL_API SQLDriverConnectW(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT); +SQLRETURN SQL_API SQLDriversA(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLDriversW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLErrorA(SQLHENV,SQLHDBC,SQLHSTMT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLErrorW(SQLHENV,SQLHDBC,SQLHSTMT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLExecDirectA(SQLHSTMT,SQLCHAR*,SQLINTEGER); +SQLRETURN SQL_API SQLExecDirectW(SQLHSTMT,SQLWCHAR*,SQLINTEGER); +SQLRETURN SQL_API SQLForeignKeysA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLForeignKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLGetConnectAttrA(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLGetConnectAttrW(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLGetConnectOptionA(SQLHDBC,SQLUSMALLINT,SQLPOINTER); +SQLRETURN SQL_API SQLGetConnectOptionW(SQLHDBC,SQLUSMALLINT,SQLPOINTER); +SQLRETURN SQL_API SQLGetCursorNameA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetCursorNameW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetInfoA(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetInfoW(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetTypeInfoA(SQLHSTMT,SQLSMALLINT); +SQLRETURN SQL_API SQLGetTypeInfoW(SQLHSTMT,SQLSMALLINT); +SQLRETURN SQL_API SQLNativeSqlA(SQLHDBC,SQLCHAR*,SQLINTEGER,SQLCHAR*,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLNativeSqlW(SQLHDBC,SQLWCHAR*,SQLINTEGER,SQLWCHAR*,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLPrepareA(SQLHSTMT,SQLCHAR*,SQLINTEGER); +SQLRETURN SQL_API SQLPrepareW(SQLHSTMT,SQLWCHAR*,SQLINTEGER); +SQLRETURN SQL_API SQLPrimaryKeysA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ); +SQLRETURN SQL_API SQLPrimaryKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLProcedureColumnsA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLProcedureColumnsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLProceduresA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLProceduresW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLSetConnectAttrA(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLSetConnectAttrW(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLSetConnectOptionA(SQLHDBC,SQLUSMALLINT,SQLULEN); +SQLRETURN SQL_API SQLSetConnectOptionW(SQLHDBC,SQLUSMALLINT,SQLULEN); +SQLRETURN SQL_API SQLSetCursorNameA(SQLHSTMT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLSetCursorNameW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLSpecialColumnsA(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT); +SQLRETURN SQL_API SQLSpecialColumnsW(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT); +SQLRETURN SQL_API SQLStatisticsA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT); +SQLRETURN SQL_API SQLStatisticsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLUSMALLINT,SQLUSMALLINT); +SQLRETURN SQL_API SQLTablePrivilegesA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLTablePrivilegesW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ); +SQLRETURN SQL_API SQLTablesA(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT); +SQLRETURN SQL_API SQLTablesW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT); +#if (ODBCVER >= 0x0300) +SQLRETURN SQL_API SQLGetDescFieldA(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLGetDescFieldW(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLSetDescFieldA(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLSetDescFieldW(SQLHDESC,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLGetDescRecA(SQLHDESC,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetDescRecW(SQLHDESC,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*,SQLLEN*,SQLSMALLINT*,SQLSMALLINT*,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetDiagFieldA(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetDiagFieldW(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetDiagRecA(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetDiagRecW(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*); +SQLRETURN SQL_API SQLGetStmtAttrA(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLGetStmtAttrW(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*); +SQLRETURN SQL_API SQLSetStmtAttrA(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER); +SQLRETURN SQL_API SQLSetStmtAttrW(SQLHSTMT,SQLINTEGER,SQLPOINTER,SQLINTEGER); +#endif /* (ODBCVER >= 0x0300) */ + +#if defined (UNICODE) && !defined (SQL_NOUNICODEMAP) +#define SQLBrowseConnect SQLBrowseConnectW +#define SQLColAttribute SQLColAttributeW +#define SQLColAttributes SQLColAttributesW +#define SQLColumnPrivileges SQLColumnPrivilegesW +#define SQLColumns SQLColumnsW +#define SQLConnect SQLConnectW +#define SQLDataSources SQLDataSourcesW +#define SQLDescribeCol SQLDescribeColW +#define SQLDriverConnect SQLDriverConnectW +#define SQLDrivers SQLDriversW +#define SQLError SQLErrorW +#define SQLExecDirect SQLExecDirectW +#define SQLForeignKeys SQLForeignKeysW +#define SQLGetConnectAttr SQLGetConnectAttrW +#define SQLGetConnectOption SQLGetConnectOptionW +#define SQLGetCursorName SQLGetCursorNameW +#define SQLGetDescField SQLGetDescFieldW +#define SQLGetDescRec SQLGetDescRecW +#define SQLGetDiagField SQLGetDiagFieldW +#define SQLGetDiagRec SQLGetDiagRecW +#define SQLGetInfo SQLGetInfoW +#define SQLGetStmtAttr SQLGetStmtAttrW +#define SQLGetTypeInfo SQLGetTypeInfoW +#define SQLNativeSql SQLNativeSqlW +#define SQLPrepare SQLPrepareW +#define SQLPrimaryKeys SQLPrimaryKeysW +#define SQLProcedureColumns SQLProcedureColumnsW +#define SQLProcedures SQLProceduresW +#define SQLSetConnectAttr SQLSetConnectAttrW +#define SQLSetConnectOption SQLSetConnectOptionW +#define SQLSetCursorName SQLSetCursorNameW +#define SQLSetDescField SQLSetDescFieldW +#define SQLSetStmtAttr SQLSetStmtAttrW +#define SQLSpecialColumns SQLSpecialColumnsW +#define SQLStatistics SQLStatisticsW +#define SQLTablePrivileges SQLTablePrivilegesW +#define SQLTables SQLTablesW +#endif /* UNICODE && ! SQL_NOUNICODEMAP */ +#endif /* RC_INVOKED */ +#ifdef __cplusplus +} +#endif /* __cplusplus*/ +#endif /* ndef _SQLUCODE_H */ diff --git a/reactos/w32api/include/sspi.h b/reactos/w32api/include/sspi.h new file mode 100644 index 00000000000..7f63e1ca7be --- /dev/null +++ b/reactos/w32api/include/sspi.h @@ -0,0 +1,338 @@ +#ifndef _SSPI_H +#define _SSPI_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SECPKG_CRED_INBOUND 1 +#define SECPKG_CRED_OUTBOUND 2 +#define SECPKG_CRED_BOTH (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND) +#define SECPKG_CRED_ATTR_NAMES 1 + +#define SECPKG_FLAG_INTEGRITY 1 +#define SECPKG_FLAG_PRIVACY 2 +#define SECPKG_FLAG_TOKEN_ONLY 4 +#define SECPKG_FLAG_DATAGRAM 8 +#define SECPKG_FLAG_CONNECTION 16 +#define SECPKG_FLAG_MULTI_REQUIRED 32 +#define SECPKG_FLAG_CLIENT_ONLY 64 +#define SECPKG_FLAG_EXTENDED_ERROR 128 +#define SECPKG_FLAG_IMPERSONATION 256 +#define SECPKG_FLAG_ACCEPT_WIN32_NAME 512 +#define SECPKG_FLAG_STREAM 1024 + +#define SECPKG_ATTR_AUTHORITY 6 +#define SECPKG_ATTR_CONNECTION_INFO 90 +#define SECPKG_ATTR_ISSUER_LIST 80 +#define SECPKG_ATTR_ISSUER_LIST_EX 89 +#define SECPKG_ATTR_KEY_INFO 5 +#define SECPKG_ATTR_LIFESPAN 2 +#define SECPKG_ATTR_LOCAL_CERT_CONTEXT 84 +#define SECPKG_ATTR_LOCAL_CRED 82 +#define SECPKG_ATTR_NAMES 1 +#define SECPKG_ATTR_PROTO_INFO 7 +#define SECPKG_ATTR_REMOTE_CERT_CONTEXT 83 +#define SECPKG_ATTR_REMOTE_CRED 81 +#define SECPKG_ATTR_SIZES 0 +#define SECPKG_ATTR_STREAM_SIZES 4 + +#define SECBUFFER_EMPTY 0 +#define SECBUFFER_DATA 1 +#define SECBUFFER_TOKEN 2 +#define SECBUFFER_PKG_PARAMS 3 +#define SECBUFFER_MISSING 4 +#define SECBUFFER_EXTRA 5 +#define SECBUFFER_STREAM_TRAILER 6 +#define SECBUFFER_STREAM_HEADER 7 +#define SECBUFFER_PADDING 9 +#define SECBUFFER_STREAM 10 +#define SECBUFFER_READONLY 0x80000000 +#define SECBUFFER_ATTRMASK 0xf0000000 + +#define UNISP_NAME_A "Microsoft Unified Security Protocol Provider" +#define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider" +#define SECBUFFER_VERSION 0 + +typedef struct _SecHandle { + ULONG_PTR dwLower; + ULONG_PTR dwUpper; +} SecHandle, *PSecHandle; +typedef struct _SecBuffer { + ULONG cbBuffer; + ULONG BufferType; + PVOID pvBuffer; +} SecBuffer, *PSecBuffer; +typedef SecHandle CredHandle; +typedef PSecHandle PCredHandle; +typedef SecHandle CtxtHandle; +typedef PSecHandle PCtxtHandle; +typedef struct _SECURITY_INTEGER { + unsigned long LowPart; + long HighPart; +} SECURITY_INTEGER; +typedef SECURITY_INTEGER TimeStamp, *PTimeStamp; +typedef struct _SecBufferDesc { + ULONG ulVersion; + ULONG cBuffers; + PSecBuffer pBuffers; +} SecBufferDesc, *PSecBufferDesc; +typedef struct _SecPkgContext_StreamSizes { + ULONG cbHeader; + ULONG cbTrailer; + ULONG cbMaximumMessage; + ULONG cBuffers; + ULONG cbBlockSize; +} SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes; +typedef struct _SecPkgContext_Sizes { + ULONG cbMaxToken; + ULONG cbMaxSIgnature; + ULONG cbBlockSize; + ULONG cbSecurityTrailer; +} SecPkgContext_Sizes, *PSecPkgContext_Sizes; +typedef struct _SecPkgContext_AuthorityW { + SEC_WCHAR* sAuthorityName; +} SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW; +typedef struct _SecPkgContext_AuthorityA { + SEC_CHAR* sAuthorityName; +} SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA; +typedef struct _SecPkgContext_KeyInfoW { + SEC_WCHAR* sSignatureAlgorithmName; + SEC_WCHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW; +typedef struct _SecPkgContext_KeyInfoA { + SEC_CHAR* sSignatureAlgorithmName; + SEC_CHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA; +typedef struct _SecPkgContext_LifeSpan { + TimeStamp tsStart; + TimeStamp tsExpiry; +} SecPkgContext_LifeSpan, *PSecPkgContext_LifeSpan; +typedef struct _SecPkgContext_NamesW { + SEC_WCHAR* sUserName; +} SecPkgContext_NamesW, *PSecPkgContext_NamesW; +typedef struct _SecPkgContext_NamesA { + SEC_CHAR* sUserName; +} SecPkgContext_NamesA, *PSecPkgContext_NamesA; +typedef struct _SecPkgInfoW { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_WCHAR* Name; + SEC_WCHAR* Comment; +} SecPkgInfoW, *PSecPkgInfoW; +typedef struct _SecPkgInfoA { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_CHAR* Name; + SEC_CHAR* Comment; +} SecPkgInfoA, *PSecPkgInfoA; +/* supported only in win2k+, so it should be a PSecPkgInfoW */ +/* PSDK does not say it has ANSI/Unicode versions */ +typedef struct _SecPkgContext_PackageInfo { + PSecPkgInfoW PackageInfo; +} SecPkgContext_PackageInfo, *PSecPkgContext_PackageInfo; +typedef struct _SecPkgCredentials_NamesW { + SEC_WCHAR* sUserName; +} SecPkgCredentialsNamesW, *PSecPkgCredentialsNamesW; +typedef struct _SecPkgCredentials_NamesA { + SEC_CHAR* sUserName; +} SecPkgCredentialsNamesA, *PSecPkgCredentialsNamesA; + +/* TODO: missing type in SDK */ +typedef void (*SEC_GET_KEY_FN)(); + +typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG,PSecPkgInfoW*); +typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG,PSecPkgInfoA*); +typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,ULONG,PVOID); +typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)(PCredHandle,ULONG,PVOID); +typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +typedef SECURITY_STATUS (WINAPI *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle); +typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_W)(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_A)(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +typedef SECURITY_STATUS (WINAPI *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +typedef SECURITY_STATUS (WINAPI *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,PSecBufferDesc); +typedef SECURITY_STATUS (WINAPI *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle); +typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_W)(PCtxtHandle,PSecBufferDesc); +typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_A)(PCtxtHandle,PSecBufferDesc); +typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,ULONG,PVOID); +typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,ULONG,PVOID); +typedef SECURITY_STATUS (WINAPI *IMPERSONATE_SECURITY_CONTEXT_FN)(PCtxtHandle); +typedef SECURITY_STATUS (WINAPI *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle); +typedef SECURITY_STATUS (WINAPI *MAKE_SIGNATURE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +typedef SECURITY_STATUS (WINAPI *VERIFY_SIGNATURE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +typedef SECURITY_STATUS (WINAPI *FREE_CONTEXT_BUFFER_FN)(PVOID); +typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_A)(SEC_CHAR*,PSecPkgInfoA*); +typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_W)(SEC_WCHAR*,PSecPkgInfoW*); +typedef SECURITY_STATUS (WINAPI *ENCRYPT_MESSAGE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +typedef SECURITY_STATUS (WINAPI *DECRYPT_MESSAGE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); + +/* No, it really is FreeCredentialsHandle, see the thread beginning + * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a + * discovery discussion. */ +typedef struct _SECURITY_FUNCTION_TABLEW { + unsigned long 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 SEC_FAR* 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_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_A QuerySecurityPackageInfoA; + void SEC_FAR* Reserved3; + void SEC_FAR* Reserved4; + void SEC_FAR* Unknown1; + void SEC_FAR* Unknown2; + void SEC_FAR* Unknown3; + void SEC_FAR* Unknown4; + void SEC_FAR* Unknown5; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} SecurityFunctionTableW, *PSecurityFunctionTableW; +typedef struct _SECURITY_FUNCTION_TABLEA { + unsigned long 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 SEC_FAR* 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 SEC_FAR* Reserved3; + void SEC_FAR* Reserved4; + void SEC_FAR* Unknown1; + void SEC_FAR* Unknown2; + void SEC_FAR* Unknown3; + void SEC_FAR* Unknown4; + void SEC_FAR* Unknown5; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} SecurityFunctionTableA, *PSecurityFunctionTableA; +typedef PSecurityFunctionTableA (WINAPI *INIT_SECURITY_INTERFACE_A)(VOID); +typedef PSecurityFunctionTableW (WINAPI *INIT_SECURITY_INTERFACE_W)(VOID); + +SECURITY_STATUS WINAPI FreeCredentialsHandle(PCredHandle); +SECURITY_STATUS WINAPI EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); +SECURITY_STATUS WINAPI EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); +SECURITY_STATUS WINAPI AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS WINAPI AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS WINAPI AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS WINAPI InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS WINAPI InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS WINAPI FreeContextBuffer(PVOID); +SECURITY_STATUS WINAPI QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS WINAPI QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS WINAPI QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); +SECURITY_STATUS WINAPI QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); +SECURITY_STATUS WINAPI DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS WINAPI EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS WINAPI DeleteSecurityContext(PCtxtHandle); +SECURITY_STATUS WINAPI CompleteAuthToken(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS WINAPI ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS WINAPI ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS WINAPI ImpersonateSecurityContext(PCtxtHandle); +SECURITY_STATUS WINAPI RevertSecurityContext(PCtxtHandle); +SECURITY_STATUS WINAPI MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS WINAPI VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS WINAPI QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); +SECURITY_STATUS WINAPI QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); +PSecurityFunctionTableA WINAPI InitSecurityInterfaceA(VOID); +PSecurityFunctionTableW WINAPI InitSecurityInterfaceW(VOID); + +#ifdef UNICODE +#define UNISP_NAME UNISP_NAME_W +#define SecPkgInfo SecPkgInfoW +#define PSecPkgInfo PSecPkgInfoW +#define SecPkgCredentialsNames SecPkgCredentialsNamesW +#define PSecPkgCredentialsNames PSecPkgCredentialsNamesW +#define SecPkgContext_Authority SecPkgContext_AuthorityW +#define PSecPkgContext_Authority PSecPkgContext_AuthorityW +#define SecPkgContext_KeyInfo SecPkgContext_KeyInfoW +#define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoW +#define SecPkgContext_Names SecPkgContext_NamesW +#define PSecPkgContext_Names PSecPkgContext_NamesW +#define SecurityFunctionTable SecurityFunctionTableW +#define PSecurityFunctionTable PSecurityFunctionTableW +#define AcquireCredentialsHandle AcquireCredentialsHandleW +#define EnumerateSecurityPackages EnumerateSecurityPackagesW +#define InitializeSecurityContext InitializeSecurityContextW +#define QueryContextAttributes QueryContextAttributesW +#define QueryCredentialsAttributes QueryCredentialsAttributesW +#define QuerySecurityPackageInfo QuerySecurityPackageInfoW +#define ApplyControlToken ApplyControlTokenW +#define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_W +#define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_W +#define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_W +#define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_W +#define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_W +#define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_W +#define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_W +#define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_W +#else +#define UNISP_NAME UNISP_NAME_A +#define SecPkgInfo SecPkgInfoA +#define PSecPkgInfo PSecPkgInfoA +#define SecPkgCredentialsNames SecPkgCredentialsNamesA +#define PSecPkgCredentialsNames PSecPkgCredentialsNamesA +#define SecPkgContext_Authority SecPkgContext_AuthorityA +#define PSecPkgContext_Authority PSecPkgContext_AuthorityA +#define SecPkgContext_KeyInfo SecPkgContext_KeyInfoA +#define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoA +#define SecPkgContext_Names SecPkgContext_NamesA +#define PSecPkgContext_Names PSecPkgContext_NamesA +#define SecurityFunctionTable SecurityFunctionTableA +#define PSecurityFunctionTable PSecurityFunctionTableA +#define AcquireCredentialsHandle AcquireCredentialsHandleA +#define EnumerateSecurityPackages EnumerateSecurityPackagesA +#define InitializeSecurityContext InitializeSecurityContextA +#define QueryContextAttributes QueryContextAttributesA +#define QueryCredentialsAttributes QueryCredentialsAttributesA +#define QuerySecurityPackageInfo QuerySecurityPackageInfoA +#define ApplyControlToken ApplyControlTokenA +#define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_A +#define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_A +#define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_A +#define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_A +#define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_A +#define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_A +#define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_A +#define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_A +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/subauth.h b/reactos/w32api/include/subauth.h new file mode 100644 index 00000000000..2c87f288fd2 --- /dev/null +++ b/reactos/w32api/include/subauth.h @@ -0,0 +1,209 @@ +#ifndef _SUBAUTH_H +#define _SUBAUTH_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#ifndef NT_SUCCESS +#define NT_SUCCESS(x) ((x)>=0) +#define STATUS_SUCCESS 0 +#endif +#define CYPHER_BLOCK_LENGTH 8 +#define USER_SESSION_KEY_LENGTH (CYPHER_BLOCK_LENGTH*2) +#define CLEAR_BLOCK_LENGTH 8 +#define MSV1_0_PASSTHRU 1 +#define MSV1_0_GUEST_LOGON 2 +#define MSV1_0_VALIDATION_LOGOFF_TIME 1 +#define MSV1_0_VALIDATION_KICKOFF_TIME 2 +#define MSV1_0_VALIDATION_LOGON_SERVER 4 +#define MSV1_0_VALIDATION_LOGON_DOMAIN 8 +#define MSV1_0_VALIDATION_SESSION_KEY 16 +#define MSV1_0_VALIDATION_USER_FLAGS 32 +#define MSV1_0_VALIDATION_USER_ID 64 +#define MSV1_0_SUBAUTH_ACCOUNT_DISABLED 1 +#define MSV1_0_SUBAUTH_PASSWORD 2 +#define MSV1_0_SUBAUTH_WORKSTATIONS 4 +#define MSV1_0_SUBAUTH_LOGON_HOURS 8 +#define MSV1_0_SUBAUTH_ACCOUNT_EXPIRY 16 +#define MSV1_0_SUBAUTH_PASSWORD_EXPIRY 32 +#define MSV1_0_SUBAUTH_ACCOUNT_TYPE 64 +#define MSV1_0_SUBAUTH_LOCKOUT 128 +#define NEXT_FREE_ACCOUNT_CONTROL_BIT 131072 +#define SAM_DAYS_PER_WEEK 7 +#define SAM_HOURS_PER_WEEK 168 +#define SAM_MINUTES_PER_WEEK 10080 +#define STATUS_INVALID_INFO_CLASS 0xC0000003L +#define STATUS_NO_SUCH_USER 0xC0000064L +#define STATUS_WRONG_PASSWORD 0xC000006AL +#define STATUS_PASSWORD_RESTRICTION 0xC000006CL +#define STATUS_LOGON_FAILURE 0xC000006DL +#define STATUS_ACCOUNT_RESTRICTION 0xC000006EL +#define STATUS_INVALID_LOGON_HOURS 0xC000006FL +#define STATUS_INVALID_WORKSTATION 0xC0000070L +#define STATUS_PASSWORD_EXPIRED 0xC0000071L +#define STATUS_ACCOUNT_DISABLED 0xC0000072L +#define STATUS_INSUFFICIENT_RESOURCES 0xC000009AL +#define STATUS_ACCOUNT_EXPIRED 0xC0000193L +#define STATUS_PASSWORD_MUST_CHANGE 0xC0000224L +#define STATUS_ACCOUNT_LOCKED_OUT 0xC0000234L +#define USER_ACCOUNT_DISABLED 1 +#define USER_HOME_DIRECTORY_REQUIRED 2 +#define USER_PASSWORD_NOT_REQUIRED 4 +#define USER_TEMP_DUPLICATE_ACCOUNT 8 +#define USER_NORMAL_ACCOUNT 16 +#define USER_MNS_LOGON_ACCOUNT 32 +#define USER_INTERDOMAIN_TRUST_ACCOUNT 64 +#define USER_WORKSTATION_TRUST_ACCOUNT 128 +#define USER_SERVER_TRUST_ACCOUNT 256 +#define USER_DONT_EXPIRE_PASSWORD 512 +#define USER_ACCOUNT_AUTO_LOCKED 1024 +#define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED 2048 +#define USER_SMARTCARD_REQUIRED 4096 +#define USER_TRUSTED_FOR_DELEGATION 8192 +#define USER_NOT_DELEGATED 16384 +#define USER_USE_DES_KEY_ONLY 32768 +#define USER_DONT_REQUIRE_PREAUTH 65536 +#define USER_MACHINE_ACCOUNT_MASK 448 +#define USER_ACCOUNT_TYPE_MASK 472 +#define USER_ALL_PARAMETERS 2097152 +#if !defined(_NTDEF_H) && !defined(_NTSECAPI_H) +typedef LONG NTSTATUS, *PNTSTATUS; +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING; +typedef struct _STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING, *PSTRING; +#endif +typedef PVOID SAM_HANDLE, *PSAM_HANDLE; +typedef struct _OLD_LARGE_INTEGER { + ULONG LowPart; + LONG HighPart; +} OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER; +typedef enum _NETLOGON_LOGON_INFO_CLASS { + NetlogonInteractiveInformation = 1,NetlogonNetworkInformation, + NetlogonServiceInformation,NetlogonGenericInformation, + NetlogonInteractiveTransitiveInformation,NetlogonNetworkTransitiveInformation, + NetlogonServiceTransitiveInformation +} NETLOGON_LOGON_INFO_CLASS; +typedef struct _CYPHER_BLOCK { + CHAR data[CYPHER_BLOCK_LENGTH]; +} CYPHER_BLOCK, *PCYPHER_BLOCK; +typedef struct _CLEAR_BLOCK { + CHAR data[CLEAR_BLOCK_LENGTH]; +} CLEAR_BLOCK, *PCLEAR_BLOCK; +typedef struct _LM_OWF_PASSWORD { + CYPHER_BLOCK data[2]; +} LM_OWF_PASSWORD, *PLM_OWF_PASSWORD; +typedef struct _USER_SESSION_KEY { + CYPHER_BLOCK data[2]; +} USER_SESSION_KEY, *PUSER_SESSION_KEY; +typedef CLEAR_BLOCK LM_CHALLENGE, *PLM_CHALLENGE; +typedef LM_OWF_PASSWORD NT_OWF_PASSWORD, *PNT_OWF_PASSWORD; +typedef LM_CHALLENGE NT_CHALLENGE, *PNT_CHALLENGE; +typedef struct _LOGON_HOURS { + USHORT UnitsPerWeek; + PUCHAR LogonHours; +} LOGON_HOURS, *PLOGON_HOURS; +typedef struct _SR_SECURITY_DESCRIPTOR { + ULONG Length; + PUCHAR SecurityDescriptor; +} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR; +#pragma pack(push,4) +typedef 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; +} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION; +#pragma pack(pop) +typedef 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; +} MSV1_0_VALIDATION_INFO, *PMSV1_0_VALIDATION_INFO; +typedef struct _NETLOGON_LOGON_IDENTITY_INFO { + UNICODE_STRING LogonDomainName; + ULONG ParameterControl; + OLD_LARGE_INTEGER LogonId; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; +} NETLOGON_LOGON_IDENTITY_INFO, *PNETLOGON_LOGON_IDENTITY_INFO; +typedef struct _NETLOGON_INTERACTIVE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} NETLOGON_INTERACTIVE_INFO, *PNETLOGON_INTERACTIVE_INFO; +typedef struct _NETLOGON_GENERIC_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + UNICODE_STRING PackageName; + ULONG DataLength; + PUCHAR LogonData; +} NETLOGON_GENERIC_INFO, *PNETLOGON_GENERIC_INFO; +typedef struct _NETLOGON_NETWORK_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_CHALLENGE LmChallenge; + STRING NtChallengeResponse; + STRING LmChallengeResponse; +} NETLOGON_NETWORK_INFO, *PNETLOGON_NETWORK_INFO; +typedef struct _NETLOGON_SERVICE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} NETLOGON_SERVICE_INFO, *PNETLOGON_SERVICE_INFO; +NTSTATUS NTAPI Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS NTAPI Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); +NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, + PMSV1_0_VALIDATION_INFO,PULONG); +#ifdef __cplusplus +} +#endif +#endif /* _SUBAUTH_H */ diff --git a/reactos/w32api/include/svcguid.h b/reactos/w32api/include/svcguid.h new file mode 100644 index 00000000000..65072808cf1 --- /dev/null +++ b/reactos/w32api/include/svcguid.h @@ -0,0 +1,33 @@ +#ifndef _SVCGUID_H +#define _SVCGUID_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SVCID_NETWARE(_SapId) \ + { (0x000B << 16) | (_SapId), 0, 0, { 0xC0,0,0,0,0,0,0,0x46 } } + +#define SAPID_FROM_SVCID_NETWARE(_g) \ + ((WORD)(_g->Data1 & 0xFFFF)) + +#define SET_NETWARE_SVCID(_g,_SapId) { \ + (_g)->Data1 = (0x000B << 16 ) | (_SapId); \ + (_g)->Data2 = 0; \ + (_g)->Data3 = 0; \ + (_g)->Data4[0] = 0xC0; \ + (_g)->Data4[1] = 0x0; \ + (_g)->Data4[2] = 0x0; \ + (_g)->Data4[3] = 0x0; \ + (_g)->Data4[4] = 0x0; \ + (_g)->Data4[5] = 0x0; \ + (_g)->Data4[6] = 0x0; \ + (_g)->Data4[7] = 0x46; } + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/tlhelp32.h b/reactos/w32api/include/tlhelp32.h new file mode 100644 index 00000000000..e92838006c0 --- /dev/null +++ b/reactos/w32api/include/tlhelp32.h @@ -0,0 +1,140 @@ +/* + tlhelp32.h - Include file for Tool help functions. + + Written by Mumit Khan + + 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. + +*/ +#ifndef _TLHELP32_H +#define _TLHELP32_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define HF32_DEFAULT 1 +#define HF32_SHARED 2 +#define LF32_FIXED 0x1 +#define LF32_FREE 0x2 +#define LF32_MOVEABLE 0x4 +#define MAX_MODULE_NAME32 255 +#define TH32CS_SNAPHEAPLIST 0x1 +#define TH32CS_SNAPPROCESS 0x2 +#define TH32CS_SNAPTHREAD 0x4 +#define TH32CS_SNAPMODULE 0x8 +#define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE) +#define TH32CS_INHERIT 0x80000000 +typedef struct tagHEAPLIST32 { + DWORD dwSize; + DWORD th32ProcessID; + DWORD th32HeapID; + DWORD dwFlags; +} HEAPLIST32,*PHEAPLIST32,*LPHEAPLIST32; +typedef struct tagHEAPENTRY32 { + DWORD dwSize; + HANDLE hHandle; + DWORD dwAddress; + DWORD dwBlockSize; + DWORD dwFlags; + DWORD dwLockCount; + DWORD dwResvd; + DWORD th32ProcessID; + DWORD th32HeapID; +} HEAPENTRY32,*PHEAPENTRY32,*LPHEAPENTRY32; +typedef struct tagPROCESSENTRY32W { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + DWORD th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + WCHAR szExeFile[MAX_PATH]; +} PROCESSENTRY32W,*PPROCESSENTRY32W,*LPPROCESSENTRY32W; +typedef struct tagPROCESSENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ProcessID; + DWORD th32DefaultHeapID; + DWORD th32ModuleID; + DWORD cntThreads; + DWORD th32ParentProcessID; + LONG pcPriClassBase; + DWORD dwFlags; + CHAR szExeFile[MAX_PATH]; +} PROCESSENTRY32,*PPROCESSENTRY32,*LPPROCESSENTRY32; +typedef struct tagTHREADENTRY32 { + DWORD dwSize; + DWORD cntUsage; + DWORD th32ThreadID; + DWORD th32OwnerProcessID; + LONG tpBasePri; + LONG tpDeltaPri; + DWORD dwFlags; +} THREADENTRY32,*PTHREADENTRY32,*LPTHREADENTRY32; +typedef struct tagMODULEENTRY32W { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + WCHAR szModule[MAX_MODULE_NAME32 + 1]; + WCHAR szExePath[MAX_PATH]; +} MODULEENTRY32W,*PMODULEENTRY32W,*LPMODULEENTRY32W; +typedef struct tagMODULEENTRY32 { + DWORD dwSize; + DWORD th32ModuleID; + DWORD th32ProcessID; + DWORD GlblcntUsage; + DWORD ProccntUsage; + BYTE *modBaseAddr; + DWORD modBaseSize; + HMODULE hModule; + char szModule[MAX_MODULE_NAME32 + 1]; + char szExePath[MAX_PATH]; +} MODULEENTRY32,*PMODULEENTRY32,*LPMODULEENTRY32; +BOOL WINAPI Heap32First(LPHEAPENTRY32,DWORD,DWORD); +BOOL WINAPI Heap32ListFirst(HANDLE,LPHEAPLIST32); +BOOL WINAPI Heap32ListNext(HANDLE,LPHEAPLIST32); +BOOL WINAPI Heap32Next(LPHEAPENTRY32); +BOOL WINAPI Module32First(HANDLE,LPMODULEENTRY32); +BOOL WINAPI Module32FirstW(HANDLE,LPMODULEENTRY32W); +BOOL WINAPI Module32Next(HANDLE,LPMODULEENTRY32); +BOOL WINAPI Module32NextW(HANDLE,LPMODULEENTRY32W); +BOOL WINAPI Process32First(HANDLE,LPPROCESSENTRY32); +BOOL WINAPI Process32FirstW(HANDLE,LPPROCESSENTRY32W); +BOOL WINAPI Process32Next(HANDLE,LPPROCESSENTRY32); +BOOL WINAPI Process32NextW(HANDLE,LPPROCESSENTRY32W); +BOOL WINAPI Thread32First(HANDLE,LPTHREADENTRY32); +BOOL WINAPI Thread32Next(HANDLE,LPTHREADENTRY32); +BOOL WINAPI Toolhelp32ReadProcessMemory(DWORD,LPCVOID,LPVOID,DWORD,LPDWORD); +HANDLE WINAPI CreateToolhelp32Snapshot(DWORD,DWORD); +#ifdef UNICODE +#define LPMODULEENTRY32 LPMODULEENTRY32W +#define LPPROCESSENTRY32 LPPROCESSENTRY32W +#define MODULEENTRY32 MODULEENTRY32W +#define Module32First Module32FirstW +#define Module32Next Module32NextW +#define PMODULEENTRY32 PMODULEENTRY32W +#define PPROCESSENTRY32 PPROCESSENTRY32W +#define PROCESSENTRY32 PROCESSENTRY32W +#define Process32First Process32FirstW +#define Process32Next Process32NextW +#endif /* UNICODE */ +#ifdef __cplusplus +} +#endif +#endif /* _TLHELP32_H */ + diff --git a/reactos/w32api/include/tmschema.h b/reactos/w32api/include/tmschema.h new file mode 100644 index 00000000000..6ab03b431c8 --- /dev/null +++ b/reactos/w32api/include/tmschema.h @@ -0,0 +1,664 @@ +#ifndef _TMSCHEMA_H +#define _TMSCHEMA_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +/* 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 +}; + +#endif diff --git a/reactos/w32api/include/unknwn.h b/reactos/w32api/include/unknwn.h new file mode 100644 index 00000000000..20a75afc545 --- /dev/null +++ b/reactos/w32api/include/unknwn.h @@ -0,0 +1,76 @@ +#ifndef COM_NO_WINDOWS_H +#include +#endif + +#ifndef _UNKNWN_H +#define _UNKNWN_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C"{ +#endif +#include +#include + +void * __RPC_USER MIDL_user_allocate(size_t); +void __RPC_USER MIDL_user_free(void*); +EXTERN_C const IID IID_IUnknown; +EXTERN_C const IID IID_IClassFactory; +#ifndef __IUnknown_INTERFACE_DEFINED__ +#define __IUnknown_INTERFACE_DEFINED__ +#undef INTERFACE +#define INTERFACE IUnknown +DECLARE_INTERFACE(IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; +}; +typedef IUnknown *LPUNKNOWN; +#endif +#ifndef __IClassFactory_INTERFACE_DEFINED__ +#define __IClassFactory_INTERFACE_DEFINED__ +#undef INTERFACE +#define INTERFACE IClassFactory +DECLARE_INTERFACE_(IClassFactory,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE; + STDMETHOD(LockServer)(THIS_ BOOL) PURE; +}; +typedef IClassFactory *LPCLASSFACTORY; +#endif +HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown*,REFIID,void**); +void __RPC_STUB IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); +ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(IUnknown*); +void __RPC_STUB IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); +ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(IUnknown*); +void __RPC_STUB IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(IClassFactory*,REFIID,IUnknown**); +void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); +HRESULT __stdcall IClassFactory_RemoteLockServer_Proxy(IClassFactory*,BOOL); +void __RPC_STUB IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); +HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Proxy(IClassFactory*,IUnknown*,REFIID,void**); +HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Stub(IClassFactory*,REFIID,IUnknown**); +HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Proxy(IClassFactory*,BOOL); +HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Stub(IClassFactory*,BOOL); + +#if (!defined (__cplusplus) || defined (CINTERFACE)) \ + && defined (COBJMACROS) +#define IUnknown_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O) +#define IUnknown_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IUnknown_Release(T) (T)->lpVtbl->Release(T) +#define IClassFactory_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O) +#define IClassFactory_AddRef(T) (T)->lpVtbl->AddRef(T) +#define IClassFactory_Release(T) (T)->lpVtbl->Release(T) +#define IClassFactory_CreateInstance(T,p,r,O) (T)->lpVtbl->CreateInstance(T,p,r,O) +#define IClassFactory_LockServer(T,f) (T)->lpVtbl->LockServer(T,f) +#endif /* COBJMACROS */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/userenv.h b/reactos/w32api/include/userenv.h new file mode 100644 index 00000000000..fad9f813b7c --- /dev/null +++ b/reactos/w32api/include/userenv.h @@ -0,0 +1,57 @@ +#ifndef _USERENV_H +#define _USERENV_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define PI_NOUI (1) +#define PI_APPLYPOLICY (2) +typedef struct _PROFILEINFOA { + DWORD dwSize; + DWORD dwFlags; + LPSTR lpUserName; + LPSTR lpProfilePath; + LPSTR lpDefaultPath; + LPSTR lpServerName; + LPSTR lpPolicyPath; + HANDLE hProfile; +} PROFILEINFOA, *LPPROFILEINFOA; +typedef struct _PROFILEINFOW { + DWORD dwSize; + DWORD dwFlags; + LPWSTR lpUserName; + LPWSTR lpProfilePath; + LPWSTR lpDefaultPath; + LPWSTR lpServerName; + LPWSTR lpPolicyPath; + HANDLE hProfile; +} PROFILEINFOW, *LPPROFILEINFOW; +BOOL WINAPI LoadUserProfileA(HANDLE,LPPROFILEINFOA); +BOOL WINAPI LoadUserProfileW(HANDLE,LPPROFILEINFOW); +BOOL WINAPI UnloadUserProfile(HANDLE,HANDLE); +BOOL WINAPI GetProfilesDirectoryA(LPSTR,LPDWORD); +BOOL WINAPI GetProfilesDirectoryW(LPWSTR,LPDWORD); +BOOL WINAPI GetUserProfileDirectoryA(HANDLE,LPSTR,LPDWORD); +BOOL WINAPI GetUserProfileDirectoryW(HANDLE,LPWSTR,LPDWORD); +BOOL WINAPI CreateEnvironmentBlock(LPVOID*,HANDLE,BOOL); +BOOL WINAPI DestroyEnvironmentBlock(LPVOID); +#ifdef UNICODE +typedef PROFILEINFOW PROFILEINFO; +typedef LPPROFILEINFOW LPPROFILEINFO; +#define LoadUserProfile LoadUserProfileW +#define GetProfilesDirectory GetProfilesDirectoryW +#define GetUserProfileDirectory GetUserProfileDirectoryW +#else +typedef PROFILEINFOA PROFILEINFO; +typedef LPPROFILEINFOA LPPROFILEINFO; +#define LoadUserProfile LoadUserProfileA +#define GetProfilesDirectory GetProfilesDirectoryA +#define GetUserProfileDirectory GetUserProfileDirectoryA +#endif +#ifdef __cplusplus +} +#endif +#endif /* _USERENV_H */ diff --git a/reactos/w32api/include/uxtheme.h b/reactos/w32api/include/uxtheme.h new file mode 100644 index 00000000000..8014bfb7586 --- /dev/null +++ b/reactos/w32api/include/uxtheme.h @@ -0,0 +1,120 @@ +#ifndef _UXTHEME_H +#define _UXTHEME_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if (_WIN32_WINNT >= 0x0501) +#define DTBG_CLIPRECT 0x00000001 +#define DTBG_DRAWSOLID 0x00000002 +#define DTBG_OMITBORDER 0x00000004 +#define DTBG_OMITCONTENT 0x00000008 +#define DTBG_COMPUTINGREGION 0x00000010 +#define DTBG_MIRRORDC 0x00000020 +#define DTT_GRAYED 0x00000001 +#define ETDT_DISABLE 0x00000001 +#define ETDT_ENABLE 0x00000002 +#define ETDT_USETABTEXTURE 0x00000004 +#define ETDT_ENABLETAB (ETDT_ENABLE|ETDT_USETABTEXTURE) +#define STAP_ALLOW_NONCLIENT 0x00000001 +#define STAP_ALLOW_CONTROLS 0x00000002 +#define STAP_ALLOW_WEBCONTENT 0x00000004 +#define HTTB_BACKGROUNDSEG 0x0000 +#define HTTB_FIXEDBORDER 0x0002 +#define HTTB_CAPTION 0x0004 +#define HTTB_RESIZINGBORDER_LEFT 0x0010 +#define HTTB_RESIZINGBORDER_TOP 0x0020 +#define HTTB_RESIZINGBORDER_RIGHT 0x0040 +#define HTTB_RESIZINGBORDER_BOTTOM 0x0080 +#define HTTB_RESIZINGBORDER (HTTB_RESIZINGBORDER_LEFT|HTTB_RESIZINGBORDER_TOP|HTTB_RESIZINGBORDER_RIGHT|HTTB_RESIZINGBORDER_BOTTOM) +#define HTTB_SIZINGTEMPLATE 0x0100 +#define HTTB_SYSTEMSIZINGMARGINS 0x0200 + +typedef enum PROPERTYORIGIN { + PO_STATE = 0, + PO_PART = 1, + PO_CLASS = 2, + PO_GLOBAL = 3, + PO_NOTFOUND = 4 +} PROPERTYORIGIN; +typedef enum THEMESIZE { + TS_MIN, + TS_TRUE, + TS_DRAW +} THEME_SIZE; +typedef struct _DTBGOPTS { + DWORD dwSize; + DWORD dwFlags; + RECT rcClip; +} DTBGOPTS, *PDTBGOPTS; +#define MAX_INTLIST_COUNT 10 +typedef struct _INTLIST { + int iValueCount; + int iValues[MAX_INTLIST_COUNT]; +} INTLIST, *PINTLIST; +typedef struct _MARGINS { + int cxLeftWidth; + int cxRightWidth; + int cyTopHeight; + int cyBottomHeight; +} MARGINS, *PMARGINS; +typedef HANDLE HTHEME; + +HRESULT WINAPI CloseThemeData(HTHEME); +HRESULT WINAPI DrawThemeBackground(HTHEME,HDC,int,int,const RECT*,const RECT*); +HRESULT WINAPI DrawThemeBackgroundEx(HTHEME,HDC,int,int,const RECT*,const DTBGOPTS*); +HRESULT WINAPI DrawThemeEdge(HTHEME,HDC,int,int,const RECT*,UINT,UINT,RECT*); +HRESULT WINAPI DrawThemeIcon(HTHEME,HDC,int,int,const RECT*,HIMAGELIST,int); +HRESULT WINAPI DrawThemeParentBackground(HWND,HDC,RECT*); +HRESULT WINAPI DrawThemeText(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,DWORD,const RECT*); +HRESULT WINAPI EnableThemeDialogTexture(HWND,DWORD); +HRESULT WINAPI EnableTheming(BOOL); +HRESULT WINAPI GetCurrentThemeName(LPWSTR,int,LPWSTR,int,LPWSTR,int); +DWORD WINAPI GetThemeAppProperties(); +HRESULT WINAPI GetThemeBackgroundContentRect(HTHEME,HDC,int,int,const RECT*,RECT*); +HRESULT WINAPI GetThemeBackgroundExtent(HTHEME,HDC,int,int,const RECT*,RECT*); +HRESULT WINAPI GetThemeBackgroundRegion(HTHEME,HDC,int,int,const RECT*,HRGN*); +HRESULT WINAPI GetThemeBool(HTHEME,int,int,int,BOOL*); +HRESULT WINAPI GetThemeColor(HTHEME,int,int,int,COLORREF*); +HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR,LPCWSTR,LPWSTR,int); +HRESULT WINAPI GetThemeEnumValue(HTHEME,int,int,int,int*); +HRESULT WINAPI GetThemeFilename(HTHEME,int,int,int,LPWSTR,int); +HRESULT WINAPI GetThemeFont(HTHEME,HDC,int,int,int,LOGFONT*); +HRESULT WINAPI GetThemeInt(HTHEME,int,int,int,int*); +HRESULT WINAPI GetThemeIntList(HTHEME,int,int,int,INTLIST*); +HRESULT WINAPI GetThemeMargins(HTHEME,HDC,int,int,int,RECT*,MARGINS*); +HRESULT WINAPI GetThemeMetric(HTHEME,HDC,int,int,int,int*); +HRESULT WINAPI GetThemePartSize(HTHEME,HDC,int,int,RECT*,THEME_SIZE,SIZE*); +HRESULT WINAPI GetThemePosition(HTHEME,int,int,int,POINT*); +HRESULT WINAPI GetThemePropertyOrigin(HTHEME,int,int,int,PROPERTYORIGIN*); +HRESULT WINAPI GetThemeRect(HTHEME,int,int,int,RECT*); +HRESULT WINAPI GetThemeString(HTHEME,int,int,int,LPWSTR,int); +BOOL WINAPI GetThemeSysBool(HTHEME,int); +COLORREF WINAPI GetThemeSysColor(HTHEME,int); +HBRUSH WINAPI GetThemeSysColorBrush(HTHEME,int); +HRESULT WINAPI GetThemeSysFont(HTHEME,int,LOGFONT*); +HRESULT WINAPI GetThemeSysInt(HTHEME,int,int*); +int WINAPI GetThemeSysSize(HTHEME,int); +HRESULT WINAPI GetThemeSysString(HTHEME,int,LPWSTR,int); +HRESULT WINAPI GetThemeTextExtent(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,const RECT*,RECT*); +HRESULT WINAPI GetThemeTextMetrics(HTHEME,HDC,int,int,TEXTMETRIC*); +HTHEME WINAPI GetWindowTheme(HWND); +HRESULT WINAPI HitTestThemeBackground(HTHEME,HDC,int,int,DWORD,const RECT*,HRGN,POINT,WORD*); +BOOL WINAPI IsAppThemed(); +BOOL WINAPI IsThemeActive(); +BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME,int,int); +BOOL WINAPI IsThemeDialogTextureEnabled(HWND); +BOOL WINAPI IsThemePartDefined(HTHEME,int,int); +HTHEME WINAPI OpenThemeData(HWND,LPCWSTR); +void WINAPI SetThemeAppProperties(DWORD); +HRESULT WINAPI SetWindowTheme(HWND,LPCWSTR,LPCWSTR); +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/vfw.h b/reactos/w32api/include/vfw.h new file mode 100644 index 00000000000..cce5e3126db --- /dev/null +++ b/reactos/w32api/include/vfw.h @@ -0,0 +1,1130 @@ +#ifndef _VFW_H +#define _VFW_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifndef _WINDOWS_H +#include +#endif +#ifndef _MMSYSTEM_H +#include +#endif +#if !defined (_OLE2_H) && !defined (__OBJC__) +#include +#endif + +#define VFWAPI WINAPI +#define VFWAPIV WINAPIV + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define ICERR_OK 0 +#define ICERR_DONTDRAW 1 +#define ICERR_NEWPALETTE 2 +#define ICERR_GOTOKEYFRAME 3 +#define ICERR_STOPDRAWING 4 +#define ICERR_UNSUPPORTED -1 +#define ICERR_BADFORMAT -2 +#define ICERR_MEMORY -3 +#define ICERR_INTERNAL -4 +#define ICERR_BADFLAGS -5 +#define ICERR_BADPARAM -6 +#define ICERR_BADSIZE -7 +#define ICERR_BADHANDLE -8 +#define ICERR_CANTUPDATE -9 +#define ICERR_ABORT -10 +#define ICERR_ERROR -100 +#define ICERR_BADBITDEPTH -200 +#define ICERR_BADIMAGESIZE -201 +#define ICERR_CUSTOM -400 +#define ICCOMPRESSFRAMES_PADDING 0x01 +#define ICM_USER (DRV_USER+0x0000) +#define ICM_RESERVED_LOW (DRV_USER+0x1000) +#define ICM_RESERVED_HIGH (DRV_USER+0x2000) +#define ICM_RESERVED ICM_RESERVED_LOW +#define ICM_GETSTATE (ICM_RESERVED+0) +#define ICM_SETSTATE (ICM_RESERVED+1) +#define ICM_GETINFO (ICM_RESERVED+2) +#define ICM_CONFIGURE (ICM_RESERVED+10) +#define ICM_ABOUT (ICM_RESERVED+11) +#define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30) +#define ICM_GETQUALITY (ICM_RESERVED+31) +#define ICM_SETQUALITY (ICM_RESERVED+32) +#define ICM_SET (ICM_RESERVED+40) +#define ICM_GET (ICM_RESERVED+41) +#define ICM_FRAMERATE mmioFOURCC('F','r','m','R') +#define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R') +#define ICM_COMPRESS_GET_FORMAT (ICM_USER+4) +#define ICM_COMPRESS_GET_SIZE (ICM_USER+5) +#define ICM_COMPRESS_QUERY (ICM_USER+6) +#define ICM_COMPRESS_BEGIN (ICM_USER+7) +#define ICM_COMPRESS (ICM_USER+8) +#define ICM_COMPRESS_END (ICM_USER+9) +#define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10) +#define ICM_DECOMPRESS_QUERY (ICM_USER+11) +#define ICM_DECOMPRESS_BEGIN (ICM_USER+12) +#define ICM_DECOMPRESS (ICM_USER+13) +#define ICM_DECOMPRESS_END (ICM_USER+14) +#define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29) +#define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30) +#define ICM_DRAW_QUERY (ICM_USER+31) +#define ICM_DRAW_BEGIN (ICM_USER+15) +#define ICM_DRAW_GET_PALETTE (ICM_USER+16) +#define ICM_DRAW_START (ICM_USER+18) +#define ICM_DRAW_STOP (ICM_USER+19) +#define ICM_DRAW_END (ICM_USER+21) +#define ICM_DRAW_GETTIME (ICM_USER+32) +#define ICM_DRAW (ICM_USER+33) +#define ICM_DRAW_WINDOW (ICM_USER+34) +#define ICM_DRAW_SETTIME (ICM_USER+35) +#define ICM_DRAW_REALIZE (ICM_USER+36) +#define ICM_DRAW_FLUSH (ICM_USER+37) +#define ICM_DRAW_RENDERBUFFER (ICM_USER+38) +#define ICM_DRAW_START_PLAY (ICM_USER+39) +#define ICM_DRAW_STOP_PLAY (ICM_USER+40) +#define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50) +#define ICM_DRAW_CHANGEPALETTE (ICM_USER+51) +#define ICM_GETBUFFERSWANTED (ICM_USER+41) +#define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42) +#define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60) +#define ICM_DECOMPRESSEX_QUERY (ICM_USER+61) +#define ICM_DECOMPRESSEX (ICM_USER+62) +#define ICM_DECOMPRESSEX_END (ICM_USER+63) +#define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70) +#define ICM_SET_STATUS_PROC (ICM_USER+72) +#define ICMF_CONFIGURE_QUERY 0x01 +#define ICCOMPRESS_KEYFRAME 0x01 +#define ICSTATUS_START 0 +#define ICSTATUS_STATUS 1 +#define ICSTATUS_END 2 +#define ICSTATUS_ERROR 3 +#define ICSTATUS_YIELD 4 +#define ICMODE_COMPRESS 1 +#define ICMODE_DECOMPRESS 2 +#define ICMODE_FASTDECOMPRESS 3 +#define ICMODE_QUERY 4 +#define ICMODE_FASTCOMPRESS 5 +#define ICMODE_DRAW 8 +#define ICQUALITY_LOW 0 +#define ICQUALITY_HIGH 10000 +#define ICQUALITY_DEFAULT -1 +#define VIDCF_QUALITY 0x01 +#define VIDCF_CRUNCH 0x02 +#define VIDCF_TEMPORAL 0x04 +#define VIDCF_COMPRESSFRAMES 0x08 +#define VIDCF_DRAW 0x10 +#define VIDCF_FASTTEMPORALC 0x20 +#define VIDCF_FASTTEMPORALD 0x80 +#define VIDCF_QUALITYTIME 0x40 +#define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD) +#define ICMF_ABOUT_QUERY 0x01 +#define ICDECOMPRESS_HURRYUP 0x80000000 +#define ICDECOMPRESS_UPDATE 0x40000000 +#define ICDECOMPRESS_PREROLL 0x20000000 +#define ICDECOMPRESS_NULLFRAME 0x10000000 +#define ICDECOMPRESS_NOTKEYFRAME 0x8000000 +#define ICDRAW_QUERY 0x01L +#define ICDRAW_FULLSCREEN 0x02L +#define ICDRAW_HDC 0x04L +#define ICDRAW_ANIMATE 0x08L +#define ICDRAW_CONTINUE 0x10L +#define ICDRAW_MEMORYDC 0x20L +#define ICDRAW_UPDATING 0x40L +#define ICDRAW_RENDER 0x80L +#define ICDRAW_BUFFER 0x100L +#define ICINSTALL_UNICODE 0x8000 +#define ICINSTALL_FUNCTION 0x01 +#define ICINSTALL_DRIVER 0x02 +#define ICINSTALL_HDRV 0x04 +#define ICINSTALL_DRIVERW 0x8002 +#define ICDRAW_HURRYUP 0x80000000L +#define ICDRAW_UPDATE 0x40000000L +#define ICDRAW_PREROLL 0x20000000L +#define ICDRAW_NULLFRAME 0x10000000L +#define ICDRAW_NOTKEYFRAME 0x8000000L +#define ICMF_COMPVARS_VALID 0x01 +#define ICMF_CHOOSE_KEYFRAME 0x01 +#define ICMF_CHOOSE_DATARATE 0x02 +#define ICMF_CHOOSE_PREVIEW 0x04 +#define ICMF_CHOOSE_ALLCOMPRESSORS 0x08 +#define ICTYPE_VIDEO mmioFOURCC('v','i','d','c') +#define ICTYPE_AUDIO mmioFOURCC('a','u','d','c') +#define formtypeAVI mmioFOURCC('A','V','I',' ') +#define listtypeAVIHEADER mmioFOURCC('h','d','r','l') +#define ckidAVIMAINHDR mmioFOURCC('a','v','i','h') +#define listtypeSTREAMHEADER mmioFOURCC('s','t','r','l') +#define ckidSTREAMHEADER mmioFOURCC('s','t','r','h') +#define ckidSTREAMFORMAT mmioFOURCC('s','t','r','f') +#define ckidSTREAMHANDLERDATA mmioFOURCC('s','t','r','d') +#define ckidSTREAMNAME mmioFOURCC('s','t','r','n') +#define listtypeAVIMOVIE mmioFOURCC('m','o','v','i') +#define listtypeAVIRECORD mmioFOURCC('r','e','c',' ') +#define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1') +#define streamtypeANY 0UL +#define streamtypeVIDEO mmioFOURCC('v','i','d','s') +#define streamtypeAUDIO mmioFOURCC('a','u','d','s') +#define streamtypeMIDI mmioFOURCC('m','i','d','s') +#define streamtypeTEXT mmioFOURCC('t','x','t','s') +#define cktypeDIBbits aviTWOCC('d','b') +#define cktypeDIBcompressed aviTWOCC('d','c') +#define cktypePALchange aviTWOCC('p','c') +#define cktypeWAVEbytes aviTWOCC('w','b') +#define ckidAVIPADDING mmioFOURCC('J','U','N','K') +#define FromHex(n) (((n)>='A')?((n)+10-'A'):((n)-'0')) +#define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc)))<<4)+(FromHex(HIBYTE(LOWORD(fcc)))))) +#define TWOCCFromFOURCC(fcc) HIWORD(fcc) +#define ToHex(n) ((BYTE)(((n)>9)?((n)-10+'A'):((n)+'0'))) +#define MAKEAVICKID(tcc, stream) MAKELONG((ToHex((stream)&0x0f)<<8)|(ToHex(((stream)&0xf0)>>4)),tcc) +#define AVIF_HASINDEX 0x10 +#define AVIF_MUSTUSEINDEX 0x20 +#define AVIF_ISINTERLEAVED 0x100 +#define AVIF_TRUSTCKTYPE 0x800 +#define AVIF_WASCAPTUREFILE 0x10000 +#define AVIF_COPYRIGHTED 0x20000 +#define AVI_HEADERSIZE 2048 +#define AVISF_DISABLED 0x01 +#define AVISF_VIDEO_PALCHANGES 0x10000 +#define AVIIF_LIST 0x01 +#define AVIIF_TWOCC 0x02 +#define AVIIF_KEYFRAME 0x10 +#define AVIIF_NOTIME 0x100 +#define AVIIF_COMPUSE 0xfff0000 +#define AVIIF_KEYFRAME 0x10 +#define AVIGETFRAMEF_BESTDISPLAYFMT 1 +#define AVISTREAMINFO_DISABLED 0x01 +#define AVISTREAMINFO_FORMATCHANGES 0x10000 +#define AVIFILEINFO_HASINDEX 0x10 +#define AVIFILEINFO_MUSTUSEINDEX 0x20 +#define AVIFILEINFO_ISINTERLEAVED 0x100 +#define AVIFILEINFO_TRUSTCKTYPE 0x800 +#define AVIFILEINFO_WASCAPTUREFILE 0x10000 +#define AVIFILEINFO_COPYRIGHTED 0x20000 +#define AVIFILECAPS_CANREAD 0x01 +#define AVIFILECAPS_CANWRITE 0x02 +#define AVIFILECAPS_ALLKEYFRAMES 0x10 +#define AVIFILECAPS_NOCOMPRESSION 0x20 +#define AVICOMPRESSF_INTERLEAVE 0x01 +#define AVICOMPRESSF_DATARATE 0x02 +#define AVICOMPRESSF_KEYFRAMES 0x04 +#define AVICOMPRESSF_VALID 0x08 +#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 AVIERR_OK 0 +#define MAKE_AVIERR(e) MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+e) +#define AVIERR_UNSUPPORTED MAKE_AVIERR(101) +#define AVIERR_BADFORMAT MAKE_AVIERR(102) +#define AVIERR_MEMORY MAKE_AVIERR(103) +#define AVIERR_INTERNAL MAKE_AVIERR(104) +#define AVIERR_BADFLAGS MAKE_AVIERR(105) +#define AVIERR_BADPARAM MAKE_AVIERR(106) +#define AVIERR_BADSIZE MAKE_AVIERR(107) +#define AVIERR_BADHANDLE MAKE_AVIERR(108) +#define AVIERR_FILEREAD MAKE_AVIERR(109) +#define AVIERR_FILEWRITE MAKE_AVIERR(110) +#define AVIERR_FILEOPEN MAKE_AVIERR(111) +#define AVIERR_COMPRESSOR MAKE_AVIERR(112) +#define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113) +#define AVIERR_READONLY MAKE_AVIERR(114) +#define AVIERR_NODATA MAKE_AVIERR(115) +#define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116) +#define AVIERR_CANTCOMPRESS MAKE_AVIERR(117) +#define AVIERR_USERABORT MAKE_AVIERR(198) +#define AVIERR_ERROR MAKE_AVIERR(199) +#define MCIWNDOPENF_NEW 0x0001 +#define MCIWNDF_NOAUTOSIZEWINDOW 0x0001 +#define MCIWNDF_NOPLAYBAR 0x0002 +#define MCIWNDF_NOAUTOSIZEMOVIE 0x0004 +#define MCIWNDF_NOMENU 0x0008 +#define MCIWNDF_SHOWNAME 0x0010 +#define MCIWNDF_SHOWPOS 0x0020 +#define MCIWNDF_SHOWMODE 0x0040 +#define MCIWNDF_SHOWALL 0x0070 +#define MCIWNDF_NOTIFYMODE 0x0100 +#define MCIWNDF_NOTIFYPOS 0x0200 +#define MCIWNDF_NOTIFYSIZE 0x0400 +#define MCIWNDF_NOTIFYERROR 0x1000 +#define MCIWNDF_NOTIFYALL 0x1F00 +#define MCIWNDF_NOTIFYANSI 0x0080 +#define MCIWNDF_NOTIFYMEDIAA 0x0880 +#define MCIWNDF_NOTIFYMEDIAW 0x0800 +#define MCIWNDF_RECORD 0x2000 +#define MCIWNDF_NOERRORDLG 0x4000 +#define MCIWNDF_NOOPEN 0x8000 +#define MCIWNDM_GETDEVICEID (WM_USER + 100) +#define MCIWNDM_GETSTART (WM_USER + 103) +#define MCIWNDM_GETLENGTH (WM_USER + 104) +#define MCIWNDM_GETEND (WM_USER + 105) +#define MCIWNDM_EJECT (WM_USER + 107) +#define MCIWNDM_SETZOOM (WM_USER + 108) +#define MCIWNDM_GETZOOM (WM_USER + 109) +#define MCIWNDM_SETVOLUME (WM_USER + 110) +#define MCIWNDM_GETVOLUME (WM_USER + 111) +#define MCIWNDM_SETSPEED (WM_USER + 112) +#define MCIWNDM_GETSPEED (WM_USER + 113) +#define MCIWNDM_SETREPEAT (WM_USER + 114) +#define MCIWNDM_GETREPEAT (WM_USER + 115) +#define MCIWNDM_REALIZE (WM_USER + 118) +#define MCIWNDM_VALIDATEMEDIA (WM_USER + 121) +#define MCIWNDM_PLAYFROM (WM_USER + 122) +#define MCIWNDM_PLAYTO (WM_USER + 123) +#define MCIWNDM_GETPALETTE (WM_USER + 126) +#define MCIWNDM_SETPALETTE (WM_USER + 127) +#define MCIWNDM_SETTIMERS (WM_USER + 129) +#define MCIWNDM_SETACTIVETIMER (WM_USER + 130) +#define MCIWNDM_SETINACTIVETIMER (WM_USER + 131) +#define MCIWNDM_GETACTIVETIMER (WM_USER + 132) +#define MCIWNDM_GETINACTIVETIMER (WM_USER + 133) +#define MCIWNDM_CHANGESTYLES (WM_USER + 135) +#define MCIWNDM_GETSTYLES (WM_USER + 136) +#define MCIWNDM_GETALIAS (WM_USER + 137) +#define MCIWNDM_PLAYREVERSE (WM_USER + 139) +#define MCIWNDM_GET_SOURCE (WM_USER + 140) +#define MCIWNDM_PUT_SOURCE (WM_USER + 141) +#define MCIWNDM_GET_DEST (WM_USER + 142) +#define MCIWNDM_PUT_DEST (WM_USER + 143) +#define MCIWNDM_CAN_PLAY (WM_USER + 144) +#define MCIWNDM_CAN_WINDOW (WM_USER + 145) +#define MCIWNDM_CAN_RECORD (WM_USER + 146) +#define MCIWNDM_CAN_SAVE (WM_USER + 147) +#define MCIWNDM_CAN_EJECT (WM_USER + 148) +#define MCIWNDM_CAN_CONFIG (WM_USER + 149) +#define MCIWNDM_PALETTEKICK (WM_USER + 150) +#define MCIWNDM_OPENINTERFACE (WM_USER + 151) +#define MCIWNDM_SETOWNER (WM_USER + 152) +#define MCIWNDM_SENDSTRINGA (WM_USER + 101) +#define MCIWNDM_GETPOSITIONA (WM_USER + 102) +#define MCIWNDM_GETMODEA (WM_USER + 106) +#define MCIWNDM_SETTIMEFORMATA (WM_USER + 119) +#define MCIWNDM_GETTIMEFORMATA (WM_USER + 120) +#define MCIWNDM_GETFILENAMEA (WM_USER + 124) +#define MCIWNDM_GETDEVICEA (WM_USER + 125) +#define MCIWNDM_GETERRORA (WM_USER + 128) +#define MCIWNDM_NEWA (WM_USER + 134) +#define MCIWNDM_RETURNSTRINGA (WM_USER + 138) +#define MCIWNDM_OPENA (WM_USER + 153) +#define MCIWNDM_SENDSTRINGW (WM_USER + 201) +#define MCIWNDM_GETPOSITIONW (WM_USER + 202) +#define MCIWNDM_GETMODEW (WM_USER + 206) +#define MCIWNDM_SETTIMEFORMATW (WM_USER + 219) +#define MCIWNDM_GETTIMEFORMATW (WM_USER + 220) +#define MCIWNDM_GETFILENAMEW (WM_USER + 224) +#define MCIWNDM_GETDEVICEW (WM_USER + 225) +#define MCIWNDM_GETERRORW (WM_USER + 228) +#define MCIWNDM_NEWW (WM_USER + 234) +#define MCIWNDM_RETURNSTRINGW (WM_USER + 238) +#define MCIWNDM_OPENW (WM_USER + 252) +#define MCIWNDM_NOTIFYMODE (WM_USER + 200) +#define MCIWNDM_NOTIFYPOS (WM_USER + 201) +#define MCIWNDM_NOTIFYSIZE (WM_USER + 202) +#define MCIWNDM_NOTIFYMEDIA (WM_USER + 203) +#define MCIWNDM_NOTIFYERROR (WM_USER + 205) +#define MCIWND_START -1 +#define MCIWND_END -2 +#define DDF_UPDATE 0x02 +#define DDF_SAME_HDC 0x04 +#define DDF_SAME_DRAW 0x08 +#define DDF_DONTDRAW 0x10 +#define DDF_ANIMATE 0x20 +#define DDF_BUFFER 0x40 +#define DDF_JUSTDRAWIT 0x80 +#define DDF_FULLSCREEN 0x100 +#define DDF_BACKGROUNDPAL 0x200 +#define DDF_NOTKEYFRAME 0x400 +#define DDF_HURRYUP 0x800 +#define DDF_HALFTONE 0x1000 +#define DDF_PREROLL DDF_DONTDRAW +#define DDF_SAME_DIB DDF_SAME_DRAW +#define DDF_SAME_SIZE DDF_SAME_DRAW +#define PD_CAN_DRAW_DIB 0x01 +#define PD_CAN_STRETCHDIB 0x02 +#define PD_STRETCHDIB_1_1_OK 0x04 +#define PD_STRETCHDIB_1_2_OK 0x08 +#define PD_STRETCHDIB_1_N_OK 0x10 +#ifndef mmioFOURCC +#define mmioFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24)) +#endif +#ifndef aviTWOCC +#define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0)|((WORD)(BYTE)(ch1)<<8)) +#endif + +#ifndef RC_INVOKED +DECLARE_HANDLE(HIC); +DECLARE_HANDLE(HDRAWDIB); +typedef WORD TWOCC; +typedef BOOL (CALLBACK *AVISAVECALLBACK)(INT); +typedef struct { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwVersion; + DWORD dwFlags; + LRESULT dwError; + LPVOID pV1Reserved; + LPVOID pV2Reserved; + DWORD dnDevNode; +} ICOPEN,*LPICOPEN; +typedef struct { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPDWORD lpckid; + LPDWORD lpdwFlags; + LONG lFrameNum; + DWORD dwFrameSize; + DWORD dwQuality; + LPBITMAPINFOHEADER lpbiPrev; + LPVOID lpPrev; +} ICCOMPRESS; +typedef struct { + 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 (CALLBACK *GetData)(LPARAM,LONG,LPVOID,LONG); + LONG (CALLBACK *PutData)(LPARAM,LONG,LPVOID,LONG); +} ICCOMPRESSFRAMES; +typedef struct { + DWORD dwFlags; + LPARAM lParam; + LONG (CALLBACK *Status)(LPARAM,UINT,LONG); +} ICSETSTATUSPROC; +typedef struct { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwVersion; + DWORD dwVersionICM; + WCHAR szName[16]; + WCHAR szDescription[128]; + WCHAR szDriver[128]; +} ICINFO; +typedef struct { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + DWORD ckid; +} ICDECOMPRESS; +typedef struct { + 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; +} ICDECOMPRESSEX; +typedef struct { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiIn; + LPBITMAPINFOHEADER lpbiSuggest; + INT dxSrc; + INT dySrc; + INT dxDst; + INT dyDst; + HIC hicDecompressor; +} ICDRAWSUGGEST; +typedef struct { + DWORD dwFlags; + INT iStart; + INT iLen; + LPPALETTEENTRY lppe; +} ICPALETTE; +typedef struct { + 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; +} ICDRAWBEGIN; +typedef struct { + DWORD dwFlags; + LPVOID lpFormat; + LPVOID lpData; + DWORD cbData; + LONG lTime; +} ICDRAW; +typedef struct { + LONG cbSize; + 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; +} COMPVARS, *PCOMPVARS; +typedef struct _MainAVIHeader +{ + DWORD dwMicroSecPerFrame; + DWORD dwMaxBytesPerSec; + DWORD dwPaddingGranularity; + DWORD dwFlags; + DWORD dwTotalFrames; + DWORD dwInitialFrames; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwReserved[4]; +} MainAVIHeader; +typedef struct { + 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; +} AVIStreamHeader; +typedef struct _AVIINDEXENTRY { + DWORD ckid; + DWORD dwFlags; + DWORD dwChunkOffset; + DWORD dwChunkLength; +} AVIINDEXENTRY; +typedef struct _AVIPALCHANGE { + BYTE bFirstEntry; + BYTE bNumEntries; + WORD wFlags; + PALETTEENTRY peNew[1]; +} AVIPALCHANGE; +typedef 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 szName[64]; +} AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA; +typedef 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 szName[64]; +} AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW; +typedef 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 szFileType[64]; +} AVIFILEINFOW, *LPAVIFILEINFOW, *PAVIFILEINFOW; +typedef 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 szFileType[64]; +} AVIFILEINFOA, *LPAVIFILEINFOA, *PAVIFILEINFOA; +typedef struct _AVICOMPRESSOPTIONS { + DWORD fccType; + DWORD fccHandler; + DWORD dwKeyFrameEvery; + DWORD dwQuality; + DWORD dwBytesPerSecond; + DWORD dwFlags; + LPVOID lpFormat; + DWORD cbFormat; + LPVOID lpParms; + DWORD cbParms; + DWORD dwInterleaveEvery; +} AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS; + +#if !defined (__OBJC__) +#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(CLSID_AVIFile,0x00020000,0,0); + +#undef INTERFACE +#define INTERFACE IAVIStream +DECLARE_INTERFACE_(IAVIStream, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Create)(THIS_ LPARAM,LPARAM) PURE; + STDMETHOD(Info)(THIS_ AVISTREAMINFOW*,LONG) PURE; + STDMETHOD_(LONG,FindSample)(THIS_ LONG,LONG) PURE; + STDMETHOD(ReadFormat)(THIS_ LONG,LPVOID,LONG*) PURE; + STDMETHOD(SetFormat)(THIS_ LONG,LPVOID,LONG) PURE; + STDMETHOD(Read)(THIS_ LONG,LONG,LPVOID,LONG,LONG*,LONG*) PURE; + STDMETHOD(Write)(THIS_ LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*) PURE; + STDMETHOD(Delete)(THIS_ LONG,LONG) PURE; + STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE; + STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE; + STDMETHOD(SetInfo)(THIS_ AVISTREAMINFOW*,LONG) PURE; +}; +typedef IAVIStream *PAVISTREAM; + +#undef INTERFACE +#define INTERFACE IAVIStreaming +DECLARE_INTERFACE_(IAVIStreaming, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE; + STDMETHOD(End)(THIS) PURE; +}; +typedef IAVIStreaming *PAVISTREAMING; + +#undef INTERFACE +#define INTERFACE IAVIEditStream +DECLARE_INTERFACE_(IAVIEditStream, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Cut)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE; + STDMETHOD(Copy)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE; + STDMETHOD(Paste)(THIS_ LONG*,LONG*,PAVISTREAM,LONG,LONG) PURE; + STDMETHOD(Clone)(THIS_ PAVISTREAM*) PURE; + STDMETHOD(SetInfo)(THIS_ LPAVISTREAMINFOW,LONG) PURE; +}; +typedef IAVIEditStream *PAVIEDITSTREAM; + +#undef INTERFACE +#define INTERFACE IAVIFile +DECLARE_INTERFACE_(IAVIFile, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(Info)(THIS_ AVIFILEINFOW*,LONG) PURE; + STDMETHOD(GetStream)(THIS_ PAVISTREAM*,DWORD,LONG) PURE; + STDMETHOD(CreateStream)(THIS_ PAVISTREAM*,AVISTREAMINFOW*) PURE; + STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE; + STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE; + STDMETHOD(EndRecord)(THIS) PURE; + STDMETHOD(DeleteStream)(THIS_ DWORD,LONG) PURE; +}; +typedef IAVIFile *PAVIFILE; + +#undef INTERFACE +#define INTERFACE IGetFrame +DECLARE_INTERFACE_(IGetFrame, IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD_(LPVOID,GetFrame)(THIS_ LONG) PURE; + STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE; + STDMETHOD(End)(THIS) PURE; + STDMETHOD(SetFormat)(THIS_ LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT) PURE; +}; +typedef IGetFrame *PGETFRAME; +#endif /* !defined (__OBJC__) */ + +DWORD VFWAPI VideoForWindowsVersion(VOID); +LONG VFWAPI InitVFW(VOID); +LONG VFWAPI TermVFW(VOID); +DWORD VFWAPIV ICCompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID,LPDWORD,LPDWORD,LONG,DWORD,DWORD,LPBITMAPINFOHEADER,LPVOID); +DWORD VFWAPIV ICDecompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID); +LRESULT VFWAPI ICSendMessage(HIC,UINT,DWORD,DWORD); +HANDLE VFWAPI ICImageCompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO,LONG,LONG*); +HANDLE VFWAPI ICImageDecompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO); +BOOL VFWAPI ICInfo(DWORD,DWORD,ICINFO*); +BOOL VFWAPI ICInstall(DWORD,DWORD,LPARAM,LPSTR,UINT); +BOOL VFWAPI ICRemove(DWORD,DWORD,UINT); +LRESULT VFWAPI ICGetInfo(HIC,ICINFO*,DWORD); +HIC VFWAPI ICOpen(DWORD,DWORD,UINT); +HIC VFWAPI ICOpenFunction(DWORD,DWORD,UINT,FARPROC); +LRESULT VFWAPI ICClose(HIC hic); +HIC VFWAPI ICLocate(DWORD,DWORD,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,WORD); +HIC VFWAPI ICGetDisplayFormat(HIC,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,INT,INT,INT); +DWORD VFWAPIV ICDrawBegin(HIC,DWORD,HPALETTE,HWND,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,INT,INT,INT,INT,DWORD,DWORD); +DWORD VFWAPIV ICDraw(HIC,DWORD,LPVOID,LPVOID,DWORD,LONG); +BOOL VFWAPI ICCompressorChoose(HWND,UINT,LPVOID,LPVOID,PCOMPVARS,LPSTR); +BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS,LPBITMAPINFO); +void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS); +LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS,UINT,LPVOID,BOOL*,LONG*); +void VFWAPI ICCompressorFree(PCOMPVARS); +#if !defined (__OBJC__) +ULONG WINAPI AVIStreamAddRef(PAVISTREAM); +ULONG WINAPI AVIStreamRelease(PAVISTREAM); +HRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*); +HRESULT WINAPI AVIStreamInfoA(PAVISTREAM,AVISTREAMINFOA*,LONG); +HRESULT WINAPI AVIStreamInfoW(PAVISTREAM,AVISTREAMINFOW*,LONG); +HRESULT WINAPI AVIStreamFindSample(PAVISTREAM,LONG,DWORD); +HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM,LONG,LPVOID,LONG*); +HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM,LONG,LPVOID,LONG); +HRESULT WINAPI AVIStreamRead(PAVISTREAM,LONG,LONG,LPVOID,LONG,LONG*,LONG*); +HRESULT WINAPI AVIStreamWrite(PAVISTREAM,LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*); +HRESULT WINAPI AVIStreamReadData(PAVISTREAM,DWORD,LPVOID,LONG*); +HRESULT WINAPI AVIStreamWriteData(PAVISTREAM,DWORD,LPVOID,LONG); +PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM,LPBITMAPINFOHEADER); +LPVOID WINAPI AVIStreamGetFrame(PGETFRAME,LONG); +HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME); +HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*,PAVISTREAM,AVICOMPRESSOPTIONS*,CLSID*); +HRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE*,INT,PAVISTREAM*); +HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM*,LPCSTR,DWORD,LONG,UINT,CLSID*); +HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM*,LPCWSTR,DWORD,LONG,UINT,CLSID*); +HRESULT WINAPI AVIBuildFilterA(LPSTR,LONG,BOOL); +HRESULT WINAPI AVIBuildFilterW(LPWSTR,LONG,BOOL); +BOOL WINAPI AVISaveOptions(HWND,UINT,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*); +HRESULT WINAPI AVISaveOptionsFree(INT,LPAVICOMPRESSOPTIONS*); +HRESULT WINAPI AVISaveVA(LPCSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*); +HRESULT WINAPI AVISaveVW(LPCWSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*); +LONG WINAPI AVIStreamStart(PAVISTREAM); +LONG WINAPI AVIStreamLength(PAVISTREAM); +LONG WINAPI AVIStreamSampleToTime(PAVISTREAM,LONG); +LONG WINAPI AVIStreamTimeToSample(PAVISTREAM,LONG); +HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM); +HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*); +HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*); +HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*); +HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG); +HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG); +HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG); +HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR); +HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR); +HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM); +HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*); +HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*); +HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*); +HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG); +HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG); +HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG); +HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR); +HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR); +VOID WINAPI AVIFileInit(void); +VOID WINAPI AVIFileExit(void); +HRESULT WINAPI AVIFileOpenA(PAVIFILE*,LPCSTR,UINT,LPCLSID); +HRESULT WINAPI AVIFileOpenW(PAVIFILE*,LPCWSTR,UINT,LPCLSID); +ULONG WINAPI AVIFileAddRef(PAVIFILE); +ULONG WINAPI AVIFileRelease(PAVIFILE); +HRESULT WINAPI AVIFileInfoA(PAVIFILE,PAVIFILEINFOA,LONG); +HRESULT WINAPI AVIFileInfoW(PAVIFILE,PAVIFILEINFOW,LONG); +HRESULT WINAPI AVIFileGetStream(PAVIFILE,PAVISTREAM*,DWORD,LONG); +HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE,PAVISTREAM*,AVISTREAMINFOA*); +HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE,PAVISTREAM*,AVISTREAMINFOW*); +HRESULT WINAPI AVIFileWriteData(PAVIFILE,DWORD,LPVOID,LONG); +HRESULT WINAPI AVIFileReadData(PAVIFILE,DWORD,LPVOID,LPLONG); +HRESULT WINAPI AVIFileEndRecord(PAVIFILE); +HRESULT WINAPI AVIClearClipboard(VOID); +HRESULT WINAPI AVIGetFromClipboard(PAVIFILE*); +HRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE); +#endif /* __OBJC__ */ +#ifdef OFN_READONLY +BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA); +BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW); +BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA); +BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW); +#endif +HWND VFWAPIV MCIWndCreateA(HWND,HINSTANCE,DWORD,LPCSTR); +HWND VFWAPIV MCIWndCreateW(HWND,HINSTANCE,DWORD,LPCWSTR); +HDRAWDIB VFWAPI DrawDibOpen(VOID); +UINT VFWAPI DrawDibRealize(HDRAWDIB,HDC,BOOL); +BOOL VFWAPI DrawDibBegin(HDRAWDIB,HDC,INT,INT,LPBITMAPINFOHEADER,INT,INT,UINT); +BOOL VFWAPI DrawDibDraw(HDRAWDIB,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT,UINT); +BOOL VFWAPI DrawDibSetPalette(HDRAWDIB,HPALETTE); +HPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB); +BOOL VFWAPI DrawDibChangePalette(HDRAWDIB,int,int,LPPALETTEENTRY); +LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB,LPBITMAPINFOHEADER,DWORD,DWORD); +BOOL VFWAPI DrawDibStart(HDRAWDIB,DWORD); +BOOL VFWAPI DrawDibStop(HDRAWDIB); +BOOL VFWAPI DrawDibEnd(HDRAWDIB); +BOOL VFWAPI DrawDibClose(HDRAWDIB); +DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER); + +#define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL) +#define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICCompressGetSize(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,0,0) +#define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD)-1,ICMF_ABOUT_QUERY)==ICERR_OK) +#define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD)(hwnd),0) +#define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK) +#define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD)(hwnd),0) +#define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) (LONG)ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic, lpbi, NULL) +#define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput)) +#define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD)(lpbiPalette),0) +#define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,0,0) +#define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,0,0) +#define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS) +#define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW) +#define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD)(pv),(DWORD)(cb)) +#define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD)(pv),(DWORD)(cb)) +#define ICGetStateSize(hic) ICGetState(hic,NULL,0) +#define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD)(prc),sizeof(RECT)) +#define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD)(lpbiInput),0) +#define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD)(lpbiInput),0) +#define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD)(lpdwBuffers),0) +#define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,0,0) +#define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,0,0) +#define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD)(lFrom),(DWORD)(lTo)) +#define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,0,0) +#define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,0,0) +#define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD)(lplTime),0) +#define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD)lTime,0) +#define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD)(hdc),(DWORD)(fBackground)) +#define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,0,0) +#define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,0,0) +#define AVIFileClose(pavi) AVIFileRelease(pavi) +#define AVIStreamClose(pavi) AVIStreamRelease(pavi); +#define AVIStreamEnd(pavi) (AVIStreamStart(pavi)+AVIStreamLength(pavi)) +#define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi)) +#define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) +#define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi)) +#define AVIStreamSampleSize(pavi,pos,psize) AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL) +#define AVIStreamSampleToSample(pavi1,pavi2,samp2) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,samp2)) +#define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi)) +#define AVIStreamNextSample(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_ANY) +#define AVIStreamPrevSample(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_PREV|FIND_ANY) +#define AVIStreamNearestSample(pavi, pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_ANY) +#define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_KEY) +#define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_NEXT|FIND_KEY) +#define AVIStreamNearestKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_KEY) +#define AVIStreamIsKeyFrame(pavi, pos) (AVIStreamNearestKeyFrame(pavi,pos) == pos) +#ifdef __cplusplus +#define MCIWndSM ::SendMessage +#else +#define MCIWndSM SendMessage +#endif +#define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0) +#define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0) +#define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0) +#define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0) +#define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0) +#define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0) +#define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0) +#define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile)) +#define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1) +#define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp)) +#define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0) +#define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz)) +#define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0) +#define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0) +#define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0) +#define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0) +#define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0) +#define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0) +#define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos)) +#define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0) +#define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START) +#define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END) +#define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc)) +#define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc)) +#define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc)) +#define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc)) +#define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0) +#define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos)) +#define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO, 0,(LPARAM)(LONG)(lPos)) +#define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd)) +#define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0) +#define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0) +#define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp)) +#define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0) +#define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp)) +#define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0) +#define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0) +#define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0) +#define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(long)(n)) +#define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0) +#define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom)) +#define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0) +#define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol)) +#define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0) +#define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed)) +#define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0) +#define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp)) +#define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp)) +#define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0) +#define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f)) +#define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0) +#define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames")) +#define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms")) +#define MCIWndSetActiveTimer(hWnd,active) (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),0L) +#define MCIWndSetInactiveTimer(hWnd,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),0L) +#define MCIWndSetTimers(hWnd,active,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive)) +#define MCIWndGetActiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L); +#define MCIWndGetInactiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L); +#define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0) +#define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz)) +#define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) +#define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) +#define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0) +#define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0) +#define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) +#define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp)) +#define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L) +#define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value)) +#define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk)) +#define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0) +#define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE) +static __inline DWORD +ICGetDefaultQuality(HIC hic) +{ + DWORD dwICValue; + ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)); + return dwICValue; +} +static __inline DWORD +ICGetDefaultKeyFrameRate(HIC hic) +{ + DWORD dwICValue; + ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)); + return dwICValue; +} +static __inline 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,(DWORD)&ic,sizeof(ic)); +} +static __inline LRESULT +ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG)) +{ + ICSETSTATUSPROC ic; + ic.dwFlags = dwFlags; + ic.lParam = lParam; + ic.Status = fpfnStatus; + return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD)&ic,sizeof(ic)); +} +static __inline 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,(DWORD)&ic,sizeof(ic)); +} +static __inline 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,(DWORD)&ic,sizeof(ic)); +} +static __inline 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,(DWORD)&ic,sizeof(ic)); +} + +#ifdef UNICODE +#define AVISTREAMINFO AVISTREAMINFOW +#define LPAVISTREAMINFO LPAVISTREAMINFOW +#define PAVISTREAMINFO PAVISTREAMINFOW +#define AVIFILEINFO AVIFILEINFOW +#define PAVIFILEINFO PAVIFILEINFOW +#define LPAVIFILEINFO LPAVIFILEINFOW +#define AVIStreamInfo AVIStreamInfoW +#define AVIStreamOpenFromFile AVIStreamOpenFromFileW +#define AVIBuildFilter AVIBuildFilterW +#define AVISaveV AVISaveVW +#define EditStreamSetInfo EditStreamSetInfoW +#define EditStreamSetName EditStreamSetNameW +#define AVIFileOpen AVIFileOpenW +#define AVIFileInfo AVIFileInfoW +#define AVIFileCreateStream AVIFileCreateStreamW +#define GetOpenFileNamePreview GetOpenFileNamePreviewW +#define GetSaveFileNamePreview GetSaveFileNamePreviewW +#define MCIWndCreate MCIWndCreateW +#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW +#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW +#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW +#define MCIWNDM_GETMODE MCIWNDM_GETMODEW +#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW +#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW +#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW +#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW +#define MCIWNDM_GETERROR MCIWNDM_GETERRORW +#define MCIWNDM_NEW MCIWNDM_NEWW +#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW +#define MCIWNDM_OPEN MCIWNDM_OPENW +#else +#define AVISTREAMINFO AVISTREAMINFOA +#define LPAVISTREAMINFO LPAVISTREAMINFOA +#define PAVISTREAMINFO PAVISTREAMINFOA +#define AVIFILEINFO AVIFILEINFOA +#define PAVIFILEINFO PAVIFILEINFOA +#define LPAVIFILEINFO LPAVIFILEINFOA +#define AVIStreamInfo AVIStreamInfoA +#define AVIStreamOpenFromFile AVIStreamOpenFromFileA +#define AVIBuildFilter AVIBuildFilterA +#define AVISaveV AVISaveVA +#define EditStreamSetInfo EditStreamSetInfoA +#define EditStreamSetName EditStreamSetNameA +#define AVIFileOpen AVIFileOpenA +#define AVIFileInfo AVIFileInfoA +#define AVIFileCreateStream AVIFileCreateStreamA +#define GetOpenFileNamePreview GetOpenFileNamePreviewA +#define GetSaveFileNamePreview GetSaveFileNamePreviewA +#define MCIWndCreate MCIWndCreateA +#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA +#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA +#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA +#define MCIWNDM_GETMODE MCIWNDM_GETMODEA +#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA +#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA +#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA +#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA +#define MCIWNDM_GETERROR MCIWNDM_GETERRORA +#define MCIWNDM_NEW MCIWNDM_NEWA +#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA +#define MCIWNDM_OPEN MCIWNDM_OPENA +#endif + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#include +#endif /* _VFW_H */ diff --git a/reactos/w32api/include/w32api.h b/reactos/w32api/include/w32api.h new file mode 100644 index 00000000000..3e0224164c2 --- /dev/null +++ b/reactos/w32api/include/w32api.h @@ -0,0 +1,11 @@ +#ifndef _W32API_H_ +#define _W32API_H_ +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define __W32API_VERSION 2.5 +#define __W32API_MAJOR_VERSION 2 +#define __W32API_MINOR_VERSION 5 + +#endif /* ndef _W32API_H_ */ diff --git a/reactos/w32api/include/winable.h b/reactos/w32api/include/winable.h new file mode 100644 index 00000000000..0228293531d --- /dev/null +++ b/reactos/w32api/include/winable.h @@ -0,0 +1,99 @@ +#ifndef _WINABLE_H +#define _WINABLE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if (_WIN32_WINNT < 0x0403) +#define INPUT_MOUSE 0x00000000 +#define INPUT_KEYBOARD 0x00000001 +#define INPUT_HARDWARE 0x00000002 +#endif /* (_WIN32_WINNT < 0x04030) */ +#if (WINVER < 0x0500) +#define CHILDID_SELF 0 +#define OBJID_WINDOW 0x00000000 +#define OBJID_SYSMENU 0xFFFFFFFF +#define OBJID_TITLEBAR 0xFFFFFFFE +#define OBJID_MENU 0xFFFFFFFD +#define OBJID_CLIENT 0xFFFFFFFC +#define OBJID_VSCROLL 0xFFFFFFFB +#define OBJID_HSCROLL 0xFFFFFFFA +#define OBJID_SIZEGRIP 0xFFFFFFF9 +#define OBJID_CARET 0xFFFFFFF8 +#define OBJID_CURSOR 0xFFFFFFF7 +#define OBJID_ALERT 0xFFFFFFF6 +#define OBJID_SOUND 0xFFFFFFF5 +#define GUI_CARETBLINKING 0x00000001 +#define GUI_INMOVESIZE 0x00000002 +#define GUI_INMENUMODE 0x00000004 +#define GUI_SYSTEMMENUMODE 0x00000008 +#define GUI_POPUPMENUMODE 0x00000010 +#define WINEVENT_OUTOFCONTEXT 0x0000 +#define WINEVENT_SKIPOWNTHREAD 0x0001 +#define WINEVENT_SKIPOWNPROCESS 0x0002 +#define WINEVENT_INCONTEXT 0x0004 +#endif /* (WINVER < 0x0500) */ +#if (_WIN32_WINNT < 0x0403) +typedef struct tagMOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} MOUSEINPUT,*PMOUSEINPUT; +typedef struct tagKEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} KEYBDINPUT,*PKEYBDINPUT; +typedef struct tagHARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; +} HARDWAREINPUT,*PHARDWAREINPUT; +typedef struct tagINPUT { + DWORD type; + _ANONYMOUS_UNION union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; + } DUMMYUNIONNAME; +} INPUT,*PINPUT,*LPINPUT; +#endif /* (_WIN32_WINNT < 0x0403) */ +#if (WINVER < 0x0500) +typedef VOID (*WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,DWORD,DWORD); +typedef struct tagGUITHREADINFO { + DWORD cbSize; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; +} GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO; +#endif /* (WINVER < 0x0500) */ + +BOOL WINAPI BlockInput(BOOL); +#if (_WIN32_WINNT < 0x0403) +UINT WINAPI SendInput(UINT,LPINPUT,int); +#endif +#if (WINVER < 0x0500) +BOOL WINAPI GetGUIThreadInfo(DWORD,LPGUITHREADINFO); +void WINAPI NotifyWinEvent(DWORD,HWND,LONG,LONG); +HWINEVENTHOOK WINAPI SetWinEventHook(UINT,UINT,HMODULE,WINEVENTPROC,DWORD,DWORD,UINT); +BOOL WINAPI UnhookWinEvent(HWINEVENTHOOK); +#endif /* (WINVER < 0x0500) */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winbase.h b/reactos/w32api/include/winbase.h new file mode 100644 index 00000000000..c953afa9f2a --- /dev/null +++ b/reactos/w32api/include/winbase.h @@ -0,0 +1,2317 @@ +#ifndef _WINBASE_H +#define _WINBASE_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifndef WINBASEAPI +#define WINBASEAPI DECLSPEC_IMPORT +#endif +#ifdef __cplusplus +extern "C" { +#endif + +#define SP_SERIALCOMM 1 +#define PST_UNSPECIFIED 0 +#define PST_RS232 1 +#define PST_PARALLELPORT 2 +#define PST_RS422 3 +#define PST_RS423 4 +#define PST_RS449 5 +#define PST_MODEM 6 +#define PST_FAX 0x21 +#define PST_SCANNER 0x22 +#define PST_NETWORK_BRIDGE 0x100 +#define PST_LAT 0x101 +#define PST_TCPIP_TELNET 0x102 +#define PST_X25 0x103 +#define BAUD_075 1 +#define BAUD_110 2 +#define BAUD_134_5 4 +#define BAUD_150 8 +#define BAUD_300 16 +#define BAUD_600 32 +#define BAUD_1200 64 +#define BAUD_1800 128 +#define BAUD_2400 256 +#define BAUD_4800 512 +#define BAUD_7200 1024 +#define BAUD_9600 2048 +#define BAUD_14400 4096 +#define BAUD_19200 8192 +#define BAUD_38400 16384 +#define BAUD_56K 32768 +#define BAUD_128K 65536 +#define BAUD_115200 131072 +#define BAUD_57600 262144 +#define BAUD_USER 0x10000000 +#define PCF_DTRDSR 1 +#define PCF_RTSCTS 2 +#define PCF_RLSD 4 +#define PCF_PARITY_CHECK 8 +#define PCF_XONXOFF 16 +#define PCF_SETXCHAR 32 +#define PCF_TOTALTIMEOUTS 64 +#define PCF_INTTIMEOUTS 128 +#define PCF_SPECIALCHARS 256 +#define PCF_16BITMODE 512 +#define SP_PARITY 1 +#define SP_BAUD 2 +#define SP_DATABITS 4 +#define SP_STOPBITS 8 +#define SP_HANDSHAKING 16 +#define SP_PARITY_CHECK 32 +#define SP_RLSD 64 +#define DATABITS_5 1 +#define DATABITS_6 2 +#define DATABITS_7 4 +#define DATABITS_8 8 +#define DATABITS_16 16 +#define DATABITS_16X 32 +#define STOPBITS_10 1 +#define STOPBITS_15 2 +#define STOPBITS_20 4 +#define PARITY_NONE 256 +#define PARITY_ODD 512 +#define PARITY_EVEN 1024 +#define PARITY_MARK 2048 +#define PARITY_SPACE 4096 +#define EXCEPTION_DEBUG_EVENT 1 +#define CREATE_THREAD_DEBUG_EVENT 2 +#define CREATE_PROCESS_DEBUG_EVENT 3 +#define EXIT_THREAD_DEBUG_EVENT 4 +#define EXIT_PROCESS_DEBUG_EVENT 5 +#define LOAD_DLL_DEBUG_EVENT 6 +#define UNLOAD_DLL_DEBUG_EVENT 7 +#define OUTPUT_DEBUG_STRING_EVENT 8 +#define RIP_EVENT 9 +#define HFILE_ERROR ((HFILE)-1) +#define FILE_BEGIN 0 +#define FILE_CURRENT 1 +#define FILE_END 2 +#define INVALID_SET_FILE_POINTER ((DWORD)-1) +#define OF_READ 0 +#define OF_READWRITE 2 +#define OF_WRITE 1 +#define OF_SHARE_COMPAT 0 +#define OF_SHARE_DENY_NONE 64 +#define OF_SHARE_DENY_READ 48 +#define OF_SHARE_DENY_WRITE 32 +#define OF_SHARE_EXCLUSIVE 16 +#define OF_CANCEL 2048 +#define OF_CREATE 4096 +#define OF_DELETE 512 +#define OF_EXIST 16384 +#define OF_PARSE 256 +#define OF_PROMPT 8192 +#define OF_REOPEN 32768 +#define OF_VERIFY 1024 +#define NMPWAIT_NOWAIT 1 +#define NMPWAIT_WAIT_FOREVER ((DWORD)-1) +#define NMPWAIT_USE_DEFAULT_WAIT 0 +#define CE_BREAK 16 +#define CE_DNS 2048 +#define CE_FRAME 8 +#define CE_IOE 1024 +#define CE_MODE 32768 +#define CE_OOP 4096 +#define CE_OVERRUN 2 +#define CE_PTO 512 +#define CE_RXOVER 1 +#define CE_RXPARITY 4 +#define CE_TXFULL 256 +#define PROGRESS_CONTINUE 0 +#define PROGRESS_CANCEL 1 +#define PROGRESS_STOP 2 +#define PROGRESS_QUIET 3 +#define CALLBACK_CHUNK_FINISHED 0 +#define CALLBACK_STREAM_SWITCH 1 +#define COPY_FILE_FAIL_IF_EXISTS 1 +#define COPY_FILE_RESTARTABLE 2 +#define OFS_MAXPATHNAME 128 +#define FILE_MAP_ALL_ACCESS 0xf001f +#define FILE_MAP_READ 4 +#define FILE_MAP_WRITE 2 +#define FILE_MAP_COPY 1 +#define MUTEX_ALL_ACCESS 0x1f0001 +#define MUTEX_MODIFY_STATE 1 +#define SEMAPHORE_ALL_ACCESS 0x1f0003 +#define SEMAPHORE_MODIFY_STATE 2 +#define EVENT_ALL_ACCESS 0x1f0003 +#define EVENT_MODIFY_STATE 2 +#define PIPE_ACCESS_DUPLEX 3 +#define PIPE_ACCESS_INBOUND 1 +#define PIPE_ACCESS_OUTBOUND 2 +#define PIPE_TYPE_BYTE 0 +#define PIPE_TYPE_MESSAGE 4 +#define PIPE_READMODE_BYTE 0 +#define PIPE_READMODE_MESSAGE 2 +#define PIPE_WAIT 0 +#define PIPE_NOWAIT 1 +#define PIPE_CLIENT_END 0 +#define PIPE_SERVER_END 1 +#define PIPE_UNLIMITED_INSTANCES 255 +#define DEBUG_PROCESS 0x00000001 +#define DEBUG_ONLY_THIS_PROCESS 0x00000002 +#define CREATE_SUSPENDED 0x00000004 +#define DETACHED_PROCESS 0x00000008 +#define CREATE_NEW_CONSOLE 0x00000010 +#define NORMAL_PRIORITY_CLASS 0x00000020 +#define IDLE_PRIORITY_CLASS 0x00000040 +#define HIGH_PRIORITY_CLASS 0x00000080 +#define REALTIME_PRIORITY_CLASS 0x00000100 +#define CREATE_NEW_PROCESS_GROUP 0x00000200 +#define CREATE_UNICODE_ENVIRONMENT 0x00000400 +#define CREATE_SEPARATE_WOW_VDM 0x00000800 +#define CREATE_SHARED_WOW_VDM 0x00001000 +#define CREATE_FORCEDOS 0x00002000 +#define BELOW_NORMAL_PRIORITY_CLASS 0x00004000 +#define ABOVE_NORMAL_PRIORITY_CLASS 0x00008000 +#define CREATE_BREAKAWAY_FROM_JOB 0x01000000 +#define CREATE_WITH_USERPROFILE 0x02000000 +#define CREATE_DEFAULT_ERROR_MODE 0x04000000 +#define CREATE_NO_WINDOW 0x08000000 +#define PROFILE_USER 0x10000000 +#define PROFILE_KERNEL 0x20000000 +#define PROFILE_SERVER 0x40000000 +#define CONSOLE_TEXTMODE_BUFFER 1 +#define CREATE_NEW 1 +#define CREATE_ALWAYS 2 +#define OPEN_EXISTING 3 +#define OPEN_ALWAYS 4 +#define TRUNCATE_EXISTING 5 +#define FILE_FLAG_WRITE_THROUGH 0x80000000 +#define FILE_FLAG_OVERLAPPED 1073741824 +#define FILE_FLAG_NO_BUFFERING 536870912 +#define FILE_FLAG_RANDOM_ACCESS 268435456 +#define FILE_FLAG_SEQUENTIAL_SCAN 134217728 +#define FILE_FLAG_DELETE_ON_CLOSE 67108864 +#define FILE_FLAG_BACKUP_SEMANTICS 33554432 +#define FILE_FLAG_POSIX_SEMANTICS 16777216 +#define FILE_FLAG_OPEN_REPARSE_POINT 2097152 +#define FILE_FLAG_OPEN_NO_RECALL 1048576 +#if (_WIN32_WINNT >= 0x0500) +#define FILE_FLAG_FIRST_PIPE_INSTANCE 524288 +#endif +#define CLRDTR 6 +#define CLRRTS 4 +#define SETDTR 5 +#define SETRTS 3 +#define SETXOFF 1 +#define SETXON 2 +#define SETBREAK 8 +#define CLRBREAK 9 +#define STILL_ACTIVE 0x103 +#define FIND_FIRST_EX_CASE_SENSITIVE 1 +#define SCS_32BIT_BINARY 0 +#define SCS_DOS_BINARY 1 +#define SCS_OS216_BINARY 5 +#define SCS_PIF_BINARY 3 +#define SCS_POSIX_BINARY 4 +#define SCS_WOW_BINARY 2 +#define MAX_COMPUTERNAME_LENGTH 15 +#define HW_PROFILE_GUIDLEN 39 +#define MAX_PROFILE_LEN 80 +#define DOCKINFO_UNDOCKED 1 +#define DOCKINFO_DOCKED 2 +#define DOCKINFO_USER_SUPPLIED 4 +#define DOCKINFO_USER_UNDOCKED (DOCKINFO_USER_SUPPLIED|DOCKINFO_UNDOCKED) +#define DOCKINFO_USER_DOCKED (DOCKINFO_USER_SUPPLIED|DOCKINFO_DOCKED) +#define DRIVE_REMOVABLE 2 +#define DRIVE_FIXED 3 +#define DRIVE_REMOTE 4 +#define DRIVE_CDROM 5 +#define DRIVE_RAMDISK 6 +#define DRIVE_UNKNOWN 0 +#define DRIVE_NO_ROOT_DIR 1 +#define FILE_TYPE_UNKNOWN 0 +#define FILE_TYPE_DISK 1 +#define FILE_TYPE_CHAR 2 +#define FILE_TYPE_PIPE 3 +#define FILE_TYPE_REMOTE 0x8000 +/* also in ddk/ntapi.h */ +#define HANDLE_FLAG_INHERIT 0x01 +#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02 +/* end ntapi.h */ +#define STD_INPUT_HANDLE (DWORD)(0xfffffff6) +#define STD_OUTPUT_HANDLE (DWORD)(0xfffffff5) +#define STD_ERROR_HANDLE (DWORD)(0xfffffff4) +#define INVALID_HANDLE_VALUE (HANDLE)(-1) +#define GET_TAPE_MEDIA_INFORMATION 0 +#define GET_TAPE_DRIVE_INFORMATION 1 +#define SET_TAPE_MEDIA_INFORMATION 0 +#define SET_TAPE_DRIVE_INFORMATION 1 +#define THREAD_PRIORITY_ABOVE_NORMAL 1 +#define THREAD_PRIORITY_BELOW_NORMAL (-1) +#define THREAD_PRIORITY_HIGHEST 2 +#define THREAD_PRIORITY_IDLE (-15) +#define THREAD_PRIORITY_LOWEST (-2) +#define THREAD_PRIORITY_NORMAL 0 +#define THREAD_PRIORITY_TIME_CRITICAL 15 +#define THREAD_PRIORITY_ERROR_RETURN 2147483647 +#define TIME_ZONE_ID_UNKNOWN 0 +#define TIME_ZONE_ID_STANDARD 1 +#define TIME_ZONE_ID_DAYLIGHT 2 +#define TIME_ZONE_ID_INVALID 0xFFFFFFFF +#define FS_CASE_IS_PRESERVED 2 +#define FS_CASE_SENSITIVE 1 +#define FS_UNICODE_STORED_ON_DISK 4 +#define FS_PERSISTENT_ACLS 8 +#define FS_FILE_COMPRESSION 16 +#define FS_VOL_IS_COMPRESSED 32768 +#define GMEM_FIXED 0 +#define GMEM_MOVEABLE 2 +#define GMEM_MODIFY 128 +#define GPTR 64 +#define GHND 66 +#define GMEM_DDESHARE 8192 +#define GMEM_DISCARDABLE 256 +#define GMEM_LOWER 4096 +#define GMEM_NOCOMPACT 16 +#define GMEM_NODISCARD 32 +#define GMEM_NOT_BANKED 4096 +#define GMEM_NOTIFY 16384 +#define GMEM_SHARE 8192 +#define GMEM_ZEROINIT 64 +#define GMEM_DISCARDED 16384 +#define GMEM_INVALID_HANDLE 32768 +#define GMEM_LOCKCOUNT 255 +#define GMEM_VALID_FLAGS 32626 +#define STATUS_WAIT_0 0 +#define STATUS_ABANDONED_WAIT_0 0x80 +#define STATUS_USER_APC 0xC0 +#define STATUS_TIMEOUT 0x102 +#define STATUS_PENDING 0x103 +#define STATUS_SEGMENT_NOTIFICATION 0x40000005 +#define STATUS_GUARD_PAGE_VIOLATION 0x80000001 +#define STATUS_DATATYPE_MISALIGNMENT 0x80000002 +#define STATUS_BREAKPOINT 0x80000003 +#define STATUS_SINGLE_STEP 0x80000004 +#define STATUS_ACCESS_VIOLATION 0xC0000005 +#define STATUS_IN_PAGE_ERROR 0xC0000006 +#define STATUS_INVALID_HANDLE 0xC0000008L +#define STATUS_NO_MEMORY 0xC0000017 +#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D +#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025 +#define STATUS_INVALID_DISPOSITION 0xC0000026 +#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C +#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D +#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E +#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F +#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090 +#define STATUS_FLOAT_OVERFLOW 0xC0000091 +#define STATUS_FLOAT_STACK_CHECK 0xC0000092 +#define STATUS_FLOAT_UNDERFLOW 0xC0000093 +#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094 +#define STATUS_INTEGER_OVERFLOW 0xC0000095 +#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096 +#define STATUS_STACK_OVERFLOW 0xC00000FD +#define STATUS_CONTROL_C_EXIT 0xC000013A +#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION +#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT +#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT +#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP +#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED +#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND +#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO +#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT +#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION +#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW +#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK +#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW +#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO +#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW +#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION +#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR +#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION +#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION +#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW +#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION +#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION +#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE +#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT +#define PROCESS_HEAP_REGION 1 +#define PROCESS_HEAP_UNCOMMITTED_RANGE 2 +#define PROCESS_HEAP_ENTRY_BUSY 4 +#define PROCESS_HEAP_ENTRY_MOVEABLE 16 +#define PROCESS_HEAP_ENTRY_DDESHARE 32 +#define DONT_RESOLVE_DLL_REFERENCES 1 +#define LOAD_LIBRARY_AS_DATAFILE 2 +#define LOAD_WITH_ALTERED_SEARCH_PATH 8 +#define LMEM_FIXED 0 +#define LMEM_MOVEABLE 2 +#define LMEM_NONZEROLHND 2 +#define LMEM_NONZEROLPTR 0 +#define LMEM_DISCARDABLE 3840 +#define LMEM_NOCOMPACT 16 +#define LMEM_NODISCARD 32 +#define LMEM_ZEROINIT 64 +#define LMEM_DISCARDED 16384 +#define LMEM_MODIFY 128 +#define LMEM_INVALID_HANDLE 32768 +#define LMEM_LOCKCOUNT 255 +#define LPTR 64 +#define LHND 66 +#define NONZEROLHND 2 +#define NONZEROLPTR 0 +#define LOCKFILE_FAIL_IMMEDIATELY 1 +#define LOCKFILE_EXCLUSIVE_LOCK 2 +#define LOGON32_PROVIDER_DEFAULT 0 +#define LOGON32_PROVIDER_WINNT35 1 +#define LOGON32_LOGON_INTERACTIVE 2 +#define LOGON32_LOGON_BATCH 4 +#define LOGON32_LOGON_SERVICE 5 +#define MOVEFILE_REPLACE_EXISTING 1 +#define MOVEFILE_COPY_ALLOWED 2 +#define MOVEFILE_DELAY_UNTIL_REBOOT 4 +#define MOVEFILE_WRITE_THROUGH 8 +#define MAXIMUM_WAIT_OBJECTS 64 +#define MAXIMUM_SUSPEND_COUNT 0x7F +#define WAIT_OBJECT_0 0 +#define WAIT_ABANDONED_0 128 +#ifndef WAIT_TIMEOUT /* also in winerror.h */ +#define WAIT_TIMEOUT 258 +#endif +#define WAIT_IO_COMPLETION 0xC0 +#define WAIT_ABANDONED 128 +#define WAIT_FAILED ((DWORD)0xFFFFFFFF) +#define PURGE_TXABORT 1 +#define PURGE_RXABORT 2 +#define PURGE_TXCLEAR 4 +#define PURGE_RXCLEAR 8 +#define EVENTLOG_SUCCESS 0 +#define EVENTLOG_FORWARDS_READ 4 +#define EVENTLOG_BACKWARDS_READ 8 +#define EVENTLOG_SEEK_READ 2 +#define EVENTLOG_SEQUENTIAL_READ 1 +#define EVENTLOG_ERROR_TYPE 1 +#define EVENTLOG_WARNING_TYPE 2 +#define EVENTLOG_INFORMATION_TYPE 4 +#define EVENTLOG_AUDIT_SUCCESS 8 +#define EVENTLOG_AUDIT_FAILURE 16 +#define FORMAT_MESSAGE_ALLOCATE_BUFFER 256 +#define FORMAT_MESSAGE_IGNORE_INSERTS 512 +#define FORMAT_MESSAGE_FROM_STRING 1024 +#define FORMAT_MESSAGE_FROM_HMODULE 2048 +#define FORMAT_MESSAGE_FROM_SYSTEM 4096 +#define FORMAT_MESSAGE_ARGUMENT_ARRAY 8192 +#define FORMAT_MESSAGE_MAX_WIDTH_MASK 255 +#define EV_BREAK 64 +#define EV_CTS 8 +#define EV_DSR 16 +#define EV_ERR 128 +#define EV_EVENT1 2048 +#define EV_EVENT2 4096 +#define EV_PERR 512 +#define EV_RING 256 +#define EV_RLSD 32 +#define EV_RX80FULL 1024 +#define EV_RXCHAR 1 +#define EV_RXFLAG 2 +#define EV_TXEMPTY 4 +/* also in ddk/ntapi.h */ +#define SEM_FAILCRITICALERRORS 0x0001 +#define SEM_NOGPFAULTERRORBOX 0x0002 +#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004 +#define SEM_NOOPENFILEERRORBOX 0x8000 +/* end ntapi.h */ +#define SLE_ERROR 1 +#define SLE_MINORERROR 2 +#define SLE_WARNING 3 +#define SHUTDOWN_NORETRY 1 +#define EXCEPTION_EXECUTE_HANDLER 1 +#define EXCEPTION_CONTINUE_EXECUTION (-1) +#define EXCEPTION_CONTINUE_SEARCH 0 +#define MAXINTATOM 0xC000 +#define INVALID_ATOM ((ATOM)0) +#define IGNORE 0 +#define INFINITE 0xFFFFFFFF +#define NOPARITY 0 +#define ODDPARITY 1 +#define EVENPARITY 2 +#define MARKPARITY 3 +#define SPACEPARITY 4 +#define ONESTOPBIT 0 +#define ONE5STOPBITS 1 +#define TWOSTOPBITS 2 +#define CBR_110 110 +#define CBR_300 300 +#define CBR_600 600 +#define CBR_1200 1200 +#define CBR_2400 2400 +#define CBR_4800 4800 +#define CBR_9600 9600 +#define CBR_14400 14400 +#define CBR_19200 19200 +#define CBR_38400 38400 +#define CBR_56000 56000 +#define CBR_57600 57600 +#define CBR_115200 115200 +#define CBR_128000 128000 +#define CBR_256000 256000 +#define BACKUP_INVALID 0 +#define BACKUP_DATA 1 +#define BACKUP_EA_DATA 2 +#define BACKUP_SECURITY_DATA 3 +#define BACKUP_ALTERNATE_DATA 4 +#define BACKUP_LINK 5 +#define BACKUP_PROPERTY_DATA 6 +#define BACKUP_OBJECT_ID 7 +#define BACKUP_REPARSE_DATA 8 +#define BACKUP_SPARSE_BLOCK 9 +#define STREAM_NORMAL_ATTRIBUTE 0 +#define STREAM_MODIFIED_WHEN_READ 1 +#define STREAM_CONTAINS_SECURITY 2 +#define STREAM_CONTAINS_PROPERTIES 4 +#define STARTF_USESHOWWINDOW 1 +#define STARTF_USESIZE 2 +#define STARTF_USEPOSITION 4 +#define STARTF_USECOUNTCHARS 8 +#define STARTF_USEFILLATTRIBUTE 16 +#define STARTF_RUNFULLSCREEN 32 +#define STARTF_FORCEONFEEDBACK 64 +#define STARTF_FORCEOFFFEEDBACK 128 +#define STARTF_USESTDHANDLES 256 +#define STARTF_USEHOTKEY 512 +#define TC_NORMAL 0 +#define TC_HARDERR 1 +#define TC_GP_TRAP 2 +#define TC_SIGNAL 3 +#define AC_LINE_OFFLINE 0 +#define AC_LINE_ONLINE 1 +#define AC_LINE_BACKUP_POWER 2 +#define AC_LINE_UNKNOWN 255 +#define BATTERY_FLAG_HIGH 1 +#define BATTERY_FLAG_LOW 2 +#define BATTERY_FLAG_CRITICAL 4 +#define BATTERY_FLAG_CHARGING 8 +#define BATTERY_FLAG_NO_BATTERY 128 +#define BATTERY_FLAG_UNKNOWN 255 +#define BATTERY_PERCENTAGE_UNKNOWN 255 +#define BATTERY_LIFE_UNKNOWN 0xFFFFFFFF +#define DDD_RAW_TARGET_PATH 1 +#define DDD_REMOVE_DEFINITION 2 +#define DDD_EXACT_MATCH_ON_REMOVE 4 +#define HINSTANCE_ERROR 32 +#define MS_CTS_ON 16 +#define MS_DSR_ON 32 +#define MS_RING_ON 64 +#define MS_RLSD_ON 128 +#define DTR_CONTROL_DISABLE 0 +#define DTR_CONTROL_ENABLE 1 +#define DTR_CONTROL_HANDSHAKE 2 +#define RTS_CONTROL_DISABLE 0 +#define RTS_CONTROL_ENABLE 1 +#define RTS_CONTROL_HANDSHAKE 2 +#define RTS_CONTROL_TOGGLE 3 +#define SECURITY_ANONYMOUS (SecurityAnonymous<<16) +#define SECURITY_IDENTIFICATION (SecurityIdentification<<16) +#define SECURITY_IMPERSONATION (SecurityImpersonation<<16) +#define SECURITY_DELEGATION (SecurityDelegation<<16) +#define SECURITY_CONTEXT_TRACKING 0x40000 +#define SECURITY_EFFECTIVE_ONLY 0x80000 +#define SECURITY_SQOS_PRESENT 0x100000 +#define SECURITY_VALID_SQOS_FLAGS 0x1F0000 +#define INVALID_FILE_SIZE 0xFFFFFFFF +#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF +#if (_WIN32_WINNT >= 0x0501) +#define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID 0x00000001 +#define ACTCTX_FLAG_LANGID_VALID 0x00000002 +#define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID 0x00000004 +#define ACTCTX_FLAG_RESOURCE_NAME_VALID 0x00000008 +#define ACTCTX_FLAG_SET_PROCESS_DEFAULT 0x00000010 +#define ACTCTX_FLAG_APPLICATION_NAME_VALID 0x00000020 +#define ACTCTX_FLAG_HMODULE_VALID 0x00000080 +#define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION 0x00000001 +#define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX 0x00000001 +#define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX 0x00000004 +#define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE 0x00000008 +#define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS 0x00000010 +#endif /* (_WIN32_WINNT >= 0x0501) */ +#if (_WIN32_WINNT >= 0x0500) +#define REPLACEFILE_WRITE_THROUGH 0x00000001 +#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002 +#endif /* (_WIN32_WINNT >= 0x0500) */ + +#ifndef RC_INVOKED +typedef struct _FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} FILETIME,*PFILETIME,*LPFILETIME; +typedef 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; +} BY_HANDLE_FILE_INFORMATION,*LPBY_HANDLE_FILE_INFORMATION; +typedef struct _DCB { + DWORD DCBlength; + DWORD BaudRate; + DWORD fBinary:1; + DWORD fParity:1; + DWORD fOutxCtsFlow:1; + DWORD fOutxDsrFlow:1; + DWORD fDtrControl:2; + DWORD fDsrSensitivity:1; + DWORD fTXContinueOnXoff:1; + DWORD fOutX:1; + DWORD fInX:1; + DWORD fErrorChar:1; + DWORD fNull:1; + DWORD fRtsControl:2; + DWORD fAbortOnError:1; + DWORD fDummy2:17; + WORD wReserved; + WORD XonLim; + WORD XoffLim; + BYTE ByteSize; + BYTE Parity; + BYTE StopBits; + char XonChar; + char XoffChar; + char ErrorChar; + char EofChar; + char EvtChar; + WORD wReserved1; +} DCB,*LPDCB; +typedef struct _COMM_CONFIG { + DWORD dwSize; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR wcProviderData[1]; +} COMMCONFIG,*LPCOMMCONFIG; +typedef 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[1]; +} COMMPROP,*LPCOMMPROP; +typedef struct _COMMTIMEOUTS { + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; +} COMMTIMEOUTS,*LPCOMMTIMEOUTS; +typedef 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 cbInQue; + DWORD cbOutQue; +} COMSTAT,*LPCOMSTAT; +typedef DWORD (WINAPI *LPTHREAD_START_ROUTINE)(LPVOID); +typedef 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; +} CREATE_PROCESS_DEBUG_INFO,*LPCREATE_PROCESS_DEBUG_INFO; +typedef struct _CREATE_THREAD_DEBUG_INFO { + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; +} CREATE_THREAD_DEBUG_INFO,*LPCREATE_THREAD_DEBUG_INFO; +typedef struct _EXCEPTION_DEBUG_INFO { + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; +} EXCEPTION_DEBUG_INFO,*LPEXCEPTION_DEBUG_INFO; +typedef struct _EXIT_THREAD_DEBUG_INFO { + DWORD dwExitCode; +} EXIT_THREAD_DEBUG_INFO,*LPEXIT_THREAD_DEBUG_INFO; +typedef struct _EXIT_PROCESS_DEBUG_INFO { + DWORD dwExitCode; +} EXIT_PROCESS_DEBUG_INFO,*LPEXIT_PROCESS_DEBUG_INFO; +typedef struct _LOAD_DLL_DEBUG_INFO { + HANDLE hFile; + LPVOID lpBaseOfDll; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpImageName; + WORD fUnicode; +} LOAD_DLL_DEBUG_INFO,*LPLOAD_DLL_DEBUG_INFO; +typedef struct _UNLOAD_DLL_DEBUG_INFO { + LPVOID lpBaseOfDll; +} UNLOAD_DLL_DEBUG_INFO,*LPUNLOAD_DLL_DEBUG_INFO; +typedef struct _OUTPUT_DEBUG_STRING_INFO { + LPSTR lpDebugStringData; + WORD fUnicode; + WORD nDebugStringLength; +} OUTPUT_DEBUG_STRING_INFO,*LPOUTPUT_DEBUG_STRING_INFO; +typedef struct _RIP_INFO { + DWORD dwError; + DWORD dwType; +} RIP_INFO,*LPRIP_INFO; +typedef 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; + } u; +} DEBUG_EVENT,*LPDEBUG_EVENT; +typedef struct _OVERLAPPED { + DWORD Internal; + DWORD InternalHigh; + DWORD Offset; + DWORD OffsetHigh; + HANDLE hEvent; +} OVERLAPPED,*POVERLAPPED,*LPOVERLAPPED; +typedef struct _STARTUPINFOA { + DWORD cb; + 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; +} STARTUPINFOA,*LPSTARTUPINFOA; +typedef struct _STARTUPINFOW { + DWORD cb; + 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; +} STARTUPINFOW,*LPSTARTUPINFOW; +typedef struct _PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} PROCESS_INFORMATION,*LPPROCESS_INFORMATION; +typedef struct _CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + struct _CRITICAL_SECTION *CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD Spare [2]; +} CRITICAL_SECTION_DEBUG,*PCRITICAL_SECTION_DEBUG; +typedef struct _CRITICAL_SECTION { + PCRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD SpinCount; +} CRITICAL_SECTION,*PCRITICAL_SECTION,*LPCRITICAL_SECTION; +typedef struct _SYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; +} SYSTEMTIME,*LPSYSTEMTIME; +typedef struct _WIN32_FILE_ATTRIBUTE_DATA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +} WIN32_FILE_ATTRIBUTE_DATA,*LPWIN32_FILE_ATTRIBUTE_DATA; +typedef struct _WIN32_FIND_DATAA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + CHAR cFileName[MAX_PATH]; + CHAR cAlternateFileName[14]; +} WIN32_FIND_DATAA,*PWIN32_FIND_DATAA,*LPWIN32_FIND_DATAA; +typedef struct _WIN32_FIND_DATAW { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + WCHAR cFileName[MAX_PATH]; + WCHAR cAlternateFileName[14]; +} WIN32_FIND_DATAW,*PWIN32_FIND_DATAW,*LPWIN32_FIND_DATAW; +typedef struct _WIN32_STREAM_ID { + DWORD dwStreamId; + DWORD dwStreamAttributes; + LARGE_INTEGER Size; + DWORD dwStreamNameSize; + WCHAR cStreamName[ANYSIZE_ARRAY]; +} WIN32_STREAM_ID, *LPWIN32_STREAM_ID; +typedef enum _FINDEX_INFO_LEVELS { + FindExInfoStandard, + FindExInfoMaxInfoLevel +} FINDEX_INFO_LEVELS; +typedef enum _FINDEX_SEARCH_OPS { + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp +} FINDEX_SEARCH_OPS; +typedef enum _ACL_INFORMATION_CLASS { + AclRevisionInformation=1, + AclSizeInformation +} ACL_INFORMATION_CLASS; +typedef struct tagHW_PROFILE_INFOA { + DWORD dwDockInfo; + CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; + CHAR szHwProfileName[MAX_PROFILE_LEN]; +} HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA; +typedef struct tagHW_PROFILE_INFOW { + DWORD dwDockInfo; + WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; + WCHAR szHwProfileName[MAX_PROFILE_LEN]; +} HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW; +typedef enum _GET_FILEEX_INFO_LEVELS { + GetFileExInfoStandard, + GetFileExMaxInfoLevel +} GET_FILEEX_INFO_LEVELS; +typedef struct _SYSTEM_INFO { + _ANONYMOUS_UNION union { + DWORD dwOemId; + _ANONYMOUS_STRUCT struct { + WORD wProcessorArchitecture; + WORD wReserved; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + DWORD dwPageSize; + PVOID lpMinimumApplicationAddress; + PVOID lpMaximumApplicationAddress; + DWORD dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; +} SYSTEM_INFO,*LPSYSTEM_INFO; +typedef struct _SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE Reserved1; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; +} SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS; +typedef struct _TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR StandardName[32]; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR DaylightName[32]; + SYSTEMTIME DaylightDate; + LONG DaylightBias; +} TIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION; +typedef struct _MEMORYSTATUS { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORD dwTotalPhys; + DWORD dwAvailPhys; + DWORD dwTotalPageFile; + DWORD dwAvailPageFile; + DWORD dwTotalVirtual; + DWORD dwAvailVirtual; +} MEMORYSTATUS,*LPMEMORYSTATUS; +#if (_WIN32_WINNT >= 0x0500) +typedef struct _MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; +} MEMORYSTATUSEX, *LPMEMORYSTATUSEX; +#endif +typedef struct _LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; + union { + struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + } Bytes; + struct { + 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; + } Bits; + } HighWord; +} LDT_ENTRY,*PLDT_ENTRY,*LPLDT_ENTRY; +typedef struct _PROCESS_HEAP_ENTRY { + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; + _ANONYMOUS_UNION union { + struct { + HANDLE hMem; + DWORD dwReserved[3]; + } Block; + struct { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; + } Region; + } DUMMYUNIONNAME; +} PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY; +typedef struct _OFSTRUCT { + BYTE cBytes; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR szPathName[OFS_MAXPATHNAME]; +} OFSTRUCT,*LPOFSTRUCT,*POFSTRUCT; +typedef struct _WIN_CERTIFICATE { + DWORD dwLength; + WORD wRevision; + WORD wCertificateType; + BYTE bCertificate[1]; +} WIN_CERTIFICATE, *LPWIN_CERTIFICATE; +#if (_WIN32_WINNT >= 0x0501) +typedef struct tagACTCTXA { + ULONG cbSize; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; +} ACTCTXA,*PACTCTXA; +typedef const ACTCTXA *PCACTCTXA; +typedef struct tagACTCTXW { + ULONG cbSize; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; +} ACTCTXW,*PACTCTXW; +typedef const ACTCTXW *PCACTCTXW; +typedef struct tagACTCTX_SECTION_KEYED_DATA { + ULONG cbSize; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + HANDLE ulAssemblyRosterIndex; +} ACTCTX_SECTION_KEYED_DATA,*PACTCTX_SECTION_KEYED_DATA; +typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA; +typedef enum { + LowMemoryResourceNotification , + HighMemoryResourceNotification +} MEMORY_RESOURCE_NOTIFICATION_TYPE; +#endif /* (_WIN32_WINNT >= 0x0501) */ +#if (_WIN32_WINNT >= 0x0500) +typedef enum _COMPUTER_NAME_FORMAT { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax +} COMPUTER_NAME_FORMAT; +#endif /* (_WIN32_WINNT >= 0x0500) */ + +typedef DWORD(WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID); +typedef void(WINAPI *LPFIBER_START_ROUTINE)(PVOID); +typedef BOOL(CALLBACK *ENUMRESLANGPROC)(HMODULE,LPCTSTR,LPCTSTR,WORD,LONG); +typedef BOOL(CALLBACK *ENUMRESNAMEPROC)(HMODULE,LPCTSTR,LPTSTR,LONG); +typedef BOOL(CALLBACK *ENUMRESTYPEPROC)(HMODULE,LPTSTR,LONG); +typedef void(CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPED); +typedef LONG(CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(LPEXCEPTION_POINTERS); +typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; +typedef void(APIENTRY *PAPCFUNC)(DWORD); +typedef void(CALLBACK *PTIMERAPCROUTINE)(PVOID,DWORD,DWORD); +#if (_WIN32_WINNT >= 0x0500) +typedef void(CALLBACK *WAITORTIMERCALLBACK)(PVOID,BOOLEAN); +#endif +#define MAKEINTATOM(i) (LPTSTR)((DWORD)((WORD)(i))) +/* Functions */ +#ifndef UNDER_CE +int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int); +#else +int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPWSTR,int); +#endif +int APIENTRY wWinMain(HINSTANCE,HINSTANCE,LPWSTR,int); +long WINAPI _hread(HFILE,LPVOID,long); +long WINAPI _hwrite(HFILE,LPCSTR,long); +HFILE WINAPI _lclose(HFILE); +HFILE WINAPI _lcreat(LPCSTR,int); +LONG WINAPI _llseek(HFILE,LONG,int); +HFILE WINAPI _lopen(LPCSTR,int); +UINT WINAPI _lread(HFILE,LPVOID,UINT); +UINT WINAPI _lwrite(HFILE,LPCSTR,UINT); +#define AbnormalTermination() FALSE +BOOL WINAPI AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,PDWORD,PDWORD,PBOOL); +BOOL WINAPI AccessCheckAndAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL); +BOOL WINAPI AccessCheckAndAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI ActivateActCtx(HANDLE,ULONG_PTR*); +#endif +BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID); +BOOL WINAPI AddAccessDeniedAce(PACL,DWORD,DWORD,PSID); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID); +BOOL WINAPI AddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID); +#endif +BOOL WINAPI AddAce(PACL,DWORD,DWORD,PVOID,DWORD); +ATOM WINAPI AddAtomA(LPCSTR); +ATOM WINAPI AddAtomW(LPCWSTR); +BOOL WINAPI AddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL); +#if (_WIN32_WINNT >= 0x0501) +void WINAPI AddRefActCtx(HANDLE); +#endif +#if (_WIN32_WINNT >= 0x0500) +PVOID WINAPI AddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER); +#endif +BOOL WINAPI AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD); +BOOL WINAPI AdjustTokenPrivileges(HANDLE,BOOL,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD); +BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID*); +BOOL WINAPI AllocateLocallyUniqueId(PLUID); +BOOL WINAPI AreAllAccessesGranted(DWORD,DWORD); +BOOL WINAPI AreAnyAccessesGranted(DWORD,DWORD); +BOOL WINAPI AreFileApisANSI(void); +BOOL WINAPI BackupEventLogA(HANDLE,LPCSTR); +BOOL WINAPI BackupEventLogW(HANDLE,LPCWSTR); +BOOL WINAPI BackupRead(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*); +BOOL WINAPI BackupSeek(HANDLE,DWORD,DWORD,LPDWORD,LPDWORD,LPVOID*); +BOOL WINAPI BackupWrite(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*); +BOOL WINAPI Beep(DWORD,DWORD); +HANDLE WINAPI BeginUpdateResourceA(LPCSTR,BOOL); +HANDLE WINAPI BeginUpdateResourceW(LPCWSTR,BOOL); +BOOL WINAPI BuildCommDCBA(LPCSTR,LPDCB); +BOOL WINAPI BuildCommDCBW(LPCWSTR,LPDCB); +BOOL WINAPI BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS); +BOOL WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS); +BOOL WINAPI CallNamedPipeA(LPCSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD); +BOOL WINAPI CallNamedPipeW(LPCWSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD); +BOOL WINAPI CancelDeviceWakeupRequest(HANDLE); +BOOL WINAPI CancelIo(HANDLE); +BOOL WINAPI CancelWaitableTimer(HANDLE); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI CheckNameLegalDOS8Dot3A(LPCSTR,LPSTR,DWORD,PBOOL,PBOOL); +BOOL WINAPI CheckNameLegalDOS8Dot3W(LPCWSTR,LPSTR,DWORD,PBOOL,PBOOL); +BOOL WINAPI CheckRemoteDebuggerPresent(HANDLE,PBOOL); +#endif +BOOL WINAPI ClearCommBreak(HANDLE); +BOOL WINAPI ClearCommError(HANDLE,PDWORD,LPCOMSTAT); +BOOL WINAPI ClearEventLogA(HANDLE,LPCSTR); +BOOL WINAPI ClearEventLogW(HANDLE,LPCWSTR); +BOOL WINAPI CloseEventLog(HANDLE); +BOOL WINAPI CloseHandle(HANDLE); +BOOL WINAPI CommConfigDialogA(LPCSTR,HWND,LPCOMMCONFIG); +BOOL WINAPI CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG); +LONG WINAPI CompareFileTime(CONST FILETIME*,CONST FILETIME*); +BOOL WINAPI ConnectNamedPipe(HANDLE,LPOVERLAPPED); +BOOL WINAPI ContinueDebugEvent(DWORD,DWORD,DWORD); +#if (_WIN32_WINNT >= 0x0400) +BOOL WINAPI ConvertFiberToThread(void); +#endif +PVOID WINAPI ConvertThreadToFiber(PVOID); +BOOL WINAPI CopyFileA(LPCSTR,LPCSTR,BOOL); +BOOL WINAPI CopyFileW(LPCWSTR,LPCWSTR,BOOL); +BOOL WINAPI CopyFileExA(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD); +BOOL WINAPI CopyFileExW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD); +#define RtlMoveMemory memmove +#define RtlCopyMemory memcpy +#define RtlFillMemory(d,l,f) memset((d), (f), (l)) +#define RtlZeroMemory(d,l) RtlFillMemory((d),(l),0) +#define MoveMemory RtlMoveMemory +#define CopyMemory RtlCopyMemory +#define FillMemory RtlFillMemory +#define ZeroMemory RtlZeroMemory +BOOL WINAPI CopySid(DWORD,PSID,PSID); +#if (_WIN32_WINNT >= 0x0501) +HANDLE WINAPI CreateActCtxA(PCACTCTXA); +HANDLE WINAPI CreateActCtxW(PCACTCTXW); +#endif +BOOL WINAPI CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES); +BOOL WINAPI CreateDirectoryW(LPCWSTR,LPSECURITY_ATTRIBUTES); +BOOL WINAPI CreateDirectoryExA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES); +BOOL WINAPI CreateDirectoryExW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES); +HANDLE WINAPI CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR); +HANDLE WINAPI CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR); +LPVOID WINAPI CreateFiber(SIZE_T,LPFIBER_START_ROUTINE,LPVOID); +#if (_WIN32_WINNT >= 0x0400) +LPVOID WINAPI CreateFiberEx(SIZE_T,SIZE_T,DWORD,LPFIBER_START_ROUTINE,LPVOID); +#endif +HANDLE WINAPI CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE); +HANDLE WINAPI CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE); +HANDLE WINAPI CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR); +HANDLE WINAPI CreateFileMappingW(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI CreateHardLinkA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES); +BOOL WINAPI CreateHardLinkW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES); +#endif +HANDLE WINAPI CreateIoCompletionPort(HANDLE,HANDLE,DWORD,DWORD); +#if (_WIN32_WINNT >= 0x0500) +HANDLE WINAPI CreateJobObjectA(LPSECURITY_ATTRIBUTES,LPCSTR); +HANDLE WINAPI CreateJobObjectW(LPSECURITY_ATTRIBUTES,LPCWSTR); +BOOL WINAPI TerminateJobObject(HANDLE,UINT); +BOOL WINAPI AssignProcessToJobObject(HANDLE,HANDLE); +#endif +HANDLE WINAPI CreateMailslotA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES); +HANDLE WINAPI CreateMailslotW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES); +#if (_WIN32_WINNT >= 0x0501) +HANDLE WINAPI CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); +#endif +HANDLE WINAPI CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR); +HANDLE WINAPI CreateMutexW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR); +HANDLE WINAPI CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES); +HANDLE WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES); +BOOL WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD); +BOOL WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING); +BOOL WINAPI CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION); +BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION); +BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION); +BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION); +HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD); +HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR); +HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR); +DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD); +#if (_WIN32_WINNT >= 0x0500) +HANDLE WINAPI CreateTimerQueue(void); +BOOL WINAPI CreateTimerQueueTimer(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,DWORD,DWORD,ULONG); +#endif +HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,PVOID,DWORD,PDWORD); +HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR); +HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI DeactivateActCtx(DWORD,ULONG_PTR); +#endif +BOOL WINAPI DebugActiveProcess(DWORD); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI DebugActiveProcessStop(DWORD); +#endif +void WINAPI DebugBreak(void); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI DebugBreakProcess(HANDLE); +BOOL WINAPI DebugSetProcessKillOnExit(BOOL); +#endif +BOOL WINAPI DefineDosDeviceA(DWORD,LPCSTR,LPCSTR); +BOOL WINAPI DefineDosDeviceW(DWORD,LPCWSTR,LPCWSTR); +#define DefineHandleTable(w) ((w),TRUE) +BOOL WINAPI DeleteAce(PACL,DWORD); +ATOM WINAPI DeleteAtom(ATOM); +void WINAPI DeleteCriticalSection(PCRITICAL_SECTION); +void WINAPI DeleteFiber(PVOID); +BOOL WINAPI DeleteFileA(LPCSTR); +BOOL WINAPI DeleteFileW(LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI DeleteTimerQueue(HANDLE); +BOOL WINAPI DeleteTimerQueueEx(HANDLE,HANDLE); +BOOL WINAPI DeleteTimerQueueTimer(HANDLE,HANDLE,HANDLE); +BOOL WINAPI DeleteVolumeMountPointA(LPCSTR); +BOOL WINAPI DeleteVolumeMountPointW(LPCWSTR); +#endif +BOOL WINAPI DeregisterEventSource(HANDLE); +BOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); +BOOL WINAPI DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED); +BOOL WINAPI DisableThreadLibraryCalls(HMODULE); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI DnsHostnameToComputerNameA(LPCSTR,LPSTR,LPDWORD); +BOOL WINAPI DnsHostnameToComputerNameW(LPCWSTR,LPWSTR,LPDWORD); +#endif +BOOL WINAPI DisconnectNamedPipe(HANDLE); +BOOL WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME); +BOOL WINAPI DuplicateHandle(HANDLE,HANDLE,HANDLE,PHANDLE,DWORD,BOOL,DWORD); +BOOL WINAPI DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE); +BOOL WINAPI DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE); +BOOL WINAPI EncryptFileA(LPCSTR); +BOOL WINAPI EncryptFileW(LPCWSTR); +BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL); +BOOL WINAPI EndUpdateResourceW(HANDLE,BOOL); +void WINAPI EnterCriticalSection(LPCRITICAL_SECTION); +BOOL WINAPI EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROC,LONG_PTR); +BOOL WINAPI EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROC,LONG_PTR); +BOOL WINAPI EnumResourceNamesA(HMODULE,LPCSTR,ENUMRESNAMEPROC,LONG_PTR); +BOOL WINAPI EnumResourceNamesW(HMODULE,LPCWSTR,ENUMRESNAMEPROC,LONG_PTR); +BOOL WINAPI EnumResourceTypesA(HMODULE,ENUMRESTYPEPROC,LONG_PTR); +BOOL WINAPI EnumResourceTypesW(HMODULE,ENUMRESTYPEPROC,LONG_PTR); +BOOL WINAPI EqualPrefixSid(PSID,PSID); +BOOL WINAPI EqualSid(PSID,PSID); +DWORD WINAPI EraseTape(HANDLE,DWORD,BOOL); +BOOL WINAPI EscapeCommFunction(HANDLE,DWORD); +DECLSPEC_NORETURN void WINAPI ExitProcess(UINT); +DECLSPEC_NORETURN void WINAPI ExitThread(DWORD); +DWORD WINAPI ExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD); +DWORD WINAPI ExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD); +void WINAPI FatalAppExitA(UINT,LPCSTR); +void WINAPI FatalAppExitW(UINT,LPCWSTR); +void WINAPI FatalExit(int); +BOOL WINAPI FileEncryptionStatusA(LPCSTR,LPDWORD); +BOOL WINAPI FileEncryptionStatusW(LPCWSTR,LPDWORD); +BOOL WINAPI FileTimeToDosDateTime(CONST FILETIME *,LPWORD,LPWORD); +BOOL WINAPI FileTimeToLocalFileTime(CONST FILETIME *,LPFILETIME); +BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *,LPSYSTEMTIME); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI FindActCtxSectionGuid(DWORD,const GUID*,ULONG,const GUID*,PACTCTX_SECTION_KEYED_DATA); +BOOL WINAPI FindActCtxSectionStringA(DWORD,const GUID*,ULONG,LPCSTR,PACTCTX_SECTION_KEYED_DATA); +BOOL WINAPI FindActCtxSectionStringW(DWORD,const GUID*,ULONG,LPCWSTR,PACTCTX_SECTION_KEYED_DATA); +#endif +ATOM WINAPI FindAtomA(LPCSTR); +ATOM WINAPI FindAtomW(LPCWSTR); +BOOL WINAPI FindClose(HANDLE); +BOOL WINAPI FindCloseChangeNotification(HANDLE); +HANDLE WINAPI FindFirstChangeNotificationA(LPCSTR,BOOL,DWORD); +HANDLE WINAPI FindFirstChangeNotificationW(LPCWSTR,BOOL,DWORD); +HANDLE WINAPI FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA); +HANDLE WINAPI FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW); +HANDLE WINAPI FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD); +HANDLE WINAPI FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD); +BOOL WINAPI FindFirstFreeAce(PACL,PVOID*); +#if (_WIN32_WINNT >= 0x0500) +HANDLE WINAPI FindFirstVolumeA(LPCSTR,DWORD); +HANDLE WINAPI FindFirstVolumeW(LPCWSTR,DWORD); +HANDLE WINAPI FindFirstVolumeMountPointA(LPSTR,LPSTR,DWORD); +HANDLE WINAPI FindFirstVolumeMountPointW(LPWSTR,LPWSTR,DWORD); +#endif +BOOL WINAPI FindNextChangeNotification(HANDLE); +BOOL WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA); +BOOL WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI FindNextVolumeA(HANDLE,LPCSTR,DWORD); +BOOL WINAPI FindNextVolumeW(HANDLE,LPWSTR,DWORD); +BOOL WINAPI FindNextVolumeMountPointA(HANDLE,LPSTR,DWORD); +BOOL WINAPI FindNextVolumeMountPointW(HANDLE,LPWSTR,DWORD); +BOOL WINAPI FindVolumeClose(HANDLE); +BOOL WINAPI FindVolumeMountPointClose(HANDLE); +#endif +HRSRC WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR); +HRSRC WINAPI FindResourceW(HINSTANCE,LPCWSTR,LPCWSTR); +HRSRC WINAPI FindResourceExA(HINSTANCE,LPCSTR,LPCSTR,WORD); +HRSRC WINAPI FindResourceExW(HINSTANCE,LPCWSTR,LPCWSTR,WORD); +#if (_WIN32_WINNT >= 0x0502) +DWORD WINAPI GetFirmwareEnvironmentVariableA(LPCSTR,LPCSTR,PVOID,DWORD); +DWORD WINAPI GetFirmwareEnvironmentVariableW(LPCWSTR,LPCWSTR,PVOID,DWORD); +#endif +BOOL WINAPI FlushFileBuffers(HANDLE); +BOOL WINAPI FlushInstructionCache(HANDLE,PCVOID,DWORD); +BOOL WINAPI FlushViewOfFile(PCVOID,DWORD); +DWORD WINAPI FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*); +DWORD WINAPI FormatMessageW(DWORD,PCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*); +BOOL WINAPI FreeEnvironmentStringsA(LPSTR); +BOOL WINAPI FreeEnvironmentStringsW(LPWSTR); +BOOL WINAPI FreeLibrary(HMODULE); +DECLSPEC_NORETURN void WINAPI FreeLibraryAndExitThread(HMODULE,DWORD); +#define FreeModule(m) FreeLibrary(m) +#define FreeProcInstance(p) (void)(p) +#ifndef XFree86Server +BOOL WINAPI FreeResource(HGLOBAL); +#endif /* ndef XFree86Server */ +PVOID WINAPI FreeSid(PSID); +BOOL WINAPI GetAce(PACL,DWORD,LPVOID*); +BOOL WINAPI GetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS); +UINT WINAPI GetAtomNameA(ATOM,LPSTR,int); +UINT WINAPI GetAtomNameW(ATOM,LPWSTR,int); +BOOL WINAPI GetBinaryTypeA(LPCSTR,PDWORD); +BOOL WINAPI GetBinaryTypeW(LPCWSTR,PDWORD); +LPSTR WINAPI GetCommandLineA(VOID); +LPWSTR WINAPI GetCommandLineW(VOID); +BOOL WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG,PDWORD); +BOOL WINAPI GetCommMask(HANDLE,PDWORD); +BOOL WINAPI GetCommModemStatus(HANDLE,PDWORD); +BOOL WINAPI GetCommProperties(HANDLE,LPCOMMPROP); +BOOL WINAPI GetCommState(HANDLE,LPDCB); +BOOL WINAPI GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS); +DWORD WINAPI GetCompressedFileSizeA(LPCSTR,PDWORD); +DWORD WINAPI GetCompressedFileSizeW(LPCWSTR,PDWORD); +BOOL WINAPI GetComputerNameA(LPSTR,PDWORD); +BOOL WINAPI GetComputerNameW(LPWSTR,PDWORD); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI GetComputerNameExA(COMPUTER_NAME_FORMAT,LPSTR,LPDWORD); +BOOL WINAPI GetComputerNameExW(COMPUTER_NAME_FORMAT,LPWSTR,LPDWORD); +#endif +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI GetCurrentActCtx(HANDLE*); +#endif +DWORD WINAPI GetCurrentDirectoryA(DWORD,LPSTR); +DWORD WINAPI GetCurrentDirectoryW(DWORD,LPWSTR); +BOOL WINAPI GetCurrentHwProfileA(LPHW_PROFILE_INFOA); +BOOL WINAPI GetCurrentHwProfileW(LPHW_PROFILE_INFOW); +HANDLE WINAPI GetCurrentProcess(void); +DWORD WINAPI GetCurrentProcessId(void); +HANDLE WINAPI GetCurrentThread(void); +DWORD WINAPI GetCurrentThreadId(void); +#define GetCurrentTime GetTickCount +BOOL WINAPI GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,PDWORD); +BOOL WINAPI GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,PDWORD); +BOOL WINAPI GetDiskFreeSpaceA(LPCSTR,PDWORD,PDWORD,PDWORD,PDWORD); +BOOL WINAPI GetDiskFreeSpaceW(LPCWSTR,PDWORD,PDWORD,PDWORD,PDWORD); +BOOL WINAPI GetDiskFreeSpaceExA(LPCSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER); +BOOL WINAPI GetDiskFreeSpaceExW(LPCWSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER); +#if (_WIN32_WINNT >= 0x0502) +DWORD WINAPI GetDllDirectoryA(DWORD,LPSTR); +DWORD WINAPI GetDllDirectoryW(DWORD,LPWSTR); +#endif +UINT WINAPI GetDriveTypeA(LPCSTR); +UINT WINAPI GetDriveTypeW(LPCWSTR); +LPSTR WINAPI GetEnvironmentStrings(void); +LPSTR WINAPI GetEnvironmentStringsA(void); +LPWSTR WINAPI GetEnvironmentStringsW(void); +DWORD WINAPI GetEnvironmentVariableA(LPCSTR,LPSTR,DWORD); +DWORD WINAPI GetEnvironmentVariableW(LPCWSTR,LPWSTR,DWORD); +BOOL WINAPI GetExitCodeProcess(HANDLE,PDWORD); +BOOL WINAPI GetExitCodeThread(HANDLE,PDWORD); +DWORD WINAPI GetFileAttributesA(LPCSTR); +DWORD WINAPI GetFileAttributesW(LPCWSTR); +BOOL WINAPI GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,PVOID); +BOOL WINAPI GetFileAttributesExW(LPCWSTR,GET_FILEEX_INFO_LEVELS,PVOID); +BOOL WINAPI GetFileInformationByHandle(HANDLE,LPBY_HANDLE_FILE_INFORMATION); +BOOL WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD); +BOOL WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD); +DWORD WINAPI GetFileSize(HANDLE,PDWORD); +BOOL WINAPI GetFileSizeEx(HANDLE,PLARGE_INTEGER); +BOOL WINAPI GetFileTime(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME); +DWORD WINAPI GetFileType(HANDLE); +#define GetFreeSpace(w) (0x100000L) +DWORD WINAPI GetFullPathNameA(LPCSTR,DWORD,LPSTR,LPSTR*); +DWORD WINAPI GetFullPathNameW(LPCWSTR,DWORD,LPWSTR,LPWSTR*); +BOOL WINAPI GetHandleInformation(HANDLE,PDWORD); +BOOL WINAPI GetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD); +DWORD WINAPI GetLengthSid(PSID); +void WINAPI GetLocalTime(LPSYSTEMTIME); +DWORD WINAPI GetLogicalDrives(void); +DWORD WINAPI GetLogicalDriveStringsA(DWORD,LPSTR); +DWORD WINAPI GetLogicalDriveStringsW(DWORD,LPWSTR); +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +DWORD WINAPI GetLongPathNameA(LPCSTR,LPSTR,DWORD); +DWORD WINAPI GetLongPathNameW(LPCWSTR,LPWSTR,DWORD); +#endif +BOOL WINAPI GetMailslotInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD); +DWORD WINAPI GetModuleFileNameA(HINSTANCE,LPSTR,DWORD); +DWORD WINAPI GetModuleFileNameW(HINSTANCE,LPWSTR,DWORD); +HMODULE WINAPI GetModuleHandleA(LPCSTR); +HMODULE WINAPI GetModuleHandleW(LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI GetModuleHandleExA(DWORD,LPCSTR,HMODULE*); +BOOL WINAPI GetModuleHandleExW(DWORD,LPCWSTR,HMODULE*); +#endif +BOOL WINAPI GetNamedPipeHandleStateA(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD); +BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD); +BOOL WINAPI GetNamedPipeInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD); +#if (_WIN32_WINNT >= 0x0501) +VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO); +#endif +BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD); +BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD); +BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,PDWORD,BOOL); +DWORD WINAPI GetPriorityClass(HANDLE); +BOOL WINAPI GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD); +UINT WINAPI GetPrivateProfileIntA(LPCSTR,LPCSTR,INT,LPCSTR); +UINT WINAPI GetPrivateProfileIntW(LPCWSTR,LPCWSTR,INT,LPCWSTR); +DWORD WINAPI GetPrivateProfileSectionA(LPCSTR,LPSTR,DWORD,LPCSTR); +DWORD WINAPI GetPrivateProfileSectionW(LPCWSTR,LPWSTR,DWORD,LPCWSTR); +DWORD WINAPI GetPrivateProfileSectionNamesA(LPSTR,DWORD,LPCSTR); +DWORD WINAPI GetPrivateProfileSectionNamesW(LPWSTR,DWORD,LPCWSTR); +DWORD WINAPI GetPrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD,LPCSTR); +DWORD WINAPI GetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD,LPCWSTR); +BOOL WINAPI GetPrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR); +BOOL WINAPI GetPrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR); +FARPROC WINAPI GetProcAddress(HINSTANCE,LPCSTR); +BOOL WINAPI GetProcessAffinityMask(HANDLE,PDWORD,PDWORD); +#if (_WIN32_WINNT >= 0x0502) +BOOL WINAPI GetProcessHandleCount(HANDLE,PDWORD); +#endif +HANDLE WINAPI GetProcessHeap(VOID); +DWORD WINAPI GetProcessHeaps(DWORD,PHANDLE); +#if (_WIN32_WINNT >= 0x0502) +DWORD WINAPI GetProcessId(HANDLE); +#endif +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI GetProcessIoCounters(HANDLE,PIO_COUNTERS); +#endif +BOOL WINAPI GetProcessPriorityBoost(HANDLE,PBOOL); +BOOL WINAPI GetProcessShutdownParameters(PDWORD,PDWORD); +BOOL WINAPI GetProcessTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME); +DWORD WINAPI GetProcessVersion(DWORD); +HWINSTA WINAPI GetProcessWindowStation(void); +BOOL WINAPI GetProcessWorkingSetSize(HANDLE,PSIZE_T,PSIZE_T); +UINT WINAPI GetProfileIntA(LPCSTR,LPCSTR,INT); +UINT WINAPI GetProfileIntW(LPCWSTR,LPCWSTR,INT); +DWORD WINAPI GetProfileSectionA(LPCSTR,LPSTR,DWORD); +DWORD WINAPI GetProfileSectionW(LPCWSTR,LPWSTR,DWORD); +DWORD WINAPI GetProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD); +DWORD WINAPI GetProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD); +BOOL WINAPI GetQueuedCompletionStatus(HANDLE,PDWORD,PDWORD,LPOVERLAPPED*,DWORD); +BOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR_CONTROL,PDWORD); +BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL); +BOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID*,LPBOOL); +DWORD WINAPI GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); +BOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID*,LPBOOL); +BOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL); +DWORD WINAPI GetShortPathNameA(LPCSTR,LPSTR,DWORD); +DWORD WINAPI GetShortPathNameW(LPCWSTR,LPWSTR,DWORD); +PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID); +DWORD WINAPI GetSidLengthRequired(UCHAR); +PDWORD WINAPI GetSidSubAuthority(PSID,DWORD); +PUCHAR WINAPI GetSidSubAuthorityCount(PSID); +VOID WINAPI GetStartupInfoA(LPSTARTUPINFOA); +VOID WINAPI GetStartupInfoW(LPSTARTUPINFOW); +HANDLE WINAPI GetStdHandle(DWORD); +UINT WINAPI GetSystemDirectoryA(LPSTR,UINT); +UINT WINAPI GetSystemDirectoryW(LPWSTR,UINT); +VOID WINAPI GetSystemInfo(LPSYSTEM_INFO); +BOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); +#if (_WIN32_WINNT >= 0x0502) +BOOL WINAPI GetSystemRegistryQuota(PDWORD,PDWORD); +#endif +VOID WINAPI GetSystemTime(LPSYSTEMTIME); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI GetSystemTimes(LPFILETIME,LPFILETIME,LPFILETIME); +#endif +BOOL WINAPI GetSystemTimeAdjustment(PDWORD,PDWORD,PBOOL); +void WINAPI GetSystemTimeAsFileTime(LPFILETIME); +#if (_WIN32_WINNT >= 0x0500) +UINT WINAPI GetSystemWindowsDirectoryA(LPSTR,UINT); +UINT WINAPI GetSystemWindowsDirectoryW(LPWSTR,UINT); +#endif +#if (_WIN32_WINNT >= 0x0501) +UINT WINAPI GetSystemWow64DirectoryA(LPSTR,UINT); +UINT WINAPI GetSystemWow64DirectoryW(LPWSTR,UINT); +#endif +DWORD WINAPI GetTapeParameters(HANDLE,DWORD,PDWORD,PVOID); +DWORD WINAPI GetTapePosition(HANDLE,DWORD,PDWORD,PDWORD,PDWORD); +DWORD WINAPI GetTapeStatus(HANDLE); +UINT WINAPI GetTempFileNameA(LPCSTR,LPCSTR,UINT,LPSTR); +UINT WINAPI GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR); +DWORD WINAPI GetTempPathA(DWORD,LPSTR); +DWORD WINAPI GetTempPathW(DWORD,LPWSTR); +BOOL WINAPI GetThreadContext(HANDLE,LPCONTEXT); +#if (_WIN32_WINNT >= 0x0502) +BOOL WINAPI GetThreadIOPendingFlag(HANDLE,PBOOL); +#endif +int WINAPI GetThreadPriority(HANDLE); +BOOL WINAPI GetThreadPriorityBoost(HANDLE,PBOOL); +BOOL WINAPI GetThreadSelectorEntry(HANDLE,DWORD,LPLDT_ENTRY); +BOOL WINAPI GetThreadTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME); +DWORD WINAPI GetTickCount(VOID); +DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); +BOOL WINAPI GetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD,PDWORD); +BOOL WINAPI GetUserNameA (LPSTR,PDWORD); +BOOL WINAPI GetUserNameW(LPWSTR,PDWORD); +DWORD WINAPI GetVersion(void); +BOOL WINAPI GetVersionExA(LPOSVERSIONINFOA); +BOOL WINAPI GetVersionExW(LPOSVERSIONINFOW); +BOOL WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD); +BOOL WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI GetVolumeNameForVolumeMountPointA(LPCSTR,LPSTR,DWORD); +BOOL WINAPI GetVolumeNameForVolumeMountPointW(LPCWSTR,LPWSTR,DWORD); +BOOL WINAPI GetVolumePathNameA(LPCSTR,LPSTR,DWORD); +BOOL WINAPI GetVolumePathNameW(LPCWSTR,LPWSTR,DWORD); +#endif +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR,LPSTR,DWORD,PDWORD); +BOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR,LPWSTR,DWORD,PDWORD); +#endif +UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT); +UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT); +DWORD WINAPI GetWindowThreadProcessId(HWND,PDWORD); +UINT GetWriteWatch(DWORD,PVOID,SIZE_T,PVOID*,PULONG_PTR,PULONG); +ATOM WINAPI GlobalAddAtomA(LPCSTR); +ATOM WINAPI GlobalAddAtomW( LPCWSTR); +HGLOBAL WINAPI GlobalAlloc(UINT,DWORD); +SIZE_T WINAPI GlobalCompact(DWORD); /* Obsolete: Has no effect. */ +ATOM WINAPI GlobalDeleteAtom(ATOM); +HGLOBAL GlobalDiscard(HGLOBAL); +ATOM WINAPI GlobalFindAtomA(LPCSTR); +ATOM WINAPI GlobalFindAtomW(LPCWSTR); +VOID WINAPI GlobalFix(HGLOBAL); /* Obsolete: Has no effect. */ +UINT WINAPI GlobalFlags(HGLOBAL); /* Obsolete: Has no effect. */ +HGLOBAL WINAPI GlobalFree(HGLOBAL); +UINT WINAPI GlobalGetAtomNameA(ATOM,LPSTR,int); +UINT WINAPI GlobalGetAtomNameW(ATOM,LPWSTR,int); +HGLOBAL WINAPI GlobalHandle(PCVOID); +LPVOID WINAPI GlobalLock(HGLOBAL); +VOID WINAPI GlobalMemoryStatus(LPMEMORYSTATUS); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX); +#endif +HGLOBAL WINAPI GlobalReAlloc(HGLOBAL,DWORD,UINT); +DWORD WINAPI GlobalSize(HGLOBAL); +VOID WINAPI GlobalUnfix(HGLOBAL); /* Obsolete: Has no effect. */ +BOOL WINAPI GlobalUnlock(HGLOBAL); +BOOL WINAPI GlobalUnWire(HGLOBAL); /* Obsolete: Has no effect. */ +PVOID WINAPI GlobalWire(HGLOBAL); /* Obsolete: Has no effect. */ +#define HasOverlappedIoCompleted(lpOverlapped) ((lpOverlapped)->Internal != STATUS_PENDING) +PVOID WINAPI HeapAlloc(HANDLE,DWORD,DWORD); +SIZE_T WINAPI HeapCompact(HANDLE,DWORD); +HANDLE WINAPI HeapCreate(DWORD,DWORD,DWORD); +BOOL WINAPI HeapDestroy(HANDLE); +BOOL WINAPI HeapFree(HANDLE,DWORD,PVOID); +BOOL WINAPI HeapLock(HANDLE); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI HeapQueryInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T); +#endif +PVOID WINAPI HeapReAlloc(HANDLE,DWORD,PVOID,DWORD); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI HeapSetInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T); +#endif +DWORD WINAPI HeapSize(HANDLE,DWORD,PCVOID); +BOOL WINAPI HeapUnlock(HANDLE); +BOOL WINAPI HeapValidate(HANDLE,DWORD,PCVOID); +BOOL WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY); +BOOL WINAPI ImpersonateLoggedOnUser(HANDLE); +BOOL WINAPI ImpersonateNamedPipeClient(HANDLE); +BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); +BOOL WINAPI InitAtomTable(DWORD); +BOOL WINAPI InitializeAcl(PACL,DWORD,DWORD); +VOID WINAPI InitializeCriticalSection(LPCRITICAL_SECTION); +BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD); +DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD); +BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD); +BOOL WINAPI InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE); +#if (_WIN32_WINNT >= 0x0501) +VOID WINAPI InitializeSListHead(PSLIST_HEADER); +#endif +#ifndef __INTERLOCKED_DECLARED +#define __INTERLOCKED_DECLARED +LONG WINAPI InterlockedCompareExchange(LPLONG,LONG,LONG); +/* PVOID WINAPI InterlockedCompareExchangePointer(PVOID*,PVOID,PVOID); */ +#define InterlockedCompareExchangePointer(d,e,c) \ + (PVOID)InterlockedCompareExchange((LPLONG)(d),(LONG)(e),(LONG)(c)) +LONG WINAPI InterlockedDecrement(LPLONG); +LONG WINAPI InterlockedExchange(LPLONG,LONG); +/* PVOID WINAPI InterlockedExchangePointer(PVOID*,PVOID); */ +#define InterlockedExchangePointer(t,v) \ + (PVOID)InterlockedExchange((LPLONG)(t),(LONG)(v)) +LONG WINAPI InterlockedExchangeAdd(LPLONG,LONG); +#if (_WIN32_WINNT >= 0x0501) +PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER); +#endif +LONG WINAPI InterlockedIncrement(LPLONG); +#if (_WIN32_WINNT >= 0x0501) +PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER); +PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY); +#endif +#endif /* __INTERLOCKED_DECLARED */ +BOOL WINAPI IsBadCodePtr(FARPROC); +BOOL WINAPI IsBadHugeReadPtr(PCVOID,UINT); +BOOL WINAPI IsBadHugeWritePtr(PVOID,UINT); +BOOL WINAPI IsBadReadPtr(PCVOID,UINT); +BOOL WINAPI IsBadStringPtrA(LPCSTR,UINT); +BOOL WINAPI IsBadStringPtrW(LPCWSTR,UINT); +BOOL WINAPI IsBadWritePtr(PVOID,UINT); +BOOL WINAPI IsDebuggerPresent(void); +#if (_WIN32_WINNT >= 0x0501) +BOOL IsProcessInJob(HANDLE,HANDLE,PBOOL); +#endif +BOOL WINAPI IsProcessorFeaturePresent(DWORD); +BOOL WINAPI IsSystemResumeAutomatic(void); +BOOL WINAPI IsTextUnicode(PCVOID,int,LPINT); +BOOL WINAPI IsValidAcl(PACL); +BOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); +BOOL WINAPI IsValidSid(PSID); +#if (_WIN32_WINNT >= 0x0501) +BOOL IsWow64Process(HANDLE,PBOOL); +#endif +void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION); +#define LimitEmsPages(n) +HINSTANCE WINAPI LoadLibraryA(LPCSTR); +HINSTANCE WINAPI LoadLibraryExA(LPCSTR,HANDLE,DWORD); +HINSTANCE WINAPI LoadLibraryExW(LPCWSTR,HANDLE,DWORD); +HINSTANCE WINAPI LoadLibraryW(LPCWSTR); +DWORD WINAPI LoadModule(LPCSTR,PVOID); +HGLOBAL WINAPI LoadResource(HINSTANCE,HRSRC); +HLOCAL WINAPI LocalAlloc(UINT,SIZE_T); +SIZE_T WINAPI LocalCompact(UINT); /* Obsolete: Has no effect. */ +HLOCAL LocalDiscard(HLOCAL); +BOOL WINAPI LocalFileTimeToFileTime(CONST FILETIME *,LPFILETIME); +UINT WINAPI LocalFlags(HLOCAL); /* Obsolete: Has no effect. */ +HLOCAL WINAPI LocalFree(HLOCAL); +HLOCAL WINAPI LocalHandle(LPCVOID); +PVOID WINAPI LocalLock(HLOCAL); +HLOCAL WINAPI LocalReAlloc(HLOCAL,SIZE_T,UINT); +SIZE_T WINAPI LocalShrink(HLOCAL,UINT); /* Obsolete: Has no effect. */ +UINT WINAPI LocalSize(HLOCAL); +BOOL WINAPI LocalUnlock(HLOCAL); +BOOL WINAPI LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD); +BOOL WINAPI LockFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,LPOVERLAPPED); +PVOID WINAPI LockResource(HGLOBAL); +#define LockSegment(w) GlobalFix((HANDLE)(w)) /* Obsolete: Has no effect. */ +BOOL WINAPI LogonUserA(LPSTR,LPSTR,LPSTR,DWORD,DWORD,PHANDLE); +BOOL WINAPI LogonUserW(LPWSTR,LPWSTR,LPWSTR,DWORD,DWORD,PHANDLE); +BOOL WINAPI LookupAccountNameA(LPCSTR,LPCSTR,PSID,PDWORD,LPSTR,PDWORD,PSID_NAME_USE); +BOOL WINAPI LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE); +BOOL WINAPI LookupAccountSidA(LPCSTR,PSID,LPSTR,PDWORD,LPSTR,PDWORD,PSID_NAME_USE); +BOOL WINAPI LookupAccountSidW(LPCWSTR,PSID,LPWSTR,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE); +BOOL WINAPI LookupPrivilegeDisplayNameA(LPCSTR,LPCSTR,LPSTR,PDWORD,PDWORD); +BOOL WINAPI LookupPrivilegeDisplayNameW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,PDWORD); +BOOL WINAPI LookupPrivilegeNameA(LPCSTR,PLUID,LPSTR,PDWORD); +BOOL WINAPI LookupPrivilegeNameW(LPCWSTR,PLUID,LPWSTR,PDWORD); +BOOL WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,PLUID); +BOOL WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,PLUID); +LPSTR WINAPI lstrcatA(LPSTR,LPCSTR); +LPWSTR WINAPI lstrcatW(LPWSTR,LPCWSTR); +int WINAPI lstrcmpA(LPCSTR,LPCSTR); +int WINAPI lstrcmpiA(LPCSTR,LPCSTR); +int WINAPI lstrcmpiW( LPCWSTR,LPCWSTR); +int WINAPI lstrcmpW(LPCWSTR,LPCWSTR); +LPSTR WINAPI lstrcpyA(LPSTR,LPCSTR); +LPSTR WINAPI lstrcpynA(LPSTR,LPCSTR,int); +LPWSTR WINAPI lstrcpynW(LPWSTR,LPCWSTR,int); +LPWSTR WINAPI lstrcpyW(LPWSTR,LPCWSTR); +int WINAPI lstrlenA(LPCSTR); +int WINAPI lstrlenW(LPCWSTR); +BOOL WINAPI MakeAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD); +#define MakeProcInstance(p,i) (p) +BOOL WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD); +VOID WINAPI MapGenericMask(PDWORD,PGENERIC_MAPPING); +PVOID WINAPI MapViewOfFile(HANDLE,DWORD,DWORD,DWORD,DWORD); +PVOID WINAPI MapViewOfFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,PVOID); +BOOL WINAPI MoveFileA(LPCSTR,LPCSTR); +BOOL WINAPI MoveFileExA(LPCSTR,LPCSTR,DWORD); +BOOL WINAPI MoveFileExW(LPCWSTR,LPCWSTR,DWORD); +BOOL WINAPI MoveFileW(LPCWSTR,LPCWSTR); +int WINAPI MulDiv(int,int,int); +BOOL WINAPI NotifyChangeEventLog(HANDLE,HANDLE); +BOOL WINAPI ObjectCloseAuditAlarmA(LPCSTR,PVOID,BOOL); +BOOL WINAPI ObjectCloseAuditAlarmW(LPCWSTR,PVOID,BOOL); +BOOL WINAPI ObjectDeleteAuditAlarmA(LPCSTR,PVOID,BOOL); +BOOL WINAPI ObjectDeleteAuditAlarmW(LPCWSTR,PVOID,BOOL); +BOOL WINAPI ObjectOpenAuditAlarmA(LPCSTR,PVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL); +BOOL WINAPI ObjectOpenAuditAlarmW(LPCWSTR,PVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL); +BOOL WINAPI ObjectPrivilegeAuditAlarmA(LPCSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL); +BOOL WINAPI ObjectPrivilegeAuditAlarmW(LPCWSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL); +HANDLE WINAPI OpenBackupEventLogA(LPCSTR,LPCSTR); +HANDLE WINAPI OpenBackupEventLogW(LPCWSTR,LPCWSTR); +HANDLE WINAPI OpenEventA(DWORD,BOOL,LPCSTR); +HANDLE WINAPI OpenEventLogA (LPCSTR,LPCSTR); +HANDLE WINAPI OpenEventLogW(LPCWSTR,LPCWSTR); +HANDLE WINAPI OpenEventW(DWORD,BOOL,LPCWSTR); +HFILE WINAPI OpenFile(LPCSTR,LPOFSTRUCT,UINT); +HANDLE WINAPI OpenFileMappingA(DWORD,BOOL,LPCSTR); +HANDLE WINAPI OpenFileMappingW(DWORD,BOOL,LPCWSTR); +HANDLE WINAPI OpenMutexA(DWORD,BOOL,LPCSTR); +HANDLE WINAPI OpenMutexW(DWORD,BOOL,LPCWSTR); +HANDLE WINAPI OpenProcess(DWORD,BOOL,DWORD); +BOOL WINAPI OpenProcessToken(HANDLE,DWORD,PHANDLE); +HANDLE WINAPI OpenSemaphoreA(DWORD,BOOL,LPCSTR); +HANDLE WINAPI OpenSemaphoreW(DWORD,BOOL,LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0490) +HANDLE WINAPI OpenThread(DWORD,BOOL,DWORD); +#endif +BOOL WINAPI OpenThreadToken(HANDLE,DWORD,BOOL,PHANDLE); +HANDLE WINAPI OpenWaitableTimerA(DWORD,BOOL,LPCSTR); +HANDLE WINAPI OpenWaitableTimerW(DWORD,BOOL,LPCWSTR); +void WINAPI OutputDebugStringA(LPCSTR); +void WINAPI OutputDebugStringW(LPCWSTR); +BOOL WINAPI PeekNamedPipe(HANDLE,PVOID,DWORD,PDWORD,PDWORD,PDWORD); +BOOL WINAPI PostQueuedCompletionStatus(HANDLE,DWORD,DWORD,LPOVERLAPPED); +DWORD WINAPI PrepareTape(HANDLE,DWORD,BOOL); +BOOL WINAPI PrivilegeCheck (HANDLE,PPRIVILEGE_SET,PBOOL); +BOOL WINAPI PrivilegedServiceAuditAlarmA(LPCSTR,LPCSTR,HANDLE,PPRIVILEGE_SET,BOOL); +BOOL WINAPI PrivilegedServiceAuditAlarmW(LPCWSTR,LPCWSTR,HANDLE,PPRIVILEGE_SET,BOOL); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI ProcessIdToSessionId(DWORD,DWORD*); +#endif +BOOL WINAPI PulseEvent(HANDLE); +BOOL WINAPI PurgeComm(HANDLE,DWORD); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI QueryActCtxW(DWORD,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*); +#endif +DWORD WINAPI QueryDosDeviceA(LPCSTR,LPSTR,DWORD); +DWORD WINAPI QueryDosDeviceW(LPCWSTR,LPWSTR,DWORD); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI QueryMemoryResourceNotification(HANDLE,PBOOL); +#endif +BOOL WINAPI QueryPerformanceCounter(PLARGE_INTEGER); +BOOL WINAPI QueryPerformanceFrequency(PLARGE_INTEGER); +DWORD WINAPI QueueUserAPC(PAPCFUNC,HANDLE,DWORD); +void WINAPI RaiseException(DWORD,DWORD,DWORD,const DWORD*); +BOOL WINAPI ReadDirectoryChangesW(HANDLE,PVOID,DWORD,BOOL,DWORD,PDWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE); +BOOL WINAPI ReadEventLogA(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *); +BOOL WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *); +BOOL WINAPI ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED); +BOOL WINAPI ReadFileEx(HANDLE,PVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE); +BOOL WINAPI ReadFileScatter(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED); +BOOL WINAPI ReadProcessMemory(HANDLE,PCVOID,PVOID,DWORD,PDWORD); +HANDLE WINAPI RegisterEventSourceA (LPCSTR,LPCSTR); +HANDLE WINAPI RegisterEventSourceW(LPCWSTR,LPCWSTR); +#if (_WIN32_WINNT >= 0x0501) +void WINAPI ReleaseActCtx(HANDLE); +#endif +BOOL WINAPI ReleaseMutex(HANDLE); +BOOL WINAPI ReleaseSemaphore(HANDLE,LONG,LPLONG); +BOOL WINAPI RemoveDirectoryA(LPCSTR); +BOOL WINAPI RemoveDirectoryW(LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +ULONG WINAPI RemoveVectoredExceptionHandler(PVOID); +#endif +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI ReplaceFileA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPVOID,LPVOID); +BOOL WINAPI ReplaceFileW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPVOID,LPVOID); +#endif +BOOL WINAPI ReportEventA(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCSTR*,PVOID); +BOOL WINAPI ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCWSTR*,PVOID); +BOOL WINAPI ResetEvent(HANDLE); +UINT WINAPI ResetWriteWatch(LPVOID,SIZE_T); +#if (_WIN32_WINNT >= 0x0510) +VOID WINAPI RestoreLastError(DWORD); +#endif +DWORD WINAPI ResumeThread(HANDLE); +BOOL WINAPI RevertToSelf(void); +DWORD WINAPI SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*); +DWORD WINAPI SearchPathW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*); +BOOL WINAPI SetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS); +BOOL WINAPI SetCommBreak(HANDLE); +BOOL WINAPI SetCommConfig(HANDLE,LPCOMMCONFIG,DWORD); +BOOL WINAPI SetCommMask(HANDLE,DWORD); +BOOL WINAPI SetCommState(HANDLE,LPDCB); +BOOL WINAPI SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS); +BOOL WINAPI SetComputerNameA(LPCSTR); +BOOL WINAPI SetComputerNameW(LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI SetComputerNameExA(COMPUTER_NAME_FORMAT,LPCSTR); +BOOL WINAPI SetComputerNameExW(COMPUTER_NAME_FORMAT,LPCWSTR); +#endif +BOOL WINAPI SetCurrentDirectoryA(LPCSTR); +BOOL WINAPI SetCurrentDirectoryW(LPCWSTR); +BOOL WINAPI SetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,DWORD); +BOOL WINAPI SetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,DWORD); +#if (_WIN32_WINNT >= 0x0502) +BOOL WINAPI SetDllDirectoryA(LPCSTR); +BOOL WINAPI SetDllDirectoryW(LPCWSTR); +#endif +BOOL WINAPI SetEndOfFile(HANDLE); +BOOL WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR); +BOOL WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR); +UINT WINAPI SetErrorMode(UINT); +BOOL WINAPI SetEvent(HANDLE); +VOID WINAPI SetFileApisToANSI(void); +VOID WINAPI SetFileApisToOEM(void); +BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD); +BOOL WINAPI SetFileAttributesW(LPCWSTR,DWORD); +DWORD WINAPI SetFilePointer(HANDLE,LONG,PLONG,DWORD); +BOOL WINAPI SetFilePointerEx(HANDLE,LARGE_INTEGER,PLARGE_INTEGER,DWORD); +BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +BOOL WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI SetFileShortNameA(HANDLE,LPCSTR); +BOOL WINAPI SetFileShortNameW(HANDLE,LPCWSTR); +#endif +BOOL WINAPI SetFileTime(HANDLE,const FILETIME*,const FILETIME*,const FILETIME*); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI SetFileValidData(HANDLE,LONGLONG); +#endif +#if (_WIN32_WINNT >= 0x0502) +BOOL WINAPI SetFirmwareEnvironmentVariableA(LPCSTR,LPCSTR,PVOID,DWORD); +BOOL WINAPI SetFirmwareEnvironmentVariableW(LPCWSTR,LPCWSTR,PVOID,DWORD); +#endif +UINT WINAPI SetHandleCount(UINT); +BOOL WINAPI SetHandleInformation(HANDLE,DWORD,DWORD); +BOOL WINAPI SetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +void WINAPI SetLastError(DWORD); +void WINAPI SetLastErrorEx(DWORD,DWORD); +BOOL WINAPI SetLocalTime(const SYSTEMTIME*); +BOOL WINAPI SetMailslotInfo(HANDLE,DWORD); +BOOL WINAPI SetNamedPipeHandleState(HANDLE,PDWORD,PDWORD,PDWORD); +BOOL WINAPI SetPriorityClass(HANDLE,DWORD); +BOOL WINAPI SetPrivateObjectSecurity(SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR *,PGENERIC_MAPPING,HANDLE); +BOOL WINAPI SetProcessAffinityMask(HANDLE,DWORD); +BOOL WINAPI SetProcessPriorityBoost(HANDLE,BOOL); +BOOL WINAPI SetProcessShutdownParameters(DWORD,DWORD); +BOOL WINAPI SetProcessWorkingSetSize(HANDLE,DWORD,DWORD); +BOOL WINAPI SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL); +BOOL WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL); +BOOL WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID,BOOL); +BOOL WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID,BOOL); +BOOL WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL); +BOOL WINAPI SetStdHandle(DWORD,HANDLE); +#define SetSwapAreaSize(w) (w) +BOOL WINAPI SetSystemPowerState(BOOL,BOOL); +BOOL WINAPI SetSystemTime(const SYSTEMTIME*); +BOOL WINAPI SetSystemTimeAdjustment(DWORD,BOOL); +DWORD WINAPI SetTapeParameters(HANDLE,DWORD,PVOID); +DWORD WINAPI SetTapePosition(HANDLE,DWORD,DWORD,DWORD,DWORD,BOOL); +DWORD WINAPI SetThreadAffinityMask(HANDLE,DWORD); +BOOL WINAPI SetThreadContext(HANDLE,const CONTEXT*); +DWORD WINAPI SetThreadIdealProcessor(HANDLE,DWORD); +BOOL WINAPI SetThreadPriority(HANDLE,int); +BOOL WINAPI SetThreadPriorityBoost(HANDLE,BOOL); +BOOL WINAPI SetThreadToken (PHANDLE,HANDLE); +BOOL WINAPI SetTimeZoneInformation(const TIME_ZONE_INFORMATION *); +BOOL WINAPI SetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD); +LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); +BOOL WINAPI SetupComm(HANDLE,DWORD,DWORD); +BOOL WINAPI SetVolumeLabelA(LPCSTR,LPCSTR); +BOOL WINAPI SetVolumeLabelW(LPCWSTR,LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI SetVolumeMountPointA(LPCSTR,LPCSTR); +BOOL WINAPI SetVolumeMountPointW(LPCWSTR,LPCWSTR); +#endif +BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,PVOID,BOOL); +DWORD WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL); +DWORD WINAPI SizeofResource(HINSTANCE,HRSRC); +void WINAPI Sleep(DWORD); +DWORD WINAPI SleepEx(DWORD,BOOL); +DWORD WINAPI SuspendThread(HANDLE); +void WINAPI SwitchToFiber(PVOID); +BOOL WINAPI SwitchToThread(void); +BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME); +BOOL WINAPI SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME); +BOOL WINAPI TerminateProcess(HANDLE,UINT); +BOOL WINAPI TerminateThread(HANDLE,DWORD); +DWORD WINAPI TlsAlloc(VOID); +BOOL WINAPI TlsFree(DWORD); +PVOID WINAPI TlsGetValue(DWORD); +BOOL WINAPI TlsSetValue(DWORD,PVOID); +BOOL WINAPI TransactNamedPipe(HANDLE,PVOID,DWORD,PVOID,DWORD,PDWORD,LPOVERLAPPED); +BOOL WINAPI TransmitCommChar(HANDLE,char); +BOOL WINAPI TryEnterCriticalSection(LPCRITICAL_SECTION); +LONG WINAPI UnhandledExceptionFilter(LPEXCEPTION_POINTERS); +BOOL WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD); +BOOL WINAPI UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED); +#define UnlockResource(h) (h) +#define UnlockSegment(w) GlobalUnfix((HANDLE)(w)) /* Obsolete: Has no effect. */ +BOOL WINAPI UnmapViewOfFile(PVOID); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI UnregisterWaitEx(HANDLE,HANDLE); +#endif +BOOL WINAPI UpdateResourceA(HANDLE,LPCSTR,LPCSTR,WORD,PVOID,DWORD); +BOOL WINAPI UpdateResourceW(HANDLE,LPCWSTR,LPCWSTR,WORD,PVOID,DWORD); +BOOL WINAPI VerifyVersionInfoA(LPOSVERSIONINFOEXA,DWORD,DWORDLONG); +BOOL WINAPI VerifyVersionInfoW(LPOSVERSIONINFOEXW,DWORD,DWORDLONG); +PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD); +PVOID WINAPI VirtualAllocEx(HANDLE,PVOID,DWORD,DWORD,DWORD); +BOOL WINAPI VirtualFree(PVOID,DWORD,DWORD); +BOOL WINAPI VirtualFreeEx(HANDLE,PVOID,DWORD,DWORD); +BOOL WINAPI VirtualLock(PVOID,DWORD); +BOOL WINAPI VirtualProtect(PVOID,DWORD,DWORD,PDWORD); +BOOL WINAPI VirtualProtectEx(HANDLE,PVOID,DWORD,DWORD,PDWORD); +DWORD WINAPI VirtualQuery(LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD); +DWORD WINAPI VirtualQueryEx(HANDLE,LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD); +BOOL WINAPI VirtualUnlock(PVOID,DWORD); +BOOL WINAPI WaitCommEvent(HANDLE,PDWORD,LPOVERLAPPED); +BOOL WINAPI WaitForDebugEvent(LPDEBUG_EVENT,DWORD); +DWORD WINAPI WaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD); +DWORD WINAPI WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,DWORD,BOOL); +DWORD WINAPI WaitForSingleObject(HANDLE,DWORD); +DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL); +BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD); +BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD); +BOOL WINAPI WinLoadTrustProvider(GUID*); +BOOL WINAPI WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED); +BOOL WINAPI WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE); +BOOL WINAPI WriteFileGather(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED); +BOOL WINAPI WritePrivateProfileSectionA(LPCSTR,LPCSTR,LPCSTR); +BOOL WINAPI WritePrivateProfileSectionW(LPCWSTR,LPCWSTR,LPCWSTR); +BOOL WINAPI WritePrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL WINAPI WritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +BOOL WINAPI WritePrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR); +BOOL WINAPI WritePrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR); +BOOL WINAPI WriteProcessMemory(HANDLE,LPVOID,LPCVOID,SIZE_T,SIZE_T*); +BOOL WINAPI WriteProfileSectionA(LPCSTR,LPCSTR); +BOOL WINAPI WriteProfileSectionW(LPCWSTR,LPCWSTR); +BOOL WINAPI WriteProfileStringA(LPCSTR,LPCSTR,LPCSTR); +BOOL WINAPI WriteProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR); +DWORD WINAPI WriteTapemark(HANDLE,DWORD,DWORD,BOOL); +#define Yield() +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI ZombifyActCtx(HANDLE); +#endif +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI AllocateUserPhysicalPages(HANDLE,PULONG_PTR,PULONG_PTR); +BOOL WINAPI FreeUserPhysicalPages(HANDLE,PULONG_PTR,PULONG_PTR); +BOOL WINAPI MapUserPhysicalPages(PVOID,ULONG_PTR,PULONG_PTR); +BOOL WINAPI MapUserPhysicalPagesScatter(PVOID*,ULONG_PTR,PULONG_PTR); +#endif + +#ifdef UNICODE +typedef STARTUPINFOW STARTUPINFO,*LPSTARTUPINFO; +typedef WIN32_FIND_DATAW WIN32_FIND_DATA,*LPWIN32_FIND_DATA; +typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO; +#if (_WIN32_WINNT >= 0x0501) +typedef ACTCTXW ACTCTX,*PACTCTX; +typedef PCACTCTXW PCACTCTX; +#endif +#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmW +#define AddAtom AddAtomW +#define BackupEventLog BackupEventLogW +#define BeginUpdateResource BeginUpdateResourceW +#define BuildCommDCB BuildCommDCBW +#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsW +#define CallNamedPipe CallNamedPipeW +#if (_WIN32_WINNT >= 0x0501) +#define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3W +#endif +#define ClearEventLog ClearEventLogW +#define CommConfigDialog CommConfigDialogW +#define CopyFile CopyFileW +#define CopyFileEx CopyFileExW +#if (_WIN32_WINNT >= 0x0501) +#define CreateActCtx CreateActCtxW +#endif +#define CreateDirectory CreateDirectoryW +#define CreateDirectoryEx CreateDirectoryExW +#define CreateEvent CreateEventW +#define CreateFile CreateFileW +#define CreateFileMapping CreateFileMappingW +#if (_WIN32_WINNT >= 0x0500) +#define CreateHardLink CreateHardLinkW +#define CreateJobObject CreateJobObjectW +#endif +#define CreateMailslot CreateMailslotW +#define CreateMutex CreateMutexW +#define CreateNamedPipe CreateNamedPipeW +#define CreateProcess CreateProcessW +#define CreateProcessAsUser CreateProcessAsUserW +#define CreateSemaphore CreateSemaphoreW +#define CreateWaitableTimer CreateWaitableTimerW +#define DefineDosDevice DefineDosDeviceW +#define DeleteFile DeleteFileW +#if (_WIN32_WINNT >= 0x0500) +#define DeleteVolumeMountPoint DeleteVolumeMountPointW +#define DnsHostnameToComputerName DnsHostnameToComputerNameW +#endif +#define EncryptFile EncryptFileW +#define EndUpdateResource EndUpdateResourceW +#define EnumResourceLanguages EnumResourceLanguagesW +#define EnumResourceNames EnumResourceNamesW +#define EnumResourceTypes EnumResourceTypesW +#define ExpandEnvironmentStrings ExpandEnvironmentStringsW +#define FatalAppExit FatalAppExitW +#define FileEncryptionStatus FileEncryptionStatusW +#if (_WIN32_WINNT >= 0x0501) +#define FindActCtxSectionString FindActCtxSectionStringW +#endif +#define FindAtom FindAtomW +#define FindFirstChangeNotification FindFirstChangeNotificationW +#define FindFirstFile FindFirstFileW +#define FindFirstFileEx FindFirstFileExW +#if (_WIN32_WINNT >= 0x0500) +#define FindFirstVolume FindFirstVolumeW +#define FindFirstVolumeMountPoint FindFirstVolumeMountPointW +#endif +#define FindNextFile FindNextFileW +#if (_WIN32_WINNT >= 0x0500) +#define FindNextVolume FindNextVolumeW +#define FindNextVolumeMountPoint FindNextVolumeMountPointW +#endif +#define FindResource FindResourceW +#define FindResourceEx FindResourceExW +#define FormatMessage FormatMessageW +#define FreeEnvironmentStrings FreeEnvironmentStringsW +#define GetAtomName GetAtomNameW +#define GetBinaryType GetBinaryTypeW +#define GetCommandLine GetCommandLineW +#define GetCompressedFileSize GetCompressedFileSizeW +#define GetComputerName GetComputerNameW +#define GetCurrentDirectory GetCurrentDirectoryW +#define GetDefaultCommConfig GetDefaultCommConfigW +#define GetDiskFreeSpace GetDiskFreeSpaceW +#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW +#if (_WIN32_WINNT >= 0x0502) +#define GetDllDirectory GetDllDirectoryW +#endif +#define GetDriveType GetDriveTypeW +#define GetEnvironmentStrings GetEnvironmentStringsW +#define GetEnvironmentVariable GetEnvironmentVariableW +#define GetFileAttributes GetFileAttributesW +#define GetFileSecurity GetFileSecurityW +#define GetFileAttributesEx GetFileAttributesExW +#define GetFullPathName GetFullPathNameW +#define GetLogicalDriveStrings GetLogicalDriveStringsW +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +#define GetLongPathName GetLongPathNameW +#endif +#define GetModuleFileName GetModuleFileNameW +#define GetModuleHandle GetModuleHandleW +#if (_WIN32_WINNT >= 0x0500) +#define GetModuleHandleEx GetModuleHandleExW +#endif +#define GetNamedPipeHandleState GetNamedPipeHandleStateW +#define GetPrivateProfileInt GetPrivateProfileIntW +#define GetPrivateProfileSection GetPrivateProfileSectionW +#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesW +#define GetPrivateProfileString GetPrivateProfileStringW +#define GetPrivateProfileStruct GetPrivateProfileStructW +#define GetProfileInt GetProfileIntW +#define GetProfileSection GetProfileSectionW +#define GetProfileString GetProfileStringW +#define GetShortPathName GetShortPathNameW +#define GetStartupInfo GetStartupInfoW +#define GetSystemDirectory GetSystemDirectoryW +#if (_WIN32_WINNT >= 0x0500) +#define GetSystemWindowsDirectory GetSystemWindowsDirectoryW +#endif +#if (_WIN32_WINNT >= 0x0501) +#define GetSystemWow64Directory GetSystemWow64DirectoryW +#endif +#define GetTempFileName GetTempFileNameW +#define GetTempPath GetTempPathW +#define GetUserName GetUserNameW +#define GetVersionEx GetVersionExW +#define GetVolumeInformation GetVolumeInformationW +#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointW +#define GetVolumePathName GetVolumePathNameW +#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameW +#define GetWindowsDirectory GetWindowsDirectoryW +#define GlobalAddAtom GlobalAddAtomW +#define GlobalFindAtom GlobalFindAtomW +#define GlobalGetAtomName GlobalGetAtomNameW +#define IsBadStringPtr IsBadStringPtrW +#define LoadLibrary LoadLibraryW +#define LoadLibraryEx LoadLibraryExW +#define LogonUser LogonUserW +#define LookupAccountName LookupAccountNameW +#define LookupAccountSid LookupAccountSidW +#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW +#define LookupPrivilegeName LookupPrivilegeNameW +#define LookupPrivilegeValue LookupPrivilegeValueW +#define lstrcat lstrcatW +#define lstrcmp lstrcmpW +#define lstrcmpi lstrcmpiW +#define lstrcpy lstrcpyW +#define lstrcpyn lstrcpynW +#define lstrlen lstrlenW +#define MoveFile MoveFileW +#define MoveFileEx MoveFileExW +#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmW +#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmW +#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmW +#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmW +#define OpenBackupEventLog OpenBackupEventLogW +#define OpenEvent OpenEventW +#define OpenEventLog OpenEventLogW +#define OpenFileMapping OpenFileMappingW +#define OpenMutex OpenMutexW +#define OpenSemaphore OpenSemaphoreW +#define OutputDebugString OutputDebugStringW +#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmW +#define QueryDosDevice QueryDosDeviceW +#define ReadEventLog ReadEventLogW +#define RegisterEventSource RegisterEventSourceW +#define RemoveDirectory RemoveDirectoryW +#if (_WIN32_WINNT >= 0x0500) +#define ReplaceFile ReplaceFileW +#endif +#define ReportEvent ReportEventW +#define SearchPath SearchPathW +#define SetComputerName SetComputerNameW +#define SetCurrentDirectory SetCurrentDirectoryW +#define SetDefaultCommConfig SetDefaultCommConfigW +#if (_WIN32_WINNT >= 0x0502) +#define SetDllDirectory SetDllDirectoryW +#endif +#define SetEnvironmentVariable SetEnvironmentVariableW +#define SetFileAttributes SetFileAttributesW +#define SetFileSecurity SetFileSecurityW +#if (_WIN32_WINNT >= 0x0501) +#define SetFileShortName SetFileShortNameW +#endif +#if (_WIN32_WINNT >= 0x0502) +#define SetFirmwareEnvironmentVariable SetFirmwareEnvironmentVariableW +#endif +#define SetVolumeLabel SetVolumeLabelW +#define SetVolumeMountPoint SetVolumeMountPointW +#define UpdateResource UpdateResourceW +#define VerifyVersionInfo VerifyVersionInfoW +#define WaitNamedPipe WaitNamedPipeW +#define WritePrivateProfileSection WritePrivateProfileSectionW +#define WritePrivateProfileString WritePrivateProfileStringW +#define WritePrivateProfileStruct WritePrivateProfileStructW +#define WriteProfileSection WriteProfileSectionW +#define WriteProfileString WriteProfileStringW +#else +typedef STARTUPINFOA STARTUPINFO,*LPSTARTUPINFO; +typedef WIN32_FIND_DATAA WIN32_FIND_DATA,*LPWIN32_FIND_DATA; +typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO; +#if (_WIN32_WINNT >= 0x0501) +typedef ACTCTXA ACTCTX,*PACTCTX; +typedef PCACTCTXA PCACTCTX; +#endif +#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA +#define AddAtom AddAtomA +#define BackupEventLog BackupEventLogA +#define BeginUpdateResource BeginUpdateResourceA +#define BuildCommDCB BuildCommDCBA +#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsA +#define CallNamedPipe CallNamedPipeA +#if (_WIN32_WINNT >= 0x0501) +#define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3A +#endif +#define ClearEventLog ClearEventLogA +#define CommConfigDialog CommConfigDialogA +#define CopyFile CopyFileA +#define CopyFileEx CopyFileExA +#if (_WIN32_WINNT >= 0x0501) +#define CreateActCtx CreateActCtxA +#endif +#define CreateDirectory CreateDirectoryA +#define CreateDirectoryEx CreateDirectoryExA +#define CreateEvent CreateEventA +#define CreateFile CreateFileA +#define CreateFileMapping CreateFileMappingA +#if (_WIN32_WINNT >= 0x0500) +#define CreateHardLink CreateHardLinkA +#define CreateJobObject CreateJobObjectA +#endif +#define CreateMailslot CreateMailslotA +#define CreateMutex CreateMutexA +#define CreateNamedPipe CreateNamedPipeA +#define CreateProcess CreateProcessA +#define CreateProcessAsUser CreateProcessAsUserA +#define CreateSemaphore CreateSemaphoreA +#define CreateWaitableTimer CreateWaitableTimerA +#define DefineDosDevice DefineDosDeviceA +#define DeleteFile DeleteFileA +#if (_WIN32_WINNT >= 0x0500) +#define DeleteVolumeMountPoint DeleteVolumeMountPointA +#define DnsHostnameToComputerName DnsHostnameToComputerNameA +#endif +#define EncryptFile EncryptFileA +#define EndUpdateResource EndUpdateResourceA +#define EnumResourceLanguages EnumResourceLanguagesA +#define EnumResourceNames EnumResourceNamesA +#define EnumResourceTypes EnumResourceTypesA +#define ExpandEnvironmentStrings ExpandEnvironmentStringsA +#define FatalAppExit FatalAppExitA +#define FileEncryptionStatus FileEncryptionStatusA +#if (_WIN32_WINNT >= 0x0501) +#define FindActCtxSectionString FindActCtxSectionStringA +#endif +#define FindAtom FindAtomA +#define FindFirstChangeNotification FindFirstChangeNotificationA +#define FindFirstFile FindFirstFileA +#define FindFirstFileEx FindFirstFileExA +#if (_WIN32_WINNT >= 0x0500) +#define FindFirstVolume FindFirstVolumeA +#define FindFirstVolumeMountPoint FindFirstVolumeMountPointA +#endif +#define FindNextFile FindNextFileA +#if (_WIN32_WINNT >= 0x0500) +#define FindNextVolume FindNextVolumeA +#define FindNextVolumeMountPoint FindNextVolumeMountPointA +#endif +#define FindResource FindResourceA +#define FindResourceEx FindResourceExA +#define FormatMessage FormatMessageA +#define FreeEnvironmentStrings FreeEnvironmentStringsA +#define GetAtomName GetAtomNameA +#define GetBinaryType GetBinaryTypeA +#define GetCommandLine GetCommandLineA +#define GetComputerName GetComputerNameA +#define GetCompressedFileSize GetCompressedFileSizeA +#define GetCurrentDirectory GetCurrentDirectoryA +#define GetDefaultCommConfig GetDefaultCommConfigA +#define GetDiskFreeSpace GetDiskFreeSpaceA +#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA +#if (_WIN32_WINNT >= 0x0502) +#define GetDllDirectory GetDllDirectoryA +#endif +#define GetDriveType GetDriveTypeA +#define GetEnvironmentVariable GetEnvironmentVariableA +#define GetFileAttributes GetFileAttributesA +#define GetFileSecurity GetFileSecurityA +#define GetFileAttributesEx GetFileAttributesExA +#define GetFullPathName GetFullPathNameA +#define GetLogicalDriveStrings GetLogicalDriveStringsA +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +#define GetLongPathName GetLongPathNameA +#endif +#define GetNamedPipeHandleState GetNamedPipeHandleStateA +#define GetModuleHandle GetModuleHandleA +#if (_WIN32_WINNT >= 0x0500) +#define GetModuleHandleEx GetModuleHandleExA +#endif +#define GetModuleFileName GetModuleFileNameA +#define GetPrivateProfileInt GetPrivateProfileIntA +#define GetPrivateProfileSection GetPrivateProfileSectionA +#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesA +#define GetPrivateProfileString GetPrivateProfileStringA +#define GetPrivateProfileStruct GetPrivateProfileStructA +#define GetProfileInt GetProfileIntA +#define GetProfileSection GetProfileSectionA +#define GetProfileString GetProfileStringA +#define GetShortPathName GetShortPathNameA +#define GetStartupInfo GetStartupInfoA +#define GetSystemDirectory GetSystemDirectoryA +#if (_WIN32_WINNT >= 0x0500) +#define GetSystemWindowsDirectory GetSystemWindowsDirectoryA +#endif +#if (_WIN32_WINNT >= 0x0501) +#define GetSystemWow64Directory GetSystemWow64DirectoryA +#endif +#define GetTempFileName GetTempFileNameA +#define GetTempPath GetTempPathA +#define GetUserName GetUserNameA +#define GetVersionEx GetVersionExA +#define GetVolumeInformation GetVolumeInformationA +#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointA +#define GetVolumePathName GetVolumePathNameA +#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameA +#define GetWindowsDirectory GetWindowsDirectoryA +#define GlobalAddAtom GlobalAddAtomA +#define GlobalFindAtom GlobalFindAtomA +#define GlobalGetAtomName GlobalGetAtomNameA +#define IsBadStringPtr IsBadStringPtrA +#define LoadLibrary LoadLibraryA +#define LoadLibraryEx LoadLibraryExA +#define LogonUser LogonUserA +#define LookupAccountName LookupAccountNameA +#define LookupAccountSid LookupAccountSidA +#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA +#define LookupPrivilegeName LookupPrivilegeNameA +#define LookupPrivilegeValue LookupPrivilegeValueA +#define lstrcat lstrcatA +#define lstrcmp lstrcmpA +#define lstrcmpi lstrcmpiA +#define lstrcpy lstrcpyA +#define lstrcpyn lstrcpynA +#define lstrlen lstrlenA +#define MoveFile MoveFileA +#define MoveFileEx MoveFileExA +#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA +#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA +#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA +#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA +#define OpenBackupEventLog OpenBackupEventLogA +#define OpenEvent OpenEventA +#define OpenEventLog OpenEventLogA +#define OpenFileMapping OpenFileMappingA +#define OpenMutex OpenMutexA +#define OpenSemaphore OpenSemaphoreA +#define OutputDebugString OutputDebugStringA +#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA +#define QueryDosDevice QueryDosDeviceA +#define ReadEventLog ReadEventLogA +#define RegisterEventSource RegisterEventSourceA +#define RemoveDirectory RemoveDirectoryA +#if (_WIN32_WINNT >= 0x0500) +#define ReplaceFile ReplaceFileA +#endif +#define ReportEvent ReportEventA +#define SearchPath SearchPathA +#define SetComputerName SetComputerNameA +#define SetCurrentDirectory SetCurrentDirectoryA +#define SetDefaultCommConfig SetDefaultCommConfigA +#if (_WIN32_WINNT >= 0x0502) +#define SetDllDirectory SetDllDirectoryA +#endif +#define SetEnvironmentVariable SetEnvironmentVariableA +#define SetFileAttributes SetFileAttributesA +#define SetFileSecurity SetFileSecurityA +#if (_WIN32_WINNT >= 0x0501) +#define SetFileShortName SetFileShortNameA +#endif +#if (_WIN32_WINNT >= 0x0502) +#define SetFirmwareEnvironmentVariable SetFirmwareEnvironmentVariableA +#endif +#define SetVolumeLabel SetVolumeLabelA +#define SetVolumeMountPoint SetVolumeMountPointA +#define UpdateResource UpdateResourceA +#define VerifyVersionInfo VerifyVersionInfoA +#define WaitNamedPipe WaitNamedPipeA +#define WritePrivateProfileSection WritePrivateProfileSectionA +#define WritePrivateProfileString WritePrivateProfileStringA +#define WritePrivateProfileStruct WritePrivateProfileStructA +#define WriteProfileSection WriteProfileSectionA +#define WriteProfileString WriteProfileStringA +#endif +#endif +#ifdef __cplusplus +} +#endif +#endif /* _WINBASE_H */ diff --git a/reactos/w32api/include/winber.h b/reactos/w32api/include/winber.h new file mode 100644 index 00000000000..462a66d5320 --- /dev/null +++ b/reactos/w32api/include/winber.h @@ -0,0 +1,67 @@ +/* + 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. +*/ + +#ifndef _WINBER_H +#define _WINBER_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef WINBERAPI +#define WINBERAPI DECLSPEC_IMPORT +#endif + +typedef struct berelement BerElement; +typedef ULONG ber_len_t; +#include +typedef struct berval { + ber_len_t bv_len; + char *bv_val; +} BerValue, LDAP_BERVAL, *PLDAP_BERVAL, BERVAL, *PBERVAL; +#include + +typedef ULONG ber_tag_t; +typedef INT ber_int_t; +typedef UINT ber_uint_t; +typedef INT ber_slen_t; + +#define LBER_ERROR ((ber_tag_t)-1) +#define LBER_DEFAULT ((ber_tag_t)-1) +#define LBER_USE_DER 0x01 + +WINBERAPI BerElement *ber_init(const BerValue*); +WINBERAPI int ber_printf(BerElement*,const char*,...); +WINBERAPI int ber_flatten(BerElement*,BerValue**); +WINBERAPI ber_tag_t ber_scanf(BerElement*,const char*,...); +WINBERAPI ber_tag_t ber_peek_tag(BerElement*,ber_len_t*); +WINBERAPI ber_tag_t ber_skip_tag(BerElement*,ber_len_t*); +WINBERAPI ber_tag_t ber_first_element(BerElement*,ber_len_t*,char**); +WINBERAPI ber_tag_t ber_next_element(BerElement*,ber_len_t*,char*); +WINBERAPI void ber_bvfree(BerValue*); +WINBERAPI void ber_bvecfree(BerValue**); +WINBERAPI void ber_free(BerElement*,int); +WINBERAPI BerValue *ber_bvdup(BerValue*); +WINBERAPI BerElement *ber_alloc_t(int); + +#ifdef __cplusplus +} +#endif +#endif /* _WINBER_H */ diff --git a/reactos/w32api/include/wincon.h b/reactos/w32api/include/wincon.h new file mode 100644 index 00000000000..6c92f09ce04 --- /dev/null +++ b/reactos/w32api/include/wincon.h @@ -0,0 +1,216 @@ +#ifndef _WINCON_H +#define _WINCON_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define FOREGROUND_BLUE 1 +#define FOREGROUND_GREEN 2 +#define FOREGROUND_RED 4 +#define FOREGROUND_INTENSITY 8 +#define BACKGROUND_BLUE 16 +#define BACKGROUND_GREEN 32 +#define BACKGROUND_RED 64 +#define BACKGROUND_INTENSITY 128 +#define CTRL_C_EVENT 0 +#define CTRL_BREAK_EVENT 1 +#define CTRL_CLOSE_EVENT 2 +#define CTRL_LOGOFF_EVENT 5 +#define CTRL_SHUTDOWN_EVENT 6 +#define ENABLE_LINE_INPUT 2 +#define ENABLE_ECHO_INPUT 4 +#define ENABLE_PROCESSED_INPUT 1 +#define ENABLE_WINDOW_INPUT 8 +#define ENABLE_MOUSE_INPUT 16 +#define ENABLE_PROCESSED_OUTPUT 1 +#define ENABLE_WRAP_AT_EOL_OUTPUT 2 +#define KEY_EVENT 1 +#define MOUSE_EVENT 2 +#define WINDOW_BUFFER_SIZE_EVENT 4 +#define MENU_EVENT 8 +#define FOCUS_EVENT 16 +#define CAPSLOCK_ON 128 +#define ENHANCED_KEY 256 +#define RIGHT_ALT_PRESSED 1 +#define LEFT_ALT_PRESSED 2 +#define RIGHT_CTRL_PRESSED 4 +#define LEFT_CTRL_PRESSED 8 +#define SHIFT_PRESSED 16 +#define NUMLOCK_ON 32 +#define SCROLLLOCK_ON 64 +#define FROM_LEFT_1ST_BUTTON_PRESSED 1 +#define RIGHTMOST_BUTTON_PRESSED 2 +#define FROM_LEFT_2ND_BUTTON_PRESSED 4 +#define FROM_LEFT_3RD_BUTTON_PRESSED 8 +#define FROM_LEFT_4TH_BUTTON_PRESSED 16 +#define MOUSE_MOVED 1 +#define DOUBLE_CLICK 2 +#define MOUSE_WHEELED 4 + +typedef struct _CHAR_INFO { + union { + WCHAR UnicodeChar; + CHAR AsciiChar; + } Char; + WORD Attributes; +} CHAR_INFO,*PCHAR_INFO; +typedef struct _SMALL_RECT { + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} SMALL_RECT,*PSMALL_RECT; +typedef struct _CONSOLE_CURSOR_INFO { + DWORD dwSize; + BOOL bVisible; +} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO; +typedef struct _COORD { + SHORT X; + SHORT Y; +} COORD; +typedef struct _CONSOLE_FONT_INFO { + DWORD nFont; + COORD dwFontSize; +} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO; +typedef struct _CONSOLE_SCREEN_BUFFER_INFO { + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO; +typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(DWORD); +typedef struct _KEY_EVENT_RECORD { + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union { + WCHAR UnicodeChar; + CHAR AsciiChar; + } uChar; + DWORD dwControlKeyState; +} +#ifdef __GNUC__ +/* gcc's alignment is not what win32 expects */ + PACKED +#endif +KEY_EVENT_RECORD; + +typedef struct _MOUSE_EVENT_RECORD { + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} MOUSE_EVENT_RECORD; +typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD; +typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD; +typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD; +typedef 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; + } Event; +} INPUT_RECORD,*PINPUT_RECORD; + +BOOL WINAPI AllocConsole(void); +#if (_WIN32_WINNT >= 0x05001) +BOOL WINAPI AttachConsole(DWORD); +#endif +HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,CONST SECURITY_ATTRIBUTES*,DWORD,LPVOID); +BOOL WINAPI FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD); +BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD); +BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD); +BOOL WINAPI FlushConsoleInputBuffer(HANDLE); +BOOL WINAPI FreeConsole(void); +BOOL WINAPI GenerateConsoleCtrlEvent(DWORD,DWORD); +UINT WINAPI GetConsoleCP(void); +BOOL WINAPI GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO); +BOOL WINAPI GetConsoleMode(HANDLE,PDWORD); +UINT WINAPI GetConsoleOutputCP(void); +BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO); +DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD); +DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD); +#if (_WIN32_WINNT >= 0x0500) +HWND WINAPI GetConsoleWindow(void); +#endif +COORD WINAPI GetLargestConsoleWindowSize(HANDLE); +BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD); +BOOL WINAPI GetNumberOfConsoleMouseButtons(PDWORD); +BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD); +BOOL WINAPI PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD); +BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID); +BOOL WINAPI ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PVOID); +BOOL WINAPI ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD); +BOOL WINAPI ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD); +BOOL WINAPI ReadConsoleOutputAttribute(HANDLE,LPWORD,DWORD,COORD,LPDWORD); +BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,PDWORD); +BOOL WINAPI ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,PDWORD); +BOOL WINAPI ReadConsoleOutputA(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT); +BOOL WINAPI ReadConsoleOutputW(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT); +BOOL WINAPI ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*); +BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*); +BOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE); +BOOL WINAPI SetConsoleCP(UINT); +BOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL); +BOOL WINAPI SetConsoleCursorInfo(HANDLE,const CONSOLE_CURSOR_INFO*); +BOOL WINAPI SetConsoleCursorPosition(HANDLE,COORD); +BOOL WINAPI SetConsoleMode(HANDLE,DWORD); +BOOL WINAPI SetConsoleOutputCP(UINT); +BOOL WINAPI SetConsoleScreenBufferSize(HANDLE,COORD); +BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD); +BOOL WINAPI SetConsoleTitleA(LPCSTR); +BOOL WINAPI SetConsoleTitleW(LPCWSTR); +BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*); +BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID); +BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID); +BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); +BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); +BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT); +BOOL WINAPI WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT); +BOOL WINAPI WriteConsoleOutputAttribute(HANDLE,const WORD*,DWORD,COORD,PDWORD); +BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,PDWORD); +BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD); + +#ifdef UNICODE +#define FillConsoleOutputCharacter FillConsoleOutputCharacterW +#define GetConsoleTitle GetConsoleTitleW +#define PeekConsoleInput PeekConsoleInputW +#define ReadConsole ReadConsoleW +#define ReadConsoleInput ReadConsoleInputW +#define ReadConsoleOutput ReadConsoleOutputW +#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW +#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW +#define SetConsoleTitle SetConsoleTitleW +#define WriteConsole WriteConsoleW +#define WriteConsoleInput WriteConsoleInputW +#define WriteConsoleOutput WriteConsoleOutputW +#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW +#else +#define FillConsoleOutputCharacter FillConsoleOutputCharacterA +#define GetConsoleTitle GetConsoleTitleA +#define PeekConsoleInput PeekConsoleInputA +#define ReadConsole ReadConsoleA +#define ReadConsoleInput ReadConsoleInputA +#define ReadConsoleOutput ReadConsoleOutputA +#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA +#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA +#define SetConsoleTitle SetConsoleTitleA +#define WriteConsole WriteConsoleA +#define WriteConsoleInput WriteConsoleInputA +#define WriteConsoleOutput WriteConsoleOutputA +#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/wincrypt.h b/reactos/w32api/include/wincrypt.h new file mode 100644 index 00000000000..c3ebf2d5d00 --- /dev/null +++ b/reactos/w32api/include/wincrypt.h @@ -0,0 +1,695 @@ +#ifndef _WINCRYPT_H +#define _WINCRYPT_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0" +#define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0" +#define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0" +#define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0" +#define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider" +#define MS_STRONG_PROV_W L"Microsoft Strong Cryptographic Provider" +#define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider" +#define MS_DEF_RSA_SIG_PROV_W L"Microsoft RSA Signature Cryptographic Provider" +#define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider" +#define MS_DEF_RSA_SCHANNEL_PROV_W L"Microsoft RSA SChannel Cryptographic Provider" +#define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider" +#define MS_DEF_DSS_PROV_W L"Microsoft Base DSS Cryptographic Provider" +#define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" +#define MS_DEF_DSS_DH_PROV_W L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" +#define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" +#define MS_ENH_DSS_DH_PROV_W L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" +#define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider" +#define MS_DEF_DH_SCHANNEL_PROV_W L"Microsoft DH SChannel Cryptographic Provider" +#define MS_SCARD_PROV_A "Microsoft Base Smart Card Crypto Provider" +#define MS_SCARD_PROV_W L"Microsoft Base Smart Card Crypto Provider" +#define GET_ALG_CLASS(x) (x&57344) +#define GET_ALG_TYPE(x) (x&7680) +#define GET_ALG_SID(x) (x&511) +#define ALG_CLASS_ANY 0 +#define ALG_CLASS_SIGNATURE 8192 +#define ALG_CLASS_MSG_ENCRYPT 16384 +#define ALG_CLASS_DATA_ENCRYPT 24576 +#define ALG_CLASS_HASH 32768 +#define ALG_CLASS_KEY_EXCHANGE 40960 +#define ALG_CLASS_ALL 57344 /* (7 << 13) */ +#define ALG_TYPE_ANY 0 +#define ALG_TYPE_DSS 512 +#define ALG_TYPE_RSA 1024 +#define ALG_TYPE_BLOCK 1536 +#define ALG_TYPE_STREAM 2048 +#define ALG_TYPE_DH 2560 /* (5 << 9) */ +#define ALG_TYPE_SECURECHANNEL 3072 /* (6 << 9) */ +#define ALG_SID_ANY 0 +#define ALG_SID_RSA_ANY 0 +#define ALG_SID_RSA_PKCS 1 +#define ALG_SID_RSA_MSATWORK 2 +#define ALG_SID_RSA_ENTRUST 3 +#define ALG_SID_RSA_PGP 4 +#define ALG_SID_DSS_ANY 0 +#define ALG_SID_DSS_PKCS 1 +#define ALG_SID_DSS_DMS 2 +#define ALG_SID_DES 1 +#define ALG_SID_3DES 3 +#define ALG_SID_DESX 4 +#define ALG_SID_IDEA 5 +#define ALG_SID_CAST 6 +#define ALG_SID_SAFERSK64 7 +#define ALG_SID_SAFERSK128 8 +#define ALG_SID_3DES_112 9 +#define ALG_SID_SKIPJACK 10 +#define ALG_SID_TEK 11 +#define ALG_SID_CYLINK_MEK 12 +#define ALG_SID_RC5 13 +#define ALG_SID_RC2 2 +#define ALG_SID_RC4 1 +#define ALG_SID_SEAL 2 +#define ALG_SID_MD2 1 +#define ALG_SID_MD4 2 +#define ALG_SID_MD5 3 +#define ALG_SID_SHA 4 +#define ALG_SID_MAC 5 +#define ALG_SID_RIPEMD 6 +#define ALG_SID_RIPEMD160 7 +#define ALG_SID_SSL3SHAMD5 8 +#define ALG_SID_HMAC 9 +#define ALG_SID_TLS1PRF 10 +#define ALG_SID_EXAMPLE 80 + +#define CALG_MD2 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD2) +#define CALG_MD4 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD4) +#define CALG_MD5 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD5) +#define CALG_SHA (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA) +#define CALG_MAC (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MAC) +#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|3) +#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|12) +#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|10) +#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|4) +#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_RSA|ALG_SID_RSA_ANY) +#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_DSS|ALG_SID_DSS_ANY) +#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY) +#define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES) +#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2) +#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4) +#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL) +#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|ALG_SID_DSS_DMS) +#define CALG_DESX (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX) +#define CALG_TLS1PRF (ALG_CLASS_DHASH|ALG_TYPE_ANY|ALG_SID_TLS1PRF) + +#define CRYPT_VERIFYCONTEXT 0xF0000000 +#define CRYPT_NEWKEYSET 8 +#define CRYPT_DELETEKEYSET 16 +#define CRYPT_MACHINE_KEYSET 32 +#define CRYPT_SILENT 64 +#define CRYPT_EXPORTABLE 1 +#define CRYPT_USER_PROTECTED 2 +#define CRYPT_CREATE_SALT 4 +#define CRYPT_UPDATE_KEY 8 +#define SIMPLEBLOB 1 +#define PUBLICKEYBLOB 6 +#define PRIVATEKEYBLOB 7 +#define PLAINTEXTKEYBLOB 8 +#define OPAQUEKEYBLOB 9 +#define PUBLICKEYBLOBEX 10 +#define SYMMETRICWRAPKEYBLOB 11 +#define AT_KEYEXCHANGE 1 +#define AT_SIGNATURE 2 +#define CRYPT_USERDATA 1 +#define PKCS5_PADDING 1 +#define CRYPT_MODE_CBC 1 +#define CRYPT_MODE_ECB 2 +#define CRYPT_MODE_OFB 3 +#define CRYPT_MODE_CFB 4 +#define CRYPT_MODE_CTS 5 +#define CRYPT_MODE_CBCI 6 +#define CRYPT_MODE_CFBP 7 +#define CRYPT_MODE_OFBP 8 +#define CRYPT_MODE_CBCOFM 9 +#define CRYPT_MODE_CBCOFMI 10 +#define CRYPT_ENCRYPT 1 +#define CRYPT_DECRYPT 2 +#define CRYPT_EXPORT 4 +#define CRYPT_READ 8 +#define CRYPT_WRITE 16 +#define CRYPT_MAC 32 +#define HP_ALGID 1 +#define HP_HASHVAL 2 +#define HP_HASHSIZE 4 +#define CRYPT_FAILED FALSE +#define CRYPT_SUCCEED TRUE +#define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED) +#define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED) +#define PP_ENUMALGS 1 +#define PP_ENUMCONTAINERS 2 +#define PP_IMPTYPE 3 +#define PP_NAME 4 +#define PP_VERSION 5 +#define PP_CONTAINER 6 +#define PP_CHANGE_PASSWORD 7 +#define PP_KEYSET_SEC_DESCR 8 +#define PP_CERTCHAIN 9 +#define PP_KEY_TYPE_SUBTYPE 10 +#define PP_PROVTYPE 16 +#define PP_KEYSTORAGE 17 +#define PP_APPLI_CERT 18 +#define PP_SYM_KEYSIZE 19 +#define PP_SESSION_KEYSIZE 20 +#define PP_UI_PROMPT 21 +#define PP_ENUMALGS_EX 22 +#define PP_ENUMMANDROOTS 25 +#define PP_ENUMELECTROOTS 26 +#define PP_KEYSET_TYPE 27 +#define PP_ADMIN_PIN 31 +#define PP_KEYEXCHANGE_PIN 32 +#define PP_SIGNATURE_PIN 33 +#define PP_SIG_KEYSIZE_INC 34 +#define PP_KEYX_KEYSIZE_INC 35 +#define PP_UNIQUE_CONTAINER 36 +#define PP_SGC_INFO 37 +#define PP_USE_HARDWARE_RNG 38 +#define PP_KEYSPEC 39 +#define PP_ENUMEX_SIGNING_PROT 40 +#define CRYPT_FIRST 1 +#define CRYPT_NEXT 2 +#define CRYPT_IMPL_HARDWARE 1 +#define CRYPT_IMPL_SOFTWARE 2 +#define CRYPT_IMPL_MIXED 3 +#define CRYPT_IMPL_UNKNOWN 4 +#define PROV_RSA_FULL 1 +#define PROV_RSA_SIG 2 +#define PROV_DSS 3 +#define PROV_FORTEZZA 4 +#define PROV_MS_MAIL 5 +#define PROV_SSL 6 +#define PROV_STT_MER 7 +#define PROV_STT_ACQ 8 +#define PROV_STT_BRND 9 +#define PROV_STT_ROOT 10 +#define PROV_STT_ISS 11 +#define PROV_RSA_SCHANNEL 12 +#define PROV_DSS_DH 13 +#define PROV_EC_ECDSA_SIG 14 +#define PROV_EC_ECNRA_SIG 15 +#define PROV_EC_ECDSA_FULL 16 +#define PROV_EC_ECNRA_FULL 17 +#define PROV_DH_SCHANNEL 18 +#define PROV_SPYRUS_LYNKS 20 +#define PROV_RNG 21 +#define PROV_INTEL_SEC 22 +#define MAXUIDLEN 64 +#define CUR_BLOB_VERSION 2 +#define X509_ASN_ENCODING 1 +#define PKCS_7_ASN_ENCODING 65536 +#define CERT_V1 0 +#define CERT_V2 1 +#define CERT_V3 2 +#define CERT_E_CHAINING (-2146762486) +#define CERT_E_CN_NO_MATCH (-2146762481) +#define CERT_E_EXPIRED (-2146762495) +#define CERT_E_PURPOSE (-2146762490) +#define CERT_E_REVOCATION_FAILURE (-2146762482) +#define CERT_E_REVOKED (-2146762484) +#define CERT_E_ROLE (-2146762493) +#define CERT_E_UNTRUSTEDROOT (-2146762487) +#define CERT_E_UNTRUSTEDTESTROOT (-2146762483) +#define CERT_E_VALIDITYPERIODNESTING (-2146762494) +#define CERT_E_WRONG_USAGE (-2146762480) +#define CERT_E_PATHLENCONST (-2146762492) +#define CERT_E_CRITICAL (-2146762491) +#define CERT_E_ISSUERCHAINING (-2146762489) +#define CERT_E_MALFORMED (-2146762488) +#define CRYPT_E_REVOCATION_OFFLINE (-2146885613) +#define CRYPT_E_REVOKED (-2146885616) +#define TRUST_E_BASIC_CONSTRAINTS (-2146869223) +#define TRUST_E_CERT_SIGNATURE (-2146869244) +#define TRUST_E_FAIL (-2146762485) +#define CERT_TRUST_NO_ERROR 0 +#define CERT_TRUST_IS_NOT_TIME_VALID 1 +#define CERT_TRUST_IS_NOT_TIME_NESTED 2 +#define CERT_TRUST_IS_REVOKED 4 +#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 8 +#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 16 +#define CERT_TRUST_IS_UNTRUSTED_ROOT 32 +#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 64 +#define CERT_TRUST_IS_CYCLIC 128 +#define CERT_TRUST_IS_PARTIAL_CHAIN 65536 +#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 131072 +#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 262144 +#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 524288 +#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 1 +#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 2 +#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 4 +#define CERT_TRUST_IS_SELF_SIGNED 8 +#define CERT_TRUST_IS_COMPLEX_CHAIN 65536 +#define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1) +#define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2) +#define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3) +#define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4) +#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5) +#define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6) +#define USAGE_MATCH_TYPE_AND 0 +#define USAGE_MATCH_TYPE_OR 1 +#define CERT_SIMPLE_NAME_STR 1 +#define CERT_OID_NAME_STR 2 +#define CERT_X500_NAME_STR 3 +#define CERT_NAME_STR_SEMICOLON_FLAG 1073741824 +#define CERT_NAME_STR_CRLF_FLAG 134217728 +#define CERT_NAME_STR_NO_PLUS_FLAG 536870912 +#define CERT_NAME_STR_NO_QUOTING_FLAG 268435456 +#define CERT_NAME_STR_REVERSE_FLAG 33554432 +#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 131072 +#define CERT_FIND_ANY 0 +#define CERT_FIND_CERT_ID 1048576 +#define CERT_FIND_CTL_USAGE 655360 +#define CERT_FIND_ENHKEY_USAGE 655360 +#define CERT_FIND_EXISTING 851968 +#define CERT_FIND_HASH 65536 +#define CERT_FIND_ISSUER_ATTR 196612 +#define CERT_FIND_ISSUER_NAME 131076 +#define CERT_FIND_ISSUER_OF 786432 +#define CERT_FIND_KEY_IDENTIFIER 983040 +#define CERT_FIND_KEY_SPEC 589824 +#define CERT_FIND_MD5_HASH 262144 +#define CERT_FIND_PROPERTY 327680 +#define CERT_FIND_PUBLIC_KEY 393216 +#define CERT_FIND_SHA1_HASH 65536 +#define CERT_FIND_SIGNATURE_HASH 917504 +#define CERT_FIND_SUBJECT_ATTR 196615 +#define CERT_FIND_SUBJECT_CERT 720896 +#define CERT_FIND_SUBJECT_NAME 131079 +#define CERT_FIND_SUBJECT_STR_A 458759 +#define CERT_FIND_SUBJECT_STR_W 524295 +#define CERT_FIND_ISSUER_STR_A 458756 +#define CERT_FIND_ISSUER_STR_W 524292 +#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 16 +#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 1 +#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 8 +#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 32 +#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 2 +#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 2 +#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 1 +#define CERT_CHAIN_FIND_BY_ISSUER 1 +#define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 1 +#define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 2 +#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 32768 +#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 4 +#define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 8 +#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 16384 +#define CERT_STORE_PROV_SYSTEM 10 +#define CERT_SYSTEM_STORE_LOCAL_MACHINE 131072 +#define szOID_PKIX_KP_SERVER_AUTH "4235600" +#define szOID_SERVER_GATED_CRYPTO "4235658" +#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1" +#define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2" +#define CRYPT_NOHASHOID 0x00000001 +#define CRYPT_NO_SALT 0x10 +#define CRYPT_PREGEN 0x40 +#define CRYPT_RECIPIENT 0x10 +#define CRYPT_INITIATOR 0x40 +#define CRYPT_ONLINE 0x80 +#define CRYPT_SF 0x100 +#define CRYPT_CREATE_IV 0x200 +#define CRYPT_KEK 0x400 +#define CRYPT_DATA_KEY 0x800 +#define CRYPT_VOLATILE 0x1000 +#define CRYPT_SGCKEY 0x2000 +#define KP_IV 0x00000001 +#define KP_SALT 0x00000002 +#define KP_PADDING 0x00000003 +#define KP_MODE 0x00000004 +#define KP_MODE_BITS 0x00000005 +#define KP_PERMISSIONS 0x00000006 +#define KP_ALGID 0x00000007 +#define KP_BLOCKLEN 0x00000008 +#define KP_KEYLEN 0x00000009 +#define KP_SALT_EX 0x0000000a +#define KP_P 0x0000000b +#define KP_G 0x0000000c +#define KP_Q 0x0000000d +#define KP_X 0x0000000e +#define KP_Y 0x0000000f +#define KP_RA 0x00000010 +#define KP_RB 0x00000011 +#define KP_INFO 0x00000012 +#define KP_EFFECTIVE_KEYLEN 0x00000013 +#define KP_SCHANNEL_ALG 0x00000014 +#define KP_PUB_PARAMS 0x00000027 +#define CRYPT_FLAG_PCT1 0x0001 +#define CRYPT_FLAG_SSL2 0x0002 +#define CRYPT_FLAG_SSL3 0x0004 +#define CRYPT_FLAG_TLS1 0x0008 +#define CRYPT_FLAG_IPSEC 0x0010 +#define CRYPT_FLAG_SIGNING 0x0020 +#define SCHANNEL_MAC_KEY 0x00000000 +#define SCHANNEL_ENC_KEY 0x00000001 +#define INTERNATIONAL_USAGE 0x00000001 + +typedef UINT ALG_ID; +typedef struct _VTableProvStruc {FARPROC FuncVerifyImage;} VTableProvStruc,*PVTableProvStruc; +typedef ULONG HCRYPTPROV; +typedef ULONG HCRYPTKEY; +typedef ULONG HCRYPTHASH; +typedef PVOID HCERTSTORE; +typedef PVOID HCRYPTMSG; +typedef PVOID HCERTCHAINENGINE; +typedef struct _CRYPTOAPI_BLOB { + DWORD cbData; + BYTE* pbData; +} CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB, + CRYPT_UINT_BLOB, *PCRYPT_UINT_BLOB, + CRYPT_OBJID_BLOB, *PCRYPT_OBJID_BLOB, + CERT_NAME_BLOB, *PCERT_NAME_BLOB, + CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB, + CERT_BLOB, *PCERT_BLOB, + CRL_BLOB, *PCRL_BLOB, + DATA_BLOB, *PDATA_BLOB, + CRYPT_DATA_BLOB, *PCRYPT_DATA_BLOB, + CRYPT_HASH_BLOB, *PCRYPT_HASH_BLOB, + CRYPT_DIGEST_BLOB, *PCRYPT_DIGEST_BLOB, + CRYPT_DER_BLOB, *PCRYPT_DER_BLOB, + CRYPT_ATTR_BLOB, *PCRYPT_ATTR_BLOB; +/* not described in SDK; has the same layout as HTTPSPolicyCallbackData */ +typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbStruct; + DWORD dwAuthType; + DWORD fdwChecks; + LPWSTR pwszServerName; +} SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, + HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData; +/* #if (_WIN32_WINNT>=0x500) */ +typedef struct _CERT_CHAIN_POLICY_PARA { + DWORD cbSize; + DWORD dwFlags; + void* pvExtraPolicyPara; +} CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA; +typedef struct _CERT_CHAIN_POLICY_STATUS { + DWORD cbSize; + DWORD dwError; + LONG lChainIndex; + LONG lElementIndex; + void* pvExtraPolicyStatus; +} CERT_CHAIN_POLICY_STATUS, *PCERT_CHAIN_POLICY_STATUS; +/* #endif */ +typedef struct _CRYPT_ALGORITHM_IDENTIFIER { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; +} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER; +typedef struct _CRYPT_BIT_BLOB { + DWORD cbData; + BYTE* pbData; + DWORD cUnusedBits; +} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB; +typedef struct _CERT_PUBLIC_KEY_INFO { + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_BIT_BLOB PublicKey; +} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO; +typedef struct _CERT_EXTENSION { + LPSTR pszObjId; + BOOL fCritical; + CRYPT_OBJID_BLOB Value; +} CERT_EXTENSION, *PCERT_EXTENSION; +typedef 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; +} CERT_INFO, *PCERT_INFO; +typedef struct _CERT_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCertEncoded; + DWORD cbCertEncoded; + PCERT_INFO pCertInfo; + HCERTSTORE hCertStore; +} CERT_CONTEXT, *PCERT_CONTEXT; +typedef const CERT_CONTEXT *PCCERT_CONTEXT; +typedef struct _CTL_USAGE { + DWORD cUsageIdentifier; + LPSTR *rgpszUsageIdentifier; +} CTL_USAGE, *PCTRL_USAGE, + CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE; +typedef struct _CERT_USAGE_MATCH { + DWORD dwType; + CERT_ENHKEY_USAGE Usage; +} CERT_USAGE_MATCH, *PCERT_USAGE_MATCH; +/* #if (_WIN32_WINNT>=0x500) */ +typedef struct _CERT_CHAIN_PARA { + DWORD cbSize; + CERT_USAGE_MATCH RequestedUsage; +#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS + CERT_USAGE_MATCH RequestedIssuancePolicy; + DWORD dwUrlRetrievalTimeout; + BOOL fCheckRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +#endif +} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA; +typedef BOOL (WINAPI *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK)(PCCERT_CONTEXT,void*); +typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA { + DWORD cbSize; + 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; +} CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA; +/* #endif */ +typedef struct _CERT_TRUST_STATUS { + DWORD dwErrorStatus; + DWORD dwInfoStatus; +} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS; +typedef struct _CRL_ENTRY { + CRYPT_INTEGER_BLOB SerialNumber; + FILETIME RevocationDate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} CRL_ENTRY, *PCRL_ENTRY; +typedef 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; +} CRL_INFO, *PCRL_INFO; +typedef struct _CRL_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCrlEncoded; + DWORD cbCrlEncoded; + PCRL_INFO pCrlInfo; + HCERTSTORE hCertStore; +} CRL_CONTEXT, *PCRL_CONTEXT; +typedef const CRL_CONTEXT *PCCRL_CONTEXT; +typedef struct _CERT_REVOCATION_CRL_INFO { + DWORD cbSize; + PCCRL_CONTEXT pBaseCRLContext; + PCCRL_CONTEXT pDeltaCRLContext; + PCRL_ENTRY pCrlEntry; + BOOL fDeltaCrlEntry; +} CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO; +typedef struct _CERT_REVOCATION_INFO { + DWORD cbSize; + DWORD dwRevocationResult; + LPCSTR pszRevocationOid; + LPVOID pvOidSpecificInfo; + BOOL fHasFreshnessTime; + DWORD dwFreshnessTime; + PCERT_REVOCATION_CRL_INFO pCrlInfo; +} CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO; +/* #if (_WIN32_WINNT>=0x500) */ +typedef struct _CERT_CHAIN_ELEMENT { + DWORD cbSize; + PCCERT_CONTEXT pCertContext; + CERT_TRUST_STATUS TrustStatus; + PCERT_REVOCATION_INFO pRevocationInfo; + PCERT_ENHKEY_USAGE pIssuanceUsage; + PCERT_ENHKEY_USAGE pApplicationUsage; +} CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT; +/* #endif */ +typedef struct _CRYPT_ATTRIBUTE { + LPSTR pszObjId; + DWORD cValue; + PCRYPT_ATTR_BLOB rgValue; +} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE; +typedef struct _CTL_ENTRY { + CRYPT_DATA_BLOB SubjectIdentifier; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; +} CTL_ENTRY, *PCTL_ENTRY; +typedef 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; +} CTL_INFO, *PCTL_INFO; +typedef struct _CTL_CONTEXT { + DWORD dwMsgAndCertEncodingType; + BYTE* pbCtlEncoded; + DWORD cbCtlEncoded; + PCTL_INFO pCtlInfo; + HCERTSTORE hCertStore; + HCRYPTMSG hCryptMsg; + BYTE* pbCtlContent; + DWORD cbCtlContent; +} CTL_CONTEXT, *PCTL_CONTEXT; +typedef const CTL_CONTEXT *PCCTL_CONTEXT; +typedef struct _CERT_TRUST_LIST_INFO { + DWORD cbSize; + PCTL_ENTRY pCtlEntry; + PCCTL_CONTEXT pCtlContext; +} CERT_TRUST_LIST_INFO, *PCERT_TRUST_LIST_INFO; +typedef struct _CERT_SIMPLE_CHAIN { + DWORD cbSize; + CERT_TRUST_STATUS TrustStatus; + DWORD cElement; + PCERT_CHAIN_ELEMENT* rgpElement; + PCERT_TRUST_LIST_INFO pTrustListInfo; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN; +/* #if (_WIN32_WINNT>=0x500) */ +typedef const struct _CERT_CHAIN_CONTEXT* PCCERT_CHAIN_CONTEXT; +typedef struct _CERT_CHAIN_CONTEXT { + DWORD cbSize; + CERT_TRUST_STATUS TrustStatus; + DWORD cChain; + PCERT_SIMPLE_CHAIN* rgpChain; + DWORD cLowerQualityChainContext; + PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT; +/* #endif */ +typedef struct _PROV_ENUMALGS { + ALG_ID aiAlgid; + DWORD dwBitLen; + DWORD dwNameLen; + CHAR szName[20]; +} PROV_ENUMALGS; +typedef struct _PUBLICKEYSTRUC { + BYTE bType; + BYTE bVersion; + WORD reserved; + ALG_ID aiKeyAlg; +} PUBLICKEYSTRUC; +typedef struct _RSAPUBKEY { + DWORD magic; + DWORD bitlen; + DWORD pubexp; +} RSAPUBKEY; + +BOOL WINAPI CertCloseStore(HCERTSTORE,DWORD); +BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE,PCCERT_CONTEXT,LPFILETIME,HCERTSTORE,PCERT_CHAIN_PARA,DWORD,LPVOID,PCCERT_CHAIN_CONTEXT*); +BOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR,PCCERT_CHAIN_CONTEXT,PCERT_CHAIN_POLICY_PARA,PCERT_CHAIN_POLICY_STATUS); +void WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); +DWORD WINAPI CertNameToStrA(DWORD,PCERT_NAME_BLOB,DWORD,LPSTR,DWORD); +DWORD WINAPI CertNameToStrW(DWORD,PCERT_NAME_BLOB,DWORD,LPWSTR,DWORD); +HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV,LPCSTR); +HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV,LPCWSTR); +HCERTSTORE WINAPI CertOpenStore(LPCSTR,DWORD,HCRYPTPROV,DWORD,const void*); +PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CONTEXT); +BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT); +PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE,PCCERT_CONTEXT,PCCERT_CONTEXT,DWORD*); +PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CHAIN_CONTEXT); +BOOL WINAPI CryptAcquireContextA(HCRYPTPROV*,LPCSTR,LPCSTR,DWORD,DWORD); +BOOL WINAPI CryptAcquireContextW(HCRYPTPROV*,LPCWSTR,LPCWSTR,DWORD,DWORD); +BOOL WINAPI CryptContextAddRef(HCRYPTPROV,DWORD*,DWORD); +BOOL WINAPI CryptReleaseContext(HCRYPTPROV,DWORD); +BOOL WINAPI CryptGenKey(HCRYPTPROV,ALG_ID,DWORD,HCRYPTKEY*); +BOOL WINAPI CryptDeriveKey(HCRYPTPROV,ALG_ID,HCRYPTHASH,DWORD,HCRYPTKEY*); +BOOL WINAPI CryptDestroyKey(HCRYPTKEY); +#if (WINVER >= 0x0500) +BOOL WINAPI CryptDuplicateHash(HCRYPTHASH,DWORD*,DWORD,HCRYPTHASH*); +BOOL WINAPI CryptDuplicateKey(HCRYPTKEY,DWORD*,DWORD,HCRYPTKEY*); +#endif +BOOL WINAPI CryptSetKeyParam(HCRYPTKEY,DWORD,PBYTE,DWORD); +BOOL WINAPI CryptGetKeyParam(HCRYPTKEY,DWORD,PBYTE,PDWORD,DWORD); +BOOL WINAPI CryptSetHashParam(HCRYPTHASH,DWORD,PBYTE,DWORD); +BOOL WINAPI CryptGetHashParam(HCRYPTHASH,DWORD,PBYTE,PDWORD,DWORD); +BOOL WINAPI CryptSetProvParam(HCRYPTPROV,DWORD,PBYTE,DWORD); +BOOL WINAPI CryptGetProvParam(HCRYPTPROV,DWORD,PBYTE,PDWORD,DWORD); +BOOL WINAPI CryptGenRandom(HCRYPTPROV,DWORD,PBYTE); +BOOL WINAPI CryptGetUserKey(HCRYPTPROV,DWORD,HCRYPTKEY*); +BOOL WINAPI CryptExportKey(HCRYPTKEY,HCRYPTKEY,DWORD,DWORD,PBYTE,PDWORD); +BOOL WINAPI CryptImportKey(HCRYPTPROV,PBYTE,DWORD,HCRYPTKEY,DWORD,HCRYPTKEY*); +BOOL WINAPI CryptEncrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD,DWORD); +BOOL WINAPI CryptDecrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD); +BOOL WINAPI CryptCreateHash(HCRYPTPROV,ALG_ID,HCRYPTKEY,DWORD,HCRYPTHASH*); +BOOL WINAPI CryptHashData(HCRYPTHASH,PBYTE,DWORD,DWORD); +BOOL WINAPI CryptHashSessionKey(HCRYPTHASH,HCRYPTKEY,DWORD); +BOOL WINAPI CryptGetHashValue(HCRYPTHASH,DWORD,PBYTE,PDWORD); +BOOL WINAPI CryptDestroyHash(HCRYPTHASH); +BOOL WINAPI CryptSignHashA(HCRYPTHASH,DWORD,LPCSTR,DWORD,PBYTE,PDWORD); +BOOL WINAPI CryptSignHashW(HCRYPTHASH,DWORD,LPCWSTR,DWORD,PBYTE,PDWORD); +BOOL WINAPI CryptVerifySignatureA(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCSTR,DWORD); +BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCWSTR,DWORD); +BOOL WINAPI CryptSetProviderA(LPCSTR,DWORD); +BOOL WINAPI CryptSetProviderW(LPCWSTR,DWORD); + +#ifdef UNICODE +#define CertNameToStr CertNameToStrW +#define CryptAcquireContext CryptAcquireContextW +#define CryptSignHash CryptSignHashW +#define CryptVerifySignature CryptVerifySignatureW +#define CryptSetProvider CryptSetProviderW +#define CertOpenSystemStore CertOpenSystemStoreW +#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W +#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W +#define MS_DEF_PROV MS_DEF_PROV_W +#define MS_ENHANCED_PROV MS_ENHANCED_PROV_W +#define MS_STRONG_PROV MS_STRONG_PROV_W +#define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_W +#define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_W +#define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_W +#define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_W +#define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_W +#define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_W +#define MS_SCARD_PROV MS_SCARD_PROV_W +#else +#define CertNameToStr CertNameToStrA +#define CryptAcquireContext CryptAcquireContextA +#define CryptSignHash CryptSignHashA +#define CryptVerifySignature CryptVerifySignatureA +#define CryptSetProvider CryptSetProviderA +#define CertOpenSystemStore CertOpenSystemStoreA +#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_A +#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_A +#define MS_DEF_PROV MS_DEF_PROV_A +#define MS_ENHANCED_PROV MS_ENHANCED_PROV_A +#define MS_STRONG_PROV MS_STRONG_PROV_A +#define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_A +#define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_A +#define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_A +#define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_A +#define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_A +#define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_A +#define MS_SCARD_PROV MS_SCARD_PROV_A +#endif +#ifdef __cplusplus +} +#endif +#endif /* _WINCRYPT_H */ diff --git a/reactos/w32api/include/windef.h b/reactos/w32api/include/windef.h new file mode 100644 index 00000000000..ffc09debf9b --- /dev/null +++ b/reactos/w32api/include/windef.h @@ -0,0 +1,331 @@ +#ifndef _WINDEF_H +#define _WINDEF_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef WINVER +#define WINVER 0x0400 +/* + * If you need Win32 API features newer the Win95 and WinNT then you must + * define WINVER before including windows.h or any other method of including + * the windef.h header. + */ +#endif +#ifndef _WIN32_WINNT +#define _WIN32_WINNT WINVER +/* + * There may be the need to define _WIN32_WINNT to a value different from + * the value of WINVER. I don't have any example of why you would do that. + * However, if you must then define _WIN32_WINNT to the value required before + * including windows.h or any other method of including the windef.h header. + */ +#endif +#ifndef WIN32 +#define WIN32 +#endif +#ifndef _WIN32 +#define _WIN32 +#endif +#define FAR +#define far +#define NEAR +#define near +#ifndef CONST +#define CONST const +#endif +#undef MAX_PATH +#define MAX_PATH 260 + +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif +#endif +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif +#define IN +#define OUT +#ifndef OPTIONAL +#define OPTIONAL +#endif + +#ifdef __GNUC__ +#define PACKED __attribute__((packed)) +#ifndef _fastcall +#define _fastcall __attribute__((fastcall)) +#endif +#ifndef __fastcall +#define __fastcall __attribute__((fastcall)) +#endif +#ifndef _stdcall +#define _stdcall __attribute__((stdcall)) +#endif +#ifndef __stdcall +#define __stdcall __attribute__((stdcall)) +#endif +#ifndef _cdecl +#define _cdecl __attribute__((cdecl)) +#endif +#ifndef __cdecl +#define __cdecl __attribute__((cdecl)) +#endif +#ifndef __declspec +#define __declspec(e) __attribute__((e)) +#endif +#ifndef _declspec +#define _declspec(e) __attribute__((e)) +#endif +#elif defined(__WATCOMC__) +#define PACKED +#else +#define PACKED +#define _cdecl +#define __cdecl +#endif + +#undef pascal +#undef _pascal +#undef __pascal +#define pascal __stdcall +#define _pascal __stdcall +#define __pascal __stdcall +#define PASCAL _pascal +#define CDECL _cdecl +#define STDCALL __stdcall +#define FASTCALL __fastcall +#define WINAPI __stdcall +#define WINAPIV __cdecl +#define APIENTRY __stdcall +#define CALLBACK __stdcall +#define APIPRIVATE __stdcall + +#define DECLSPEC_IMPORT __declspec(dllimport) +#define DECLSPEC_EXPORT __declspec(dllexport) +#ifdef __GNUC__ +#define DECLSPEC_NORETURN __declspec(noreturn) +#define DECLARE_STDCALL_P( type ) __stdcall type +#elif defined(__WATCOMC__) +#define DECLSPEC_NORETURN +#define DECLARE_STDCALL_P( type ) type __stdcall +#endif /* __GNUC__/__WATCOMC__ */ +#define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8))) +#define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16))) +#define LOWORD(l) ((WORD)((DWORD)(l))) +#define HIWORD(l) ((WORD)(((DWORD)(l)>>16)&0xFFFF)) +#define LOBYTE(w) ((BYTE)(w)) +#define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF)) + +#ifndef __WATCOMC__ +#ifndef _export +#define _export +#endif +#ifndef __export +#define __export +#endif +#endif + +#ifndef NOMINMAX +#ifndef max +#define max(a,b) ((a)>(b)?(a):(b)) +#endif +#ifndef min +#define min(a,b) ((a)<(b)?(a):(b)) +#endif +#endif + +#define UNREFERENCED_PARAMETER(P) {(P)=(P);} +#define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);} +#define DBG_UNREFERENCED_PARAMETER(P) +#define DBG_UNREFERENCED_LOCAL_VARIABLE(L) + +#ifdef __GNUC__ +#ifndef NONAMELESSUNION +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +#define _ANONYMOUS_UNION __extension__ +#define _ANONYMOUS_STRUCT __extension__ +#else +#if defined(__cplusplus) +#define _ANONYMOUS_UNION __extension__ +#endif /* __cplusplus */ +#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */ +#endif /* NONAMELESSUNION */ +#elif defined(__WATCOMC__) +#define _ANONYMOUS_UNION +#define _ANONYMOUS_STRUCT +#endif /* __GNUC__/__WATCOMC__ */ + +#ifndef _ANONYMOUS_UNION +#define _ANONYMOUS_UNION +#define _UNION_NAME(x) x +#define DUMMYUNIONNAME u +#define DUMMYUNIONNAME2 u2 +#define DUMMYUNIONNAME3 u3 +#define DUMMYUNIONNAME4 u4 +#define DUMMYUNIONNAME5 u5 +#define DUMMYUNIONNAME6 u6 +#define DUMMYUNIONNAME7 u7 +#define DUMMYUNIONNAME8 u8 +#else +#define _UNION_NAME(x) +#define DUMMYUNIONNAME +#define DUMMYUNIONNAME2 +#define DUMMYUNIONNAME3 +#define DUMMYUNIONNAME4 +#define DUMMYUNIONNAME5 +#define DUMMYUNIONNAME6 +#define DUMMYUNIONNAME7 +#define DUMMYUNIONNAME8 +#endif +#ifndef _ANONYMOUS_STRUCT +#define _ANONYMOUS_STRUCT +#define _STRUCT_NAME(x) x +#define DUMMYSTRUCTNAME s +#define DUMMYSTRUCTNAME2 s2 +#define DUMMYSTRUCTNAME3 s3 +#else +#define _STRUCT_NAME(x) +#define DUMMYSTRUCTNAME +#define DUMMYSTRUCTNAME2 +#define DUMMYSTRUCTNAME3 +#endif + +#ifndef NO_STRICT +#ifndef STRICT +#define STRICT 1 +#endif +#endif + +/* FIXME: This will make some code compile. The programs will most + likely crash when an exception is raised, but at least they will + compile. */ +#if defined (__GNUC__) && defined (__SEH_NOOP) +#define __try +#define __except(x) if (0) /* don't execute handler */ +#define __finally + +#define _try __try +#define _except __except +#define _finally __finally +#endif + +typedef unsigned long DWORD; +typedef int WINBOOL,*PWINBOOL,*LPWINBOOL; +/* FIXME: Is there a good solution to this? */ +#ifndef XFree86Server +#ifndef __OBJC__ +typedef WINBOOL BOOL; +#else +#define BOOL WINBOOL +#endif +typedef unsigned char BYTE; +#endif /* ndef XFree86Server */ +typedef BOOL *PBOOL,*LPBOOL; +typedef unsigned short WORD; +typedef float FLOAT; +typedef FLOAT *PFLOAT; +typedef BYTE *PBYTE,*LPBYTE; +typedef int *PINT,*LPINT; +typedef WORD *PWORD,*LPWORD; +typedef long *LPLONG; +typedef DWORD *PDWORD,*LPDWORD; +typedef CONST void *PCVOID,*LPCVOID; +typedef int INT; +typedef unsigned int UINT,*PUINT,*LPUINT; + +#include + +typedef UINT_PTR WPARAM; +typedef LONG_PTR LPARAM; +typedef LONG_PTR LRESULT; +#ifndef _HRESULT_DEFINED +typedef LONG HRESULT; +#define _HRESULT_DEFINED +#endif +#ifndef XFree86Server +typedef WORD ATOM; +#endif /* XFree86Server */ +typedef HANDLE HGLOBAL; +typedef HANDLE HLOCAL; +typedef HANDLE GLOBALHANDLE; +typedef HANDLE LOCALHANDLE; +typedef void *HGDIOBJ; +DECLARE_HANDLE(HACCEL); +DECLARE_HANDLE(HBITMAP); +DECLARE_HANDLE(HBRUSH); +DECLARE_HANDLE(HCOLORSPACE); +DECLARE_HANDLE(HDC); +DECLARE_HANDLE(HGLRC); +DECLARE_HANDLE(HDESK); +DECLARE_HANDLE(HENHMETAFILE); +DECLARE_HANDLE(HFONT); +DECLARE_HANDLE(HICON); +DECLARE_HANDLE(HKEY); +/* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */ +/* #if (WINVER >= 0x0500) */ +DECLARE_HANDLE(HMONITOR); +#define HMONITOR_DECLARED 1 +DECLARE_HANDLE(HTERMINAL); +DECLARE_HANDLE(HWINEVENTHOOK); +/* #endif */ +typedef HKEY *PHKEY; +DECLARE_HANDLE(HMENU); +DECLARE_HANDLE(HMETAFILE); +DECLARE_HANDLE(HINSTANCE); +typedef HINSTANCE HMODULE; +DECLARE_HANDLE(HPALETTE); +DECLARE_HANDLE(HPEN); +DECLARE_HANDLE(HRGN); +DECLARE_HANDLE(HRSRC); +DECLARE_HANDLE(HSTR); +DECLARE_HANDLE(HTASK); +DECLARE_HANDLE(HWND); +DECLARE_HANDLE(HWINSTA); +DECLARE_HANDLE(HKL); +typedef int HFILE; +typedef HICON HCURSOR; +typedef DWORD COLORREF; +typedef int (WINAPI *FARPROC)(); +typedef int (WINAPI *NEARPROC)(); +typedef int (WINAPI *PROC)(); +typedef struct tagRECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECT,*PRECT,*LPRECT; +typedef const RECT *LPCRECT; +typedef struct tagRECTL { + LONG left; + LONG top; + LONG right; + LONG bottom; +} RECTL,*PRECTL,*LPRECTL; +typedef const RECTL *LPCRECTL; +typedef struct tagPOINT { + LONG x; + LONG y; +} POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL; +typedef struct tagSIZE { + LONG cx; + LONG cy; +} SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL; +typedef struct tagPOINTS { + SHORT x; + SHORT y; +} POINTS,*PPOINTS,*LPPOINTS; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/windns.h b/reactos/w32api/include/windns.h new file mode 100644 index 00000000000..3eb8f245b5b --- /dev/null +++ b/reactos/w32api/include/windns.h @@ -0,0 +1,363 @@ +#ifndef _WINDNS_H +#define _WINDNS_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define DNS_QUERY_STANDARD 0x0 +#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1 +#define DNS_QUERY_USE_TCP_ONLY 0x2 +#define DNS_QUERY_NO_RECURSION 0x4 +#define DNS_QUERY_BYPASS_CACHE 0x8 +#define DNS_QUERY_NO_WIRE_QUERY 0x10 +#define DNS_QUERY_NO_LOCAL_NAME 0x20 +#define DNS_QUERY_NO_HOSTS_FILE 0x40 +#define DNS_QUERY_NO_NETBT 0x80 +#define DNS_QUERY_TREAT_AS_FQDN 0x1000 +#define DNS_QUERY_WIRE_ONLY 0x100 +#define DNS_QUERY_RETURN_MESSAGE 0x200 +#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000 +#define DNS_QUERY_RESERVED 0xff000000 + +#define DNS_UPDATE_SECURITY_USE_DEFAULT 0x0 +#define DNS_UPDATE_SECURITY_OFF 0x10 +#define DNS_UPDATE_SECURITY_ON 0x20 +#define DNS_UPDATE_SECURITY_ONLY 0x100 +#define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200 +#define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400 +#define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800 +#define DNS_UPDATE_RESERVED 0xffff0000 + +#ifndef RC_INVOKE +typedef DWORD IP4_ADDRESS; +typedef DWORD DNS_STATUS; +enum { + DNS_TYPE_A=1, + DNS_TYPE_NS, + DNS_TYPE_MD, + DNS_TYPE_MF, + DNS_TYPE_CNAME, + DNS_TYPE_SOA, + DNS_TYPE_MB, + DNS_TYPE_MG, + DNS_TYPE_MR, + DNS_TYPE_NULL, + DNS_TYPE_WKS, + DNS_TYPE_PTR, + DNS_TYPE_HINFO, + DNS_TYPE_MINFO, + DNS_TYPE_MX, + DNS_TYPE_TEXT +}; +typedef enum _DNS_CHARSET +{ + DnsCharSetUnknown, + DnsCharSetUnicode, + DnsCharSetUtf8, + DnsCharSetAnsi +} DNS_CHARSET; +typedef enum +{ + DnsConfigPrimaryDomainName_W, + DnsConfigPrimaryDomainName_A, + DnsConfigPrimaryDomainName_UTF8, + DnsConfigAdapterDomainName_W, + DnsConfigAdapterDomainName_A, + DnsConfigAdapterDomainName_UTF8, + DnsConfigDnsServerList, + DnsConfigSearchList, + DnsConfigAdapterInfo, + DnsConfigPrimaryHostNameRegistrationEnabled, + DnsConfigAdapterHostNameRegistrationEnabled, + DnsConfigAddressRegistrationMaxCount, + DnsConfigHostName_W, + DnsConfigHostName_A, + DnsConfigHostName_UTF8, + DnsConfigFullHostName_W, + DnsConfigFullHostName_A, + DnsConfigFullHostName_UTF8 +} DNS_CONFIG_TYPE; +typedef enum +{ + DnsFreeFlat = 0, + DnsFreeRecordList, + DnsFreeParsedMessageFields +} DNS_FREE_TYPE; +typedef enum _DNS_NAME_FORMAT +{ + DnsNameDomain, + DnsNameDomainLabel, + DnsNameHostnameFull, + DnsNameHostnameLabel, + DnsNameWildcard, + DnsNameSrvRecord +} DNS_NAME_FORMAT; +typedef enum +{ + DnsSectionQuestion, + DnsSectionAnswer, + DnsSectionAuthority, + DnsSectionAdditional +} DNS_SECTION; +typedef struct _IP4_ARRAY { + DWORD AddrCount; + IP4_ADDRESS AddrArray[1]; +} IP4_ARRAY, *PIP4_ARRAY; +typedef struct { + DWORD IP6Dword[4]; +} IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS; +typedef struct _DNS_HEADER { + WORD Xid; + BYTE RecursionDesired; + BYTE Truncation; + BYTE Authoritative; + BYTE Opcode; + BYTE IsResponse; + BYTE ResponseCode; + BYTE Reserved; + BYTE RecursionAvailable; + WORD QuestionCount; + WORD AnswerCount; + WORD NameServerCount; + WORD AdditionalCount; +} DNS_HEADER, *PDNS_HEADER; +typedef struct _DNS_MESSAGE_BUFFER { + DNS_HEADER MessageHead; + CHAR MessageBody[1]; +} DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER; +typedef struct _DnsRecordFlags { + DWORD Section :2; + DWORD Delete :1; + DWORD CharSet :2; + DWORD Unused :3; + DWORD Reserved :24; +} DNS_RECORD_FLAGS; +typedef struct { + IP4_ADDRESS IpAddress; +} DNS_A_DATA, *PDNS_A_DATA; +typedef struct { + DNS_IP6_ADDRESS Ip6Address; +} DNS_AAAA_DATA, *PDNS_AAAA_DATA; +#define DNS_ATMA_MAX_ADDR_LENGTH 20 +typedef struct { + BYTE AddressType; + BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH]; +} DNS_ATMA_DATA, *PDNS_ATMA_DATA; +typedef struct { + WORD wFlags; + BYTE chProtocol; + BYTE chAlgorithm; + BYTE Key[1]; +} DNS_KEY_DATA, *PDNS_KEY_DATA; +typedef struct { + WORD wVersion; + WORD wSize; + WORD wHorPrec; + WORD wVerPrec; + DWORD dwLatitude; + DWORD dwLongitude; + DWORD dwAltitude; +} DNS_LOC_DATA, *PDNS_LOC_DATA; +typedef struct { + LPTSTR pNameMailbox; + LPTSTR pNameErrorsMailbox; +} DNS_MINFO_DATA, *PDNS_MINFO_DATA; +typedef struct { + LPTSTR pNameExchange; + WORD wPreference; + WORD Pad; +} DNS_MX_DATA, *PDNS_MX_DATA; +typedef struct { + DWORD dwByteCount; + BYTE Data[1]; +} DNS_NULL_DATA, *PDNS_NULL_DATA; +typedef struct { + LPTSTR pNameNext; + WORD wNumTypes; + WORD wTypes[1]; +} DNS_NXT_DATA, *PDNS_NXT_DATA; +typedef struct { + LPTSTR pNameHost; +} DNS_PTR_DATA, *PDNS_PTR_DATA; +typedef struct { + LPTSTR pNameSigner; + WORD wTypeCovered; + BYTE chAlgorithm; + BYTE chLabelCount; + DWORD dwOriginalTtl; + DWORD dwExpiration; + DWORD dwTimeSigned; + WORD wKeyTag; + WORD Pad; + BYTE Signature[1]; +} DNS_SIG_DATA, *PDNS_SIG_DATA; +typedef struct { + LPTSTR pNamePrimaryServer; + LPTSTR pNameAdministrator; + DWORD dwSerialNo; + DWORD dwRefresh; + DWORD dwRetry; + DWORD dwExpire; + DWORD dwDefaultTtl; +} DNS_SOA_DATA, *PDNS_SOA_DATA; +typedef struct { + LPTSTR pNameTarget; + WORD wPriority; + WORD wWeight; + WORD wPort; + WORD Pad; +} DNS_SRV_DATA, *PDNS_SRV_DATA; +typedef struct { + DWORD dwStringCount; + LPTSTR pStringArray[1]; +} DNS_TXT_DATA, *PDNS_TXT_DATA; +typedef struct { + LPTSTR pNameAlgorithm; + PBYTE pAlgorithmPacket; + PBYTE pKey; + PBYTE pOtherData; + DWORD dwCreateTime; + DWORD dwExpireTime; + WORD wMode; + WORD wError; + WORD wKeyLength; + WORD wOtherLength; + UCHAR cAlgNameLength; + BOOL bPacketPointers; +} DNS_TKEY_DATA, *PDNS_TKEY_DATA; +typedef struct { + LPTSTR pNameAlgorithm; + PBYTE pAlgorithmPacket; + PBYTE pSignature; + PBYTE pOtherData; + LONGLONG i64CreateTime; + WORD wFudgeTime; + WORD wOriginalXid; + WORD wError; + WORD wSigLength; + WORD wOtherLength; + UCHAR cAlgNameLength; + BOOL bPacketPointers; +} DNS_TSIG_DATA, *PDNS_TSIG_DATA; +typedef struct { + DWORD dwMappingFlag; + DWORD dwLookupTimeout; + DWORD dwCacheTimeout; + DWORD cWinsServerCount; + IP4_ADDRESS WinsServers[1]; +} DNS_WINS_DATA, *PDNS_WINS_DATA; +typedef struct { + DWORD dwMappingFlag; + DWORD dwLookupTimeout; + DWORD dwCacheTimeout; + LPTSTR pNameResultDomain; +} DNS_WINSR_DATA, *PDNS_WINSR_DATA; +typedef struct _DNS_WIRE_QUESTION { + WORD QuestionType; + WORD QuestionClass; +} DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION; +typedef struct _DNS_WIRE_RECORD { + WORD RecordType; + WORD RecordClass; + DWORD TimeToLive; + WORD DataLength; +} DNS_WIRE_RECORD, *PDNS_WIRE_RECORD; +typedef struct { + IP4_ADDRESS IpAddress; + UCHAR chProtocol; + BYTE BitMask[1]; +} DNS_WKS_DATA, *PDNS_WKS_DATA; +typedef struct _DnsRecord { + struct _DnsRecord* pNext; + LPTSTR pName; + WORD wType; + WORD wDataLength; + union { + DWORD DW; + DNS_RECORD_FLAGS S; + } Flags; + DWORD dwTtl; + DWORD dwReserved; + union { + DNS_A_DATA A; + DNS_SOA_DATA SOA, Soa; + DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb, + MD, Md, MF, Mf, MG, Mg, MR, Mr; + DNS_MINFO_DATA MINFO, Minfo, RP, Rp; + DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt; + DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25; + DNS_NULL_DATA Null; + DNS_WKS_DATA WKS, Wks; + DNS_AAAA_DATA AAAA; + DNS_KEY_DATA KEY, Key; + DNS_SIG_DATA SIG, Sig; + DNS_ATMA_DATA ATMA, Atma; + DNS_NXT_DATA NXT, Nxt; + DNS_SRV_DATA SRV, Srv; + DNS_TKEY_DATA TKEY, Tkey; + DNS_TSIG_DATA TSIG, Tsig; + DNS_WINS_DATA WINS, Wins; + DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat; + } Data; +} DNS_RECORD, *PDNS_RECORD; +typedef struct _DnsRRSet { + PDNS_RECORD pFirstRR; + PDNS_RECORD pLastRR; +} DNS_RRSET, *PDNS_RRSET; + +DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*); +DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*); +DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*); +DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*); +DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID); +DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID); +DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID); +BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR); +BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR); +DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*); +DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*); +DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*); +DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD); +BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD); +PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET); +void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE); +BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*); +PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET); +PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD); +void WINAPI DnsReleaseContextHandle(HANDLE); +DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID); +DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID); +DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID); +DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT); +DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT); +DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT); +BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL); +BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL); + +#ifdef UNICODE +#define DnsAcquireContextHandle DnsAcquireContextHandle_W +#define DnsModifyRecordsInSet DnsModifyRecordsInSet_W +#define DnsNameCompare DnsNameCompare_W +#define DnsQuery DnsQuery_W +#define DnsReplaceRecordSet DnsReplaceRecordSetW +#define DnsValidateName DnsValidateName_W +#else +#define DnsAcquireContextHandle DnsAcquireContextHandle_A +#define DnsModifyRecordsInSet DnsModifyRecordsInSet_A +#define DnsNameCompare DnsNameCompare_A +#define DnsQuery DnsQuery_A +#define DnsReplaceRecordSet DnsReplaceRecordSetA +#define DnsValidateName DnsValidateName_A +#endif + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif + +#endif /* _WINDNS_H */ diff --git a/reactos/w32api/include/windows.h b/reactos/w32api/include/windows.h new file mode 100644 index 00000000000..dde83a316a3 --- /dev/null +++ b/reactos/w32api/include/windows.h @@ -0,0 +1,128 @@ +/* + 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. + +*/ +#ifndef _WINDOWS_H +#define _WINDOWS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +/* translate GCC target defines to MS equivalents. Keep this synchronized + with winnt.h. */ +#if defined(__i686__) && !defined(_M_IX86) +#define _M_IX86 600 +#elif defined(__i586__) && !defined(_M_IX86) +#define _M_IX86 500 +#elif defined(__i486__) && !defined(_M_IX86) +#define _M_IX86 400 +#elif defined(__i386__) && !defined(_M_IX86) +#define _M_IX86 300 +#endif +#if defined(_M_IX86) && !defined(_X86_) +#define _X86_ +#elif defined(_M_ALPHA) && !defined(_ALPHA_) +#define _ALPHA_ +#elif defined(_M_PPC) && !defined(_PPC_) +#define _PPC_ +#elif defined(_M_MRX000) && !defined(_MIPS_) +#define _MIPS_ +#elif defined(_M_M68K) && !defined(_68K_) +#define _68K_ +#endif + +#ifdef RC_INVOKED +/* winresrc.h includes the necessary headers */ +#include +#else + +#include +#include +#include +#include +#if !(defined NOGDI || defined _WINGDI_H) +#include +#endif +#ifndef _WINUSER_H +#include +#endif +#ifndef _WINNLS_H +#include +#endif +#ifndef _WINVER_H +#include +#endif +#ifndef _WINNETWK_H +#include +#endif +#ifndef _WINREG_H +#include +#endif +#ifndef _WINSVC_H +#include +#endif + +#ifndef WIN32_LEAN_AND_MEAN +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef NOGDI +#include +#include +#endif +#if defined(Win32_Winsock) +#warning "The Win32_Winsock macro name is deprecated.\ + Please use __USE_W32_SOCKETS instead" +#ifndef __USE_W32_SOCKETS +#define __USE_W32_SOCKETS +#endif +#endif +#if defined(__USE_W32_SOCKETS) || !(defined(__CYGWIN__) || defined(__MSYS__) || defined(_UWIN)) +#if (_WIN32_WINNT >= 0x0400) +#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 >= 0x0400) */ +#endif +#ifndef NOGDI +#if !defined (__OBJC__) +#if (__GNUC__ >= 3) || defined (__WATCOMC__) +#include +#endif +#endif /* __OBJC__ */ +#endif + +#endif /* WIN32_LEAN_AND_MEAN */ + +#endif /* RC_INVOKED */ + +#ifdef __OBJC__ +/* FIXME: Not undefining BOOL here causes all BOOLs to be WINBOOL (int), + but undefining it causes trouble as well if a file is included after + windows.h +*/ +#undef BOOL +#endif + +#endif diff --git a/reactos/w32api/include/windowsx.h b/reactos/w32api/include/windowsx.h new file mode 100644 index 00000000000..460718e6409 --- /dev/null +++ b/reactos/w32api/include/windowsx.h @@ -0,0 +1,544 @@ +#ifndef _WINDOWSX_H +#define _WINDOWSX_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define WM_CTLCOLOR 25 +#define Button_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable)) +#define Button_GetCheck(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),BM_GETCHECK,0,0)) +#define Button_GetState(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),BM_GETSTATE,0,0)) +#define Button_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax)) +#define Button_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl) +#define Button_SetCheck(hwndCtl,check) ((void)SendMessage((hwndCtl),BM_SETCHECK,(WPARAM)(int)(check),0)) +#define Button_SetState(hwndCtl,state) ((UINT)(DWORD)SendMessage((hwndCtl),BM_SETSTATE,(WPARAM)(int)(state),0)) +#define Button_SetStyle(hwndCtl,style,fRedraw) ((void)SendMessage((hwndCtl),BM_SETSTYLE,(WPARAM)LOWORD(style),MAKELPARAM(((fRedraw) ? TRUE : FALSE),0))) +#define Button_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz)) +#define CheckDefDlgRecursion(pfRecursion) if (*(pfRecursion)) {*(pfRecursion) = FALSE; return FALSE; } +#define ComboBox_AddItemData(hwndCtl,data) ((int)(DWORD)SendMessage((hwndCtl),CB_ADDSTRING,0,(LPARAM)(data))) +#define ComboBox_AddString(hwndCtl,lpsz) ((int)(DWORD)SendMessage((hwndCtl),CB_ADDSTRING,0,(LPARAM)(LPCTSTR)(lpsz))) +#define ComboBox_DeleteString(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),CB_DELETESTRING,(WPARAM)(int)(index),0)) +#define ComboBox_Dir(hwndCtl,attrs,lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl),CB_DIR,(WPARAM)(UINT)(attrs),(LPARAM)(LPCTSTR)(lpszFileSpec))) +#define ComboBox_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable)) +#define ComboBox_FindItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),CB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data))) +#define ComboBox_FindString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),CB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind))) +#define ComboBox_FindStringExact(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),CB_FINDSTRINGEXACT,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind))) +#define ComboBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_GETCOUNT,0,0)) +#define ComboBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_GETCURSEL,0,0)) +#define ComboBox_GetDroppedControlRect(hwndCtl,lprc) ((void)SendMessage((hwndCtl),CB_GETDROPPEDCONTROLRECT,0,(LPARAM)(RECT*)(lprc))) +#define ComboBox_GetDroppedState(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),CB_GETDROPPEDSTATE,0,0)) +#define ComboBox_GetEditSel(hwndCtl) ((DWORD)SendMessage((hwndCtl),CB_GETEDITSEL,0,0)) +#define ComboBox_GetExtendedUI(hwndCtl) ((UINT)(DWORD)SendMessage((hwndCtl),CB_GETEXTENDEDUI,0,0)) +#define ComboBox_GetItemData(hwndCtl,index) ((LRESULT)(DWORD)SendMessage((hwndCtl),CB_GETITEMDATA,(WPARAM)(int)(index),0)) +#define ComboBox_GetItemHeight(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_GETITEMHEIGHT,0,0)) +#define ComboBox_GetLBText(hwndCtl,index,lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl),CB_GETLBTEXT,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpszBuffer))) +#define ComboBox_GetLBTextLen(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),CB_GETLBTEXTLEN,(WPARAM)(int)(index),0)) +#define ComboBox_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax)) +#define ComboBox_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl) +#define ComboBox_InsertItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),CB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(data))) +#define ComboBox_InsertString(hwndCtl,index,lpsz) ((int)(DWORD)SendMessage((hwndCtl),CB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpsz))) +#define ComboBox_LimitText(hwndCtl,cchLimit) ((int)(DWORD)SendMessage((hwndCtl),CB_LIMITTEXT,(WPARAM)(int)(cchLimit),0)) +#define ComboBox_ResetContent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_RESETCONTENT,0,0)) +#define ComboBox_SelectItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),CB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data))) +#define ComboBox_SelectString(hwndCtl,indexStart,lpszSelect) ((int)(DWORD)SendMessage((hwndCtl),CB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszSelect))) +#define ComboBox_SetCurSel(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),CB_SETCURSEL,(WPARAM)(int)(index),0)) +#define ComboBox_SetEditSel(hwndCtl,ichStart,ichEnd) ((int)(DWORD)SendMessage((hwndCtl),CB_SETEDITSEL,0,MAKELPARAM((ichStart),(ichEnd)))) +#define ComboBox_SetExtendedUI(hwndCtl,flags) ((int)(DWORD)SendMessage((hwndCtl),CB_SETEXTENDEDUI,(WPARAM)(UINT)(flags),0)) +#define ComboBox_SetItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),CB_SETITEMDATA,(WPARAM)(int)(index),(LPARAM)(data))) +#define ComboBox_SetItemHeight(hwndCtl,index,cyItem) ((int)(DWORD)SendMessage((hwndCtl),CB_SETITEMHEIGHT,(WPARAM)(int)(index),(LPARAM)(int)cyItem)) +#define ComboBox_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz)) +#define ComboBox_ShowDropdown(hwndCtl,fShow) ((BOOL)(DWORD)SendMessage((hwndCtl),CB_SHOWDROPDOWN,(WPARAM)(BOOL)(fShow),0)) +#define CopyRgn(hrgnDst,hrgnSrc) CombineRgn(hrgnDst,hrgnSrc,0,RGN_COPY) +#define DECLARE_HANDLE32 DECLARE_HANDLE +#define DefDlgProcEx(hwnd,msg,wParam,lParam,pfRecursion) (*(pfRecursion) = TRUE,DefDlgProc(hwnd,msg,wParam,lParam)) +#define DeleteBitmap(hbm) DeleteObject((HGDIOBJ)(HBITMAP)(hbm)) +#define DeleteBrush(hbr) DeleteObject((HGDIOBJ)(HBRUSH)(hbr)) +#define DeleteFont(hfont) DeleteObject((HGDIOBJ)(HFONT)(hfont)) +#define DeletePalette(hpal) DeleteObject((HGDIOBJ)(HPALETTE)(hpal)) +#define DeletePen(hpen) DeleteObject((HGDIOBJ)(HPEN)(hpen)) +#define DeleteRgn(hrgn) DeleteObject((HGDIOBJ)(HRGN)(hrgn)) +#define Edit_CanUndo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_CANUNDO,0,0)) +#define Edit_EmptyUndoBuffer(hwndCtl) ((void)SendMessage((hwndCtl),EM_EMPTYUNDOBUFFER,0,0)) +#define Edit_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable)) +#define Edit_FmtLines(hwndCtl,fAddEOL) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_FMTLINES,(WPARAM)(BOOL)(fAddEOL),0)) +#define Edit_GetFirstVisibleLine(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),EM_GETFIRSTVISIBLELINE,0,0)) +#define Edit_GetHandle(hwndCtl) ((HLOCAL)(UINT)(DWORD)SendMessage((hwndCtl),EM_GETHANDLE,0,0)) +#define Edit_GetLine(hwndCtl,line,lpch,cchMax) ((*((int*)(lpch)) = (cchMax)),((int)(DWORD)SendMessage((hwndCtl),EM_GETLINE,(WPARAM)(int)(line),(LPARAM)(LPTSTR)(lpch)))) +#define Edit_GetLineCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),EM_GETLINECOUNT,0,0)) +#define Edit_GetModify(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_GETMODIFY,0,0)) +#define Edit_GetPasswordChar(hwndCtl) ((TCHAR)(DWORD)SendMessage((hwndCtl),EM_GETPASSWORDCHAR,0,0)) +#define Edit_GetRect(hwndCtl,lprc) ((void)SendMessage((hwndCtl),EM_GETRECT,0,(LPARAM)(RECT*)(lprc))) +#define Edit_GetSel(hwndCtl) ((DWORD)SendMessage((hwndCtl),EM_GETSEL,0,0)) +#define Edit_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax)) +#define Edit_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl) +#define Edit_GetWordBreakProc(hwndCtl) ((EDITWORDBREAKPROC)SendMessage((hwndCtl),EM_GETWORDBREAKPROC,0,0)) +#define Edit_LimitText(hwndCtl,cchMax) ((void)SendMessage((hwndCtl),EM_LIMITTEXT,(WPARAM)(cchMax),0)) +#define Edit_LineFromChar(hwndCtl,ich) ((int)(DWORD)SendMessage((hwndCtl),EM_LINEFROMCHAR,(WPARAM)(int)(ich),0)) +#define Edit_LineIndex(hwndCtl,line) ((int)(DWORD)SendMessage((hwndCtl),EM_LINEINDEX,(WPARAM)(int)(line),0)) +#define Edit_LineLength(hwndCtl,line) ((int)(DWORD)SendMessage((hwndCtl),EM_LINELENGTH,(WPARAM)(int)(line),0)) +#define Edit_ReplaceSel(hwndCtl,lpszReplace) ((void)SendMessage((hwndCtl),EM_REPLACESEL,0,(LPARAM)(LPCTSTR)(lpszReplace))) +#define Edit_Scroll(hwndCtl,dv,dh) ((void)SendMessage((hwndCtl),EM_LINESCROLL,(WPARAM)(dh),(LPARAM)(dv))) +#define Edit_ScrollCaret(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_SCROLLCARET,0,0)) +#define Edit_SetHandle(hwndCtl,h) ((void)SendMessage((hwndCtl),EM_SETHANDLE,(WPARAM)(UINT)(HLOCAL)(h),0)) +#define Edit_SetModify(hwndCtl,fModified) ((void)SendMessage((hwndCtl),EM_SETMODIFY,(WPARAM)(UINT)(fModified),0)) +#define Edit_SetPasswordChar(hwndCtl,ch) ((void)SendMessage((hwndCtl),EM_SETPASSWORDCHAR,(WPARAM)(UINT)(ch),0)) +#define Edit_SetReadOnly(hwndCtl,fReadOnly) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_SETREADONLY,(WPARAM)(BOOL)(fReadOnly),0)) +#define Edit_SetRect(hwndCtl,lprc) ((void)SendMessage((hwndCtl),EM_SETRECT,0,(LPARAM)(const RECT*)(lprc))) +#define Edit_SetRectNoPaint(hwndCtl,lprc) ((void)SendMessage((hwndCtl),EM_SETRECTNP,0,(LPARAM)(const RECT*)(lprc))) +#define Edit_SetSel(hwndCtl,ichStart,ichEnd) ((void)SendMessage((hwndCtl),EM_SETSEL,(ichStart),(ichEnd))) +#define Edit_SetTabStops(hwndCtl,cTabs,lpTabs) ((void)SendMessage((hwndCtl),EM_SETTABSTOPS,(WPARAM)(int)(cTabs),(LPARAM)(const int*)(lpTabs))) +#define Edit_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz)) +#define Edit_SetWordBreakProc(hwndCtl,lpfnWordBreak) ((void)SendMessage((hwndCtl),EM_SETWORDBREAKPROC,0,(LPARAM)(EDITWORDBREAKPROC)(lpfnWordBreak))) +#define Edit_Undo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_UNDO,0,0)) +#define FORWARD_WM_ACTIVATE(hwnd,state,hwndActDeact,fMinimized,fn) (void)(fn)((hwnd),WM_ACTIVATE,MAKEWPARAM((state),(fMinimized)),(LPARAM)(HWND)(hwndActDeact)) +#define FORWARD_WM_ACTIVATEAPP(hwnd,fActivate,dwThreadId,fn) (void)(fn)((hwnd),WM_ACTIVATEAPP,(WPARAM)(BOOL)(fActivate),(LPARAM)(dwThreadId)) +#define FORWARD_WM_ASKCBFORMATNAME(hwnd,cchMax,rgchName,fn) (void)(fn)((hwnd),WM_ASKCBFORMATNAME,(WPARAM)(int)(cchMax),(LPARAM)(rgchName)) +#define FORWARD_WM_CANCELMODE(hwnd,fn) (void)(fn)((hwnd),WM_CANCELMODE,0,0) +#define FORWARD_WM_CHANGECBCHAIN(hwnd,hwndRemove,hwndNext,fn) (void)(fn)((hwnd),WM_CHANGECBCHAIN,(WPARAM)(HWND)(hwndRemove),(LPARAM)(HWND)(hwndNext)) +#define FORWARD_WM_CHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_CHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0)) +#define FORWARD_WM_CHARTOITEM(hwnd,ch,hwndListBox,iCaret,fn) (int)(DWORD)(fn)((hwnd),WM_CHARTOITEM,MAKEWPARAM((UINT)(iCaret),(UINT)(ch)),(LPARAM)(hwndListBox)) +#define FORWARD_WM_CHILDACTIVATE(hwnd,fn) (void)(fn)((hwnd),WM_CHILDACTIVATE,0,0) +#define FORWARD_WM_CLEAR(hwnd,fn) (void)(fn)((hwnd),WM_CLEAR,0,0) +#define FORWARD_WM_CLOSE(hwnd,fn) (void)(fn)((hwnd),WM_CLOSE,0,0) +#define FORWARD_WM_COMMAND(hwnd,id,hwndCtl,codeNotify,fn) (void)(fn)((hwnd),WM_COMMAND,MAKEWPARAM((UINT)(id),(UINT)(codeNotify)),(LPARAM)(HWND)(hwndCtl)) +#define FORWARD_WM_COMMNOTIFY(hwnd,cid,flags,fn) (void)(fn)((hwnd),WM_COMMNOTIFY,(WPARAM)(cid),MAKELPARAM((flags),0)) +#define FORWARD_WM_COMPACTING(hwnd,compactRatio,fn) (void)(fn)((hwnd),WM_COMPACTING,(WPARAM)(UINT)(compactRatio),0) +#define FORWARD_WM_COMPAREITEM(hwnd,lpCompareItem,fn) (int)(DWORD)(fn)((hwnd),WM_COMPAREITEM,(WPARAM)(((const COMPAREITEMSTRUCT*)(lpCompareItem))->CtlID),(LPARAM)(const COMPAREITEMSTRUCT*)(lpCompareItem)) +#define FORWARD_WM_COPY(hwnd,fn) (void)(fn)((hwnd),WM_COPY,0,0) +#define FORWARD_WM_CREATE(hwnd,lpCreateStruct,fn) (BOOL)(DWORD)(fn)((hwnd),WM_CREATE,0,(LPARAM)(LPCREATESTRUCT)(lpCreateStruct)) +#define FORWARD_WM_CTLCOLORBTN(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORBTN,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild)) +#define FORWARD_WM_CTLCOLORDLG(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORDLG,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild)) +#define FORWARD_WM_CTLCOLOREDIT(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLOREDIT,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild)) +#define FORWARD_WM_CTLCOLORLISTBOX(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORLISTBOX,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild)) +#define FORWARD_WM_CTLCOLORMSGBOX(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORMSGBOX,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild)) +#define FORWARD_WM_CTLCOLORSCROLLBAR(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORSCROLLBAR,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild)) +#define FORWARD_WM_CTLCOLORSTATIC(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORSTATIC,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild)) +#define FORWARD_WM_CUT(hwnd,fn) (void)(fn)((hwnd),WM_CUT,0,0) +#define FORWARD_WM_DEADCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_DEADCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0)) +#define FORWARD_WM_DELETEITEM(hwnd,lpDeleteItem,fn) (void)(fn)((hwnd),WM_DELETEITEM,(WPARAM)(((const DELETEITEMSTRUCT*)(lpDeleteItem))->CtlID),(LPARAM)(const DELETEITEMSTRUCT*)(lpDeleteItem)) +#define FORWARD_WM_DESTROY(hwnd,fn) (void)(fn)((hwnd),WM_DESTROY,0,0) +#define FORWARD_WM_DESTROYCLIPBOARD(hwnd,fn) (void)(fn)((hwnd),WM_DESTROYCLIPBOARD,0,0) +#define FORWARD_WM_DEVMODECHANGE(hwnd,lpszDeviceName,fn) (void)(fn)((hwnd),WM_DEVMODECHANGE,0,(LPARAM)(LPCTSTR)(lpszDeviceName)) +#define FORWARD_WM_DRAWCLIPBOARD(hwnd,fn) (void)(fn)((hwnd),WM_DRAWCLIPBOARD,0,0) +#define FORWARD_WM_DRAWITEM(hwnd,lpDrawItem,fn) (void)(fn)((hwnd),WM_DRAWITEM,(WPARAM)(((const DRAWITEMSTRUCT*)lpDrawItem)->CtlID),(LPARAM)(const DRAWITEMSTRUCT*)(lpDrawItem)) +#define FORWARD_WM_DROPFILES(hwnd,hdrop,fn) (void)(fn)((hwnd),WM_DROPFILES,(WPARAM)(HDROP)(hdrop),0) +#define FORWARD_WM_ENABLE(hwnd,fEnable,fn) (void)(fn)((hwnd),WM_ENABLE,(WPARAM)(BOOL)(fEnable),0) +#define FORWARD_WM_ENDSESSION(hwnd,fEnding,fn) (void)(fn)((hwnd),WM_ENDSESSION,(WPARAM)(BOOL)(fEnding),0) +#define FORWARD_WM_ENTERIDLE(hwnd,source,hwndSource,fn) (void)(fn)((hwnd),WM_ENTERIDLE,(WPARAM)(UINT)(source),(LPARAM)(HWND)(hwndSource)) +#define FORWARD_WM_ERASEBKGND(hwnd,hdc,fn) (BOOL)(DWORD)(fn)((hwnd),WM_ERASEBKGND,(WPARAM)(HDC)(hdc),0) +#define FORWARD_WM_FONTCHANGE(hwnd,fn) (void)(fn)((hwnd),WM_FONTCHANGE,0,0) +#define FORWARD_WM_GETDLGCODE(hwnd,lpmsg,fn) (UINT)(DWORD)(fn)((hwnd),WM_GETDLGCODE,(lpmsg ? lpmsg->wParam : 0),(LPARAM)(LPMSG)(lpmsg)) +#define FORWARD_WM_GETFONT(hwnd,fn) (HFONT)(UINT)(DWORD)(fn)((hwnd),WM_GETFONT,0,0) +#define FORWARD_WM_GETMINMAXINFO(hwnd,lpMinMaxInfo,fn) (void)(fn)((hwnd),WM_GETMINMAXINFO,0,(LPARAM)(LPMINMAXINFO)(lpMinMaxInfo)) +#define FORWARD_WM_GETTEXT(hwnd,cchTextMax,lpszText,fn) (int)(DWORD)(fn)((hwnd),WM_GETTEXT,(WPARAM)(int)(cchTextMax),(LPARAM)(LPTSTR)(lpszText)) +#define FORWARD_WM_GETTEXTLENGTH(hwnd,fn) (int)(DWORD)(fn)((hwnd),WM_GETTEXTLENGTH,0,0) +#define FORWARD_WM_HSCROLL(hwnd,hwndCtl,code,pos,fn) (void)(fn)((hwnd),WM_HSCROLL,MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)),(LPARAM)(UINT)(hwndCtl)) +#define FORWARD_WM_HSCROLLCLIPBOARD(hwnd,hwndCBViewer,code,pos,fn) (void)(fn)((hwnd),WM_HSCROLLCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),MAKELPARAM((code),(pos))) +#define FORWARD_WM_ICONERASEBKGND(hwnd,hdc,fn) (BOOL)(DWORD)(fn)((hwnd),WM_ICONERASEBKGND,(WPARAM)(HDC)(hdc),0) +#define FORWARD_WM_INITDIALOG(hwnd,hwndFocus,lParam,fn) (BOOL)(DWORD)(fn)((hwnd),WM_INITDIALOG,(WPARAM)(HWND)(hwndFocus),(lParam)) +#define FORWARD_WM_INITMENU(hwnd,hMenu,fn) (void)(fn)((hwnd),WM_INITMENU,(WPARAM)(HMENU)(hMenu),0) +#define FORWARD_WM_INITMENUPOPUP(hwnd,hMenu,item,fSystemMenu,fn) (void)(fn)((hwnd),WM_INITMENUPOPUP,(WPARAM)(HMENU)(hMenu),MAKELPARAM((item),(fSystemMenu))) +#define FORWARD_WM_KEYDOWN(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_KEYDOWN,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags))) +#define FORWARD_WM_KEYUP(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_KEYUP,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags))) +#define FORWARD_WM_KILLFOCUS(hwnd,hwndNewFocus,fn) (void)(fn)((hwnd),WM_KILLFOCUS,(WPARAM)(HWND)(hwndNewFocus),0) +#define FORWARD_WM_LBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_LBUTTONDBLCLK : WM_LBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y))) +#define FORWARD_WM_LBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_LBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y))) +#define FORWARD_WM_MBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_MBUTTONDBLCLK : WM_MBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y))) +#define FORWARD_WM_MBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_MBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y))) +#define FORWARD_WM_MDIACTIVATE(hwnd,fActive,hwndActivate,hwndDeactivate,fn) (void)(fn)(hwnd,WM_MDIACTIVATE,(WPARAM)(hwndDeactivate),(LPARAM)(hwndActivate)) +#define FORWARD_WM_MDICASCADE(hwnd,cmd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_MDICASCADE,(WPARAM)(cmd),0) +#define FORWARD_WM_MDICREATE(hwnd,lpmcs,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDICREATE,0,(LPARAM)(LPMDICREATESTRUCT)(lpmcs)) +#define FORWARD_WM_MDIDESTROY(hwnd,hwndDestroy,fn) (void)(fn)((hwnd),WM_MDIDESTROY,(WPARAM)(hwndDestroy),0) +#define FORWARD_WM_MDIGETACTIVE(hwnd,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDIGETACTIVE,0,0) +#define FORWARD_WM_MDIICONARRANGE(hwnd,fn) (void)(fn)((hwnd),WM_MDIICONARRANGE,0,0) +#define FORWARD_WM_MDIMAXIMIZE(hwnd,hwndMaximize,fn) (void)(fn)((hwnd),WM_MDIMAXIMIZE,(WPARAM)(hwndMaximize),0) +#define FORWARD_WM_MDINEXT(hwnd,hwndCur,fPrev,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDINEXT,(WPARAM)(hwndCur),(LPARAM)(fPrev)) +#define FORWARD_WM_MDIRESTORE(hwnd,hwndRestore,fn) (void)(fn)((hwnd),WM_MDIRESTORE,(WPARAM)(hwndRestore),0) +#define FORWARD_WM_MDISETMENU(hwnd,fRefresh,hmenuFrame,hmenuWindow,fn) (HMENU)(UINT)(DWORD)(fn)((hwnd),WM_MDISETMENU,(WPARAM)((fRefresh) ? (hmenuFrame) : 0),(LPARAM)(hmenuWindow)) +#define FORWARD_WM_MDITILE(hwnd,cmd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_MDITILE,(WPARAM)(cmd),0) +#define FORWARD_WM_MEASUREITEM(hwnd,lpMeasureItem,fn) (void)(fn)((hwnd),WM_MEASUREITEM,(WPARAM)(((MEASUREITEMSTRUCT*)lpMeasureItem)->CtlID),(LPARAM)(MEASUREITEMSTRUCT*)(lpMeasureItem)) +#define FORWARD_WM_MENUCHAR(hwnd,ch,flags,hmenu,fn) (DWORD)(fn)((hwnd),WM_MENUCHAR,MAKEWPARAM(flags,(WORD)(ch)),(LPARAM)(HMENU)(hmenu)) +#define FORWARD_WM_MENUSELECT(hwnd,hmenu,item,hmenuPopup,flags,fn) (void)(fn)((hwnd),WM_MENUSELECT,MAKEWPARAM((item),(flags)),(LPARAM)(HMENU)((hmenu) ? (hmenu) : (hmenuPopup))) +#define FORWARD_WM_MOUSEACTIVATE(hwnd,hwndTopLevel,codeHitTest,msg,fn) (int)(DWORD)(fn)((hwnd),WM_MOUSEACTIVATE,(WPARAM)(HWND)(hwndTopLevel),MAKELPARAM((codeHitTest),(msg))) +#define FORWARD_WM_MOUSEMOVE(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_MOUSEMOVE,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y))) +#define FORWARD_WM_MOVE(hwnd,x,y,fn) (void)(fn)((hwnd),WM_MOVE,0,MAKELPARAM((x),(y))) +#define FORWARD_WM_NCACTIVATE(hwnd,fActive,hwndActDeact,fMinimized,fn) (BOOL)(DWORD)(fn)((hwnd),WM_NCACTIVATE,(WPARAM)(BOOL)(fActive),0) +#define FORWARD_WM_NCCALCSIZE(hwnd,fCalcValidRects,lpcsp,fn) (UINT)(DWORD)(fn)((hwnd),WM_NCCALCSIZE,0,(LPARAM)(NCCALCSIZE_PARAMS*)(lpcsp)) +#define FORWARD_WM_NCCREATE(hwnd,lpCreateStruct,fn) (BOOL)(DWORD)(fn)((hwnd),WM_NCCREATE,0,(LPARAM)(LPCREATESTRUCT)(lpCreateStruct)) +#define FORWARD_WM_NCDESTROY(hwnd,fn) (void)(fn)((hwnd),WM_NCDESTROY,0,0) +#define FORWARD_WM_NCHITTEST(hwnd,x,y,fn) (UINT)(DWORD)(fn)((hwnd),WM_NCHITTEST,0,MAKELPARAM((x),(y))) +#define FORWARD_WM_NCLBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCLBUTTONDBLCLK : WM_NCLBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y))) +#define FORWARD_WM_NCLBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCLBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y))) +#define FORWARD_WM_NCMBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCMBUTTONDBLCLK : WM_NCMBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) ) +#define FORWARD_WM_NCMBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCMBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) ) +#define FORWARD_WM_NCMOUSEMOVE(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCMOUSEMOVE,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y))) +#define FORWARD_WM_NCPAINT(hwnd,hrgn,fn) (void)(fn)((hwnd),WM_NCPAINT,(WPARAM)(HRGN)(hrgn),0) +#define FORWARD_WM_NCRBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCRBUTTONDBLCLK : WM_NCRBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) ) +#define FORWARD_WM_NCRBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCRBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) ) +#define FORWARD_WM_NEXTDLGCTL(hwnd,hwndSetFocus,fNext,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_NEXTDLGCTL,(WPARAM)(HWND)(hwndSetFocus),(LPARAM)(fNext)) +#define FORWARD_WM_PAINT(hwnd,fn) (void)(fn)((hwnd),WM_PAINT,0,0) +#define FORWARD_WM_PAINTCLIPBOARD(hwnd,hwndCBViewer,lpPaintStruct,fn) (void)(fn)((hwnd),WM_PAINTCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),(LPARAM)(LPPAINTSTRUCT)(lpPaintStruct)) +#define FORWARD_WM_PALETTECHANGED(hwnd,hwndPaletteChange,fn) (void)(fn)((hwnd),WM_PALETTECHANGED,(WPARAM)(HWND)(hwndPaletteChange),0) +#define FORWARD_WM_PALETTEISCHANGING(hwnd,hwndPaletteChange,fn) (void)(fn)((hwnd),WM_PALETTEISCHANGING,(WPARAM)(HWND)(hwndPaletteChange),0) +#define FORWARD_WM_PARENTNOTIFY(hwnd,msg,hwndChild,idChild,fn) (void)(fn)((hwnd),WM_PARENTNOTIFY,MAKEWPARAM(msg,idChild),(LPARAM)(hwndChild)) +#define FORWARD_WM_PASTE(hwnd,fn) (void)(fn)((hwnd),WM_PASTE,0,0) +#define FORWARD_WM_POWER(hwnd,code,fn) (void)(fn)((hwnd),WM_POWER,(WPARAM)(int)(code),0) +#define FORWARD_WM_QUERYDRAGICON(hwnd,fn) (HICON)(UINT)(DWORD)(fn)((hwnd),WM_QUERYDRAGICON,0,0) +#define FORWARD_WM_QUERYENDSESSION(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYENDSESSION,0,0) +#define FORWARD_WM_QUERYNEWPALETTE(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYNEWPALETTE,0,0) +#define FORWARD_WM_QUERYOPEN(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYOPEN,0,0) +#define FORWARD_WM_QUEUESYNC(hwnd,fn) (void)(fn)((hwnd),WM_QUEUESYNC,0,0) +#define FORWARD_WM_QUIT(hwnd,exitCode,fn) (void)(fn)((hwnd),WM_QUIT,(WPARAM)(exitCode),0) +#define FORWARD_WM_RBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_RBUTTONDBLCLK : WM_RBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y))) +#define FORWARD_WM_RBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_RBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y))) +#define FORWARD_WM_RENDERALLFORMATS(hwnd,fn) (void)(fn)((hwnd),WM_RENDERALLFORMATS,0,0) +#define FORWARD_WM_RENDERFORMAT(hwnd,fmt,fn) (HANDLE)(UINT)(DWORD)(fn)((hwnd),WM_RENDERFORMAT,(WPARAM)(UINT)(fmt),0) +#define FORWARD_WM_SETCURSOR(hwnd,hwndCursor,codeHitTest,msg,fn) (BOOL)(DWORD)(fn)((hwnd),WM_SETCURSOR,(WPARAM)(HWND)(hwndCursor),MAKELPARAM((codeHitTest),(msg))) +#define FORWARD_WM_SETFOCUS(hwnd,hwndOldFocus,fn) (void)(fn)((hwnd),WM_SETFOCUS,(WPARAM)(HWND)(hwndOldFocus),0) +#define FORWARD_WM_SETFONT(hwnd,hfont,fRedraw,fn) (void)(fn)((hwnd),WM_SETFONT,(WPARAM)(HFONT)(hfont),(LPARAM)(BOOL)(fRedraw)) +#define FORWARD_WM_SETREDRAW(hwnd,fRedraw,fn) (void)(fn)((hwnd),WM_SETREDRAW,(WPARAM)(BOOL)(fRedraw),0) +#define FORWARD_WM_SETTEXT(hwnd,lpszText,fn) (void)(fn)((hwnd),WM_SETTEXT,0,(LPARAM)(LPCTSTR)(lpszText)) +#define FORWARD_WM_SHOWWINDOW(hwnd,fShow,status,fn) (void)(fn)((hwnd),WM_SHOWWINDOW,(WPARAM)(BOOL)(fShow),(LPARAM)(UINT)(status)) +#define FORWARD_WM_SIZE(hwnd,state,cx,cy,fn) (void)(fn)((hwnd),WM_SIZE,(WPARAM)(UINT)(state),MAKELPARAM((cx),(cy))) +#define FORWARD_WM_SIZECLIPBOARD(hwnd,hwndCBViewer,lprc,fn) (void)(fn)((hwnd),WM_SIZECLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),(LPARAM)(LPRECT)(lprc)) +#define FORWARD_WM_SPOOLERSTATUS(hwnd,status,cJobInQueue,fn) (void)(fn)((hwnd),WM_SPOOLERSTATUS,(WPARAM)(status),MAKELPARAM((cJobInQueue),0)) +#define FORWARD_WM_SYSCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_SYSCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0)) +#define FORWARD_WM_SYSCOLORCHANGE(hwnd,fn) (void)(fn)((hwnd),WM_SYSCOLORCHANGE,0,0) +#define FORWARD_WM_SYSCOMMAND(hwnd,cmd,x,y,fn) (void)(fn)((hwnd),WM_SYSCOMMAND,(WPARAM)(UINT)(cmd),MAKELPARAM((x),(y))) +#define FORWARD_WM_SYSDEADCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_SYSDEADCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0)) +#define FORWARD_WM_SYSKEYDOWN(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_SYSKEYDOWN,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags))) +#define FORWARD_WM_SYSKEYUP(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_SYSKEYUP,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags))) +#define FORWARD_WM_SYSTEMERROR(hwnd,errCode,fn) 0 +#define FORWARD_WM_TIMECHANGE(hwnd,fn) (void)(fn)((hwnd),WM_TIMECHANGE,0,0) +#define FORWARD_WM_TIMER(hwnd,id,fn) (void)(fn)((hwnd),WM_TIMER,(WPARAM)(UINT)(id),0) +#define FORWARD_WM_UNDO(hwnd,fn) (void)(fn)((hwnd),WM_UNDO,0,0) +#define FORWARD_WM_VKEYTOITEM(hwnd,vk,hwndListBox,iCaret,fn) (int)(DWORD)(fn)((hwnd),WM_VKEYTOITEM,MAKEWPARAM((vk),(iCaret)),(LPARAM)(hwndListBox)) +#define FORWARD_WM_VSCROLL(hwnd,hwndCtl,code,pos,fn) (void)(fn)((hwnd),WM_VSCROLL,MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)),(LPARAM)(HWND)(hwndCtl)) +#define FORWARD_WM_VSCROLLCLIPBOARD(hwnd,hwndCBViewer,code,pos,fn) (void)(fn)((hwnd),WM_VSCROLLCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),MAKELPARAM((code),(pos))) +#define FORWARD_WM_WINDOWPOSCHANGED(hwnd,lpwpos,fn) (void)(fn)((hwnd),WM_WINDOWPOSCHANGED,0,(LPARAM)(const LPWINDOWPOS)(lpwpos)) +#define FORWARD_WM_WINDOWPOSCHANGING(hwnd,lpwpos,fn) (BOOL)(DWORD)(fn)((hwnd),WM_WINDOWPOSCHANGING,0,(LPARAM)(LPWINDOWPOS)(lpwpos)) +#define FORWARD_WM_WININICHANGE(hwnd,lpszSectionName,fn) (void)(fn)((hwnd),WM_WININICHANGE,0,(LPARAM)(LPCTSTR)(lpszSectionName)) +#define GET_EM_LINESCROLL_MPS(vert,horz) (WPARAM)horz,(LONG)vert +#define GET_EM_SETSEL_END(wp,lp) (lp) +#define GET_EM_SETSEL_MPS(iStart,iEnd) (WPARAM)(iStart),(LONG)(iEnd) +#define GET_EM_SETSEL_START(wp,lp) (INT)(wp) +#define GET_LPARAM(wp,lp) (lp) +#define GET_WM_ACTIVATE_FMINIMIZED(wp,lp) (BOOL)HIWORD(wp) +#define GET_WM_ACTIVATE_HWND(wp,lp) (HWND)(lp) +#define GET_WM_ACTIVATE_MPS(s,fmin,hwnd) (WPARAM)MAKELONG((s),(fmin)),(LONG)(hwnd) +#define GET_WM_ACTIVATE_STATE(wp,lp) LOWORD(wp) +#define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp,lp) (HWND)(lp) +#define GET_WM_CHARTOITEM_CHAR(wp,lp) (TCHAR)LOWORD(wp) +#define GET_WM_CHARTOITEM_HWND(wp,lp) (HWND)(lp) +#define GET_WM_CHARTOITEM_MPS(ch,pos,hwnd) (WPARAM)MAKELONG((pos),(ch)),(LONG)(hwnd) +#define GET_WM_CHARTOITEM_POS(wp,lp) HIWORD(wp) +#define GET_WM_COMMAND_CMD(wp,lp) HIWORD(wp) +#define GET_WM_COMMAND_HWND(wp,lp) (HWND)(lp) +#define GET_WM_COMMAND_ID(wp,lp) LOWORD(wp) +#define GET_WM_COMMAND_MPS(id,hwnd,cmd) (WPARAM)MAKELONG(id,cmd),(LONG)(hwnd) +#define GET_WM_CTLCOLOR_HDC(wp,lp,msg) (HDC)(wp) +#define GET_WM_CTLCOLOR_HWND(wp,lp,msg) (HWND)(lp) +#define GET_WM_CTLCOLOR_MPS(hdc,hwnd,type) (WPARAM)(hdc),(LONG)(hwnd) +#define GET_WM_CTLCOLOR_MSG(type) (WORD)(WM_CTLCOLORMSGBOX+(type)) +#define GET_WM_CTLCOLOR_TYPE(wp,lp,msg) (WORD)(msg - WM_CTLCOLORMSGBOX) +#define GET_WM_HSCROLL_CODE(wp,lp) LOWORD(wp) +#define GET_WM_HSCROLL_HWND(wp,lp) (HWND)(lp) +#define GET_WM_HSCROLL_MPS(code,pos,hwnd) (WPARAM)MAKELONG(code,pos),(LONG)(hwnd) +#define GET_WM_HSCROLL_POS(wp,lp) HIWORD(wp) +#define GET_WM_MDIACTIVATE_FACTIVATE(hwnd,wp,lp) (lp == (LONG)hwnd) +#define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp,lp) (HWND)(lp) +#define GET_WM_MDIACTIVATE_HWNDDEACT(wp,lp) (HWND)(wp) +#define GET_WM_MDIACTIVATE_MPS(f,hwndD,hwndA) (WPARAM)(hwndA),0 +#define GET_WM_MDISETMENU_MPS(hmenuF,hmenuW) (WPARAM)hmenuF,(LONG)hmenuW +#define GET_WM_MENUCHAR_CHAR(wp,lp) (TCHAR)LOWORD(wp) +#define GET_WM_MENUCHAR_FMENU(wp,lp) (BOOL)HIWORD(wp) +#define GET_WM_MENUCHAR_HMENU(wp,lp) (HMENU)(lp) +#define GET_WM_MENUCHAR_MPS(ch,hmenu,f) (WPARAM)MAKELONG(ch,f),(LONG)(hmenu) +#define GET_WM_MENUSELECT_CMD(wp,lp) LOWORD(wp) +#define GET_WM_MENUSELECT_FLAGS(wp,lp) (UINT)(int)(short)HIWORD(wp) +#define GET_WM_MENUSELECT_HMENU(wp,lp) (HMENU)(lp) +#define GET_WM_MENUSELECT_MPS(cmd,f,hmenu) (WPARAM)MAKELONG(cmd,f),(LONG)(hmenu) +#define GET_WM_PARENTNOTIFY2_MPS(msg,x,y) (WPARAM)MAKELONG(0,msg),MAKELONG(x,y) +#define GET_WM_PARENTNOTIFY_HWNDCHILD(wp,lp) (HWND)(lp) +#define GET_WM_PARENTNOTIFY_ID(wp,lp) HIWORD(wp) +#define GET_WM_PARENTNOTIFY_MPS(msg,id,hwnd) (WPARAM)MAKELONG(id,msg),(LONG)(hwnd) +#define GET_WM_PARENTNOTIFY_MSG(wp,lp) LOWORD(wp) +#define GET_WM_PARENTNOTIFY_X(wp,lp) (int)(short)LOWORD(lp) +#define GET_WM_PARENTNOTIFY_Y(wp,lp) (int)(short)HIWORD(lp) +#define GET_WM_VKEYTOITEM_CODE(wp,lp) (int)(short)LOWORD(wp) +#define GET_WM_VKEYTOITEM_HWND(wp,lp) (HWND)(lp) +#define GET_WM_VKEYTOITEM_ITEM(wp,lp) HIWORD(wp) +#define GET_WM_VKEYTOITEM_MPS(code,item,hwnd) (WPARAM)MAKELONG(item,code),(LONG)(hwnd) +#define GET_WM_VSCROLL_CODE(wp,lp) LOWORD(wp) +#define GET_WM_VSCROLL_HWND(wp,lp) (HWND)(lp) +#define GET_WM_VSCROLL_MPS(code,pos,hwnd) (WPARAM)MAKELONG(code,pos),(LONG)(hwnd) +#define GET_WM_VSCROLL_POS(wp,lp) HIWORD(wp) +#define GET_WPARAM(wp,lp) (wp) +#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp)) +#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp)) +#define GetFirstChild(hwnd) GetTopWindow(hwnd) +#define GetFirstSibling(hwnd) GetWindow(hwnd,GW_HWNDFIRST) +#define GetInstanceModule(hInstance) (HMODULE)(hInstance) +#define GetLastSibling(hwnd) GetWindow(hwnd,GW_HWNDLAST) +#define GetNextSibling(hwnd) GetWindow(hwnd,GW_HWNDNEXT) +#define GetPrevSibling(hwnd) GetWindow(hwnd,GW_HWNDPREV) +#define GetStockBrush(i) ((HBRUSH)GetStockObject(i)) +#define GetStockFont(i) ((HFONT)GetStockObject(i)) +#define GetStockPen(i) ((HPEN)GetStockObject(i)) +#define GetWindowExStyle(hwnd) ((DWORD)GetWindowLong(hwnd,GWL_EXSTYLE)) +#define GetWindowFont(hwnd) FORWARD_WM_GETFONT((hwnd),SendMessage) +#define GetWindowID(hwnd) GetDlgCtrlID(hwnd) +#define GetWindowInstance(hwnd) ((HMODULE)GetWindowLong(hwnd,GWL_HINSTANCE)) +#define GetWindowOwner(hwnd) GetWindow(hwnd,GW_OWNER) +#define GetWindowStyle(hwnd) ((DWORD)GetWindowLong(hwnd,GWL_STYLE)) +#define GlobalAllocPtr(flags,cb) (GlobalLock(GlobalAlloc((flags),(cb)))) +#define GlobalFreePtr(lp) (GlobalUnlockPtr(lp),(BOOL)GlobalFree(GlobalPtrHandle(lp))) +#define GlobalLockPtr(lp) ((BOOL)GlobalLock(GlobalPtrHandle(lp))) +#define GlobalPtrHandle(lp) ((HGLOBAL)GlobalHandle(lp)) +#define GlobalReAllocPtr(lp,cbNew,flags) (GlobalUnlockPtr(lp),GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) ,(cbNew),(flags)))) +#define GlobalUnlockPtr(lp) GlobalUnlock(GlobalPtrHandle(lp)) +#define HANDLE_MSG(hwnd,message,fn) case (message): return HANDLE_##message((hwnd),(wParam),(lParam),(fn)) +#define HANDLE_WM_ACTIVATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(BOOL)HIWORD(wParam)),0) +#define HANDLE_WM_ACTIVATEAPP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam),(DWORD)(lParam)),0) +#define HANDLE_WM_ASKCBFORMATNAME(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam),(LPTSTR)(lParam)),0) +#define HANDLE_WM_CANCELMODE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_CHANGECBCHAIN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(HWND)(lParam)),0) +#define HANDLE_WM_CHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0) +#define HANDLE_WM_CHARTOITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(int)(short)HIWORD(wParam)) +#define HANDLE_WM_CHILDACTIVATE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_CLEAR(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_CLOSE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0) +#define HANDLE_WM_COMMNOTIFY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam),(UINT)LOWORD(lParam)),0) +#define HANDLE_WM_COMPACTING(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam)),0) +#define HANDLE_WM_COMPAREITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(const COMPAREITEMSTRUCT*)(lParam)) +#define HANDLE_WM_COPY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_CREATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCREATESTRUCT)(lParam)) ? 0 : (LRESULT)-1L) +#define HANDLE_WM_CTLCOLORBTN(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_BTN) +#define HANDLE_WM_CTLCOLORDLG(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_DLG) +#define HANDLE_WM_CTLCOLOREDIT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_EDIT) +#define HANDLE_WM_CTLCOLORLISTBOX(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_LISTBOX) +#define HANDLE_WM_CTLCOLORMSGBOX(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_MSGBOX) +#define HANDLE_WM_CTLCOLORSCROLLBAR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_SCROLLBAR) +#define HANDLE_WM_CTLCOLORSTATIC(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_STATIC) +#define HANDLE_WM_CUT(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_DEADCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0) +#define HANDLE_WM_DELETEITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const DELETEITEMSTRUCT*)(lParam)),0) +#define HANDLE_WM_DESTROY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_DESTROYCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_DEVMODECHANGE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0) +#define HANDLE_WM_DRAWCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_DRAWITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const DRAWITEMSTRUCT*)(lParam)),0) +#define HANDLE_WM_DROPFILES(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HDROP)(wParam)),0) +#define HANDLE_WM_ENABLE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0) +#define HANDLE_WM_ENDSESSION(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0) +#define HANDLE_WM_ENTERIDLE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(HWND)(lParam)),0) +#define HANDLE_WM_ERASEBKGND(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HDC)(wParam)) +#define HANDLE_WM_FONTCHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_GETDLGCODE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd,(LPMSG)(lParam)) +#define HANDLE_WM_GETFONT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HFONT)(fn)(hwnd) +#define HANDLE_WM_GETMINMAXINFO(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPMINMAXINFO)(lParam)),0) +#define HANDLE_WM_GETTEXT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(int)(wParam),(LPTSTR)(lParam)) +#define HANDLE_WM_GETTEXTLENGTH(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)(hwnd) +#define HANDLE_WM_HSCROLL(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(lParam),(UINT)(LOWORD(wParam)),(int)(short)HIWORD(wParam)),0) +#define HANDLE_WM_HSCROLLCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(int)(short)HIWORD(lParam)),0) +#define HANDLE_WM_ICONERASEBKGND(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HDC)(wParam)) +#define HANDLE_WM_INITDIALOG(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd),(HWND)(wParam),lParam) +#define HANDLE_WM_INITMENU(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(wParam)),0) +#define HANDLE_WM_INITMENUPOPUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(wParam),(UINT)LOWORD(lParam),(BOOL)HIWORD(lParam)),0) +#define HANDLE_WM_KEYDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),TRUE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0) +#define HANDLE_WM_KEYUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),FALSE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0) +#define HANDLE_WM_KILLFOCUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0) +#define HANDLE_WM_LBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_LBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_LBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_MBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_MBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_MBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_MDIACTIVATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(lParam == (LPARAM)hwnd),(HWND)(lParam),(HWND)(wParam)),0) +#define HANDLE_WM_MDICASCADE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(wParam)) +#define HANDLE_WM_MDICREATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(LPMDICREATESTRUCT)(lParam)) +#define HANDLE_WM_MDIDESTROY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0) +#define HANDLE_WM_MDIGETACTIVE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd) +#define HANDLE_WM_MDIICONARRANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_MDIMAXIMIZE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0) +#define HANDLE_WM_MDINEXT(hwnd,wParam,lParam,fn) (LRESULT)(HWND)(fn)((hwnd),(HWND)(wParam),(BOOL)lParam) +#define HANDLE_WM_MDIRESTORE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0) +#define HANDLE_WM_MDISETMENU(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(BOOL)(wParam),(HMENU)(wParam),(HMENU)(lParam)) +#define HANDLE_WM_MDITILE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(wParam)) +#define HANDLE_WM_MEASUREITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(MEASUREITEMSTRUCT*)(lParam)),0) +#define HANDLE_WM_MENUCHAR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(LOWORD(wParam)),(UINT)HIWORD(wParam),(HMENU)(lParam)) +#define HANDLE_WM_MENUSELECT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(lParam),(int)(LOWORD(wParam)),(HIWORD(wParam) & MF_POPUP) ? GetSubMenu((HMENU)lParam,LOWORD(wParam)) : 0,(UINT)(((short)HIWORD(wParam) == -1) ? 0xFFFFFFFF : HIWORD(wParam))),0) +#define HANDLE_WM_MOUSEACTIVATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(UINT)HIWORD(lParam)) +#define HANDLE_WM_MOUSEMOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_MOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0) +#define HANDLE_WM_NCACTIVATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(BOOL)(wParam),0,0) +#define HANDLE_WM_NCCALCSIZE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(BOOL)(0),(NCCALCSIZE_PARAMS*)(lParam)) +#define HANDLE_WM_NCCREATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(LPCREATESTRUCT)(lParam)) +#define HANDLE_WM_NCDESTROY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_NCHITTEST(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)) +#define HANDLE_WM_NCLBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCLBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCLBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCMBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCMBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCMBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCMOUSEMOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCPAINT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HRGN)(wParam)),0) +#define HANDLE_WM_NCRBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCRBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NCRBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_NEXTDLGCTL(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HWND)(fn)((hwnd),(HWND)(wParam),(BOOL)(lParam)) +#define HANDLE_WM_PAINT(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_PAINTCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(const LPPAINTSTRUCT)GlobalLock((HGLOBAL)(lParam))),GlobalUnlock((HGLOBAL)(lParam)),0) +#define HANDLE_WM_PALETTECHANGED(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0) +#define HANDLE_WM_PALETTEISCHANGING(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0) +#define HANDLE_WM_PARENTNOTIFY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(UINT)HIWORD(wParam)),0) +#define HANDLE_WM_PASTE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_POWER(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam)),0) +#define HANDLE_WM_QUERYDRAGICON(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd) +#define HANDLE_WM_QUERYENDSESSION(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0) +#define HANDLE_WM_QUERYNEWPALETTE(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0) +#define HANDLE_WM_QUERYOPEN(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0) +#define HANDLE_WM_QUEUESYNC(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_QUIT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam)),0) +#define HANDLE_WM_RBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_RBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_RBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0) +#define HANDLE_WM_RENDERALLFORMATS(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_RENDERFORMAT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HANDLE)(fn)((hwnd),(UINT)(wParam)) +#define HANDLE_WM_SETCURSOR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(UINT)HIWORD(lParam)) +#define HANDLE_WM_SETFOCUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0) +#define HANDLE_WM_SETFONT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HFONT)(wParam),(BOOL)(lParam)),0) +#define HANDLE_WM_SETREDRAW(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0) +#define HANDLE_WM_SETTEXT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0) +#define HANDLE_WM_SHOWWINDOW(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam),(UINT)(lParam)),0) +#define HANDLE_WM_SIZE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0) +#define HANDLE_WM_SIZECLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(const LPRECT)GlobalLock((HGLOBAL)(lParam))),GlobalUnlock((HGLOBAL)(lParam)),0) +#define HANDLE_WM_SPOOLERSTATUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam)),0) +#define HANDLE_WM_SYSCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0) +#define HANDLE_WM_SYSCOLORCHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_SYSCOMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0) +#define HANDLE_WM_SYSDEADCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0) +#define HANDLE_WM_SYSKEYDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),TRUE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0) +#define HANDLE_WM_SYSKEYUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),FALSE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0) +#define HANDLE_WM_SYSTEMERROR(hwnd,wParam,lParam,fn) 0 +#define HANDLE_WM_TIMECHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_TIMER(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam)),0) +#define HANDLE_WM_UNDO(hwnd,wParam,lParam,fn) ((fn)(hwnd),0) +#define HANDLE_WM_VKEYTOITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(int)(short)HIWORD(wParam)) +#define HANDLE_WM_VSCROLL(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(lParam),(UINT)(LOWORD(wParam)),(int)(short)HIWORD(wParam)),0) +#define HANDLE_WM_VSCROLLCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(int)(short)HIWORD(lParam)),0) +#define HANDLE_WM_WINDOWPOSCHANGED(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const LPWINDOWPOS)(lParam)),0) +#define HANDLE_WM_WINDOWPOSCHANGING(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(LPWINDOWPOS)(lParam)) +#define HANDLE_WM_WININICHANGE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0) +#define InsetRect(lprc,dx,dy) InflateRect((lprc),-(dx),-(dy)) +#define IntersectRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_AND) +#define IsLButtonDown() (GetKeyState(VK_LBUTTON) < 0) +#define IsMButtonDown() (GetKeyState(VK_MBUTTON) < 0) +#define IsMaximized(hwnd) IsZoomed(hwnd) +#define IsMinimized(hwnd) IsIconic(hwnd) +#define IsRButtonDown() (GetKeyState(VK_RBUTTON) < 0) +#define IsRestored(hwnd) ((GetWindowStyle(hwnd) & (WS_MINIMIZE | WS_MAXIMIZE)) == 0) +#define ListBox_AddItemData(hwndCtl,data) ((int)(DWORD)SendMessage((hwndCtl),LB_ADDSTRING,0,(LPARAM)(data))) +#define ListBox_AddString(hwndCtl,lpsz) ((int)(DWORD)SendMessage((hwndCtl),LB_ADDSTRING,0,(LPARAM)(LPCTSTR)(lpsz))) +#define ListBox_DeleteString(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_DELETESTRING,(WPARAM)(int)(index),0)) +#define ListBox_Dir(hwndCtl,attrs,lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl),LB_DIR,(WPARAM)(UINT)(attrs),(LPARAM)(LPCTSTR)(lpszFileSpec))) +#define ListBox_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable)) +#define ListBox_FindItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),LB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data))) +#define ListBox_FindString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),LB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind))) +#define ListBox_FindStringExact(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),LB_FINDSTRINGEXACT,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind))) +#define ListBox_GetCaretIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETCARETINDEX,0,0)) +#define ListBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETCOUNT,0,0)) +#define ListBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETCURSEL,0,0)) +#define ListBox_GetHorizontalExtent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETHORIZONTALEXTENT,0,0)) +#define ListBox_GetItemData(hwndCtl,index) ((LRESULT)(DWORD)SendMessage((hwndCtl),LB_GETITEMDATA,(WPARAM)(int)(index),0)) +#define ListBox_GetItemHeight(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_GETITEMHEIGHT,(WPARAM)(int)(index),0)) +#define ListBox_GetItemRect(hwndCtl,index,lprc) ((int)(DWORD)SendMessage((hwndCtl),LB_GETITEMRECT,(WPARAM)(int)(index),(LPARAM)(RECT*)(lprc))) +#define ListBox_GetSel(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_GETSEL,(WPARAM)(int)(index),0)) +#define ListBox_GetSelCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETSELCOUNT,0,0)) +#define ListBox_GetSelItems(hwndCtl,cItems,lpItems) ((int)(DWORD)SendMessage((hwndCtl),LB_GETSELITEMS,(WPARAM)(int)(cItems),(LPARAM)(int*)(lpItems))) +#define ListBox_GetText(hwndCtl,index,lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl),LB_GETTEXT,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpszBuffer))) +#define ListBox_GetTextLen(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_GETTEXTLEN,(WPARAM)(int)(index),0)) +#define ListBox_GetTopIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETTOPINDEX,0,0)) +#define ListBox_InsertItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),LB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(data))) +#define ListBox_InsertString(hwndCtl,index,lpsz) ((int)(DWORD)SendMessage((hwndCtl),LB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpsz))) +#define ListBox_ResetContent(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),LB_RESETCONTENT,0,0)) +#define ListBox_SelItemRange(hwndCtl,fSelect,first,last) ((int)(DWORD)SendMessage((hwndCtl),LB_SELITEMRANGE,(WPARAM)(BOOL)(fSelect),MAKELPARAM((first),(last)))) +#define ListBox_SelectItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),LB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data))) +#define ListBox_SelectString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),LB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind))) +#define ListBox_SetCaretIndex(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_SETCARETINDEX,(WPARAM)(int)(index),0)) +#define ListBox_SetColumnWidth(hwndCtl,cxColumn) ((void)SendMessage((hwndCtl),LB_SETCOLUMNWIDTH,(WPARAM)(int)(cxColumn),0)) +#define ListBox_SetCurSel(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_SETCURSEL,(WPARAM)(int)(index),0)) +#define ListBox_SetHorizontalExtent(hwndCtl,cxExtent) ((void)SendMessage((hwndCtl),LB_SETHORIZONTALEXTENT,(WPARAM)(int)(cxExtent),0)) +#define ListBox_SetItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),LB_SETITEMDATA,(WPARAM)(int)(index),(LPARAM)(data))) +#define ListBox_SetItemHeight(hwndCtl,index,cy) ((int)(DWORD)SendMessage((hwndCtl),LB_SETITEMHEIGHT,(WPARAM)(int)(index),MAKELPARAM((cy),0))) +#define ListBox_SetSel(hwndCtl,fSelect,index) ((int)(DWORD)SendMessage((hwndCtl),LB_SETSEL,(WPARAM)(BOOL)(fSelect),(LPARAM)(index))) +#define ListBox_SetTabStops(hwndCtl,cTabs,lpTabs) ((BOOL)(DWORD)SendMessage((hwndCtl),LB_SETTABSTOPS,(WPARAM)(int)(cTabs),(LPARAM)(int*)(lpTabs))) +#define ListBox_SetTopIndex(hwndCtl,indexTop) ((int)(DWORD)SendMessage((hwndCtl),LB_SETTOPINDEX,(WPARAM)(int)(indexTop),0)) +#define MapWindowRect(hwndFrom,hwndTo,lprc) MapWindowPoints((hwndFrom),(hwndTo),(POINT*)(lprc),2) +#define ScrollBar_Enable(hwndCtl,flags) EnableScrollBar((hwndCtl),SB_CTL,(flags)) +#define ScrollBar_GetPos(hwndCtl) GetScrollPos((hwndCtl),SB_CTL) +#define ScrollBar_GetRange(hwndCtl,lpposMin,lpposMax) GetScrollRange((hwndCtl),SB_CTL,(lpposMin),(lpposMax)) +#define ScrollBar_SetPos(hwndCtl,pos,fRedraw) SetScrollPos((hwndCtl),SB_CTL,(pos),(fRedraw)) +#define ScrollBar_SetRange(hwndCtl,posMin,posMax,fRedraw) SetScrollRange((hwndCtl),SB_CTL,(posMin),(posMax),(fRedraw)) +#define ScrollBar_Show(hwndCtl,fShow) ShowWindow((hwndCtl),(fShow) ? SW_SHOWNORMAL : SW_HIDE) +#define SelectBitmap(hdc,hbm) ((HBITMAP)SelectObject((hdc),(HGDIOBJ)(HBITMAP)(hbm))) +#define SelectBrush(hdc,hbr) ((HBRUSH)SelectObject((hdc),(HGDIOBJ)(HBRUSH)(hbr))) +#define SelectFont(hdc,hfont) ((HFONT)SelectObject((hdc),(HGDIOBJ)(HFONT)(hfont))) +#define SelectPen(hdc,hpen) ((HPEN)SelectObject((hdc),(HGDIOBJ)(HPEN)(hpen))) +#define SetDlgMsgResult(hwnd,msg,result) (( (msg) == WM_CTLCOLORMSGBOX || (msg) == WM_CTLCOLOREDIT || (msg) == WM_CTLCOLORLISTBOX || (msg) == WM_CTLCOLORBTN || (msg) == WM_CTLCOLORDLG || (msg) == WM_CTLCOLORSCROLLBAR || (msg) == WM_CTLCOLORSTATIC || (msg) == WM_COMPAREITEM || (msg) == WM_VKEYTOITEM || (msg) == WM_CHARTOITEM || (msg) == WM_QUERYDRAGICON || (msg) == WM_INITDIALOG ) ? (BOOL)(result) : (SetWindowLong((hwnd),DWL_MSGRESULT,(LPARAM)(LRESULT)(result)),TRUE)) +#define SetWindowFont(hwnd,hfont,fRedraw) FORWARD_WM_SETFONT((hwnd),(hfont),(fRedraw),SendMessage) +#define SetWindowRedraw(hwnd,fRedraw) ((void)SendMessage(hwnd,WM_SETREDRAW,(WPARAM)(BOOL)(fRedraw),0)) +#define Static_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable)) +#define Static_GetIcon(hwndCtl,hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl),STM_GETICON,0,0)) +#define Static_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax)) +#define Static_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl) +#define Static_SetIcon(hwndCtl,hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl),STM_SETICON,(WPARAM)(HICON)(hIcon),0)) +#define Static_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz)) +#define SubclassDialog(hwndDlg,lpfn) ((DLGPROC)SetWindowLong(hwndDlg,DWL_DLGPROC,(LPARAM)(DLGPROC)(lpfn))) +#define SubclassWindow(hwnd,lpfn) ((WNDPROC)SetWindowLong((hwnd),GWL_WNDPROC,(LPARAM)(WNDPROC)(lpfn))) +#define SubtractRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_DIFF) +#define UnionRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_OR) +#define XorRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_XOR) + +/* FAR versions of mem and string functions for porting from old code*/ +#define _ffree free +#define _fmalloc malloc +#define _frealloc realloc +#define _fmsize _msize + +#define _fmemcpy memcpy +#define _fmemmove memmove +#define _fmemset memset +#define _fmemcmp memcmp +#define _fmemchr memchr +#define _fmemccpy _memccpy +#define _fmemicmp _memicmp + +#define _fstrcat strcat +#define _fstrchr strchr +#define _fstrcmp strcmp +#define _fstrcpy strcpy +#define _fstrcspn strcspn +#define _fstrdup _strdup +#define _fstricmp _stricmp +#define _fstrlen strlen +#define _fstrlwr _strlwr +#define _fstrncat strncat +#define _fstrncmp strncmp +#define _fstrncpy strncpy +#define _fstrnicmp _strnicmp +#define _fstrnset _strnset +#define _fstrpbrk strpbrk +#define _fstrrchr strrchr +#define _fstrrev _strrev +#define _fstrset _strset +#define _fstrspn strspn +#define _fstrstr strstr +#define _fstrtok strtok +#define _fstrupr _strupr + +#define hmemcpy MoveMemory + +#endif diff --git a/reactos/w32api/include/winerror.h b/reactos/w32api/include/winerror.h new file mode 100644 index 00000000000..42e8bce99e7 --- /dev/null +++ b/reactos/w32api/include/winerror.h @@ -0,0 +1,2229 @@ +#ifndef _WINERROR_H +#define _WINERROR_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define ERROR_SUCCESS 0L +#define NO_ERROR 0L +#define ERROR_INVALID_FUNCTION 1L +#define ERROR_FILE_NOT_FOUND 2L +#define ERROR_PATH_NOT_FOUND 3L +#define ERROR_TOO_MANY_OPEN_FILES 4L +#define ERROR_ACCESS_DENIED 5L +#define ERROR_INVALID_HANDLE 6L +#define ERROR_ARENA_TRASHED 7L +#define ERROR_NOT_ENOUGH_MEMORY 8L +#define ERROR_INVALID_BLOCK 9L +#define ERROR_BAD_ENVIRONMENT 10L +#define ERROR_BAD_FORMAT 11L +#define ERROR_INVALID_ACCESS 12L +#define ERROR_INVALID_DATA 13L +#define ERROR_OUTOFMEMORY 14L +#define ERROR_INVALID_DRIVE 15L +#define ERROR_CURRENT_DIRECTORY 16L +#define ERROR_NOT_SAME_DEVICE 17L +#define ERROR_NO_MORE_FILES 18L +#define ERROR_WRITE_PROTECT 19L +#define ERROR_BAD_UNIT 20L +#define ERROR_NOT_READY 21L +#define ERROR_BAD_COMMAND 22L +#define ERROR_CRC 23L +#define ERROR_BAD_LENGTH 24L +#define ERROR_SEEK 25L +#define ERROR_NOT_DOS_DISK 26L +#define ERROR_SECTOR_NOT_FOUND 27L +#define ERROR_OUT_OF_PAPER 28L +#define ERROR_WRITE_FAULT 29L +#define ERROR_READ_FAULT 30L +#define ERROR_GEN_FAILURE 31L +#define ERROR_SHARING_VIOLATION 32L +#define ERROR_LOCK_VIOLATION 33L +#define ERROR_WRONG_DISK 34L +#define ERROR_SHARING_BUFFER_EXCEEDED 36L +#define ERROR_HANDLE_EOF 38L +#define ERROR_HANDLE_DISK_FULL 39L +#define ERROR_NOT_SUPPORTED 50L +#define ERROR_REM_NOT_LIST 51L +#define ERROR_DUP_NAME 52L +#define ERROR_BAD_NETPATH 53L +#define ERROR_NETWORK_BUSY 54L +#define ERROR_DEV_NOT_EXIST 55L +#define ERROR_TOO_MANY_CMDS 56L +#define ERROR_ADAP_HDW_ERR 57L +#define ERROR_BAD_NET_RESP 58L +#define ERROR_UNEXP_NET_ERR 59L +#define ERROR_BAD_REM_ADAP 60L +#define ERROR_PRINTQ_FULL 61L +#define ERROR_NO_SPOOL_SPACE 62L +#define ERROR_PRINT_CANCELLED 63L +#define ERROR_NETNAME_DELETED 64L +#define ERROR_NETWORK_ACCESS_DENIED 65L +#define ERROR_BAD_DEV_TYPE 66L +#define ERROR_BAD_NET_NAME 67L +#define ERROR_TOO_MANY_NAMES 68L +#define ERROR_TOO_MANY_SESS 69L +#define ERROR_SHARING_PAUSED 70L +#define ERROR_REQ_NOT_ACCEP 71L +#define ERROR_REDIR_PAUSED 72L +#define ERROR_FILE_EXISTS 80L +#define ERROR_CANNOT_MAKE 82L +#define ERROR_FAIL_I24 83L +#define ERROR_OUT_OF_STRUCTURES 84L +#define ERROR_ALREADY_ASSIGNED 85L +#define ERROR_INVALID_PASSWORD 86L +#define ERROR_INVALID_PARAMETER 87L +#define ERROR_NET_WRITE_FAULT 88L +#define ERROR_NO_PROC_SLOTS 89L +#define ERROR_TOO_MANY_SEMAPHORES 100L +#define ERROR_EXCL_SEM_ALREADY_OWNED 101L +#define ERROR_SEM_IS_SET 102L +#define ERROR_TOO_MANY_SEM_REQUESTS 103L +#define ERROR_INVALID_AT_INTERRUPT_TIME 104L +#define ERROR_SEM_OWNER_DIED 105L +#define ERROR_SEM_USER_LIMIT 106L +#define ERROR_DISK_CHANGE 107L +#define ERROR_DRIVE_LOCKED 108L +#define ERROR_BROKEN_PIPE 109L +#define ERROR_OPEN_FAILED 110L +#define ERROR_BUFFER_OVERFLOW 111L +#define ERROR_DISK_FULL 112L +#define ERROR_NO_MORE_SEARCH_HANDLES 113L +#define ERROR_INVALID_TARGET_HANDLE 114L +#define ERROR_INVALID_CATEGORY 117L +#define ERROR_INVALID_VERIFY_SWITCH 118L +#define ERROR_BAD_DRIVER_LEVEL 119L +#define ERROR_CALL_NOT_IMPLEMENTED 120L +#define ERROR_SEM_TIMEOUT 121L +#define ERROR_INSUFFICIENT_BUFFER 122L +#define ERROR_INVALID_NAME 123L +#define ERROR_INVALID_LEVEL 124L +#define ERROR_NO_VOLUME_LABEL 125L +#define ERROR_MOD_NOT_FOUND 126L +#define ERROR_PROC_NOT_FOUND 127L +#define ERROR_WAIT_NO_CHILDREN 128L +#define ERROR_CHILD_NOT_COMPLETE 129L +#define ERROR_DIRECT_ACCESS_HANDLE 130L +#define ERROR_NEGATIVE_SEEK 131L +#define ERROR_SEEK_ON_DEVICE 132L +#define ERROR_IS_JOIN_TARGET 133L +#define ERROR_IS_JOINED 134L +#define ERROR_IS_SUBSTED 135L +#define ERROR_NOT_JOINED 136L +#define ERROR_NOT_SUBSTED 137L +#define ERROR_JOIN_TO_JOIN 138L +#define ERROR_SUBST_TO_SUBST 139L +#define ERROR_JOIN_TO_SUBST 140L +#define ERROR_SUBST_TO_JOIN 141L +#define ERROR_BUSY_DRIVE 142L +#define ERROR_SAME_DRIVE 143L +#define ERROR_DIR_NOT_ROOT 144L +#define ERROR_DIR_NOT_EMPTY 145L +#define ERROR_IS_SUBST_PATH 146L +#define ERROR_IS_JOIN_PATH 147L +#define ERROR_PATH_BUSY 148L +#define ERROR_IS_SUBST_TARGET 149L +#define ERROR_SYSTEM_TRACE 150L +#define ERROR_INVALID_EVENT_COUNT 151L +#define ERROR_TOO_MANY_MUXWAITERS 152L +#define ERROR_INVALID_LIST_FORMAT 153L +#define ERROR_LABEL_TOO_LONG 154L +#define ERROR_TOO_MANY_TCBS 155L +#define ERROR_SIGNAL_REFUSED 156L +#define ERROR_DISCARDED 157L +#define ERROR_NOT_LOCKED 158L +#define ERROR_BAD_THREADID_ADDR 159L +#define ERROR_BAD_ARGUMENTS 160L +#define ERROR_BAD_PATHNAME 161L +#define ERROR_SIGNAL_PENDING 162L +#define ERROR_MAX_THRDS_REACHED 164L +#define ERROR_LOCK_FAILED 167L +#define ERROR_BUSY 170L +#define ERROR_CANCEL_VIOLATION 173L +#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED 174L +#define ERROR_INVALID_SEGMENT_NUMBER 180L +#define ERROR_INVALID_ORDINAL 182L +#define ERROR_ALREADY_EXISTS 183L +#define ERROR_INVALID_FLAG_NUMBER 186L +#define ERROR_SEM_NOT_FOUND 187L +#define ERROR_INVALID_STARTING_CODESEG 188L +#define ERROR_INVALID_STACKSEG 189L +#define ERROR_INVALID_MODULETYPE 190L +#define ERROR_INVALID_EXE_SIGNATURE 191L +#define ERROR_EXE_MARKED_INVALID 192L +#define ERROR_BAD_EXE_FORMAT 193L +#define ERROR_ITERATED_DATA_EXCEEDS_64k 194L +#define ERROR_INVALID_MINALLOCSIZE 195L +#define ERROR_DYNLINK_FROM_INVALID_RING 196L +#define ERROR_IOPL_NOT_ENABLED 197L +#define ERROR_INVALID_SEGDPL 198L +#define ERROR_AUTODATASEG_EXCEEDS_64k 199L +#define ERROR_RING2SEG_MUST_BE_MOVABLE 200L +#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM 201L +#define ERROR_INFLOOP_IN_RELOC_CHAIN 202L +#define ERROR_ENVVAR_NOT_FOUND 203L +#define ERROR_NO_SIGNAL_SENT 205L +#define ERROR_FILENAME_EXCED_RANGE 206L +#define ERROR_RING2_STACK_IN_USE 207L +#define ERROR_META_EXPANSION_TOO_LONG 208L +#define ERROR_INVALID_SIGNAL_NUMBER 209L +#define ERROR_THREAD_1_INACTIVE 210L +#define ERROR_LOCKED 212L +#define ERROR_TOO_MANY_MODULES 214L +#define ERROR_NESTING_NOT_ALLOWED 215L +#define ERROR_EXE_MACHINE_TYPE_MISMATCH 216L +#define ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY 217L +#define ERRO_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY 218L +#define ERROR_BAD_PIPE 230L +#define ERROR_PIPE_BUSY 231L +#define ERROR_NO_DATA 232L +#define ERROR_PIPE_NOT_CONNECTED 233L +#define ERROR_MORE_DATA 234L +#define ERROR_VC_DISCONNECTED 240L +#define ERROR_INVALID_EA_NAME 254L +#define ERROR_EA_LIST_INCONSISTENT 255L +#ifndef WAIT_TIMEOUT /* also in winbase.h */ +#define WAIT_TIMEOUT 258L +#endif +#define ERROR_NO_MORE_ITEMS 259L +#define ERROR_CANNOT_COPY 266L +#define ERROR_DIRECTORY 267L +#define ERROR_EAS_DIDNT_FIT 275L +#define ERROR_EA_FILE_CORRUPT 276L +#define ERROR_EA_TABLE_FULL 277L +#define ERROR_INVALID_EA_HANDLE 278L +#define ERROR_EAS_NOT_SUPPORTED 282L +#define ERROR_NOT_OWNER 288L +#define ERROR_TOO_MANY_POSTS 298L +#define ERROR_PARTIAL_COPY 299L +#define ERROR_OPLOCK_NOT_GRANTED 300L +#define ERROR_INVALID_OPLOCK_PROTOCOL 301L +#define ERROR_DISK_TOO_FRAGMENTED 302L +#define ERROR_DELETE_PENDING 303L +#define ERROR_MR_MID_NOT_FOUND 317L +#define ERROR_SCOPE_NOT_FOUND 318L +#define ERROR_INVALID_ADDRESS 487L +#define ERROR_ARITHMETIC_OVERFLOW 534L +#define ERROR_PIPE_CONNECTED 535L +#define ERROR_PIPE_LISTENING 536L +#define ERROR_EA_ACCESS_DENIED 994L +#define ERROR_OPERATION_ABORTED 995L +#define ERROR_IO_INCOMPLETE 996L +#define ERROR_IO_PENDING 997L +#define ERROR_NOACCESS 998L +#define ERROR_SWAPERROR 999L +#define ERROR_STACK_OVERFLOW 1001L +#define ERROR_INVALID_MESSAGE 1002L +#define ERROR_CAN_NOT_COMPLETE 1003L +#define ERROR_INVALID_FLAGS 1004L +#define ERROR_UNRECOGNIZED_VOLUME 1005L +#define ERROR_FILE_INVALID 1006L +#define ERROR_FULLSCREEN_MODE 1007L +#define ERROR_NO_TOKEN 1008L +#define ERROR_BADDB 1009L +#define ERROR_BADKEY 1010L +#define ERROR_CANTOPEN 1011L +#define ERROR_CANTREAD 1012L +#define ERROR_CANTWRITE 1013L +#define ERROR_REGISTRY_RECOVERED 1014L +#define ERROR_REGISTRY_CORRUPT 1015L +#define ERROR_REGISTRY_IO_FAILED 1016L +#define ERROR_NOT_REGISTRY_FILE 1017L +#define ERROR_KEY_DELETED 1018L +#define ERROR_NO_LOG_SPACE 1019L +#define ERROR_KEY_HAS_CHILDREN 1020L +#define ERROR_CHILD_MUST_BE_VOLATILE 1021L +#define ERROR_NOTIFY_ENUM_DIR 1022L +#define ERROR_DEPENDENT_SERVICES_RUNNING 1051L +#define ERROR_INVALID_SERVICE_CONTROL 1052L +#define ERROR_SERVICE_REQUEST_TIMEOUT 1053L +#define ERROR_SERVICE_NO_THREAD 1054L +#define ERROR_SERVICE_DATABASE_LOCKED 1055L +#define ERROR_SERVICE_ALREADY_RUNNING 1056L +#define ERROR_INVALID_SERVICE_ACCOUNT 1057L +#define ERROR_SERVICE_DISABLED 1058L +#define ERROR_CIRCULAR_DEPENDENCY 1059L +#define ERROR_SERVICE_DOES_NOT_EXIST 1060L +#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL 1061L +#define ERROR_SERVICE_NOT_ACTIVE 1062L +#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 1063L +#define ERROR_EXCEPTION_IN_SERVICE 1064L +#define ERROR_DATABASE_DOES_NOT_EXIST 1065L +#define ERROR_SERVICE_SPECIFIC_ERROR 1066L +#define ERROR_PROCESS_ABORTED 1067L +#define ERROR_SERVICE_DEPENDENCY_FAIL 1068L +#define ERROR_SERVICE_LOGON_FAILED 1069L +#define ERROR_SERVICE_START_HANG 1070L +#define ERROR_INVALID_SERVICE_LOCK 1071L +#define ERROR_SERVICE_MARKED_FOR_DELETE 1072L +#define ERROR_SERVICE_EXISTS 1073L +#define ERROR_ALREADY_RUNNING_LKG 1074L +#define ERROR_SERVICE_DEPENDENCY_DELETED 1075L +#define ERROR_BOOT_ALREADY_ACCEPTED 1076L +#define ERROR_SERVICE_NEVER_STARTED 1077L +#define ERROR_DUPLICATE_SERVICE_NAME 1078L +#define ERROR_DIFFERENT_SERVICE_ACCOUNT 1079L +#define ERROR_CANNOT_DETECT_DRIVER_FAILURE 1080L +#define ERROR_CANNOT_DETECT_PROCESS_ABORT 1081L +#define ERROR_NO_RECOVERY_PROGRAM 1082L +#define ERROR_SERVICE_NOT_IN_EXE 1083L +#define ERROR_NOT_SAFEBOOT_SERVICE 1084L +#define ERROR_END_OF_MEDIA 1100L +#define ERROR_FILEMARK_DETECTED 1101L +#define ERROR_BEGINNING_OF_MEDIA 1102L +#define ERROR_SETMARK_DETECTED 1103L +#define ERROR_NO_DATA_DETECTED 1104L +#define ERROR_PARTITION_FAILURE 1105L +#define ERROR_INVALID_BLOCK_LENGTH 1106L +#define ERROR_DEVICE_NOT_PARTITIONED 1107L +#define ERROR_UNABLE_TO_LOCK_MEDIA 1108L +#define ERROR_UNABLE_TO_UNLOAD_MEDIA 1109L +#define ERROR_MEDIA_CHANGED 1110L +#define ERROR_BUS_RESET 1111L +#define ERROR_NO_MEDIA_IN_DRIVE 1112L +#define ERROR_NO_UNICODE_TRANSLATION 1113L +#define ERROR_DLL_INIT_FAILED 1114L +#define ERROR_SHUTDOWN_IN_PROGRESS 1115L +#define ERROR_NO_SHUTDOWN_IN_PROGRESS 1116L +#define ERROR_IO_DEVICE 1117L +#define ERROR_SERIAL_NO_DEVICE 1118L +#define ERROR_IRQ_BUSY 1119L +#define ERROR_MORE_WRITES 1120L +#define ERROR_COUNTER_TIMEOUT 1121L +#define ERROR_FLOPPY_ID_MARK_NOT_FOUND 1122L +#define ERROR_FLOPPY_WRONG_CYLINDER 1123L +#define ERROR_FLOPPY_UNKNOWN_ERROR 1124L +#define ERROR_FLOPPY_BAD_REGISTERS 1125L +#define ERROR_DISK_RECALIBRATE_FAILED 1126L +#define ERROR_DISK_OPERATION_FAILED 1127L +#define ERROR_DISK_RESET_FAILED 1128L +#define ERROR_EOM_OVERFLOW 1129L +#define ERROR_NOT_ENOUGH_SERVER_MEMORY 1130L +#define ERROR_POSSIBLE_DEADLOCK 1131L +#define ERROR_MAPPED_ALIGNMENT 1132L +#define ERROR_SET_POWER_STATE_VETOED 1140L +#define ERROR_SET_POWER_STATE_FAILED 1141L +#define ERROR_TOO_MANY_LINKS 1142L +#define ERROR_OLD_WIN_VERSION 1150L +#define ERROR_APP_WRONG_OS 1151L +#define ERROR_SINGLE_INSTANCE_APP 1152L +#define ERROR_RMODE_APP 1153L +#define ERROR_INVALID_DLL 1154L +#define ERROR_NO_ASSOCIATION 1155L +#define ERROR_DDE_FAIL 1156L +#define ERROR_DLL_NOT_FOUND 1157L +#define ERROR_NO_MORE_USER_HANDLES 1158L +#define ERROR_MESSAGE_SYNC_ONLY 1159L +#define ERROR_SOURCE_ELEMENT_EMPTY 1160L +#define ERROR_DESTINATION_ELEMENT_FULL 1161L +#define ERROR_ILLEGAL_ELEMENT_ADDRESS 1162L +#define ERROR_MAGAZINE_NOT_PRESENT 1163L +#define ERROR_DEVICE_REINITIALIZATION_NEEDED 1164L +#define ERROR_DEVICE_REQUIRES_CLEANING 1165L +#define ERROR_DEVICE_DOOR_OPEN 1166L +#define ERROR_DEVICE_NOT_CONNECTED 1167L +#define ERROR_NOT_FOUND 1168L +#define ERROR_NO_MATCH 1169L +#define ERROR_SET_NOT_FOUND 1170L +#define ERROR_POINT_NOT_FOUND 1171L +#define ERROR_NO_TRACKING_SERVICE 1172L +#define ERROR_NO_VOLUME_ID 1173L +#define ERROR_UNABLE_TO_REMOVE_REPLACED 1175L +#define ERROR_UNABLE_TO_MOVE_REPLACEMENT 1176L +#define ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 1177L +#define ERROR_JOURNAL_DELETE_IN_PROGRESS 1178L +#define ERROR_JOURNAL_NOT_ACTIVE 1179L +#define ERROR_POTENTIAL_FILE_FOUND 1180L +#define ERROR_JOURNAL_ENTRY_DELETED 1181L +#define ERROR_BAD_DEVICE 1200L +#define ERROR_CONNECTION_UNAVAIL 1201L +#define ERROR_DEVICE_ALREADY_REMEMBERED 1202L +#define ERROR_NO_NET_OR_BAD_PATH 1203L +#define ERROR_BAD_PROVIDER 1204L +#define ERROR_CANNOT_OPEN_PROFILE 1205L +#define ERROR_BAD_PROFILE 1206L +#define ERROR_NOT_CONTAINER 1207L +#define ERROR_EXTENDED_ERROR 1208L +#define ERROR_INVALID_GROUPNAME 1209L +#define ERROR_INVALID_COMPUTERNAME 1210L +#define ERROR_INVALID_EVENTNAME 1211L +#define ERROR_INVALID_DOMAINNAME 1212L +#define ERROR_INVALID_SERVICENAME 1213L +#define ERROR_INVALID_NETNAME 1214L +#define ERROR_INVALID_SHARENAME 1215L +#define ERROR_INVALID_PASSWORDNAME 1216L +#define ERROR_INVALID_MESSAGENAME 1217L +#define ERROR_INVALID_MESSAGEDEST 1218L +#define ERROR_SESSION_CREDENTIAL_CONFLICT 1219L +#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED 1220L +#define ERROR_DUP_DOMAINNAME 1221L +#define ERROR_NO_NETWORK 1222L +#define ERROR_CANCELLED 1223L +#define ERROR_USER_MAPPED_FILE 1224L +#define ERROR_CONNECTION_REFUSED 1225L +#define ERROR_GRACEFUL_DISCONNECT 1226L +#define ERROR_ADDRESS_ALREADY_ASSOCIATED 1227L +#define ERROR_ADDRESS_NOT_ASSOCIATED 1228L +#define ERROR_CONNECTION_INVALID 1229L +#define ERROR_CONNECTION_ACTIVE 1230L +#define ERROR_NETWORK_UNREACHABLE 1231L +#define ERROR_HOST_UNREACHABLE 1232L +#define ERROR_PROTOCOL_UNREACHABLE 1233L +#define ERROR_PORT_UNREACHABLE 1234L +#define ERROR_REQUEST_ABORTED 1235L +#define ERROR_CONNECTION_ABORTED 1236L +#define ERROR_RETRY 1237L +#define ERROR_CONNECTION_COUNT_LIMIT 1238L +#define ERROR_LOGIN_TIME_RESTRICTION 1239L +#define ERROR_LOGIN_WKSTA_RESTRICTION 1240L +#define ERROR_INCORRECT_ADDRESS 1241L +#define ERROR_ALREADY_REGISTERED 1242L +#define ERROR_SERVICE_NOT_FOUND 1243L +#define ERROR_NOT_AUTHENTICATED 1244L +#define ERROR_NOT_LOGGED_ON 1245L +#define ERROR_CONTINUE 1246L +#define ERROR_ALREADY_INITIALIZED 1247L +#define ERROR_NO_MORE_DEVICES 1248L +#define ERROR_NO_SUCH_SITE 1249L +#define ERROR_DOMAIN_CONTROLLER_EXISTS 1250L +#define ERROR_ONLY_IF_CONNECTED 1251L +#define ERROR_OVERRIDE_NOCHANGES 1252L +#define ERROR_BAD_USER_PROFILE 1253L +#define ERROR_NOT_SUPPORTED_ON_SBS 1254L +#define ERROR_SERVER_SHUTDOWN_IN_PROGRESS 1255L +#define ERROR_HOST_DOWN 1256L +#define ERROR_NON_ACCOUNT_SID 1257L +#define ERROR_NON_DOMAIN_SID 1258L +#define ERROR_APPHELP_BLOCK 1259L +#define ERROR_ACCESS_DISABLED_BY_POLICY 1260L +#define ERROR_REG_NAT_CONSUMPTION 1261L +#define ERROR_CSCSHARE_OFFLINE 1262L +#define ERROR_PKINIT_FAILURE 1263L +#define ERROR_SMARTCARD_SUBSYSTEM_FAILURE 1264L +#define ERROR_DOWNGRADE_DETECTED 1265L +#define SEC_E_SMARTCARD_CERT_REVOKED 1266L +#define SEC_E_ISSUING_CA_UNTRUSTED 1267L +#define SEC_E_REVOCATION_OFFLINE_C 1268L +#define SEC_E_PKINIT_CLIENT_FAILUR 1269L +#define SEC_E_SMARTCARD_CERT_EXPIRED 1270L +#define ERROR_MACHINE_LOCKED 1271L +#define ERROR_CALLBACK_SUPPLIED_INVALID_DATA 1273L +#define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED 1274L +#define ERROR_DRIVER_BLOCKED 1275L +#define ERROR_INVALID_IMPORT_OF_NON_DLL 1276L +#define ERROR_ACCESS_DISABLED_WEBBLADE 1277L +#define ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER 1278L +#define ERROR_RECOVERY_FAILURE 1279L +#define ERROR_ALREADY_FIBER 1280L +#define ERROR_ALREADY_THREAD 1281L +#define ERROR_STACK_BUFFER_OVERRUN 1282L +#define ERROR_PARAMETER_QUOTA_EXCEEDED 1283L +#define ERROR_DEBUGGER_INACTIVE 1284L +#define ERROR_NOT_ALL_ASSIGNED 1300L +#define ERROR_SOME_NOT_MAPPED 1301L +#define ERROR_NO_QUOTAS_FOR_ACCOUNT 1302L +#define ERROR_LOCAL_USER_SESSION_KEY 1303L +#define ERROR_NULL_LM_PASSWORD 1304L +#define ERROR_UNKNOWN_REVISION 1305L +#define ERROR_REVISION_MISMATCH 1306L +#define ERROR_INVALID_OWNER 1307L +#define ERROR_INVALID_PRIMARY_GROUP 1308L +#define ERROR_NO_IMPERSONATION_TOKEN 1309L +#define ERROR_CANT_DISABLE_MANDATORY 1310L +#define ERROR_NO_LOGON_SERVERS 1311L +#define ERROR_NO_SUCH_LOGON_SESSION 1312L +#define ERROR_NO_SUCH_PRIVILEGE 1313L +#define ERROR_PRIVILEGE_NOT_HELD 1314L +#define ERROR_INVALID_ACCOUNT_NAME 1315L +#define ERROR_USER_EXISTS 1316L +#define ERROR_NO_SUCH_USER 1317L +#define ERROR_GROUP_EXISTS 1318L +#define ERROR_NO_SUCH_GROUP 1319L +#define ERROR_MEMBER_IN_GROUP 1320L +#define ERROR_MEMBER_NOT_IN_GROUP 1321L +#define ERROR_LAST_ADMIN 1322L +#define ERROR_WRONG_PASSWORD 1323L +#define ERROR_ILL_FORMED_PASSWORD 1324L +#define ERROR_PASSWORD_RESTRICTION 1325L +#define ERROR_LOGON_FAILURE 1326L +#define ERROR_ACCOUNT_RESTRICTION 1327L +#define ERROR_INVALID_LOGON_HOURS 1328L +#define ERROR_INVALID_WORKSTATION 1329L +#define ERROR_PASSWORD_EXPIRED 1330L +#define ERROR_ACCOUNT_DISABLED 1331L +#define ERROR_NONE_MAPPED 1332L +#define ERROR_TOO_MANY_LUIDS_REQUESTED 1333L +#define ERROR_LUIDS_EXHAUSTED 1334L +#define ERROR_INVALID_SUB_AUTHORITY 1335L +#define ERROR_INVALID_ACL 1336L +#define ERROR_INVALID_SID 1337L +#define ERROR_INVALID_SECURITY_DESCR 1338L +#define ERROR_BAD_INHERITANCE_ACL 1340L +#define ERROR_SERVER_DISABLED 1341L +#define ERROR_SERVER_NOT_DISABLED 1342L +#define ERROR_INVALID_ID_AUTHORITY 1343L +#define ERROR_ALLOTTED_SPACE_EXCEEDED 1344L +#define ERROR_INVALID_GROUP_ATTRIBUTES 1345L +#define ERROR_BAD_IMPERSONATION_LEVEL 1346L +#define ERROR_CANT_OPEN_ANONYMOUS 1347L +#define ERROR_BAD_VALIDATION_CLASS 1348L +#define ERROR_BAD_TOKEN_TYPE 1349L +#define ERROR_NO_SECURITY_ON_OBJECT 1350L +#define ERROR_CANT_ACCESS_DOMAIN_INFO 1351L +#define ERROR_INVALID_SERVER_STATE 1352L +#define ERROR_INVALID_DOMAIN_STATE 1353L +#define ERROR_INVALID_DOMAIN_ROLE 1354L +#define ERROR_NO_SUCH_DOMAIN 1355L +#define ERROR_DOMAIN_EXISTS 1356L +#define ERROR_DOMAIN_LIMIT_EXCEEDED 1357L +#define ERROR_INTERNAL_DB_CORRUPTION 1358L +#define ERROR_INTERNAL_ERROR 1359L +#define ERROR_GENERIC_NOT_MAPPED 1360L +#define ERROR_BAD_DESCRIPTOR_FORMAT 1361L +#define ERROR_NOT_LOGON_PROCESS 1362L +#define ERROR_LOGON_SESSION_EXISTS 1363L +#define ERROR_NO_SUCH_PACKAGE 1364L +#define ERROR_BAD_LOGON_SESSION_STATE 1365L +#define ERROR_LOGON_SESSION_COLLISION 1366L +#define ERROR_INVALID_LOGON_TYPE 1367L +#define ERROR_CANNOT_IMPERSONATE 1368L +#define ERROR_RXACT_INVALID_STATE 1369L +#define ERROR_RXACT_COMMIT_FAILURE 1370L +#define ERROR_SPECIAL_ACCOUNT 1371L +#define ERROR_SPECIAL_GROUP 1372L +#define ERROR_SPECIAL_USER 1373L +#define ERROR_MEMBERS_PRIMARY_GROUP 1374L +#define ERROR_TOKEN_ALREADY_IN_USE 1375L +#define ERROR_NO_SUCH_ALIAS 1376L +#define ERROR_MEMBER_NOT_IN_ALIAS 1377L +#define ERROR_MEMBER_IN_ALIAS 1378L +#define ERROR_ALIAS_EXISTS 1379L +#define ERROR_LOGON_NOT_GRANTED 1380L +#define ERROR_TOO_MANY_SECRETS 1381L +#define ERROR_SECRET_TOO_LONG 1382L +#define ERROR_INTERNAL_DB_ERROR 1383L +#define ERROR_TOO_MANY_CONTEXT_IDS 1384L +#define ERROR_LOGON_TYPE_NOT_GRANTED 1385L +#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED 1386L +#define ERROR_NO_SUCH_MEMBER 1387L +#define ERROR_INVALID_MEMBER 1388L +#define ERROR_TOO_MANY_SIDS 1389L +#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED 1390L +#define ERROR_NO_INHERITANCE 1391L +#define ERROR_FILE_CORRUPT 1392L +#define ERROR_DISK_CORRUPT 1393L +#define ERROR_NO_USER_SESSION_KEY 1394L +#define ERROR_LICENSE_QUOTA_EXCEEDED 1395L +#define ERROR_WRONG_TARGET_NAME 1396L +#define ERROR_MUTUAL_AUTH_FAILED 1397L +#define ERROR_TIME_SKEW 1398L +#define ERROR_CURRENT_DOMAIN_NOT_ALLOWED 1399L +#define ERROR_INVALID_WINDOW_HANDLE 1400L +#define ERROR_INVALID_MENU_HANDLE 1401L +#define ERROR_INVALID_CURSOR_HANDLE 1402L +#define ERROR_INVALID_ACCEL_HANDLE 1403L +#define ERROR_INVALID_HOOK_HANDLE 1404L +#define ERROR_INVALID_DWP_HANDLE 1405L +#define ERROR_TLW_WITH_WSCHILD 1406L +#define ERROR_CANNOT_FIND_WND_CLASS 1407L +#define ERROR_WINDOW_OF_OTHER_THREAD 1408L +#define ERROR_HOTKEY_ALREADY_REGISTERED 1409L +#define ERROR_CLASS_ALREADY_EXISTS 1410L +#define ERROR_CLASS_DOES_NOT_EXIST 1411L +#define ERROR_CLASS_HAS_WINDOWS 1412L +#define ERROR_INVALID_INDEX 1413L +#define ERROR_INVALID_ICON_HANDLE 1414L +#define ERROR_PRIVATE_DIALOG_INDEX 1415L +#define ERROR_LISTBOX_ID_NOT_FOUND 1416L +#define ERROR_NO_WILDCARD_CHARACTERS 1417L +#define ERROR_CLIPBOARD_NOT_OPEN 1418L +#define ERROR_HOTKEY_NOT_REGISTERED 1419L +#define ERROR_WINDOW_NOT_DIALOG 1420L +#define ERROR_CONTROL_ID_NOT_FOUND 1421L +#define ERROR_INVALID_COMBOBOX_MESSAGE 1422L +#define ERROR_WINDOW_NOT_COMBOBOX 1423L +#define ERROR_INVALID_EDIT_HEIGHT 1424L +#define ERROR_DC_NOT_FOUND 1425L +#define ERROR_INVALID_HOOK_FILTER 1426L +#define ERROR_INVALID_FILTER_PROC 1427L +#define ERROR_HOOK_NEEDS_HMOD 1428L +#define ERROR_GLOBAL_ONLY_HOOK 1429L +#define ERROR_JOURNAL_HOOK_SET 1430L +#define ERROR_HOOK_NOT_INSTALLED 1431L +#define ERROR_INVALID_LB_MESSAGE 1432L +#define ERROR_SETCOUNT_ON_BAD_LB 1433L +#define ERROR_LB_WITHOUT_TABSTOPS 1434L +#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD 1435L +#define ERROR_CHILD_WINDOW_MENU 1436L +#define ERROR_NO_SYSTEM_MENU 1437L +#define ERROR_INVALID_MSGBOX_STYLE 1438L +#define ERROR_INVALID_SPI_VALUE 1439L +#define ERROR_SCREEN_ALREADY_LOCKED 1440L +#define ERROR_HWNDS_HAVE_DIFF_PARENT 1441L +#define ERROR_NOT_CHILD_WINDOW 1442L +#define ERROR_INVALID_GW_COMMAND 1443L +#define ERROR_INVALID_THREAD_ID 1444L +#define ERROR_NON_MDICHILD_WINDOW 1445L +#define ERROR_POPUP_ALREADY_ACTIVE 1446L +#define ERROR_NO_SCROLLBARS 1447L +#define ERROR_INVALID_SCROLLBAR_RANGE 1448L +#define ERROR_INVALID_SHOWWIN_COMMAND 1449L +#define ERROR_NO_SYSTEM_RESOURCES 1450L +#define ERROR_NONPAGED_SYSTEM_RESOURCES 1451L +#define ERROR_PAGED_SYSTEM_RESOURCES 1452L +#define ERROR_WORKING_SET_QUOTA 1453L +#define ERROR_PAGEFILE_QUOTA 1454L +#define ERROR_COMMITMENT_LIMIT 1455L +#define ERROR_MENU_ITEM_NOT_FOUND 1456L +#define ERROR_INVALID_KEYBOARD_HANDLE 1457L +#define ERROR_HOOK_TYPE_NOT_ALLOWED 1458L +#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION 1459L +#define ERROR_TIMEOUT 1460L +#define ERROR_INVALID_MONITOR_HANDLE 1461L +#define ERROR_EVENTLOG_FILE_CORRUPT 1500L +#define ERROR_EVENTLOG_CANT_START 1501L +#define ERROR_LOG_FILE_FULL 1502L +#define ERROR_EVENTLOG_FILE_CHANGED 1503L +#define ERROR_INSTALL_SERVICE_FAILURE 1601L +#define ERROR_INSTALL_USEREXIT 1602L +#define ERROR_INSTALL_FAILURE 1603L +#define ERROR_INSTALL_SUSPEND 1604L +#define ERROR_UNKNOWN_PRODUCT 1605L +#define ERROR_UNKNOWN_FEATURE 1606L +#define ERROR_UNKNOWN_COMPONENT 1607L +#define ERROR_UNKNOWN_PROPERTY 1608L +#define ERROR_INVALID_HANDLE_STATE 1609L +#define ERROR_BAD_CONFIGURATION 1610L +#define ERROR_INDEX_ABSENT 1611L +#define ERROR_INSTALL_SOURCE_ABSENT 1612L +#define ERROR_INSTALL_PACKAGE_VERSION 1613L +#define ERROR_PRODUCT_UNINSTALLED 1614L +#define ERROR_BAD_QUERY_SYNTAX 1615L +#define ERROR_INVALID_FIELD 1616L +#define ERROR_DEVICE_REMOVED 1617L +#define ERROR_INSTALL_ALREADY_RUNNING 1618L +#define ERROR_INSTALL_PACKAGE_OPEN_FAILED 1619L +#define ERROR_INSTALL_PACKAGE_INVALID 1620L +#define ERROR_INSTALL_UI_FAILURE 1621L +#define ERROR_INSTALL_LOG_FAILURE 1622L +#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623L +#define ERROR_INSTALL_TRANSFORM_FAILURE 1624L +#define ERROR_INSTALL_PACKAGE_REJECTED 1625L +#define ERROR_FUNCTION_NOT_CALLED 1626L +#define ERROR_FUNCTION_FAILED 1627L +#define ERROR_INVALID_TABLE 1628L +#define ERROR_DATATYPE_MISMATCH 1629L +#define ERROR_UNSUPPORTED_TYPE 1630L +#define ERROR_CREATE_FAILED 1631L +#define ERROR_INSTALL_TEMP_UNWRITABLE 1632L +#define ERROR_INSTALL_PLATFORM_UNSUPPORTED 1633L +#define ERROR_INSTALL_NOTUSED 1634L +#define ERROR_PATCH_PACKAGE_OPEN_FAILED 1635L +#define ERROR_PATCH_PACKAGE_INVALID 1636L +#define ERROR_PATCH_PACKAGE_UNSUPPORTED 1637L +#define ERROR_PRODUCT_VERSION 1638L +#define ERROR_INVALID_COMMAND_LINE 1639L +#define ERROR_INSTALL_REMOTE_DISALLOWED 1640L +#define ERROR_SUCCESS_REBOOT_INITIATED 1641L +#define ERROR_PATCH_TARGET_NOT_FOUND 1642L +#define ERROR_PATCH_PACKAGE_REJECTED 1643L +#define ERROR_INSTALL_TRANSFORM_REJECTED 1644L +#define ERROR_INSTALL_REMOTE_PROHIBITED 1645L +#define RPC_S_INVALID_STRING_BINDING 1700L +#define RPC_S_WRONG_KIND_OF_BINDING 1701L +#define RPC_S_INVALID_BINDING 1702L +#define RPC_S_PROTSEQ_NOT_SUPPORTED 1703L +#define RPC_S_INVALID_RPC_PROTSEQ 1704L +#define RPC_S_INVALID_STRING_UUID 1705L +#define RPC_S_INVALID_ENDPOINT_FORMAT 1706L +#define RPC_S_INVALID_NET_ADDR 1707L +#define RPC_S_NO_ENDPOINT_FOUND 1708L +#define RPC_S_INVALID_TIMEOUT 1709L +#define RPC_S_OBJECT_NOT_FOUND 1710L +#define RPC_S_ALREADY_REGISTERED 1711L +#define RPC_S_TYPE_ALREADY_REGISTERED 1712L +#define RPC_S_ALREADY_LISTENING 1713L +#define RPC_S_NO_PROTSEQS_REGISTERED 1714L +#define RPC_S_NOT_LISTENING 1715L +#define RPC_S_UNKNOWN_MGR_TYPE 1716L +#define RPC_S_UNKNOWN_IF 1717L +#define RPC_S_NO_BINDINGS 1718L +#define RPC_S_NO_PROTSEQS 1719L +#define RPC_S_CANT_CREATE_ENDPOINT 1720L +#define RPC_S_OUT_OF_RESOURCES 1721L +#define RPC_S_SERVER_UNAVAILABLE 1722L +#define RPC_S_SERVER_TOO_BUSY 1723L +#define RPC_S_INVALID_NETWORK_OPTIONS 1724L +#define RPC_S_NO_CALL_ACTIVE 1725L +#define RPC_S_CALL_FAILED 1726L +#define RPC_S_CALL_FAILED_DNE 1727L +#define RPC_S_PROTOCOL_ERROR 1728L +#define RPC_S_UNSUPPORTED_TRANS_SYN 1730L +#define RPC_S_UNSUPPORTED_TYPE 1732L +#define RPC_S_INVALID_TAG 1733L +#define RPC_S_INVALID_BOUND 1734L +#define RPC_S_NO_ENTRY_NAME 1735L +#define RPC_S_INVALID_NAME_SYNTAX 1736L +#define RPC_S_UNSUPPORTED_NAME_SYNTAX 1737L +#define RPC_S_UUID_NO_ADDRESS 1739L +#define RPC_S_DUPLICATE_ENDPOINT 1740L +#define RPC_S_UNKNOWN_AUTHN_TYPE 1741L +#define RPC_S_MAX_CALLS_TOO_SMALL 1742L +#define RPC_S_STRING_TOO_LONG 1743L +#define RPC_S_PROTSEQ_NOT_FOUND 1744L +#define RPC_S_PROCNUM_OUT_OF_RANGE 1745L +#define RPC_S_BINDING_HAS_NO_AUTH 1746L +#define RPC_S_UNKNOWN_AUTHN_SERVICE 1747L +#define RPC_S_UNKNOWN_AUTHN_LEVEL 1748L +#define RPC_S_INVALID_AUTH_IDENTITY 1749L +#define RPC_S_UNKNOWN_AUTHZ_SERVICE 1750L +#define EPT_S_INVALID_ENTRY 1751L +#define EPT_S_CANT_PERFORM_OP 1752L +#define EPT_S_NOT_REGISTERED 1753L +#define RPC_S_NOTHING_TO_EXPORT 1754L +#define RPC_S_INCOMPLETE_NAME 1755L +#define RPC_S_INVALID_VERS_OPTION 1756L +#define RPC_S_NO_MORE_MEMBERS 1757L +#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 1758L +#define RPC_S_INTERFACE_NOT_FOUND 1759L +#define RPC_S_ENTRY_ALREADY_EXISTS 1760L +#define RPC_S_ENTRY_NOT_FOUND 1761L +#define RPC_S_NAME_SERVICE_UNAVAILABLE 1762L +#define RPC_S_INVALID_NAF_ID 1763L +#define RPC_S_CANNOT_SUPPORT 1764L +#define RPC_S_NO_CONTEXT_AVAILABLE 1765L +#define RPC_S_INTERNAL_ERROR 1766L +#define RPC_S_ZERO_DIVIDE 1767L +#define RPC_S_ADDRESS_ERROR 1768L +#define RPC_S_FP_DIV_ZERO 1769L +#define RPC_S_FP_UNDERFLOW 1770L +#define RPC_S_FP_OVERFLOW 1771L +#define RPC_X_NO_MORE_ENTRIES 1772L +#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 1773L +#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 1774L +#define RPC_X_SS_IN_NULL_CONTEXT 1775L +#define RPC_X_SS_CONTEXT_DAMAGED 1777L +#define RPC_X_SS_HANDLES_MISMATCH 1778L +#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 1779L +#define RPC_X_NULL_REF_POINTER 1780L +#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 1781L +#define RPC_X_BYTE_COUNT_TOO_SMALL 1782L +#define RPC_X_BAD_STUB_DATA 1783L +#define ERROR_INVALID_USER_BUFFER 1784L +#define ERROR_UNRECOGNIZED_MEDIA 1785L +#define ERROR_NO_TRUST_LSA_SECRET 1786L +#define ERROR_NO_TRUST_SAM_ACCOUNT 1787L +#define ERROR_TRUSTED_DOMAIN_FAILURE 1788L +#define ERROR_TRUSTED_RELATIONSHIP_FAILURE 1789L +#define ERROR_TRUST_FAILURE 1790L +#define RPC_S_CALL_IN_PROGRESS 1791L +#define ERROR_NETLOGON_NOT_STARTED 1792L +#define ERROR_ACCOUNT_EXPIRED 1793L +#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES 1794L +#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED 1795L +#define ERROR_UNKNOWN_PORT 1796L +#define ERROR_UNKNOWN_PRINTER_DRIVER 1797L +#define ERROR_UNKNOWN_PRINTPROCESSOR 1798L +#define ERROR_INVALID_SEPARATOR_FILE 1799L +#define ERROR_INVALID_PRIORITY 1800L +#define ERROR_INVALID_PRINTER_NAME 1801L +#define ERROR_PRINTER_ALREADY_EXISTS 1802L +#define ERROR_INVALID_PRINTER_COMMAND 1803L +#define ERROR_INVALID_DATATYPE 1804L +#define ERROR_INVALID_ENVIRONMENT 1805L +#define RPC_S_NO_MORE_BINDINGS 1806L +#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 1807L +#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT 1808L +#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT 1809L +#define ERROR_DOMAIN_TRUST_INCONSISTENT 1810L +#define ERROR_SERVER_HAS_OPEN_HANDLES 1811L +#define ERROR_RESOURCE_DATA_NOT_FOUND 1812L +#define ERROR_RESOURCE_TYPE_NOT_FOUND 1813L +#define ERROR_RESOURCE_NAME_NOT_FOUND 1814L +#define ERROR_RESOURCE_LANG_NOT_FOUND 1815L +#define ERROR_NOT_ENOUGH_QUOTA 1816L +#define RPC_S_NO_INTERFACES 1817L +#define RPC_S_CALL_CANCELLED 1818L +#define RPC_S_BINDING_INCOMPLETE 1819L +#define RPC_S_COMM_FAILURE 1820L +#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 1821L +#define RPC_S_NO_PRINC_NAME 1822L +#define RPC_S_NOT_RPC_ERROR 1823L +#define RPC_S_UUID_LOCAL_ONLY 1824L +#define RPC_S_SEC_PKG_ERROR 1825L +#define RPC_S_NOT_CANCELLED 1826L +#define RPC_X_INVALID_ES_ACTION 1827L +#define RPC_X_WRONG_ES_VERSION 1828L +#define RPC_X_WRONG_STUB_VERSION 1829L +#define RPC_X_INVALID_PIPE_OBJECT 1830L +#define RPC_X_WRONG_PIPE_ORDER 1831L +#define RPC_X_WRONG_PIPE_VERSION 1832L +#define RPC_S_GROUP_MEMBER_NOT_FOUND 1898L +#define EPT_S_CANT_CREATE 1899L +#define RPC_S_INVALID_OBJECT 1900L +#define ERROR_INVALID_TIME 1901L +#define ERROR_INVALID_FORM_NAME 1902L +#define ERROR_INVALID_FORM_SIZE 1903L +#define ERROR_ALREADY_WAITING 1904L +#define ERROR_PRINTER_DELETED 1905L +#define ERROR_INVALID_PRINTER_STATE 1906L +#define ERROR_PASSWORD_MUST_CHANGE 1907L +#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND 1908L +#define ERROR_ACCOUNT_LOCKED_OUT 1909L +#define OR_INVALID_OXID 1910L +#define OR_INVALID_OID 1911L +#define OR_INVALID_SET 1912L +#define RPC_S_SEND_INCOMPLETE 1913L +#define RPC_S_INVALID_ASYNC_HANDLE 1914L +#define RPC_S_INVALID_ASYNC_CALL 1915L +#define RPC_X_PIPE_CLOSED 1916L +#define RPC_X_PIPE_DISCIPLINE_ERROR 1917L +#define RPC_X_PIPE_EMPTY 1918L +#define ERROR_NO_SITENAME 1919L +#define ERROR_CANT_ACCESS_FILE 1920L +#define ERROR_CANT_RESOLVE_FILENAME 1921L +#define RPC_S_ENTRY_TYPE_MISMATCH 1922L +#define RPC_S_NOT_ALL_OBJS_EXPORTED 1923L +#define RPC_S_INTERFACE_NOT_EXPORTED 1924L +#define RPC_S_PROFILE_NOT_ADDED 1925L +#define RPC_S_PRF_ELT_NOT_ADDED 1926L +#define RPC_S_PRF_ELT_NOT_REMOVED 1927L +#define RPC_S_GRP_ELT_NOT_ADDED 1928L +#define RPC_S_GRP_ELT_NOT_REMOVED 1929L +#define ERROR_KM_DRIVER_BLOCKED 1930L +#define ERROR_CONTEXT_EXPIRED 1931L +#define ERROR_PER_USER_TRUST_QUOTA_EXCEEDED 1932L +#define ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED 1933L +#define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED 1934L +#define ERROR_INVALID_PIXEL_FORMAT 2000L +#define ERROR_BAD_DRIVER 2001L +#define ERROR_INVALID_WINDOW_STYLE 2002L +#define ERROR_METAFILE_NOT_SUPPORTED 2003L +#define ERROR_TRANSFORM_NOT_SUPPORTED 2004L +#define ERROR_CLIPPING_NOT_SUPPORTED 2005L +#define ERROR_INVALID_CMM 2010L +#define ERROR_INVALID_PROFILE 2011L +#define ERROR_TAG_NOT_FOUND 2012L +#define ERROR_TAG_NOT_PRESENT 2013L +#define ERROR_DUPLICATE_TAG 2014L +#define ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE 2015L +#define ERROR_PROFILE_NOT_FOUND 2016L +#define ERROR_INVALID_COLORSPACE 2017L +#define ERROR_ICM_NOT_ENABLED 2018L +#define ERROR_DELETING_ICM_XFORM 2019L +#define ERROR_INVALID_TRANSFORM 2020L +#define ERROR_COLORSPACE_MISMATCH 2021L +#define ERROR_INVALID_COLORINDEX 2022L +#define ERROR_CONNECTED_OTHER_PASSWORD 2108L +#define ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT 2109L +#define ERROR_BAD_USERNAME 2202L +#define ERROR_NOT_CONNECTED 2250L +#define ERROR_OPEN_FILES 2401L +#define ERROR_ACTIVE_CONNECTIONS 2402L +#define ERROR_DEVICE_IN_USE 2404L +#define ERROR_UNKNOWN_PRINT_MONITOR 3000L +#define ERROR_PRINTER_DRIVER_IN_USE 3001L +#define ERROR_SPOOL_FILE_NOT_FOUND 3002L +#define ERROR_SPL_NO_STARTDOC 3003L +#define ERROR_SPL_NO_ADDJOB 3004L +#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED 3005L +#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED 3006L +#define ERROR_INVALID_PRINT_MONITOR 3007L +#define ERROR_PRINT_MONITOR_IN_USE 3008L +#define ERROR_PRINTER_HAS_JOBS_QUEUED 3009L +#define ERROR_SUCCESS_REBOOT_REQUIRED 3010L +#define ERROR_SUCCESS_RESTART_REQUIRED 3011L +#define ERROR_PRINTER_NOT_FOUND 3012L +#define ERROR_PRINTER_DRIVER_WARNED 3013L +#define ERROR_PRINTER_DRIVER_BLOCKED 3014L +#define ERROR_WINS_INTERNAL 4000L +#define ERROR_CAN_NOT_DEL_LOCAL_WINS 4001L +#define ERROR_STATIC_INIT 4002L +#define ERROR_INC_BACKUP 4003L +#define ERROR_FULL_BACKUP 4004L +#define ERROR_REC_NON_EXISTENT 4005L +#define ERROR_RPL_NOT_ALLOWED 4006L +#define ERROR_DHCP_ADDRESS_CONFLICT 4100L +#define ERROR_WMI_GUID_NOT_FOUND 4200L +#define ERROR_WMI_INSTANCE_NOT_FOUND 4201L +#define ERROR_WMI_ITEMID_NOT_FOUND 4202L +#define ERROR_WMI_TRY_AGAIN 4203L +#define ERROR_WMI_DP_NOT_FOUND 4204L +#define ERROR_WMI_UNRESOLVED_INSTANCE_REF 4205L +#define ERROR_WMI_ALREADY_ENABLED 4206L +#define ERROR_WMI_GUID_DISCONNECTED 4207L +#define ERROR_WMI_SERVER_UNAVAILABLE 4208L +#define ERROR_WMI_DP_FAILED 4209L +#define ERROR_WMI_INVALID_MOF 4210L +#define ERROR_WMI_INVALID_REGINFO 4211L +#define ERROR_WMI_ALREADY_DISABLED 4212L +#define ERROR_WMI_READ_ONLY 4213L +#define ERROR_WMI_SET_FAILURE 4214L +#define ERROR_INVALID_MEDIA 4300L +#define ERROR_INVALID_LIBRARY 4301L +#define ERROR_INVALID_MEDIA_POOL 4302L +#define ERROR_DRIVE_MEDIA_MISMATCH 4303L +#define ERROR_MEDIA_OFFLINE 4304L +#define ERROR_LIBRARY_OFFLINE 4305L +#define ERROR_EMPTY 4306L +#define ERROR_NOT_EMPTY 4307L +#define ERROR_MEDIA_UNAVAILABLE 4308L +#define ERROR_RESOURCE_DISABLED 4309L +#define ERROR_INVALID_CLEANER 4310L +#define ERROR_UNABLE_TO_CLEAN 4311L +#define ERROR_OBJECT_NOT_FOUND 4312L +#define ERROR_DATABASE_FAILURE 4313L +#define ERROR_DATABASE_FULL 4314L +#define ERROR_MEDIA_INCOMPATIBLE 4315L +#define ERROR_RESOURCE_NOT_PRESENT 4316L +#define ERROR_INVALID_OPERATION 4317L +#define ERROR_MEDIA_NOT_AVAILABLE 4318L +#define ERROR_DEVICE_NOT_AVAILABLE 4319L +#define ERROR_REQUEST_REFUSED 4320L +#define ERROR_INVALID_DRIVE_OBJECT 4321L +#define ERROR_LIBRARY_FULL 4322L +#define ERROR_MEDIUM_NOT_ACCESSIBLE 4323L +#define ERROR_UNABLE_TO_LOAD_MEDIUM 4324L +#define ERROR_UNABLE_TO_INVENTORY_DRIVE 4325L +#define ERROR_UNABLE_TO_INVENTORY_SLOT 4326L +#define ERROR_UNABLE_TO_INVENTORY_TRANSPORT 4327L +#define ERROR_TRANSPORT_FULL 4328L +#define ERROR_CONTROLLING_IEPORT 4329L +#define ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA 4330L +#define ERROR_CLEANER_SLOT_SET 4331L +#define ERROR_CLEANER_SLOT_NOT_SET 4332L +#define ERROR_CLEANER_CARTRIDGE_SPENT 4333L +#define ERROR_UNEXPECTED_OMID 4334L +#define ERROR_CANT_DELETE_LAST_ITEM 4335L +#define ERROR_MESSAGE_EXCEEDS_MAX_SIZE 4336L +#define ERROR_VOLUME_CONTAINS_SYS_FILES 4337L +#define ERROR_INDIGENOUS_TYPE 4338L +#define ERROR_NO_SUPPORTING_DRIVES 4339L +#define ERROR_CLEANER_CARTRIDGE_INSTALLED 4340L +#define ERROR_FILE_OFFLINE 4350L +#define ERROR_REMOTE_STORAGE_NOT_ACTIVE 4351L +#define ERROR_REMOTE_STORAGE_MEDIA_ERROR 4352L +#define ERROR_NOT_A_REPARSE_POINT 4390L +#define ERROR_REPARSE_ATTRIBUTE_CONFLICT 4391L +#define ERROR_INVALID_REPARSE_DATA 4392L +#define ERROR_REPARSE_TAG_INVALID 4393L +#define ERROR_REPARSE_TAG_MISMATCH 4394L +#define ERROR_VOLUME_NOT_SIS_ENABLED 4500L +#define ERROR_DEPENDENT_RESOURCE_EXISTS 5001L +#define ERROR_DEPENDENCY_NOT_FOUND 5002L +#define ERROR_DEPENDENCY_ALREADY_EXISTS 5003L +#define ERROR_RESOURCE_NOT_ONLINE 5004L +#define ERROR_HOST_NODE_NOT_AVAILABLE 5005L +#define ERROR_RESOURCE_NOT_AVAILABLE 5006L +#define ERROR_RESOURCE_NOT_FOUND 5007L +#define ERROR_SHUTDOWN_CLUSTER 5008L +#define ERROR_CANT_EVICT_ACTIVE_NODE 5009L +#define ERROR_OBJECT_ALREADY_EXISTS 5010L +#define ERROR_OBJECT_IN_LIST 5011L +#define ERROR_GROUP_NOT_AVAILABLE 5012L +#define ERROR_GROUP_NOT_FOUND 5013L +#define ERROR_GROUP_NOT_ONLINE 5014L +#define ERROR_HOST_NODE_NOT_RESOURCE_OWNER 5015L +#define ERROR_HOST_NODE_NOT_GROUP_OWNER 5016L +#define ERROR_RESMON_CREATE_FAILED 5017L +#define ERROR_RESMON_ONLINE_FAILED 5018L +#define ERROR_RESOURCE_ONLINE 5019L +#define ERROR_QUORUM_RESOURCE 5020L +#define ERROR_NOT_QUORUM_CAPABLE 5021L +#define ERROR_CLUSTER_SHUTTING_DOWN 5022L +#define ERROR_INVALID_STATE 5023L +#define ERROR_RESOURCE_PROPERTIES_STORED 5024L +#define ERROR_NOT_QUORUM_CLASS 5025L +#define ERROR_CORE_RESOURCE 5026L +#define ERROR_QUORUM_RESOURCE_ONLINE_FAILED 5027L +#define ERROR_QUORUMLOG_OPEN_FAILED 5028L +#define ERROR_CLUSTERLOG_CORRUPT 5029L +#define ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE 5030L +#define ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE 5031L +#define ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND 5032L +#define ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE 5033L +#define ERROR_QUORUM_OWNER_ALIVE 5034L +#define ERROR_NETWORK_NOT_AVAILABLE 5035L +#define ERROR_NODE_NOT_AVAILABLE 5036L +#define ERROR_ALL_NODES_NOT_AVAILABLE 5037L +#define ERROR_RESOURCE_FAILED 5038L +#define ERROR_CLUSTER_INVALID_NODE 5039L +#define ERROR_CLUSTER_NODE_EXISTS 5040L +#define ERROR_CLUSTER_JOIN_IN_PROGRESS 5041L +#define ERROR_CLUSTER_NODE_NOT_FOUND 5042L +#define ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND 5043L +#define ERROR_CLUSTER_NETWORK_EXISTS 5044L +#define ERROR_CLUSTER_NETWORK_NOT_FOUND 5045L +#define ERROR_CLUSTER_NETINTERFACE_EXISTS 5046L +#define ERROR_CLUSTER_NETINTERFACE_NOT_FOUND 5047L +#define ERROR_CLUSTER_INVALID_REQUEST 5048L +#define ERROR_CLUSTER_INVALID_NETWORK_PROVIDER 5049L +#define ERROR_CLUSTER_NODE_DOWN 5050L +#define ERROR_CLUSTER_NODE_UNREACHABLE 5051L +#define ERROR_CLUSTER_NODE_NOT_MEMBER 5052L +#define ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS 5053L +#define ERROR_CLUSTER_INVALID_NETWORK 5054L +#define ERROR_CLUSTER_NODE_UP 5056L +#define ERROR_CLUSTER_IPADDR_IN_USE 5057L +#define ERROR_CLUSTER_NODE_NOT_PAUSED 5058L +#define ERROR_CLUSTER_NO_SECURITY_CONTEXT 5059L +#define ERROR_CLUSTER_NETWORK_NOT_INTERNAL 5060L +#define ERROR_CLUSTER_NODE_ALREADY_UP 5061L +#define ERROR_CLUSTER_NODE_ALREADY_DOWN 5062L +#define ERROR_CLUSTER_NETWORK_ALREADY_ONLINE 5063L +#define ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE 5064L +#define ERROR_CLUSTER_NODE_ALREADY_MEMBER 5065L +#define ERROR_CLUSTER_LAST_INTERNAL_NETWORK 5066L +#define ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS 5067L +#define ERROR_INVALID_OPERATION_ON_QUORUM 5068L +#define ERROR_DEPENDENCY_NOT_ALLOWED 5069L +#define ERROR_CLUSTER_NODE_PAUSED 5070L +#define ERROR_NODE_CANT_HOST_RESOURCE 5071L +#define ERROR_CLUSTER_NODE_NOT_READY 5072L +#define ERROR_CLUSTER_NODE_SHUTTING_DOWN 5073L +#define ERROR_CLUSTER_JOIN_ABORTED 5074L +#define ERROR_CLUSTER_INCOMPATIBLE_VERSIONS 5075L +#define ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED 5076L +#define ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED 5077L +#define ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND 5078L +#define ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED 5079L +#define ERROR_CLUSTER_RESNAME_NOT_FOUND 5080L +#define ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED 5081L +#define ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST 5082L +#define ERROR_CLUSTER_DATABASE_SEQMISMATCH 5083L +#define ERROR_RESMON_INVALID_STATE 5084L +#define ERROR_CLUSTER_GUM_NOT_LOCKER 5085L +#define ERROR_QUORUM_DISK_NOT_FOUND 5086L +#define ERROR_DATABASE_BACKUP_CORRUPT 5087L +#define ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT 5088L +#define ERROR_RESOURCE_PROPERTY_UNCHANGEABLE 5089L +#define ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE 5890L +#define ERROR_CLUSTER_QUORUMLOG_NOT_FOUND 5891L +#define ERROR_CLUSTER_MEMBERSHIP_HALT 5892L +#define ERROR_CLUSTER_INSTANCE_ID_MISMATCH 5893L +#define ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP 5894L +#define ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH 5895L +#define ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP 5896L +#define ERROR_CLUSTER_PARAMETER_MISMATCH 5897L +#define ERROR_NODE_CANNOT_BE_CLUSTERED 5898L +#define ERROR_CLUSTER_WRONG_OS_VERSION 5899L +#define ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME 5900L +#define ERROR_CLUSCFG_ALREADY_COMMITTED 5901L +#define ERROR_CLUSCFG_ROLLBACK_FAILED 5902L +#define ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT 5903L +#define ERROR_CLUSTER_OLD_VERSION 5904L +#define ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME 5905L +#define ERROR_ENCRYPTION_FAILED 6000L +#define ERROR_DECRYPTION_FAILED 6001L +#define ERROR_FILE_ENCRYPTED 6002L +#define ERROR_NO_RECOVERY_POLICY 6003L +#define ERROR_NO_EFS 6004L +#define ERROR_WRONG_EFS 6005L +#define ERROR_NO_USER_KEYS 6006L +#define ERROR_FILE_NOT_ENCRYPTED 6007L +#define ERROR_NOT_EXPORT_FORMAT 6008L +#define ERROR_FILE_READ_ONLY 6009L +#define ERROR_DIR_EFS_DISALLOWED 6010L +#define ERROR_EFS_SERVER_NOT_TRUSTED 6011L +#define ERROR_BAD_RECOVERY_POLICY 6012L +#define ERROR_EFS_ALG_BLOB_TOO_BIG 6013L +#define ERROR_VOLUME_NOT_SUPPORT_EFS 6014L +#define ERROR_EFS_DISABLED 6015L +#define ERROR_EFS_VERSION_NOT_SUPPORT 6016L +#define ERROR_NO_BROWSER_SERVERS_FOUND 6118L +#define SCHED_E_SERVICE_NOT_LOCALSYSTEM 6200L + +#define ERROR_CTX_WINSTATION_NAME_INVALID 7001L +#define ERROR_CTX_INVALID_PD 7002L +#define ERROR_CTX_PD_NOT_FOUND 7003L +#define ERROR_CTX_WD_NOT_FOUND 7004L +#define ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY 7005L +#define ERROR_CTX_SERVICE_NAME_COLLISION 7006L +#define ERROR_CTX_CLOSE_PENDING 7007L +#define ERROR_CTX_NO_OUTBUF 7008L +#define ERROR_CTX_MODEM_INF_NOT_FOUND 7009L +#define ERROR_CTX_INVALID_MODEMNAME 7010L +#define ERROR_CTX_MODEM_RESPONSE_ERROR 7011L +#define ERROR_CTX_MODEM_RESPONSE_TIMEOUT 7012L +#define ERROR_CTX_MODEM_RESPONSE_NO_CARRIER 7013L +#define ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE 7014L +#define ERROR_CTX_MODEM_RESPONSE_BUSY 7015L +#define ERROR_CTX_MODEM_RESPONSE_VOICE 7016L +#define ERROR_CTX_TD_ERROR 7017L +#define ERROR_CTX_WINSTATION_NOT_FOUND 7022L +#define ERROR_CTX_WINSTATION_ALREADY_EXISTS 7023L +#define ERROR_CTX_WINSTATION_BUSY 7024L +#define ERROR_CTX_BAD_VIDEO_MODE 7025L +#define ERROR_CTX_GRAPHICS_INVALID 7035L +#define ERROR_CTX_LOGON_DISABLED 7037L +#define ERROR_CTX_NOT_CONSOLE 7038L +#define ERROR_CTX_CLIENT_QUERY_TIMEOUT 7040L +#define ERROR_CTX_CONSOLE_DISCONNECT 7041L +#define ERROR_CTX_CONSOLE_CONNECT 7042L +#define ERROR_CTX_SHADOW_DENIED 7044L +#define ERROR_CTX_WINSTATION_ACCESS_DENIED 7045L +#define ERROR_CTX_INVALID_WD 7049L +#define ERROR_CTX_SHADOW_INVALID 7050L +#define ERROR_CTX_SHADOW_DISABLED 7051L +#define ERROR_CTX_CLIENT_LICENSE_IN_USE 7052L +#define ERROR_CTX_CLIENT_LICENSE_NOT_SET 7053L +#define ERROR_CTX_LICENSE_NOT_AVAILABLE 7054L +#define ERROR_CTX_LICENSE_CLIENT_INVALID 7055L +#define ERROR_CTX_LICENSE_EXPIRED 7056L +#define ERROR_CTX_SHADOW_NOT_RUNNING 7057L +#define ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE 7058L +#define ERROR_ACTIVATION_COUNT_EXCEEDED 7059L + +#define FRS_ERR_INVALID_API_SEQUENCE 8001L +#define FRS_ERR_STARTING_SERVICE 8002L +#define FRS_ERR_STOPPING_SERVICE 8003L +#define FRS_ERR_INTERNAL_API 8004L +#define FRS_ERR_INTERNAL 8005L +#define FRS_ERR_SERVICE_COMM 8006L +#define FRS_ERR_INSUFFICIENT_PRIV 8007L +#define FRS_ERR_AUTHENTICATION 8008L +#define FRS_ERR_PARENT_INSUFFICIENT_PRIV 8009L +#define FRS_ERR_PARENT_AUTHENTICATION 8010L +#define FRS_ERR_CHILD_TO_PARENT_COMM 8011L +#define FRS_ERR_PARENT_TO_CHILD_COMM 8012L +#define FRS_ERR_SYSVOL_POPULATE 8013L +#define FRS_ERR_SYSVOL_POPULATE_TIMEOUT 8014L +#define FRS_ERR_SYSVOL_IS_BUSY 8015L +#define FRS_ERR_SYSVOL_DEMOTE 8016L +#define FRS_ERR_INVALID_SERVICE_PARAMETER 8017L +#define ERROR_DS_NOT_INSTALLED 8200L +#define ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY 8201L +#define ERROR_DS_NO_ATTRIBUTE_OR_VALUE 8202L +#define ERROR_DS_INVALID_ATTRIBUTE_SYNTAX 8203L +#define ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED 8204L +#define ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS 8205L +#define ERROR_DS_BUSY 8206L +#define ERROR_DS_UNAVAILABLE 8207L +#define ERROR_DS_NO_RIDS_ALLOCATED 8208L +#define ERROR_DS_NO_MORE_RIDS 8209L +#define ERROR_DS_INCORRECT_ROLE_OWNER 8210L +#define ERROR_DS_RIDMGR_INIT_ERROR 8211L +#define ERROR_DS_OBJ_CLASS_VIOLATION 8212L +#define ERROR_DS_CANT_ON_NON_LEAF 8213L +#define ERROR_DS_CANT_ON_RDN 8214L +#define ERROR_DS_CANT_MOD_OBJ_CLASS 8215L +#define ERROR_DS_CROSS_DOM_MOVE_ERROR 8216L +#define ERROR_DS_GC_NOT_AVAILABLE 8217L +#define ERROR_SHARED_POLICY 8218L +#define ERROR_POLICY_OBJECT_NOT_FOUND 8219L +#define ERROR_POLICY_ONLY_IN_DS 8220L +#define ERROR_PROMOTION_ACTIVE 8221L +#define ERROR_NO_PROMOTION_ACTIVE 8222L +#define ERROR_DS_OPERATIONS_ERROR 8224L +#define ERROR_DS_PROTOCOL_ERROR 8225L +#define ERROR_DS_TIMELIMIT_EXCEEDED 8226L +#define ERROR_DS_SIZELIMIT_EXCEEDED 8227L +#define ERROR_DS_ADMIN_LIMIT_EXCEEDED 8228L +#define ERROR_DS_COMPARE_FALSE 8229L +#define ERROR_DS_COMPARE_TRUE 8230L +#define ERROR_DS_AUTH_METHOD_NOT_SUPPORTED 8231L +#define ERROR_DS_STRONG_AUTH_REQUIRED 8232L +#define ERROR_DS_INAPPROPRIATE_AUTH 8233L +#define ERROR_DS_AUTH_UNKNOWN 8234L +#define ERROR_DS_REFERRAL 8235L +#define ERROR_DS_UNAVAILABLE_CRIT_EXTENSION 8236L +#define ERROR_DS_CONFIDENTIALITY_REQUIRED 8237L +#define ERROR_DS_INAPPROPRIATE_MATCHING 8238L +#define ERROR_DS_CONSTRAINT_VIOLATION 8239L +#define ERROR_DS_NO_SUCH_OBJECT 8240L +#define ERROR_DS_ALIAS_PROBLEM 8241L +#define ERROR_DS_INVALID_DN_SYNTAX 8242L +#define ERROR_DS_IS_LEAF 8243L +#define ERROR_DS_ALIAS_DEREF_PROBLEM 8244L +#define ERROR_DS_UNWILLING_TO_PERFORM 8245L +#define ERROR_DS_LOOP_DETECT 8246L +#define ERROR_DS_NAMING_VIOLATION 8247L +#define ERROR_DS_OBJECT_RESULTS_TOO_LARGE 8248L +#define ERROR_DS_AFFECTS_MULTIPLE_DSAS 8249L +#define ERROR_DS_SERVER_DOWN 8250L +#define ERROR_DS_LOCAL_ERROR 8251L +#define ERROR_DS_ENCODING_ERROR 8252L +#define ERROR_DS_DECODING_ERROR 8253L +#define ERROR_DS_FILTER_UNKNOWN 8254L +#define ERROR_DS_PARAM_ERROR 8255L +#define ERROR_DS_NOT_SUPPORTED 8256L +#define ERROR_DS_NO_RESULTS_RETURNED 8257L +#define ERROR_DS_CONTROL_NOT_FOUND 8258L +#define ERROR_DS_CLIENT_LOOP 8259L +#define ERROR_DS_REFERRAL_LIMIT_EXCEEDED 8260L +#define ERROR_DS_SORT_CONTROL_MISSING 8261L +#define ERROR_DS_OFFSET_RANGE_ERROR 8262L +#define ERROR_DS_ROOT_MUST_BE_NC 8301L +#define ERROR_DS_ADD_REPLICA_INHIBITED 8302L +#define ERROR_DS_ATT_NOT_DEF_IN_SCHEMA 8303L +#define ERROR_DS_MAX_OBJ_SIZE_EXCEEDED 8304L +#define ERROR_DS_OBJ_STRING_NAME_EXISTS 8305L +#define ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA 8306L +#define ERROR_DS_RDN_DOESNT_MATCH_SCHEMA 8307L +#define ERROR_DS_NO_REQUESTED_ATTS_FOUND 8308L +#define ERROR_DS_USER_BUFFER_TO_SMALL 8309L +#define ERROR_DS_ATT_IS_NOT_ON_OBJ 8310L +#define ERROR_DS_ILLEGAL_MOD_OPERATION 8311L +#define ERROR_DS_OBJ_TOO_LARGE 8312L +#define ERROR_DS_BAD_INSTANCE_TYPE 8313L +#define ERROR_DS_MASTERDSA_REQUIRED 8314L +#define ERROR_DS_OBJECT_CLASS_REQUIRED 8315L +#define ERROR_DS_MISSING_REQUIRED_ATT 8316L +#define ERROR_DS_ATT_NOT_DEF_FOR_CLASS 8317L +#define ERROR_DS_ATT_ALREADY_EXISTS 8318L +#define ERROR_DS_CANT_ADD_ATT_VALUES 8320L +#define ERROR_DS_SINGLE_VALUE_CONSTRAINT 8321L +#define ERROR_DS_RANGE_CONSTRAINT 8322L +#define ERROR_DS_ATT_VAL_ALREADY_EXISTS 8323L +#define ERROR_DS_CANT_REM_MISSING_ATT 8324L +#define ERROR_DS_CANT_REM_MISSING_ATT_VAL 8325L +#define ERROR_DS_ROOT_CANT_BE_SUBREF 8326L +#define ERROR_DS_NO_CHAINING 8327L +#define ERROR_DS_NO_CHAINED_EVAL 8328L +#define ERROR_DS_NO_PARENT_OBJECT 8329L +#define ERROR_DS_PARENT_IS_AN_ALIAS 8330L +#define ERROR_DS_CANT_MIX_MASTER_AND_REPS 8331L +#define ERROR_DS_CHILDREN_EXIST 8332L +#define ERROR_DS_OBJ_NOT_FOUND 8333L +#define ERROR_DS_ALIASED_OBJ_MISSING 8334L +#define ERROR_DS_BAD_NAME_SYNTAX 8335L +#define ERROR_DS_ALIAS_POINTS_TO_ALIAS 8336L +#define ERROR_DS_CANT_DEREF_ALIAS 8337L +#define ERROR_DS_OUT_OF_SCOPE 8338L +#define ERROR_DS_OBJECT_BEING_REMOVED 8339L +#define ERROR_DS_CANT_DELETE_DSA_OBJ 8340L +#define ERROR_DS_GENERIC_ERROR 8341L +#define ERROR_DS_DSA_MUST_BE_INT_MASTER 8342L +#define ERROR_DS_CLASS_NOT_DSA 8343L +#define ERROR_DS_INSUFF_ACCESS_RIGHTS 8344L +#define ERROR_DS_ILLEGAL_SUPERIOR 8345L +#define ERROR_DS_ATTRIBUTE_OWNED_BY_SAM 8346L +#define ERROR_DS_NAME_TOO_MANY_PARTS 8347L +#define ERROR_DS_NAME_TOO_LONG 8348L +#define ERROR_DS_NAME_VALUE_TOO_LONG 8349L +#define ERROR_DS_NAME_UNPARSEABLE 8350L +#define ERROR_DS_NAME_TYPE_UNKNOWN 8351L +#define ERROR_DS_NOT_AN_OBJECT 8352L +#define ERROR_DS_SEC_DESC_TOO_SHORT 8353L +#define ERROR_DS_SEC_DESC_INVALID 8354L +#define ERROR_DS_NO_DELETED_NAME 8355L +#define ERROR_DS_SUBREF_MUST_HAVE_PARENT 8356L +#define ERROR_DS_NCNAME_MUST_BE_NC 8357L +#define ERROR_DS_CANT_ADD_SYSTEM_ONLY 8358L +#define ERROR_DS_CLASS_MUST_BE_CONCRETE 8359L +#define ERROR_DS_INVALID_DMD 8360L +#define ERROR_DS_OBJ_GUID_EXISTS 8361L +#define ERROR_DS_NOT_ON_BACKLINK 8362L +#define ERROR_DS_NO_CROSSREF_FOR_NC 8363L +#define ERROR_DS_SHUTTING_DOWN 8364L +#define ERROR_DS_UNKNOWN_OPERATION 8365L +#define ERROR_DS_INVALID_ROLE_OWNER 8366L +#define ERROR_DS_COULDNT_CONTACT_FSMO 8367L +#define ERROR_DS_CROSS_NC_DN_RENAME 8368L +#define ERROR_DS_CANT_MOD_SYSTEM_ONLY 8369L +#define ERROR_DS_REPLICATOR_ONLY 8370L +#define ERROR_DS_OBJ_CLASS_NOT_DEFINED 8371L +#define ERROR_DS_OBJ_CLASS_NOT_SUBCLASS 8372L +#define ERROR_DS_NAME_REFERENCE_INVALID 8373L +#define ERROR_DS_CROSS_REF_EXISTS 8374L +#define ERROR_DS_CANT_DEL_MASTER_CROSSREF 8375L +#define ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD 8376L +#define ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX 8377L +#define ERROR_DS_DUP_RDN 8378L +#define ERROR_DS_DUP_OID 8379L +#define ERROR_DS_DUP_MAPI_ID 8380L +#define ERROR_DS_DUP_SCHEMA_ID_GUID 8381L +#define ERROR_DS_DUP_LDAP_DISPLAY_NAME 8382L +#define ERROR_DS_SEMANTIC_ATT_TEST 8383L +#define ERROR_DS_SYNTAX_MISMATCH 8384L +#define ERROR_DS_EXISTS_IN_MUST_HAVE 8385L +#define ERROR_DS_EXISTS_IN_MAY_HAVE 8386L +#define ERROR_DS_NONEXISTENT_MAY_HAVE 8387L +#define ERROR_DS_NONEXISTENT_MUST_HAVE 8388L +#define ERROR_DS_AUX_CLS_TEST_FAIL 8389L +#define ERROR_DS_NONEXISTENT_POSS_SUP 8390L +#define ERROR_DS_SUB_CLS_TEST_FAIL 8391L +#define ERROR_DS_BAD_RDN_ATT_ID_SYNTAX 8392L +#define ERROR_DS_EXISTS_IN_AUX_CLS 8393L +#define ERROR_DS_EXISTS_IN_SUB_CLS 8394L +#define ERROR_DS_EXISTS_IN_POSS_SUP 8395L +#define ERROR_DS_RECALCSCHEMA_FAILED 8396L +#define ERROR_DS_TREE_DELETE_NOT_FINISHED 8397L +#define ERROR_DS_CANT_DELETE 8398L +#define ERROR_DS_ATT_SCHEMA_REQ_ID 8399L +#define ERROR_DS_BAD_ATT_SCHEMA_SYNTAX 8400L +#define ERROR_DS_CANT_CACHE_ATT 8401L +#define ERROR_DS_CANT_CACHE_CLASS 8402L +#define ERROR_DS_CANT_REMOVE_ATT_CACHE 8403L +#define ERROR_DS_CANT_REMOVE_CLASS_CACHE 8404L +#define ERROR_DS_CANT_RETRIEVE_DN 8405L +#define ERROR_DS_MISSING_SUPREF 8406L +#define ERROR_DS_CANT_RETRIEVE_INSTANCE 8407L +#define ERROR_DS_CODE_INCONSISTENCY 8408L +#define ERROR_DS_DATABASE_ERROR 8409L +#define ERROR_DS_GOVERNSID_MISSING 8410L +#define ERROR_DS_MISSING_EXPECTED_ATT 8411L +#define ERROR_DS_NCNAME_MISSING_CR_REF 8412L +#define ERROR_DS_SECURITY_CHECKING_ERROR 8413L +#define ERROR_DS_SCHEMA_NOT_LOADED 8414L +#define ERROR_DS_SCHEMA_ALLOC_FAILED 8415L +#define ERROR_DS_ATT_SCHEMA_REQ_SYNTAX 8416L +#define ERROR_DS_GCVERIFY_ERROR 8417L +#define ERROR_DS_DRA_SCHEMA_MISMATCH 8418L +#define ERROR_DS_CANT_FIND_DSA_OBJ 8419L +#define ERROR_DS_CANT_FIND_EXPECTED_NC 8420L +#define ERROR_DS_CANT_FIND_NC_IN_CACHE 8421L +#define ERROR_DS_CANT_RETRIEVE_CHILD 8422L +#define ERROR_DS_SECURITY_ILLEGAL_MODIFY 8423L +#define ERROR_DS_CANT_REPLACE_HIDDEN_REC 8424L +#define ERROR_DS_BAD_HIERARCHY_FILE 8425L +#define ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED 8426L +#define ERROR_DS_CONFIG_PARAM_MISSING 8427L +#define ERROR_DS_COUNTING_AB_INDICES_FAILED 8428L +#define ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED 8429L +#define ERROR_DS_INTERNAL_FAILURE 8430L +#define ERROR_DS_UNKNOWN_ERROR 8431L +#define ERROR_DS_ROOT_REQUIRES_CLASS_TOP 8432L +#define ERROR_DS_REFUSING_FSMO_ROLES 8433L +#define ERROR_DS_MISSING_FSMO_SETTINGS 8434L +#define ERROR_DS_UNABLE_TO_SURRENDER_ROLES 8435L +#define ERROR_DS_DRA_GENERIC 8436L +#define ERROR_DS_DRA_INVALID_PARAMETER 8437L +#define ERROR_DS_DRA_BUSY 8438L +#define ERROR_DS_DRA_BAD_DN 8439L +#define ERROR_DS_DRA_BAD_NC 8440L +#define ERROR_DS_DRA_DN_EXISTS 8441L +#define ERROR_DS_DRA_INTERNAL_ERROR 8442L +#define ERROR_DS_DRA_INCONSISTENT_DIT 8443L +#define ERROR_DS_DRA_CONNECTION_FAILED 8444L +#define ERROR_DS_DRA_BAD_INSTANCE_TYPE 8445L +#define ERROR_DS_DRA_OUT_OF_MEM 8446L +#define ERROR_DS_DRA_MAIL_PROBLEM 8447L +#define ERROR_DS_DRA_REF_ALREADY_EXISTS 8448L +#define ERROR_DS_DRA_REF_NOT_FOUND 8449L +#define ERROR_DS_DRA_OBJ_IS_REP_SOURCE 8450L +#define ERROR_DS_DRA_DB_ERROR 8451L +#define ERROR_DS_DRA_NO_REPLICA 8452L +#define ERROR_DS_DRA_ACCESS_DENIED 8453L +#define ERROR_DS_DRA_NOT_SUPPORTED 8454L +#define ERROR_DS_DRA_RPC_CANCELLED 8455L +#define ERROR_DS_DRA_SOURCE_DISABLED 8456L +#define ERROR_DS_DRA_SINK_DISABLED 8457L +#define ERROR_DS_DRA_NAME_COLLISION 8458L +#define ERROR_DS_DRA_SOURCE_REINSTALLED 8459L +#define ERROR_DS_DRA_MISSING_PARENT 8460L +#define ERROR_DS_DRA_PREEMPTED 8461L +#define ERROR_DS_DRA_ABANDON_SYNC 8462L +#define ERROR_DS_DRA_SHUTDOWN 8463L +#define ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET 8464L +#define ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA 8465L +#define ERROR_DS_DRA_EXTN_CONNECTION_FAILED 8466L +#define ERROR_DS_INSTALL_SCHEMA_MISMATCH 8467L +#define ERROR_DS_DUP_LINK_ID 8468L +#define ERROR_DS_NAME_ERROR_RESOLVING 8469L +#define ERROR_DS_NAME_ERROR_NOT_FOUND 8470L +#define ERROR_DS_NAME_ERROR_NOT_UNIQUE 8471L +#define ERROR_DS_NAME_ERROR_NO_MAPPING 8472L +#define ERROR_DS_NAME_ERROR_DOMAIN_ONLY 8473L +#define ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING 8474L +#define ERROR_DS_CONSTRUCTED_ATT_MOD 8475L +#define ERROR_DS_WRONG_OM_OBJ_CLASS 8476L +#define ERROR_DS_DRA_REPL_PENDING 8477L +#define ERROR_DS_DS_REQUIRED 8478L +#define ERROR_DS_INVALID_LDAP_DISPLAY_NAME 8479L +#define ERROR_DS_NON_BASE_SEARCH 8480L +#define ERROR_DS_CANT_RETRIEVE_ATTS 8481L +#define ERROR_DS_BACKLINK_WITHOUT_LINK 8482L +#define ERROR_DS_EPOCH_MISMATCH 8483L +#define ERROR_DS_SRC_NAME_MISMATCH 8484L +#define ERROR_DS_SRC_AND_DST_NC_IDENTICAL 8485L +#define ERROR_DS_DST_NC_MISMATCH 8486L +#define ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC 8487L +#define ERROR_DS_SRC_GUID_MISMATCH 8488L +#define ERROR_DS_CANT_MOVE_DELETED_OBJECT 8489L +#define ERROR_DS_PDC_OPERATION_IN_PROGRESS 8490L +#define ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD 8491L +#define ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION 8492L +#define ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS 8493L +#define ERROR_DS_NC_MUST_HAVE_NC_PARENT 8494L +#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE 8495L +#define ERROR_DS_DST_DOMAIN_NOT_NATIVE 8496L +#define ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER 8497L +#define ERROR_DS_CANT_MOVE_ACCOUNT_GROUP 8498L +#define ERROR_DS_CANT_MOVE_RESOURCE_GROUP 8499L +#define ERROR_DS_INVALID_SEARCH_FLAG 8500L +#define ERROR_DS_NO_TREE_DELETE_ABOVE_NC 8501L +#define ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE 8502L +#define ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE 8503L +#define ERROR_DS_SAM_INIT_FAILURE 8504L +#define ERROR_DS_SENSITIVE_GROUP_VIOLATION 8505L +#define ERROR_DS_CANT_MOD_PRIMARYGROUPID 8506L +#define ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD 8507L +#define ERROR_DS_NONSAFE_SCHEMA_CHANGE 8508L +#define ERROR_DS_SCHEMA_UPDATE_DISALLOWED 8509L +#define ERROR_DS_CANT_CREATE_UNDER_SCHEMA 8510L +#define ERROR_DS_INSTALL_NO_SRC_SCH_VERSION 8511L +#define ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE 8512L +#define ERROR_DS_INVALID_GROUP_TYPE 8513L +#define ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN 8514L +#define ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN 8515L +#define ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER 8516L +#define ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER 8517L +#define ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER 8518L +#define ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER 8519L +#define ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER 8520L +#define ERROR_DS_HAVE_PRIMARY_MEMBERS 8521L +#define ERROR_DS_STRING_SD_CONVERSION_FAILED 8522L +#define ERROR_DS_NAMING_MASTER_GC 8523L +#define ERROR_DS_LOOKUP_FAILURE 8524L +#define ERROR_DS_COULDNT_UPDATE_SPNS 8525L +#define ERROR_DS_CANT_RETRIEVE_SD 8526L +#define ERROR_DS_KEY_NOT_UNIQUE 8527L +#define ERROR_DS_WRONG_LINKED_ATT_SYNTAX 8528L +#define ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD 8529L +#define ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY 8530L +#define ERROR_DS_CANT_START 8531L +#define ERROR_DS_INIT_FAILURE 8532L +#define ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION 8533L +#define ERROR_DS_SOURCE_DOMAIN_IN_FOREST 8534L +#define ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST 8535L +#define ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED 8536L +#define ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN 8537L +#define ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER 8538L +#define ERROR_DS_SRC_SID_EXISTS_IN_FOREST 8539L +#define ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH 8540L +#define ERROR_SAM_INIT_FAILURE 8541L +#define ERROR_DS_DRA_SCHEMA_INFO_SHIP 8542L +#define ERROR_DS_DRA_SCHEMA_CONFLICT 8543L +#define ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT 8544L +#define ERROR_DS_DRA_OBJ_NC_MISMATCH 8545L +#define ERROR_DS_NC_STILL_HAS_DSAS 8546L +#define ERROR_DS_GC_REQUIRED 8547L +#define ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY 8548L +#define ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS 8549L +#define ERROR_DS_CANT_ADD_TO_GC 8550L +#define ERROR_DS_NO_CHECKPOINT_WITH_PDC 8551L +#define ERROR_DS_SOURCE_AUDITING_NOT_ENABLED 8552L +#define ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC 8553L +#define ERROR_DS_INVALID_NAME_FOR_SPN 8554L +#define ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS 8555L +#define ERROR_DS_UNICODEPWD_NOT_IN_QUOTES 8556L +#define ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED 8557L +#define ERROR_DS_MUST_BE_RUN_ON_DST_DC 8558L +#define ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER 8559L +#define ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ 8560L +#define ERROR_DS_INIT_FAILURE_CONSOLE 8561L +#define ERROR_DS_SAM_INIT_FAILURE_CONSOLE 8562L +#define ERROR_DS_FOREST_VERSION_TOO_HIGH 8563L +#define ERROR_DS_DOMAIN_VERSION_TOO_HIGH 8564L +#define ERROR_DS_FOREST_VERSION_TOO_LOW 8565L +#define ERROR_DS_DOMAIN_VERSION_TOO_LOW 8566L +#define ERROR_DS_INCOMPATIBLE_VERSION 8567L +#define ERROR_DS_LOW_DSA_VERSION 8568L +#define ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN 8569L +#define ERROR_DS_NOT_SUPPORTED_SORT_ORDER 8570L +#define ERROR_DS_NAME_NOT_UNIQUE 8571L +#define ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 8572L +#define ERROR_DS_OUT_OF_VERSION_STORE 8573L +#define ERROR_DS_INCOMPATIBLE_CONTROLS_USED 8574L +#define ERROR_DS_NO_REF_DOMAIN 8575L +#define ERROR_DS_RESERVED_LINK_ID 8576L +#define ERROR_DS_LINK_ID_NOT_AVAILABLE 8577L +#define ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER 8578L +#define ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE 8579L +#define ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC 8580L +#define ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG 8581L +#define ERROR_DS_MODIFYDN_WRONG_GRANDPARENT 8582L +#define ERROR_DS_NAME_ERROR_TRUST_REFERRAL 8583L +#define ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER 8584L +#define ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD 8585L +#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 8586L +#define ERROR_DS_THREAD_LIMIT_EXCEEDED 8587L +#define ERROR_DS_NOT_CLOSEST 8588L +#define ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF 8589L +#define ERROR_DS_SINGLE_USER_MODE_FAILED 8590L +#define ERROR_DS_NTDSCRIPT_SYNTAX_ERROR 8591L +#define ERROR_DS_NTDSCRIPT_PROCESS_ERROR 8592L +#define ERROR_DS_DIFFERENT_REPL_EPOCHS 8593L +#define ERROR_DS_DRS_EXTENSIONS_CHANGED 8594L +#define ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR 8595L +#define ERROR_DS_NO_MSDS_INTID 8596L +#define ERROR_DS_DUP_MSDS_INTID 8597L +#define ERROR_DS_EXISTS_IN_RDNATTID 8598L +#define ERROR_DS_AUTHORIZATION_FAILED 8599L +#define ERROR_DS_INVALID_SCRIPT 8600L +#define ERROR_DS_REMOTE_CROSSREF_OP_FAILED 8601L +#define ERROR_DS_CROSS_REF_BUSY 8602L +#define ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN 8603L +#define ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC 8604L +#define ERROR_DS_DUPLICATE_ID_FOUND 8605L +#define ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT 8606L +#define ERROR_DS_GROUP_CONVERSION_ERROR 8607L +#define ERROR_DS_CANT_MOVE_APP_BASIC_GROUP 8608L +#define ERROR_DS_CANT_MOVE_APP_QUERY_GROUP 8609L +#define ERROR_DS_ROLE_NOT_VERIFIED 8610L +#define ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL 8611L +#define ERROR_DS_DOMAIN_RENAME_IN_PROGRESS 8612L +#define ERROR_DS_EXISTING_AD_CHILD_NC 8613L +#define DNS_ERROR_RCODE_FORMAT_ERROR 9001L +#define DNS_ERROR_RCODE_SERVER_FAILURE 9002L +#define DNS_ERROR_RCODE_NAME_ERROR 9003L +#define DNS_ERROR_RCODE_NOT_IMPLEMENTED 9004L +#define DNS_ERROR_RCODE_REFUSED 9005L +#define DNS_ERROR_RCODE_YXDOMAIN 9006L +#define DNS_ERROR_RCODE_YXRRSET 9007L +#define DNS_ERROR_RCODE_NXRRSET 9008L +#define DNS_ERROR_RCODE_NOTAUTH 9009L +#define DNS_ERROR_RCODE_NOTZONE 9010L +#define DNS_ERROR_RCODE_BADSIG 9016L +#define DNS_ERROR_RCODE_BADKEY 9017L +#define DNS_ERROR_RCODE_BADTIME 9018L +#define DNS_INFO_NO_RECORDS 9501L +#define DNS_ERROR_BAD_PACKET 9502L +#define DNS_ERROR_NO_PACKET 9503L +#define DNS_ERROR_RCODE 9504L +#define DNS_ERROR_UNSECURE_PACKET 9505L +#define DNS_ERROR_INVALID_TYPE 9551L +#define DNS_ERROR_INVALID_IP_ADDRESS 9552L +#define DNS_ERROR_INVALID_PROPERTY 9553L +#define DNS_ERROR_TRY_AGAIN_LATER 9554L +#define DNS_ERROR_NOT_UNIQUE 9555L +#define DNS_ERROR_NON_RFC_NAME 9556L +#define DNS_STATUS_FQDN 9557L +#define DNS_STATUS_DOTTED_NAME 9558L +#define DNS_STATUS_SINGLE_PART_NAME 9559L +#define DNS_ERROR_INVALID_NAME_CHAR 9560L +#define DNS_ERROR_NUMERIC_NAME 9561L +#define DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER 9562L +#define DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION 9563L +#define DNS_ERROR_CANNOT_FIND_ROOT_HINTS 9564L +#define DNS_ERROR_INCONSISTENT_ROOT_HINTS 9565L +#define DNS_ERROR_ZONE_DOES_NOT_EXIST 9601L +#define DNS_ERROR_NO_ZONE_INFO 9602L +#define DNS_ERROR_INVALID_ZONE_OPERATION 9603L +#define DNS_ERROR_ZONE_CONFIGURATION_ERROR 9604L +#define DNS_ERROR_ZONE_HAS_NO_SOA_RECORD 9605L +#define DNS_ERROR_ZONE_HAS_NO_NS_RECORDS 9606L +#define DNS_ERROR_ZONE_LOCKED 9607L +#define DNS_ERROR_ZONE_CREATION_FAILED 9608L +#define DNS_ERROR_ZONE_ALREADY_EXISTS 9609L +#define DNS_ERROR_AUTOZONE_ALREADY_EXISTS 9610L +#define DNS_ERROR_INVALID_ZONE_TYPE 9611L +#define DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP 9612L +#define DNS_ERROR_ZONE_NOT_SECONDARY 9613L +#define DNS_ERROR_NEED_SECONDARY_ADDRESSES 9614L +#define DNS_ERROR_WINS_INIT_FAILED 9615L +#define DNS_ERROR_NEED_WINS_SERVERS 9616L +#define DNS_ERROR_NBSTAT_INIT_FAILED 9617L +#define DNS_ERROR_SOA_DELETE_INVALID 9618L +#define DNS_ERROR_FORWARDER_ALREADY_EXISTS 9619L +#define DNS_ERROR_ZONE_REQUIRES_MASTER_IP 9620L +#define DNS_ERROR_ZONE_IS_SHUTDOWN 9621L +#define DNS_ERROR_PRIMARY_REQUIRES_DATAFILE 9651L +#define DNS_ERROR_INVALID_DATAFILE_NAME 9652L +#define DNS_ERROR_DATAFILE_OPEN_FAILURE 9653L +#define DNS_ERROR_FILE_WRITEBACK_FAILED 9654L +#define DNS_ERROR_DATAFILE_PARSING 9655L +#define DNS_ERROR_RECORD_DOES_NOT_EXIST 9701L +#define DNS_ERROR_RECORD_FORMAT 9702L +#define DNS_ERROR_NODE_CREATION_FAILED 9703L +#define DNS_ERROR_UNKNOWN_RECORD_TYPE 9704L +#define DNS_ERROR_RECORD_TIMED_OUT 9705L +#define DNS_ERROR_NAME_NOT_IN_ZONE 9706L +#define DNS_ERROR_CNAME_LOOP 9707L +#define DNS_ERROR_NODE_IS_CNAME 9708L +#define DNS_ERROR_CNAME_COLLISION 9709L +#define DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT 9710L +#define DNS_ERROR_RECORD_ALREADY_EXISTS 9711L +#define DNS_ERROR_SECONDARY_DATA 9712L +#define DNS_ERROR_NO_CREATE_CACHE_DATA 9713L +#define DNS_ERROR_NAME_DOES_NOT_EXIST 9714L +#define DNS_WARNING_PTR_CREATE_FAILED 9715L +#define DNS_WARNING_DOMAIN_UNDELETED 9716L +#define DNS_ERROR_DS_UNAVAILABLE 9717L +#define DNS_ERROR_DS_ZONE_ALREADY_EXISTS 9718L +#define DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE 9719L +#define DNS_INFO_AXFR_COMPLETE 9751L +#define DNS_ERROR_AXFR 9752L +#define DNS_INFO_ADDED_LOCAL_WINS 9753L +#define DNS_STATUS_CONTINUE_NEEDED 9801L +#define DNS_ERROR_NO_TCPIP 9851L +#define DNS_ERROR_NO_DNS_SERVERS 9852L +#define DNS_ERROR_DP_DOES_NOT_EXIST 9901L +#define DNS_ERROR_DP_ALREADY_EXISTS 9902L +#define DNS_ERROR_DP_NOT_ENLISTED 9903L +#define DNS_ERROR_DP_ALREADY_ENLISTED 9904L +#define DNS_ERROR_DP_NOT_AVAILABLE 9905L + +#ifndef WSABASEERR +#define WSABASEERR 10000 +#define WSAEINTR 10004L +#define WSAEBADF 10009L +#define WSAEACCES 10013L +#define WSAEFAULT 10014L +#define WSAEINVAL 10022L +#define WSAEMFILE 10024L +#define WSAEWOULDBLOCK 10035L +#define WSAEINPROGRESS 10036L +#define WSAEALREADY 10037L +#define WSAENOTSOCK 10038L +#define WSAEDESTADDRREQ 10039L +#define WSAEMSGSIZE 10040L +#define WSAEPROTOTYPE 10041L +#define WSAENOPROTOOPT 10042L +#define WSAEPROTONOSUPPORT 10043L +#define WSAESOCKTNOSUPPORT 10044L +#define WSAEOPNOTSUPP 10045L +#define WSAEPFNOSUPPORT 10046L +#define WSAEAFNOSUPPORT 10047L +#define WSAEADDRINUSE 10048L +#define WSAEADDRNOTAVAIL 10049L +#define WSAENETDOWN 10050L +#define WSAENETUNREACH 10051L +#define WSAENETRESET 10052L +#define WSAECONNABORTED 10053L +#define WSAECONNRESET 10054L +#define WSAENOBUFS 10055L +#define WSAEISCONN 10056L +#define WSAENOTCONN 10057L +#define WSAESHUTDOWN 10058L +#define WSAETOOMANYREFS 10059L +#define WSAETIMEDOUT 10060L +#define WSAECONNREFUSED 10061L +#define WSAELOOP 10062L +#define WSAENAMETOOLONG 10063L +#define WSAEHOSTDOWN 10064L +#define WSAEHOSTUNREACH 10065L +#define WSAENOTEMPTY 10066L +#define WSAEPROCLIM 10067L +#define WSAEUSERS 10068L +#define WSAEDQUOT 10069L +#define WSAESTALE 10070L +#define WSAEREMOTE 10071L +#define WSASYSNOTREADY 10091L +#define WSAVERNOTSUPPORTED 10092L +#define WSANOTINITIALISED 10093L +#define WSAEDISCON 10101L +#define WSAENOMORE 10102L +#define WSAECANCELLED 10103L +#define WSAEINVALIDPROCTABLE 10104L +#define WSAEINVALIDPROVIDER 10105L +#define WSAEPROVIDERFAILEDINIT 10106L +#define WSASYSCALLFAILURE 10107L +#define WSASERVICE_NOT_FOUND 10108L +#define WSATYPE_NOT_FOUND 10109L +#define WSA_E_NO_MORE 10110L +#define WSA_E_CANCELLED 10111L +#define WSAEREFUSED 10112L +#define WSAHOST_NOT_FOUND 11001L +#define WSATRY_AGAIN 11002L +#define WSANO_RECOVERY 11003L +#define WSANO_DATA 11004L +#define WSA_QOS_RECEIVERS 11005L +#define WSA_QOS_SENDERS 11006L +#define WSA_QOS_NO_SENDERS 11007L +#define WSA_QOS_NO_RECEIVERS 11008L +#define WSA_QOS_REQUEST_CONFIRMED 11009L +#define WSA_QOS_ADMISSION_FAILURE 11010L +#define WSA_QOS_POLICY_FAILURE 11011L +#define WSA_QOS_BAD_STYLE 11012L +#define WSA_QOS_BAD_OBJECT 11013L +#define WSA_QOS_TRAFFIC_CTRL_ERROR 11014L +#define WSA_QOS_GENERIC_ERROR 11015L +#define WSA_QOS_ESERVICETYPE 11016L +#define WSA_QOS_EFLOWSPEC 11017L +#define WSA_QOS_EPROVSPECBUF 11018L +#define WSA_QOS_EFILTERSTYLE 11019L +#define WSA_QOS_EFILTERTYPE 11020L +#define WSA_QOS_EFILTERCOUNT 11021L +#define WSA_QOS_EOBJLENGTH 11022L +#define WSA_QOS_EFLOWCOUNT 11023L +#define WSA_QOS_EUNKNOWNPSOBJ 11024L +#define WSA_QOS_EPOLICYOBJ 11025L +#define WSA_QOS_EFLOWDESC 11026L +#define WSA_QOS_EPSFLOWSPEC 11027L +#define WSA_QOS_EPSFILTERSPEC 11028L +#define WSA_QOS_ESDMODEOBJ 11029L +#define WSA_QOS_ESHAPERATEOBJ 11030L +#define WSA_QOS_RESERVED_PETYPE 11031L +#endif /* !WSABASEERR */ + +#define ERROR_IPSEC_QM_POLICY_EXISTS 13000L +#define ERROR_IPSEC_QM_POLICY_NOT_FOUND 13001L +#define ERROR_IPSEC_QM_POLICY_IN_USE 13002L +#define ERROR_IPSEC_MM_POLICY_EXISTS 13003L +#define ERROR_IPSEC_MM_POLICY_NOT_FOUND 13004L +#define ERROR_IPSEC_MM_POLICY_IN_USE 13005L +#define ERROR_IPSEC_MM_FILTER_EXISTS 13006L +#define ERROR_IPSEC_MM_FILTER_NOT_FOUND 13007L +#define ERROR_IPSEC_TRANSPORT_FILTER_EXISTS 13008L +#define ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND 13009L +#define ERROR_IPSEC_MM_AUTH_EXISTS 13010L +#define ERROR_IPSEC_MM_AUTH_NOT_FOUND 13011L +#define ERROR_IPSEC_MM_AUTH_IN_USE 13012L +#define ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND 13013L +#define ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND 13014L +#define ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND 13015L +#define ERROR_IPSEC_TUNNEL_FILTER_EXISTS 13016L +#define ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND 13017L +#define ERROR_IPSEC_MM_FILTER_PENDING_DELETION 13018L +#define ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION 13019L +#define ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION 13020L +#define ERROR_IPSEC_MM_POLICY_PENDING_DELETION 13021L +#define ERROR_IPSEC_MM_AUTH_PENDING_DELETION 13022L +#define ERROR_IPSEC_QM_POLICY_PENDING_DELETION 13023L +#define WARNING_IPSEC_MM_POLICY_PRUNED 13024L +#define WARNING_IPSEC_QM_POLICY_PRUNED 13025L +#define ERROR_IPSEC_IKE_AUTH_FAIL 13801L +#define ERROR_IPSEC_IKE_ATTRIB_FAIL 13802L +#define ERROR_IPSEC_IKE_NEGOTIATION_PENDING 13803L +#define ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR 13804L +#define ERROR_IPSEC_IKE_TIMED_OUT 13805L +#define ERROR_IPSEC_IKE_NO_CERT 13806L +#define ERROR_IPSEC_IKE_SA_DELETED 13807L +#define ERROR_IPSEC_IKE_SA_REAPED 13808L +#define ERROR_IPSEC_IKE_MM_ACQUIRE_DROP 13809L +#define ERROR_IPSEC_IKE_QM_ACQUIRE_DROP 13810L +#define ERROR_IPSEC_IKE_QUEUE_DROP_MM 13811L +#define ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM 13812L +#define ERROR_IPSEC_IKE_DROP_NO_RESPONSE 13813L +#define ERROR_IPSEC_IKE_MM_DELAY_DROP 13814L +#define ERROR_IPSEC_IKE_QM_DELAY_DROP 13815L +#define ERROR_IPSEC_IKE_ERROR 13816L +#define ERROR_IPSEC_IKE_CRL_FAILED 13817L +#define ERROR_IPSEC_IKE_INVALID_KEY_USAGE 13818L +#define ERROR_IPSEC_IKE_INVALID_CERT_TYPE 13819L +#define ERROR_IPSEC_IKE_NO_PRIVATE_KEY 13820L +#define ERROR_IPSEC_IKE_DH_FAIL 13822L +#define ERROR_IPSEC_IKE_INVALID_HEADER 13824L +#define ERROR_IPSEC_IKE_NO_POLICY 13825L +#define ERROR_IPSEC_IKE_INVALID_SIGNATURE 13826L +#define ERROR_IPSEC_IKE_KERBEROS_ERROR 13827L +#define ERROR_IPSEC_IKE_NO_PUBLIC_KEY 13828L +#define ERROR_IPSEC_IKE_PROCESS_ERR 13829L +#define ERROR_IPSEC_IKE_PROCESS_ERR_SA 13830L +#define ERROR_IPSEC_IKE_PROCESS_ERR_PROP 13831L +#define ERROR_IPSEC_IKE_PROCESS_ERR_TRANS 13832L +#define ERROR_IPSEC_IKE_PROCESS_ERR_KE 13833L +#define ERROR_IPSEC_IKE_PROCESS_ERR_ID 13834L +#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT 13835L +#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ 13836L +#define ERROR_IPSEC_IKE_PROCESS_ERR_HASH 13837L +#define ERROR_IPSEC_IKE_PROCESS_ERR_SIG 13838L +#define ERROR_IPSEC_IKE_PROCESS_ERR_NONCE 13839L +#define ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY 13840L +#define ERROR_IPSEC_IKE_PROCESS_ERR_DELETE 13841L +#define ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR 13842L +#define ERROR_IPSEC_IKE_INVALID_PAYLOAD 13843L +#define ERROR_IPSEC_IKE_LOAD_SOFT_SA 13844L +#define ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN 13845L +#define ERROR_IPSEC_IKE_INVALID_COOKIE 13846L +#define ERROR_IPSEC_IKE_NO_PEER_CERT 13847L +#define ERROR_IPSEC_IKE_PEER_CRL_FAILED 13848L +#define ERROR_IPSEC_IKE_POLICY_CHANGE 13849L +#define ERROR_IPSEC_IKE_NO_MM_POLICY 13850L +#define ERROR_IPSEC_IKE_NOTCBPRIV 13851L +#define ERROR_IPSEC_IKE_SECLOADFAIL 13852L +#define ERROR_IPSEC_IKE_FAILSSPINIT 13853L +#define ERROR_IPSEC_IKE_FAILQUERYSSP 13854L +#define ERROR_IPSEC_IKE_SRVACQFAIL 13855L +#define ERROR_IPSEC_IKE_SRVQUERYCRED 13856L +#define ERROR_IPSEC_IKE_GETSPIFAIL 13857L +#define ERROR_IPSEC_IKE_INVALID_FILTER 13858L +#define ERROR_IPSEC_IKE_OUT_OF_MEMORY 13859L +#define ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED 13860L +#define ERROR_IPSEC_IKE_INVALID_POLICY 13861L +#define ERROR_IPSEC_IKE_UNKNOWN_DOI 13862L +#define ERROR_IPSEC_IKE_INVALID_SITUATION 13863L +#define ERROR_IPSEC_IKE_DH_FAILURE 13864L +#define ERROR_IPSEC_IKE_INVALID_GROUP 13865L +#define ERROR_IPSEC_IKE_ENCRYPT 13866L +#define ERROR_IPSEC_IKE_DECRYPT 13867L +#define ERROR_IPSEC_IKE_POLICY_MATCH 13868L +#define ERROR_IPSEC_IKE_UNSUPPORTED_ID 13869L +#define ERROR_IPSEC_IKE_INVALID_HASH 13870L +#define ERROR_IPSEC_IKE_INVALID_HASH_ALG 13871L +#define ERROR_IPSEC_IKE_INVALID_HASH_SIZE 13872L +#define ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG 13873L +#define ERROR_IPSEC_IKE_INVALID_AUTH_ALG 13874L +#define ERROR_IPSEC_IKE_INVALID_SIG 13875L +#define ERROR_IPSEC_IKE_LOAD_FAILED 13876L +#define ERROR_IPSEC_IKE_RPC_DELETE 13877L +#define ERROR_IPSEC_IKE_BENIGN_REINIT 13878L +#define ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY 13879L +#define ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN 13881L +#define ERROR_IPSEC_IKE_MM_LIMIT 13882L +#define ERROR_IPSEC_IKE_NEGOTIATION_DISABLED 13883L +#define ERROR_IPSEC_IKE_NEG_STATUS_END 13884L + +#define ERROR_SXS_SECTION_NOT_FOUND 14000L +#define ERROR_SXS_CANT_GEN_ACTCTX 14001L +#define ERROR_SXS_INVALID_ACTCTXDATA_FORMAT 14002L +#define ERROR_SXS_ASSEMBLY_NOT_FOUND 14003L +#define ERROR_SXS_MANIFEST_FORMAT_ERROR 14004L +#define ERROR_SXS_MANIFEST_PARSE_ERROR 14005L +#define ERROR_SXS_ACTIVATION_CONTEXT_DISABLED 14006L +#define ERROR_SXS_KEY_NOT_FOUND 14007L +#define ERROR_SXS_VERSION_CONFLICT 14008L +#define ERROR_SXS_WRONG_SECTION_TYPE 14009L +#define ERROR_SXS_THREAD_QUERIES_DISABLED 14010L +#define ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET 14011L +#define ERROR_SXS_UNKNOWN_ENCODING_GROUP 14012L +#define ERROR_SXS_UNKNOWN_ENCODING 14013L +#define ERROR_SXS_INVALID_XML_NAMESPACE_URI 14014L +#define ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED 14015L +#define ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED 14016L +#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE 14017L +#define ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE 14018L +#define ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE 14019L +#define ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT 14020L +#define ERROR_SXS_DUPLICATE_DLL_NAME 14021L +#define ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME 14022L +#define ERROR_SXS_DUPLICATE_CLSID 14023L +#define ERROR_SXS_DUPLICATE_IID 14024L +#define ERROR_SXS_DUPLICATE_TLBID 14025L +#define ERROR_SXS_DUPLICATE_PROGID 14026L +#define ERROR_SXS_DUPLICATE_ASSEMBLY_NAME 14027L +#define ERROR_SXS_FILE_HASH_MISMATCH 14028L +#define ERROR_SXS_POLICY_PARSE_ERROR 14029L +#define ERROR_SXS_XML_E_MISSINGQUOTE 14030L +#define ERROR_SXS_XML_E_COMMENTSYNTAX 14031L +#define ERROR_SXS_XML_E_BADSTARTNAMECHAR 14032L +#define ERROR_SXS_XML_E_BADNAMECHAR 14033L +#define ERROR_SXS_XML_E_BADCHARINSTRING 14034L +#define ERROR_SXS_XML_E_XMLDECLSYNTAX 14035L +#define ERROR_SXS_XML_E_BADCHARDATA 14036L +#define ERROR_SXS_XML_E_MISSINGWHITESPACE 14037L +#define ERROR_SXS_XML_E_EXPECTINGTAGEND 14038L +#define ERROR_SXS_XML_E_MISSINGSEMICOLON 14039L +#define ERROR_SXS_XML_E_UNBALANCEDPAREN 14040L +#define ERROR_SXS_XML_E_INTERNALERROR 14041L +#define ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE 14042L +#define ERROR_SXS_XML_E_INCOMPLETE_ENCODING 14043L +#define ERROR_SXS_XML_E_MISSING_PAREN 14044L +#define ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE 14045L +#define ERROR_SXS_XML_E_MULTIPLE_COLONS 14046L +#define ERROR_SXS_XML_E_INVALID_DECIMAL 14047L +#define ERROR_SXS_XML_E_INVALID_HEXIDECIMAL 14048L +#define ERROR_SXS_XML_E_INVALID_UNICODE 14049L +#define ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK 14050L +#define ERROR_SXS_XML_E_UNEXPECTEDENDTAG 14051L +#define ERROR_SXS_XML_E_UNCLOSEDTAG 14052L +#define ERROR_SXS_XML_E_DUPLICATEATTRIBUTE 14053L +#define ERROR_SXS_XML_E_MULTIPLEROOTS 14054L +#define ERROR_SXS_XML_E_INVALIDATROOTLEVEL 14055L +#define ERROR_SXS_XML_E_BADXMLDECL 14056L +#define ERROR_SXS_XML_E_MISSINGROOT 14057L +#define ERROR_SXS_XML_E_UNEXPECTEDEOF 14058L +#define ERROR_SXS_XML_E_BADPEREFINSUBSET 14059L +#define ERROR_SXS_XML_E_UNCLOSEDSTARTTAG 14060L +#define ERROR_SXS_XML_E_UNCLOSEDENDTAG 14061L +#define ERROR_SXS_XML_E_UNCLOSEDSTRING 14062L +#define ERROR_SXS_XML_E_UNCLOSEDCOMMENT 14063L +#define ERROR_SXS_XML_E_UNCLOSEDDECL 14064L +#define ERROR_SXS_XML_E_UNCLOSEDCDATA 14065L +#define ERROR_SXS_XML_E_RESERVEDNAMESPACE 14066L +#define ERROR_SXS_XML_E_INVALIDENCODING 14067L +#define ERROR_SXS_XML_E_INVALIDSWITCH 14068L +#define ERROR_SXS_XML_E_BADXMLCASE 14069L +#define ERROR_SXS_XML_E_INVALID_STANDALONE 14070L +#define ERROR_SXS_XML_E_UNEXPECTED_STANDALONE 14071L +#define ERROR_SXS_XML_E_INVALID_VERSION 14072L +#define ERROR_SXS_XML_E_MISSINGEQUALS 14073L +#define ERROR_SXS_PROTECTION_RECOVERY_FAILED 14074L +#define ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT 14075L +#define ERROR_SXS_PROTECTION_CATALOG_NOT_VALID 14076L +#define ERROR_SXS_UNTRANSLATABLE_HRESULT 14077L +#define ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING 14078L +#define ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE 14079L +#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME 14080L + +#define SEVERITY_SUCCESS 0 +#define SEVERITY_ERROR 1 +#define FACILITY_WINDOWS 8 +#define FACILITY_STORAGE 3 +#define FACILITY_RPC 1 +#define FACILITY_WIN32 7 +#define FACILITY_CONTROL 10 +#define FACILITY_NULL 0 +#define FACILITY_ITF 4 +#define FACILITY_DISPATCH 2 +#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0) +#define FAILED(Status) ((HRESULT)(Status)<0) +#define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR) +#define HRESULT_CODE(r) ((r)&0xFFFF) +#define SCODE_CODE(c) ((c)&0xFFFF) +#define HRESULT_FACILITY(r) (((r)>>16)&0x1fff) +#define SCODE_FACILITY(c) (((c)>>16)&0x1fff) +#define HRESULT_SEVERITY(r) (((r)>>31)&0x1) +#define SCODE_SEVERITY(c) (((c)>>31)&0x1) +#define MAKE_HRESULT(s,f,c) ((HRESULT)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c)))) +#define MAKE_SCODE(s,f,c) ((SCODE)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c))) ) +#define FACILITY_NT_BIT 0x10000000 +#define HRESULT_FROM_WIN32(x) (x?((HRESULT)(((x)&0x0000FFFF)|(FACILITY_WIN32<<16)|0x80000000)):0) +#define HRESULT_FROM_NT(x) ((HRESULT)((x)|FACILITY_NT_BIT)) +#define GetScode(hr) ((SCODE) (hr)) +#define ResultFromScode(sc) ((HRESULT) (sc)) +#define PropagateResult(hrPrevious, scBase) ((HRESULT) scBase) + +#define NOERROR S_OK +#define E_UNEXPECTED ((HRESULT)0x8000FFFFL) +#define E_NOTIMPL ((HRESULT)0x80004001L) +#define E_OUTOFMEMORY ((HRESULT)0x8007000EL) +#define E_INVALIDARG ((HRESULT)0x80070057L) +#define E_NOINTERFACE ((HRESULT)0x80004002L) +#define E_POINTER ((HRESULT)0x80004003L) +#define E_HANDLE ((HRESULT)0x80070006L) +#define E_ABORT ((HRESULT)0x80004004L) +#define E_FAIL ((HRESULT)0x80004005L) +#define E_ACCESSDENIED ((HRESULT)0x80070005L) +#define E_PENDING ((HRESULT)0x8000000AL) +#define CO_E_INIT_TLS ((HRESULT)0x80004006L) +#define CO_E_INIT_SHARED_ALLOCATOR ((HRESULT)0x80004007L) +#define CO_E_INIT_MEMORY_ALLOCATOR ((HRESULT)0x80004008L) +#define CO_E_INIT_CLASS_CACHE ((HRESULT)0x80004009L) +#define CO_E_INIT_RPC_CHANNEL ((HRESULT)0x8000400AL) +#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL ((HRESULT)0x8000400BL) +#define CO_E_INIT_TLS_CHANNEL_CONTROL ((HRESULT)0x8000400CL) +#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR ((HRESULT)0x8000400DL) +#define CO_E_INIT_SCM_MUTEX_EXISTS ((HRESULT)0x8000400EL) +#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS ((HRESULT)0x8000400FL) +#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE ((HRESULT)0x80004010L) +#define CO_E_INIT_SCM_EXEC_FAILURE ((HRESULT)0x80004011L) +#define CO_E_INIT_ONLY_SINGLE_THREADED ((HRESULT)0x80004012L) +#define S_OK ((HRESULT)0x00000000L) +#define S_FALSE ((HRESULT)0x00000001L) +#define OLE_E_FIRST ((HRESULT)0x80040000L) +#define OLE_E_LAST ((HRESULT)0x800400FFL) +#define OLE_S_FIRST ((HRESULT)0x00040000L) +#define OLE_S_LAST ((HRESULT)0x000400FFL) +#define OLE_E_OLEVERB ((HRESULT)0x80040000L) +#define OLE_E_ADVF ((HRESULT)0x80040001L) +#define OLE_E_ENUM_NOMORE ((HRESULT)0x80040002L) +#define OLE_E_ADVISENOTSUPPORTED ((HRESULT)0x80040003L) +#define OLE_E_NOCONNECTION ((HRESULT)0x80040004L) +#define OLE_E_NOTRUNNING ((HRESULT)0x80040005L) +#define OLE_E_NOCACHE ((HRESULT)0x80040006L) +#define OLE_E_BLANK ((HRESULT)0x80040007L) +#define OLE_E_CLASSDIFF ((HRESULT)0x80040008L) +#define OLE_E_CANT_GETMONIKER ((HRESULT)0x80040009L) +#define OLE_E_CANT_BINDTOSOURCE ((HRESULT)0x8004000AL) +#define OLE_E_STATIC ((HRESULT)0x8004000BL) +#define OLE_E_PROMPTSAVECANCELLED ((HRESULT)0x8004000CL) +#define OLE_E_INVALIDRECT ((HRESULT)0x8004000DL) +#define OLE_E_WRONGCOMPOBJ ((HRESULT)0x8004000EL) +#define OLE_E_INVALIDHWND ((HRESULT)0x8004000FL) +#define OLE_E_NOT_INPLACEACTIVE ((HRESULT)0x80040010L) +#define OLE_E_CANTCONVERT ((HRESULT)0x80040011L) +#define OLE_E_NOSTORAGE ((HRESULT)0x80040012L) +#define DV_E_FORMATETC ((HRESULT)0x80040064L) +#define DV_E_DVTARGETDEVICE ((HRESULT)0x80040065L) +#define DV_E_STGMEDIUM ((HRESULT)0x80040066L) +#define DV_E_STATDATA ((HRESULT)0x80040067L) +#define DV_E_LINDEX ((HRESULT)0x80040068L) +#define DV_E_TYMED ((HRESULT)0x80040069L) +#define DV_E_CLIPFORMAT ((HRESULT)0x8004006AL) +#define DV_E_DVASPECT ((HRESULT)0x8004006BL) +#define DV_E_DVTARGETDEVICE_SIZE ((HRESULT)0x8004006CL) +#define DV_E_NOIVIEWOBJECT ((HRESULT)0x8004006DL) +#define DRAGDROP_E_FIRST ((HRESULT)0x80040100L) +#define DRAGDROP_E_LAST ((HRESULT)0x8004010FL) +#define DRAGDROP_S_FIRST ((HRESULT)0x00040100L) +#define DRAGDROP_S_LAST ((HRESULT)0x0004010FL) +#define DRAGDROP_E_NOTREGISTERED ((HRESULT)0x80040100L) +#define DRAGDROP_E_ALREADYREGISTERED ((HRESULT)0x80040101L) +#define DRAGDROP_E_INVALIDHWND ((HRESULT)0x80040102L) +#define CLASSFACTORY_E_FIRST ((HRESULT)0x80040110L) +#define CLASSFACTORY_E_LAST ((HRESULT)0x8004011FL) +#define CLASSFACTORY_S_FIRST ((HRESULT)0x00040110L) +#define CLASSFACTORY_S_LAST ((HRESULT)0x0004011FL) +#define CLASS_E_NOAGGREGATION ((HRESULT)0x80040110L) +#define CLASS_E_CLASSNOTAVAILABLE ((HRESULT)0x80040111L) +#define MARSHAL_E_FIRST ((HRESULT)0x80040120L) +#define MARSHAL_E_LAST ((HRESULT)0x8004012FL) +#define MARSHAL_S_FIRST ((HRESULT)0x00040120L) +#define MARSHAL_S_LAST ((HRESULT)0x0004012FL) +#define DATA_E_FIRST ((HRESULT)0x80040130L) +#define DATA_E_LAST ((HRESULT)0x8004013FL) +#define DATA_S_FIRST ((HRESULT)0x00040130L) +#define DATA_S_LAST ((HRESULT)0x0004013FL) +#define VIEW_E_FIRST ((HRESULT)0x80040140L) +#define VIEW_E_LAST ((HRESULT)0x8004014FL) +#define VIEW_S_FIRST ((HRESULT)0x00040140L) +#define VIEW_S_LAST ((HRESULT)0x0004014FL) +#define VIEW_E_DRAW ((HRESULT)0x80040140L) +#define REGDB_E_FIRST ((HRESULT)0x80040150L) +#define REGDB_E_LAST ((HRESULT)0x8004015FL) +#define REGDB_S_FIRST ((HRESULT)0x00040150L) +#define REGDB_S_LAST ((HRESULT)0x0004015FL) +#define REGDB_E_READREGDB ((HRESULT)0x80040150L) +#define REGDB_E_WRITEREGDB ((HRESULT)0x80040151L) +#define REGDB_E_KEYMISSING ((HRESULT)0x80040152L) +#define REGDB_E_INVALIDVALUE ((HRESULT)0x80040153L) +#define REGDB_E_CLASSNOTREG ((HRESULT)0x80040154L) +#define REGDB_E_IIDNOTREG ((HRESULT)0x80040155L) +#define CACHE_E_FIRST ((HRESULT)0x80040170L) +#define CACHE_E_LAST ((HRESULT)0x8004017FL) +#define CACHE_S_FIRST ((HRESULT)0x00040170L) +#define CACHE_S_LAST ((HRESULT)0x0004017FL) +#define CACHE_E_NOCACHE_UPDATED ((HRESULT)0x80040170L) +#define OLEOBJ_E_FIRST ((HRESULT)0x80040180L) +#define OLEOBJ_E_LAST ((HRESULT)0x8004018FL) +#define OLEOBJ_S_FIRST ((HRESULT)0x00040180L) +#define OLEOBJ_S_LAST ((HRESULT)0x0004018FL) +#define OLEOBJ_E_NOVERBS ((HRESULT)0x80040180L) +#define OLEOBJ_E_INVALIDVERB ((HRESULT)0x80040181L) +#define CLIENTSITE_E_FIRST ((HRESULT)0x80040190L) +#define CLIENTSITE_E_LAST ((HRESULT)0x8004019FL) +#define CLIENTSITE_S_FIRST ((HRESULT)0x00040190L) +#define CLIENTSITE_S_LAST ((HRESULT)0x0004019FL) +#define INPLACE_E_NOTUNDOABLE ((HRESULT)0x800401A0L) +#define INPLACE_E_NOTOOLSPACE ((HRESULT)0x800401A1L) +#define INPLACE_E_FIRST ((HRESULT)0x800401A0L) +#define INPLACE_E_LAST ((HRESULT)0x800401AFL) +#define INPLACE_S_FIRST ((HRESULT)0x000401A0L) +#define INPLACE_S_LAST ((HRESULT)0x000401AFL) +#define ENUM_E_FIRST ((HRESULT)0x800401B0L) +#define ENUM_E_LAST ((HRESULT)0x800401BFL) +#define ENUM_S_FIRST ((HRESULT)0x000401B0L) +#define ENUM_S_LAST ((HRESULT)0x000401BFL) +#define CONVERT10_E_FIRST ((HRESULT)0x800401C0L) +#define CONVERT10_E_LAST ((HRESULT)0x800401CFL) +#define CONVERT10_S_FIRST ((HRESULT)0x000401C0L) +#define CONVERT10_S_LAST ((HRESULT)0x000401CFL) +#define CONVERT10_E_OLESTREAM_GET ((HRESULT)0x800401C0L) +#define CONVERT10_E_OLESTREAM_PUT ((HRESULT)0x800401C1L) +#define CONVERT10_E_OLESTREAM_FMT ((HRESULT)0x800401C2L) +#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB ((HRESULT)0x800401C3L) +#define CONVERT10_E_STG_FMT ((HRESULT)0x800401C4L) +#define CONVERT10_E_STG_NO_STD_STREAM ((HRESULT)0x800401C5L) +#define CONVERT10_E_STG_DIB_TO_BITMAP ((HRESULT)0x800401C6L) +#define CLIPBRD_E_FIRST ((HRESULT)0x800401D0L) +#define CLIPBRD_E_LAST ((HRESULT)0x800401DFL) +#define CLIPBRD_S_FIRST ((HRESULT)0x000401D0L) +#define CLIPBRD_S_LAST ((HRESULT)0x000401DFL) +#define CLIPBRD_E_CANT_OPEN ((HRESULT)0x800401D0L) +#define CLIPBRD_E_CANT_EMPTY ((HRESULT)0x800401D1L) +#define CLIPBRD_E_CANT_SET ((HRESULT)0x800401D2L) +#define CLIPBRD_E_BAD_DATA ((HRESULT)0x800401D3L) +#define CLIPBRD_E_CANT_CLOSE ((HRESULT)0x800401D4L) +#define MK_E_FIRST ((HRESULT)0x800401E0L) +#define MK_E_LAST ((HRESULT)0x800401EFL) +#define MK_S_FIRST ((HRESULT)0x000401E0L) +#define MK_S_LAST ((HRESULT)0x000401EFL) +#define MK_E_CONNECTMANUALLY ((HRESULT)0x800401E0L) +#define MK_E_EXCEEDEDDEADLINE ((HRESULT)0x800401E1L) +#define MK_E_NEEDGENERIC ((HRESULT)0x800401E2L) +#define MK_E_UNAVAILABLE ((HRESULT)0x800401E3L) +#define MK_E_SYNTAX ((HRESULT)0x800401E4L) +#define MK_E_NOOBJECT ((HRESULT)0x800401E5L) +#define MK_E_INVALIDEXTENSION ((HRESULT)0x800401E6L) +#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED ((HRESULT)0x800401E7L) +#define MK_E_NOTBINDABLE ((HRESULT)0x800401E8L) +#define MK_E_NOTBOUND ((HRESULT)0x800401E9L) +#define MK_E_CANTOPENFILE ((HRESULT)0x800401EAL) +#define MK_E_MUSTBOTHERUSER ((HRESULT)0x800401EBL) +#define MK_E_NOINVERSE ((HRESULT)0x800401ECL) +#define MK_E_NOSTORAGE ((HRESULT)0x800401EDL) +#define MK_E_NOPREFIX ((HRESULT)0x800401EEL) +#define MK_E_ENUMERATION_FAILED ((HRESULT)0x800401EFL) +#define CO_E_FIRST ((HRESULT)0x800401F0L) +#define CO_E_LAST ((HRESULT)0x800401FFL) +#define CO_S_FIRST ((HRESULT)0x000401F0L) +#define CO_S_LAST ((HRESULT)0x000401FFL) +#define CO_E_NOTINITIALIZED ((HRESULT)0x800401F0L) +#define CO_E_ALREADYINITIALIZED ((HRESULT)0x800401F1L) +#define CO_E_CANTDETERMINECLASS ((HRESULT)0x800401F2L) +#define CO_E_CLASSSTRING ((HRESULT)0x800401F3L) +#define CO_E_IIDSTRING ((HRESULT)0x800401F4L) +#define CO_E_APPNOTFOUND ((HRESULT)0x800401F5L) +#define CO_E_APPSINGLEUSE ((HRESULT)0x800401F6L) +#define CO_E_ERRORINAPP ((HRESULT)0x800401F7L) +#define CO_E_DLLNOTFOUND ((HRESULT)0x800401F8L) +#define CO_E_ERRORINDLL ((HRESULT)0x800401F9L) +#define CO_E_WRONGOSFORAPP ((HRESULT)0x800401FAL) +#define CO_E_OBJNOTREG ((HRESULT)0x800401FBL) +#define CO_E_OBJISREG ((HRESULT)0x800401FCL) +#define CO_E_OBJNOTCONNECTED ((HRESULT)0x800401FDL) +#define CO_E_APPDIDNTREG ((HRESULT)0x800401FEL) +#define CO_E_RELEASED ((HRESULT)0x800401FFL) +#define OLE_S_USEREG ((HRESULT)0x00040000L) +#define OLE_S_STATIC ((HRESULT)0x00040001L) +#define OLE_S_MAC_CLIPFORMAT ((HRESULT)0x00040002L) +#define DRAGDROP_S_DROP ((HRESULT)0x00040100L) +#define DRAGDROP_S_CANCEL ((HRESULT)0x00040101L) +#define DRAGDROP_S_USEDEFAULTCURSORS ((HRESULT)0x00040102L) +#define DATA_S_SAMEFORMATETC ((HRESULT)0x00040130L) +#define VIEW_S_ALREADY_FROZEN ((HRESULT)0x00040140L) +#define CACHE_S_FORMATETC_NOTSUPPORTED ((HRESULT)0x00040170L) +#define CACHE_S_SAMECACHE ((HRESULT)0x00040171L) +#define CACHE_S_SOMECACHES_NOTUPDATED ((HRESULT)0x00040172L) +#define OLEOBJ_S_INVALIDVERB ((HRESULT)0x00040180L) +#define OLEOBJ_S_CANNOT_DOVERB_NOW ((HRESULT)0x00040181L) +#define OLEOBJ_S_INVALIDHWND ((HRESULT)0x00040182L) +#define INPLACE_S_TRUNCATED ((HRESULT)0x000401A0L) +#define CONVERT10_S_NO_PRESENTATION ((HRESULT)0x000401C0L) +#define MK_S_REDUCED_TO_SELF ((HRESULT)0x000401E2L) +#define MK_S_ME ((HRESULT)0x000401E4L) +#define MK_S_HIM ((HRESULT)0x000401E5L) +#define MK_S_US ((HRESULT)0x000401E6L) +#define MK_S_MONIKERALREADYREGISTERED ((HRESULT)0x000401E7L) +#define CO_E_CLASS_CREATE_FAILED ((HRESULT)0x80080001L) +#define CO_E_SCM_ERROR ((HRESULT)0x80080002L) +#define CO_E_SCM_RPC_FAILURE ((HRESULT)0x80080003L) +#define CO_E_BAD_PATH ((HRESULT)0x80080004L) +#define CO_E_SERVER_EXEC_FAILURE ((HRESULT)0x80080005L) +#define CO_E_OBJSRV_RPC_FAILURE ((HRESULT)0x80080006L) +#define MK_E_NO_NORMALIZED ((HRESULT)0x80080007L) +#define CO_E_SERVER_STOPPING ((HRESULT)0x80080008L) +#define MEM_E_INVALID_ROOT ((HRESULT)0x80080009L) +#define MEM_E_INVALID_LINK ((HRESULT)0x80080010L) +#define MEM_E_INVALID_SIZE ((HRESULT)0x80080011L) +#define CO_S_NOTALLINTERFACES ((HRESULT)0x00080012L) +#define DISP_E_UNKNOWNINTERFACE ((HRESULT)0x80020001L) +#define DISP_E_MEMBERNOTFOUND ((HRESULT)0x80020003L) +#define DISP_E_PARAMNOTFOUND ((HRESULT)0x80020004L) +#define DISP_E_TYPEMISMATCH ((HRESULT)0x80020005L) +#define DISP_E_UNKNOWNNAME ((HRESULT)0x80020006L) +#define DISP_E_NONAMEDARGS ((HRESULT)0x80020007L) +#define DISP_E_BADVARTYPE ((HRESULT)0x80020008L) +#define DISP_E_EXCEPTION ((HRESULT)0x80020009L) +#define DISP_E_OVERFLOW ((HRESULT)0x8002000AL) +#define DISP_E_BADINDEX ((HRESULT)0x8002000BL) +#define DISP_E_UNKNOWNLCID ((HRESULT)0x8002000CL) +#define DISP_E_ARRAYISLOCKED ((HRESULT)0x8002000DL) +#define DISP_E_BADPARAMCOUNT ((HRESULT)0x8002000EL) +#define DISP_E_PARAMNOTOPTIONAL ((HRESULT)0x8002000FL) +#define DISP_E_BADCALLEE ((HRESULT)0x80020010L) +#define DISP_E_NOTACOLLECTION ((HRESULT)0x80020011L) +#define TYPE_E_BUFFERTOOSMALL ((HRESULT)0x80028016L) +#define TYPE_E_INVDATAREAD ((HRESULT)0x80028018L) +#define TYPE_E_UNSUPFORMAT ((HRESULT)0x80028019L) +#define TYPE_E_REGISTRYACCESS ((HRESULT)0x8002801CL) +#define TYPE_E_LIBNOTREGISTERED ((HRESULT)0x8002801DL) +#define TYPE_E_UNDEFINEDTYPE ((HRESULT)0x80028027L) +#define TYPE_E_QUALIFIEDNAMEDISALLOWED ((HRESULT)0x80028028L) +#define TYPE_E_INVALIDSTATE ((HRESULT)0x80028029L) +#define TYPE_E_WRONGTYPEKIND ((HRESULT)0x8002802AL) +#define TYPE_E_ELEMENTNOTFOUND ((HRESULT)0x8002802BL) +#define TYPE_E_AMBIGUOUSNAME ((HRESULT)0x8002802CL) +#define TYPE_E_NAMECONFLICT ((HRESULT)0x8002802DL) +#define TYPE_E_UNKNOWNLCID ((HRESULT)0x8002802EL) +#define TYPE_E_DLLFUNCTIONNOTFOUND ((HRESULT)0x8002802FL) +#define TYPE_E_BADMODULEKIND ((HRESULT)0x800288BDL) +#define TYPE_E_SIZETOOBIG ((HRESULT)0x800288C5L) +#define TYPE_E_DUPLICATEID ((HRESULT)0x800288C6L) +#define TYPE_E_INVALIDID ((HRESULT)0x800288CFL) +#define TYPE_E_TYPEMISMATCH ((HRESULT)0x80028CA0L) +#define TYPE_E_OUTOFBOUNDS ((HRESULT)0x80028CA1L) +#define TYPE_E_IOERROR ((HRESULT)0x80028CA2L) +#define TYPE_E_CANTCREATETMPFILE ((HRESULT)0x80028CA3L) +#define TYPE_E_CANTLOADLIBRARY ((HRESULT)0x80029C4AL) +#define TYPE_E_INCONSISTENTPROPFUNCS ((HRESULT)0x80029C83L) +#define TYPE_E_CIRCULARTYPE ((HRESULT)0x80029C84L) +#define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L) +#define STG_E_FILENOTFOUND ((HRESULT)0x80030002L) +#define STG_E_PATHNOTFOUND ((HRESULT)0x80030003L) +#define STG_E_TOOMANYOPENFILES ((HRESULT)0x80030004L) +#define STG_E_ACCESSDENIED ((HRESULT)0x80030005L) +#define STG_E_INVALIDHANDLE ((HRESULT)0x80030006L) +#define STG_E_INSUFFICIENTMEMORY ((HRESULT)0x80030008L) +#define STG_E_INVALIDPOINTER ((HRESULT)0x80030009L) +#define STG_E_NOMOREFILES ((HRESULT)0x80030012L) +#define STG_E_DISKISWRITEPROTECTED ((HRESULT)0x80030013L) +#define STG_E_SEEKERROR ((HRESULT)0x80030019L) +#define STG_E_WRITEFAULT ((HRESULT)0x8003001DL) +#define STG_E_READFAULT ((HRESULT)0x8003001EL) +#define STG_E_SHAREVIOLATION ((HRESULT)0x80030020L) +#define STG_E_LOCKVIOLATION ((HRESULT)0x80030021L) +#define STG_E_FILEALREADYEXISTS ((HRESULT)0x80030050L) +#define STG_E_INVALIDPARAMETER ((HRESULT)0x80030057L) +#define STG_E_MEDIUMFULL ((HRESULT)0x80030070L) +#define STG_E_ABNORMALAPIEXIT ((HRESULT)0x800300FAL) +#define STG_E_INVALIDHEADER ((HRESULT)0x800300FBL) +#define STG_E_INVALIDNAME ((HRESULT)0x800300FCL) +#define STG_E_UNKNOWN ((HRESULT)0x800300FDL) +#define STG_E_UNIMPLEMENTEDFUNCTION ((HRESULT)0x800300FEL) +#define STG_E_INVALIDFLAG ((HRESULT)0x800300FFL) +#define STG_E_INUSE ((HRESULT)0x80030100L) +#define STG_E_NOTCURRENT ((HRESULT)0x80030101L) +#define STG_E_REVERTED ((HRESULT)0x80030102L) +#define STG_E_CANTSAVE ((HRESULT)0x80030103L) +#define STG_E_OLDFORMAT ((HRESULT)0x80030104L) +#define STG_E_OLDDLL ((HRESULT)0x80030105L) +#define STG_E_SHAREREQUIRED ((HRESULT)0x80030106L) +#define STG_E_NOTFILEBASEDSTORAGE ((HRESULT)0x80030107L) +#define STG_E_EXTANTMARSHALLINGS ((HRESULT)0x80030108L) +#define STG_S_CONVERTED ((HRESULT)0x00030200L) +#define RPC_E_CALL_REJECTED ((HRESULT)0x80010001L) +#define RPC_E_CALL_CANCELED ((HRESULT)0x80010002L) +#define RPC_E_CANTPOST_INSENDCALL ((HRESULT)0x80010003L) +#define RPC_E_CANTCALLOUT_INASYNCCALL ((HRESULT)0x80010004L) +#define RPC_E_CANTCALLOUT_INEXTERNALCALL ((HRESULT)0x80010005L) +#define RPC_E_CONNECTION_TERMINATED ((HRESULT)0x80010006L) +#define RPC_E_SERVER_DIED ((HRESULT)0x80010007L) +#define RPC_E_CLIENT_DIED ((HRESULT)0x80010008L) +#define RPC_E_INVALID_DATAPACKET ((HRESULT)0x80010009L) +#define RPC_E_CANTTRANSMIT_CALL ((HRESULT)0x8001000AL) +#define RPC_E_CLIENT_CANTMARSHAL_DATA ((HRESULT)0x8001000BL) +#define RPC_E_CLIENT_CANTUNMARSHAL_DATA ((HRESULT)0x8001000CL) +#define RPC_E_SERVER_CANTMARSHAL_DATA ((HRESULT)0x8001000DL) +#define RPC_E_SERVER_CANTUNMARSHAL_DATA ((HRESULT)0x8001000EL) +#define RPC_E_INVALID_DATA ((HRESULT)0x8001000FL) +#define RPC_E_INVALID_PARAMETER ((HRESULT)0x80010010L) +#define RPC_E_CANTCALLOUT_AGAIN ((HRESULT)0x80010011L) +#define RPC_E_SERVER_DIED_DNE ((HRESULT)0x80010012L) +#define RPC_E_SYS_CALL_FAILED ((HRESULT)0x80010100L) +#define RPC_E_OUT_OF_RESOURCES ((HRESULT)0x80010101L) +#define RPC_E_ATTEMPTED_MULTITHREAD ((HRESULT)0x80010102L) +#define RPC_E_NOT_REGISTERED ((HRESULT)0x80010103L) +#define RPC_E_FAULT ((HRESULT)0x80010104L) +#define RPC_E_SERVERFAULT ((HRESULT)0x80010105L) +#define RPC_E_CHANGED_MODE ((HRESULT)0x80010106L) +#define RPC_E_INVALIDMETHOD ((HRESULT)0x80010107L) +#define RPC_E_DISCONNECTED ((HRESULT)0x80010108L) +#define RPC_E_RETRY ((HRESULT)0x80010109L) +#define RPC_E_SERVERCALL_RETRYLATER ((HRESULT)0x8001010AL) +#define RPC_E_SERVERCALL_REJECTED ((HRESULT)0x8001010BL) +#define RPC_E_INVALID_CALLDATA ((HRESULT)0x8001010CL) +#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL ((HRESULT)0x8001010DL) +#define RPC_E_WRONG_THREAD ((HRESULT)0x8001010EL) +#define RPC_E_THREAD_NOT_INIT ((HRESULT)0x8001010FL) +#define RPC_E_UNEXPECTED ((HRESULT)0x8001FFFFL) + +#define NTE_BAD_UID ((HRESULT)0x80090001L) +#define NTE_BAD_HASH ((HRESULT)0x80090002L) +#define NTE_BAD_KEY ((HRESULT)0x80090003L) +#define NTE_BAD_LEN ((HRESULT)0x80090004L) +#define NTE_BAD_DATA ((HRESULT)0x80090005L) +#define NTE_BAD_SIGNATURE ((HRESULT)0x80090006L) +#define NTE_BAD_VER ((HRESULT)0x80090007L) +#define NTE_BAD_ALGID ((HRESULT)0x80090008L) +#define NTE_BAD_FLAGS ((HRESULT)0x80090009L) +#define NTE_BAD_TYPE ((HRESULT)0x8009000AL) +#define NTE_BAD_KEY_STATE ((HRESULT)0x8009000BL) +#define NTE_BAD_HASH_STATE ((HRESULT)0x8009000CL) +#define NTE_NO_KEY ((HRESULT)0x8009000DL) +#define NTE_NO_MEMORY ((HRESULT)0x8009000EL) +#define NTE_EXISTS ((HRESULT)0x8009000FL) +#define NTE_PERM ((HRESULT)0x80090010L) +#define NTE_NOT_FOUND ((HRESULT)0x80090011L) +#define NTE_DOUBLE_ENCRYPT ((HRESULT)0x80090012L) +#define NTE_BAD_PROVIDER ((HRESULT)0x80090013L) +#define NTE_BAD_PROV_TYPE ((HRESULT)0x80090014L) +#define NTE_BAD_PUBLIC_KEY ((HRESULT)0x80090015L) +#define NTE_BAD_KEYSET ((HRESULT)0x80090016L) +#define NTE_PROV_TYPE_NOT_DEF ((HRESULT)0x80090017L) +#define NTE_PROV_TYPE_ENTRY_BAD ((HRESULT)0x80090018L) +#define NTE_KEYSET_NOT_DEF ((HRESULT)0x80090019L) +#define NTE_KEYSET_ENTRY_BAD ((HRESULT)0x8009001AL) +#define NTE_PROV_TYPE_NO_MATCH ((HRESULT)0x8009001BL) +#define NTE_SIGNATURE_FILE_BAD ((HRESULT)0x8009001CL) +#define NTE_PROVIDER_DLL_FAIL ((HRESULT)0x8009001DL) +#define NTE_PROV_DLL_NOT_FOUND ((HRESULT)0x8009001EL) +#define NTE_BAD_KEYSET_PARAM ((HRESULT)0x8009001FL) +#define NTE_FAIL ((HRESULT)0x80090020L) +#define NTE_SYS_ERR ((HRESULT)0x80090021L) +/* #define NTE_TOKEN_KEYSET_STORAGE ??? */ + +#endif diff --git a/reactos/w32api/include/wingdi.h b/reactos/w32api/include/wingdi.h new file mode 100644 index 00000000000..5c5f9a0844f --- /dev/null +++ b/reactos/w32api/include/wingdi.h @@ -0,0 +1,2981 @@ +#ifndef _WINGDI_H +#define _WINGDI_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define WINGDIAPI +#define BI_RGB 0 +#define BI_RLE8 1 +#define BI_RLE4 2 +#define BI_BITFIELDS 3 +#define BI_JPEG 4 +#define BI_PNG 5 +#define LF_FACESIZE 32 +#define LF_FULLFACESIZE 64 +#define CA_NEGATIVE 1 +#define CA_LOG_FILTER 2 +#define ILLUMINANT_DEVICE_DEFAULT 0 +#define ILLUMINANT_A 1 +#define ILLUMINANT_B 2 +#define ILLUMINANT_C 3 +#define ILLUMINANT_D50 4 +#define ILLUMINANT_D55 5 +#define ILLUMINANT_D65 6 +#define ILLUMINANT_D75 7 +#define ILLUMINANT_F2 8 +#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2 +#define ILLUMINANT_TUNGSTEN ILLUMINANT_A +#define ILLUMINANT_DAYLIGHT ILLUMINANT_C +#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2 +#define ILLUMINANT_NTSC ILLUMINANT_C +#define RGB_GAMMA_MIN 2500 +#define RGB_GAMMA_MAX 65000 +#define REFERENCE_WHITE_MIN 6000 +#define REFERENCE_WHITE_MAX 10000 +#define REFERENCE_BLACK_MIN 0 +#define REFERENCE_BLACK_MAX 4000 +#define COLOR_ADJ_MIN (-100) +#define COLOR_ADJ_MAX 100 +#define CCHDEVICENAME 32 +#define CCHFORMNAME 32 +#define DI_COMPAT 4 +#define DI_DEFAULTSIZE 8 +#define DI_IMAGE 2 +#define DI_MASK 1 +#define DI_NORMAL 3 +#define DI_APPBANDING 1 +#define EMR_HEADER 1 +#define EMR_POLYBEZIER 2 +#define EMR_POLYGON 3 +#define EMR_POLYLINE 4 +#define EMR_POLYBEZIERTO 5 +#define EMR_POLYLINETO 6 +#define EMR_POLYPOLYLINE 7 +#define EMR_POLYPOLYGON 8 +#define EMR_SETWINDOWEXTEX 9 +#define EMR_SETWINDOWORGEX 10 +#define EMR_SETVIEWPORTEXTEX 11 +#define EMR_SETVIEWPORTORGEX 12 +#define EMR_SETBRUSHORGEX 13 +#define EMR_EOF 14 +#define EMR_SETPIXELV 15 +#define EMR_SETMAPPERFLAGS 16 +#define EMR_SETMAPMODE 17 +#define EMR_SETBKMODE 18 +#define EMR_SETPOLYFILLMODE 19 +#define EMR_SETROP2 20 +#define EMR_SETSTRETCHBLTMODE 21 +#define EMR_SETTEXTALIGN 22 +#define EMR_SETCOLORADJUSTMENT 23 +#define EMR_SETTEXTCOLOR 24 +#define EMR_SETBKCOLOR 25 +#define EMR_OFFSETCLIPRGN 26 +#define EMR_MOVETOEX 27 +#define EMR_SETMETARGN 28 +#define EMR_EXCLUDECLIPRECT 29 +#define EMR_INTERSECTCLIPRECT 30 +#define EMR_SCALEVIEWPORTEXTEX 31 +#define EMR_SCALEWINDOWEXTEX 32 +#define EMR_SAVEDC 33 +#define EMR_RESTOREDC 34 +#define EMR_SETWORLDTRANSFORM 35 +#define EMR_MODIFYWORLDTRANSFORM 36 +#define EMR_SELECTOBJECT 37 +#define EMR_CREATEPEN 38 +#define EMR_CREATEBRUSHINDIRECT 39 +#define EMR_DELETEOBJECT 40 +#define EMR_ANGLEARC 41 +#define EMR_ELLIPSE 42 +#define EMR_RECTANGLE 43 +#define EMR_ROUNDRECT 44 +#define EMR_ARC 45 +#define EMR_CHORD 46 +#define EMR_PIE 47 +#define EMR_SELECTPALETTE 48 +#define EMR_CREATEPALETTE 49 +#define EMR_SETPALETTEENTRIES 50 +#define EMR_RESIZEPALETTE 51 +#define EMR_REALIZEPALETTE 52 +#define EMR_EXTFLOODFILL 53 +#define EMR_LINETO 54 +#define EMR_ARCTO 55 +#define EMR_POLYDRAW 56 +#define EMR_SETARCDIRECTION 57 +#define EMR_SETMITERLIMIT 58 +#define EMR_BEGINPATH 59 +#define EMR_ENDPATH 60 +#define EMR_CLOSEFIGURE 61 +#define EMR_FILLPATH 62 +#define EMR_STROKEANDFILLPATH 63 +#define EMR_STROKEPATH 64 +#define EMR_FLATTENPATH 65 +#define EMR_WIDENPATH 66 +#define EMR_SELECTCLIPPATH 67 +#define EMR_ABORTPATH 68 +#define EMR_GDICOMMENT 70 +#define EMR_FILLRGN 71 +#define EMR_FRAMERGN 72 +#define EMR_INVERTRGN 73 +#define EMR_PAINTRGN 74 +#define EMR_EXTSELECTCLIPRGN 75 +#define EMR_BITBLT 76 +#define EMR_STRETCHBLT 77 +#define EMR_MASKBLT 78 +#define EMR_PLGBLT 79 +#define EMR_SETDIBITSTODEVICE 80 +#define EMR_STRETCHDIBITS 81 +#define EMR_EXTCREATEFONTINDIRECTW 82 +#define EMR_EXTTEXTOUTA 83 +#define EMR_EXTTEXTOUTW 84 +#define EMR_POLYBEZIER16 85 +#define EMR_POLYGON16 86 +#define EMR_POLYLINE16 87 +#define EMR_POLYBEZIERTO16 88 +#define EMR_POLYLINETO16 89 +#define EMR_POLYPOLYLINE16 90 +#define EMR_POLYPOLYGON16 91 +#define EMR_POLYDRAW16 92 +#define EMR_CREATEMONOBRUSH 93 +#define EMR_CREATEDIBPATTERNBRUSHPT 94 +#define EMR_EXTCREATEPEN 95 +#define EMR_POLYTEXTOUTA 96 +#define EMR_POLYTEXTOUTW 97 +#define EMR_SETICMMODE 98 +#define EMR_CREATECOLORSPACE 99 +#define EMR_SETCOLORSPACE 100 +#define EMR_DELETECOLORSPACE 101 +#define EMR_GLSRECORD 102 +#define EMR_GLSBOUNDEDRECORD 103 +#define EMR_PIXELFORMAT 104 +#define ENHMETA_SIGNATURE 1179469088 +#define EPS_SIGNATURE 0x46535045 +#if (_WIN32_WINNT >= 0x0500) +#define FR_PRIVATE 0x10 +#define FR_NOT_ENUM 0x20 +#endif +#define META_SETBKCOLOR 0x201 +#define META_SETBKMODE 0x102 +#define META_SETMAPMODE 0x103 +#define META_SETROP2 0x104 +#define META_SETRELABS 0x105 +#define META_SETPOLYFILLMODE 0x106 +#define META_SETSTRETCHBLTMODE 0x107 +#define META_SETTEXTCHAREXTRA 0x108 +#define META_SETTEXTCOLOR 0x209 +#define META_SETTEXTJUSTIFICATION 0x20A +#define META_SETWINDOWORG 0x20B +#define META_SETWINDOWEXT 0x20C +#define META_SETVIEWPORTORG 0x20D +#define META_SETVIEWPORTEXT 0x20E +#define META_OFFSETWINDOWORG 0x20F +#define META_SCALEWINDOWEXT 0x410 +#define META_OFFSETVIEWPORTORG 0x211 +#define META_SCALEVIEWPORTEXT 0x412 +#define META_LINETO 0x213 +#define META_MOVETO 0x214 +#define META_EXCLUDECLIPRECT 0x415 +#define META_INTERSECTCLIPRECT 0x416 +#define META_ARC 0x817 +#define META_ELLIPSE 0x418 +#define META_FLOODFILL 0x419 +#define META_PIE 0x81A +#define META_RECTANGLE 0x41B +#define META_ROUNDRECT 0x61C +#define META_PATBLT 0x61D +#define META_SAVEDC 0x1E +#define META_SETPIXEL 0x41F +#define META_OFFSETCLIPRGN 0x220 +#define META_TEXTOUT 0x521 +#define META_BITBLT 0x922 +#define META_STRETCHBLT 0xB23 +#define META_POLYGON 0x324 +#define META_POLYLINE 0x325 +#define META_ESCAPE 0x626 +#define META_RESTOREDC 0x127 +#define META_FILLREGION 0x228 +#define META_FRAMEREGION 0x429 +#define META_INVERTREGION 0x12A +#define META_PAINTREGION 0x12B +#define META_SELECTCLIPREGION 0x12C +#define META_SELECTOBJECT 0x12D +#define META_SETTEXTALIGN 0x12E +#define META_CHORD 0x830 +#define META_SETMAPPERFLAGS 0x231 +#define META_EXTTEXTOUT 0xa32 +#define META_SETDIBTODEV 0xd33 +#define META_SELECTPALETTE 0x234 +#define META_REALIZEPALETTE 0x35 +#define META_ANIMATEPALETTE 0x436 +#define META_SETPALENTRIES 0x37 +#define META_POLYPOLYGON 0x538 +#define META_RESIZEPALETTE 0x139 +#define META_DIBBITBLT 0x940 +#define META_DIBSTRETCHBLT 0xb41 +#define META_DIBCREATEPATTERNBRUSH 0x142 +#define META_STRETCHDIB 0xf43 +#define META_EXTFLOODFILL 0x548 +#define META_DELETEOBJECT 0x1f0 +#define META_CREATEPALETTE 0xf7 +#define META_CREATEPATTERNBRUSH 0x1F9 +#define META_CREATEPENINDIRECT 0x2FA +#define META_CREATEFONTINDIRECT 0x2FB +#define META_CREATEBRUSHINDIRECT 0x2FC +#define META_CREATEREGION 0x6FF +#define PT_MOVETO 6 +#define PT_LINETO 2 +#define PT_BEZIERTO 4 +#define PT_CLOSEFIGURE 1 +#define ELF_VENDOR_SIZE 4 +#define ELF_VERSION 0 +#define ELF_CULTURE_LATIN 0 +#define PFD_TYPE_RGBA 0 +#define PFD_TYPE_COLORINDEX 1 +#define PFD_MAIN_PLANE 0 +#define PFD_OVERLAY_PLANE 1 +#define PFD_UNDERLAY_PLANE (-1) +#define PFD_DOUBLEBUFFER 1 +#define PFD_STEREO 2 +#define PFD_DRAW_TO_WINDOW 4 +#define PFD_DRAW_TO_BITMAP 8 +#define PFD_SUPPORT_GDI 16 +#define PFD_SUPPORT_OPENGL 32 +#define PFD_GENERIC_FORMAT 64 +#define PFD_NEED_PALETTE 128 +#define PFD_NEED_SYSTEM_PALETTE 0x00000100 +#define PFD_SWAP_EXCHANGE 0x00000200 +#define PFD_SWAP_COPY 0x00000400 +#define PFD_SWAP_LAYER_BUFFERS 0x00000800 +#define PFD_GENERIC_ACCELERATED 0x00001000 +#define PFD_DEPTH_DONTCARE 0x20000000 +#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000 +#define PFD_STEREO_DONTCARE 0x80000000 +#define SP_ERROR (-1) +#define SP_OUTOFDISK (-4) +#define SP_OUTOFMEMORY (-5) +#define SP_USERABORT (-3) +#define SP_APPABORT (-2) +#define BLACKNESS 0x42 +#define NOTSRCERASE 0x1100A6 +#define NOTSRCCOPY 0x330008 +#define SRCERASE 0x440328 +#define DSTINVERT 0x550009 +#define PATINVERT 0x5A0049 +#define SRCINVERT 0x660046 +#define SRCAND 0x8800C6 +#define MERGEPAINT 0xBB0226 +#define MERGECOPY 0xC000CA +#define SRCCOPY 0xCC0020 +#define SRCPAINT 0xEE0086 +#define PATCOPY 0xF00021 +#define PATPAINT 0xFB0A09 +#define WHITENESS 0xFF0062 +#define R2_BLACK 1 +#define R2_COPYPEN 13 +#define R2_MASKNOTPEN 3 +#define R2_MASKPEN 9 +#define R2_MASKPENNOT 5 +#define R2_MERGENOTPEN 12 +#define R2_MERGEPEN 15 +#define R2_MERGEPENNOT 14 +#define R2_NOP 11 +#define R2_NOT 6 +#define R2_NOTCOPYPEN 4 +#define R2_NOTMASKPEN 8 +#define R2_NOTMERGEPEN 2 +#define R2_NOTXORPEN 10 +#define R2_WHITE 16 +#define R2_XORPEN 7 +#define CM_OUT_OF_GAMUT 255 +#define CM_IN_GAMUT 0 +#define RGN_AND 1 +#define RGN_COPY 5 +#define RGN_DIFF 4 +#define RGN_OR 2 +#define RGN_XOR 3 +#define NULLREGION 1 +#define SIMPLEREGION 2 +#define COMPLEXREGION 3 +#define ERROR 0 +#define CBM_INIT 4 +#define DIB_PAL_COLORS 1 +#define DIB_RGB_COLORS 0 +#define FW_DONTCARE 0 +#define FW_THIN 100 +#define FW_EXTRALIGHT 200 +#define FW_ULTRALIGHT FW_EXTRALIGHT +#define FW_LIGHT 300 +#define FW_NORMAL 400 +#define FW_REGULAR 400 +#define FW_MEDIUM 500 +#define FW_SEMIBOLD 600 +#define FW_DEMIBOLD FW_SEMIBOLD +#define FW_BOLD 700 +#define FW_EXTRABOLD 800 +#define FW_ULTRABOLD FW_EXTRABOLD +#define FW_HEAVY 900 +#define FW_BLACK FW_HEAVY +#define ANSI_CHARSET 0 +#define DEFAULT_CHARSET 1 +#define SYMBOL_CHARSET 2 +#define SHIFTJIS_CHARSET 128 +#define HANGEUL_CHARSET 129 +#define HANGUL_CHARSET 129 +#define GB2312_CHARSET 134 +#define CHINESEBIG5_CHARSET 136 +#define GREEK_CHARSET 161 +#define TURKISH_CHARSET 162 +#define HEBREW_CHARSET 177 +#define ARABIC_CHARSET 178 +#define BALTIC_CHARSET 186 +#define RUSSIAN_CHARSET 204 +#define THAI_CHARSET 222 +#define EASTEUROPE_CHARSET 238 +#define OEM_CHARSET 255 +#define JOHAB_CHARSET 130 +#define VIETNAMESE_CHARSET 163 +#define MAC_CHARSET 77 +#define OUT_DEFAULT_PRECIS 0 +#define OUT_STRING_PRECIS 1 +#define OUT_CHARACTER_PRECIS 2 +#define OUT_STROKE_PRECIS 3 +#define OUT_TT_PRECIS 4 +#define OUT_DEVICE_PRECIS 5 +#define OUT_RASTER_PRECIS 6 +#define OUT_TT_ONLY_PRECIS 7 +#define OUT_OUTLINE_PRECIS 8 +#define CLIP_DEFAULT_PRECIS 0 +#define CLIP_CHARACTER_PRECIS 1 +#define CLIP_STROKE_PRECIS 2 +#define CLIP_MASK 15 +#define CLIP_LH_ANGLES 16 +#define CLIP_TT_ALWAYS 32 +#define CLIP_EMBEDDED 128 +#define DEFAULT_QUALITY 0 +#define DRAFT_QUALITY 1 +#define PROOF_QUALITY 2 +#define NONANTIALIASED_QUALITY 3 +#define ANTIALIASED_QUALITY 4 +#define DEFAULT_PITCH 0 +#define FIXED_PITCH 1 +#define VARIABLE_PITCH 2 +#define MONO_FONT 8 +#define FF_DECORATIVE 80 +#define FF_DONTCARE 0 +#define FF_MODERN 48 +#define FF_ROMAN 16 +#define FF_SCRIPT 64 +#define FF_SWISS 32 +#define PANOSE_COUNT 10 +#define PAN_FAMILYTYPE_INDEX 0 +#define PAN_SERIFSTYLE_INDEX 1 +#define PAN_WEIGHT_INDEX 2 +#define PAN_PROPORTION_INDEX 3 +#define PAN_CONTRAST_INDEX 4 +#define PAN_STROKEVARIATION_INDEX 5 +#define PAN_ARMSTYLE_INDEX 6 +#define PAN_LETTERFORM_INDEX 7 +#define PAN_MIDLINE_INDEX 8 +#define PAN_XHEIGHT_INDEX 9 +#define PAN_CULTURE_LATIN 0 +#define PAN_ANY 0 +#define PAN_NO_FIT 1 +#define PAN_FAMILY_TEXT_DISPLAY 2 +#define PAN_FAMILY_SCRIPT 3 +#define PAN_FAMILY_DECORATIVE 4 +#define PAN_FAMILY_PICTORIAL 5 +#define PAN_SERIF_COVE 2 +#define PAN_SERIF_OBTUSE_COVE 3 +#define PAN_SERIF_SQUARE_COVE 4 +#define PAN_SERIF_OBTUSE_SQUARE_COVE 5 +#define PAN_SERIF_SQUARE 6 +#define PAN_SERIF_THIN 7 +#define PAN_SERIF_BONE 8 +#define PAN_SERIF_EXAGGERATED 9 +#define PAN_SERIF_TRIANGLE 10 +#define PAN_SERIF_NORMAL_SANS 11 +#define PAN_SERIF_OBTUSE_SANS 12 +#define PAN_SERIF_PERP_SANS 13 +#define PAN_SERIF_FLARED 14 +#define PAN_SERIF_ROUNDED 15 +#define PAN_WEIGHT_VERY_LIGHT 2 +#define PAN_WEIGHT_LIGHT 3 +#define PAN_WEIGHT_THIN 4 +#define PAN_WEIGHT_BOOK 5 +#define PAN_WEIGHT_MEDIUM 6 +#define PAN_WEIGHT_DEMI 7 +#define PAN_WEIGHT_BOLD 8 +#define PAN_WEIGHT_HEAVY 9 +#define PAN_WEIGHT_BLACK 10 +#define PAN_WEIGHT_NORD 11 +#define PAN_PROP_OLD_STYLE 2 +#define PAN_PROP_MODERN 3 +#define PAN_PROP_EVEN_WIDTH 4 +#define PAN_PROP_EXPANDED 5 +#define PAN_PROP_CONDENSED 6 +#define PAN_PROP_VERY_EXPANDED 7 +#define PAN_PROP_VERY_CONDENSED 8 +#define PAN_PROP_MONOSPACED 9 +#define PAN_CONTRAST_NONE 2 +#define PAN_CONTRAST_VERY_LOW 3 +#define PAN_CONTRAST_LOW 4 +#define PAN_CONTRAST_MEDIUM_LOW 5 +#define PAN_CONTRAST_MEDIUM 6 +#define PAN_CONTRAST_MEDIUM_HIGH 7 +#define PAN_CONTRAST_HIGH 8 +#define PAN_CONTRAST_VERY_HIGH 9 +#define PAN_STROKE_GRADUAL_DIAG 2 +#define PAN_STROKE_GRADUAL_TRAN 3 +#define PAN_STROKE_GRADUAL_VERT 4 +#define PAN_STROKE_GRADUAL_HORZ 5 +#define PAN_STROKE_RAPID_VERT 6 +#define PAN_STROKE_RAPID_HORZ 7 +#define PAN_STROKE_INSTANT_VERT 8 +#define PAN_STRAIGHT_ARMS_HORZ 2 +#define PAN_STRAIGHT_ARMS_WEDGE 3 +#define PAN_STRAIGHT_ARMS_VERT 4 +#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 +#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 +#define PAN_BENT_ARMS_HORZ 7 +#define PAN_BENT_ARMS_WEDGE 8 +#define PAN_BENT_ARMS_VERT 9 +#define PAN_BENT_ARMS_SINGLE_SERIF 10 +#define PAN_BENT_ARMS_DOUBLE_SERIF 11 +#define PAN_LETT_NORMAL_CONTACT 2 +#define PAN_LETT_NORMAL_WEIGHTED 3 +#define PAN_LETT_NORMAL_BOXED 4 +#define PAN_LETT_NORMAL_FLATTENED 5 +#define PAN_LETT_NORMAL_ROUNDED 6 +#define PAN_LETT_NORMAL_OFF_CENTER 7 +#define PAN_LETT_NORMAL_SQUARE 8 +#define PAN_LETT_OBLIQUE_CONTACT 9 +#define PAN_LETT_OBLIQUE_WEIGHTED 10 +#define PAN_LETT_OBLIQUE_BOXED 11 +#define PAN_LETT_OBLIQUE_FLATTENED 12 +#define PAN_LETT_OBLIQUE_ROUNDED 13 +#define PAN_LETT_OBLIQUE_OFF_CENTER 14 +#define PAN_LETT_OBLIQUE_SQUARE 15 +#define PAN_MIDLINE_STANDARD_TRIMMED 2 +#define PAN_MIDLINE_STANDARD_POINTED 3 +#define PAN_MIDLINE_STANDARD_SERIFED 4 +#define PAN_MIDLINE_HIGH_TRIMMED 5 +#define PAN_MIDLINE_HIGH_POINTED 6 +#define PAN_MIDLINE_HIGH_SERIFED 7 +#define PAN_MIDLINE_CONSTANT_TRIMMED 8 +#define PAN_MIDLINE_CONSTANT_POINTED 9 +#define PAN_MIDLINE_CONSTANT_SERIFED 10 +#define PAN_MIDLINE_LOW_TRIMMED 11 +#define PAN_MIDLINE_LOW_POINTED 12 +#define PAN_MIDLINE_LOW_SERIFED 13 +#define PAN_XHEIGHT_CONSTANT_SMALL 2 +#define PAN_XHEIGHT_CONSTANT_STD 3 +#define PAN_XHEIGHT_CONSTANT_LARGE 4 +#define PAN_XHEIGHT_DUCKING_SMALL 5 +#define PAN_XHEIGHT_DUCKING_STD 6 +#define PAN_XHEIGHT_DUCKING_LARGE 7 +#define FS_LATIN1 1 +#define FS_LATIN2 2 +#define FS_CYRILLIC 4 +#define FS_GREEK 8 +#define FS_TURKISH 16 +#define FS_HEBREW 32 +#define FS_ARABIC 64 +#define FS_BALTIC 128 +#define FS_THAI 0x10000 +#define FS_JISJAPAN 0x20000 +#define FS_CHINESESIMP 0x40000 +#define FS_WANSUNG 0x80000 +#define FS_CHINESETRAD 0x100000 +#define FS_JOHAB 0x200000 +#define FS_SYMBOL 0x80000000 +#define HS_BDIAGONAL 3 +#define HS_CROSS 4 +#define HS_DIAGCROSS 5 +#define HS_FDIAGONAL 2 +#define HS_HORIZONTAL 0 +#define HS_VERTICAL 1 +#define PS_GEOMETRIC 65536 +#define PS_COSMETIC 0 +#define PS_ALTERNATE 8 +#define PS_SOLID 0 +#define PS_DASH 1 +#define PS_DOT 2 +#define PS_DASHDOT 3 +#define PS_DASHDOTDOT 4 +#define PS_NULL 5 +#define PS_USERSTYLE 7 +#define PS_INSIDEFRAME 6 +#define PS_ENDCAP_ROUND 0 +#define PS_ENDCAP_SQUARE 256 +#define PS_ENDCAP_FLAT 512 +#define PS_JOIN_BEVEL 4096 +#define PS_JOIN_MITER 8192 +#define PS_JOIN_ROUND 0 +#define PS_STYLE_MASK 15 +#define PS_ENDCAP_MASK 3840 +#define PS_TYPE_MASK 983040 +#define ALTERNATE 1 +#define WINDING 2 +#define DC_BINNAMES 12 +#define DC_BINS 6 +#define DC_COPIES 18 +#define DC_DRIVER 11 +#define DC_DATATYPE_PRODUCED 21 +#define DC_DUPLEX 7 +#define DC_EMF_COMPLIANT 20 +#define DC_ENUMRESOLUTIONS 13 +#define DC_EXTRA 9 +#define DC_FIELDS 1 +#define DC_FILEDEPENDENCIES 14 +#define DC_MAXEXTENT 5 +#define DC_MINEXTENT 4 +#define DC_ORIENTATION 17 +#define DC_PAPERNAMES 16 +#define DC_PAPERS 2 +#define DC_PAPERSIZE 3 +#define DC_SIZE 8 +#define DC_TRUETYPE 15 +#define DCTT_BITMAP 1 +#define DCTT_DOWNLOAD 2 +#define DCTT_SUBDEV 4 +#define DCTT_DOWNLOAD_OUTLINE 8 +#define DC_VERSION 10 +#define DC_BINADJUST 19 +#define DC_EMF_COMPLIANT 20 +#define DC_DATATYPE_PRODUCED 21 +#define DC_MANUFACTURER 23 +#define DC_MODEL 24 +#define DCBA_FACEUPNONE 0 +#define DCBA_FACEUPCENTER 1 +#define DCBA_FACEUPLEFT 2 +#define DCBA_FACEUPRIGHT 3 +#define DCBA_FACEDOWNNONE 256 +#define DCBA_FACEDOWNCENTER 257 +#define DCBA_FACEDOWNLEFT 258 +#define DCBA_FACEDOWNRIGHT 259 +#define FLOODFILLBORDER 0 +#define FLOODFILLSURFACE 1 +#define ETO_CLIPPED 4 +#define ETO_GLYPH_INDEX 16 +#define ETO_OPAQUE 2 +#define ETO_RTLREADING 128 +#define GDICOMMENT_WINDOWS_METAFILE (-2147483647) +#define GDICOMMENT_BEGINGROUP 2 +#define GDICOMMENT_ENDGROUP 3 +#define GDICOMMENT_MULTIFORMATS 1073741828 +#define GDICOMMENT_IDENTIFIER 1128875079 +#define AD_COUNTERCLOCKWISE 1 +#define AD_CLOCKWISE 2 +#define RDH_RECTANGLES 1 +#define GCPCLASS_LATIN 1 +#define GCPCLASS_HEBREW 2 +#define GCPCLASS_ARABIC 2 +#define GCPCLASS_NEUTRAL 3 +#define GCPCLASS_LOCALNUMBER 4 +#define GCPCLASS_LATINNUMBER 5 +#define GCPCLASS_LATINNUMERICTERMINATOR 6 +#define GCPCLASS_LATINNUMERICSEPARATOR 7 +#define GCPCLASS_NUMERICSEPARATOR 8 +#define GCPCLASS_PREBOUNDLTR 128 +#define GCPCLASS_PREBOUNDRTL 64 +#define GCPCLASS_POSTBOUNDLTR 32 +#define GCPCLASS_POSTBOUNDRTL 16 +#define GCPGLYPH_LINKBEFORE 0x8000 +#define GCPGLYPH_LINKAFTER 0x4000 +#define DCB_DISABLE 8 +#define DCB_ENABLE 4 +#define DCB_RESET 1 +#define DCB_SET 3 +#define DCB_ACCUMULATE 2 +#define DCB_DIRTY 2 +#define OBJ_BRUSH 2 +#define OBJ_PEN 1 +#define OBJ_PAL 5 +#define OBJ_FONT 6 +#define OBJ_BITMAP 7 +#define OBJ_EXTPEN 11 +#define OBJ_REGION 8 +#define OBJ_DC 3 +#define OBJ_MEMDC 10 +#define OBJ_METAFILE 9 +#define OBJ_METADC 4 +#define OBJ_ENHMETAFILE 13 +#define OBJ_ENHMETADC 12 +#define DRIVERVERSION 0 +#define TECHNOLOGY 2 +#define DT_PLOTTER 0 +#define DT_RASDISPLAY 1 +#define DT_RASPRINTER 2 +#define DT_RASCAMERA 3 +#define DT_CHARSTREAM 4 +#define DT_METAFILE 5 +#define DT_DISPFILE 6 +#define HORZSIZE 4 +#define VERTSIZE 6 +#define HORZRES 8 +#define VERTRES 10 +#define LOGPIXELSX 88 +#define LOGPIXELSY 90 +#define BITSPIXEL 12 +#define PLANES 14 +#define NUMBRUSHES 16 +#define NUMPENS 18 +#define NUMFONTS 22 +#define NUMCOLORS 24 +#define NUMMARKERS 20 +#define ASPECTX 40 +#define ASPECTY 42 +#define ASPECTXY 44 +#define PDEVICESIZE 26 +#define CLIPCAPS 36 +#define SIZEPALETTE 104 +#define NUMRESERVED 106 +#define COLORRES 108 +#define PHYSICALWIDTH 110 +#define PHYSICALHEIGHT 111 +#define PHYSICALOFFSETX 112 +#define PHYSICALOFFSETY 113 +#define SCALINGFACTORX 114 +#define SCALINGFACTORY 115 +#define VREFRESH 116 +#define DESKTOPHORZRES 118 +#define DESKTOPVERTRES 117 +#define BLTALIGNMENT 119 +#define RASTERCAPS 38 +#define RC_BANDING 2 +#define RC_BITBLT 1 +#define RC_BITMAP64 8 +#define RC_DI_BITMAP 128 +#define RC_DIBTODEV 512 +#define RC_FLOODFILL 4096 +#define RC_GDI20_OUTPUT 16 +#define RC_PALETTE 256 +#define RC_SCALING 4 +#define RC_STRETCHBLT 2048 +#define RC_STRETCHDIB 8192 +#define RC_DEVBITS 0x8000 +#define RC_OP_DX_OUTPUT 0x4000 +#define CURVECAPS 28 +#define CC_NONE 0 +#define CC_CIRCLES 1 +#define CC_PIE 2 +#define CC_CHORD 4 +#define CC_ELLIPSES 8 +#define CC_WIDE 16 +#define CC_STYLED 32 +#define CC_WIDESTYLED 64 +#define CC_INTERIORS 128 +#define CC_ROUNDRECT 256 +#define LINECAPS 30 +#define LC_NONE 0 +#define LC_POLYLINE 2 +#define LC_MARKER 4 +#define LC_POLYMARKER 8 +#define LC_WIDE 16 +#define LC_STYLED 32 +#define LC_WIDESTYLED 64 +#define LC_INTERIORS 128 +#define POLYGONALCAPS 32 +#define RC_BANDING 2 +#define RC_BIGFONT 1024 +#define RC_BITBLT 1 +#define RC_BITMAP64 8 +#define RC_DEVBITS 0x8000 +#define RC_DI_BITMAP 128 +#define RC_GDI20_OUTPUT 16 +#define RC_GDI20_STATE 32 +#define RC_NONE 0 +#define RC_OP_DX_OUTPUT 0x4000 +#define RC_PALETTE 256 +#define RC_SAVEBITMAP 64 +#define RC_SCALING 4 +#define PC_NONE 0 +#define PC_POLYGON 1 +#define PC_POLYPOLYGON 256 +#define PC_PATHS 512 +#define PC_RECTANGLE 2 +#define PC_WINDPOLYGON 4 +#define PC_SCANLINE 8 +#define PC_TRAPEZOID 4 +#define PC_WIDE 16 +#define PC_STYLED 32 +#define PC_WIDESTYLED 64 +#define PC_INTERIORS 128 +#define PC_PATHS 512 +#define TEXTCAPS 34 +#define TC_OP_CHARACTER 1 +#define TC_OP_STROKE 2 +#define TC_CP_STROKE 4 +#define TC_CR_90 8 +#define TC_CR_ANY 16 +#define TC_SF_X_YINDEP 32 +#define TC_SA_DOUBLE 64 +#define TC_SA_INTEGER 128 +#define TC_SA_CONTIN 256 +#define TC_EA_DOUBLE 512 +#define TC_IA_ABLE 1024 +#define TC_UA_ABLE 2048 +#define TC_SO_ABLE 4096 +#define TC_RA_ABLE 8192 +#define TC_VA_ABLE 16384 +#define TC_RESERVED 32768 +#define TC_SCROLLBLT 65536 +#define GCP_DBCS 1 +#define GCP_ERROR 0x8000 +#define GCP_CLASSIN 0x80000 +#define GCP_DIACRITIC 256 +#define GCP_DISPLAYZWG 0x400000 +#define GCP_GLYPHSHAPE 16 +#define GCP_JUSTIFY 0x10000 +#define GCP_JUSTIFYIN 0x200000 +#define GCP_KASHIDA 1024 +#define GCP_LIGATE 32 +#define GCP_MAXEXTENT 0x100000 +#define GCP_NEUTRALOVERRIDE 0x2000000 +#define GCP_NUMERICOVERRIDE 0x1000000 +#define GCP_NUMERICSLATIN 0x4000000 +#define GCP_NUMERICSLOCAL 0x8000000 +#define GCP_REORDER 2 +#define GCP_SYMSWAPOFF 0x800000 +#define GCP_USEKERNING 8 +#define FLI_GLYPHS 0x40000 +#define FLI_MASK 0x103b +#define GGO_METRICS 0 +#define GGO_BITMAP 1 +#define GGO_NATIVE 2 +#define GGO_BEZIER 3 +#define GGO_GRAY2_BITMAP 4 +#define GGO_GRAY4_BITMAP 5 +#define GGO_GRAY8_BITMAP 6 +#define GGO_GLYPH_INDEX 128 +#define GGO_UNHINTED 256 +#define GM_COMPATIBLE 1 +#define GM_ADVANCED 2 +#define MM_ANISOTROPIC 8 +#define MM_HIENGLISH 5 +#define MM_HIMETRIC 3 +#define MM_ISOTROPIC 7 +#define MM_LOENGLISH 4 +#define MM_LOMETRIC 2 +#define MM_TEXT 1 +#define MM_TWIPS 6 +#define MM_MAX_FIXEDSCALE MM_TWIPS +#define ABSOLUTE 1 +#define RELATIVE 2 +#define PC_EXPLICIT 2 +#define PC_NOCOLLAPSE 4 +#define PC_RESERVED 1 +#define CLR_NONE 0xffffffff +#define CLR_INVALID CLR_NONE +#define CLR_DEFAULT 0xff000000 +#define PT_MOVETO 6 +#define PT_LINETO 2 +#define PT_BEZIERTO 4 +#define PT_CLOSEFIGURE 1 +#define TT_AVAILABLE 1 +#define TT_ENABLED 2 +#define BLACK_BRUSH 4 +#define DKGRAY_BRUSH 3 +#define GRAY_BRUSH 2 +#define HOLLOW_BRUSH 5 +#define LTGRAY_BRUSH 1 +#define NULL_BRUSH 5 +#define WHITE_BRUSH 0 +#define BLACK_PEN 7 +#define NULL_PEN 8 +#define WHITE_PEN 6 +#define ANSI_FIXED_FONT 11 +#define ANSI_VAR_FONT 12 +#define DEVICE_DEFAULT_FONT 14 +#define DEFAULT_GUI_FONT 17 +#define OEM_FIXED_FONT 10 +#define SYSTEM_FONT 13 +#define SYSTEM_FIXED_FONT 16 +#define DEFAULT_PALETTE 15 +#if (_WIN32_WINNT >= 0x0500) +#define DC_BRUSH 18 +#define DC_PEN 19 +#endif +#define SYSPAL_NOSTATIC 2 +#define SYSPAL_STATIC 1 +#define SYSPAL_ERROR 0 +#define TA_BASELINE 24 +#define TA_BOTTOM 8 +#define TA_TOP 0 +#define TA_CENTER 6 +#define TA_LEFT 0 +#define TA_RIGHT 2 +#define TA_RTLREADING 256 +#define TA_NOUPDATECP 0 +#define TA_UPDATECP 1 +#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING) +#define VTA_BASELINE 24 +#define VTA_CENTER 6 +#define VTA_LEFT TA_BOTTOM +#define VTA_RIGHT TA_TOP +#define VTA_BOTTOM TA_RIGHT +#define VTA_TOP TA_LEFT +#define MWT_IDENTITY 1 +#define MWT_LEFTMULTIPLY 2 +#define MWT_RIGHTMULTIPLY 3 +#define OPAQUE 2 +#define TRANSPARENT 1 +#define BLACKONWHITE 1 +#define WHITEONBLACK 2 +#define COLORONCOLOR 3 +#define HALFTONE 4 +#define MAXSTRETCHBLTMODE 4 +#define STRETCH_ANDSCANS 1 +#define STRETCH_DELETESCANS 3 +#define STRETCH_HALFTONE 4 +#define STRETCH_ORSCANS 2 +#define TCI_SRCCHARSET 1 +#define TCI_SRCCODEPAGE 2 +#define TCI_SRCFONTSIG 3 +#define ICM_ON 2 +#define ICM_OFF 1 +#define ICM_QUERY 3 +#define NEWFRAME 1 +#define ABORTDOC 2 +#define NEXTBAND 3 +#define SETCOLORTABLE 4 +#define GETCOLORTABLE 5 +#define FLUSHOUTPUT 6 +#define DRAFTMODE 7 +#define QUERYESCSUPPORT 8 +#define SETABORTPROC 9 +#define STARTDOC 10 +#define ENDDOC 11 +#define GETPHYSPAGESIZE 12 +#define GETPRINTINGOFFSET 13 +#define GETSCALINGFACTOR 14 +#define MFCOMMENT 15 +#define GETPENWIDTH 16 +#define SETCOPYCOUNT 17 +#define SELECTPAPERSOURCE 18 +#define DEVICEDATA 19 +#define PASSTHROUGH 19 +#define GETTECHNOLGY 20 +#define GETTECHNOLOGY 20 +#define SETLINECAP 21 +#define SETLINEJOIN 22 +#define SETMITERLIMIT 23 +#define BANDINFO 24 +#define DRAWPATTERNRECT 25 +#define GETVECTORPENSIZE 26 +#define GETVECTORBRUSHSIZE 27 +#define ENABLEDUPLEX 28 +#define GETSETPAPERBINS 29 +#define GETSETPRINTORIENT 30 +#define ENUMPAPERBINS 31 +#define SETDIBSCALING 32 +#define EPSPRINTING 33 +#define ENUMPAPERMETRICS 34 +#define GETSETPAPERMETRICS 35 +#define POSTSCRIPT_DATA 37 +#define POSTSCRIPT_IGNORE 38 +#define MOUSETRAILS 39 +#define GETDEVICEUNITS 42 +#define GETEXTENDEDTEXTMETRICS 256 +#define GETEXTENTTABLE 257 +#define GETPAIRKERNTABLE 258 +#define GETTRACKKERNTABLE 259 +#define EXTTEXTOUT 512 +#define GETFACENAME 513 +#define DOWNLOADFACE 514 +#define ENABLERELATIVEWIDTHS 768 +#define ENABLEPAIRKERNING 769 +#define SETKERNTRACK 770 +#define SETALLJUSTVALUES 771 +#define SETCHARSET 772 +#define STRETCHBLT 2048 +#define GETSETSCREENPARAMS 3072 +#define QUERYDIBSUPPORT 3073 +#define BEGIN_PATH 4096 +#define CLIP_TO_PATH 4097 +#define END_PATH 4098 +#define EXT_DEVICE_CAPS 4099 +#define RESTORE_CTM 4100 +#define SAVE_CTM 4101 +#define SET_ARC_DIRECTION 4102 +#define SET_BACKGROUND_COLOR 4103 +#define SET_POLY_MODE 4104 +#define SET_SCREEN_ANGLE 4105 +#define SET_SPREAD 4106 +#define TRANSFORM_CTM 4107 +#define SET_CLIP_BOX 4108 +#define SET_BOUNDS 4109 +#define SET_MIRROR_MODE 4110 +#define OPENCHANNEL 4110 +#define DOWNLOADHEADER 4111 +#define CLOSECHANNEL 4112 +#define POSTSCRIPT_PASSTHROUGH 4115 +#define ENCAPSULATED_POSTSCRIPT 4116 +#define QDI_SETDIBITS 1 +#define QDI_GETDIBITS 2 +#define QDI_DIBTOSCREEN 4 +#define QDI_STRETCHDIB 8 +#define SP_NOTREPORTED 0x4000 +#define PR_JOBSTATUS 0 +#define ASPECT_FILTERING 1 +#define BS_SOLID 0 +#define BS_NULL 1 +#define BS_HOLLOW 1 +#define BS_HATCHED 2 +#define BS_PATTERN 3 +#define BS_INDEXED 4 +#define BS_DIBPATTERN 5 +#define BS_DIBPATTERNPT 6 +#define BS_PATTERN8X8 7 +#define BS_DIBPATTERN8X8 8 +#define LCS_CALIBRATED_RGB 0 +#define LCS_DEVICE_RGB 1 +#define LCS_DEVICE_CMYK 2 +#define LCS_GM_BUSINESS 1 +#define LCS_GM_GRAPHICS 2 +#define LCS_GM_IMAGES 4 +#define RASTER_FONTTYPE 1 +#define DEVICE_FONTTYPE 2 +#define TRUETYPE_FONTTYPE 4 +#define DMORIENT_PORTRAIT 1 +#define DMORIENT_LANDSCAPE 2 +#define DMPAPER_FIRST 1 +#define DMPAPER_LETTER 1 +#define DMPAPER_LETTERSMALL 2 +#define DMPAPER_TABLOID 3 +#define DMPAPER_LEDGER 4 +#define DMPAPER_LEGAL 5 +#define DMPAPER_STATEMENT 6 +#define DMPAPER_EXECUTIVE 7 +#define DMPAPER_A3 8 +#define DMPAPER_A4 9 +#define DMPAPER_A4SMALL 10 +#define DMPAPER_A5 11 +#define DMPAPER_B4 12 +#define DMPAPER_B5 13 +#define DMPAPER_FOLIO 14 +#define DMPAPER_QUARTO 15 +#define DMPAPER_10X14 16 +#define DMPAPER_11X17 17 +#define DMPAPER_NOTE 18 +#define DMPAPER_ENV_9 19 +#define DMPAPER_ENV_10 20 +#define DMPAPER_ENV_11 21 +#define DMPAPER_ENV_12 22 +#define DMPAPER_ENV_14 23 +#define DMPAPER_CSHEET 24 +#define DMPAPER_DSHEET 25 +#define DMPAPER_ESHEET 26 +#define DMPAPER_ENV_DL 27 +#define DMPAPER_ENV_C5 28 +#define DMPAPER_ENV_C3 29 +#define DMPAPER_ENV_C4 30 +#define DMPAPER_ENV_C6 31 +#define DMPAPER_ENV_C65 32 +#define DMPAPER_ENV_B4 33 +#define DMPAPER_ENV_B5 34 +#define DMPAPER_ENV_B6 35 +#define DMPAPER_ENV_ITALY 36 +#define DMPAPER_ENV_MONARCH 37 +#define DMPAPER_ENV_PERSONAL 38 +#define DMPAPER_FANFOLD_US 39 +#define DMPAPER_FANFOLD_STD_GERMAN 40 +#define DMPAPER_FANFOLD_LGL_GERMAN 41 +#define DMPAPER_ISO_B4 42 +#define DMPAPER_JAPANESE_POSTCARD 43 +#define DMPAPER_9X11 44 +#define DMPAPER_10X11 45 +#define DMPAPER_15X11 46 +#define DMPAPER_ENV_INVITE 47 +#define DMPAPER_RESERVED_48 48 +#define DMPAPER_RESERVED_49 49 +#define DMPAPER_LETTER_EXTRA 50 +#define DMPAPER_LEGAL_EXTRA 51 +#define DMPAPER_TABLOID_EXTRA 52 +#define DMPAPER_A4_EXTRA 53 +#define DMPAPER_LETTER_TRANSVERSE 54 +#define DMPAPER_A4_TRANSVERSE 55 +#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56 +#define DMPAPER_A_PLUS 57 +#define DMPAPER_B_PLUS 58 +#define DMPAPER_LETTER_PLUS 59 +#define DMPAPER_A4_PLUS 60 +#define DMPAPER_A5_TRANSVERSE 61 +#define DMPAPER_B5_TRANSVERSE 62 +#define DMPAPER_A3_EXTRA 63 +#define DMPAPER_A5_EXTRA 64 +#define DMPAPER_B5_EXTRA 65 +#define DMPAPER_A2 66 +#define DMPAPER_A3_TRANSVERSE 67 +#define DMPAPER_A3_EXTRA_TRANSVERSE 68 +#define DMPAPER_LAST 68 +#define DMPAPER_USER 256 +#define DMBIN_FIRST 1 +#define DMBIN_UPPER 1 +#define DMBIN_ONLYONE 1 +#define DMBIN_LOWER 2 +#define DMBIN_MIDDLE 3 +#define DMBIN_MANUAL 4 +#define DMBIN_ENVELOPE 5 +#define DMBIN_ENVMANUAL 6 +#define DMBIN_AUTO 7 +#define DMBIN_TRACTOR 8 +#define DMBIN_SMALLFMT 9 +#define DMBIN_LARGEFMT 10 +#define DMBIN_LARGECAPACITY 11 +#define DMBIN_CASSETTE 14 +#define DMBIN_FORMSOURCE 15 +#define DMBIN_LAST 15 +#define DMBIN_USER 256 +#define DMRES_DRAFT (-1) +#define DMRES_LOW (-2) +#define DMRES_MEDIUM (-3) +#define DMRES_HIGH (-4) +#define DMCOLOR_MONOCHROME 1 +#define DMCOLOR_COLOR 2 +#define DMDUP_SIMPLEX 1 +#define DMDUP_VERTICAL 2 +#define DMDUP_HORIZONTAL 3 +#define DMTT_BITMAP 1 +#define DMTT_DOWNLOAD 2 +#define DMTT_SUBDEV 3 +#define DMTT_DOWNLOAD_OUTLINE 4 +#define DMCOLLATE_FALSE 0 +#define DMCOLLATE_TRUE 1 +#define DM_SPECVERSION 800 +#define DM_GRAYSCALE 1 +#define DM_INTERLACED 2 +#define DM_UPDATE 1 +#define DM_COPY 2 +#define DM_PROMPT 4 +#define DM_MODIFY 8 +#define DM_IN_BUFFER DM_MODIFY +#define DM_IN_PROMPT DM_PROMPT +#define DM_OUT_BUFFER DM_COPY +#define DM_OUT_DEFAULT DM_UPDATE +#define DM_ORIENTATION 1 +#define DM_PAPERSIZE 2 +#define DM_PAPERLENGTH 4 +#define DM_PAPERWIDTH 8 +#define DM_SCALE 16 +#define DM_COPIES 256 +#define DM_DEFAULTSOURCE 512 +#define DM_PRINTQUALITY 1024 +#define DM_COLOR 2048 +#define DM_DUPLEX 4096 +#define DM_YRESOLUTION 8192 +#define DM_TTOPTION 16384 +#define DM_COLLATE 32768 +#define DM_FORMNAME 65536 +#define DM_LOGPIXELS 0x20000 +#define DM_BITSPERPEL 0x40000 +#define DM_PELSWIDTH 0x80000 +#define DM_PELSHEIGHT 0x100000 +#define DM_DISPLAYFLAGS 0x200000 +#define DM_DISPLAYFREQUENCY 0x400000 +#define DM_ICMMETHOD 0x800000 +#define DM_ICMINTENT 0x1000000 +#define DM_MEDIATYPE 0x2000000 +#define DM_DITHERTYPE 0x4000000 +#define DMICMMETHOD_NONE 1 +#define DMICMMETHOD_SYSTEM 2 +#define DMICMMETHOD_DRIVER 3 +#define DMICMMETHOD_DEVICE 4 +#define DMICMMETHOD_USER 256 +#define DMICM_SATURATE 1 +#define DMICM_CONTRAST 2 +#define DMICM_COLORMETRIC 3 +#define DMICM_USER 256 +#define DMMEDIA_STANDARD 1 +#define DMMEDIA_TRANSPARENCY 2 +#define DMMEDIA_GLOSSY 3 +#define DMMEDIA_USER 256 +#define DMDITHER_NONE 1 +#define DMDITHER_COARSE 2 +#define DMDITHER_FINE 3 +#define DMDITHER_LINEART 4 +#define DMDITHER_ERRORDIFFUSION 5 +#define DMDITHER_RESERVED6 6 +#define DMDITHER_RESERVED7 7 +#define DMDITHER_RESERVED8 8 +#define DMDITHER_RESERVED9 9 +#define DMDITHER_GRAYSCALE 10 +#define DMDITHER_USER 256 +#define GDI_ERROR 0xFFFFFFFF +#define HGDI_ERROR ((HANDLE)GDI_ERROR) +#define TMPF_FIXED_PITCH 1 +#define TMPF_VECTOR 2 +#define TMPF_TRUETYPE 4 +#define TMPF_DEVICE 8 +#define NTM_ITALIC 1 +#define NTM_BOLD 32 +#define NTM_REGULAR 64 +#define TT_POLYGON_TYPE 24 +#define TT_PRIM_LINE 1 +#define TT_PRIM_QSPLINE 2 +#define FONTMAPPER_MAX 10 +#define ENHMETA_STOCK_OBJECT 0x80000000 +#define WGL_FONT_LINES 0 +#define WGL_FONT_POLYGONS 1 +#define LPD_DOUBLEBUFFER 1 +#define LPD_STEREO 2 +#define LPD_SUPPORT_GDI 16 +#define LPD_SUPPORT_OPENGL 32 +#define LPD_SHARE_DEPTH 64 +#define LPD_SHARE_STENCIL 128 +#define LPD_SHARE_ACCUM 256 +#define LPD_SWAP_EXCHANGE 512 +#define LPD_SWAP_COPY 1024 +#define LPD_TRANSPARENT 4096 +#define LPD_TYPE_RGBA 0 +#define LPD_TYPE_COLORINDEX 1 +#define WGL_SWAP_MAIN_PLANE 1 +#define WGL_SWAP_OVERLAY1 2 +#define WGL_SWAP_OVERLAY2 4 +#define WGL_SWAP_OVERLAY3 8 +#define WGL_SWAP_OVERLAY4 16 +#define WGL_SWAP_OVERLAY5 32 +#define WGL_SWAP_OVERLAY6 64 +#define WGL_SWAP_OVERLAY7 128 +#define WGL_SWAP_OVERLAY8 256 +#define WGL_SWAP_OVERLAY9 512 +#define WGL_SWAP_OVERLAY10 1024 +#define WGL_SWAP_OVERLAY11 2048 +#define WGL_SWAP_OVERLAY12 4096 +#define WGL_SWAP_OVERLAY13 8192 +#define WGL_SWAP_OVERLAY14 16384 +#define WGL_SWAP_OVERLAY15 32768 +#define WGL_SWAP_UNDERLAY1 65536 +#define WGL_SWAP_UNDERLAY2 0x20000 +#define WGL_SWAP_UNDERLAY3 0x40000 +#define WGL_SWAP_UNDERLAY4 0x80000 +#define WGL_SWAP_UNDERLAY5 0x100000 +#define WGL_SWAP_UNDERLAY6 0x200000 +#define WGL_SWAP_UNDERLAY7 0x400000 +#define WGL_SWAP_UNDERLAY8 0x800000 +#define WGL_SWAP_UNDERLAY9 0x1000000 +#define WGL_SWAP_UNDERLAY10 0x2000000 +#define WGL_SWAP_UNDERLAY11 0x4000000 +#define WGL_SWAP_UNDERLAY12 0x8000000 +#define WGL_SWAP_UNDERLAY13 0x10000000 +#define WGL_SWAP_UNDERLAY14 0x20000000 +#define WGL_SWAP_UNDERLAY15 0x40000000 +#define AC_SRC_OVER 0 +#define LAYOUT_RTL 1 +#define LAYOUT_BITMAPORIENTATIONPRESERVED 8 +#if (WINVER > 0x400) +#define CS_ENABLE 0x00000001 +#define CS_DISABLE 0x00000002 +#define CS_DELETE_TRANSFORM 0x00000003 +#endif +#if (WINVER > 0x500) +#define GRADIENT_FILL_RECT_H 0x00 +#define GRADIENT_FILL_RECT_V 0x01 +#define GRADIENT_FILL_TRIANGLE 0x02 +#define GRADIENT_FILL_OP_FLAG 0xff +#define COLORMATCHTOTARGET_EMBEDED 0x00000001 +#define CREATECOLORSPACE_EMBEDED 0x00000001 +#define SETICMPROFILE_EMBEDED 0x00000001 +#endif + +#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001 +#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002 +#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004 +#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008 +#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010 +#define DISPLAY_DEVICE_REMOVABLE 0x00000020 +#define DISPLAY_DEVICE_MODESPRUNED 0x08000000 +#ifndef RC_INVOKED +typedef struct _ABC { + int abcA; + UINT abcB; + int abcC; +} ABC,*LPABC; +typedef struct _ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} ABCFLOAT,*LPABCFLOAT; +typedef struct tagBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} BITMAP,*PBITMAP,*LPBITMAP; +typedef struct tagBITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER; +#pragma pack(push,1) +typedef struct tagRGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} RGBTRIPLE,*LPRGBTRIPLE; +#pragma pack(pop) +#pragma pack(push,2) +typedef struct tagBITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER; +#pragma pack(pop) +typedef struct _BITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE bmciColors[1]; +} BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO; +typedef struct tagBITMAPINFOHEADER{ + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER; +typedef struct tagRGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +} RGBQUAD,*LPRGBQUAD; +typedef struct tagBITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[1]; +} BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO; +typedef long FXPT16DOT16,*LPFXPT16DOT16; +typedef long FXPT2DOT30,*LPFXPT2DOT30; +typedef struct tagCIEXYZ { + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; +} CIEXYZ,*LPCIEXYZ; +typedef struct tagCIEXYZTRIPLE { + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; +} CIEXYZTRIPLE,*LPCIEXYZTRIPLE; +typedef struct { + 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; +} BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER; +typedef struct tagFONTSIGNATURE { + DWORD fsUsb[4]; + DWORD fsCsb[2]; +} FONTSIGNATURE,*LPFONTSIGNATURE; +typedef struct { + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; +} CHARSETINFO,*LPCHARSETINFO; +typedef struct tagCOLORADJUSTMENT { + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; +} COLORADJUSTMENT,*LPCOLORADJUSTMENT; +typedef struct _devicemodeA { + BYTE dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } DUMMYSTRUCTNAME; + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } DUMMYUNIONNAME; + + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + _ANONYMOUS_UNION union { + DWORD dmDisplayFlags; + DWORD dmNup; + } DUMMYUNIONNAME2; + DWORD dmDisplayFrequency; +#if(WINVER >= 0x0400) + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; +#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) + DWORD dmPanningWidth; + DWORD dmPanningHeight; +#endif +#endif /* WINVER >= 0x0400 */ +} DEVMODEA,*LPDEVMODEA,*PDEVMODEA; +typedef struct _devicemodeW { + WCHAR dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } DUMMYSTRUCTNAME; + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } DUMMYUNIONNAME; + + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + _ANONYMOUS_UNION union { + DWORD dmDisplayFlags; + DWORD dmNup; + } DUMMYUNIONNAME2; + DWORD dmDisplayFrequency; +#if(WINVER >= 0x0400) + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; +#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) + DWORD dmPanningWidth; + DWORD dmPanningHeight; +#endif +#endif /* WINVER >= 0x0400 */ +} DEVMODEW,*LPDEVMODEW,*PDEVMODEW; +typedef struct tagDIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD dsBitfields[3]; + HANDLE dshSection; + DWORD dsOffset; +} DIBSECTION; +typedef struct _DOCINFOA { + int cbSize; + LPCSTR lpszDocName; + LPCSTR lpszOutput; + LPCSTR lpszDatatype; + DWORD fwType; +} DOCINFOA,*LPDOCINFOA; +typedef struct _DOCINFOW { + int cbSize; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; + LPCWSTR lpszDatatype; + DWORD fwType; +} DOCINFOW,*LPDOCINFOW; +typedef struct tagEMR { + DWORD iType; + DWORD nSize; +} EMR,*PEMR; +typedef struct tagEMRANGLEARC { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} EMRANGLEARC,*PEMRANGLEARC; +typedef struct tagEMRARC { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; +} EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE; +typedef struct _XFORM { + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; +} XFORM,*PXFORM,*LPXFORM; +typedef struct tagEMRBITBLT { + 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 offBitsSrc; + DWORD cbBitsSrc; +} EMRBITBLT,*PEMRBITBLT; +typedef struct tagLOGBRUSH { + UINT lbStyle; + COLORREF lbColor; + LONG lbHatch; +} LOGBRUSH,*PLOGBRUSH,*LPLOGBRUSH; +typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN; +typedef struct tagEMRCREATEBRUSHINDIRECT { + EMR emr; + DWORD ihBrush; + LOGBRUSH lb; +} EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT; +typedef LONG LCSCSTYPE; +typedef LONG LCSGAMUTMATCH; +typedef struct tagLOGCOLORSPACEA { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR lcsFilename[MAX_PATH]; +} LOGCOLORSPACEA,*LPLOGCOLORSPACEA; +typedef struct tagLOGCOLORSPACEW { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR lcsFilename[MAX_PATH]; +} LOGCOLORSPACEW,*LPLOGCOLORSPACEW; +typedef struct tagEMRCREATECOLORSPACE { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; +} EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE; +typedef struct tagEMRCREATEDIBPATTERNBRUSHPT { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT; +typedef struct tagEMRCREATEMONOBRUSH { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH; +typedef struct tagPALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY; +typedef struct tagLOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[1]; +} LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE; +typedef struct tagEMRCREATEPALETTE { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; +} EMRCREATEPALETTE,*PEMRCREATEPALETTE; +typedef struct tagLOGPEN { + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; +} LOGPEN,*PLOGPEN,*LPLOGPEN; +typedef struct tagEMRCREATEPEN { + EMR emr; + DWORD ihPen; + LOGPEN lopn; +} EMRCREATEPEN,*PEMRCREATEPEN; +typedef struct tagEMRELLIPSE { + EMR emr; + RECTL rclBox; +} EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE; +typedef struct tagEMREOF { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; +} EMREOF,*PEMREOF; +typedef struct tagEMREXCLUDECLIPRECT { + EMR emr; + RECTL rclClip; +} EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT; +typedef struct tagPANOSE { + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} PANOSE; +typedef struct tagLOGFONTA { + 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 lfFaceName[LF_FACESIZE]; +} LOGFONTA,*PLOGFONTA,*LPLOGFONTA; +typedef struct tagLOGFONTW { + 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 lfFaceName[LF_FACESIZE]; +} LOGFONTW,*PLOGFONTW,*LPLOGFONTW; +typedef struct tagEXTLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} EXTLOGFONTA,*PEXTLOGFONTA,*LPEXTLOGFONTA; +typedef struct tagEXTLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} EXTLOGFONTW,*PEXTLOGFONTW,*LPEXTLOGFONTW; +typedef struct tagEMREXTCREATEFONTINDIRECTW { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; +} EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW; +typedef struct tagEXTLOGPEN { + UINT elpPenStyle; + UINT elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + LONG elpHatch; + DWORD elpNumEntries; + DWORD elpStyleEntry[1]; +} EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN; +typedef struct tagEMREXTCREATEPEN { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; +} EMREXTCREATEPEN,*PEMREXTCREATEPEN; +typedef struct tagEMREXTFLOODFILL { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} EMREXTFLOODFILL,*PEMREXTFLOODFILL; +typedef struct tagEMREXTSELECTCLIPRGN { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE RgnData[1]; +} EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN; +typedef struct tagEMRTEXT { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; +} EMRTEXT,*PEMRTEXT; +typedef struct tagEMREXTTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; +} EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW; +typedef struct tagEMRFILLPATH { + EMR emr; + RECTL rclBounds; +} EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH; +typedef struct tagEMRFILLRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE RgnData[1]; +} EMRFILLRGN,*PEMRFILLRGN; +typedef struct tagEMRFORMAT { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; +} EMRFORMAT; +typedef struct tagEMRFRAMERGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE RgnData[1]; +} EMRFRAMERGN,*PEMRFRAMERGN; +typedef struct tagEMRGDICOMMENT { + EMR emr; + DWORD cbData; + BYTE Data[1]; +} EMRGDICOMMENT,*PEMRGDICOMMENT; +typedef struct tagEMRINVERTRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE RgnData[1]; +} EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN; +typedef struct tagEMRLINETO { + EMR emr; + POINTL ptl; +} EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX; +typedef struct tagEMRMASKBLT { + 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; +} EMRMASKBLT,*PEMRMASKBLT; +typedef struct tagEMRMODIFYWORLDTRANSFORM { + EMR emr; + XFORM xform; + DWORD iMode; +} EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM; +typedef struct tagEMROFFSETCLIPRGN { + EMR emr; + POINTL ptlOffset; +} EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN; +typedef struct tagEMRPLGBLT { + EMR emr; + RECTL rclBounds; + POINTL aptlDest[3]; + 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; +} EMRPLGBLT,*PEMRPLGBLT; +typedef struct tagEMRPOLYDRAW { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; + BYTE abTypes[1]; +} EMRPOLYDRAW,*PEMRPOLYDRAW; +typedef struct tagEMRPOLYDRAW16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; + BYTE abTypes[1]; +} EMRPOLYDRAW16,*PEMRPOLYDRAW16; +typedef struct tagEMRPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; +} EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO; +typedef struct tagEMRPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTL apts[1]; +} EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16; +typedef struct tagEMRPOLYPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD aPolyCounts[1]; + POINTL aptl[1]; +} EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON; +typedef struct tagEMRPOLYPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD aPolyCounts[1]; + POINTS apts[1]; +} EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16; +typedef struct tagEMRPOLYTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT aemrtext[1]; +} EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW; +typedef struct tagEMRRESIZEPALETTE { + EMR emr; + DWORD ihPal; + DWORD cEntries; +} EMRRESIZEPALETTE,*PEMRRESIZEPALETTE; +typedef struct tagEMRRESTOREDC { + EMR emr; + LONG iRelative; +} EMRRESTOREDC,*PEMRRESTOREDC; +typedef struct tagEMRROUNDRECT { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; +} EMRROUNDRECT,*PEMRROUNDRECT; +typedef struct tagEMRSCALEVIEWPORTEXTEX { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX; +typedef struct tagEMRSELECTCOLORSPACE { + EMR emr; + DWORD ihCS; +} EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE; +typedef struct tagEMRSELECTOBJECT { + EMR emr; + DWORD ihObject; +} EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT; +typedef struct tagEMRSELECTPALETTE { + EMR emr; + DWORD ihPal; +} EMRSELECTPALETTE,*PEMRSELECTPALETTE; +typedef struct tagEMRSETARCDIRECTION { + EMR emr; + DWORD iArcDirection; +} EMRSETARCDIRECTION,*PEMRSETARCDIRECTION; +typedef struct tagEMRSETTEXTCOLOR { + EMR emr; + COLORREF crColor; +} EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR; +typedef struct tagEMRSETCOLORADJUSTMENT { + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT; +typedef struct tagEMRSETDIBITSTODEVICE { + 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; +} EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE; +typedef struct tagEMRSETMAPPERFLAGS { + EMR emr; + DWORD dwFlags; +} EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS; +typedef struct tagEMRSETMITERLIMIT { + EMR emr; + FLOAT eMiterLimit; +} EMRSETMITERLIMIT,*PEMRSETMITERLIMIT; +typedef struct tagEMRSETPALETTEENTRIES { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY aPalEntries[1]; +} EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES; +typedef struct tagEMRSETPIXELV { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} EMRSETPIXELV,*PEMRSETPIXELV; +typedef struct tagEMRSETVIEWPORTEXTEX { + EMR emr; + SIZEL szlExtent; +} EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX; +typedef struct tagEMRSETVIEWPORTORGEX { + EMR emr; + POINTL ptlOrigin; +} EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX; +typedef struct tagEMRSETWORLDTRANSFORM { + EMR emr; + XFORM xform; +} EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM; +typedef struct tagEMRSTRETCHBLT { + 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; +} EMRSTRETCHBLT,*PEMRSTRETCHBLT; +typedef struct tagEMRSTRETCHDIBITS { + 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; +} EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS; +typedef struct tagABORTPATH { + EMR emr; +} EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE; +typedef struct tagEMRSELECTCLIPPATH { + EMR emr; + DWORD iMode; +} EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN,EMRENABLEICM,*PEMRENABLEICM; +#pragma pack(push,2) +typedef struct tagMETAHEADER { + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; +} METAHEADER,*PMETAHEADER,*LPMETAHEADER; +#pragma pack(pop) +typedef struct tagENHMETAHEADER { + DWORD iType; + DWORD nSize; + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + WORD sReserved; + DWORD nDescription; + DWORD offDescription; + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; +} ENHMETAHEADER,*LPENHMETAHEADER; +typedef struct tagMETARECORD { + DWORD rdSize; + WORD rdFunction; + WORD rdParm[1]; +} METARECORD,*PMETARECORD,*LPMETARECORD; +typedef struct tagENHMETARECORD { + DWORD iType; + DWORD nSize; + DWORD dParm[1]; +} ENHMETARECORD,*LPENHMETARECORD; +typedef struct tagHANDLETABLE { + HGDIOBJ objectHandle[1]; +} HANDLETABLE,*LPHANDLETABLE; +typedef struct tagTEXTMETRICA { + 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; +} TEXTMETRICA,*PTEXTMETRICA,*LPTEXTMETRICA; +typedef struct tagTEXTMETRICW { + 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; +} TEXTMETRICW,*PTEXTMETRICW,*LPTEXTMETRICW; +typedef struct _RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} RGNDATAHEADER; +typedef struct _RGNDATA { + RGNDATAHEADER rdh; + char Buffer[1]; +} RGNDATA,*PRGNDATA, *LPRGNDATA; +/* for GetRandomRgn */ +#define SYSRGN 4 +typedef struct tagGCP_RESULTSA { + DWORD lStructSize; + LPSTR lpOutString; + UINT *lpOrder; + INT *lpDx; + INT *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} GCP_RESULTSA,*LPGCP_RESULTSA; +typedef struct tagGCP_RESULTSW { + DWORD lStructSize; + LPWSTR lpOutString; + UINT *lpOrder; + INT *lpDx; + INT *lpCaretPos; + LPWSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} GCP_RESULTSW,*LPGCP_RESULTSW; +typedef struct _GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; +} GLYPHMETRICS,*LPGLYPHMETRICS; +typedef struct tagKERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} KERNINGPAIR,*LPKERNINGPAIR; +typedef struct _FIXED { + WORD fract; + short value; +} FIXED; +typedef struct _MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} MAT2,*LPMAT2; +typedef 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; +} OUTLINETEXTMETRICA,*POUTLINETEXTMETRICA,*LPOUTLINETEXTMETRICA; +typedef 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; +} OUTLINETEXTMETRICW,*POUTLINETEXTMETRICW,*LPOUTLINETEXTMETRICW; +typedef struct _RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; +} RASTERIZER_STATUS,*LPRASTERIZER_STATUS; +typedef struct _POLYTEXTA { + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} POLYTEXTA, *PPOLYTEXTA; +typedef struct _POLYTEXTW { + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} POLYTEXTW, *PPOLYTEXTW; +typedef struct tagPIXELFORMATDESCRIPTOR { + 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; +} PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR; +typedef struct tagMETAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; +} METAFILEPICT,*LPMETAFILEPICT; +typedef struct tagLOCALESIGNATURE { + DWORD lsUsb[4]; + DWORD lsCsbDefault[2]; + DWORD lsCsbSupported[2]; +} LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE; +typedef LONG LCSTYPE; +#pragma pack(push,4) +typedef struct tagNEWTEXTMETRICA { + 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; +} NEWTEXTMETRICA,*PNEWTEXTMETRICA,*LPNEWTEXTMETRICA; +typedef struct tagNEWTEXTMETRICW { + 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; +} NEWTEXTMETRICW,*PNEWTEXTMETRICW,*LPNEWTEXTMETRICW; +#pragma pack(pop) +typedef struct tagNEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; +} NEWTEXTMETRICEXA; +typedef struct tagNEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; +} NEWTEXTMETRICEXW; +typedef struct tagPELARRAY { + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; +} PELARRAY,*PPELARRAY,*LPPELARRAY; +typedef struct tagENUMLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; +} ENUMLOGFONTA,*LPENUMLOGFONTA; +typedef struct tagENUMLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; +} ENUMLOGFONTW,*LPENUMLOGFONTW; +typedef struct tagENUMLOGFONTEXA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + BYTE elfScript[LF_FACESIZE]; +} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA; +typedef struct tagENUMLOGFONTEXW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + BYTE elfScript[LF_FACESIZE]; +} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW; +typedef struct tagPOINTFX { + FIXED x; + FIXED y; +} POINTFX,*LPPOINTFX; +typedef struct tagTTPOLYCURVE { + WORD wType; + WORD cpfx; + POINTFX apfx[1]; +} TTPOLYCURVE,*LPTTPOLYCURVE; +typedef struct tagTTPOLYGONHEADER { + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} TTPOLYGONHEADER,*LPTTPOLYGONHEADER; +typedef struct _POINTFLOAT { + FLOAT x; + FLOAT y; +} POINTFLOAT,*PPOINTFLOAT; +typedef struct _GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +} GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT; +typedef struct tagLAYERPLANEDESCRIPTOR { + 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; +} LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR; +typedef struct _BLENDFUNCTION { + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; +} BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION; +#define MM_MAX_NUMAXES 16 +typedef struct _DESIGNVECTOR { + DWORD dvReserved; + DWORD dvNumAxes; + LONG dvValues[MM_MAX_NUMAXES]; +} DESIGNVECTOR, *PDESIGNVECTOR, FAR *LPDESIGNVECTOR; +typedef USHORT COLOR16; +typedef struct _TRIVERTEX { + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; +} TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX; +typedef struct _GRADIENT_TRIANGLE { + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; +} GRADIENT_TRIANGLE,*PGRADIENT_TRIANGLE,*LPGRADIENT_TRIANGLE; +typedef struct _GRADIENT_RECT { + ULONG UpperLeft; + ULONG LowerRight; +}GRADIENT_RECT,*PGRADIENT_RECT,*LPGRADIENT_RECT; +typedef struct _DISPLAY_DEVICEA { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD StateFlags; + CHAR DeviceID[128]; + CHAR DeviceKey[128]; +} DISPLAY_DEVICEA, *PDISPLAY_DEVICEA, *LPDISPLAY_DEVICEA; +typedef struct _DISPLAY_DEVICEW { + DWORD cb; + WCHAR DeviceName[32]; + WCHAR DeviceString[128]; + DWORD StateFlags; + WCHAR DeviceID[128]; + WCHAR DeviceKey[128]; +} DISPLAY_DEVICEW, *PDISPLAY_DEVICEW, *LPDISPLAY_DEVICEW; + +typedef BOOL (CALLBACK *ABORTPROC)(HDC,int); +typedef int (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM); +typedef int (CALLBACK *ENHMFENUMPROC)(HDC,HANDLETABLE*,ENHMETARECORD*,int,LPARAM); +typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA*,const TEXTMETRICA*,DWORD,LPARAM); +typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW*,const TEXTMETRICW*,DWORD,LPARAM); +typedef OLDFONTENUMPROCA FONTENUMPROCA; +typedef OLDFONTENUMPROCW FONTENUMPROCW; +typedef int (CALLBACK *ICMENUMPROCA)(LPSTR,LPARAM); +typedef int (CALLBACK *ICMENUMPROCW)(LPWSTR,LPARAM); +typedef void (CALLBACK *GOBJENUMPROC)(LPVOID,LPARAM); +typedef void (CALLBACK *LINEDDAPROC)(int,int,LPARAM); +typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,LPSTR,UINT); +typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODEA); + + +#define RGB(r,g,b) ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16))) +#define MAKEPOINTS(l) (*((POINTS*)&(l))) +#define MAKEROP4(f,b) (DWORD)((((b)<<8)&0xFF000000)|(f)) +#define PALETTEINDEX(i) ((0x01000000|(COLORREF)(WORD)(i))) +#define PALETTERGB(r,g,b) (0x02000000|RGB(r,g,b)) +int WINAPI AbortDoc(HDC); +BOOL WINAPI AbortPath(HDC); +int WINAPI AddFontResourceA(LPCSTR); +int WINAPI AddFontResourceW(LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +HANDLE WINAPI AddFontMemResourceEx(PVOID,DWORD,PVOID,DWORD *); +int WINAPI AddFontResourceExA(LPCSTR,DWORD,PVOID); +int WINAPI AddFontResourceExW(LPCWSTR,DWORD,PVOID); +#endif +BOOL WINAPI AngleArc(HDC,int,int,DWORD,FLOAT,FLOAT); +BOOL WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*); +BOOL WINAPI Arc(HDC,int,int,int,int,int,int,int,int); +BOOL WINAPI ArcTo(HDC,int,int,int,int,int,int,int,int); +BOOL WINAPI BeginPath(HDC); +BOOL WINAPI BitBlt(HDC,int,int,int,int,HDC,int,int,DWORD); +BOOL WINAPI CancelDC(HDC); +BOOL WINAPI CheckColorsInGamut(HDC,PVOID,PVOID,DWORD); +BOOL WINAPI Chord(HDC,int,int,int,int,int,int,int,int); +int WINAPI ChoosePixelFormat(HDC,CONST PIXELFORMATDESCRIPTOR*); +HENHMETAFILE WINAPI CloseEnhMetaFile(HDC); +BOOL WINAPI CloseFigure(HDC); +HMETAFILE WINAPI CloseMetaFile(HDC); +BOOL WINAPI ColorMatchToTarget(HDC,HDC,DWORD); +int WINAPI CombineRgn(HRGN,HRGN,HRGN,int); +BOOL WINAPI CombineTransform(LPXFORM,const XFORM*,const XFORM*); +HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR); +HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR); +HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR); +HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR); +HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,PCVOID); +HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*); +HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*); +HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA); +HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW); +HBITMAP WINAPI CreateCompatibleBitmap(HDC,int,int); +HDC WINAPI CreateCompatibleDC(HDC); +HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*); +HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*); +HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,PCVOID,const BITMAPINFO*,UINT); +HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT); +HBRUSH WINAPI CreateDIBPatternBrushPt(PCVOID,UINT); +HBITMAP WINAPI CreateDIBSection(HDC,const BITMAPINFO*,UINT,void**,HANDLE,DWORD); +HBITMAP WINAPI CreateDiscardableBitmap(HDC,int,int); +HRGN WINAPI CreateEllipticRgn(int,int,int,int); +HRGN WINAPI CreateEllipticRgnIndirect(LPCRECT); +HDC WINAPI CreateEnhMetaFileA(HDC,LPCSTR,LPCRECT,LPCSTR); +HDC WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,LPCRECT,LPCWSTR); +HFONT WINAPI CreateFontA(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR); +HFONT WINAPI CreateFontW(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR); +HFONT WINAPI CreateFontIndirectA(const LOGFONTA*); +HFONT WINAPI CreateFontIndirectW(const LOGFONTW*); +HPALETTE WINAPI CreateHalftonePalette(HDC); +HBRUSH WINAPI CreateHatchBrush(int,COLORREF); +HDC WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*); +HDC WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*); +HDC WINAPI CreateMetaFileA(LPCSTR); +HDC WINAPI CreateMetaFileW(LPCWSTR); +HPALETTE WINAPI CreatePalette(const LOGPALETTE*); +HBRUSH WINAPI CreatePatternBrush(HBITMAP); +HPEN WINAPI CreatePen(int,int,COLORREF); +HPEN WINAPI CreatePenIndirect(const LOGPEN*); +HRGN WINAPI CreatePolygonRgn(const POINT*,int,int); +HRGN WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,int,int); +HRGN WINAPI CreateRectRgn(int,int,int,int); +HRGN WINAPI CreateRectRgnIndirect(LPCRECT); +HRGN WINAPI CreateRoundRectRgn(int,int,int,int,int,int); +BOOL WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR); +BOOL WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR); +HBRUSH WINAPI CreateSolidBrush(COLORREF); +BOOL WINAPI DeleteColorSpace(HCOLORSPACE); +BOOL WINAPI DeleteDC(HDC); +BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE); +BOOL WINAPI DeleteMetaFile(HMETAFILE); +BOOL WINAPI DeleteObject(HGDIOBJ); +int WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR); +DWORD WINAPI DeviceCapabilitiesA(LPCSTR,LPCSTR,WORD,LPSTR,const DEVMODEA*); +DWORD WINAPI DeviceCapabilitiesW(LPCWSTR,LPCWSTR,WORD,LPWSTR,const DEVMODEW*); +BOOL WINAPI DPtoLP(HDC,LPPOINT,int); +int WINAPI DrawEscape(HDC,int,int,LPCSTR); +BOOL WINAPI Ellipse(HDC,int,int,int,int); +int WINAPI EndDoc(HDC); +int WINAPI EndPage(HDC); +BOOL WINAPI EndPath(HDC); +BOOL WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,PVOID,LPCRECT); +int WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM); +int WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM); +int WINAPI EnumFontFamiliesExA(HDC,PLOGFONTA,FONTENUMPROCA,LPARAM,DWORD); +int WINAPI EnumFontFamiliesExW(HDC,PLOGFONTW,FONTENUMPROCW,LPARAM,DWORD); +int WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM); +int WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM); +int WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM); +int WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM); +BOOL WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM); +int WINAPI EnumObjects(HDC,int,GOBJENUMPROC,LPARAM); +BOOL WINAPI EqualRgn(HRGN,HRGN); +int WINAPI Escape(HDC,int,int,LPCSTR,PVOID); +int WINAPI ExcludeClipRect(HDC,int,int,int,int); +int WINAPI ExcludeUpdateRgn(HDC,HWND); +HPEN WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*); +HRGN WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*); +int WINAPI ExtEscape(HDC,int,int,LPCSTR,int,LPSTR); +BOOL WINAPI ExtFloodFill(HDC,int,int,COLORREF,UINT); +int WINAPI ExtSelectClipRgn(HDC,HRGN,int); +BOOL WINAPI ExtTextOutA(HDC,int,int,UINT,LPCRECT,LPCSTR,UINT,const INT*); +BOOL WINAPI ExtTextOutW(HDC,int,int,UINT,LPCRECT,LPCWSTR,UINT,const INT*); +BOOL WINAPI FillPath(HDC); +int WINAPI FillRect(HDC,LPCRECT,HBRUSH); +int WINAPI FillRgn(HDC,HRGN,HBRUSH); +BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT); +BOOL WINAPI FlattenPath(HDC); +BOOL WINAPI FloodFill(HDC,int,int,COLORREF); +BOOL WINAPI GdiComment(HDC,UINT,const BYTE*); +BOOL WINAPI GdiFlush(void); +DWORD WINAPI GdiGetBatchLimit(void); +DWORD WINAPI GdiSetBatchLimit(DWORD); +#define GetCValue(cmyk) ((BYTE)(cmyk)) +#define GetMValue(cmyk) ((BYTE)((cmyk)>> 8)) +#define GetYValue(cmyk) ((BYTE)((cmyk)>>16)) +#define GetKValue(cmyk) ((BYTE)((cmyk)>>24)) +#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(c)|((WORD)((BYTE)(m))<<8))|(((DWORD)(BYTE)(y))<<16))|(((DWORD)(BYTE)(k))<<24))) +#define GetRValue(c) ((BYTE)(c)) +#define GetGValue(c) ((BYTE)(((WORD)(c))>>8)) +#define GetBValue(c) ((BYTE)((c)>>16)) +int WINAPI GetArcDirection(HDC); +BOOL WINAPI GetAspectRatioFilterEx(HDC,LPSIZE); +LONG WINAPI GetBitmapBits(HBITMAP,LONG,PVOID); +BOOL WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE); +COLORREF WINAPI GetBkColor(HDC); +int WINAPI GetBkMode(HDC); +UINT WINAPI GetBoundsRect(HDC,LPRECT,UINT); +BOOL WINAPI GetBrushOrgEx(HDC,LPPOINT); +BOOL WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC); +BOOL WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC); +BOOL WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT); +BOOL WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT); +DWORD WINAPI GetCharacterPlacementA(HDC,LPCSTR,int,int,LPGCP_RESULTSA,DWORD); +DWORD WINAPI GetCharacterPlacementW(HDC,LPCWSTR,int,int,LPGCP_RESULTSW,DWORD); +BOOL WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT); +BOOL WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT); +BOOL WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT); +BOOL WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT); +BOOL WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT); +BOOL WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT); +int WINAPI GetClipBox(HDC,LPRECT); +int WINAPI GetClipRgn(HDC,HRGN); +BOOL WINAPI GetColorAdjustment(HDC,LPCOLORADJUSTMENT); +HANDLE WINAPI GetColorSpace(HDC); +HGDIOBJ WINAPI GetCurrentObject(HDC,UINT); +BOOL WINAPI GetCurrentPositionEx(HDC,LPPOINT); +HCURSOR WINAPI GetCursor(void); +BOOL WINAPI GetDCOrgEx(HDC,LPPOINT); +int WINAPI GetDeviceCaps(HDC,int); +BOOL WINAPI GetDeviceGammaRamp(HDC,PVOID); +UINT WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*); +int WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,PVOID,LPBITMAPINFO,UINT); +HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR); +HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR); +UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE); +UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR); +UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR); +UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER); +UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY); +UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE,DWORD,CONST PIXELFORMATDESCRIPTOR*); +DWORD WINAPI GetFontData(HDC,DWORD,DWORD,PVOID,DWORD); +DWORD WINAPI GetFontLanguageInfo(HDC); +DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*); +DWORD WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*); +int WINAPI GetGraphicsMode(HDC); +BOOL WINAPI GetICMProfileA(HDC,DWORD,LPSTR); +BOOL WINAPI GetICMProfileW(HDC,DWORD,LPWSTR); +DWORD WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR); +DWORD WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR); +BOOL WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD); +BOOL WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD); +int WINAPI GetMapMode(HDC); +HMETAFILE WINAPI GetMetaFileA(LPCSTR); +HMETAFILE WINAPI GetMetaFileW(LPCWSTR); +UINT WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,PVOID); +int WINAPI GetMetaRgn(HDC,HRGN); +BOOL WINAPI GetMiterLimit(HDC,PFLOAT); +COLORREF WINAPI GetNearestColor(HDC,COLORREF); +UINT WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF); +int WINAPI GetObjectA(HGDIOBJ,int,PVOID); +int WINAPI GetObjectW(HGDIOBJ,int,PVOID); +DWORD WINAPI GetObjectType(HGDIOBJ); +UINT WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA); +UINT WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW); +UINT WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY); +int WINAPI GetPath(HDC,LPPOINT,PBYTE,int); +COLORREF WINAPI GetPixel(HDC,int,int); +int WINAPI GetPixelFormat(HDC); +int WINAPI GetPolyFillMode(HDC); +BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT); +int WINAPI GetRandomRgn (HDC,HRGN,INT); +DWORD WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA); +int WINAPI GetRgnBox(HRGN,LPRECT); +int WINAPI GetROP2(HDC); +HGDIOBJ WINAPI GetStockObject(int); +int WINAPI GetStretchBltMode(HDC); +UINT WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY); +UINT WINAPI GetSystemPaletteUse(HDC); +UINT WINAPI GetTextAlign(HDC); +int WINAPI GetTextCharacterExtra(HDC); +int WINAPI GetTextCharset(HDC); +int WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD); +COLORREF WINAPI GetTextColor(HDC); +BOOL WINAPI GetTextExtentExPointA(HDC,LPCSTR,int,int,LPINT,LPINT,LPSIZE); +BOOL WINAPI GetTextExtentExPointW( HDC,LPCWSTR,int,int,LPINT,LPINT,LPSIZE ); +BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,int,LPSIZE); +BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,int,LPSIZE); +BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,int,LPSIZE); +BOOL WINAPI GetTextExtentPoint32W( HDC,LPCWSTR,int,LPSIZE); +int WINAPI GetTextFaceA(HDC,int,LPSTR); +int WINAPI GetTextFaceW(HDC,int,LPWSTR); +BOOL WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA); +BOOL WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW); +BOOL WINAPI GetViewportExtEx(HDC,LPSIZE); +BOOL WINAPI GetViewportOrgEx(HDC,LPPOINT); +BOOL WINAPI GetWindowExtEx(HDC,LPSIZE); +BOOL WINAPI GetWindowOrgEx(HDC,LPPOINT); +UINT WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC); +BOOL WINAPI GetWorldTransform(HDC,LPXFORM); +int WINAPI IntersectClipRect(HDC,int,int,int,int); +BOOL WINAPI InvertRgn(HDC,HRGN); +BOOL WINAPI LineDDA(int,int,int,int,LINEDDAPROC,LPARAM); +BOOL WINAPI LineTo(HDC,int,int); +BOOL WINAPI LPtoDP(HDC,LPPOINT,int); +BOOL WINAPI MaskBlt(HDC,int,int,int,int,HDC,int,int,HBITMAP,int,int,DWORD); +BOOL WINAPI ModifyWorldTransform(HDC,const XFORM*,DWORD); +BOOL WINAPI MoveToEx(HDC,int,int,LPPOINT); +int WINAPI OffsetClipRgn(HDC,int,int); +int WINAPI OffsetRgn(HRGN,int,int); +BOOL WINAPI OffsetViewportOrgEx(HDC,int,int,LPPOINT); +BOOL WINAPI OffsetWindowOrgEx(HDC,int,int,LPPOINT); +BOOL WINAPI PaintRgn(HDC,HRGN); +BOOL WINAPI PatBlt(HDC,int,int,int,int,DWORD); +HRGN WINAPI PathToRegion(HDC); +BOOL WINAPI Pie(HDC,int,int,int,int,int,int,int,int); +BOOL WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,LPCRECT); +BOOL WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT); +BOOL WINAPI PlayMetaFile(HDC,HMETAFILE); +BOOL WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT); +BOOL WINAPI PlgBlt(HDC,const POINT*,HDC,int,int,int,int,HBITMAP,int,int); +BOOL WINAPI PolyBezier(HDC,const POINT*,DWORD); +BOOL WINAPI PolyBezierTo(HDC,const POINT*,DWORD); +BOOL WINAPI PolyDraw(HDC,const POINT*,const BYTE*,int); +BOOL WINAPI Polygon(HDC,const POINT*,int); +BOOL WINAPI Polyline(HDC,const POINT*,int); +BOOL WINAPI PolylineTo(HDC,const POINT*,DWORD); +BOOL WINAPI PolyPolygon(HDC,const POINT*,const INT*,int); +BOOL WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD); +BOOL WINAPI PolyTextOutA(HDC,const POLYTEXTA*,int); +BOOL WINAPI PolyTextOutW(HDC,const POLYTEXTW*,int); +BOOL WINAPI PtInRegion(HRGN,int,int); +BOOL WINAPI PtVisible(HDC,int,int); +UINT WINAPI RealizePalette(HDC); +BOOL WINAPI Rectangle(HDC,int,int,int,int); +BOOL WINAPI RectInRegion(HRGN,LPCRECT); +BOOL WINAPI RectVisible(HDC,LPCRECT); +BOOL WINAPI RemoveFontResourceA(LPCSTR); +BOOL WINAPI RemoveFontResourceW(LPCWSTR); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI RemoveFontMemResourceEx(HANDLE); +BOOL WINAPI RemoveFontResourceExA(LPCSTR,DWORD,PVOID); +BOOL WINAPI RemoveFontResourceExW(LPCWSTR,DWORD,PVOID); +#endif +HDC WINAPI ResetDCA(HDC,const DEVMODEA*); +HDC WINAPI ResetDCW(HDC,const DEVMODEW*); +BOOL WINAPI ResizePalette(HPALETTE,UINT); +BOOL WINAPI RestoreDC(HDC,int); +BOOL WINAPI RoundRect(HDC,int,int,int,int,int,int); +int WINAPI SaveDC(HDC); +BOOL WINAPI ScaleViewportExtEx(HDC,int,int,int,int,LPSIZE); +BOOL WINAPI ScaleWindowExtEx(HDC,int,int,int,int,LPSIZE); +BOOL WINAPI SelectClipPath(HDC,int); +int WINAPI SelectClipRgn(HDC,HRGN); +HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ); +HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL); +int WINAPI SetAbortProc(HDC,ABORTPROC); +int WINAPI SetArcDirection(HDC,int); +LONG WINAPI SetBitmapBits(HBITMAP,DWORD,PCVOID); +BOOL WINAPI SetBitmapDimensionEx(HBITMAP,int,int,LPSIZE); +COLORREF WINAPI SetBkColor(HDC,COLORREF); +int WINAPI SetBkMode(HDC,int); +UINT WINAPI SetBoundsRect(HDC,LPCRECT,UINT); +BOOL WINAPI SetBrushOrgEx(HDC,int,int,LPPOINT); +BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*); +BOOL WINAPI SetColorSpace(HDC,HCOLORSPACE); +#if (_WIN32_WINNT >= 0x0500) +COLORREF WINAPI SetDCBrushColor(HDC,COLORREF); +COLORREF WINAPI SetDCPenColor(HDC,COLORREF); +#endif +BOOL WINAPI SetDeviceGammaRamp(HDC,PVOID); +UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*); +int WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,PCVOID,const BITMAPINFO*,UINT); +int WINAPI SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,PCVOID,const BITMAPINFO*,UINT); +HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE*); +int WINAPI SetGraphicsMode(HDC,int); +int WINAPI SetICMMode(HDC,int); +BOOL WINAPI SetICMProfileA(HDC,LPSTR); +BOOL WINAPI SetICMProfileW(HDC,LPWSTR); +int WINAPI SetMapMode(HDC,int); +DWORD WINAPI SetMapperFlags(HDC,DWORD); +HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE *); +int WINAPI SetMetaRgn(HDC); +BOOL WINAPI SetMiterLimit(HDC,FLOAT,PFLOAT); +UINT WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*); +COLORREF WINAPI SetPixel(HDC,int,int,COLORREF); +BOOL WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*); +BOOL WINAPI SetPixelV(HDC,int,int,COLORREF); +int WINAPI SetPolyFillMode(HDC,int); +BOOL WINAPI SetRectRgn(HRGN,int,int,int,int); +int WINAPI SetROP2(HDC,int); +int WINAPI SetStretchBltMode(HDC,int); +UINT WINAPI SetSystemPaletteUse(HDC,UINT); +UINT WINAPI SetTextAlign(HDC,UINT); +int WINAPI SetTextCharacterExtra(HDC,int); +COLORREF WINAPI SetTextColor(HDC,COLORREF); +BOOL WINAPI SetTextJustification(HDC,int,int); +BOOL WINAPI SetViewportExtEx(HDC,int,int,LPSIZE); +BOOL WINAPI SetViewportOrgEx(HDC,int,int,LPPOINT); +BOOL WINAPI SetWindowExtEx(HDC,int,int,LPSIZE); +BOOL WINAPI SetWindowOrgEx(HDC,int,int,LPPOINT); +HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,const BYTE*,HDC,const METAFILEPICT*); +BOOL WINAPI SetWorldTransform(HDC,const XFORM *); +int WINAPI StartDocA(HDC,const DOCINFOA*); +int WINAPI StartDocW(HDC,const DOCINFOW*); +int WINAPI StartPage(HDC); +BOOL WINAPI StretchBlt(HDC,int,int,int,int,HDC,int,int,int,int,DWORD); +int WINAPI StretchDIBits(HDC,int,int,int,int,int,int,int,int,const VOID *,const BITMAPINFO *,UINT,DWORD); +BOOL WINAPI StrokeAndFillPath(HDC); +BOOL WINAPI StrokePath(HDC); +BOOL WINAPI SwapBuffers(HDC); +BOOL WINAPI TextOutA(HDC,int,int,LPCSTR,int); +BOOL WINAPI TextOutW(HDC,int,int,LPCWSTR,int); +BOOL WINAPI TranslateCharsetInfo(PDWORD,LPCHARSETINFO,DWORD); +BOOL WINAPI UnrealizeObject(HGDIOBJ); +BOOL WINAPI UpdateColors(HDC); +BOOL WINAPI UpdateICMRegKeyA(DWORD,DWORD,LPSTR,UINT); +BOOL WINAPI UpdateICMRegKeyW(DWORD,DWORD,LPWSTR,UINT); +BOOL WINAPI WidenPath(HDC); +BOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT); +HGLRC WINAPI wglCreateContext(HDC); +HGLRC WINAPI wglCreateLayerContext(HDC,int); +BOOL WINAPI wglDeleteContext(HGLRC); +BOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR); +HGLRC WINAPI wglGetCurrentContext(void); +HDC WINAPI wglGetCurrentDC(void); +int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF*); +PROC WINAPI wglGetProcAddress(LPCSTR); +BOOL WINAPI wglMakeCurrent(HDC,HGLRC); +BOOL WINAPI wglRealizeLayerPalette(HDC,int,BOOL); +int WINAPI wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF*); +BOOL WINAPI wglShareLists(HGLRC,HGLRC); +BOOL WINAPI wglSwapLayerBuffers(HDC,UINT); +BOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD); +BOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD); +BOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT); +BOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT); + +#if (WINVER>= 0x0500) +BOOL WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION); +BOOL WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG); +BOOL WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT); +#endif + +#ifdef UNICODE +typedef WCHAR BCHAR; +typedef DOCINFOW DOCINFO, *LPDOCINFO; +typedef LOGFONTW LOGFONT,*PLOGFONT,*LPLOGFONT; +typedef TEXTMETRICW TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC; +#define ICMENUMPROC ICMENUMPROCW +#define FONTENUMPROC FONTENUMPROCW +typedef DEVMODEW DEVMODE,*PDEVMODE,*LPDEVMODE; +typedef EXTLOGFONTW EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT; +typedef GCP_RESULTSW GCP_RESULTS,*LPGCP_RESULTS; +typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC; +typedef POLYTEXTW POLYTEXT; +typedef LOGCOLORSPACEW LOGCOLORSPACE,*LPLOGCOLORSPACE; +typedef NEWTEXTMETRICW NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC; +typedef NEWTEXTMETRICEXW NEWTEXTMETRICEX; +typedef ENUMLOGFONTW ENUMLOGFONT,*LPENUMLOGFONT; +typedef ENUMLOGFONTEXW ENUMLOGFONTEX,*LPENUMLOGFONTEX; +typedef DISPLAY_DEVICEW DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE; +#define AddFontResource AddFontResourceW +#if (_WIN32_WINNT >= 0x0500) +#define AddFontResourceEx AddFontResourceExW +#endif +#define CopyEnhMetaFile CopyEnhMetaFileW +#define CopyMetaFile CopyMetaFileW +#define CreateDC CreateDCW +#define CreateEnhMetaFile CreateEnhMetaFileW +#define CreateFont CreateFontW +#define CreateFontIndirect CreateFontIndirectW +#define CreateIC CreateICW +#define CreateMetaFile CreateMetaFileW +#define CreateScalableFontResource CreateScalableFontResourceW +#define DeviceCapabilities DeviceCapabilitiesW +#define EnumFontFamilies EnumFontFamiliesW +#define EnumFontFamiliesEx EnumFontFamiliesExW +#define EnumFonts EnumFontsW +#define EnumICMProfiles EnumICMProfilesW +#define ExtTextOut ExtTextOutW +#define GetCharABCWidthsFloat GetCharABCWidthsFloatW +#define GetCharABCWidths GetCharABCWidthsW +#define GetCharacterPlacement GetCharacterPlacementW +#define GetCharWidth32 GetCharWidth32W +#define GetCharWidthFloat GetCharWidthFloatW +#define GetCharWidth GetCharWidthW +#define GetEnhMetaFile GetEnhMetaFileW +#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW +#define GetGlyphOutline GetGlyphOutlineW +#define GetICMProfile GetICMProfileW +#define GetKerningPairs GetKerningPairsW +#define GetLogColorSpace GetLogColorSpaceW +#define GetMetaFile GetMetaFileW +#define GetObject GetObjectW +#define GetOutlineTextMetrics GetOutlineTextMetricsW +#define GetTextExtentPoint GetTextExtentPointW +#define GetTextExtentExPoint GetTextExtentExPointW +#define GetTextExtentPoint32 GetTextExtentPoint32W +#define GetTextFace GetTextFaceW +#define GetTextMetrics GetTextMetricsW +#define PolyTextOut PolyTextOutW +#define RemoveFontResource RemoveFontResourceW +#if (_WIN32_WINNT >= 0x0500) +#define RemoveFontResourceEx RemoveFontResourceExW +#endif +#define ResetDC ResetDCW +#define SetICMProfile SetICMProfileW +#define StartDoc StartDocW +#define TextOut TextOutW +#define UpdateICMRegKey UpdateICMRegKeyW +#define wglUseFontBitmaps wglUseFontBitmapsW +#define wglUseFontOutlines wglUseFontOutlinesW +#else +typedef BYTE BCHAR; +typedef DOCINFOA DOCINFO, *LPDOCINFO; +typedef LOGFONTA LOGFONT,*PLOGFONT,*LPLOGFONT; +typedef TEXTMETRICA TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC; +#define ICMENUMPROC ICMENUMPROCA +#define FONTENUMPROC FONTENUMPROCA +typedef DEVMODEA DEVMODE,*PDEVMODE,*LPDEVMODE; +typedef EXTLOGFONTA EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT; +typedef GCP_RESULTSA GCP_RESULTS,*LPGCP_RESULTS; +typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC; +typedef POLYTEXTA POLYTEXT; +typedef LOGCOLORSPACEA LOGCOLORSPACE,*LPLOGCOLORSPACE; +typedef NEWTEXTMETRICA NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC; +typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX; +typedef ENUMLOGFONTA ENUMLOGFONT,*LPENUMLOGFONT; +typedef ENUMLOGFONTEXA ENUMLOGFONTEX,*LPENUMLOGFONTEX; +typedef DISPLAY_DEVICEA DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE; +#define AddFontResource AddFontResourceA +#if (_WIN32_WINNT >= 0x0500) +#define AddFontResourceEx AddFontResourceExA +#endif +#define CopyEnhMetaFile CopyEnhMetaFileA +#define CopyMetaFile CopyMetaFileA +#define CreateDC CreateDCA +#define CreateEnhMetaFile CreateEnhMetaFileA +#define CreateFont CreateFontA +#define CreateFontIndirect CreateFontIndirectA +#define CreateIC CreateICA +#define CreateMetaFile CreateMetaFileA +#define CreateScalableFontResource CreateScalableFontResourceA +#define DeviceCapabilities DeviceCapabilitiesA +#define EnumFontFamilies EnumFontFamiliesA +#define EnumFontFamiliesEx EnumFontFamiliesExA +#define EnumFonts EnumFontsA +#define EnumICMProfiles EnumICMProfilesA +#define ExtTextOut ExtTextOutA +#define GetCharWidthFloat GetCharWidthFloatA +#define GetCharWidth GetCharWidthA +#define GetCharacterPlacement GetCharacterPlacementA +#define GetCharABCWidths GetCharABCWidthsA +#define GetCharABCWidthsFloat GetCharABCWidthsFloatA +#define GetCharWidth32 GetCharWidth32A +#define GetEnhMetaFile GetEnhMetaFileA +#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA +#define GetGlyphOutline GetGlyphOutlineA +#define GetICMProfile GetICMProfileA +#define GetKerningPairs GetKerningPairsA +#define GetLogColorSpace GetLogColorSpaceA +#define GetMetaFile GetMetaFileA +#define GetObject GetObjectA +#define GetOutlineTextMetrics GetOutlineTextMetricsA +#define GetTextExtentPoint GetTextExtentPointA +#define GetTextExtentExPoint GetTextExtentExPointA +#define GetTextExtentPoint32 GetTextExtentPoint32A +#define GetTextFace GetTextFaceA +#define GetTextMetrics GetTextMetricsA +#define PolyTextOut PolyTextOutA +#define RemoveFontResource RemoveFontResourceA +#if (_WIN32_WINNT >= 0x0500) +#define RemoveFontResourceEx RemoveFontResourceExA +#endif +#define ResetDC ResetDCA +#define SetICMProfile SetICMProfileA +#define StartDoc StartDocA +#define TextOut TextOutA +#define UpdateICMRegKey UpdateICMRegKeyA +#define wglUseFontBitmaps wglUseFontBitmapsA +#define wglUseFontOutlines wglUseFontOutlinesA +#endif +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/wininet.h b/reactos/w32api/include/wininet.h new file mode 100644 index 00000000000..1c3353423cb --- /dev/null +++ b/reactos/w32api/include/wininet.h @@ -0,0 +1,921 @@ +#ifndef _WININET_H +#define _WININET_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#define INTERNET_INVALID_PORT_NUMBER 0 +#define INTERNET_DEFAULT_FTP_PORT 21 +#define INTERNET_DEFAULT_GOPHER_PORT 70 +#define INTERNET_DEFAULT_HTTP_PORT 80 +#define INTERNET_DEFAULT_HTTPS_PORT 443 +#define INTERNET_DEFAULT_SOCKS_PORT 1080 +#define MAX_CACHE_ENTRY_INFO_SIZE 4096 +#define INTERNET_MAX_HOST_NAME_LENGTH 256 +#define INTERNET_MAX_USER_NAME_LENGTH 128 +#define INTERNET_MAX_PASSWORD_LENGTH 128 +#define INTERNET_MAX_PORT_NUMBER_LENGTH 5 +#define INTERNET_MAX_PORT_NUMBER_VALUE 65535 +#define INTERNET_MAX_PATH_LENGTH 2048 +#define INTERNET_MAX_SCHEME_LENGTH 32 +#define INTERNET_MAX_URL_LENGTH (INTERNET_MAX_SCHEME_LENGTH+sizeof("://")+INTERNET_MAX_PATH_LENGTH) +#define INTERNET_KEEP_ALIVE_UNKNOWN ((DWORD)-1) +#define INTERNET_KEEP_ALIVE_ENABLED 1 +#define INTERNET_KEEP_ALIVE_DISABLED 0 +#define INTERNET_REQFLAG_FROM_CACHE 1 +#define INTERNET_REQFLAG_ASYNC 2 +#define INTERNET_FLAG_RELOAD 0x80000000 +#define INTERNET_FLAG_RAW_DATA 0x40000000 +#define INTERNET_FLAG_EXISTING_CONNECT 0x20000000 +#define INTERNET_FLAG_ASYNC 0x10000000 +#define INTERNET_FLAG_PASSIVE 0x08000000 +#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 +#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE +#define INTERNET_FLAG_MAKE_PERSISTENT 0x02000000 +#define INTERNET_FLAG_OFFLINE 0x1000000 +#define INTERNET_FLAG_SECURE 0x800000 +#define INTERNET_FLAG_KEEP_CONNECTION 0x400000 +#define INTERNET_FLAG_NO_AUTO_REDIRECT 0x200000 +#define INTERNET_FLAG_READ_PREFETCH 0x100000 +#define INTERNET_FLAG_NO_COOKIES 0x80000 +#define INTERNET_FLAG_NO_AUTH 0x40000 +#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x8000 +#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x4000 +#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x2000 +#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x1000 +#define INTERNET_FLAG_MUST_CACHE_REQUEST 16 +#define INTERNET_FLAG_RESYNCHRONIZE 0x800 +#define INTERNET_FLAG_HYPERLINK 0x400 +#define INTERNET_FLAG_NO_UI 0x200 +#define INTERNET_FLAG_PRAGMA_NOCACHE 0x100 +#define INTERNET_FLAG_TRANSFER_ASCII FTP_TRANSFER_TYPE_ASCII +#define INTERNET_FLAG_TRANSFER_BINARY FTP_TRANSFER_TYPE_BINARY +#define SECURITY_INTERNET_MASK (INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS|INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP) +#define SECURITY_SET_MASK SECURITY_INTERNET_MASK +#define INTERNET_FLAGS_MASK (INTERNET_FLAG_RELOAD|INTERNET_FLAG_RAW_DATA|INTERNET_FLAG_EXISTING_CONNECT|\ +INTERNET_FLAG_ASYNC|INTERNET_FLAG_PASSIVE|INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_MAKE_PERSISTENT|INTERNET_FLAG_OFFLINE|\ +INTERNET_FLAG_SECURE|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_AUTO_REDIRECT|INTERNET_FLAG_READ_PREFETCH |\ +INTERNET_FLAG_NO_COOKIES|INTERNET_FLAG_NO_AUTH|SECURITY_INTERNET_MASK|INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_TRANSFER_BINARY\ +|INTERNET_FLAG_RESYNCHRONIZE|INTERNET_FLAG_MUST_CACHE_REQUEST|INTERNET_FLAG_HYPERLINK|INTERNET_FLAG_NO_UI) +#define INTERNET_OPTIONS_MASK (~INTERNET_FLAGS_MASK) +#define INTERNET_NO_CALLBACK 0 +#define INTERNET_RFC1123_FORMAT 0 +#define INTERNET_RFC1123_BUFSIZE 30 +#define ICU_ESCAPE 0x80000000 +#define ICU_USERNAME 0x40000000 +#define ICU_NO_ENCODE 0x20000000 +#define ICU_DECODE 0x10000000 +#define ICU_NO_META 0x08000000 +#define ICU_ENCODE_SPACES_ONLY 0x04000000 +#define ICU_BROWSER_MODE 0x02000000 +#define INTERNET_OPEN_TYPE_PRECONFIG 0 +#define INTERNET_OPEN_TYPE_DIRECT 1 +#define INTERNET_OPEN_TYPE_PROXY 3 +#define PRE_CONFIG_INTERNET_ACCESS INTERNET_OPEN_TYPE_PRECONFIG +#define LOCAL_INTERNET_ACCESS INTERNET_OPEN_TYPE_DIRECT +#define GATEWAY_INTERNET_ACCESS 2 +#define CERN_PROXY_INTERNET_ACCESS INTERNET_OPEN_TYPE_PROXY +#define ISO_GLOBAL 1 +#define ISO_REGISTRY 2 +#define ISO_VALID_FLAGS (ISO_GLOBAL | ISO_REGISTRY) +#define INTERNET_OPTION_CALLBACK 1 +#define INTERNET_OPTION_CONNECT_TIMEOUT 2 +#define INTERNET_OPTION_CONNECT_RETRIES 3 +#define INTERNET_OPTION_CONNECT_BACKOFF 4 +#define INTERNET_OPTION_SEND_TIMEOUT 5 +#define INTERNET_OPTION_CONTROL_SEND_TIMEOUT INTERNET_OPTION_SEND_TIMEOUT +#define INTERNET_OPTION_RECEIVE_TIMEOUT 6 +#define INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT INTERNET_OPTION_RECEIVE_TIMEOUT +#define INTERNET_OPTION_DATA_SEND_TIMEOUT 7 +#define INTERNET_OPTION_DATA_RECEIVE_TIMEOUT 8 +#define INTERNET_OPTION_HANDLE_TYPE 9 +#define INTERNET_OPTION_CONTEXT_VALUE 10 +#define INTERNET_OPTION_LISTEN_TIMEOUT 11 +#define INTERNET_OPTION_READ_BUFFER_SIZE 12 +#define INTERNET_OPTION_WRITE_BUFFER_SIZE 13 +#define INTERNET_OPTION_ASYNC_ID 15 +#define INTERNET_OPTION_ASYNC_PRIORITY 16 +#define INTERNET_OPTION_PARENT_HANDLE 21 +#define INTERNET_OPTION_KEEP_CONNECTION 22 +#define INTERNET_OPTION_REQUEST_FLAGS 23 +#define INTERNET_OPTION_EXTENDED_ERROR 24 +#define INTERNET_OPTION_OFFLINE_MODE 26 +#define INTERNET_OPTION_CACHE_STREAM_HANDLE 27 +#define INTERNET_OPTION_USERNAME 28 +#define INTERNET_OPTION_PASSWORD 29 +#define INTERNET_OPTION_ASYNC 30 +#define INTERNET_OPTION_SECURITY_FLAGS 31 +#define INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT 32 +#define INTERNET_OPTION_DATAFILE_NAME 33 +#define INTERNET_OPTION_URL 34 +#define INTERNET_OPTION_SECURITY_CERTIFICATE 35 +#define INTERNET_OPTION_SECURITY_KEY_BITNESS 36 +#define INTERNET_OPTION_REFRESH 37 +#define INTERNET_OPTION_PROXY 38 +#define INTERNET_OPTION_SETTINGS_CHANGED 39 +#define INTERNET_OPTION_VERSION 40 +#define INTERNET_OPTION_USER_AGENT 41 +#define INTERNET_OPTION_END_BROWSER_SESSION 42 +#define INTERNET_OPTION_PROXY_USERNAME 43 +#define INTERNET_OPTION_PROXY_PASSWORD 44 +#define INTERNET_FIRST_OPTION INTERNET_OPTION_CALLBACK +#define INTERNET_LAST_OPTION INTERNET_OPTION_USER_AGENT +#define INTERNET_PRIORITY_FOREGROUND 1000 +#define INTERNET_HANDLE_TYPE_INTERNET 1 +#define INTERNET_HANDLE_TYPE_CONNECT_FTP 2 +#define INTERNET_HANDLE_TYPE_CONNECT_GOPHER 3 +#define INTERNET_HANDLE_TYPE_CONNECT_HTTP 4 +#define INTERNET_HANDLE_TYPE_FTP_FIND 5 +#define INTERNET_HANDLE_TYPE_FTP_FIND_HTML 6 +#define INTERNET_HANDLE_TYPE_FTP_FILE 7 +#define INTERNET_HANDLE_TYPE_FTP_FILE_HTML 8 +#define INTERNET_HANDLE_TYPE_GOPHER_FIND 9 +#define INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML 10 +#define INTERNET_HANDLE_TYPE_GOPHER_FILE 11 +#define INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML 12 +#define INTERNET_HANDLE_TYPE_HTTP_REQUEST 13 +#define SECURITY_FLAG_SECURE 1 +#define SECURITY_FLAG_SSL 2 +#define SECURITY_FLAG_SSL3 4 +#define SECURITY_FLAG_PCT 8 +#define SECURITY_FLAG_PCT4 16 +#define SECURITY_FLAG_IETFSSL4 0x20 +#define SECURITY_FLAG_IGNORE_REVOCATION 0x00000080 +#define SECURITY_FLAG_IGNORE_UNKNOWN_CA 0x00000100 +#define SECURITY_FLAG_IGNORE_WRONG_USAGE 0x00000200 +#define SECURITY_FLAG_40BIT 0x10000000 +#define SECURITY_FLAG_128BIT 0x20000000 +#define SECURITY_FLAG_56BIT 0x40000000 +#define SECURITY_FLAG_UNKNOWNBIT 0x80000000 +#define SECURITY_FLAG_NORMALBITNESS SECURITY_FLAG_40BIT +#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID INTERNET_FLAG_IGNORE_CERT_CN_INVALID +#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID INTERNET_FLAG_IGNORE_CERT_DATE_INVALID +#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS +#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP +#define INTERNET_SERVICE_FTP 1 +#define INTERNET_SERVICE_GOPHER 2 +#define INTERNET_SERVICE_HTTP 3 +#define INTERNET_STATUS_RESOLVING_NAME 10 +#define INTERNET_STATUS_NAME_RESOLVED 11 +#define INTERNET_STATUS_CONNECTING_TO_SERVER 20 +#define INTERNET_STATUS_CONNECTED_TO_SERVER 21 +#define INTERNET_STATUS_SENDING_REQUEST 30 +#define INTERNET_STATUS_REQUEST_SENT 31 +#define INTERNET_STATUS_RECEIVING_RESPONSE 40 +#define INTERNET_STATUS_RESPONSE_RECEIVED 41 +#define INTERNET_STATUS_CTL_RESPONSE_RECEIVED 42 +#define INTERNET_STATUS_PREFETCH 43 +#define INTERNET_STATUS_CLOSING_CONNECTION 50 +#define INTERNET_STATUS_CONNECTION_CLOSED 51 +#define INTERNET_STATUS_HANDLE_CREATED 60 +#define INTERNET_STATUS_HANDLE_CLOSING 70 +#define INTERNET_STATUS_REQUEST_COMPLETE 100 +#define INTERNET_STATUS_REDIRECT 110 +#define INTERNET_INVALID_STATUS_CALLBACK ((INTERNET_STATUS_CALLBACK)(-1L)) +#define FTP_TRANSFER_TYPE_UNKNOWN 0 +#define FTP_TRANSFER_TYPE_ASCII 1 +#define FTP_TRANSFER_TYPE_BINARY 2 +#define FTP_TRANSFER_TYPE_MASK (FTP_TRANSFER_TYPE_ASCII | FTP_TRANSFER_TYPE_BINARY) +#define MAX_GOPHER_DISPLAY_TEXT 128 +#define MAX_GOPHER_SELECTOR_TEXT 256 +#define MAX_GOPHER_HOST_NAME INTERNET_MAX_HOST_NAME_LENGTH +#define 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+1+1+2) +#define GOPHER_TYPE_TEXT_FILE 1 +#define GOPHER_TYPE_DIRECTORY 2 +#define GOPHER_TYPE_CSO 4 +#define GOPHER_TYPE_ERROR 8 +#define GOPHER_TYPE_MAC_BINHEX 16 +#define GOPHER_TYPE_DOS_ARCHIVE 32 +#define GOPHER_TYPE_UNIX_UUENCODED 64 +#define GOPHER_TYPE_INDEX_SERVER 128 +#define GOPHER_TYPE_TELNET 256 +#define GOPHER_TYPE_BINARY 512 +#define GOPHER_TYPE_REDUNDANT 1024 +#define GOPHER_TYPE_TN3270 0x800 +#define GOPHER_TYPE_GIF 0x1000 +#define GOPHER_TYPE_IMAGE 0x2000 +#define GOPHER_TYPE_BITMAP 0x4000 +#define GOPHER_TYPE_MOVIE 0x8000 +#define GOPHER_TYPE_SOUND 0x10000 +#define GOPHER_TYPE_HTML 0x20000 +#define GOPHER_TYPE_PDF 0x40000 +#define GOPHER_TYPE_CALENDAR 0x80000 +#define GOPHER_TYPE_INLINE 0x100000 +#define GOPHER_TYPE_UNKNOWN 0x20000000 +#define GOPHER_TYPE_ASK 0x40000000 +#define GOPHER_TYPE_GOPHER_PLUS 0x80000000 +#define IS_GOPHER_FILE(t) (BOOL)(((t)&GOPHER_TYPE_FILE_MASK)?TRUE:FALSE) +#define IS_GOPHER_DIRECTORY(t) (BOOL)(((t)&GOPHER_TYPE_DIRECTORY)?TRUE:FALSE) +#define IS_GOPHER_PHONE_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_CSO)?TRUE:FALSE) +#define IS_GOPHER_ERROR(t) (BOOL)(((t)&GOPHER_TYPE_ERROR)?TRUE:FALSE) +#define IS_GOPHER_INDEX_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_INDEX_SERVER)?TRUE:FALSE) +#define IS_GOPHER_TELNET_SESSION(t) (BOOL)(((t)&GOPHER_TYPE_TELNET)?TRUE:FALSE) +#define IS_GOPHER_BACKUP_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_REDUNDANT)?TRUE:FALSE) +#define IS_GOPHER_TN3270_SESSION(t) (BOOL)(((t)&GOPHER_TYPE_TN3270)?TRUE:FALSE) +#define IS_GOPHER_ASK(t) (BOOL)(((t)&GOPHER_TYPE_ASK)?TRUE:FALSE) +#define IS_GOPHER_PLUS(t) (BOOL)(((t)&GOPHER_TYPE_GOPHER_PLUS)?TRUE:FALSE) +#define IS_GOPHER_TYPE_KNOWN(t) (BOOL)(((t)&GOPHER_TYPE_UNKNOWN)?FALSE:TRUE) +#define GOPHER_TYPE_FILE_MASK (GOPHER_TYPE_TEXT_FILE|GOPHER_TYPE_MAC_BINHEX|GOPHER_TYPE_DOS_ARCHIVE|\ +GOPHER_TYPE_UNIX_UUENCODED|GOPHER_TYPE_BINARY|GOPHER_TYPE_GIF|GOPHER_TYPE_IMAGE|GOPHER_TYPE_BITMAP\ +|GOPHER_TYPE_MOVIE|GOPHER_TYPE_SOUND|GOPHER_TYPE_HTML|GOPHER_TYPE_PDF|GOPHER_TYPE_CALENDAR|GOPHER_TYPE_INLINE) +#define MAX_GOPHER_CATEGORY_NAME 128 +#define MAX_GOPHER_ATTRIBUTE_NAME 128 +#define MIN_GOPHER_ATTRIBUTE_LENGTH 256 +#define GOPHER_INFO_CATEGORY TEXT("+INFO") +#define GOPHER_ADMIN_CATEGORY TEXT("+ADMIN") +#define GOPHER_VIEWS_CATEGORY TEXT("+VIEWS") +#define GOPHER_ABSTRACT_CATEGORY TEXT("+ABSTRACT") +#define GOPHER_VERONICA_CATEGORY TEXT("+VERONICA") +#define GOPHER_ADMIN_ATTRIBUTE TEXT("Admin") +#define GOPHER_MOD_DATE_ATTRIBUTE TEXT("Mod-Date") +#define GOPHER_TTL_ATTRIBUTE TEXT("TTL") +#define GOPHER_SCORE_ATTRIBUTE TEXT("Score") +#define GOPHER_RANGE_ATTRIBUTE TEXT("Score-range") +#define GOPHER_SITE_ATTRIBUTE TEXT("Site") +#define GOPHER_ORG_ATTRIBUTE TEXT("Org") +#define GOPHER_LOCATION_ATTRIBUTE TEXT("Loc") +#define GOPHER_GEOG_ATTRIBUTE TEXT("Geog") +#define GOPHER_TIMEZONE_ATTRIBUTE TEXT("TZ") +#define GOPHER_PROVIDER_ATTRIBUTE TEXT("Provider") +#define GOPHER_VERSION_ATTRIBUTE TEXT("Version") +#define GOPHER_ABSTRACT_ATTRIBUTE TEXT("Abstract") +#define GOPHER_VIEW_ATTRIBUTE TEXT("View") +#define GOPHER_TREEWALK_ATTRIBUTE TEXT("treewalk") +#define GOPHER_ATTRIBUTE_ID_BASE 0xabcccc00 +#define GOPHER_CATEGORY_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE+1) +#define GOPHER_CATEGORY_ID_INFO (GOPHER_ATTRIBUTE_ID_BASE+2) +#define GOPHER_CATEGORY_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE+3) +#define GOPHER_CATEGORY_ID_VIEWS (GOPHER_ATTRIBUTE_ID_BASE+4) +#define GOPHER_CATEGORY_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE+5) +#define GOPHER_CATEGORY_ID_VERONICA (GOPHER_ATTRIBUTE_ID_BASE+6) +#define GOPHER_CATEGORY_ID_ASK (GOPHER_ATTRIBUTE_ID_BASE+7) +#define GOPHER_CATEGORY_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE+8) +#define GOPHER_ATTRIBUTE_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE+9) +#define GOPHER_ATTRIBUTE_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE+10) +#define GOPHER_ATTRIBUTE_ID_MOD_DATE (GOPHER_ATTRIBUTE_ID_BASE+11) +#define GOPHER_ATTRIBUTE_ID_TTL (GOPHER_ATTRIBUTE_ID_BASE+12) +#define GOPHER_ATTRIBUTE_ID_SCORE (GOPHER_ATTRIBUTE_ID_BASE+13) +#define GOPHER_ATTRIBUTE_ID_RANGE (GOPHER_ATTRIBUTE_ID_BASE+14) +#define GOPHER_ATTRIBUTE_ID_SITE (GOPHER_ATTRIBUTE_ID_BASE+15) +#define GOPHER_ATTRIBUTE_ID_ORG (GOPHER_ATTRIBUTE_ID_BASE+16) +#define GOPHER_ATTRIBUTE_ID_LOCATION (GOPHER_ATTRIBUTE_ID_BASE+17) +#define GOPHER_ATTRIBUTE_ID_GEOG (GOPHER_ATTRIBUTE_ID_BASE+18) +#define GOPHER_ATTRIBUTE_ID_TIMEZONE (GOPHER_ATTRIBUTE_ID_BASE+19) +#define GOPHER_ATTRIBUTE_ID_PROVIDER (GOPHER_ATTRIBUTE_ID_BASE+20) +#define GOPHER_ATTRIBUTE_ID_VERSION (GOPHER_ATTRIBUTE_ID_BASE+21) +#define GOPHER_ATTRIBUTE_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE+22) +#define GOPHER_ATTRIBUTE_ID_VIEW (GOPHER_ATTRIBUTE_ID_BASE+23) +#define GOPHER_ATTRIBUTE_ID_TREEWALK (GOPHER_ATTRIBUTE_ID_BASE+24) +#define GOPHER_ATTRIBUTE_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE+25) +#define HTTP_MAJOR_VERSION 1 +#define HTTP_MINOR_VERSION 0 +#define HTTP_VERSION TEXT("HTTP/1.0") +#define HTTP_QUERY_MIME_VERSION 0 +#define HTTP_QUERY_CONTENT_TYPE 1 +#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING 2 +#define HTTP_QUERY_CONTENT_ID 3 +#define HTTP_QUERY_CONTENT_DESCRIPTION 4 +#define HTTP_QUERY_CONTENT_LENGTH 5 +#define HTTP_QUERY_CONTENT_LANGUAGE 6 +#define HTTP_QUERY_ALLOW 7 +#define HTTP_QUERY_PUBLIC 8 +#define HTTP_QUERY_DATE 9 +#define HTTP_QUERY_EXPIRES 10 +#define HTTP_QUERY_LAST_MODIFIED 11 +#define HTTP_QUERY_MESSAGE_ID 12 +#define HTTP_QUERY_URI 13 +#define HTTP_QUERY_DERIVED_FROM 14 +#define HTTP_QUERY_COST 15 +#define HTTP_QUERY_LINK 16 +#define HTTP_QUERY_PRAGMA 17 +#define HTTP_QUERY_VERSION 18 +#define HTTP_QUERY_STATUS_CODE 19 +#define HTTP_QUERY_STATUS_TEXT 20 +#define HTTP_QUERY_RAW_HEADERS 21 +#define HTTP_QUERY_RAW_HEADERS_CRLF 22 +#define HTTP_QUERY_CONNECTION 23 +#define HTTP_QUERY_ACCEPT 24 +#define HTTP_QUERY_ACCEPT_CHARSET 25 +#define HTTP_QUERY_ACCEPT_ENCODING 26 +#define HTTP_QUERY_ACCEPT_LANGUAGE 27 +#define HTTP_QUERY_AUTHORIZATION 28 +#define HTTP_QUERY_CONTENT_ENCODING 29 +#define HTTP_QUERY_FORWARDED 30 +#define HTTP_QUERY_FROM 31 +#define HTTP_QUERY_IF_MODIFIED_SINCE 32 +#define HTTP_QUERY_LOCATION 33 +#define HTTP_QUERY_ORIG_URI 34 +#define HTTP_QUERY_REFERER 35 +#define HTTP_QUERY_RETRY_AFTER 36 +#define HTTP_QUERY_SERVER 37 +#define HTTP_QUERY_TITLE 38 +#define HTTP_QUERY_USER_AGENT 39 +#define HTTP_QUERY_WWW_AUTHENTICATE 40 +#define HTTP_QUERY_PROXY_AUTHENTICATE 41 +#define HTTP_QUERY_ACCEPT_RANGES 42 +#define HTTP_QUERY_SET_COOKIE 43 +#define HTTP_QUERY_COOKIE 44 +#define HTTP_QUERY_REQUEST_METHOD 45 +#define HTTP_QUERY_MAX 45 +#define HTTP_QUERY_CUSTOM 65535 +#define HTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000 +#define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000 +#define HTTP_QUERY_FLAG_NUMBER 0x20000000 +#define HTTP_QUERY_FLAG_COALESCE 0x10000000 +#define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS|HTTP_QUERY_FLAG_SYSTEMTIME|HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_FLAG_COALESCE) +#define HTTP_QUERY_HEADER_MASK (~HTTP_QUERY_MODIFIER_FLAGS_MASK) +#define HTTP_STATUS_OK 200 +#define HTTP_STATUS_CREATED 201 +#define HTTP_STATUS_ACCEPTED 202 +#define HTTP_STATUS_PARTIAL 203 +#define HTTP_STATUS_NO_CONTENT 204 +#define HTTP_STATUS_AMBIGUOUS 300 +#define HTTP_STATUS_MOVED 301 +#define HTTP_STATUS_REDIRECT 302 +#define HTTP_STATUS_REDIRECT_METHOD 303 +#define HTTP_STATUS_NOT_MODIFIED 304 +#define HTTP_STATUS_BAD_REQUEST 400 +#define HTTP_STATUS_DENIED 401 +#define HTTP_STATUS_PAYMENT_REQ 402 +#define HTTP_STATUS_FORBIDDEN 403 +#define HTTP_STATUS_NOT_FOUND 404 +#define HTTP_STATUS_BAD_METHOD 405 +#define HTTP_STATUS_NONE_ACCEPTABLE 406 +#define HTTP_STATUS_PROXY_AUTH_REQ 407 +#define HTTP_STATUS_REQUEST_TIMEOUT 408 +#define HTTP_STATUS_CONFLICT 409 +#define HTTP_STATUS_GONE 410 +#define HTTP_STATUS_AUTH_REFUSED 411 +#define HTTP_STATUS_SERVER_ERROR 500 +#define HTTP_STATUS_NOT_SUPPORTED 501 +#define HTTP_STATUS_BAD_GATEWAY 502 +#define HTTP_STATUS_SERVICE_UNAVAIL 503 +#define HTTP_STATUS_GATEWAY_TIMEOUT 504 +#define INTERNET_PREFETCH_PROGRESS 0 +#define INTERNET_PREFETCH_COMPLETE 1 +#define INTERNET_PREFETCH_ABORTED 2 +#define FLAGS_ERROR_UI_FILTER_FOR_ERRORS 0x01 +#define FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS 0x02 +#define FLAGS_ERROR_UI_FLAGS_GENERATE_DATA 0x04 +#define FLAGS_ERROR_UI_FLAGS_NO_UI 0x08 +#define HTTP_ADDREQ_INDEX_MASK 0x0000FFFF +#define HTTP_ADDREQ_FLAGS_MASK 0xFFFF0000 +#define HTTP_ADDREQ_FLAG_ADD_IF_NEW 0x10000000 +#define HTTP_ADDREQ_FLAG_ADD 0x20000000 +#define HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA 0x40000000 +#define HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON 0x01000000 +#define HTTP_ADDREQ_FLAG_COALESCE HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA +#define HTTP_ADDREQ_FLAG_REPLACE 0x80000000 +#define INTERNET_ERROR_BASE 12000 +#define ERROR_INTERNET_OUT_OF_HANDLES (INTERNET_ERROR_BASE+1) +#define ERROR_INTERNET_TIMEOUT (INTERNET_ERROR_BASE+2) +#define ERROR_INTERNET_EXTENDED_ERROR (INTERNET_ERROR_BASE+3) +#define ERROR_INTERNET_INTERNAL_ERROR (INTERNET_ERROR_BASE+4) +#define ERROR_INTERNET_INVALID_URL (INTERNET_ERROR_BASE+5) +#define ERROR_INTERNET_UNRECOGNIZED_SCHEME (INTERNET_ERROR_BASE+6) +#define ERROR_INTERNET_NAME_NOT_RESOLVED (INTERNET_ERROR_BASE+7) +#define ERROR_INTERNET_PROTOCOL_NOT_FOUND (INTERNET_ERROR_BASE+8) +#define ERROR_INTERNET_INVALID_OPTION (INTERNET_ERROR_BASE+9) +#define ERROR_INTERNET_BAD_OPTION_LENGTH (INTERNET_ERROR_BASE+10) +#define ERROR_INTERNET_OPTION_NOT_SETTABLE (INTERNET_ERROR_BASE+11) +#define ERROR_INTERNET_SHUTDOWN (INTERNET_ERROR_BASE+12) +#define ERROR_INTERNET_INCORRECT_USER_NAME (INTERNET_ERROR_BASE+13) +#define ERROR_INTERNET_INCORRECT_PASSWORD (INTERNET_ERROR_BASE+14) +#define ERROR_INTERNET_LOGIN_FAILURE (INTERNET_ERROR_BASE+15) +#define ERROR_INTERNET_INVALID_OPERATION (INTERNET_ERROR_BASE+16) +#define ERROR_INTERNET_OPERATION_CANCELLED (INTERNET_ERROR_BASE+17) +#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE (INTERNET_ERROR_BASE+18) +#define ERROR_INTERNET_INCORRECT_HANDLE_STATE (INTERNET_ERROR_BASE+19) +#define ERROR_INTERNET_NOT_PROXY_REQUEST (INTERNET_ERROR_BASE+20) +#define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND (INTERNET_ERROR_BASE+21) +#define ERROR_INTERNET_BAD_REGISTRY_PARAMETER (INTERNET_ERROR_BASE+22) +#define ERROR_INTERNET_NO_DIRECT_ACCESS (INTERNET_ERROR_BASE+23) +#define ERROR_INTERNET_NO_CONTEXT (INTERNET_ERROR_BASE+24) +#define ERROR_INTERNET_NO_CALLBACK (INTERNET_ERROR_BASE+25) +#define ERROR_INTERNET_REQUEST_PENDING (INTERNET_ERROR_BASE+26) +#define ERROR_INTERNET_INCORRECT_FORMAT (INTERNET_ERROR_BASE+27) +#define ERROR_INTERNET_ITEM_NOT_FOUND (INTERNET_ERROR_BASE+28) +#define ERROR_INTERNET_CANNOT_CONNECT (INTERNET_ERROR_BASE+29) +#define ERROR_INTERNET_CONNECTION_ABORTED (INTERNET_ERROR_BASE+30) +#define ERROR_INTERNET_CONNECTION_RESET (INTERNET_ERROR_BASE+31) +#define ERROR_INTERNET_FORCE_RETRY (INTERNET_ERROR_BASE+32) +#define ERROR_INTERNET_INVALID_PROXY_REQUEST (INTERNET_ERROR_BASE+33) +#define ERROR_INTERNET_NEED_UI (INTERNET_ERROR_BASE+34) +#define ERROR_INTERNET_HANDLE_EXISTS (INTERNET_ERROR_BASE+36) +#define ERROR_INTERNET_SEC_CERT_DATE_INVALID (INTERNET_ERROR_BASE+37) +#define ERROR_INTERNET_SEC_CERT_CN_INVALID (INTERNET_ERROR_BASE+38) +#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR (INTERNET_ERROR_BASE+39) +#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR (INTERNET_ERROR_BASE+40) +#define ERROR_INTERNET_MIXED_SECURITY (INTERNET_ERROR_BASE+41) +#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE (INTERNET_ERROR_BASE+42) +#define ERROR_INTERNET_POST_IS_NON_SECURE (INTERNET_ERROR_BASE+43) +#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED (INTERNET_ERROR_BASE+44) +#define ERROR_INTERNET_INVALID_CA (INTERNET_ERROR_BASE+45) +#define ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP (INTERNET_ERROR_BASE+46) +#define ERROR_INTERNET_ASYNC_THREAD_FAILED (INTERNET_ERROR_BASE+47) +#define ERROR_INTERNET_REDIRECT_SCHEME_CHANGE (INTERNET_ERROR_BASE+48) +#define ERROR_FTP_TRANSFER_IN_PROGRESS (INTERNET_ERROR_BASE+110) +#define ERROR_FTP_DROPPED (INTERNET_ERROR_BASE+111) +#define ERROR_GOPHER_PROTOCOL_ERROR (INTERNET_ERROR_BASE+130) +#define ERROR_GOPHER_NOT_FILE (INTERNET_ERROR_BASE+131) +#define ERROR_GOPHER_DATA_ERROR (INTERNET_ERROR_BASE+132) +#define ERROR_GOPHER_END_OF_DATA (INTERNET_ERROR_BASE+133) +#define ERROR_GOPHER_INVALID_LOCATOR (INTERNET_ERROR_BASE+134) +#define ERROR_GOPHER_INCORRECT_LOCATOR_TYPE (INTERNET_ERROR_BASE+135) +#define ERROR_GOPHER_NOT_GOPHER_PLUS (INTERNET_ERROR_BASE+136) +#define ERROR_GOPHER_ATTRIBUTE_NOT_FOUND (INTERNET_ERROR_BASE+137) +#define ERROR_GOPHER_UNKNOWN_LOCATOR (INTERNET_ERROR_BASE+138) +#define ERROR_HTTP_HEADER_NOT_FOUND (INTERNET_ERROR_BASE+150) +#define ERROR_HTTP_DOWNLEVEL_SERVER (INTERNET_ERROR_BASE+151) +#define ERROR_HTTP_INVALID_SERVER_RESPONSE (INTERNET_ERROR_BASE+152) +#define ERROR_HTTP_INVALID_HEADER (INTERNET_ERROR_BASE+153) +#define ERROR_HTTP_INVALID_QUERY_REQUEST (INTERNET_ERROR_BASE+154) +#define ERROR_HTTP_HEADER_ALREADY_EXISTS (INTERNET_ERROR_BASE+155) +#define ERROR_HTTP_REDIRECT_FAILED (INTERNET_ERROR_BASE+156) +#define ERROR_HTTP_NOT_REDIRECTED (INTERNET_ERROR_BASE+160) +#define ERROR_INTERNET_SECURITY_CHANNEL_ERROR (INTERNET_ERROR_BASE+157) +#define ERROR_INTERNET_UNABLE_TO_CACHE_FILE (INTERNET_ERROR_BASE+158) +#define ERROR_INTERNET_TCPIP_NOT_INSTALLED (INTERNET_ERROR_BASE+159) +#define INTERNET_ERROR_LAST ERROR_INTERNET_TCPIP_NOT_INSTALLED +#define URLCACHEAPI DECLSPEC_IMPORT +#define NORMAL_CACHE_ENTRY 1 +#define STABLE_CACHE_ENTRY 2 +#define STICKY_CACHE_ENTRY 4 +#define SPARSE_CACHE_ENTRY 0x10000 +#define OCX_CACHE_ENTRY 0x20000 +#define COOKIE_CACHE_ENTRY 0x100000 +#define URLHISTORY_CACHE_ENTRY 0x200000 +#define CACHE_ENTRY_ATTRIBUTE_FC 4 +#define CACHE_ENTRY_HITRATE_FC 0x10 +#define CACHE_ENTRY_MODTIME_FC 0x40 +#define CACHE_ENTRY_EXPTIME_FC 0x80 +#define CACHE_ENTRY_ACCTIME_FC 0x100 +#define CACHE_ENTRY_SYNCTIME_FC 0x200 +#define CACHE_ENTRY_HEADERINFO_FC 0x400 +#define IRF_ASYNC WININET_API_FLAG_ASYNC +#define IRF_SYNC WININET_API_FLAG_SYNC +#define IRF_USE_CONTEXT WININET_API_FLAG_USE_CONTEXT +#define IRF_NO_WAIT 8 +#define HSR_ASYNC WININET_API_FLAG_ASYNC +#define HSR_SYNC WININET_API_FLAG_SYNC +#define HSR_USE_CONTEXT WININET_API_FLAG_USE_CONTEXT +#define HSR_INITIATE 8 +#define HSR_DOWNLOAD 16 +#define HSR_CHUNKED 32 +#define INTERNET_DIAL_UNATTENDED 0x8000 +#define INTERNET_DIALSTATE_DISCONNECTED 1 +#define INTERENT_GOONLINE_REFRESH 1 +#define INTERENT_GOONLINE_MASK 1 +#define INTERNET_AUTODIAL_FORCE_ONLINE 1 +#define INTERNET_AUTODIAL_FORCE_UNATTENDED 2 +#define INTERNET_AUTODIAL_FAILIFSECURITYCHECK 4 +#define INTERNET_CONNECTION_MODEM 1 +#define INTERNET_CONNECTION_LAN 2 +#define INTERNET_CONNECTION_PROXY 4 +#define INTERNET_CONNECTION_MODEM_BUSY 8 + +#ifndef RC_INVOKED +typedef PVOID HINTERNET; +typedef HINTERNET *LPHINTERNET; +typedef WORD INTERNET_PORT,*LPINTERNET_PORT; +typedef enum { + INTERNET_SCHEME_PARTIAL = -2, INTERNET_SCHEME_UNKNOWN = -1, + INTERNET_SCHEME_DEFAULT = 0, 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,*LPINTERNET_SCHEME; +typedef struct { DWORD dwResult; DWORD dwError; } INTERNET_ASYNC_RESULT,*LPINTERNET_ASYNC_RESULT; +typedef struct { DWORD dwStatus; DWORD dwSize; } INTERNET_PREFETCH_STATUS,*LPINTERNET_PREFETCH_STATUS; +typedef struct { + DWORD dwAccessType; + LPCTSTR lpszProxy; + LPCTSTR lpszProxyBypass; +} INTERNET_PROXY_INFO,*LPINTERNET_PROXY_INFO; +typedef struct { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} INTERNET_VERSION_INFO,*LPINTERNET_VERSION_INFO; +typedef struct { + DWORD dwStructSize; + 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; +} URL_COMPONENTSA,*LPURL_COMPONENTSA; +typedef struct { + 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; +} URL_COMPONENTSW,*LPURL_COMPONENTSW; +typedef struct { + FILETIME ftExpiry; + FILETIME ftStart; + LPTSTR lpszSubjectInfo; + LPTSTR lpszIssuerInfo; + LPTSTR lpszProtocolName; + LPTSTR lpszSignatureAlgName; + LPTSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} INTERNET_CERTIFICATE_INFO,*LPINTERNET_CERTIFICATE_INFO; +typedef VOID (CALLBACK * INTERNET_STATUS_CALLBACK)(HINTERNET,DWORD,DWORD,PVOID,DWORD); +typedef INTERNET_STATUS_CALLBACK * LPINTERNET_STATUS_CALLBACK; +typedef struct { + CHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT+1]; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + CHAR Locator[MAX_GOPHER_LOCATOR_LENGTH+1]; +} GOPHER_FIND_DATAA,*LPGOPHER_FIND_DATAA; +typedef struct { + WCHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT+1]; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + WCHAR Locator[MAX_GOPHER_LOCATOR_LENGTH+1]; +} GOPHER_FIND_DATAW,*LPGOPHER_FIND_DATAW; +typedef struct { + LPCTSTR Comment; + LPCTSTR EmailAddress; +} GOPHER_ADMIN_ATTRIBUTE_TYPE,*LPGOPHER_ADMIN_ATTRIBUTE_TYPE; +typedef struct {FILETIME DateAndTime;} GOPHER_MOD_DATE_ATTRIBUTE_TYPE,*LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE; +typedef struct {DWORD Ttl;} GOPHER_TTL_ATTRIBUTE_TYPE,*LPGOPHER_TTL_ATTRIBUTE_TYPE; +typedef struct {INT Score;} GOPHER_SCORE_ATTRIBUTE_TYPE,*LPGOPHER_SCORE_ATTRIBUTE_TYPE; +typedef struct { + INT LowerBound; + INT UpperBound; +} GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE,*LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; +typedef struct {LPCTSTR Site;} GOPHER_SITE_ATTRIBUTE_TYPE,*LPGOPHER_SITE_ATTRIBUTE_TYPE; +typedef struct {LPCTSTR Organization;} GOPHER_ORGANIZATION_ATTRIBUTE_TYPE,*LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE; +typedef struct {LPCTSTR Location;} GOPHER_LOCATION_ATTRIBUTE_TYPE,*LPGOPHER_LOCATION_ATTRIBUTE_TYPE; +typedef struct { + INT DegreesNorth; + INT MinutesNorth; + INT SecondsNorth; + INT DegreesEast; + INT MinutesEast; + INT SecondsEast; +} GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE,*LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; +typedef struct {INT Zone;} GOPHER_TIMEZONE_ATTRIBUTE_TYPE,*LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE; +typedef struct {LPCTSTR Provider;} GOPHER_PROVIDER_ATTRIBUTE_TYPE,*LPGOPHER_PROVIDER_ATTRIBUTE_TYPE; +typedef struct {LPCTSTR Version;} GOPHER_VERSION_ATTRIBUTE_TYPE,*LPGOPHER_VERSION_ATTRIBUTE_TYPE; +typedef struct { + LPCTSTR ShortAbstract; + LPCTSTR AbstractFile; +} GOPHER_ABSTRACT_ATTRIBUTE_TYPE,*LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE; +typedef struct { + LPCTSTR ContentType; + LPCTSTR Language; + DWORD Size; +} GOPHER_VIEW_ATTRIBUTE_TYPE,*LPGOPHER_VIEW_ATTRIBUTE_TYPE; +typedef struct {BOOL TreeWalk;} GOPHER_VERONICA_ATTRIBUTE_TYPE,*LPGOPHER_VERONICA_ATTRIBUTE_TYPE; +typedef struct { + LPCTSTR QuestionType; + LPCTSTR QuestionText; +} GOPHER_ASK_ATTRIBUTE_TYPE,*LPGOPHER_ASK_ATTRIBUTE_TYPE; +typedef struct {LPCTSTR Text;} GOPHER_UNKNOWN_ATTRIBUTE_TYPE,*LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE; +typedef struct { + 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; +} GOPHER_ATTRIBUTE_TYPE,*LPGOPHER_ATTRIBUTE_TYPE; +typedef BOOL(CALLBACK *GOPHER_ATTRIBUTE_ENUMERATOR)(LPGOPHER_ATTRIBUTE_TYPE,DWORD); +typedef struct _INTERNET_CACHE_ENTRY_INFOA { + DWORD dwStructSize; + 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; +} INTERNET_CACHE_ENTRY_INFOA,*LPINTERNET_CACHE_ENTRY_INFOA; +typedef struct _INTERNET_CACHE_ENTRY_INFOW { + DWORD dwStructSize; + LPSTR 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; +} INTERNET_CACHE_ENTRY_INFOW,*LPINTERNET_CACHE_ENTRY_INFOW; +typedef struct _INTERNET_BUFFERSA { + DWORD dwStructSize; + struct _INTERNET_BUFFERSA *Next; + LPCSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} INTERNET_BUFFERSA,*LPINTERNET_BUFFERSA; +typedef struct _INTERNET_BUFFERSW { + DWORD dwStructSize; + struct _INTERNET_BUFFERS *Next; + LPCWSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} INTERNET_BUFFERSW,*LPINTERNET_BUFFERSW; + +#ifdef UNICODE +typedef URL_COMPONENTSW URL_COMPONENTS; +typedef LPURL_COMPONENTSW LPURL_COMPONENTS; +typedef GOPHER_FIND_DATAW GOPHER_FIND_DATA; +typedef LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; +typedef INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; +typedef LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; +typedef INTERNET_BUFFERSW INTERNET_BUFFERS,*LPINTERNET_BUFFERS; +#else +typedef URL_COMPONENTSA URL_COMPONENTS; +typedef LPURL_COMPONENTSA LPURL_COMPONENTS; +typedef GOPHER_FIND_DATAA GOPHER_FIND_DATA; +typedef LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; +typedef INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; +typedef LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; +typedef INTERNET_BUFFERSA INTERNET_BUFFERS,*LPINTERNET_BUFFERS; +#endif +BOOL WINAPI InternetTimeFromSystemTime(SYSTEMTIME*,DWORD,LPSTR,DWORD); +BOOL WINAPI InternetTimeToSystemTime(LPCSTR,SYSTEMTIME*,DWORD); +BOOL WINAPI InternetDebugGetLocalTime(SYSTEMTIME*,PDWORD); +BOOL WINAPI InternetCrackUrlA(LPCSTR,DWORD,DWORD,LPURL_COMPONENTSA); +BOOL WINAPI InternetCrackUrlW(LPCWSTR,DWORD,DWORD,LPURL_COMPONENTSW); +BOOL WINAPI InternetCreateUrlA(LPURL_COMPONENTSA,DWORD,LPSTR,PDWORD); +BOOL WINAPI InternetCreateUrlW(LPURL_COMPONENTSW,DWORD,LPWSTR,PDWORD); +BOOL WINAPI InternetCanonicalizeUrlA(LPCSTR,LPSTR,PDWORD,DWORD); +BOOL WINAPI InternetCanonicalizeUrlW(LPCWSTR,LPWSTR,PDWORD,DWORD); +BOOL WINAPI InternetCombineUrlA(LPCSTR,LPCSTR,LPSTR,PDWORD,DWORD); +BOOL WINAPI InternetCombineUrlW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,DWORD); +HINTERNET WINAPI InternetOpenA(LPCSTR,DWORD,LPCSTR,LPCSTR,DWORD); +HINTERNET WINAPI InternetOpenW(LPCWSTR,DWORD,LPCWSTR,LPCWSTR,DWORD); +BOOL WINAPI InternetCloseHandle(HINTERNET); +HINTERNET WINAPI InternetConnectA(HINTERNET,LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,DWORD,DWORD); +HINTERNET WINAPI InternetConnectW(HINTERNET,LPCWSTR,INTERNET_PORT,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD); +HINTERNET WINAPI InternetOpenUrlA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD,DWORD); +HINTERNET WINAPI InternetOpenUrlW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD); +BOOL WINAPI InternetReadFile(HINTERNET,PVOID,DWORD,PDWORD); +DWORD WINAPI InternetSetFilePointer( HINTERNET,LONG,PVOID,DWORD,DWORD); +BOOL WINAPI InternetWriteFile(HINTERNET,LPCVOID,DWORD,PDWORD); +BOOL WINAPI InternetQueryDataAvailable( HINTERNET,PDWORD,DWORD,DWORD); +BOOL WINAPI InternetFindNextFileA(HINTERNET,PVOID); +BOOL WINAPI InternetFindNextFileW(HINTERNET,PVOID); +BOOL WINAPI InternetQueryOptionA(HINTERNET,DWORD,PVOID,PDWORD); +BOOL WINAPI InternetQueryOptionW(HINTERNET,DWORD,PVOID,PDWORD); +BOOL WINAPI InternetSetOptionA(HINTERNET,DWORD,PVOID,DWORD); +BOOL WINAPI InternetSetOptionW(HINTERNET,DWORD,PVOID,DWORD); +BOOL WINAPI InternetSetOptionExA(HINTERNET,DWORD,PVOID,DWORD,DWORD); +BOOL WINAPI InternetSetOptionExW(HINTERNET,DWORD,PVOID,DWORD,DWORD); +BOOL WINAPI InternetGetLastResponseInfoA(PDWORD,LPSTR,PDWORD); +BOOL WINAPI InternetGetLastResponseInfoW(PDWORD,LPWSTR,PDWORD); +INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallback(HINTERNET,INTERNET_STATUS_CALLBACK); +HINTERNET WINAPI FtpFindFirstFileA(HINTERNET,LPCSTR,LPWIN32_FIND_DATA,DWORD,DWORD); +HINTERNET WINAPI FtpFindFirstFileW(HINTERNET,LPCWSTR,LPWIN32_FIND_DATA,DWORD,DWORD); +BOOL WINAPI FtpGetFileA(HINTERNET,LPCSTR,LPCSTR,BOOL,DWORD,DWORD,DWORD); +BOOL WINAPI FtpGetFileW( HINTERNET,LPCWSTR,LPCWSTR,BOOL,DWORD,DWORD,DWORD); +BOOL WINAPI FtpPutFileA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD); +BOOL WINAPI FtpPutFileW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD); +BOOL WINAPI FtpDeleteFileA(HINTERNET,LPCSTR); +BOOL WINAPI FtpDeleteFileW(HINTERNET,LPCWSTR); +BOOL WINAPI FtpRenameFileA(HINTERNET, LPCSTR,LPCSTR); +BOOL WINAPI FtpRenameFileW(HINTERNET,LPCWSTR,LPCWSTR); +HINTERNET WINAPI FtpOpenFileA(HINTERNET,LPCSTR,DWORD,DWORD,DWORD); +HINTERNET WINAPI FtpOpenFileW(HINTERNET,LPCWSTR,DWORD,DWORD,DWORD); +BOOL WINAPI FtpCreateDirectoryA(HINTERNET,LPCSTR); +BOOL WINAPI FtpCreateDirectoryW(HINTERNET,LPCWSTR); +BOOL WINAPI FtpRemoveDirectoryA(HINTERNET,LPCSTR); +BOOL WINAPI FtpRemoveDirectoryW(HINTERNET,LPCWSTR); +BOOL WINAPI FtpSetCurrentDirectoryA(HINTERNET,LPCSTR); +BOOL WINAPI FtpSetCurrentDirectoryW(HINTERNET,LPCWSTR); +BOOL WINAPI FtpGetCurrentDirectoryA(HINTERNET,LPSTR,PDWORD); +BOOL WINAPI FtpGetCurrentDirectoryW(HINTERNET,LPWSTR,PDWORD); +BOOL WINAPI FtpCommandA(HINTERNET,BOOL,DWORD,LPCSTR,DWORD); +BOOL WINAPI FtpCommandW( HINTERNET,BOOL,DWORD,LPCWSTR,DWORD); +BOOL WINAPI GopherCreateLocatorA(LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD); +BOOL WINAPI GopherCreateLocatorW(LPCWSTR,INTERNET_PORT,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD); +BOOL WINAPI GopherGetLocatorTypeA(LPCSTR,PDWORD); +BOOL WINAPI GopherGetLocatorTypeW(LPCWSTR,PDWORD); +HINTERNET WINAPI GopherFindFirstFileA(HINTERNET,LPCSTR,LPCSTR,LPGOPHER_FIND_DATAA,DWORD,DWORD); +HINTERNET WINAPI GopherFindFirstFileW(HINTERNET,LPCWSTR,LPCWSTR,LPGOPHER_FIND_DATAW,DWORD,DWORD); +HINTERNET WINAPI GopherOpenFileA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD); +HINTERNET WINAPI GopherOpenFileW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD); +BOOL WINAPI GopherGetAttributeA(HINTERNET,LPCSTR,LPCSTR,LPBYTE,DWORD,PDWORD,GOPHER_ATTRIBUTE_ENUMERATOR,DWORD); +BOOL WINAPI GopherGetAttributeW(HINTERNET,LPCWSTR, +LPCWSTR, LPBYTE, DWORD, PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); +HINTERNET WINAPI HttpOpenRequestA(HINTERNET,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR *,DWORD,DWORD); +HINTERNET WINAPI HttpOpenRequestW(HINTERNET,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR FAR * lplpszAcceptTypes , DWORD dwFlags, DWORD dwContext); +BOOL WINAPI HttpAddRequestHeadersA(HINTERNET,LPCSTR,DWORD,DWORD); +BOOL WINAPI HttpAddRequestHeadersW(HINTERNET,LPCWSTR,DWORD,DWORD); +BOOL WINAPI HttpSendRequestA(HINTERNET,LPCSTR,DWORD,PVOID,DWORD); +BOOL WINAPI HttpSendRequestW(HINTERNET,LPCWSTR,DWORD,PVOID,DWORD); +BOOL WINAPI HttpQueryInfoA(HINTERNET,DWORD,PVOID,PDWORD,PDWORD); +BOOL WINAPI HttpQueryInfoW(HINTERNET,DWORD,PVOID,PDWORD,PDWORD); +BOOL WINAPI InternetSetCookieA(LPCSTR,LPCSTR,LPCSTR); +BOOL WINAPI InternetSetCookieW(LPCSTR,LPCWSTR,LPCWSTR); +BOOL WINAPI InternetGetCookieA(LPCSTR,LPCSTR,LPSTR,PDWORD); +BOOL WINAPI InternetGetCookieW(LPCSTR,LPCWSTR,LPWSTR,PDWORD); +DWORD WINAPI InternetAttemptConnect(DWORD); +DWORD WINAPI InternetErrorDlg(HWND,HINTERNET,DWORD,DWORD,PVOID *); +DWORD WINAPI InternetConfirmZoneCrossing(HWND,LPSTR,LPSTR,BOOL); +BOOL WINAPI CreateUrlCacheEntryA(LPCSTR,DWORD,LPCSTR,LPSTR,DWORD); +BOOL WINAPI CreateUrlCacheEntryW(LPCSTR,DWORD,LPCSTR,LPWSTR,DWORD); +BOOL WINAPI CommitUrlCacheEntryA(LPCSTR,LPCSTR,FILETIME,FILETIME,DWORD,LPBYTE,DWORD,LPCSTR,DWORD); +BOOL WINAPI CommitUrlCacheEntryW(LPCSTR,LPCWSTR,FILETIME,FILETIME,DWORD,LPBYTE,DWORD,LPCWSTR,DWORD); +BOOL WINAPI RetrieveUrlCacheEntryFileA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD,DWORD); +BOOL WINAPI RetrieveUrlCacheEntryFileW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD,DWORD); +BOOL WINAPI UnlockUrlCacheEntryFile(LPCSTR,DWORD); +HANDLE WINAPI RetrieveUrlCacheEntryStreamA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD,BOOL,DWORD); +HANDLE WINAPI RetrieveUrlCacheEntryStreamW( LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD,BOOL,DWORD); +BOOL WINAPI ReadUrlCacheEntryStream(HANDLE,DWORD,PVOID,PDWORD,DWORD); +BOOL WINAPI UnlockUrlCacheEntryStream( HANDLE,DWORD); +BOOL WINAPI GetUrlCacheEntryInfoA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD); +BOOL WINAPI GetUrlCacheEntryInfoW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD); +BOOL WINAPI SetUrlCacheEntryInfoA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,DWORD); +BOOL WINAPI SetUrlCacheEntryInfoW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,DWORD); +HANDLE WINAPI FindFirstUrlCacheEntryA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD); +HANDLE WINAPI FindFirstUrlCacheEntryW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD); +BOOL WINAPI FindNextUrlCacheEntryA(HANDLE,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD); +BOOL WINAPI FindNextUrlCacheEntryW(HANDLE,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD); +BOOL WINAPI FindCloseUrlCache(HANDLE); +BOOL WINAPI DeleteUrlCacheEntry(LPCSTR); +DWORD AuthenticateUser(PVOID*,LPSTR,LPSTR,DWORD,LPSTR,DWORD,LPSTR,LPSTR); +BOOL WINAPI HttpSendRequestExA(HINTERNET,LPINTERNET_BUFFERSA,LPINTERNET_BUFFERSA,DWORD,DWORD); +BOOL WINAPI HttpSendRequestExW(HINTERNET,LPINTERNET_BUFFERSW,LPINTERNET_BUFFERSW,DWORD,DWORD); +BOOL WINAPI HttpEndRequestA(HINTERNET,LPINTERNET_BUFFERSA,DWORD,DWORD); +BOOL WINAPI HttpEndRequestW(HINTERNET,LPINTERNET_BUFFERSW,DWORD,DWORD); +DWORD WINAPI InternetDial(HWND,LPTSTR,DWORD,LPDWORD,DWORD); +DWORD WINAPI InternetHangUp(DWORD,DWORD); +BOOL WINAPI InternetGoOnline(LPTSTR,HWND,DWORD); +BOOL WINAPI InternetAutodial(DWORD,DWORD); +BOOL WINAPI InternetAutodialHangup(DWORD); +BOOL WINAPI InternetGetConnectedState(LPDWORD,DWORD); +BOOL WINAPI InternetSetDialState(LPCTSTR,DWORD,DWORD); +BOOL WINAPI InternetReadFileExA(HINTERNET,LPINTERNET_BUFFERSA,DWORD,DWORD_PTR); +BOOL WINAPI InternetReadFileExW(HINTERNET,LPINTERNET_BUFFERSW,DWORD,DWORD_PTR); + +#ifdef UNICODE +#define InternetCrackUrl InternetCrackUrlW +#define InternetCreateUrl InternetCreateUrlW +#define InternetCanonicalizeUrl InternetCanonicalizeUrlW +#define InternetCombineUrl InternetCombineUrlW +#define InternetOpen InternetOpenW +#define InternetConnect InternetConnectW +#define InternetOpenUrl InternetOpenUrlW +#define InternetFindNextFile InternetFindNextFileW +#define InternetQueryOption InternetQueryOptionW +#define InternetSetOption InternetSetOptionW +#define InternetSetOptionEx InternetSetOptionExW +#define InternetGetLastResponseInfo InternetGetLastResponseInfoW +#define InternetReadFileEx InternetReadFileExW +#define FtpFindFirstFile FtpFindFirstFileW +#define FtpGetFile FtpGetFileW +#define FtpPutFile FtpPutFileW +#define FtpDeleteFile FtpDeleteFileW +#define FtpRenameFile FtpRenameFileW +#define FtpOpenFile FtpOpenFileW +#define FtpCreateDirectory FtpCreateDirectoryW +#define FtpRemoveDirectory FtpRemoveDirectoryW +#define FtpSetCurrentDirectory FtpSetCurrentDirectoryW +#define FtpGetCurrentDirectory FtpGetCurrentDirectoryW +#define FtpCommand FtpCommandW +#define GopherGetLocatorType GopherGetLocatorTypeW +#define GopherCreateLocator GopherCreateLocatorW +#define GopherFindFirstFile GopherFindFirstFileW +#define GopherOpenFile GopherOpenFileW +#define GopherGetAttribute GopherGetAttributeW +#define HttpSendRequest HttpSendRequestW +#define HttpOpenRequest HttpOpenRequestW +#define HttpAddRequestHeaders HttpAddRequestHeadersW +#define HttpQueryInfo HttpQueryInfoW +#define InternetSetCookie InternetSetCookieW +#define InternetGetCookie InternetGetCookieW +#define CreateUrlCacheEntry CreateUrlCacheEntryW +#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamW +#define FindNextUrlCacheEntry FindNextUrlCacheEntryW +#define CommitUrlCacheEntry CommitUrlCacheEntryW +#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoW +#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoW +#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryW +#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileW +#define HttpSendRequestEx HttpSendRequestExW +#define HttpEndRequest HttpEndRequestW +#else +#define GopherGetAttribute GopherGetAttributeA +#define InternetCrackUrl InternetCrackUrlA +#define InternetCreateUrl InternetCreateUrlA +#define InternetCanonicalizeUrl InternetCanonicalizeUrlA +#define InternetCombineUrl InternetCombineUrlA +#define InternetOpen InternetOpenA +#define InternetConnect InternetConnectA +#define InternetOpenUrl InternetOpenUrlA +#define InternetFindNextFile InternetFindNextFileA +#define InternetQueryOption InternetQueryOptionA +#define InternetSetOption InternetSetOptionA +#define InternetSetOptionEx InternetSetOptionExA +#define InternetGetLastResponseInfo InternetGetLastResponseInfoA +#define InternetReadFileEx InternetReadFileExA +#define FtpFindFirstFile FtpFindFirstFileA +#define FtpGetFile FtpGetFileA +#define FtpPutFile FtpPutFileA +#define FtpDeleteFile FtpDeleteFileA +#define FtpRenameFile FtpRenameFileA +#define FtpOpenFile FtpOpenFileA +#define FtpCreateDirectory FtpCreateDirectoryA +#define FtpRemoveDirectory FtpRemoveDirectoryA +#define FtpSetCurrentDirectory FtpSetCurrentDirectoryA +#define FtpGetCurrentDirectory FtpGetCurrentDirectoryA +#define FtpCommand FtpCommandA +#define GopherGetLocatorType GopherGetLocatorTypeA +#define GopherCreateLocator GopherCreateLocatorA +#define GopherFindFirstFile GopherFindFirstFileA +#define GopherOpenFile GopherOpenFileA +#define HttpSendRequest HttpSendRequestA +#define HttpOpenRequest HttpOpenRequestA +#define HttpAddRequestHeaders HttpAddRequestHeadersA +#define HttpQueryInfo HttpQueryInfoA +#define InternetSetCookie InternetSetCookieA +#define InternetGetCookie InternetGetCookieA +#define CreateUrlCacheEntry CreateUrlCacheEntryA +#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamA +#define FindNextUrlCacheEntry FindNextUrlCacheEntryA +#define CommitUrlCacheEntry CommitUrlCacheEntryA +#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoA +#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoA +#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryA +#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileA +#define HttpSendRequestEx HttpSendRequestExA +#define HttpEndRequest HttpEndRequestA +#endif /* UNICODE */ +#endif /* RC_INVOKED */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winioctl.h b/reactos/w32api/include/winioctl.h new file mode 100644 index 00000000000..2457d603ca4 --- /dev/null +++ b/reactos/w32api/include/winioctl.h @@ -0,0 +1,546 @@ +#ifndef _WINIOCTL_H +#define _WINIOCTL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define HIST_NO_OF_BUCKETS 24 +#define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET) +#define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM) +#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) +#define DEVICE_TYPE_FROM_CTL_CODE(c) (((DWORD)((c)&0xffff0000))>>16) +#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE +#define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_CHECK_VERIFY2 CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_LOAD_MEDIA2 CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_EJECTION_CONTROL CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_MCN_CONTROL CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_DISK_BASE FILE_DEVICE_DISK +#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0,METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,1,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,2,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,3,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,4,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) +#define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE,5,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE,6,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) +#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE,7,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) +#define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE,8,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE,9,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,10,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE,11,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) +#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,13,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x12,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x13,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x14,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x15,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x16,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x17,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x18,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x28,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x34,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x35,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x36,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x40,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x50,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x200,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x203,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE,0x204,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x205,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE,0x206,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_REMOVE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x207,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE,0x300,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_DISK_UPDATE_DRIVE_SIZE CTL_CODE(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_MOUNT_DBLS_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA) +#define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA) +#define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA) +#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS) +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define DEVICE_TYPE DWORD +#define FILE_DEVICE_BEEP 1 +#define FILE_DEVICE_CD_ROM 2 +#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 3 +#define FILE_DEVICE_CONTROLLER 4 +#define FILE_DEVICE_DATALINK 5 +#define FILE_DEVICE_DFS 6 +#define FILE_DEVICE_DISK 7 +#define FILE_DEVICE_DISK_FILE_SYSTEM 8 +#define FILE_DEVICE_FILE_SYSTEM 9 +#define FILE_DEVICE_INPORT_PORT 10 +#define FILE_DEVICE_KEYBOARD 11 +#define FILE_DEVICE_MAILSLOT 12 +#define FILE_DEVICE_MIDI_IN 13 +#define FILE_DEVICE_MIDI_OUT 14 +#define FILE_DEVICE_MOUSE 15 +#define FILE_DEVICE_MULTI_UNC_PROVIDER 16 +#define FILE_DEVICE_NAMED_PIPE 17 +#define FILE_DEVICE_NETWORK 18 +#define FILE_DEVICE_NETWORK_BROWSER 19 +#define FILE_DEVICE_NETWORK_FILE_SYSTEM 20 +#define FILE_DEVICE_NULL 21 +#define FILE_DEVICE_PARALLEL_PORT 22 +#define FILE_DEVICE_PHYSICAL_NETCARD 23 +#define FILE_DEVICE_PRINTER 24 +#define FILE_DEVICE_SCANNER 25 +#define FILE_DEVICE_SERIAL_MOUSE_PORT 26 +#define FILE_DEVICE_SERIAL_PORT 27 +#define FILE_DEVICE_SCREEN 28 +#define FILE_DEVICE_SOUND 29 +#define FILE_DEVICE_STREAMS 30 +#define FILE_DEVICE_TAPE 31 +#define FILE_DEVICE_TAPE_FILE_SYSTEM 32 +#define FILE_DEVICE_TRANSPORT 33 +#define FILE_DEVICE_UNKNOWN 34 +#define FILE_DEVICE_VIDEO 35 +#define FILE_DEVICE_VIRTUAL_DISK 36 +#define FILE_DEVICE_WAVE_IN 37 +#define FILE_DEVICE_WAVE_OUT 38 +#define FILE_DEVICE_8042_PORT 39 +#define FILE_DEVICE_NETWORK_REDIRECTOR 40 +#define FILE_DEVICE_BATTERY 41 +#define FILE_DEVICE_BUS_EXTENDER 42 +#define FILE_DEVICE_MODEM 43 +#define FILE_DEVICE_VDM 44 +#define FILE_DEVICE_MASS_STORAGE 45 +#define FILE_DEVICE_SMB 46 +#define FILE_DEVICE_KS 47 +#define FILE_DEVICE_CHANGER 48 +#define FILE_DEVICE_SMARTCARD 49 +#define FILE_DEVICE_ACPI 50 +#define FILE_DEVICE_DVD 51 +#define FILE_DEVICE_FULLSCREEN_VIDEO 52 +#define FILE_DEVICE_DFS_FILE_SYSTEM 53 +#define FILE_DEVICE_DFS_VOLUME 54 +#define FILE_DEVICE_SERENUM 55 +#define FILE_DEVICE_TERMSRV 56 +#define FILE_DEVICE_KSEC 57 +#define PARTITION_ENTRY_UNUSED 0 +#define PARTITION_FAT_12 1 +#define PARTITION_XENIX_1 2 +#define PARTITION_XENIX_2 3 +#define PARTITION_FAT_16 4 +#define PARTITION_EXTENDED 5 +#define PARTITION_HUGE 6 +#define PARTITION_IFS 7 +#define PARTITION_FAT32 0x0B +#define PARTITION_FAT32_XINT13 0x0C +#define PARTITION_XINT13 0x0E +#define PARTITION_XINT13_EXTENDED 0x0F +#define PARTITION_PREP 0x41 +#define PARTITION_LDM 0x42 +#define PARTITION_UNIX 0x63 +#define PARTITION_NTFT 128 +#define VALID_NTFT 0xC0 +#define METHOD_BUFFERED 0 +#define METHOD_IN_DIRECT 1 +#define METHOD_OUT_DIRECT 2 +#define METHOD_NEITHER 3 +#define SERIAL_LSRMST_ESCAPE 0 +#define SERIAL_LSRMST_LSR_DATA 1 +#define SERIAL_LSRMST_LSR_NODATA 2 +#define SERIAL_LSRMST_MST 3 + +/* Also in ddk/winddk.h */ +#define FILE_ANY_ACCESS 0x00000000 +#define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS +#define FILE_READ_ACCESS 0x00000001 +#define FILE_WRITE_ACCESS 0x00000002 + +#define DISK_LOGGING_START 0 +#define DISK_LOGGING_STOP 1 +#define DISK_LOGGING_DUMP 2 +#define DISK_BINNING 3 +typedef WORD BAD_TRACK_NUMBER,*PBAD_TRACK_NUMBER; +typedef enum _BIN_TYPES {RequestSize,RequestLocation} BIN_TYPES; +typedef struct _BIN_RANGE { + LARGE_INTEGER StartValue; + LARGE_INTEGER Length; +} BIN_RANGE,*PBIN_RANGE; +typedef struct _BIN_COUNT { + BIN_RANGE BinRange; + DWORD BinCount; +} BIN_COUNT,*PBIN_COUNT; +typedef struct _BIN_RESULTS { + DWORD NumberOfBins; + BIN_COUNT BinCounts[1]; +} BIN_RESULTS,*PBIN_RESULTS; +typedef enum _PARTITION_STYLE { + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT, + PARTITION_STYLE_RAW +} PARTITION_STYLE; +typedef struct { + GUID DiskId; + DWORD MaxPartitionCount; +} CREATE_DISK_GPT,*PCREATE_DISK_GPT; +typedef struct { + DWORD Signature; +} CREATE_DISK_MBR,*PCREATE_DISK_MBR; +typedef struct { + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + }; +} CREATE_DISK,*PCREATE_DISK; +typedef enum { + EqualPriority, + KeepPrefetchedData, + KeepReadData +} DISK_CACHE_RETENTION_PRIORITY; +typedef struct _DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + _ANONYMOUS_UNION union { + struct { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } ScalarPrefetch; + struct { + WORD Minimum; + WORD Maximum; + } BlockPrefetch; + }; +} DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION; +typedef enum _DETECTION_TYPE { + DetectNone, + DetectInt13, + DetectExInt13 +} DETECTION_TYPE; +typedef struct _DISK_INT13_INFO { + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; +} DISK_INT13_INFO,*PDISK_INT13_INFO; +typedef struct _DISK_EX_INT13_INFO { + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; +} DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO; +typedef struct _DISK_DETECTION_INFO { + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; + }; + }; +} DISK_DETECTION_INFO,*PDISK_DETECTION_INFO; +typedef 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 +} MEDIA_TYPE,*PMEDIA_TYPE; +typedef struct _DISK_GEOMETRY { + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; +} DISK_GEOMETRY,*PDISK_GEOMETRY; +typedef struct _DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE Data[1]; +} DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX; +typedef struct _DISK_GROW_PARTITION { + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; +} DISK_GROW_PARTITION, *PDISK_GROW_PARTITION; +typedef struct _DISK_PARTITION_INFO { + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + _ANONYMOUS_UNION union { + struct { + DWORD Signature; + } Mbr; + struct { + GUID DiskId; + } Gpt; + }; +} DISK_PARTITION_INFO,*PDISK_PARTITION_INFO; +typedef struct _DISK_PERFORMANCE { + LARGE_INTEGER BytesRead; + LARGE_INTEGER BytesWritten; + LARGE_INTEGER ReadTime; + LARGE_INTEGER WriteTime; + DWORD ReadCount; + DWORD WriteCount; + DWORD QueueDepth; +} DISK_PERFORMANCE, *PDISK_PERFORMANCE; +typedef struct _DISK_RECORD { + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; +} DISK_RECORD,*PDISK_RECORD; +typedef struct _DISK_LOGGING { + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; +} DISK_LOGGING,*PDISK_LOGGING; +typedef struct DiskQuotaUserInformation { + LONGLONG QuotaUsed; + LONGLONG QuotaThreshold; + LONGLONG QuotaLimit; +} DISKQUOTA_USER_INFORMATION,*PDISKQUOTA_USER_INFORMATION; +typedef struct _FORMAT_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; +} FORMAT_PARAMETERS,*PFORMAT_PARAMETERS; +typedef struct _FORMAT_EX_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD SectorNumber[1]; +} FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS; +typedef struct { + LARGE_INTEGER Length; +} GET_LENGTH_INFORMATION; +typedef struct _HISTOGRAM_BUCKET { + DWORD Reads; + DWORD Writes; +} HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET; +typedef 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; +} DISK_HISTOGRAM,*PDISK_HISTOGRAM; +typedef struct _DISK_EXTENT { + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} DISK_EXTENT,*PDISK_EXTENT; +typedef struct _VOLUME_DISK_EXTENTS { + DWORD NumberOfDiskExtents; + DISK_EXTENT Extents[1]; +} VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS; +typedef struct _PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; +} PARTITION_INFORMATION,*PPARTITION_INFORMATION; +typedef struct _DRIVE_LAYOUT_INFORMATION { + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION PartitionEntry[1]; +} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION; +typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; +} DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT; +typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { + ULONG Signature; +} DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR; +typedef struct _PARTITION_INFORMATION_MBR { + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; +} PARTITION_INFORMATION_MBR; +typedef struct _PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR Name[36]; +} PARTITION_INFORMATION_GPT; +typedef struct _PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + _ANONYMOUS_UNION union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + }; +} PARTITION_INFORMATION_EX; +typedef struct _DRIVE_LAYOUT_INFORMATION_EX { + DWORD PartitionStyle; + DWORD PartitionCount; + _ANONYMOUS_UNION union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + }; + PARTITION_INFORMATION_EX PartitionEntry[1]; +} DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX; +typedef struct { + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} MOVE_FILE_DATA,*PMOVE_FILE_DATA; +typedef struct _PERF_BIN { + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE BinsRanges[1]; +} PERF_BIN,*PPERF_BIN; +typedef struct _PREVENT_MEDIA_REMOVAL { + BOOLEAN PreventMediaRemoval; +} PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL; +typedef struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + struct { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } Extents[1]; +} RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER; +typedef struct _REASSIGN_BLOCKS { + WORD Reserved; + WORD Count; + DWORD BlockNumber[1]; +} REASSIGN_BLOCKS,*PREASSIGN_BLOCKS; +typedef struct _SET_PARTITION_INFORMATION { + BYTE PartitionType; +} SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION; +typedef struct { + LARGE_INTEGER StartingLcn; +} STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER; +typedef struct { + LARGE_INTEGER StartingVcn; +} STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER; +typedef struct _VERIFY_INFORMATION { + LARGE_INTEGER StartingOffset; + DWORD Length; +} VERIFY_INFORMATION,*PVERIFY_INFORMATION; +typedef struct { + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE Buffer[1]; +} VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER; +typedef struct { + 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; +} NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER; + +#define IsRecognizedPartition(t)\ + (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ + ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ + ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_IFS))||\ + ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_HUGE))||\ + ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32))||\ + ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32_XINT13))||\ + ((t&PARTITION_NTFT)&&((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)) +#define IsContainerPartition(t)\ + (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_EXTENDED))||\ + ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13_EXTENDED))||\ + ((t&~PARTITION_NTFT)==PARTITION_EXTENDED)||\ + ((t&~PARTITION_NTFT)==PARTITION_XINT13_EXTENDED)) +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winldap.h b/reactos/w32api/include/winldap.h new file mode 100644 index 00000000000..36b86268d2c --- /dev/null +++ b/reactos/w32api/include/winldap.h @@ -0,0 +1,713 @@ +/* + 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. +*/ + +#ifndef _WINLDAP_H +#define _WINLDAP_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifndef _SCHANNEL_H +#include +#endif + +#ifndef _WINBER_H +#include +#endif + +#ifndef WINLDAPAPI +#define WINLDAPAPI DECLSPEC_IMPORT +#endif + +#ifndef _WINLDAP_DEPRECATED +#if (( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3) +#define _WINLDAP_DEPRECATED __attribute__((__deprecated__)) +#else +#define _WINLDAP_DEPRECATED +#endif +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define LDAP_VERSION1 1 +#define LDAP_VERSION2 2 +#define LDAP_VERSION3 3 +#define LDAP_VERSION LDAP_VERSION2 +#define LDAP_API_VERSION 2004 +#define LDAP_VERSION_MIN LDAP_VERSION2 +#define LDAP_VERSION_MAX LDAP_VERSION3 +#define LDAP_VENDOR_NAME "Microsoft Corporation." +#define LDAP_VENDOR_NAME_W L"Microsoft Corporation." +#define LDAP_VENDOR_VERSION 510 +#define LDAP_API_INFO_VERSION 1 +#define LDAP_FEATURE_INFO_VERSION 1 +#define LDAP_SUCCESS 0x00 +#define LDAP_OPERATIONS_ERROR 0x01 +#define LDAP_PROTOCOL_ERROR 0x02 +#define LDAP_TIMELIMIT_EXCEEDED 0x03 +#define LDAP_SIZELIMIT_EXCEEDED 0x04 +#define LDAP_COMPARE_FALSE 0x05 +#define LDAP_COMPARE_TRUE 0x06 +#define LDAP_STRONG_AUTH_NOT_SUPPORTED 0x07 +#define LDAP_STRONG_AUTH_REQUIRED 0x08 +#define LDAP_REFERRAL_V2 0x09 +#define LDAP_REFERRAL 0x0a +#define LDAP_ADMIN_LIMIT_EXCEEDED 0x0b +#define LDAP_UNAVAILABLE_CRIT_EXTENSION 0x0c +#define LDAP_CONFIDENTIALITY_REQUIRED 0x0d +#define LDAP_SASL_BIND_IN_PROGRESS 0x0e +#define LDAP_NO_SUCH_ATTRIBUTE 0x10 +#define LDAP_UNDEFINED_TYPE 0x11 +#define LDAP_INAPPROPRIATE_MATCHING 0x12 +#define LDAP_CONSTRAINT_VIOLATION 0x13 +#define LDAP_TYPE_OR_VALUE_EXISTS 0x14 +#define LDAP_INVALID_SYNTAX 0x15 +#define LDAP_NO_SUCH_OBJECT 0x20 +#define LDAP_ALIAS_PROBLEM 0x21 +#define LDAP_INVALID_DN_SYNTAX 0x22 +#define LDAP_IS_LEAF 0x23 +#define LDAP_ALIAS_DEREF_PROBLEM 0x24 +#define LDAP_INAPPROPRIATE_AUTH 0x30 +#define LDAP_INVALID_CREDENTIALS 0x31 +#define LDAP_INSUFFICIENT_ACCESS 0x32 +#define LDAP_BUSY 0x33 +#define LDAP_UNAVAILABLE 0x34 +#define LDAP_UNWILLING_TO_PERFORM 0x35 +#define LDAP_LOOP_DETECT 0x36 +#define LDAP_NAMING_VIOLATION 0x40 +#define LDAP_OBJECT_CLASS_VIOLATION 0x41 +#define LDAP_NOT_ALLOWED_ON_NONLEAF 0x42 +#define LDAP_NOT_ALLOWED_ON_RDN 0x43 +#define LDAP_ALREADY_EXISTS 0x44 +#define LDAP_NO_OBJECT_CLASS_MODS 0x45 +#define LDAP_RESULTS_TOO_LARGE 0x46 +#define LDAP_AFFECTS_MULTIPLE_DSAS 0x47 +#define LDAP_OTHER 0x50 +#define LDAP_SERVER_DOWN 0x51 +#define LDAP_LOCAL_ERROR 0x52 +#define LDAP_ENCODING_ERROR 0x53 +#define LDAP_DECODING_ERROR 0x54 +#define LDAP_TIMEOUT 0x55 +#define LDAP_AUTH_UNKNOWN 0x56 +#define LDAP_FILTER_ERROR 0x57 +#define LDAP_USER_CANCELLED 0x58 +#define LDAP_PARAM_ERROR 0x59 +#define LDAP_NO_MEMORY 0x5a +#define LDAP_CONNECT_ERROR 0x5b +#define LDAP_NOT_SUPPORTED 0x5c +#define LDAP_CONTROL_NOT_FOUND 0x5d +#define LDAP_NO_RESULTS_RETURNED 0x5e +#define LDAP_MORE_RESULTS_TO_RETURN 0x5f +#define LDAP_CLIENT_LOOP 0x60 +#define LDAP_REFERRAL_LIMIT_EXCEEDED 0x61 +#define LDAP_OPT_SUCCESS LDAP_SUCCESS +#define LDAP_AUTH_METHOD_NOT_SUPPORTED LDAP_STRONG_AUTH_NOT_SUPPORTED +#define LDAP_ATTRIBUTE_OR_VALUE_EXISTS LDAP_TYPE_OR_VALUE_EXISTS +#define LDAP_INSUFFICIENT_RIGHTS LDAP_INSUFFICIENT_ACCESS +#define LDAP_PARTIAL_RESULTS LDAP_REFERRAL_V2 +#define LDAP_PORT 389 +#define LDAP_SSL_PORT 636 +#define LDAP_GC_PORT 3268 +#define LDAP_SSL_GC_PORT 3269 +#define LDAP_OPT_ON ((void*)1) +#define LDAP_OPT_OFF ((void*)0) +#define LDAP_OPT_API_INFO 0x00 +#define LDAP_OPT_DESC 0x01 +#define LDAP_OPT_DEREF 0x02 +#define LDAP_OPT_SIZELIMIT 0x03 +#define LDAP_OPT_TIMELIMIT 0x04 +#define LDAP_OPT_THREAD_FN_PTRS 0x05 +#define LDAP_OPT_REBIND_FN 0x06 +#define LDAP_OPT_REBIND_ARG 0x07 +#define LDAP_OPT_REFERRALS 0x08 +#define LDAP_OPT_RESTART 0x09 +#define LDAP_OPT_SSL 0x0a +#define LDAP_OPT_IO_FN_PTRS 0x0b +#define LDAP_OPT_CACHE_FN_PTRS 0x0d +#define LDAP_OPT_CACHE_STRATEGY 0x0e +#define LDAP_OPT_CACHE_ENABLE 0x0f +#define LDAP_OPT_REFERRAL_HOP_LIMIT 0x10 +#define LDAP_OPT_PROTOCOL_VERSION 0x11 +#define LDAP_OPT_SERVER_CONTROLS 0x12 +#define LDAP_OPT_CLIENT_CONTROLS 0x13 +#define LDAP_OPT_API_FEATURE_INFO 0x15 +#define LDAP_OPT_HOST_NAME 0x30 +#define LDAP_OPT_ERROR_NUMBER 0x31 +#define LDAP_OPT_ERROR_STRING 0x32 +#define LDAP_OPT_SERVER_ERROR 0x33 +#define LDAP_OPT_SERVER_EXT_ERROR 0x34 +#define LDAP_OPT_PING_KEEP_ALIVE 0x36 +#define LDAP_OPT_PING_WAIT_TIME 0x37 +#define LDAP_OPT_PING_LIMIT 0x38 +#define LDAP_OPT_DNSDOMAIN_NAME 0x3b +#define LDAP_OPT_GETDSNAME_FLAGS 0x3d +#define LDAP_OPT_HOST_REACHABLE 0x3e +#define LDAP_OPT_PROMPT_CREDENTIALS 0x3f +#define LDAP_OPT_TCP_KEEPALIVE 0x40 +#define LDAP_OPT_REFERRAL_CALLBACK 0x70 +#define LDAP_OPT_CLIENT_CERTIFICATE 0x80 +#define LDAP_OPT_SERVER_CERTIFICATE 0x81 +#define LDAP_OPT_AUTO_RECONNECT 0x91 +#define LDAP_OPT_SSPI_FLAGS 0x92 +#define LDAP_OPT_SSL_INFO 0x93 +#define LDAP_OPT_REF_DEREF_CONN_PER_MSG 0x94 +#define LDAP_OPT_SIGN 0x95 +#define LDAP_OPT_ENCRYPT 0x96 +#define LDAP_OPT_SASL_METHOD 0x97 +#define LDAP_OPT_AREC_EXCLUSIVE 0x98 +#define LDAP_OPT_SECURITY_CONTEXT 0x99 +#define LDAP_OPT_ROOTDSE_CACHE 0x9a +#define LDAP_OPT_VERSION LDAP_OPT_PROTOCOL_VERSION +#define LDAP_OPT_TLS LDAP_OPT_SSL +#define LDAP_OPT_TLS_INFO LDAP_OPT_SSL_INFO +#define LDAP_DEREF_NEVER 0x00 +#define LDAP_DEREF_SEARCHING 0x01 +#define LDAP_DEREF_FINDING 0x02 +#define LDAP_DEREF_ALWAYS 0x03 +#define LDAP_NO_LIMIT 0 +#define LDAP_CONTROL_REFERRALS "1.2.840.113556.1.4.616" +#define LDAP_CONTROL_REFERRALS_W L"1.2.840.113556.1.4.616" +#define LDAP_CHASE_SUBORDINATE_REFERRALS 0x20U +#define LDAP_CHASE_EXTERNAL_REFERRALS 0x40U +#define LDAP_SCOPE_DEFAULT -1 +#define LDAP_SCOPE_BASE 0x0000 +#define LDAP_SCOPE_ONELEVEL 0x0001 +#define LDAP_SCOPE_SUBTREE 0x0002 +#define LDAP_MOD_ADD 0x00 +#define LDAP_MOD_DELETE 0x01 +#define LDAP_MOD_REPLACE 0x02 +#define LDAP_MOD_BVALUES 0x80 +#define LDAP_RES_BIND 0x61 +#define LDAP_RES_SEARCH_ENTRY 0x64 +#define LDAP_RES_SEARCH_RESULT 0x65 +#define LDAP_RES_MODIFY 0x67 +#define LDAP_RES_ADD 0x69 +#define LDAP_RES_DELETE 0x6b +#define LDAP_RES_MODRDN 0x6d +#define LDAP_RES_COMPARE 0x6f +#define LDAP_RES_SEARCH_REFERENCE 0x73 +#define LDAP_RES_EXTENDED 0x78 +#define LDAP_RES_ANY (-1L) +#define LDAP_MSG_ONE 0x00 +#define LDAP_MSG_ALL 0x01 +#define LDAP_MSG_RECEIVED 0x02 +#define LDAP_SERVER_SORT_OID "1.2.840.113556.1.4.473" +#define LDAP_SERVER_SORT_OID_W L"1.2.840.113556.1.4.473" +#define LDAP_SERVER_RESP_SORT_OID "1.2.840.113556.1.4.474" +#define LDAP_SERVER_RESP_SORT_OID_W L"1.2.840.113556.1.4.474" +#define LDAP_PAGED_RESULT_OID_STRING "1.2.840.113556.1.4.319" +#define LDAP_PAGED_RESULT_OID_STRING_W L"1.2.840.113556.1.4.319" +#define LDAP_CONTROL_VLVREQUEST "2.16.840.1.113730.3.4.9" +#define LDAP_CONTROL_VLVREQUEST_W L"2.16.840.1.113730.3.4.9" +#define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10" +#define LDAP_CONTROL_VLVRESPONSE_W L"2.16.840.1.113730.3.4.10" +#define LDAP_START_TLS_OID "1.3.6.1.4.1.1466.20037" +#define LDAP_START_TLS_OID_W L"1.3.6.1.4.1.1466.20037" +#define LDAP_TTL_EXTENDED_OP_OID "1.3.6.1.4.1.1466.101.119.1" +#define LDAP_TTL_EXTENDED_OP_OID_W L"1.3.6.1.4.1.1466.101.119.1" +#define LDAP_AUTH_NONE 0x00U +#define LDAP_AUTH_SIMPLE 0x80U +#define LDAP_AUTH_SASL 0x83U +#define LDAP_AUTH_OTHERKIND 0x86U +#define LDAP_AUTH_EXTERNAL (LDAP_AUTH_OTHERKIND | 0x20U) +#define LDAP_AUTH_SICILY (LDAP_AUTH_OTHERKIND | 0x200U) +#define LDAP_AUTH_NEGOTIATE (LDAP_AUTH_OTHERKIND | 0x400U) +#define LDAP_AUTH_MSN (LDAP_AUTH_OTHERKIND | 0x800U) +#define LDAP_AUTH_NTLM (LDAP_AUTH_OTHERKIND | 0x1000U) +#define LDAP_AUTH_DIGEST (LDAP_AUTH_OTHERKIND | 0x4000U) +#define LDAP_AUTH_DPA (LDAP_AUTH_OTHERKIND | 0x2000U) +#define LDAP_AUTH_SSPI LDAP_AUTH_NEGOTIATE +#define LDAP_FILTER_AND 0xa0 +#define LDAP_FILTER_OR 0xa1 +#define LDAP_FILTER_NOT 0xa2 +#define LDAP_FILTER_EQUALITY 0xa3 +#define LDAP_FILTER_SUBSTRINGS 0xa4 +#define LDAP_FILTER_GE 0xa5 +#define LDAP_FILTER_LE 0xa6 +#define LDAP_FILTER_APPROX 0xa8 +#define LDAP_FILTER_EXTENSIBLE 0xa9 +#define LDAP_FILTER_PRESENT 0x87 +#define LDAP_SUBSTRING_INITIAL 0x80 +#define LDAP_SUBSTRING_ANY 0x81 +#define LDAP_SUBSTRING_FINAL 0x82 + +typedef struct ldap { + char Reserved[76]; + 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; +} LDAP, *PLDAP; +typedef struct ldapmsg { + ULONG lm_msgid; + ULONG lm_msgtype; + BerElement *lm_ber; + struct ldapmsg *lm_chain; + struct ldapmsg *lm_next; + ULONG lm_time; +} LDAPMessage, *PLDAPMessage; +typedef struct l_timeval { + LONG tv_sec; + LONG tv_usec; +} LDAP_TIMEVAL, *PLDAP_TIMEVAL; +typedef 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; +} LDAPAPIInfoA, *PLDAPAPIInfoA; +typedef 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; +} LDAPAPIInfoW, *PLDAPAPIInfoW; +typedef struct ldap_apifeature_infoA { + int ldapaif_info_version; + char *ldapaif_name; + int ldapaif_version; +} LDAPAPIFeatureInfoA, *PLDAPAPIFeatureInfoA; +typedef struct ldap_apifeature_infoW { + int ldapaif_info_version; + PWCHAR ldapaif_name; + int ldapaif_version; +} LDAPAPIFeatureInfoW, *PLDAPAPIFeatureInfoW; +typedef struct ldapcontrolA { + PCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} LDAPControlA, *PLDAPControlA; +typedef struct ldapcontrolW { + PWCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} LDAPControlW, *PLDAPControlW; +typedef union mod_vals_uA { + PCHAR *modv_strvals; + BerValue **modv_bvals; +} mod_vals_u_tA; +typedef union mod_vals_uW { + PWCHAR *modv_strvals; + BerValue **modv_bvals; +} mod_vals_u_tW; +typedef struct ldapmodA { + ULONG mod_op; + PCHAR mod_type; + mod_vals_u_tA mod_vals; +} LDAPModA, *PLDAPModA; +typedef struct ldapmodW { + ULONG mod_op; + PWCHAR mod_type; + mod_vals_u_tW mod_vals; +} LDAPModW, *PLDAPModW; + +#define mod_values mod_vals.modv_strvals +#define mod_bvalues mod_vals.modv_bvals + +typedef struct ldapsearch LDAPSearch, *PLDAPSearch; +typedef struct ldapsortkeyA { + PCHAR sk_attrtype; + PCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} LDAPSortKeyA, *PLDAPSortKeyA; +typedef struct ldapsortkeyW { + PWCHAR sk_attrtype; + PWCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} LDAPSortKeyW, *PLDAPSortKeyW; +typedef ULONG (__cdecl QUERYFORCONNECTION)(PLDAP,PLDAP,PWCHAR,PCHAR,ULONG,PVOID,PVOID,PLDAP*); +typedef BOOLEAN (__cdecl NOTIFYOFNEWCONNECTION)(PLDAP,PLDAP,PWCHAR,PCHAR,PLDAP,ULONG,PVOID,PVOID,ULONG); +typedef ULONG (__cdecl DEREFERENCECONNECTION)(PLDAP,PLDAP); +typedef BOOLEAN (__cdecl QUERYCLIENTCERT)(PLDAP,PSecPkgContext_IssuerListInfoEx,PCCERT_CONTEXT*); +typedef struct LdapReferralCallback { + ULONG SizeOfCallbacks; + QUERYFORCONNECTION *QueryForConnection; + NOTIFYOFNEWCONNECTION *NotifyRoutine; + DEREFERENCECONNECTION *DereferenceRoutine; +} LDAP_REFERRAL_CALLBACK, *PLDAP_REFERRAL_CALLBACK; +typedef struct ldapvlvinfo { + int ldvlv_version; + unsigned long ldvlv_before_count; + unsigned long ldvlv_after_count; + unsigned long ldvlv_offset; + unsigned long ldvlv_count; + BerValue *ldvlv_attrvalue; + BerValue *ldvlv_context; + void *ldvlv_extradata; +} 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. + */ +#define ldap_perror(handle,message) printf("%s: %s\n", message, handle->ld_error); + +WINLDAPAPI PLDAP ldap_initA(PCHAR,ULONG); +WINLDAPAPI PLDAP ldap_initW(PWCHAR,ULONG); +WINLDAPAPI PLDAP ldap_openA(const PCHAR,ULONG); +WINLDAPAPI PLDAP ldap_openW(const PWCHAR,ULONG); +WINLDAPAPI PLDAP cldap_openA(const PCHAR,ULONG); +WINLDAPAPI PLDAP cldap_openW(const PWCHAR,ULONG); +WINLDAPAPI ULONG ldap_connect(LDAP*,struct l_timeval*); +WINLDAPAPI PLDAP ldap_sslinitA(PCHAR,ULONG,int); +WINLDAPAPI PLDAP ldap_sslinitW(PWCHAR,ULONG,int); +WINLDAPAPI ULONG ldap_start_tls_sA(LDAP*,PLDAPControlA*,PLDAPControlA*); +WINLDAPAPI ULONG ldap_start_tls_sW(LDAP*,PLDAPControlW*,PLDAPControlW*); +WINLDAPAPI BOOLEAN ldap_stop_tls_s(LDAP*); +WINLDAPAPI ULONG ldap_get_optionA(LDAP*,int,void*); +WINLDAPAPI ULONG ldap_get_optionW(LDAP*,int,void*); +WINLDAPAPI ULONG ldap_set_optionA(LDAP*,int,const void*); +WINLDAPAPI ULONG ldap_set_optionW(LDAP*,int,const void*); +WINLDAPAPI ULONG ldap_control_freeA(LDAPControlA*); +WINLDAPAPI ULONG ldap_control_freeW(LDAPControlW*); +WINLDAPAPI ULONG ldap_controls_freeA(LDAPControlA**); +WINLDAPAPI ULONG ldap_controls_freeW(LDAPControlW**); +WINLDAPAPI ULONG ldap_free_controlsA(LDAPControlA**); +WINLDAPAPI ULONG ldap_free_controlsW(LDAPControlW**); +WINLDAPAPI ULONG ldap_sasl_bindA(LDAP*,const PCHAR, const PCHAR,const BERVAL*,PLDAPControlA*,PLDAPControlA*,int*); +WINLDAPAPI ULONG ldap_sasl_bindW(LDAP*,const PWCHAR, const PWCHAR,const BERVAL*,PLDAPControlW*,PLDAPControlW*,int*); +WINLDAPAPI ULONG ldap_sasl_bind_sA(LDAP*,const PCHAR,const PCHAR,const BERVAL*,PLDAPControlA*,PLDAPControlA*,PBERVAL*); +WINLDAPAPI ULONG ldap_sasl_bind_sW(LDAP*,const PWCHAR,const PWCHAR,const BERVAL*,PLDAPControlW*,PLDAPControlW*,PBERVAL*); +WINLDAPAPI ULONG ldap_simple_bindA(LDAP*,const PCHAR,const PCHAR); +WINLDAPAPI ULONG ldap_simple_bindW(LDAP*,const PWCHAR,const PCHAR); +WINLDAPAPI ULONG ldap_simple_bind_sA(LDAP*,const PCHAR,const PCHAR); +WINLDAPAPI ULONG ldap_simple_bind_sW(LDAP*,const PWCHAR,const PCHAR); +WINLDAPAPI ULONG ldap_bindA(LDAP*,const PCHAR,const PCHAR,ULONG) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_bindW(LDAP*,const PWCHAR,const PCHAR,ULONG) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_bind_sA(LDAP*,const PCHAR,const PCHAR,ULONG) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_bind_sW(LDAP*,const PWCHAR,const PCHAR,ULONG) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_unbind(LDAP*); +WINLDAPAPI ULONG ldap_unbind_s(LDAP*); +WINLDAPAPI ULONG ldap_search_extA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,ULONG,ULONG,ULONG*); +WINLDAPAPI ULONG ldap_search_extW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,ULONG,ULONG,ULONG*); +WINLDAPAPI ULONG ldap_search_ext_sA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,PLDAPControlA*,PLDAPControlA*,struct l_timeval*,ULONG,LDAPMessage**); +WINLDAPAPI ULONG ldap_search_ext_sW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,struct l_timeval*,ULONG,LDAPMessage**); +WINLDAPAPI ULONG ldap_searchA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG); +WINLDAPAPI ULONG ldap_searchW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG); +WINLDAPAPI ULONG ldap_search_sA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,LDAPMessage**); +WINLDAPAPI ULONG ldap_search_sW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,LDAPMessage**); +WINLDAPAPI ULONG ldap_search_stA(LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,struct l_timeval*,LDAPMessage**); +WINLDAPAPI ULONG ldap_search_stW(LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,struct l_timeval*,LDAPMessage**); +WINLDAPAPI ULONG ldap_compare_extA(LDAP*,const PCHAR,const PCHAR,PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*,ULONG*); +WINLDAPAPI ULONG ldap_compare_extW(LDAP*,const PWCHAR,const PWCHAR,PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*,ULONG*); +WINLDAPAPI ULONG ldap_compare_ext_sA(LDAP*,const PCHAR,const PCHAR,const PCHAR,struct berval*,PLDAPControlA*,PLDAPControlA*); +WINLDAPAPI ULONG ldap_compare_ext_sW(LDAP*,const PWCHAR,const PWCHAR,const PWCHAR,struct berval*,PLDAPControlW*,PLDAPControlW*); +WINLDAPAPI ULONG ldap_compareA(LDAP*,const PCHAR,const PCHAR,PCHAR); +WINLDAPAPI ULONG ldap_compareW(LDAP*,const PWCHAR,const PWCHAR,PWCHAR); +WINLDAPAPI ULONG ldap_compare_sA(LDAP*,const PCHAR,const PCHAR,PCHAR); +WINLDAPAPI ULONG ldap_compare_sW(LDAP*,const PWCHAR,const PWCHAR,PWCHAR); +WINLDAPAPI ULONG ldap_modify_extA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*,ULONG*); +WINLDAPAPI ULONG ldap_modify_extW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*,ULONG*); +WINLDAPAPI ULONG ldap_modify_ext_sA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*); +WINLDAPAPI ULONG ldap_modify_ext_sW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*); +WINLDAPAPI ULONG ldap_modifyA(LDAP*,const PCHAR,LDAPModA*[]); +WINLDAPAPI ULONG ldap_modifyW(LDAP*,const PWCHAR,LDAPModW*[]); +WINLDAPAPI ULONG ldap_modify_sA(LDAP*,const PCHAR,LDAPModA*[]); +WINLDAPAPI ULONG ldap_modify_sW(LDAP*,const PWCHAR,LDAPModW*[]); +WINLDAPAPI ULONG ldap_rename_extA(LDAP*,const PCHAR,const PCHAR,const PCHAR,INT,PLDAPControlA*,PLDAPControlA*,ULONG*); +WINLDAPAPI ULONG ldap_rename_extW(LDAP*,const PWCHAR,const PWCHAR,const PWCHAR,INT,PLDAPControlW*,PLDAPControlW*,ULONG*); +WINLDAPAPI ULONG ldap_rename_ext_sA(LDAP*,const PCHAR,const PCHAR,const PCHAR,INT,PLDAPControlA*,PLDAPControlA*); +WINLDAPAPI ULONG ldap_rename_ext_sW(LDAP*,const PWCHAR,const PWCHAR,const PWCHAR,INT,PLDAPControlW*,PLDAPControlW*); +WINLDAPAPI ULONG ldap_modrdnA(LDAP*,PCHAR,PCHAR) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_modrdnW(LDAP*,PWCHAR,PWCHAR) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_modrdn_sA(LDAP*,PCHAR,PCHAR) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_modrdn_sW(LDAP*,PWCHAR,PWCHAR) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_modrdn2A(LDAP*,PCHAR,PCHAR,INT) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_modrdn2W(LDAP*,PWCHAR,PWCHAR,INT) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_modrdn2_sA(LDAP*,PCHAR,PCHAR,INT) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_modrdn2_sW(LDAP*,PWCHAR,PWCHAR,INT) _WINLDAP_DEPRECATED; +WINLDAPAPI ULONG ldap_add_extA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*,ULONG*); +WINLDAPAPI ULONG ldap_add_extW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*,ULONG*); +WINLDAPAPI ULONG ldap_add_ext_sA(LDAP*,const PCHAR,LDAPModA*[],PLDAPControlA*,PLDAPControlA*); +WINLDAPAPI ULONG ldap_add_ext_sW(LDAP*,const PWCHAR,LDAPModW*[],PLDAPControlW*,PLDAPControlW*); +WINLDAPAPI ULONG ldap_addA(LDAP*,const PCHAR,LDAPModA*[]); +WINLDAPAPI ULONG ldap_addW(LDAP*,const PWCHAR,LDAPModW*[]); +WINLDAPAPI ULONG ldap_add_sA(LDAP*,const PCHAR,LDAPModA*[]); +WINLDAPAPI ULONG ldap_add_sW(LDAP*,const PWCHAR,LDAPModW*[]); +WINLDAPAPI ULONG ldap_delete_extA(LDAP*,const PCHAR,PLDAPControlA*,PLDAPControlA*,ULONG*); +WINLDAPAPI ULONG ldap_delete_extW(LDAP*,const PWCHAR,PLDAPControlW*,PLDAPControlW*,ULONG*); +WINLDAPAPI ULONG ldap_delete_ext_sA(LDAP*,const PCHAR,PLDAPControlA*,PLDAPControlA*); +WINLDAPAPI ULONG ldap_delete_ext_sW(LDAP*,const PWCHAR,PLDAPControlW*,PLDAPControlW*); +WINLDAPAPI ULONG ldap_deleteA(LDAP*,const PCHAR); +WINLDAPAPI ULONG ldap_deleteW(LDAP*,const PWCHAR); +WINLDAPAPI ULONG ldap_delete_sA(LDAP*,const PCHAR); +WINLDAPAPI ULONG ldap_delete_sW(LDAP*,const PWCHAR); +WINLDAPAPI ULONG ldap_extended_operationA(LDAP*,const PCHAR,const struct berval*,PLDAPControlA*,PLDAPControlA*,ULONG*); +WINLDAPAPI ULONG ldap_extended_operationW(LDAP*,const PWCHAR,const struct berval*,PLDAPControlW*,PLDAPControlW*,ULONG*); +WINLDAPAPI ULONG ldap_extended_operation_sA(LDAP*,const PCHAR,const struct berval*,PLDAPControlA*,PLDAPControlA*,PCHAR*,struct berval**); +WINLDAPAPI ULONG ldap_extended_operation_sW(LDAP*,const PWCHAR,const struct berval*,PLDAPControlW*,PLDAPControlW*,PWCHAR*,struct berval**); +WINLDAPAPI ULONG ldap_close_extended_op(LDAP*,ULONG); +WINLDAPAPI ULONG ldap_abandon(LDAP*,ULONG); +WINLDAPAPI ULONG ldap_result(LDAP*,ULONG,ULONG,struct l_timeval*,LDAPMessage**); +WINLDAPAPI ULONG ldap_msgfree(LDAPMessage*); +WINLDAPAPI ULONG ldap_parse_resultA(LDAP*,LDAPMessage*,ULONG*,PCHAR*,PCHAR*,PCHAR**,PLDAPControlA**,BOOLEAN); +WINLDAPAPI ULONG ldap_parse_resultW(LDAP*,LDAPMessage*,ULONG*,PWCHAR*,PWCHAR*,PWCHAR**,PLDAPControlW**,BOOLEAN); +WINLDAPAPI ULONG ldap_parse_extended_resultA(LDAP,LDAPMessage*,PCHAR*,struct berval**,BOOLEAN); +WINLDAPAPI ULONG ldap_parse_extended_resultW(LDAP,LDAPMessage*,PWCHAR*,struct berval**,BOOLEAN); +WINLDAPAPI PCHAR ldap_err2stringA(ULONG); +WINLDAPAPI PWCHAR ldap_err2stringW(ULONG); +WINLDAPAPI ULONG LdapGetLastError(void); +WINLDAPAPI ULONG LdapMapErrorToWin32(ULONG); +WINLDAPAPI ULONG ldap_result2error(LDAP*,LDAPMessage*,ULONG); +WINLDAPAPI PLDAPMessage ldap_first_entry(LDAP*,LDAPMessage*); +WINLDAPAPI PLDAPMessage ldap_next_entry(LDAP*,LDAPMessage*); +WINLDAPAPI PLDAPMessage ldap_first_reference(LDAP*,LDAPMessage*); +WINLDAPAPI PLDAPMessage ldap_next_reference(LDAP*,LDAPMessage*); +WINLDAPAPI ULONG ldap_count_entries(LDAP*,LDAPMessage*); +WINLDAPAPI ULONG ldap_count_references(LDAP*,LDAPMessage*); +WINLDAPAPI PCHAR ldap_first_attributeA(LDAP*,LDAPMessage*,BerElement**); +WINLDAPAPI PWCHAR ldap_first_attributeW(LDAP*,LDAPMessage*,BerElement**); +WINLDAPAPI PCHAR ldap_next_attributeA(LDAP*,LDAPMessage*,BerElement*); +WINLDAPAPI PWCHAR ldap_next_attributeW(LDAP*,LDAPMessage*,BerElement*); +WINLDAPAPI VOID ldap_memfreeA(PCHAR); +WINLDAPAPI VOID ldap_memfreeW(PWCHAR); +WINLDAPAPI PCHAR* ldap_get_valuesA(LDAP*,LDAPMessage*,const PCHAR); +WINLDAPAPI PWCHAR* ldap_get_valuesW(LDAP*,LDAPMessage*,const PWCHAR); +WINLDAPAPI BerValue** ldap_get_values_lenA(LDAP*,LDAPMessage*,const PCHAR); +WINLDAPAPI BerValue** ldap_get_values_lenW(LDAP*,LDAPMessage*,const PWCHAR); +WINLDAPAPI ULONG ldap_count_valuesA(PCHAR*); +WINLDAPAPI ULONG ldap_count_valuesW(PWCHAR*); +WINLDAPAPI ULONG ldap_count_values_len(struct berval**); +WINLDAPAPI ULONG ldap_value_freeA(PCHAR*); +WINLDAPAPI ULONG ldap_value_freeW(PWCHAR*); +WINLDAPAPI ULONG ldap_value_free_len(struct berval**); +WINLDAPAPI PCHAR ldap_get_dnA(LDAP*,LDAPMessage*); +WINLDAPAPI PWCHAR ldap_get_dnW(LDAP*,LDAPMessage*); +WINLDAPAPI PCHAR ldap_explode_dnA(PCHAR,ULONG); +WINLDAPAPI PWCHAR ldap_explode_dnW(PWCHAR,ULONG); +WINLDAPAPI PCHAR ldap_dn2ufnA(PCHAR); +WINLDAPAPI PWCHAR ldap_dn2ufnW(PWCHAR); +WINLDAPAPI ULONG ldap_ufn2dnA(const PCHAR,PCHAR*); +WINLDAPAPI ULONG ldap_ufn2dnW(const PWCHAR,PWCHAR*); +WINLDAPAPI ULONG ldap_parse_referenceA(LDAP*,LDAPMessage*,PCHAR**); +WINLDAPAPI ULONG ldap_parse_referenceW(LDAP*,LDAPMessage*,PWCHAR**); +WINLDAPAPI ULONG ldap_check_filterA(LDAP*,PCHAR); +WINLDAPAPI ULONG ldap_check_filterW(LDAP*,PWCHAR); +WINLDAPAPI ULONG ldap_create_page_controlA(PLDAP,ULONG,struct berval*,UCHAR,PLDAPControlA*); +WINLDAPAPI ULONG ldap_create_page_controlW(PLDAP,ULONG,struct berval*,UCHAR,PLDAPControlW*); +WINLDAPAPI ULONG ldap_create_sort_controlA(PLDAP,PLDAPSortKeyA*,UCHAR,PLDAPControlA*); +WINLDAPAPI ULONG ldap_create_sort_controlW(PLDAP,PLDAPSortKeyW*,UCHAR,PLDAPControlW*); +WINLDAPAPI INT ldap_create_vlv_controlA(LDAP*,LDAPVLVInfo*,UCHAR,LDAPControlA**); +WINLDAPAPI INT ldap_create_vlv_controlW(LDAP*,LDAPVLVInfo*,UCHAR,LDAPControlW**); +WINLDAPAPI ULONG ldap_encode_sort_controlA(PLDAP,PLDAPSortKeyA*,PLDAPControlA,BOOLEAN); +WINLDAPAPI ULONG ldap_encode_sort_controlW(PLDAP,PLDAPSortKeyW*,PLDAPControlW,BOOLEAN); +WINLDAPAPI ULONG ldap_escape_filter_elementA(PCHAR,ULONG,PCHAR,ULONG); +WINLDAPAPI ULONG ldap_escape_filter_elementW(PWCHAR,ULONG,PWCHAR,ULONG); +WINLDAPAPI ULONG ldap_get_next_page(PLDAP,PLDAPSearch,ULONG,ULONG*); +WINLDAPAPI ULONG ldap_get_next_page_s(PLDAP,PLDAPSearch,struct l_timeval*,ULONG,ULONG*,LDAPMessage**); +WINLDAPAPI ULONG ldap_get_paged_count(PLDAP,PLDAPSearch,ULONG*,PLDAPMessage); +WINLDAPAPI ULONG ldap_parse_page_controlA(PLDAP,PLDAPControlA*,ULONG*,struct berval**); +WINLDAPAPI ULONG ldap_parse_page_controlW(PLDAP,PLDAPControlW*,ULONG*,struct berval**); +WINLDAPAPI ULONG ldap_parse_sort_controlA(PLDAP,PLDAPControlA*,ULONG*,PCHAR*); +WINLDAPAPI ULONG ldap_parse_sort_controlW(PLDAP,PLDAPControlW*,ULONG*,PWCHAR*); +WINLDAPAPI INT ldap_parse_vlv_controlA(LDAP*,LDAPControlA**,unsigned long*,unsigned long*,struct berval**,int*); +WINLDAPAPI INT ldap_parse_vlv_controlW(LDAP*,LDAPControlW**,unsigned long*,unsigned long*,struct berval**,int*); +WINLDAPAPI PLDAPSearch ldap_search_init_pageA(PLDAP,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,PLDAPControlA*,PLDAPControlA*,ULONG,ULONG,PLDAPSortKeyA*); +WINLDAPAPI PLDAPSearch ldap_search_init_pageW(PLDAP,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,PLDAPControlW*,PLDAPControlW*,ULONG,ULONG,PLDAPSortKeyW*); +WINLDAPAPI ULONG ldap_search_abandon_page(PLDAP,PLDAPSearch); +WINLDAPAPI LDAP ldap_conn_from_msg(LDAP*,LDAPMessage*); +WINLDAPAPI INT LdapUnicodeToUTF8(LPCWSTR,int,LPSTR,int); +WINLDAPAPI INT LdapUTF8ToUnicode(LPCSTR,int,LPWSTR,int); + +#if UNICODE +#define LDAPControl LDAPControlW +#define PLDAPControl PLDAPControlW +#define LDAPMod LDAPModW +#define PLDAPMod LDAPModW +#define LDAPSortKey LDAPSortKeyW +#define PLDAPSortKey PLDAPSortKeyW +#define LDAPAPIInfo LDAPAPIInfoW +#define PLDAPAPIInfo PLDAPAPIInfoW +#define LDAPAPIFeatureInfo LDAPAPIFeatureInfoW +#define PLDAPAPIFeatureInfo PLDAPAPIFeatureInfoW +#define cldap_open cldap_openW +#define ldap_open ldap_openW +#define ldap_bind ldap_bindW +#define ldap_bind_s ldap_bind_sW +#define ldap_simple_bind ldap_simple_bindW +#define ldap_simple_bind_s ldap_simple_bind_sW +#define ldap_sasl_bind ldap_sasl_bindW +#define ldap_sasl_bind_s ldap_sasl_bind_sW +#define ldap_init ldap_initW +#define ldap_sslinit ldap_sslinitW +#define ldap_get_option ldap_get_optionW +#define ldap_set_option ldap_set_optionW +#define ldap_start_tls_s ldap_start_tls_sW +#define ldap_add ldap_addW +#define ldap_add_ext ldap_add_extW +#define ldap_add_s ldap_add_sW +#define ldap_add_ext_s ldap_add_ext_sW +#define ldap_compare ldap_compareW +#define ldap_compare_ext ldap_compare_extW +#define ldap_compare_s ldap_compare_sW +#define ldap_compare_ext_s ldap_compare_ext_sW +#define ldap_delete ldap_deleteW +#define ldap_delete_ext ldap_delete_extW +#define ldap_delete_s ldap_delete_sW +#define ldap_delete_ext_s ldap_delete_ext_sW +#define ldap_extended_operation_s ldap_extended_operation_sW +#define ldap_extended_operation ldap_extended_operationW +#define ldap_modify ldap_modifyW +#define ldap_modify_ext ldap_modify_extW +#define ldap_modify_s ldap_modify_sW +#define ldap_modify_ext_s ldap_modify_ext_sW +#define ldap_check_filter ldap_check_filterW +#define ldap_count_values ldap_count_valuesW +#define ldap_create_page_control ldap_create_page_controlW +#define ldap_create_sort_control ldap_create_sort_controlW +#define ldap_create_vlv_control ldap_create_vlv_controlW +#define ldap_encode_sort_control ldap_encode_sort_controlW +#define ldap_escape_filter_element ldap_escape_filter_elementW +#define ldap_first_attribute ldap_first_attributeW +#define ldap_next_attribute ldap_next_attributeW +#define ldap_get_values ldap_get_valuesW +#define ldap_get_values_len ldap_get_values_lenW +#define ldap_parse_extended_result ldap_parse_extended_resultW +#define ldap_parse_page_control ldap_parse_page_controlW +#define ldap_parse_reference ldap_parse_referenceW +#define ldap_parse_result ldap_parse_resultW +#define ldap_parse_sort_control ldap_parse_sort_controlW +#define ldap_parse_vlv_control ldap_parse_vlv_controlW +#define ldap_search ldap_searchW +#define ldap_search_s ldap_search_sW +#define ldap_search_st ldap_search_stW +#define ldap_search_ext ldap_search_extW +#define ldap_search_ext_s ldap_search_ext_sW +#define ldap_search_init_page ldap_search_init_pageW +#define ldap_err2string ldap_err2stringW +#define ldap_control_free ldap_control_freeW +#define ldap_controls_free ldap_controls_freeW +#define ldap_free_controls ldap_free_controlsW +#define ldap_memfree ldap_memfreeW +#define ldap_value_free ldap_value_freeW +#define ldap_dn2ufn ldap_dn2ufnW +#define ldap_ufn2dn ldap_ufn2dnW +#define ldap_explode_dn ldap_explode_dnW +#define ldap_get_dn ldap_get_dnW +#define ldap_modrdn ldap_modrdnW +#define ldap_modrdn_s ldap_modrdn_sW +#define ldap_modrdn2 ldap_modrdn2W +#define ldap_modrdn2_s ldap_modrdn2_sW +#define ldap_rename ldap_rename_extW +#define ldap_rename_s ldap_rename_ext_sW +#define ldap_rename_ext ldap_rename_extW +#define ldap_rename_ext_s ldap_rename_ext_sW +#else +#define LDAPControl LDAPControlA +#define PLDAPControl PLDAPControlA +#define LDAPMod LDAPModA +#define PLDAPMod LDAPModA +#define LDAPSortKey LDAPSortKeyA +#define PLDAPSortKey PLDAPSortKeyA +#define LDAPAPIInfo LDAPAPIInfoA +#define PLDAPAPIInfo PLDAPAPIInfoA +#define LDAPAPIFeatureInfo LDAPAPIFeatureInfoA +#define PLDAPAPIFeatureInfo PLDAPAPIFeatureInfoA +#define cldap_open cldap_openA +#define ldap_open ldap_openA +#define ldap_bind ldap_bindA +#define ldap_bind_s ldap_bind_sA +#define ldap_simple_bind ldap_simple_bindA +#define ldap_simple_bind_s ldap_simple_bind_sA +#define ldap_sasl_bind ldap_sasl_bindA +#define ldap_sasl_bind_s ldap_sasl_bind_sA +#define ldap_init ldap_initA +#define ldap_sslinit ldap_sslinitA +#define ldap_get_option ldap_get_optionA +#define ldap_set_option ldap_set_optionA +#define ldap_start_tls_s ldap_start_tls_sA +#define ldap_add ldap_addA +#define ldap_add_ext ldap_add_extA +#define ldap_add_s ldap_add_sA +#define ldap_add_ext_s ldap_add_ext_sA +#define ldap_compare ldap_compareA +#define ldap_compare_ext ldap_compare_extA +#define ldap_compare_s ldap_compare_sA +#define ldap_compare_ext_s ldap_compare_ext_sA +#define ldap_delete ldap_deleteA +#define ldap_delete_ext ldap_delete_extA +#define ldap_delete_s ldap_delete_sA +#define ldap_delete_ext_s ldap_delete_ext_sA +#define ldap_extended_operation_s ldap_extended_operation_sA +#define ldap_extended_operation ldap_extended_operationA +#define ldap_modify ldap_modifyA +#define ldap_modify_ext ldap_modify_extA +#define ldap_modify_s ldap_modify_sA +#define ldap_modify_ext_s ldap_modify_ext_sA +#define ldap_check_filter ldap_check_filterA +#define ldap_count_values ldap_count_valuesA +#define ldap_create_page_control ldap_create_page_controlA +#define ldap_create_sort_control ldap_create_sort_controlA +#define ldap_create_vlv_control ldap_create_vlv_controlA +#define ldap_encode_sort_control ldap_encode_sort_controlA +#define ldap_escape_filter_element ldap_escape_filter_elementA +#define ldap_first_attribute ldap_first_attributeA +#define ldap_next_attribute ldap_next_attributeA +#define ldap_get_values ldap_get_valuesA +#define ldap_get_values_len ldap_get_values_lenA +#define ldap_parse_extended_result ldap_parse_extended_resultA +#define ldap_parse_page_control ldap_parse_page_controlA +#define ldap_parse_reference ldap_parse_referenceA +#define ldap_parse_result ldap_parse_resultA +#define ldap_parse_sort_control ldap_parse_sort_controlA +#define ldap_parse_vlv_control ldap_parse_vlv_controlA +#define ldap_search ldap_searchA +#define ldap_search_s ldap_search_sA +#define ldap_search_st ldap_search_stA +#define ldap_search_ext ldap_search_extA +#define ldap_search_ext_s ldap_search_ext_sA +#define ldap_search_init_page ldap_search_init_pageA +#define ldap_err2string ldap_err2stringA +#define ldap_control_free ldap_control_freeA +#define ldap_controls_free ldap_controls_freeA +#define ldap_free_controls ldap_free_controlsA +#define ldap_memfree ldap_memfreeA +#define ldap_value_free ldap_value_freeA +#define ldap_dn2ufn ldap_dn2ufnA +#define ldap_ufn2dn ldap_ufn2dnA +#define ldap_explode_dn ldap_explode_dnA +#define ldap_get_dn ldap_get_dnA +#define ldap_modrdn ldap_modrdnA +#define ldap_modrdn_s ldap_modrdn_sA +#define ldap_modrdn2 ldap_modrdn2A +#define ldap_modrdn2_s ldap_modrdn2_sA +#define ldap_rename ldap_rename_extA +#define ldap_rename_s ldap_rename_ext_sA +#define ldap_rename_ext ldap_rename_extA +#define ldap_rename_ext_s ldap_rename_ext_sA +#endif + +#ifdef __cplusplus +} +#endif + +#include + +#endif /* _WINLDAP_H */ diff --git a/reactos/w32api/include/winnetwk.h b/reactos/w32api/include/winnetwk.h new file mode 100644 index 00000000000..0e734462587 --- /dev/null +++ b/reactos/w32api/include/winnetwk.h @@ -0,0 +1,346 @@ +#ifndef _WINNETWK_H +#define _WINNETWK_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define WNNC_NET_MSNET 0x00010000 +#define WNNC_NET_LANMAN 0x00020000 +#define WNNC_NET_NETWARE 0x00030000 +#define WNNC_NET_VINES 0x00040000 +#define WNNC_NET_10NET 0x00050000 +#define WNNC_NET_LOCUS 0x00060000 +#define WNNC_NET_SUN_PC_NFS 0x00070000 +#define WNNC_NET_LANSTEP 0x00080000 +#define WNNC_NET_9TILES 0x00090000 +#define WNNC_NET_LANTASTIC 0x000A0000 +#define WNNC_NET_AS400 0x000B0000 +#define WNNC_NET_FTP_NFS 0x000C0000 +#define WNNC_NET_PATHWORKS 0x000D0000 +#define WNNC_NET_LIFENET 0x000E0000 +#define WNNC_NET_POWERLAN 0x000F0000 +#define WNNC_NET_BWNFS 0x00100000 +#define WNNC_NET_COGENT 0x00110000 +#define WNNC_NET_FARALLON 0x00120000 +#define WNNC_NET_APPLETALK 0x00130000 +#define WNNC_NET_INTERGRAPH 0x00140000 +#define WNNC_NET_SYMFONET 0x00150000 +#define WNNC_NET_CLEARCASE 0x00160000 +#define WNNC_NET_FRONTIER 0x00170000 +#define WNNC_NET_BMC 0x00180000 +#define WNNC_NET_DCE 0x00190000 +#define WNNC_NET_AVID 0x001A0000 +#define WNNC_NET_DOCUSPACE 0x001B0000 +#define WNNC_NET_MANGOSOFT 0x001C0000 +#define WNNC_NET_SERNET 0x001D0000 +#define WNNC_NET_DECORB 0x00200000 +#define WNNC_NET_PROTSTOR 0x00210000 +#define WNNC_NET_FJ_REDIR 0x00220000 +#define WNNC_NET_DISTINCT 0x00230000 +#define WNNC_NET_TWINS 0x00240000 +#define WNNC_NET_RDR2SAMPLE 0x00250000 +#define WNNC_NET_CSC 0x00260000 +#define WNNC_NET_3IN1 0x00270000 +#define WNNC_NET_EXTENDNET 0x00290000 +#define WNNC_NET_OBJECT_DIRE 0x00300000 +#define WNNC_NET_MASFAX 0x00310000 +#define WNNC_NET_HOB_NFS 0x00320000 +#define WNNC_NET_SHIVA 0x00330000 +#define WNNC_NET_IBMAL 0x00340000 +#define WNNC_CRED_MANAGER 0xFFFF0000 + +#define RESOURCE_CONNECTED 1 +#define RESOURCE_GLOBALNET 2 +#define RESOURCE_REMEMBERED 3 +#define RESOURCE_RECENT 4 +#define RESOURCE_CONTEXT 5 +#define RESOURCETYPE_ANY 0 +#define RESOURCETYPE_DISK 1 +#define RESOURCETYPE_PRINT 2 +#define RESOURCETYPE_RESERVED 8 +#define RESOURCETYPE_UNKNOWN 0xFFFFFFFF +#define RESOURCEUSAGE_CONNECTABLE 0x00000001 +#define RESOURCEUSAGE_CONTAINER 0x00000002 +#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004 +#define RESOURCEUSAGE_SIBLING 0x00000008 +#define RESOURCEUSAGE_ATTACHED 0x00000010 +#define RESOURCEUSAGE_ALL (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED) +#define RESOURCEUSAGE_RESERVED 0x80000000 +#define RESOURCEDISPLAYTYPE_GENERIC 0 +#define RESOURCEDISPLAYTYPE_DOMAIN 1 +#define RESOURCEDISPLAYTYPE_SERVER 2 +#define RESOURCEDISPLAYTYPE_SHARE 3 +#define RESOURCEDISPLAYTYPE_FILE 4 +#define RESOURCEDISPLAYTYPE_GROUP 5 +#define RESOURCEDISPLAYTYPE_NETWORK 6 +#define RESOURCEDISPLAYTYPE_ROOT 7 +#define RESOURCEDISPLAYTYPE_SHAREADMIN 8 +#define RESOURCEDISPLAYTYPE_DIRECTORY 9 +#define RESOURCEDISPLAYTYPE_TREE 10 +#define NETPROPERTY_PERSISTENT 1 +#define CONNECT_UPDATE_PROFILE 1 +#define CONNECT_UPDATE_RECENT 2 +#define CONNECT_TEMPORARY 4 +#define CONNECT_INTERACTIVE 8 +#define CONNECT_PROMPT 16 +#define CONNECT_NEED_DRIVE 32 +#define CONNECT_REFCOUNT 64 +#define CONNECT_REDIRECT 128 +#define CONNECT_LOCALDRIVE 256 +#define CONNECT_CURRENT_MEDIA 512 +#define CONNDLG_RO_PATH 1 +#define CONNDLG_CONN_POINT 2 +#define CONNDLG_USE_MRU 4 +#define CONNDLG_HIDE_BOX 8 +#define CONNDLG_PERSIST 16 +#define CONNDLG_NOT_PERSIST 32 +#define DISC_UPDATE_PROFILE 1 +#define DISC_NO_FORCE 64 +#define WNFMT_MULTILINE 1 +#define WNFMT_ABBREVIATED 2 +#define WNFMT_INENUM 16 +#define WNFMT_CONNECTION 32 +#define WN_SUCCESS NO_ERROR +#define WN_NO_ERROR NO_ERROR +#define WN_NOT_SUPPORTED ERROR_NOT_SUPPORTED +#define WN_CANCEL ERROR_CANCELLED +#define WN_RETRY ERROR_RETRY +#define WN_NET_ERROR ERROR_UNEXP_NET_ERR +#define WN_MORE_DATA ERROR_MORE_DATA +#define WN_BAD_POINTER ERROR_INVALID_ADDRESS +#define WN_BAD_VALUE ERROR_INVALID_PARAMETER +#define WN_BAD_USER ERROR_BAD_USERNAME +#define WN_BAD_PASSWORD ERROR_INVALID_PASSWORD +#define WN_ACCESS_DENIED ERROR_ACCESS_DENIED +#define WN_FUNCTION_BUSY ERROR_BUSY +#define WN_WINDOWS_ERROR ERROR_UNEXP_NET_ERR +#define WN_OUT_OF_MEMORY ERROR_NOT_ENOUGH_MEMORY +#define WN_NO_NETWORK ERROR_NO_NETWORK +#define WN_EXTENDED_ERROR ERROR_EXTENDED_ERROR +#define WN_BAD_LEVEL ERROR_INVALID_LEVEL +#define WN_BAD_HANDLE ERROR_INVALID_HANDLE +#define WN_NOT_INITIALIZING ERROR_ALREADY_INITIALIZED +#define WN_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES +#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED +#define WN_OPEN_FILES ERROR_OPEN_FILES +#define WN_DEVICE_IN_USE ERROR_DEVICE_IN_USE +#define WN_BAD_NETNAME ERROR_BAD_NET_NAME +#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE +#define WN_ALREADY_CONNECTED ERROR_ALREADY_ASSIGNED +#define WN_DEVICE_ERROR ERROR_GEN_FAILURE +#define WN_CONNECTION_CLOSED ERROR_CONNECTION_UNAVAIL +#define WN_NO_NET_OR_BAD_PATH ERROR_NO_NET_OR_BAD_PATH +#define WN_BAD_PROVIDER ERROR_BAD_PROVIDER +#define WN_CANNOT_OPEN_PROFILE ERROR_CANNOT_OPEN_PROFILE +#define WN_BAD_PROFILE ERROR_BAD_PROFILE +#define WN_BAD_DEV_TYPE ERROR_BAD_DEV_TYPE +#define WN_DEVICE_ALREADY_REMEMBERED ERROR_DEVICE_ALREADY_REMEMBERED +#define WN_NO_MORE_ENTRIES ERROR_NO_MORE_ITEMS +#define WN_NOT_CONTAINER ERROR_NOT_CONTAINER +#define WN_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED +#define WN_NOT_LOGGED_ON ERROR_NOT_LOGGED_ON +#define WN_NOT_VALIDATED ERROR_NO_LOGON_SERVERS +#define UNIVERSAL_NAME_INFO_LEVEL 1 +#define REMOTE_NAME_INFO_LEVEL 2 +#define NETINFO_DLL16 1 +#define NETINFO_DISKRED 4 +#define NETINFO_PRINTERRED 8 +#define RP_LOGON 1 +#define RP_INIFILE 2 +#define PP_DISPLAYERRORS 1 +#define WNCON_FORNETCARD 1 +#define WNCON_NOTROUTED 2 +#define WNCON_SLOWLINK 4 +#define WNCON_DYNAMIC 8 + +#ifndef RC_INVOKED +typedef struct _NETRESOURCEA { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPSTR lpLocalName; + LPSTR lpRemoteName; + LPSTR lpComment ; + LPSTR lpProvider; +}NETRESOURCEA,*LPNETRESOURCEA; +typedef struct _NETRESOURCEW { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + LPWSTR lpComment ; + LPWSTR lpProvider; +}NETRESOURCEW,*LPNETRESOURCEW; +typedef struct _CONNECTDLGSTRUCTA{ + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEA lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} CONNECTDLGSTRUCTA,*LPCONNECTDLGSTRUCTA; +typedef struct _CONNECTDLGSTRUCTW{ + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEW lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} CONNECTDLGSTRUCTW,*LPCONNECTDLGSTRUCTW; +typedef struct _DISCDLGSTRUCTA{ + DWORD cbStructure; + HWND hwndOwner; + LPSTR lpLocalName; + LPSTR lpRemoteName; + DWORD dwFlags; +} DISCDLGSTRUCTA,*LPDISCDLGSTRUCTA; +typedef struct _DISCDLGSTRUCTW{ + DWORD cbStructure; + HWND hwndOwner; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + DWORD dwFlags; +} DISCDLGSTRUCTW,*LPDISCDLGSTRUCTW; +typedef struct _UNIVERSAL_NAME_INFOA { LPSTR lpUniversalName; }UNIVERSAL_NAME_INFOA,*LPUNIVERSAL_NAME_INFOA; +typedef struct _UNIVERSAL_NAME_INFOW { LPWSTR lpUniversalName; }UNIVERSAL_NAME_INFOW,*LPUNIVERSAL_NAME_INFOW; +typedef struct _REMOTE_NAME_INFOA { + LPSTR lpUniversalName; + LPSTR lpConnectionName; + LPSTR lpRemainingPath; +}REMOTE_NAME_INFOA,*LPREMOTE_NAME_INFOA; +typedef struct _REMOTE_NAME_INFOW { + LPWSTR lpUniversalName; + LPWSTR lpConnectionName; + LPWSTR lpRemainingPath; +}REMOTE_NAME_INFOW,*LPREMOTE_NAME_INFOW; +typedef struct _NETINFOSTRUCT{ + DWORD cbStructure; + DWORD dwProviderVersion; + DWORD dwStatus; + DWORD dwCharacteristics; + DWORD dwHandle; + WORD wNetType; + DWORD dwPrinters; + DWORD dwDrives; +} NETINFOSTRUCT,*LPNETINFOSTRUCT; +typedef UINT(PASCAL *PFNGETPROFILEPATHA)(LPCSTR,LPSTR,UINT); +typedef UINT(PASCAL *PFNGETPROFILEPATHW)(LPCWSTR,LPWSTR,UINT); +typedef UINT(PASCAL *PFNRECONCILEPROFILEA)(LPCSTR,LPCSTR,DWORD); +typedef UINT(PASCAL *PFNRECONCILEPROFILEW)(LPCWSTR,LPCWSTR,DWORD); +typedef BOOL(PASCAL *PFNPROCESSPOLICIESA)(HWND,LPCSTR,LPCSTR,LPCSTR,DWORD); +typedef BOOL(PASCAL *PFNPROCESSPOLICIESW)(HWND,LPCWSTR,LPCWSTR,LPCWSTR,DWORD); +typedef struct _NETCONNECTINFOSTRUCT{ + DWORD cbStructure; + DWORD dwFlags; + DWORD dwSpeed; + DWORD dwDelay; + DWORD dwOptDataSize; +} NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT; + +DWORD APIENTRY WNetAddConnectionA(LPCSTR,LPCSTR,LPCSTR); +DWORD APIENTRY WNetAddConnectionW(LPCWSTR,LPCWSTR,LPCWSTR); +DWORD APIENTRY WNetAddConnection2A(LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD); +DWORD APIENTRY WNetAddConnection2W(LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD); +DWORD APIENTRY WNetAddConnection3A(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD); +DWORD APIENTRY WNetAddConnection3W(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD); +DWORD APIENTRY WNetCancelConnectionA(LPCSTR,BOOL); +DWORD APIENTRY WNetCancelConnectionW(LPCWSTR,BOOL); +DWORD APIENTRY WNetCancelConnection2A(LPCSTR,DWORD,BOOL); +DWORD APIENTRY WNetCancelConnection2W(LPCWSTR,DWORD,BOOL); +DWORD APIENTRY WNetGetConnectionA(LPCSTR,LPSTR,PDWORD); +DWORD APIENTRY WNetGetConnectionW(LPCWSTR,LPWSTR,PDWORD); +DWORD APIENTRY WNetUseConnectionA(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD,PDWORD); +DWORD APIENTRY WNetUseConnectionW(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD,PDWORD); +DWORD APIENTRY WNetSetConnectionA(LPCSTR,DWORD,PVOID); +DWORD APIENTRY WNetSetConnectionW(LPCWSTR,DWORD,PVOID); +DWORD APIENTRY WNetConnectionDialog(HWND,DWORD); +DWORD APIENTRY WNetDisconnectDialog(HWND,DWORD); +DWORD APIENTRY WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); +DWORD APIENTRY WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); +DWORD APIENTRY WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); +DWORD APIENTRY WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); +DWORD APIENTRY WNetOpenEnumA(DWORD,DWORD,DWORD,LPNETRESOURCEA,LPHANDLE); +DWORD APIENTRY WNetOpenEnumW(DWORD,DWORD,DWORD,LPNETRESOURCEW,LPHANDLE); +DWORD APIENTRY WNetEnumResourceA(HANDLE,PDWORD,PVOID,PDWORD); +DWORD APIENTRY WNetEnumResourceW(HANDLE,PDWORD,PVOID,PDWORD); +DWORD APIENTRY WNetCloseEnum(HANDLE); +DWORD APIENTRY WNetGetUniversalNameA(LPCSTR,DWORD,PVOID,PDWORD); +DWORD APIENTRY WNetGetUniversalNameW(LPCWSTR,DWORD,PVOID,PDWORD); +DWORD APIENTRY WNetGetUserA(LPCSTR,LPSTR,PDWORD); +DWORD APIENTRY WNetGetUserW(LPCWSTR,LPWSTR,PDWORD); +DWORD APIENTRY WNetGetProviderNameA(DWORD,LPSTR,PDWORD); +DWORD APIENTRY WNetGetProviderNameW(DWORD,LPWSTR,PDWORD); +DWORD APIENTRY WNetGetNetworkInformationA(LPCSTR,LPNETINFOSTRUCT); +DWORD APIENTRY WNetGetNetworkInformationW(LPCWSTR,LPNETINFOSTRUCT); +DWORD APIENTRY WNetGetResourceInformationA(LPNETRESOURCEA,LPVOID,LPDWORD,LPSTR*); +DWORD APIENTRY WNetGetResourceInformationW(LPNETRESOURCEA,LPVOID,LPDWORD,LPWSTR*); +DWORD APIENTRY WNetGetLastErrorA(PDWORD,LPSTR,DWORD,LPSTR,DWORD); +DWORD APIENTRY WNetGetLastErrorW(PDWORD,LPWSTR,DWORD,LPWSTR,DWORD); +DWORD APIENTRY MultinetGetConnectionPerformanceA(LPNETRESOURCEA,LPNETCONNECTINFOSTRUCT); +DWORD APIENTRY MultinetGetConnectionPerformanceW(LPNETRESOURCEW,LPNETCONNECTINFOSTRUCT); +#ifdef UNICODE +#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESW +#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEW +#define PFNGETPROFILEPATH PFNGETPROFILEPATHW +typedef NETRESOURCEW NETRESOURCE,*LPNETRESOURCE; +typedef CONNECTDLGSTRUCTW CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT; +typedef DISCDLGSTRUCTW DISCDLGSTRUCT,*LPDISCDLGSTRUCT; +typedef REMOTE_NAME_INFOW REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO; +typedef UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO; +#define WNetEnumResource WNetEnumResourceW +#define WNetOpenEnum WNetOpenEnumW +#define WNetGetResourceInformation WNetGetResourceInformationW +#define WNetGetUniversalName WNetGetUniversalNameW +#define WNetSetConnection WNetSetConnectionW +#define WNetUseConnection WNetUseConnectionW +#define WNetGetConnection WNetGetConnectionW +#define WNetCancelConnection2 WNetCancelConnection2W +#define WNetCancelConnection WNetCancelConnectionW +#define WNetAddConnection3 WNetAddConnection3W +#define WNetAddConnection2 WNetAddConnection2W +#define WNetAddConnection WNetAddConnectionW +#define WNetConnectionDialog1 WNetConnectionDialog1W +#define WNetDisconnectDialog1 WNetDisconnectDialog1W +#define WNetGetNetworkInformation WNetGetNetworkInformationW +#define WNetGetProviderName WNetGetProviderNameW +#define WNetGetUser WNetGetUserW +#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceW +#define WNetGetLastError WNetGetLastErrorW +#else +#define PFNGETPROFILEPATH PFNGETPROFILEPATHA +#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEA +#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESA +typedef NETRESOURCEA NETRESOURCE,*LPNETRESOURCE; +typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT; +typedef DISCDLGSTRUCTA DISCDLGSTRUCT,*LPDISCDLGSTRUCT; +typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO; +typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO; +#define WNetOpenEnum WNetOpenEnumA +#define WNetEnumResource WNetEnumResourceA +#define WNetGetResourceInformation WNetGetResourceInformationA +#define WNetGetUniversalName WNetGetUniversalNameA +#define WNetConnectionDialog1 WNetConnectionDialog1A +#define WNetDisconnectDialog1 WNetDisconnectDialog1A +#define WNetAddConnection2 WNetAddConnection2A +#define WNetAddConnection3 WNetAddConnection3A +#define WNetCancelConnection WNetCancelConnectionA +#define WNetCancelConnection2 WNetCancelConnection2A +#define WNetGetConnection WNetGetConnectionA +#define WNetUseConnection WNetUseConnectionA +#define WNetSetConnection WNetSetConnectionA +#define WNetAddConnection WNetAddConnectionA +#define WNetGetUser WNetGetUserA +#define WNetGetProviderName WNetGetProviderNameA +#define WNetGetNetworkInformation WNetGetNetworkInformationA +#define WNetGetLastError WNetGetLastErrorA +#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceA +#endif +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winnls.h b/reactos/w32api/include/winnls.h new file mode 100644 index 00000000000..acdaf516c65 --- /dev/null +++ b/reactos/w32api/include/winnls.h @@ -0,0 +1,705 @@ +#ifndef _WINNLS_H +#define _WINNLS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAX_LEADBYTES 12 +#define MAX_DEFAULTCHAR 2 +#define LOCALE_NOUSEROVERRIDE 0x80000000 +#define LOCALE_USE_CP_ACP 0x40000000 +#if (WINVER >= 0x0400) +#define LOCALE_RETURN_NUMBER 0x20000000 +#endif +#define LOCALE_ILANGUAGE 1 +#define LOCALE_SLANGUAGE 2 +#define LOCALE_SENGLANGUAGE 0x1001 +#define LOCALE_SABBREVLANGNAME 3 +#define LOCALE_SNATIVELANGNAME 4 +#define LOCALE_ICOUNTRY 5 +#define LOCALE_SCOUNTRY 6 +#define LOCALE_SENGCOUNTRY 0x1002 +#define LOCALE_SABBREVCTRYNAME 7 +#define LOCALE_SNATIVECTRYNAME 8 +#define LOCALE_IDEFAULTLANGUAGE 9 +#define LOCALE_IDEFAULTCOUNTRY 10 +#define LOCALE_IDEFAULTCODEPAGE 11 +#define LOCALE_IDEFAULTANSICODEPAGE 0x1004 +#define LOCALE_SLIST 12 +#define LOCALE_IMEASURE 13 +#define LOCALE_SDECIMAL 14 +#define LOCALE_STHOUSAND 15 +#define LOCALE_SGROUPING 16 +#define LOCALE_IDIGITS 17 +#define LOCALE_ILZERO 18 +#define LOCALE_INEGNUMBER 0x1010 +#define LOCALE_SNATIVEDIGITS 19 +#define LOCALE_SCURRENCY 20 +#define LOCALE_SINTLSYMBOL 21 +#define LOCALE_SMONDECIMALSEP 22 +#define LOCALE_SMONTHOUSANDSEP 23 +#define LOCALE_SMONGROUPING 24 +#define LOCALE_ICURRDIGITS 25 +#define LOCALE_IINTLCURRDIGITS 26 +#define LOCALE_ICURRENCY 27 +#define LOCALE_INEGCURR 28 +#define LOCALE_SDATE 29 +#define LOCALE_STIME 30 +#define LOCALE_SSHORTDATE 31 +#define LOCALE_SLONGDATE 32 +#define LOCALE_STIMEFORMAT 0x1003 +#define LOCALE_IDATE 33 +#define LOCALE_ILDATE 34 +#define LOCALE_ITIME 35 +#define LOCALE_ITIMEMARKPOSN 0x1005 +#define LOCALE_ICENTURY 36 +#define LOCALE_ITLZERO 37 +#define LOCALE_IDAYLZERO 38 +#define LOCALE_IMONLZERO 39 +#define LOCALE_S1159 40 +#define LOCALE_S2359 41 +#define LOCALE_ICALENDARTYPE 0x1009 +#define LOCALE_IOPTIONALCALENDAR 0x100B +#define LOCALE_IFIRSTDAYOFWEEK 0x100C +#define LOCALE_IFIRSTWEEKOFYEAR 0x100D +#define LOCALE_SDAYNAME1 42 +#define LOCALE_SDAYNAME2 43 +#define LOCALE_SDAYNAME3 44 +#define LOCALE_SDAYNAME4 45 +#define LOCALE_SDAYNAME5 46 +#define LOCALE_SDAYNAME6 47 +#define LOCALE_SDAYNAME7 48 +#define LOCALE_SABBREVDAYNAME1 49 +#define LOCALE_SABBREVDAYNAME2 50 +#define LOCALE_SABBREVDAYNAME3 51 +#define LOCALE_SABBREVDAYNAME4 52 +#define LOCALE_SABBREVDAYNAME5 53 +#define LOCALE_SABBREVDAYNAME6 54 +#define LOCALE_SABBREVDAYNAME7 55 +#define LOCALE_SMONTHNAME1 56 +#define LOCALE_SMONTHNAME2 57 +#define LOCALE_SMONTHNAME3 58 +#define LOCALE_SMONTHNAME4 59 +#define LOCALE_SMONTHNAME5 60 +#define LOCALE_SMONTHNAME6 61 +#define LOCALE_SMONTHNAME7 62 +#define LOCALE_SMONTHNAME8 63 +#define LOCALE_SMONTHNAME9 64 +#define LOCALE_SMONTHNAME10 65 +#define LOCALE_SMONTHNAME11 66 +#define LOCALE_SMONTHNAME12 67 +#define LOCALE_SMONTHNAME13 0x100E +#define LOCALE_SABBREVMONTHNAME1 68 +#define LOCALE_SABBREVMONTHNAME2 69 +#define LOCALE_SABBREVMONTHNAME3 70 +#define LOCALE_SABBREVMONTHNAME4 71 +#define LOCALE_SABBREVMONTHNAME5 72 +#define LOCALE_SABBREVMONTHNAME6 73 +#define LOCALE_SABBREVMONTHNAME7 74 +#define LOCALE_SABBREVMONTHNAME8 75 +#define LOCALE_SABBREVMONTHNAME9 76 +#define LOCALE_SABBREVMONTHNAME10 77 +#define LOCALE_SABBREVMONTHNAME11 78 +#define LOCALE_SABBREVMONTHNAME12 79 +#define LOCALE_SABBREVMONTHNAME13 0x100F +#define LOCALE_SPOSITIVESIGN 80 +#define LOCALE_SNEGATIVESIGN 81 +#define LOCALE_IPOSSIGNPOSN 82 +#define LOCALE_INEGSIGNPOSN 83 +#define LOCALE_IPOSSYMPRECEDES 84 +#define LOCALE_IPOSSEPBYSPACE 85 +#define LOCALE_INEGSYMPRECEDES 86 +#define LOCALE_INEGSEPBYSPACE 87 +#define LOCALE_FONTSIGNATURE 88 +#define LOCALE_SISO639LANGNAME 89 +#define LOCALE_SISO3166CTRYNAME 90 +#define LOCALE_SYSTEM_DEFAULT 0x800 +#define LOCALE_USER_DEFAULT 0x400 +#define NORM_IGNORECASE 1 +#define NORM_IGNOREKANATYPE 65536 +#define NORM_IGNORENONSPACE 2 +#define NORM_IGNORESYMBOLS 4 +#define NORM_IGNOREWIDTH 131072 +#define SORT_STRINGSORT 4096 +#define LCMAP_LOWERCASE 0x00000100 +#define LCMAP_UPPERCASE 0x00000200 +#define LCMAP_SORTKEY 0x00000400 +#define LCMAP_BYTEREV 0x00000800 +#define LCMAP_HIRAGANA 0x00100000 +#define LCMAP_KATAKANA 0x00200000 +#define LCMAP_HALFWIDTH 0x00400000 +#define LCMAP_FULLWIDTH 0x00800000 +#define LCMAP_LINGUISTIC_CASING 0x01000000 +#define LCMAP_SIMPLIFIED_CHINESE 0x02000000 +#define LCMAP_TRADITIONAL_CHINESE 0x04000000 +#define ENUM_ALL_CALENDARS (-1) +#define DATE_SHORTDATE 1 +#define DATE_LONGDATE 2 +#define DATE_USE_ALT_CALENDAR 4 +#define CP_INSTALLED 1 +#define CP_SUPPORTED 2 +#define LCID_INSTALLED 1 +#define LCID_SUPPORTED 2 +#define LCID_ALTERNATE_SORTS 4 +#define MAP_FOLDCZONE 16 +#define MAP_FOLDDIGITS 128 +#define MAP_PRECOMPOSED 32 +#define MAP_COMPOSITE 64 +#define CP_ACP 0 +#define CP_OEMCP 1 +#define CP_MACCP 2 +#define CP_THREAD_ACP 3 +#define CP_SYMBOL 42 +#define CP_UTF7 65000 +#define CP_UTF8 65001 +#define CT_CTYPE1 1 +#define CT_CTYPE2 2 +#define CT_CTYPE3 4 +#define C1_UPPER 1 +#define C1_LOWER 2 +#define C1_DIGIT 4 +#define C1_SPACE 8 +#define C1_PUNCT 16 +#define C1_CNTRL 32 +#define C1_BLANK 64 +#define C1_XDIGIT 128 +#define C1_ALPHA 256 +#define C2_LEFTTORIGHT 1 +#define C2_RIGHTTOLEFT 2 +#define C2_EUROPENUMBER 3 +#define C2_EUROPESEPARATOR 4 +#define C2_EUROPETERMINATOR 5 +#define C2_ARABICNUMBER 6 +#define C2_COMMONSEPARATOR 7 +#define C2_BLOCKSEPARATOR 8 +#define C2_SEGMENTSEPARATOR 9 +#define C2_WHITESPACE 10 +#define C2_OTHERNEUTRAL 11 +#define C2_NOTAPPLICABLE 0 +#define C3_NONSPACING 1 +#define C3_DIACRITIC 2 +#define C3_VOWELMARK 4 +#define C3_SYMBOL 8 +#define C3_KATAKANA 16 +#define C3_HIRAGANA 32 +#define C3_HALFWIDTH 64 +#define C3_FULLWIDTH 128 +#define C3_IDEOGRAPH 256 +#define C3_KASHIDA 512 +#define C3_LEXICAL 1024 +#define C3_ALPHA 32768 +#define C3_NOTAPPLICABLE 0 +#define TIME_NOMINUTESORSECONDS 1 +#define TIME_NOSECONDS 2 +#define TIME_NOTIMEMARKER 4 +#define TIME_FORCE24HOURFORMAT 8 +#define MB_PRECOMPOSED 1 +#define MB_COMPOSITE 2 +#define MB_ERR_INVALID_CHARS 8 +#define MB_USEGLYPHCHARS 4 +#define WC_COMPOSITECHECK 512 +#define WC_DISCARDNS 16 +#define WC_SEPCHARS 32 +#define WC_DEFAULTCHAR 64 +#define CTRY_DEFAULT 0 +#define CTRY_ALBANIA 355 +#define CTRY_ALGERIA 213 +#define CTRY_ARGENTINA 54 +#define CTRY_ARMENIA 374 +#define CTRY_AUSTRALIA 61 +#define CTRY_AUSTRIA 43 +#define CTRY_AZERBAIJAN 994 +#define CTRY_BAHRAIN 973 +#define CTRY_BELARUS 375 +#define CTRY_BELGIUM 32 +#define CTRY_BELIZE 501 +#define CTRY_BOLIVIA 591 +#define CTRY_BRAZIL 55 +#define CTRY_BRUNEI_DARUSSALAM 673 +#define CTRY_BULGARIA 359 +#define CTRY_CANADA 2 +#define CTRY_CARIBBEAN 1 +#define CTRY_CHILE 56 +#define CTRY_COLOMBIA 57 +#define CTRY_COSTA_RICA 506 +#define CTRY_CROATIA 385 +#define CTRY_CZECH 420 +#define CTRY_DENMARK 45 +#define CTRY_DOMINICAN_REPUBLIC 1 +#define CTRY_ECUADOR 593 +#define CTRY_EGYPT 20 +#define CTRY_EL_SALVADOR 503 +#define CTRY_ESTONIA 372 +#define CTRY_FAEROE_ISLANDS 298 +#define CTRY_FINLAND 358 +#define CTRY_FRANCE 33 +#define CTRY_GEORGIA 995 +#define CTRY_GERMANY 49 +#define CTRY_GREECE 30 +#define CTRY_GUATEMALA 502 +#define CTRY_HONDURAS 504 +#define CTRY_HONG_KONG 852 +#define CTRY_HUNGARY 36 +#define CTRY_ICELAND 354 +#define CTRY_INDIA 91 +#define CTRY_INDONESIA 62 +#define CTRY_IRAN 981 +#define CTRY_IRAQ 964 +#define CTRY_IRELAND 353 +#define CTRY_ISRAEL 972 +#define CTRY_ITALY 39 +#define CTRY_JAMAICA 1 +#define CTRY_JAPAN 81 +#define CTRY_JORDAN 962 +#define CTRY_KAZAKSTAN 7 +#define CTRY_KENYA 254 +#define CTRY_KUWAIT 965 +#define CTRY_KYRGYZSTAN 996 +#define CTRY_LATVIA 371 +#define CTRY_LEBANON 961 +#define CTRY_LIBYA 218 +#define CTRY_LIECHTENSTEIN 41 +#define CTRY_LITHUANIA 370 +#define CTRY_LUXEMBOURG 352 +#define CTRY_MACAU 853 +#define CTRY_MACEDONIA 389 +#define CTRY_MALAYSIA 60 +#define CTRY_MALDIVES 960 +#define CTRY_MEXICO 52 +#define CTRY_MONACO 33 +#define CTRY_MONGOLIA 976 +#define CTRY_MOROCCO 212 +#define CTRY_NETHERLANDS 31 +#define CTRY_NEW_ZEALAND 64 +#define CTRY_NICARAGUA 505 +#define CTRY_NORWAY 47 +#define CTRY_OMAN 968 +#define CTRY_PAKISTAN 92 +#define CTRY_PANAMA 507 +#define CTRY_PARAGUAY 595 +#define CTRY_PERU 51 +#define CTRY_PHILIPPINES 63 +#define CTRY_POLAND 48 +#define CTRY_PORTUGAL 351 +#define CTRY_PRCHINA 86 +#define CTRY_PUERTO_RICO 1 +#define CTRY_QATAR 974 +#define CTRY_ROMANIA 40 +#define CTRY_RUSSIA 7 +#define CTRY_SAUDI_ARABIA 966 +#define CTRY_SERBIA 381 +#define CTRY_SINGAPORE 65 +#define CTRY_SLOVAK 421 +#define CTRY_SLOVENIA 386 +#define CTRY_SOUTH_AFRICA 27 +#define CTRY_SOUTH_KOREA 82 +#define CTRY_SPAIN 34 +#define CTRY_SWEDEN 46 +#define CTRY_SWITZERLAND 41 +#define CTRY_SYRIA 963 +#define CTRY_TAIWAN 886 +#define CTRY_TATARSTAN 7 +#define CTRY_THAILAND 66 +#define CTRY_TRINIDAD_Y_TOBAGO 1 +#define CTRY_TUNISIA 216 +#define CTRY_TURKEY 90 +#define CTRY_UAE 971 +#define CTRY_UKRAINE 380 +#define CTRY_UNITED_KINGDOM 44 +#define CTRY_UNITED_STATES 1 +#define CTRY_URUGUAY 598 +#define CTRY_UZBEKISTAN 7 +#define CTRY_VENEZUELA 58 +#define CTRY_VIET_NAM 84 +#define CTRY_YEMEN 967 +#define CTRY_ZIMBABWE 263 +#define CAL_ICALINTVALUE 1 +#define CAL_SCALNAME 2 +#define CAL_IYEAROFFSETRANGE 3 +#define CAL_SERASTRING 4 +#define CAL_SSHORTDATE 5 +#define CAL_SLONGDATE 6 +#define CAL_SDAYNAME1 7 +#define CAL_SDAYNAME2 8 +#define CAL_SDAYNAME3 9 +#define CAL_SDAYNAME4 10 +#define CAL_SDAYNAME5 11 +#define CAL_SDAYNAME6 12 +#define CAL_SDAYNAME7 13 +#define CAL_SABBREVDAYNAME1 14 +#define CAL_SABBREVDAYNAME2 15 +#define CAL_SABBREVDAYNAME3 16 +#define CAL_SABBREVDAYNAME4 17 +#define CAL_SABBREVDAYNAME5 18 +#define CAL_SABBREVDAYNAME6 19 +#define CAL_SABBREVDAYNAME7 20 +#define CAL_SMONTHNAME1 21 +#define CAL_SMONTHNAME2 22 +#define CAL_SMONTHNAME3 23 +#define CAL_SMONTHNAME4 24 +#define CAL_SMONTHNAME5 25 +#define CAL_SMONTHNAME6 26 +#define CAL_SMONTHNAME7 27 +#define CAL_SMONTHNAME8 28 +#define CAL_SMONTHNAME9 29 +#define CAL_SMONTHNAME10 30 +#define CAL_SMONTHNAME11 31 +#define CAL_SMONTHNAME12 32 +#define CAL_SMONTHNAME13 33 +#define CAL_SABBREVMONTHNAME1 34 +#define CAL_SABBREVMONTHNAME2 35 +#define CAL_SABBREVMONTHNAME3 36 +#define CAL_SABBREVMONTHNAME4 37 +#define CAL_SABBREVMONTHNAME5 38 +#define CAL_SABBREVMONTHNAME6 39 +#define CAL_SABBREVMONTHNAME7 40 +#define CAL_SABBREVMONTHNAME8 41 +#define CAL_SABBREVMONTHNAME9 42 +#define CAL_SABBREVMONTHNAME10 43 +#define CAL_SABBREVMONTHNAME11 44 +#define CAL_SABBREVMONTHNAME12 45 +#define CAL_SABBREVMONTHNAME13 46 +#define CAL_GREGORIAN 1 +#define CAL_GREGORIAN_US 2 +#define CAL_JAPAN 3 +#define CAL_TAIWAN 4 +#define CAL_KOREA 5 +#define CAL_HIJRI 6 +#define CAL_THAI 7 +#define CAL_HEBREW 8 +#define CAL_GREGORIAN_ME_FRENCH 9 +#define CAL_GREGORIAN_ARABIC 10 +#define CAL_GREGORIAN_XLIT_ENGLISH 11 +#define CAL_GREGORIAN_XLIT_FRENCH 12 +#define CSTR_LESS_THAN 1 +#define CSTR_EQUAL 2 +#define CSTR_GREATER_THAN 3 +#define LGRPID_INSTALLED 1 +#define LGRPID_SUPPORTED 2 +#define LGRPID_WESTERN_EUROPE 1 +#define LGRPID_CENTRAL_EUROPE 2 +#define LGRPID_BALTIC 3 +#define LGRPID_GREEK 4 +#define LGRPID_CYRILLIC 5 +#define LGRPID_TURKISH 6 +#define LGRPID_JAPANESE 7 +#define LGRPID_KOREAN 8 +#define LGRPID_TRADITIONAL_CHINESE 9 +#define LGRPID_SIMPLIFIED_CHINESE 10 +#define LGRPID_THAI 11 +#define LGRPID_HEBREW 12 +#define LGRPID_ARABIC 13 +#define LGRPID_VIETNAMESE 14 +#define LGRPID_INDIC 15 +#define LGRPID_GEORGIAN 16 +#define LGRPID_ARMENIAN 17 + +#if (WINVER >= 0x0500) +#define LOCALE_SYEARMONTH 0x1006 +#define LOCALE_SENGCURRNAME 0x1007 +#define LOCALE_SNATIVECURRNAME 0x1008 +#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x1012 +#define LOCALE_SSORTNAME 0x1013 +#define LOCALE_IDIGITSUBSTITUTION 0x1014 +#define LOCALE_IPAPERSIZE 0x100A +#define DATE_YEARMONTH 8 +#define DATE_LTRREADING 16 +#define DATE_RTLREADING 32 +#define MAP_EXPAND_LIGATURES 0x2000 +#define WC_NO_BEST_FIT_CHARS 1024 +#define CAL_SYEARMONTH 47 +#define CAL_ITWODIGITYEARMAX 48 +#define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE +#define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER +#define CAL_USE_CP_ACP LOCALE_USE_CP_ACP +#endif /* (WINVER >= 0x0500) */ +#ifndef _BASETSD_H +typedef long LONG_PTR; +#endif + +#ifndef RC_INVOKED +typedef DWORD LCTYPE; +typedef DWORD CALTYPE; +typedef DWORD CALID; +typedef DWORD LGRPID; +typedef DWORD GEOID; +typedef DWORD GEOTYPE; +typedef DWORD GEOCLASS; +typedef BOOL (CALLBACK *CALINFO_ENUMPROCA)(LPSTR); +typedef BOOL (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR); +typedef BOOL (CALLBACK *CALINFO_ENUMPROCEXA)(LPSTR, CALID); +typedef BOOL (CALLBACK *CALINFO_ENUMPROCEXW)(LPWSTR, CALID); +typedef BOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR); +typedef BOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR); +typedef BOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR); +typedef BOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR); +typedef BOOL (CALLBACK *UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR); +typedef BOOL (CALLBACK *UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR); +typedef BOOL (CALLBACK *LOCALE_ENUMPROCA)(LPSTR); +typedef BOOL (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR); +typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR); +typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR); +typedef BOOL (CALLBACK *DATEFMT_ENUMPROCA)(LPSTR); +typedef BOOL (CALLBACK *DATEFMT_ENUMPROCW)(LPWSTR); +typedef BOOL (CALLBACK *DATEFMT_ENUMPROCEXA)(LPSTR, CALID); +typedef BOOL (CALLBACK *DATEFMT_ENUMPROCEXW)(LPWSTR, CALID); +typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCA)(LPSTR); +typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCW)(LPWSTR); +typedef BOOL (CALLBACK *GEO_ENUMPROC)(GEOID); + +enum NLS_FUNCTION { + COMPARE_STRING = 0x0001 +}; +typedef enum NLS_FUNCTION NLS_FUNCTION; +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 +}; + +typedef struct _cpinfo { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; +} CPINFO,*LPCPINFO; +typedef struct _cpinfoexA { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR CodePageName[MAX_PATH]; +} CPINFOEXA,*LPCPINFOEXA; +typedef struct _cpinfoexW { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR CodePageName[MAX_PATH]; +} CPINFOEXW,*LPCPINFOEXW; +typedef struct _currencyfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; +} CURRENCYFMTA,*LPCURRENCYFMTA; +typedef struct _currencyfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; +} CURRENCYFMTW,*LPCURRENCYFMTW; +typedef struct nlsversioninfo { + DWORD dwNLSVersionInfoSize; + DWORD dwNLSVersion; + DWORD dwDefinedVersion; +} NLSVERSIONINFO,*LPNLSVERSIONINFO; +typedef struct _numberfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; +} NUMBERFMTA,*LPNUMBERFMTA; +typedef struct _numberfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; +} NUMBERFMTW,*LPNUMBERFMTW; + +int WINAPI CompareStringA(LCID,DWORD,LPCSTR,int,LPCSTR,int); +int WINAPI CompareStringW(LCID,DWORD,LPCWSTR,int,LPCWSTR,int); +LCID WINAPI ConvertDefaultLocale(LCID); +BOOL WINAPI EnumCalendarInfoA(CALINFO_ENUMPROCA,LCID,CALID,CALTYPE); +BOOL WINAPI EnumCalendarInfoW(CALINFO_ENUMPROCW,LCID,CALID,CALTYPE); +BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA,LCID,DWORD); +BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW,LCID,DWORD); +BOOL WINAPI EnumSystemCodePagesA(CODEPAGE_ENUMPROCA,DWORD); +BOOL WINAPI EnumSystemCodePagesW(CODEPAGE_ENUMPROCW,DWORD); +BOOL WINAPI EnumSystemGeoID(GEOCLASS,GEOID,GEO_ENUMPROC); +BOOL WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA,DWORD); +BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD); +BOOL WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA,LCID,DWORD); +BOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW,LCID,DWORD); +int WINAPI FoldStringA(DWORD,LPCSTR,int,LPSTR,int); +int WINAPI FoldStringW(DWORD,LPCWSTR,int,LPWSTR,int); +UINT WINAPI GetACP(void); +int WINAPI GetCalendarInfoA(LCID,CALID,CALTYPE,LPSTR,int,LPDWORD); +int WINAPI GetCalendarInfoW(LCID,CALID,CALTYPE,LPWSTR,int,LPDWORD); +BOOL WINAPI GetCPInfo(UINT,LPCPINFO); +BOOL WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA); +BOOL WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW); +int WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,int); +int WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,int); +int WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int); +int WINAPI GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int); +int WINAPI GetGeoInfoA(GEOID,GEOTYPE,LPSTR,int,LANGID); +int WINAPI GetGeoInfoW(GEOID,GEOTYPE,LPWSTR,int,LANGID); +int WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,int); +int WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,int); +BOOL WINAPI GetNLSVersion(NLS_FUNCTION,LCID,LPNLSVERSIONINFO); +int WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,int); +int WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,int); +UINT WINAPI GetOEMCP(void); +BOOL WINAPI GetStringTypeA(LCID,DWORD,LPCSTR,int,LPWORD); +BOOL WINAPI GetStringTypeW(DWORD,LPCWSTR,int,LPWORD); +BOOL WINAPI GetStringTypeExA(LCID,DWORD,LPCSTR,int,LPWORD); +BOOL WINAPI GetStringTypeExW(LCID,DWORD,LPCWSTR,int,LPWORD); +LANGID WINAPI GetSystemDefaultLangID(void); +LCID WINAPI GetSystemDefaultLCID(void); +LCID WINAPI GetThreadLocale(void); +int WINAPI GetTimeFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int); +int WINAPI GetTimeFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int); +LANGID WINAPI GetUserDefaultLangID(void); +LCID WINAPI GetUserDefaultLCID(void); +GEOID WINAPI GetUserGeoID(GEOCLASS); +BOOL WINAPI IsDBCSLeadByte(BYTE); +BOOL WINAPI IsDBCSLeadByteEx(UINT,BYTE); +BOOL WINAPI IsNLSDefinedString(NLS_FUNCTION,DWORD,LPNLSVERSIONINFO,LPCWSTR,int); +BOOL WINAPI IsValidCodePage(UINT); +BOOL WINAPI IsValidLocale(LCID,DWORD); +int WINAPI LCMapStringA(LCID,DWORD,LPCSTR,int,LPSTR,int); +int WINAPI LCMapStringW(LCID,DWORD,LPCWSTR,int,LPWSTR,int); +int WINAPI MultiByteToWideChar(UINT,DWORD,LPCSTR,int,LPWSTR,int); +int WINAPI SetCalendarInfoA(LCID,CALID,CALTYPE,LPCSTR); +int WINAPI SetCalendarInfoW(LCID,CALID,CALTYPE,LPCWSTR); +BOOL WINAPI SetLocaleInfoA(LCID,LCTYPE,LPCSTR); +BOOL WINAPI SetLocaleInfoW(LCID,LCTYPE,LPCWSTR); +BOOL WINAPI SetThreadLocale(LCID); +BOOL WINAPI SetUserGeoID(GEOID); +int WINAPI WideCharToMultiByte(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL); +#if (WINVER >= 0x0500) +BOOL WINAPI EnumCalendarInfoExA(CALINFO_ENUMPROCEXA,LCID,CALID,CALTYPE); +BOOL WINAPI EnumCalendarInfoExW(CALINFO_ENUMPROCEXW,LCID,CALID,CALTYPE); +BOOL WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA,LCID,DWORD); +BOOL WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW,LCID,DWORD); +BOOL WINAPI EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA,DWORD,LONG_PTR); +BOOL WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW,DWORD,LONG_PTR); +BOOL WINAPI EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA,LGRPID,DWORD,LONG_PTR); +BOOL WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW,LGRPID,DWORD,LONG_PTR); +BOOL WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA,DWORD,LONG_PTR); +BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW,DWORD,LONG_PTR); +LANGID WINAPI GetSystemDefaultUILanguage(void); +LANGID WINAPI GetUserDefaultUILanguage(void); +BOOL WINAPI IsValidLanguageGroup(LGRPID,DWORD); +#endif /* (WINVER >= 0x0500) */ + +#ifdef UNICODE +#define CALINFO_ENUMPROC CALINFO_ENUMPROCW +#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW +#define LOCALE_ENUMPROC LOCALE_ENUMPROCW +#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW +#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW +#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW +#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW +#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW +#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW +#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW +typedef CPINFOEXW CPINFOEX; +typedef LPCPINFOEXW LPCPINFOEX; +typedef CURRENCYFMTW CURRENCYFMT; +typedef LPCURRENCYFMTW LPCURRENCYFMT; +typedef NUMBERFMTW NUMBERFMT; +typedef LPNUMBERFMTW LPNUMBERFMT; +#define CompareString CompareStringW +#define EnumCalendarInfo EnumCalendarInfoW +#define EnumSystemCodePages EnumSystemCodePagesW +#define EnumSystemLocales EnumSystemLocalesW +#define EnumTimeFormats EnumTimeFormatsW +#define FoldString FoldStringW +#define GetCalendarInfo GetCalendarInfoW +#define GetCPInfoEx GetCPInfoExW +#define GetCurrencyFormat GetCurrencyFormatW +#define GetDateFormat GetDateFormatW +#define GetGeoInfo GetGeoInfoW +#define GetLocaleInfo GetLocaleInfoW +#define GetNumberFormat GetNumberFormatW +#define GetStringTypeEx GetStringTypeExW +#define GetTimeFormat GetTimeFormatW +#define LCMapString LCMapStringW +#define SetCalendarInfo SetCalendarInfoW +#define SetLocaleInfo SetLocaleInfoW +#if (WINVER >= 0x0500) +#define EnumCalendarInfoEx EnumCalendarInfoExW; +#define EnumDateFormatsEx EnumDateFormatsExW; +#define EnumSystemLanguageGroups EnumSystemLanguageGroupsW; +#define EnumLanguageGroupLocales EnumLanguageGroupLocalesW; +#define EnumUILanguages EnumUILanguagesW; +#endif /* (WINVER >= 0x0500) */ +#else +#define CALINFO_ENUMPROC CALINFO_ENUMPROCA +#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA +#define LOCALE_ENUMPROC LOCALE_ENUMPROCA +#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA +#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA +#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA +#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA +#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA +#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA +#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA +typedef CPINFOEXA CPINFOEX; +typedef LPCPINFOEXA LPCPINFOEX; +typedef CURRENCYFMTA CURRENCYFMT; +typedef LPCURRENCYFMTA LPCURRENCYFMT; +typedef NUMBERFMTA NUMBERFMT; +typedef LPNUMBERFMTA LPNUMBERFMT; +#define CompareString CompareStringA +#define EnumCalendarInfo EnumCalendarInfoA +#define EnumSystemCodePages EnumSystemCodePagesA +#define EnumSystemLocales EnumSystemLocalesA +#define EnumTimeFormats EnumTimeFormatsA +#define FoldString FoldStringA +#define GetCalendarInfo GetCalendarInfoA +#define GetCPInfoEx GetCPInfoExA +#define GetCurrencyFormat GetCurrencyFormatA +#define GetDateFormat GetDateFormatA +#define GetGeoInfo GetGeoInfoA +#define GetLocaleInfo GetLocaleInfoA +#define GetNumberFormat GetNumberFormatA +#define GetStringTypeEx GetStringTypeExA +#define GetTimeFormat GetTimeFormatA +#define LCMapString LCMapStringA +#define SetCalendarInfo SetCalendarInfoA +#define SetLocaleInfo SetLocaleInfoA +#if (WINVER >= 0x0500) +#define EnumCalendarInfoEx EnumCalendarInfoExA; +#define EnumDateFormatsEx EnumDateFormatsExA; +#define EnumSystemLanguageGroups EnumSystemLanguageGroupsA; +#define EnumLanguageGroupLocales EnumLanguageGroupLocalesA; +#define EnumUILanguages EnumUILanguagesA; +#endif /* (WINVER >= 0x0500) */ +#endif /* UNICODE */ +#endif /* RC_INVOKED */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winnt.h b/reactos/w32api/include/winnt.h new file mode 100644 index 00000000000..3cfa2667a61 --- /dev/null +++ b/reactos/w32api/include/winnt.h @@ -0,0 +1,3341 @@ +#ifndef _WINNT_H +#define _WINNT_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +/* translate GCC target defines to MS equivalents. Keep this synchronized + with windows.h. */ +#if defined(__i686__) && !defined(_M_IX86) +#define _M_IX86 600 +#elif defined(__i586__) && !defined(_M_IX86) +#define _M_IX86 500 +#elif defined(__i486__) && !defined(_M_IX86) +#define _M_IX86 400 +#elif defined(__i386__) && !defined(_M_IX86) +#define _M_IX86 300 +#endif +#if defined(_M_IX86) && !defined(_X86_) +#define _X86_ +#elif defined(_M_ALPHA) && !defined(_ALPHA_) +#define _ALPHA_ +#elif defined(_M_PPC) && !defined(_PPC_) +#define _PPC_ +#elif defined(_M_MRX000) && !defined(_MIPS_) +#define _MIPS_ +#elif defined(_M_M68K) && !defined(_68K_) +#define _68K_ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifndef RC_INVOKED +#include + +/* FIXME: add more architectures. Is there a way to specify this in GCC? */ +#ifdef _X86_ +#define UNALIGNED +#else +#define UNALIGNED +#endif + +#ifndef VOID +#define VOID void +#endif +typedef char CHAR; +typedef short SHORT; +typedef long LONG; +typedef char CCHAR, *PCCHAR; +typedef unsigned char UCHAR,*PUCHAR; +typedef unsigned short USHORT,*PUSHORT; +typedef unsigned long ULONG,*PULONG; +typedef char *PSZ; + +typedef void *PVOID,*LPVOID; + +/* FIXME for __WIN64 */ +#ifndef __ptr64 +#define __ptr64 +#endif +typedef void* __ptr64 PVOID64; + +#ifndef _WCHAR_T_DEFINED +#define _WCHAR_T_DEFINED +#ifndef _WCHAR_T_ +#define _WCHAR_T_ +#undef __need_wchar_t +#ifndef __cplusplus +typedef unsigned short wchar_t; +#endif +#endif +#endif + +typedef wchar_t WCHAR; +typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR; +typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR; +typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR; +typedef CONST CHAR *LPCCH,*PCSTR,*LPCSTR; +#ifndef _TCHAR_DEFINED +#define _TCHAR_DEFINED +#ifdef UNICODE +/* + * NOTE: This tests UNICODE, which is different from the _UNICODE define + * used to differentiate standard C runtime calls. + */ +typedef WCHAR TCHAR; +typedef WCHAR _TCHAR; +#else +typedef CHAR TCHAR; +typedef CHAR _TCHAR; +#endif +#endif +typedef TCHAR TBYTE,*PTCH,*PTBYTE; +typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR; +typedef const TCHAR *LPCTSTR; +#ifdef UNICODE +/* + * __TEXT is a private macro whose specific use is to force the expansion of a + * macro passed as an argument to the macro TEXT. DO NOT use this + * macro within your programs. It's name and function could change without + * notice. + */ +#define __TEXT(q) L##q +#else +#define __TEXT(q) q +#endif +/* + * UNICODE a constant string when UNICODE is defined, else returns the string + * unmodified. + * The corresponding macros _TEXT() and _T() for mapping _UNICODE strings + * passed to C runtime functions are defined in mingw/tchar.h + */ +#define TEXT(q) __TEXT(q) +typedef SHORT *PSHORT; +typedef LONG *PLONG; +#ifdef STRICT +typedef void *HANDLE; +#define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n +#else +typedef PVOID HANDLE; +#define DECLARE_HANDLE(n) typedef HANDLE n +#endif +typedef HANDLE *PHANDLE,*LPHANDLE; +typedef DWORD LCID; +typedef PDWORD PLCID; +typedef WORD LANGID; +#ifdef __GNUC__ +#define _HAVE_INT64 +#define _INTEGRAL_MAX_BITS 64 +#undef __int64 +#define __int64 long long +#elif defined(__WATCOMC__) && (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64 ) +#define _HAVE_INT64 +#endif /* __GNUC__/__WATCOMC */ +#if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64) +typedef __int64 LONGLONG; +typedef unsigned __int64 DWORDLONG; +#else +typedef double LONGLONG,DWORDLONG; +#endif +typedef LONGLONG *PLONGLONG; +typedef DWORDLONG *PDWORDLONG; +typedef DWORDLONG ULONGLONG,*PULONGLONG; +typedef LONGLONG USN; +#ifdef _HAVE_INT64 +#define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b)) +#define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b)) +#define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b)) +#define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b)) +#define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b)) +#endif +#define ANSI_NULL '\0' +#define UNICODE_NULL L'\0' +typedef BYTE BOOLEAN,*PBOOLEAN; +#endif +typedef BYTE FCHAR; +typedef WORD FSHORT; +typedef DWORD FLONG; + +#define NTAPI __stdcall +#include +#define ACE_OBJECT_TYPE_PRESENT 0x00000001 +#define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x00000002 +#define APPLICATION_ERROR_MASK 0x20000000 +#define ERROR_SEVERITY_SUCCESS 0x00000000 +#define ERROR_SEVERITY_INFORMATIONAL 0x40000000 +#define ERROR_SEVERITY_WARNING 0x80000000 +#define ERROR_SEVERITY_ERROR 0xC0000000 +/* also in ddk/ntifs.h */ +#define COMPRESSION_FORMAT_NONE (0x0000) +#define COMPRESSION_FORMAT_DEFAULT (0x0001) +#define COMPRESSION_FORMAT_LZNT1 (0x0002) +#define COMPRESSION_ENGINE_STANDARD (0x0000) +#define COMPRESSION_ENGINE_MAXIMUM (0x0100) +#define COMPRESSION_ENGINE_HIBER (0x0200) +#define ACCESS_ALLOWED_ACE_TYPE (0x0) +#define ACCESS_DENIED_ACE_TYPE (0x1) +#define SYSTEM_AUDIT_ACE_TYPE (0x2) +#define SYSTEM_ALARM_ACE_TYPE (0x3) +/*end ntifs.h */ +#define ANYSIZE_ARRAY 1 +#define OBJECT_INHERIT_ACE 1 +#define CONTAINER_INHERIT_ACE 2 +#define NO_PROPAGATE_INHERIT_ACE 4 +#define INHERIT_ONLY_ACE 8 +#define VALID_INHERIT_FLAGS 16 +#define SUCCESSFUL_ACCESS_ACE_FLAG 64 +#define FAILED_ACCESS_ACE_FLAG 128 +#define DELETE 0x00010000L +#define READ_CONTROL 0x20000L +#define WRITE_DAC 0x40000L +#define WRITE_OWNER 0x80000L +#define SYNCHRONIZE 0x100000L +#define STANDARD_RIGHTS_REQUIRED 0xF0000 +#define STANDARD_RIGHTS_READ 0x20000 +#define STANDARD_RIGHTS_WRITE 0x20000 +#define STANDARD_RIGHTS_EXECUTE 0x20000 +#define STANDARD_RIGHTS_ALL 0x1F0000 +#define SPECIFIC_RIGHTS_ALL 0xFFFF +#define ACCESS_SYSTEM_SECURITY 0x1000000 + +#define MAXIMUM_ALLOWED 0x2000000 +#define GENERIC_READ 0x80000000 +#define GENERIC_WRITE 0x40000000 +#define GENERIC_EXECUTE 0x20000000 +#define GENERIC_ALL 0x10000000 + +#define INVALID_FILE_ATTRIBUTES ((DWORD)-1) + +/* Also in ddk/winddk.h */ +#define FILE_LIST_DIRECTORY 0x00000001 +#define FILE_READ_DATA 0x00000001 +#define FILE_ADD_FILE 0x00000002 +#define FILE_WRITE_DATA 0x00000002 +#define FILE_ADD_SUBDIRECTORY 0x00000004 +#define FILE_APPEND_DATA 0x00000004 +#define FILE_CREATE_PIPE_INSTANCE 0x00000004 +#define FILE_READ_EA 0x00000008 +#define FILE_READ_PROPERTIES 0x00000008 +#define FILE_WRITE_EA 0x00000010 +#define FILE_WRITE_PROPERTIES 0x00000010 +#define FILE_EXECUTE 0x00000020 +#define FILE_TRAVERSE 0x00000020 +#define FILE_DELETE_CHILD 0x00000040 +#define FILE_READ_ATTRIBUTES 0x00000080 +#define FILE_WRITE_ATTRIBUTES 0x00000100 + +#define FILE_SHARE_READ 0x00000001 +#define FILE_SHARE_WRITE 0x00000002 +#define FILE_SHARE_DELETE 0x00000004 +#define FILE_SHARE_VALID_FLAGS 0x00000007 + +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#define FILE_ATTRIBUTE_HIDDEN 0x00000002 +#define FILE_ATTRIBUTE_SYSTEM 0x00000004 +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +#define FILE_ATTRIBUTE_DEVICE 0x00000040 +#define FILE_ATTRIBUTE_NORMAL 0x00000080 +#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 +#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 +#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 +#define FILE_ATTRIBUTE_OFFLINE 0x00001000 +#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 +#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 +#define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 +#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 + +#define FILE_COPY_STRUCTURED_STORAGE 0x00000041 +#define FILE_STRUCTURED_STORAGE 0x00000441 + +#define FILE_VALID_OPTION_FLAGS 0x00ffffff +#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032 +#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032 +#define FILE_VALID_SET_FLAGS 0x00000036 + +#define FILE_SUPERSEDE 0x00000000 +#define FILE_OPEN 0x00000001 +#define FILE_CREATE 0x00000002 +#define FILE_OPEN_IF 0x00000003 +#define FILE_OVERWRITE 0x00000004 +#define FILE_OVERWRITE_IF 0x00000005 +#define FILE_MAXIMUM_DISPOSITION 0x00000005 + +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_SEQUENTIAL_ONLY 0x00000004 +#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 +#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_CREATE_TREE_CONNECTION 0x00000080 +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_NO_EA_KNOWLEDGE 0x00000200 +#define FILE_OPEN_FOR_RECOVERY 0x00000400 +#define FILE_RANDOM_ACCESS 0x00000800 +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_BY_FILE_ID 0x00002000 +#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 +#define FILE_NO_COMPRESSION 0x00008000 +#define FILE_RESERVE_OPFILTER 0x00100000 +#define FILE_OPEN_REPARSE_POINT 0x00200000 +#define FILE_OPEN_NO_RECALL 0x00400000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 + +#define FILE_ALL_ACCESS \ + (STANDARD_RIGHTS_REQUIRED | \ + SYNCHRONIZE | \ + 0x1FF) + +#define FILE_GENERIC_EXECUTE \ + (STANDARD_RIGHTS_EXECUTE | \ + FILE_READ_ATTRIBUTES | \ + FILE_EXECUTE | \ + SYNCHRONIZE) + +#define FILE_GENERIC_READ \ + (STANDARD_RIGHTS_READ | \ + FILE_READ_DATA | \ + FILE_READ_ATTRIBUTES | \ + FILE_READ_EA | \ + SYNCHRONIZE) + +#define FILE_GENERIC_WRITE \ + (STANDARD_RIGHTS_WRITE | \ + FILE_WRITE_DATA | \ + FILE_WRITE_ATTRIBUTES | \ + FILE_WRITE_EA | \ + FILE_APPEND_DATA | \ + SYNCHRONIZE) +/* end winddk.h */ +/* also in ddk/ntifs.h */ +#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 +#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 +#define FILE_NOTIFY_CHANGE_NAME 0x00000003 +#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 +#define FILE_NOTIFY_CHANGE_SIZE 0x00000008 +#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 +#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 +#define FILE_NOTIFY_CHANGE_CREATION 0x00000040 +#define FILE_NOTIFY_CHANGE_EA 0x00000080 +#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 +#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200 +#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400 +#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800 +#define FILE_NOTIFY_VALID_MASK 0x00000fff + +#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 +#define FILE_CASE_PRESERVED_NAMES 0x00000002 +#define FILE_UNICODE_ON_DISK 0x00000004 +#define FILE_PERSISTENT_ACLS 0x00000008 +#define FILE_FILE_COMPRESSION 0x00000010 +#define FILE_VOLUME_QUOTAS 0x00000020 +#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 +#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 +#define FS_LFN_APIS 0x00004000 +#define FILE_VOLUME_IS_COMPRESSED 0x00008000 +#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 +#define FILE_SUPPORTS_ENCRYPTION 0x00020000 +#define FILE_NAMED_STREAMS 0x00040000 + +#define IO_COMPLETION_QUERY_STATE 0x0001 +#define IO_COMPLETION_MODIFY_STATE 0x0002 +#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +/* end ntifs.h */ + +/* also in ddk/winddk.h */ +#define DUPLICATE_CLOSE_SOURCE 0x00000001 +#define DUPLICATE_SAME_ACCESS 0x00000002 +#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 +/* end winddk.k */ + +#define MAILSLOT_NO_MESSAGE ((DWORD)-1) +#define MAILSLOT_WAIT_FOREVER ((DWORD)-1) +#define PROCESS_TERMINATE 1 +#define PROCESS_CREATE_THREAD 2 +#define PROCESS_SET_SESSIONID 4 +#define PROCESS_VM_OPERATION 8 +#define PROCESS_VM_READ 16 +#define PROCESS_VM_WRITE 32 +#define PROCESS_DUP_HANDLE 64 +#define PROCESS_CREATE_PROCESS 128 +#define PROCESS_SET_QUOTA 256 +#define PROCESS_SET_INFORMATION 512 +#define PROCESS_QUERY_INFORMATION 1024 +#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF) +#define THREAD_TERMINATE 1 +#define THREAD_SUSPEND_RESUME 2 +#define THREAD_GET_CONTEXT 8 +#define THREAD_SET_CONTEXT 16 +#define THREAD_SET_INFORMATION 32 +#define THREAD_QUERY_INFORMATION 64 +#define THREAD_SET_THREAD_TOKEN 128 +#define THREAD_IMPERSONATE 256 +#define THREAD_DIRECT_IMPERSONATION 0x200 +#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF) +#define THREAD_BASE_PRIORITY_LOWRT 15 +#define THREAD_BASE_PRIORITY_MAX 2 +#define THREAD_BASE_PRIORITY_MIN (-2) +#define THREAD_BASE_PRIORITY_IDLE (-15) +#define EXCEPTION_NONCONTINUABLE 1 +#define EXCEPTION_MAXIMUM_PARAMETERS 15 +#define MUTANT_QUERY_STATE 0x0001 +#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|MUTANT_QUERY_STATE) +#define TIMER_QUERY_STATE 0x0001 +#define TIMER_MODIFY_STATE 0x0002 +#define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|TIMER_QUERY_STATE|TIMER_MODIFY_STATE) +/* + * To prevent gcc compiler warnings, bracket these defines when initialising + * a SID_IDENTIFIER_AUTHORITY, eg. + * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY}; + */ +#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} +#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} +#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} +#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} +#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} +#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} +#define SECURITY_NULL_RID 0 +#define SECURITY_WORLD_RID (0x00000000L) +#define SECURITY_LOCAL_RID 0 +#define SECURITY_CREATOR_OWNER_RID 0 +#define SECURITY_CREATOR_GROUP_RID 1 +#define SECURITY_DIALUP_RID 1 +#define SECURITY_NETWORK_RID 2 +#define SECURITY_BATCH_RID 3 +#define SECURITY_INTERACTIVE_RID 4 +#define SECURITY_LOGON_IDS_RID 5 +#define SECURITY_SERVICE_RID 6 +#define SECURITY_LOCAL_SYSTEM_RID 18 +#define SECURITY_BUILTIN_DOMAIN_RID 32 +#define SECURITY_PRINCIPAL_SELF_RID 10 +#define SECURITY_CREATOR_OWNER_SERVER_RID 0x2 +#define SECURITY_CREATOR_GROUP_SERVER_RID 0x3 +#define SECURITY_LOGON_IDS_RID_COUNT 0x3 +#define SECURITY_ANONYMOUS_LOGON_RID 0x7 +#define SECURITY_PROXY_RID 0x8 +#define SECURITY_ENTERPRISE_CONTROLLERS_RID 0x9 +#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID +#define SECURITY_AUTHENTICATED_USER_RID 0xB +#define SECURITY_RESTRICTED_CODE_RID 0xC +#define SECURITY_NT_NON_UNIQUE_RID 0x15 +#define SID_REVISION 1 +#define DOMAIN_USER_RID_ADMIN 0x1F4L +#define DOMAIN_USER_RID_GUEST 0x1F5L +#define DOMAIN_GROUP_RID_ADMINS 0x200L +#define DOMAIN_GROUP_RID_USERS 0x201L +#define DOMAIN_ALIAS_RID_ADMINS 0x220L +#define DOMAIN_ALIAS_RID_USERS 0x221L +#define DOMAIN_ALIAS_RID_GUESTS 0x222L +#define DOMAIN_ALIAS_RID_POWER_USERS 0x223L +#define DOMAIN_ALIAS_RID_ACCOUNT_OPS 0x224L +#define DOMAIN_ALIAS_RID_SYSTEM_OPS 0x225L +#define DOMAIN_ALIAS_RID_PRINT_OPS 0x226L +#define DOMAIN_ALIAS_RID_BACKUP_OPS 0x227L +#define DOMAIN_ALIAS_RID_REPLICATOR 0x228L +#define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") +#define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") +#define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") +#define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") +#define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") +#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") +#define SE_TCB_NAME TEXT("SeTcbPrivilege") +#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") +#define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") +#define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") +#define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") +#define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") +#define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") +#define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") +#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") +#define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") +#define SE_BACKUP_NAME TEXT("SeBackupPrivilege") +#define SE_RESTORE_NAME TEXT("SeRestorePrivilege") +#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") +#define SE_DEBUG_NAME TEXT("SeDebugPrivilege") +#define SE_AUDIT_NAME TEXT("SeAuditPrivilege") +#define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") +#define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") +#define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") +#define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") +#define SE_GROUP_MANDATORY 1 +#define SE_GROUP_ENABLED_BY_DEFAULT 2 +#define SE_GROUP_ENABLED 4 +#define SE_GROUP_OWNER 8 +#define SE_GROUP_USE_FOR_DENY_ONLY 16 +#define SE_GROUP_LOGON_ID 3221225472U +#define SE_GROUP_RESOURCE 536870912 +#define LANG_NEUTRAL 0x00 +#define LANG_ARABIC 0x01 +#define LANG_BULGARIAN 0x02 +#define LANG_CATALAN 0x03 +#define LANG_CHINESE 0x04 +#define LANG_CZECH 0x05 +#define LANG_DANISH 0x06 +#define LANG_GERMAN 0x07 +#define LANG_GREEK 0x08 +#define LANG_ENGLISH 0x09 +#define LANG_SPANISH 0x0a +#define LANG_FINNISH 0x0b +#define LANG_FRENCH 0x0c +#define LANG_HEBREW 0x0d +#define LANG_HUNGARIAN 0x0e +#define LANG_ICELANDIC 0x0f +#define LANG_ITALIAN 0x10 +#define LANG_JAPANESE 0x11 +#define LANG_KOREAN 0x12 +#define LANG_DUTCH 0x13 +#define LANG_NORWEGIAN 0x14 +#define LANG_POLISH 0x15 +#define LANG_PORTUGUESE 0x16 +#define LANG_ROMANIAN 0x18 +#define LANG_RUSSIAN 0x19 +#define LANG_CROATIAN 0x1a +#define LANG_SERBIAN 0x1a +#define LANG_SLOVAK 0x1b +#define LANG_ALBANIAN 0x1c +#define LANG_SWEDISH 0x1d +#define LANG_THAI 0x1e +#define LANG_TURKISH 0x1f +#define LANG_URDU 0x20 +#define LANG_INDONESIAN 0x21 +#define LANG_UKRAINIAN 0x22 +#define LANG_BELARUSIAN 0x23 +#define LANG_SLOVENIAN 0x24 +#define LANG_ESTONIAN 0x25 +#define LANG_LATVIAN 0x26 +#define LANG_LITHUANIAN 0x27 +#define LANG_FARSI 0x29 +#define LANG_VIETNAMESE 0x2a +#define LANG_ARMENIAN 0x2b +#define LANG_AZERI 0x2c +#define LANG_BASQUE 0x2d +#define LANG_MACEDONIAN 0x2f +#define LANG_AFRIKAANS 0x36 +#define LANG_GEORGIAN 0x37 +#define LANG_FAEROESE 0x38 +#define LANG_HINDI 0x39 +#define LANG_MALAY 0x3e +#define LANG_KAZAK 0x3f +#define LANG_KYRGYZ 0x40 +#define LANG_SWAHILI 0x41 +#define LANG_UZBEK 0x43 +#define LANG_TATAR 0x44 +#define LANG_BENGALI 0x45 +#define LANG_PUNJABI 0x46 +#define LANG_GUJARATI 0x47 +#define LANG_ORIYA 0x48 +#define LANG_TAMIL 0x49 +#define LANG_TELUGU 0x4a +#define LANG_KANNADA 0x4b +#define LANG_MALAYALAM 0x4c +#define LANG_ASSAMESE 0x4d +#define LANG_MARATHI 0x4e +#define LANG_SANSKRIT 0x4f +#define LANG_MONGOLIAN 0x50 +#define LANG_GALICIAN 0x56 +#define LANG_KONKANI 0x57 +#define LANG_MANIPURI 0x58 +#define LANG_SINDHI 0x59 +#define LANG_SYRIAC 0x5a +#define LANG_KASHMIRI 0x60 +#define LANG_NEPALI 0x61 +#define LANG_DIVEHI 0x65 +#define LANG_INVARIANT 0x7f +#define SUBLANG_NEUTRAL 0x00 +#define SUBLANG_DEFAULT 0x01 +#define SUBLANG_SYS_DEFAULT 0x02 +#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +#define SUBLANG_ARABIC_IRAQ 0x02 +#define SUBLANG_ARABIC_EGYPT 0x03 +#define SUBLANG_ARABIC_LIBYA 0x04 +#define SUBLANG_ARABIC_ALGERIA 0x05 +#define SUBLANG_ARABIC_MOROCCO 0x06 +#define SUBLANG_ARABIC_TUNISIA 0x07 +#define SUBLANG_ARABIC_OMAN 0x08 +#define SUBLANG_ARABIC_YEMEN 0x09 +#define SUBLANG_ARABIC_SYRIA 0x0a +#define SUBLANG_ARABIC_JORDAN 0x0b +#define SUBLANG_ARABIC_LEBANON 0x0c +#define SUBLANG_ARABIC_KUWAIT 0x0d +#define SUBLANG_ARABIC_UAE 0x0e +#define SUBLANG_ARABIC_BAHRAIN 0x0f +#define SUBLANG_ARABIC_QATAR 0x10 +#define SUBLANG_AZERI_LATIN 0x01 +#define SUBLANG_AZERI_CYRILLIC 0x02 +#define SUBLANG_CHINESE_TRADITIONAL 0x01 +#define SUBLANG_CHINESE_SIMPLIFIED 0x02 +#define SUBLANG_CHINESE_HONGKONG 0x03 +#define SUBLANG_CHINESE_SINGAPORE 0x04 +#define SUBLANG_CHINESE_MACAU 0x05 +#define SUBLANG_DUTCH 0x01 +#define SUBLANG_DUTCH_BELGIAN 0x02 +#define SUBLANG_ENGLISH_US 0x01 +#define SUBLANG_ENGLISH_UK 0x02 +#define SUBLANG_ENGLISH_AUS 0x03 +#define SUBLANG_ENGLISH_CAN 0x04 +#define SUBLANG_ENGLISH_NZ 0x05 +#define SUBLANG_ENGLISH_EIRE 0x06 +#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +#define SUBLANG_ENGLISH_JAMAICA 0x08 +#define SUBLANG_ENGLISH_CARIBBEAN 0x09 +#define SUBLANG_ENGLISH_BELIZE 0x0a +#define SUBLANG_ENGLISH_TRINIDAD 0x0b +#define SUBLANG_ENGLISH_ZIMBABWE 0x0c +#define SUBLANG_ENGLISH_PHILIPPINES 0x0d +#define SUBLANG_FRENCH 0x01 +#define SUBLANG_FRENCH_BELGIAN 0x02 +#define SUBLANG_FRENCH_CANADIAN 0x03 +#define SUBLANG_FRENCH_SWISS 0x04 +#define SUBLANG_FRENCH_LUXEMBOURG 0x05 +#define SUBLANG_FRENCH_MONACO 0x06 +#define SUBLANG_GERMAN 0x01 +#define SUBLANG_GERMAN_SWISS 0x02 +#define SUBLANG_GERMAN_AUSTRIAN 0x03 +#define SUBLANG_GERMAN_LUXEMBOURG 0x04 +#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +#define SUBLANG_ITALIAN 0x01 +#define SUBLANG_ITALIAN_SWISS 0x02 +#define SUBLANG_KASHMIRI_INDIA 0x02 +#define SUBLANG_KASHMIRI_SASIA 0x02 +#define SUBLANG_KOREAN 0x01 +#define SUBLANG_LITHUANIAN 0x01 +#define SUBLANG_MALAY_MALAYSIA 0x01 +#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +#define SUBLANG_NEPALI_INDIA 0x02 +#define SUBLANG_NORWEGIAN_BOKMAL 0x01 +#define SUBLANG_NORWEGIAN_NYNORSK 0x02 +#define SUBLANG_PORTUGUESE 0x01 +#define SUBLANG_PORTUGUESE_BRAZILIAN 0x02 +#define SUBLANG_SERBIAN_LATIN 0x02 +#define SUBLANG_SERBIAN_CYRILLIC 0x03 +#define SUBLANG_SPANISH 0x01 +#define SUBLANG_SPANISH_MEXICAN 0x02 +#define SUBLANG_SPANISH_MODERN 0x03 +#define SUBLANG_SPANISH_GUATEMALA 0x04 +#define SUBLANG_SPANISH_COSTA_RICA 0x05 +#define SUBLANG_SPANISH_PANAMA 0x06 +#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +#define SUBLANG_SPANISH_VENEZUELA 0x08 +#define SUBLANG_SPANISH_COLOMBIA 0x09 +#define SUBLANG_SPANISH_PERU 0x0a +#define SUBLANG_SPANISH_ARGENTINA 0x0b +#define SUBLANG_SPANISH_ECUADOR 0x0c +#define SUBLANG_SPANISH_CHILE 0x0d +#define SUBLANG_SPANISH_URUGUAY 0x0e +#define SUBLANG_SPANISH_PARAGUAY 0x0f +#define SUBLANG_SPANISH_BOLIVIA 0x10 +#define SUBLANG_SPANISH_EL_SALVADOR 0x11 +#define SUBLANG_SPANISH_HONDURAS 0x12 +#define SUBLANG_SPANISH_NICARAGUA 0x13 +#define SUBLANG_SPANISH_PUERTO_RICO 0x14 +#define SUBLANG_SWEDISH 0x01 +#define SUBLANG_SWEDISH_FINLAND 0x02 +#define SUBLANG_URDU_PAKISTAN 0x01 +#define SUBLANG_URDU_INDIA 0x02 +#define SUBLANG_UZBEK_LATIN 0x01 +#define SUBLANG_UZBEK_CYRILLIC 0x02 +#define NLS_VALID_LOCALE_MASK 1048575 +#define SORT_DEFAULT 0 +#define SORT_JAPANESE_XJIS 0 +#define SORT_JAPANESE_UNICODE 1 +#define SORT_CHINESE_BIG5 0 +#define SORT_CHINESE_PRCP 0 +#define SORT_CHINESE_UNICODE 1 +#define SORT_CHINESE_PRC 2 +#define SORT_CHINESE_BOPOMOFO 3 +#define SORT_KOREAN_KSC 0 +#define SORT_KOREAN_UNICODE 1 +#define SORT_GERMAN_PHONE_BOOK 1 +#define SORT_HUNGARIAN_DEFAULT 0 +#define SORT_HUNGARIAN_TECHNICAL 1 +#define SORT_GEORGIAN_TRADITIONAL 0 +#define SORT_GEORGIAN_MODERN 1 +#define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p)) +#define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l))))) +#define PRIMARYLANGID(l) ((WORD)(l)&0x3ff) +#define SORTIDFROMLCID(l) ((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16)) +#define SORTVERSIONFROMLCID(l) ((WORD)((((DWORD)(l))>>20)&0xf)) +#define SUBLANGID(l) ((WORD)(l)>>10) +#define LANGIDFROMLCID(l) ((WORD)(l)) +#define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT) +#define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT) +#define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT) +#define ACL_REVISION 2 +#define ACL_REVISION_DS 4 +#define ACL_REVISION1 1 +#define ACL_REVISION2 2 +#define ACL_REVISION3 3 +#define ACL_REVISION4 4 +#define MIN_ACL_REVISION 2 +#define MAX_ACL_REVISION 4 +#define MINCHAR 0x80 +#define MAXCHAR 0x7f +#define MINSHORT 0x8000 +#define MAXSHORT 0x7fff +#define MINLONG 0x80000000 +#define MAXLONG 0x7fffffff +#define MAXBYTE 0xff +#define MAXWORD 0xffff +#define MAXDWORD 0xffffffff +#define PROCESSOR_INTEL_386 386 +#define PROCESSOR_INTEL_486 486 +#define PROCESSOR_INTEL_PENTIUM 586 +#define PROCESSOR_MIPS_R4000 4000 +#define PROCESSOR_ALPHA_21064 21064 +#define PROCESSOR_INTEL_IA64 2200 + +#define PROCESSOR_ARCHITECTURE_INTEL 0 +#define PROCESSOR_ARCHITECTURE_MIPS 1 +#define PROCESSOR_ARCHITECTURE_ALPHA 2 +#define PROCESSOR_ARCHITECTURE_PPC 3 +#define PROCESSOR_ARCHITECTURE_SHX 4 +#define PROCESSOR_ARCHITECTURE_ARM 5 +#define PROCESSOR_ARCHITECTURE_IA64 6 +#define PROCESSOR_ARCHITECTURE_ALPHA64 7 +#define PROCESSOR_ARCHITECTURE_MSIL8 +#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF +#define PF_FLOATING_POINT_PRECISION_ERRATA 0 +#define PF_FLOATING_POINT_EMULATED 1 +#define PF_COMPARE_EXCHANGE_DOUBLE 2 +#define PF_MMX_INSTRUCTIONS_AVAILABLE 3 +#define PF_PPC_MOVEMEM_64BIT_OK 4 +#define PF_ALPHA_BYTE_INSTRUCTIONS 5 +#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 +#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 +#define PF_RDTSC_INSTRUCTION_AVAILABLE 8 +#define PF_PAE_ENABLED 9 +#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 +/* also in ddk/ntifs.h */ +#define FILE_ACTION_ADDED 0x00000001 +#define FILE_ACTION_REMOVED 0x00000002 +#define FILE_ACTION_MODIFIED 0x00000003 +#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 +#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 +#define FILE_ACTION_ADDED_STREAM 0x00000006 +#define FILE_ACTION_REMOVED_STREAM 0x00000007 +#define FILE_ACTION_MODIFIED_STREAM 0x00000008 +#define FILE_ACTION_REMOVED_BY_DELETE 0x00000009 +#define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A +#define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B +/* end ntifs.h */ +#define HEAP_NO_SERIALIZE 1 +#define HEAP_GROWABLE 2 +#define HEAP_GENERATE_EXCEPTIONS 4 +#define HEAP_ZERO_MEMORY 8 +#define HEAP_REALLOC_IN_PLACE_ONLY 16 +#define HEAP_TAIL_CHECKING_ENABLED 32 +#define HEAP_FREE_CHECKING_ENABLED 64 +#define HEAP_DISABLE_COALESCE_ON_FREE 128 +#define HEAP_CREATE_ALIGN_16 0x0000 +#define HEAP_CREATE_ENABLE_TRACING 0x20000 +#define HEAP_MAXIMUM_TAG 0xFFF +#define HEAP_PSEUDO_TAG_FLAG 0x8000 +#define HEAP_TAG_SHIFT 16 +#define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) +#define KEY_QUERY_VALUE 1 +#define KEY_SET_VALUE 2 +#define KEY_CREATE_SUB_KEY 4 +#define KEY_ENUMERATE_SUB_KEYS 8 +#define KEY_NOTIFY 16 +#define KEY_CREATE_LINK 32 +#define KEY_WRITE 0x20006 +#define KEY_EXECUTE 0x20019 +#define KEY_READ 0x20019 +#define KEY_ALL_ACCESS 0xf003f +#define REG_WHOLE_HIVE_VOLATILE 1 +#define REG_REFRESH_HIVE 2 +#define REG_NO_LAZY_FLUSH 4 +#define REG_OPTION_RESERVED 0 +#define REG_OPTION_NON_VOLATILE 0 +#define REG_OPTION_VOLATILE 1 +#define REG_OPTION_CREATE_LINK 2 +#define REG_OPTION_BACKUP_RESTORE 4 +#define REG_OPTION_OPEN_LINK 8 +#define REG_LEGAL_OPTION 15 +#define OWNER_SECURITY_INFORMATION 1 +#define GROUP_SECURITY_INFORMATION 2 +#define DACL_SECURITY_INFORMATION 4 +#define SACL_SECURITY_INFORMATION 8 +#define MAXIMUM_PROCESSORS 32 +#define PAGE_NOACCESS 0x0001 +#define PAGE_READONLY 0x0002 +#define PAGE_READWRITE 0x0004 +#define PAGE_WRITECOPY 0x0008 +#define PAGE_EXECUTE 0x0010 +#define PAGE_EXECUTE_READ 0x0020 +#define PAGE_EXECUTE_READWRITE 0x0040 +#define PAGE_EXECUTE_WRITECOPY 0x0080 +#define PAGE_GUARD 0x0100 +#define PAGE_NOCACHE 0x0200 +#define MEM_COMMIT 0x1000 +#define MEM_RESERVE 0x2000 +#define MEM_DECOMMIT 0x4000 +#define MEM_RELEASE 0x8000 +#define MEM_FREE 0x10000 +#define MEM_PRIVATE 0x20000 +#define MEM_MAPPED 0x40000 +#define MEM_RESET 0x80000 +#define MEM_TOP_DOWN 0x100000 +#define MEM_WRITE_WATCH 0x200000 /* 98/Me */ +#define MEM_PHYSICAL 0x400000 +#define MEM_4MB_PAGES 0x80000000 +/* also in ddk/ntifs.h */ +#define MEM_IMAGE SEC_IMAGE +#define SEC_BASED 0x00200000 +#define SEC_NO_CHANGE 0x00400000 +#define SEC_FILE 0x00800000 +#define SEC_IMAGE 0x01000000 +#define SEC_VLM 0x02000000 +#define SEC_RESERVE 0x04000000 +#define SEC_COMMIT 0x08000000 +#define SEC_NOCACHE 0x10000000 +/* end ntifs.h */ +#define SECTION_EXTEND_SIZE 16 +#define SECTION_MAP_READ 4 +#define SECTION_MAP_WRITE 2 +#define SECTION_QUERY 1 +#define SECTION_MAP_EXECUTE 8 +#define SECTION_ALL_ACCESS 0xf001f +#define MESSAGE_RESOURCE_UNICODE 1 +#define RTL_CRITSECT_TYPE 0 +#define RTL_RESOURCE_TYPE 1 +/* Also in winddk.h */ +#define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f)) +#ifndef CONTAINING_RECORD +#define CONTAINING_RECORD(address, type, field) \ + ((type*)((PCHAR)(address) - (PCHAR)(&((type *)0)->field))) +#endif +/* end winddk.h */ +#define IMAGE_SIZEOF_FILE_HEADER 20 +#define IMAGE_FILE_RELOCS_STRIPPED 1 +#define IMAGE_FILE_EXECUTABLE_IMAGE 2 +#define IMAGE_FILE_LINE_NUMS_STRIPPED 4 +#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 8 +#define IMAGE_FILE_AGGRESIVE_WS_TRIM 16 +#define IMAGE_FILE_LARGE_ADDRESS_AWARE 32 +#define IMAGE_FILE_BYTES_REVERSED_LO 128 +#define IMAGE_FILE_32BIT_MACHINE 256 +#define IMAGE_FILE_DEBUG_STRIPPED 512 +#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 1024 +#define IMAGE_FILE_NET_RUN_FROM_SWAP 2048 +#define IMAGE_FILE_SYSTEM 4096 +#define IMAGE_FILE_DLL 8192 +#define IMAGE_FILE_UP_SYSTEM_ONLY 16384 +#define IMAGE_FILE_BYTES_REVERSED_HI 32768 +#define IMAGE_FILE_MACHINE_UNKNOWN 0 +#define IMAGE_FILE_MACHINE_I386 332 +#define IMAGE_FILE_MACHINE_R3000 354 +#define IMAGE_FILE_MACHINE_R4000 358 +#define IMAGE_FILE_MACHINE_R10000 360 +#define IMAGE_FILE_MACHINE_ALPHA 388 +#define IMAGE_FILE_MACHINE_POWERPC 496 +#define IMAGE_DOS_SIGNATURE 0x5A4D +#define IMAGE_OS2_SIGNATURE 0x454E +#define IMAGE_OS2_SIGNATURE_LE 0x454C +#define IMAGE_VXD_SIGNATURE 0x454C +#define IMAGE_NT_SIGNATURE 0x00004550 +#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b +#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 +#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 +#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 +#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 +#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 +#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224 +#define IMAGE_SIZEOF_SHORT_NAME 8 +#define IMAGE_SIZEOF_SECTION_HEADER 40 +#define IMAGE_SIZEOF_SYMBOL 18 +#define IMAGE_SIZEOF_AUX_SYMBOL 18 +#define IMAGE_SIZEOF_RELOCATION 10 +#define IMAGE_SIZEOF_BASE_RELOCATION 8 +#define IMAGE_SIZEOF_LINENUMBER 6 +#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 +#define SIZEOF_RFPO_DATA 16 +#define IMAGE_SUBSYSTEM_UNKNOWN 0 +#define IMAGE_SUBSYSTEM_NATIVE 1 +#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 +#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 +#define IMAGE_SUBSYSTEM_OS2_CUI 5 +#define IMAGE_SUBSYSTEM_POSIX_CUI 7 +#define IMAGE_SUBSYSTEM_XBOX 14 +#define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader)) +#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 +#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 +#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 +#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 +#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 +#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 +#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 +#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 +#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 +#define IMAGE_DIRECTORY_ENTRY_TLS 9 +#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 +#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 +#define IMAGE_DIRECTORY_ENTRY_IAT 12 +#define IMAGE_SCN_TYPE_NO_PAD 8 +#define IMAGE_SCN_CNT_CODE 32 +#define IMAGE_SCN_CNT_INITIALIZED_DATA 64 +#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128 +#define IMAGE_SCN_LNK_OTHER 256 +#define IMAGE_SCN_LNK_INFO 512 +#define IMAGE_SCN_LNK_REMOVE 2048 +#define IMAGE_SCN_LNK_COMDAT 4096 +#define IMAGE_SCN_MEM_FARDATA 0x8000 +#define IMAGE_SCN_MEM_PURGEABLE 0x20000 +#define IMAGE_SCN_MEM_16BIT 0x20000 +#define IMAGE_SCN_MEM_LOCKED 0x40000 +#define IMAGE_SCN_MEM_PRELOAD 0x80000 +#define IMAGE_SCN_ALIGN_1BYTES 0x100000 +#define IMAGE_SCN_ALIGN_2BYTES 0x200000 +#define IMAGE_SCN_ALIGN_4BYTES 0x300000 +#define IMAGE_SCN_ALIGN_8BYTES 0x400000 +#define IMAGE_SCN_ALIGN_16BYTES 0x500000 +#define IMAGE_SCN_ALIGN_32BYTES 0x600000 +#define IMAGE_SCN_ALIGN_64BYTES 0x700000 +#define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000 +#define IMAGE_SCN_MEM_DISCARDABLE 0x2000000 +#define IMAGE_SCN_MEM_NOT_CACHED 0x4000000 +#define IMAGE_SCN_MEM_NOT_PAGED 0x8000000 +#define IMAGE_SCN_MEM_SHARED 0x10000000 +#define IMAGE_SCN_MEM_EXECUTE 0x20000000 +#define IMAGE_SCN_MEM_READ 0x40000000 +#define IMAGE_SCN_MEM_WRITE 0x80000000 +#define IMAGE_SYM_UNDEFINED 0 +#define IMAGE_SYM_ABSOLUTE (-1) +#define IMAGE_SYM_DEBUG (-2) +#define IMAGE_SYM_TYPE_NULL 0 +#define IMAGE_SYM_TYPE_VOID 1 +#define IMAGE_SYM_TYPE_CHAR 2 +#define IMAGE_SYM_TYPE_SHORT 3 +#define IMAGE_SYM_TYPE_INT 4 +#define IMAGE_SYM_TYPE_LONG 5 +#define IMAGE_SYM_TYPE_FLOAT 6 +#define IMAGE_SYM_TYPE_DOUBLE 7 +#define IMAGE_SYM_TYPE_STRUCT 8 +#define IMAGE_SYM_TYPE_UNION 9 +#define IMAGE_SYM_TYPE_ENUM 10 +#define IMAGE_SYM_TYPE_MOE 11 +#define IMAGE_SYM_TYPE_BYTE 12 +#define IMAGE_SYM_TYPE_WORD 13 +#define IMAGE_SYM_TYPE_UINT 14 +#define IMAGE_SYM_TYPE_DWORD 15 +#define IMAGE_SYM_TYPE_PCODE 32768 +#define IMAGE_SYM_DTYPE_NULL 0 +#define IMAGE_SYM_DTYPE_POINTER 1 +#define IMAGE_SYM_DTYPE_FUNCTION 2 +#define IMAGE_SYM_DTYPE_ARRAY 3 +#define IMAGE_SYM_CLASS_END_OF_FUNCTION (-1) +#define IMAGE_SYM_CLASS_NULL 0 +#define IMAGE_SYM_CLASS_AUTOMATIC 1 +#define IMAGE_SYM_CLASS_EXTERNAL 2 +#define IMAGE_SYM_CLASS_STATIC 3 +#define IMAGE_SYM_CLASS_REGISTER 4 +#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 +#define IMAGE_SYM_CLASS_LABEL 6 +#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 +#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 +#define IMAGE_SYM_CLASS_ARGUMENT 9 +#define IMAGE_SYM_CLASS_STRUCT_TAG 10 +#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 +#define IMAGE_SYM_CLASS_UNION_TAG 12 +#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 +#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 +#define IMAGE_SYM_CLASS_ENUM_TAG 15 +#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 +#define IMAGE_SYM_CLASS_REGISTER_PARAM 17 +#define IMAGE_SYM_CLASS_BIT_FIELD 18 +#define IMAGE_SYM_CLASS_FAR_EXTERNAL 68 +#define IMAGE_SYM_CLASS_BLOCK 100 +#define IMAGE_SYM_CLASS_FUNCTION 101 +#define IMAGE_SYM_CLASS_END_OF_STRUCT 102 +#define IMAGE_SYM_CLASS_FILE 103 +#define IMAGE_SYM_CLASS_SECTION 104 +#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 +#define IMAGE_COMDAT_SELECT_NODUPLICATES 1 +#define IMAGE_COMDAT_SELECT_ANY 2 +#define IMAGE_COMDAT_SELECT_SAME_SIZE 3 +#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 +#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 +#define IMAGE_COMDAT_SELECT_LARGEST 6 +#define IMAGE_COMDAT_SELECT_NEWEST 7 +#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 +#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 +#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 +#define IMAGE_REL_I386_ABSOLUTE 0 +#define IMAGE_REL_I386_DIR16 1 +#define IMAGE_REL_I386_REL16 2 +#define IMAGE_REL_I386_DIR32 6 +#define IMAGE_REL_I386_DIR32NB 7 +#define IMAGE_REL_I386_SEG12 9 +#define IMAGE_REL_I386_SECTION 10 +#define IMAGE_REL_I386_SECREL 11 +#define IMAGE_REL_I386_REL32 20 +#define IMAGE_REL_MIPS_ABSOLUTE 0 +#define IMAGE_REL_MIPS_REFHALF 1 +#define IMAGE_REL_MIPS_REFWORD 2 +#define IMAGE_REL_MIPS_JMPADDR 3 +#define IMAGE_REL_MIPS_REFHI 4 +#define IMAGE_REL_MIPS_REFLO 5 +#define IMAGE_REL_MIPS_GPREL 6 +#define IMAGE_REL_MIPS_LITERAL 7 +#define IMAGE_REL_MIPS_SECTION 10 +#define IMAGE_REL_MIPS_SECREL 11 +#define IMAGE_REL_MIPS_SECRELLO 12 +#define IMAGE_REL_MIPS_SECRELHI 13 +#define IMAGE_REL_MIPS_REFWORDNB 34 +#define IMAGE_REL_MIPS_PAIR 35 +#define IMAGE_REL_ALPHA_ABSOLUTE 0 +#define IMAGE_REL_ALPHA_REFLONG 1 +#define IMAGE_REL_ALPHA_REFQUAD 2 +#define IMAGE_REL_ALPHA_GPREL32 3 +#define IMAGE_REL_ALPHA_LITERAL 4 +#define IMAGE_REL_ALPHA_LITUSE 5 +#define IMAGE_REL_ALPHA_GPDISP 6 +#define IMAGE_REL_ALPHA_BRADDR 7 +#define IMAGE_REL_ALPHA_HINT 8 +#define IMAGE_REL_ALPHA_INLINE_REFLONG 9 +#define IMAGE_REL_ALPHA_REFHI 10 +#define IMAGE_REL_ALPHA_REFLO 11 +#define IMAGE_REL_ALPHA_PAIR 12 +#define IMAGE_REL_ALPHA_MATCH 13 +#define IMAGE_REL_ALPHA_SECTION 14 +#define IMAGE_REL_ALPHA_SECREL 15 +#define IMAGE_REL_ALPHA_REFLONGNB 16 +#define IMAGE_REL_ALPHA_SECRELLO 17 +#define IMAGE_REL_ALPHA_SECRELHI 18 +#define IMAGE_REL_PPC_ABSOLUTE 0 +#define IMAGE_REL_PPC_ADDR64 1 +#define IMAGE_REL_PPC_ADDR32 2 +#define IMAGE_REL_PPC_ADDR24 3 +#define IMAGE_REL_PPC_ADDR16 4 +#define IMAGE_REL_PPC_ADDR14 5 +#define IMAGE_REL_PPC_REL24 6 +#define IMAGE_REL_PPC_REL14 7 +#define IMAGE_REL_PPC_TOCREL16 8 +#define IMAGE_REL_PPC_TOCREL14 9 +#define IMAGE_REL_PPC_ADDR32NB 10 +#define IMAGE_REL_PPC_SECREL 11 +#define IMAGE_REL_PPC_SECTION 12 +#define IMAGE_REL_PPC_IFGLUE 13 +#define IMAGE_REL_PPC_IMGLUE 14 +#define IMAGE_REL_PPC_SECREL16 15 +#define IMAGE_REL_PPC_REFHI 16 +#define IMAGE_REL_PPC_REFLO 17 +#define IMAGE_REL_PPC_PAIR 18 +#define IMAGE_REL_PPC_TYPEMASK 255 +#define IMAGE_REL_PPC_NEG 256 +#define IMAGE_REL_PPC_BRTAKEN 512 +#define IMAGE_REL_PPC_BRNTAKEN 1024 +#define IMAGE_REL_PPC_TOCDEFN 2048 +#define IMAGE_REL_BASED_ABSOLUTE 0 +#define IMAGE_REL_BASED_HIGH 1 +#define IMAGE_REL_BASED_LOW 2 +#define IMAGE_REL_BASED_HIGHLOW 3 +#define IMAGE_REL_BASED_HIGHADJ 4 +#define IMAGE_REL_BASED_MIPS_JMPADDR 5 +#define IMAGE_ARCHIVE_START_SIZE 8 +#define IMAGE_ARCHIVE_START "!\n" +#define IMAGE_ARCHIVE_END "`\n" +#define IMAGE_ARCHIVE_PAD "\n" +#define IMAGE_ARCHIVE_LINKER_MEMBER "/ " +#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " +#define IMAGE_ORDINAL_FLAG 0x80000000 +#define IMAGE_SNAP_BY_ORDINAL(o) ((o&IMAGE_ORDINAL_FLAG)!=0) +#define IMAGE_ORDINAL(o) (o&0xffff) +#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 +#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 +#define IMAGE_DEBUG_TYPE_UNKNOWN 0 +#define IMAGE_DEBUG_TYPE_COFF 1 +#define IMAGE_DEBUG_TYPE_CODEVIEW 2 +#define IMAGE_DEBUG_TYPE_FPO 3 +#define IMAGE_DEBUG_TYPE_MISC 4 +#define IMAGE_DEBUG_TYPE_EXCEPTION 5 +#define IMAGE_DEBUG_TYPE_FIXUP 6 +#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 +#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 +#define FRAME_FPO 0 +#define FRAME_TRAP 1 +#define FRAME_TSS 2 +#define FRAME_NONFPO 3 +#define IMAGE_DEBUG_MISC_EXENAME 1 +#define N_BTMASK 0x000F +#define N_TMASK 0x0030 +#define N_TMASK1 0x00C0 +#define N_TMASK2 0x00F0 +#define N_BTSHFT 4 +#define N_TSHIFT 2 +#define IS_TEXT_UNICODE_ASCII16 1 +#define IS_TEXT_UNICODE_REVERSE_ASCII16 16 +#define IS_TEXT_UNICODE_STATISTICS 2 +#define IS_TEXT_UNICODE_REVERSE_STATISTICS 32 +#define IS_TEXT_UNICODE_CONTROLS 4 +#define IS_TEXT_UNICODE_REVERSE_CONTROLS 64 +#define IS_TEXT_UNICODE_SIGNATURE 8 +#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 128 +#define IS_TEXT_UNICODE_ILLEGAL_CHARS 256 +#define IS_TEXT_UNICODE_ODD_LENGTH 512 +#define IS_TEXT_UNICODE_NULL_BYTES 4096 +#define IS_TEXT_UNICODE_UNICODE_MASK 15 +#define IS_TEXT_UNICODE_REVERSE_MASK 240 +#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 3840 +#define IS_TEXT_UNICODE_NOT_ASCII_MASK 61440 +#define SERVICE_KERNEL_DRIVER 1 +#define SERVICE_FILE_SYSTEM_DRIVER 2 +#define SERVICE_ADAPTER 4 +#define SERVICE_RECOGNIZER_DRIVER 8 +#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER) +#define SERVICE_WIN32_OWN_PROCESS 16 +#define SERVICE_WIN32_SHARE_PROCESS 32 +#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS) +#define SERVICE_INTERACTIVE_PROCESS 256 +#define SERVICE_TYPE_ALL (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS) +#define SERVICE_BOOT_START 0 +#define SERVICE_SYSTEM_START 1 +#define SERVICE_AUTO_START 2 +#define SERVICE_DEMAND_START 3 +#define SERVICE_DISABLED 4 +#define SERVICE_ERROR_IGNORE 0 +#define SERVICE_ERROR_NORMAL 1 +#define SERVICE_ERROR_SEVERE 2 +#define SERVICE_ERROR_CRITICAL 3 +#define SE_OWNER_DEFAULTED 1 +#define SE_GROUP_DEFAULTED 2 +#define SE_DACL_PRESENT 4 +#define SE_DACL_DEFAULTED 8 +#define SE_SACL_PRESENT 16 +#define SE_SACL_DEFAULTED 32 +#define SE_DACL_AUTO_INHERIT_REQ 256 +#define SE_SACL_AUTO_INHERIT_REQ 512 +#define SE_DACL_AUTO_INHERITED 1024 +#define SE_SACL_AUTO_INHERITED 2048 +#define SE_DACL_PROTECTED 4096 +#define SE_SACL_PROTECTED 8192 +#define SE_SELF_RELATIVE 0x8000 +#define SECURITY_DESCRIPTOR_MIN_LENGTH 20 +#define SECURITY_DESCRIPTOR_REVISION 1 +#define SECURITY_DESCRIPTOR_REVISION1 1 +#define SE_PRIVILEGE_ENABLED_BY_DEFAULT 1 +#define SE_PRIVILEGE_ENABLED 2 +#define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000 +#define PRIVILEGE_SET_ALL_NECESSARY 1 +#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation +#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation +#define SECURITY_DYNAMIC_TRACKING TRUE +#define SECURITY_STATIC_TRACKING FALSE +/* also in ddk/ntifs.h */ +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define 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) +#define TOKEN_READ (STANDARD_RIGHTS_READ |\ + TOKEN_QUERY) +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) +#define TOKEN_SOURCE_LENGTH 8 +/* end ddk/ntifs.h */ +#define DLL_PROCESS_DETACH 0 +#define DLL_PROCESS_ATTACH 1 +#define DLL_THREAD_ATTACH 2 +#define DLL_THREAD_DETACH 3 +#define DBG_CONTINUE 0x10002 +#define DBG_TERMINATE_THREAD 0x40010003 +#define DBG_TERMINATE_PROCESS 0x40010004 +#define DBG_CONTROL_C 0x40010005 +#define DBG_CONTROL_BREAK 0x40010008 +#define DBG_EXCEPTION_NOT_HANDLED 0x80010001 +#define TAPE_ABSOLUTE_POSITION 0 +#define TAPE_LOGICAL_POSITION 1 +#define TAPE_PSEUDO_LOGICAL_POSITION 2 +#define TAPE_REWIND 0 +#define TAPE_ABSOLUTE_BLOCK 1 +#define TAPE_LOGICAL_BLOCK 2 +#define TAPE_PSEUDO_LOGICAL_BLOCK 3 +#define TAPE_SPACE_END_OF_DATA 4 +#define TAPE_SPACE_RELATIVE_BLOCKS 5 +#define TAPE_SPACE_FILEMARKS 6 +#define TAPE_SPACE_SEQUENTIAL_FMKS 7 +#define TAPE_SPACE_SETMARKS 8 +#define TAPE_SPACE_SEQUENTIAL_SMKS 9 +#define TAPE_DRIVE_FIXED 1 +#define TAPE_DRIVE_SELECT 2 +#define TAPE_DRIVE_INITIATOR 4 +#define TAPE_DRIVE_ERASE_SHORT 16 +#define TAPE_DRIVE_ERASE_LONG 32 +#define TAPE_DRIVE_ERASE_BOP_ONLY 64 +#define TAPE_DRIVE_ERASE_IMMEDIATE 128 +#define TAPE_DRIVE_TAPE_CAPACITY 256 +#define TAPE_DRIVE_TAPE_REMAINING 512 +#define TAPE_DRIVE_FIXED_BLOCK 1024 +#define TAPE_DRIVE_VARIABLE_BLOCK 2048 +#define TAPE_DRIVE_WRITE_PROTECT 4096 +#define TAPE_DRIVE_EOT_WZ_SIZE 8192 +#define TAPE_DRIVE_ECC 0x10000 +#define TAPE_DRIVE_COMPRESSION 0x20000 +#define TAPE_DRIVE_PADDING 0x40000 +#define TAPE_DRIVE_REPORT_SMKS 0x80000 +#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000 +#define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000 +#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000 +#define TAPE_DRIVE_EJECT_MEDIA 0x1000000 +#define TAPE_DRIVE_CLEAN_REQUESTS 0x2000000 +#define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x4000000 +#define TAPE_DRIVE_RESERVED_BIT 0x80000000 +#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001 +#define TAPE_DRIVE_TENSION 0x80000002 +#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004 +#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008 +#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010 +#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020 +#define TAPE_DRIVE_TENSION_IMMED 0x80000040 +#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080 +#define TAPE_DRIVE_SET_ECC 0x80000100 +#define TAPE_DRIVE_SET_COMPRESSION 0x80000200 +#define TAPE_DRIVE_SET_PADDING 0x80000400 +#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800 +#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000 +#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000 +#define TAPE_DRIVE_LOGICAL_BLK 0x80004000 +#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000 +#define TAPE_DRIVE_END_OF_DATA 0x80010000 +#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000 +#define TAPE_DRIVE_FILEMARKS 0x80040000 +#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000 +#define TAPE_DRIVE_SETMARKS 0x80100000 +#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000 +#define TAPE_DRIVE_REVERSE_POSITION 0x80400000 +#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000 +#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000 +#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000 +#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000 +#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 +#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 +#define TAPE_DRIVE_FORMAT 0xA0000000 +#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000 +#define TAPE_DRIVE_HIGH_FEATURES 0x80000000 +#define TAPE_FIXED_PARTITIONS 0 +#define TAPE_INITIATOR_PARTITIONS 2 +#define TAPE_SELECT_PARTITIONS 1 +#define TAPE_FILEMARKS 1 +#define TAPE_LONG_FILEMARKS 3 +#define TAPE_SETMARKS 0 +#define TAPE_SHORT_FILEMARKS 2 +#define TAPE_ERASE_LONG 1 +#define TAPE_ERASE_SHORT 0 +#define TAPE_LOAD 0 +#define TAPE_UNLOAD 1 +#define TAPE_TENSION 2 +#define TAPE_LOCK 3 +#define TAPE_UNLOCK 4 +#define TAPE_FORMAT 5 +#if (_WIN32_WINNT >= 0x0500) +#define VER_MINORVERSION 0x0000001 +#define VER_MAJORVERSION 0x0000002 +#define VER_BUILDNUMBER 0x0000004 +#define VER_PLATFORMID 0x0000008 +#define VER_SERVICEPACKMINOR 0x0000010 +#define VER_SERVICEPACKMAJOR 0x0000020 +#define VER_SUITENAME 0x0000040 +#define VER_PRODUCT_TYPE 0x0000080 +#define VER_EQUAL 1 +#define VER_GREATER 2 +#define VER_GREATER_EQUAL 3 +#define VER_LESS 4 +#define VER_LESS_EQUAL 5 +#define VER_AND 6 +#define VER_OR 7 +#endif +#define VER_PLATFORM_WIN32s 0 +#define VER_PLATFORM_WIN32_WINDOWS 1 +#define VER_PLATFORM_WIN32_NT 2 +#define VER_NT_WORKSTATION 1 +#define VER_NT_DOMAIN_CONTROLLER 2 +#define VER_NT_SERVER 3 +#define VER_SUITE_SMALLBUSINESS 1 +#define VER_SUITE_ENTERPRISE 2 +#define VER_SUITE_BACKOFFICE 4 +#define VER_SUITE_TERMINAL 16 +#define VER_SUITE_SMALLBUSINESS_RESTRICTED 32 +#define VER_SUITE_DATACENTER 128 +#define VER_SUITE_PERSONAL 512 +#define VER_SUITE_BLADE 1024 +#define WT_EXECUTEDEFAULT 0x00000000 +#define WT_EXECUTEINIOTHREAD 0x00000001 +#define WT_EXECUTEINWAITTHREAD 0x00000004 +#define WT_EXECUTEONLYONCE 0x00000008 +#define WT_EXECUTELONGFUNCTION 0x00000010 +#define WT_EXECUTEINTIMERTHREAD 0x00000020 +#define WT_EXECUTEINPERSISTENTTHREAD 0x00000080 +#define WT_TRANSFER_IMPERSONATION 0x00000100 +#if (_WIN32_WINNT >= 0x0501) +#define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1 +#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2 +#define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION 3 +#define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION 4 +#define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 5 +#define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 6 +#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7 +#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9 +#endif /* (_WIN32_WINNT >= 0x0501) */ +#define BTYPE(x) ((x)&N_BTMASK) +#define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK)) +#define TLS_MINIMUM_AVAILABLE 64 +#define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer) +#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer) +#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 16384 +#define IO_REPARSE_TAG_RESERVED_ZERO 0 +#define IO_REPARSE_TAG_RESERVED_ONE 1 +#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE +#define IsReparseTagMicrosoft(x) ((x)&0x80000000) +#define IsReparseTagHighLatency(x) ((x)&0x40000000) +#define IsReparseTagNameSurrogate(x) ((x)&0x20000000) +#define IO_REPARSE_TAG_VALID_VALUES 0xE000FFFF +#define IsReparseTagValid(x) (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE)) +#define IO_REPARSE_TAG_SYMBOLIC_LINK IO_REPARSE_TAG_RESERVED_ZERO +#define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 +#ifndef RC_INVOKED +typedef DWORD ACCESS_MASK, *PACCESS_MASK; + +#ifdef _GUID_DEFINED +# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead +#endif + +#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in basetyps.h */ +#define GUID_DEFINED +typedef struct _GUID { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID, *REFGUID, *LPGUID; +#define SYSTEM_LUID { QuadPart:999 } +#endif /* GUID_DEFINED */ +typedef struct _GENERIC_MAPPING { + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; +} GENERIC_MAPPING, *PGENERIC_MAPPING; +typedef struct _ACE_HEADER { + BYTE AceType; + BYTE AceFlags; + WORD AceSize; +} ACE_HEADER, *PACE_HEADER; +typedef struct _ACCESS_ALLOWED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE; +typedef struct _ACCESS_DENIED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} ACCESS_DENIED_ACE, *PACCESS_DENIED_ACE; +typedef struct _SYSTEM_AUDIT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} SYSTEM_AUDIT_ACE; +typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; +typedef struct _SYSTEM_ALARM_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE; +typedef struct _ACCESS_ALLOWED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; +typedef struct _ACCESS_DENIED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; +typedef struct _SYSTEM_AUDIT_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; +typedef struct _SYSTEM_ALARM_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; +typedef struct _ACL { + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; +} ACL,*PACL; +typedef struct _ACL_REVISION_INFORMATION { + DWORD AclRevision; +} ACL_REVISION_INFORMATION; +typedef struct _ACL_SIZE_INFORMATION { + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; +} ACL_SIZE_INFORMATION; + +/* FIXME: add more machines */ +#ifdef _X86_ +#define SIZE_OF_80387_REGISTERS 80 +#define CONTEXT_i386 0x10000 +#define CONTEXT_i486 0x10000 +#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L) +#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L) +#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L) +#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L) +#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L) +#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS) +#define MAXIMUM_SUPPORTED_EXTENSION 512 +typedef struct _FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE RegisterArea[80]; + DWORD Cr0NpxState; +} FLOATING_SAVE_AREA; +typedef 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 ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; +} CONTEXT; +#elif defined(_PPC_) +#define CONTEXT_CONTROL 1L +#define CONTEXT_FLOATING_POINT 2L +#define CONTEXT_INTEGER 4L +#define CONTEXT_DEBUG_REGISTERS 8L +#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER) +typedef struct { + double Fpr0; + double Fpr1; + double Fpr2; + double Fpr3; + double Fpr4; + double Fpr5; + double Fpr6; + double Fpr7; + double Fpr8; + double Fpr9; + double Fpr10; + double Fpr11; + double Fpr12; + double Fpr13; + double Fpr14; + double Fpr15; + double Fpr16; + double Fpr17; + double Fpr18; + double Fpr19; + double Fpr20; + double Fpr21; + double Fpr22; + double Fpr23; + double Fpr24; + double Fpr25; + double Fpr26; + double Fpr27; + double Fpr28; + double Fpr29; + double Fpr30; + double Fpr31; + double Fpscr; + DWORD Gpr0; + DWORD Gpr1; + DWORD Gpr2; + DWORD Gpr3; + DWORD Gpr4; + DWORD Gpr5; + DWORD Gpr6; + DWORD Gpr7; + DWORD Gpr8; + DWORD Gpr9; + DWORD Gpr10; + DWORD Gpr11; + DWORD Gpr12; + DWORD Gpr13; + DWORD Gpr14; + DWORD Gpr15; + DWORD Gpr16; + DWORD Gpr17; + DWORD Gpr18; + DWORD Gpr19; + DWORD Gpr20; + DWORD Gpr21; + DWORD Gpr22; + DWORD Gpr23; + DWORD Gpr24; + DWORD Gpr25; + DWORD Gpr26; + DWORD Gpr27; + DWORD Gpr28; + DWORD Gpr29; + DWORD Gpr30; + DWORD Gpr31; + DWORD Cr; + DWORD Xer; + DWORD Msr; + DWORD Iar; + DWORD Lr; + DWORD Ctr; + DWORD ContextFlags; + DWORD Fill[3]; + DWORD Dr0; + DWORD Dr1; + DWORD Dr2; + DWORD Dr3; + DWORD Dr4; + DWORD Dr5; + DWORD Dr6; + DWORD Dr7; +} CONTEXT; +#elif defined(_ALPHA_) +#define CONTEXT_ALPHA 0x20000 +#define CONTEXT_CONTROL (CONTEXT_ALPHA|1L) +#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA|2L) +#define CONTEXT_INTEGER (CONTEXT_ALPHA|4L) +#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER) +typedef struct _CONTEXT { + ULONGLONG FltF0; + ULONGLONG FltF1; + ULONGLONG FltF2; + ULONGLONG FltF3; + ULONGLONG FltF4; + ULONGLONG FltF5; + ULONGLONG FltF6; + ULONGLONG FltF7; + ULONGLONG FltF8; + ULONGLONG FltF9; + ULONGLONG FltF10; + ULONGLONG FltF11; + ULONGLONG FltF12; + ULONGLONG FltF13; + ULONGLONG FltF14; + ULONGLONG FltF15; + ULONGLONG FltF16; + ULONGLONG FltF17; + ULONGLONG FltF18; + ULONGLONG FltF19; + ULONGLONG FltF20; + ULONGLONG FltF21; + ULONGLONG FltF22; + ULONGLONG FltF23; + ULONGLONG FltF24; + ULONGLONG FltF25; + ULONGLONG FltF26; + ULONGLONG FltF27; + ULONGLONG FltF28; + ULONGLONG FltF29; + ULONGLONG FltF30; + ULONGLONG FltF31; + ULONGLONG IntV0; + ULONGLONG IntT0; + ULONGLONG IntT1; + ULONGLONG IntT2; + ULONGLONG IntT3; + ULONGLONG IntT4; + ULONGLONG IntT5; + ULONGLONG IntT6; + ULONGLONG IntT7; + ULONGLONG IntS0; + ULONGLONG IntS1; + ULONGLONG IntS2; + ULONGLONG IntS3; + ULONGLONG IntS4; + ULONGLONG IntS5; + ULONGLONG IntFp; + ULONGLONG IntA0; + ULONGLONG IntA1; + ULONGLONG IntA2; + ULONGLONG IntA3; + ULONGLONG IntA4; + ULONGLONG IntA5; + ULONGLONG IntT8; + ULONGLONG IntT9; + ULONGLONG IntT10; + ULONGLONG IntT11; + ULONGLONG IntRa; + ULONGLONG IntT12; + ULONGLONG IntAt; + ULONGLONG IntGp; + ULONGLONG IntSp; + ULONGLONG IntZero; + ULONGLONG Fpcr; + ULONGLONG SoftFpcr; + ULONGLONG Fir; + DWORD Psr; + DWORD ContextFlags; + DWORD Fill[4]; +} CONTEXT; +#elif defined(SHx) + +/* These are the debug or break registers on the SH3 */ +typedef struct _DEBUG_REGISTERS { + ULONG BarA; + UCHAR BasrA; + UCHAR BamrA; + USHORT BbrA; + ULONG BarB; + UCHAR BasrB; + UCHAR BamrB; + USHORT BbrB; + ULONG BdrB; + ULONG BdmrB; + USHORT Brcr; + USHORT Align; +} DEBUG_REGISTERS, *PDEBUG_REGISTERS; + +/* The following flags control the contents of the CONTEXT structure. */ + +#define CONTEXT_SH3 0x00000040 +#define CONTEXT_SH4 0x000000c0 /* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */ + +#ifdef SH3 +#define CONTEXT_CONTROL (CONTEXT_SH3 | 0x00000001L) +#define CONTEXT_INTEGER (CONTEXT_SH3 | 0x00000002L) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH3 | 0x00000008L) +#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS) +#else /* SH4 */ +#define CONTEXT_CONTROL (CONTEXT_SH4 | 0x00000001L) +#define CONTEXT_INTEGER (CONTEXT_SH4 | 0x00000002L) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH4 | 0x00000008L) +#define CONTEXT_FLOATING_POINT (CONTEXT_SH4 | 0x00000004L) +#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT) +#endif + +/* Context Frame */ + +/* This frame is used to store a limited processor context into the */ +/* Thread structure for CPUs which have no floating point support. */ + +typedef 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 thread's 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. */ + + + ULONG ContextFlags; + + /* This section is specified/returned if the ContextFlags word contains */ + /* the flag CONTEXT_INTEGER. */ + + /* N.B. The registers RA and R15 are defined in this section, but are */ + /* considered part of the control context rather than part of the integer */ + /* context. */ + + ULONG PR; + ULONG MACH; + ULONG MACL; + ULONG GBR; + ULONG R0; + ULONG R1; + ULONG R2; + ULONG R3; + ULONG R4; + ULONG R5; + ULONG R6; + ULONG R7; + ULONG R8; + ULONG R9; + ULONG R10; + ULONG R11; + ULONG R12; + ULONG R13; + ULONG R14; + ULONG R15; + + /* This section is specified/returned if the ContextFlags word contains */ + /* the flag CONTEXT_CONTROL. */ + + /* N.B. The registers r15 and ra are defined in the integer section, */ + /* but are considered part of the control context rather than part of */ + /* the integer context. */ + + ULONG Fir; + ULONG Psr; + +#if !defined(SH3e) && !defined(SH4) + ULONG OldStuff[2]; + DEBUG_REGISTERS DebugRegisters; +#else + ULONG Fpscr; + ULONG Fpul; + ULONG FRegs[16]; +#if defined(SH4) + ULONG xFRegs[16]; +#endif +#endif +} CONTEXT; + +#elif defined(MIPS) + +/* The following flags control the contents of the CONTEXT structure. */ + +#define CONTEXT_R4000 0x00010000 /* r4000 context */ + +#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001L) +#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002L) +#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004L) + +#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) + +/* Context Frame */ + +/* N.B. This frame must be exactly a multiple of 16 bytes in length. */ + +/* This frame has a several purposes: 1) it is used as an argument to */ +/* NtContinue, 2) it is used to constuct a call frame for APC delivery, */ +/* 3) it is used to construct a call frame for exception dispatching */ +/* in user mode, and 4) it is used in the user level thread creation */ +/* routines. */ + +/* The layout of the record conforms to a standard call frame. */ + + +typedef struct _CONTEXT { + + /* This section is always present and is used as an argument build */ + /* area. */ + + DWORD Argument[4]; + + /* This section is specified/returned if the ContextFlags word contains */ + /* the flag CONTEXT_FLOATING_POINT. */ + + DWORD FltF0; + DWORD FltF1; + DWORD FltF2; + DWORD FltF3; + DWORD FltF4; + DWORD FltF5; + DWORD FltF6; + DWORD FltF7; + DWORD FltF8; + DWORD FltF9; + DWORD FltF10; + DWORD FltF11; + DWORD FltF12; + DWORD FltF13; + DWORD FltF14; + DWORD FltF15; + DWORD FltF16; + DWORD FltF17; + DWORD FltF18; + DWORD FltF19; + DWORD FltF20; + DWORD FltF21; + DWORD FltF22; + DWORD FltF23; + DWORD FltF24; + DWORD FltF25; + DWORD FltF26; + DWORD FltF27; + DWORD FltF28; + DWORD FltF29; + DWORD FltF30; + DWORD FltF31; + + /* This section is specified/returned if the ContextFlags word contains */ + /* the flag CONTEXT_INTEGER. */ + + /* N.B. The registers gp, sp, and ra are defined in this section, but are */ + /* considered part of the control context rather than part of the integer */ + /* context. */ + + /* N.B. Register zero is not stored in the frame. */ + + DWORD IntZero; + DWORD IntAt; + DWORD IntV0; + DWORD IntV1; + DWORD IntA0; + DWORD IntA1; + DWORD IntA2; + DWORD IntA3; + DWORD IntT0; + DWORD IntT1; + DWORD IntT2; + DWORD IntT3; + DWORD IntT4; + DWORD IntT5; + DWORD IntT6; + DWORD IntT7; + DWORD IntS0; + DWORD IntS1; + DWORD IntS2; + DWORD IntS3; + DWORD IntS4; + DWORD IntS5; + DWORD IntS6; + DWORD IntS7; + DWORD IntT8; + DWORD IntT9; + DWORD IntK0; + DWORD IntK1; + DWORD IntGp; + DWORD IntSp; + DWORD IntS8; + DWORD IntRa; + DWORD IntLo; + DWORD IntHi; + + /* This section is specified/returned if the ContextFlags word contains */ + /* the flag CONTEXT_FLOATING_POINT. */ + + DWORD Fsr; + + /* This section is specified/returned if the ContextFlags word contains */ + /* the flag CONTEXT_CONTROL. */ + + /* N.B. The registers gp, sp, and ra are defined in the integer section, */ + /* but are considered part of the control context rather than part of */ + /* the integer context. */ + + DWORD Fir; + DWORD Psr; + + /* 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 thread's 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; + + DWORD Fill[2]; + +} CONTEXT; +#elif defined(ARM) + +/* The following flags control the contents of the CONTEXT structure. */ + +#define CONTEXT_ARM 0x0000040 +#define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001L) +#define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L) + +#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER) + +typedef 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 thread's 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. */ + + ULONG ContextFlags; + + /* This section is specified/returned if the ContextFlags word contains + the flag CONTEXT_INTEGER. */ + ULONG R0; + ULONG R1; + ULONG R2; + ULONG R3; + ULONG R4; + ULONG R5; + ULONG R6; + ULONG R7; + ULONG R8; + ULONG R9; + ULONG R10; + ULONG R11; + ULONG R12; + + ULONG Sp; + ULONG Lr; + ULONG Pc; + ULONG Psr; +} CONTEXT; + +#else +#error "undefined processor type" +#endif +typedef CONTEXT *PCONTEXT,*LPCONTEXT; +typedef struct _EXCEPTION_RECORD { + DWORD ExceptionCode; + DWORD ExceptionFlags; + struct _EXCEPTION_RECORD *ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} EXCEPTION_RECORD,*PEXCEPTION_RECORD,*LPEXCEPTION_RECORD; +typedef struct _EXCEPTION_POINTERS { + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} EXCEPTION_POINTERS,*PEXCEPTION_POINTERS,*LPEXCEPTION_POINTERS; +typedef union _LARGE_INTEGER { + struct { + DWORD LowPart; + LONG HighPart; + } u; +#if ! defined(NONAMELESSUNION) || defined(__cplusplus) + _ANONYMOUS_STRUCT struct { + DWORD LowPart; + LONG HighPart; + }; +#endif /* NONAMELESSUNION */ + LONGLONG QuadPart; +} LARGE_INTEGER, *PLARGE_INTEGER; +typedef union _ULARGE_INTEGER { + struct { + DWORD LowPart; + DWORD HighPart; + } u; +#if ! defined(NONAMELESSUNION) || defined(__cplusplus) + _ANONYMOUS_STRUCT struct { + DWORD LowPart; + DWORD HighPart; + }; +#endif /* NONAMELESSUNION */ + ULONGLONG QuadPart; +} ULARGE_INTEGER, *PULARGE_INTEGER; +typedef LARGE_INTEGER LUID,*PLUID; +#pragma pack(push,4) +typedef struct _LUID_AND_ATTRIBUTES { + LUID Luid; + DWORD Attributes; +} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES; +#pragma pack(pop) +typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; +typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; +typedef struct _PRIVILEGE_SET { + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; +} PRIVILEGE_SET,*PPRIVILEGE_SET; +typedef struct _SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES; +typedef enum _SECURITY_IMPERSONATION_LEVEL { + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation +} SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; +typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; +typedef struct _SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; +} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; +typedef PVOID PACCESS_TOKEN; +typedef struct _SE_IMPERSONATION_STATE { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; +} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; +typedef struct _SID_IDENTIFIER_AUTHORITY { + BYTE Value[6]; +} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; +typedef PVOID PSID; +typedef struct _SID { + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; + DWORD SubAuthority[ANYSIZE_ARRAY]; +} SID, *PISID; +typedef struct _SID_AND_ATTRIBUTES { + PSID Sid; + DWORD Attributes; +} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES; +typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; +typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY; +typedef struct _TOKEN_SOURCE { + CHAR SourceName[TOKEN_SOURCE_LENGTH]; + LUID SourceIdentifier; +} TOKEN_SOURCE,*PTOKEN_SOURCE; +typedef struct _TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} TOKEN_CONTROL,*PTOKEN_CONTROL; +typedef struct _TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; +typedef struct _TOKEN_GROUPS { + DWORD GroupCount; + SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; +} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; +typedef struct _TOKEN_OWNER { + PSID Owner; +} TOKEN_OWNER,*PTOKEN_OWNER; +typedef struct _TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; +typedef struct _TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; +} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; +typedef enum tagTOKEN_TYPE { + TokenPrimary = 1, + TokenImpersonation +} TOKEN_TYPE,*PTOKEN_TYPE; +typedef 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; +} TOKEN_STATISTICS, *PTOKEN_STATISTICS; +typedef struct _TOKEN_USER { + SID_AND_ATTRIBUTES User; +} TOKEN_USER, *PTOKEN_USER; +typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION; +typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL; +typedef struct _SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; +} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR; +typedef enum _TOKEN_INFORMATION_CLASS { + TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner, + TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType, + TokenImpersonationLevel,TokenStatistics,TokenRestrictedSids, + TokenSessionId +} TOKEN_INFORMATION_CLASS; +typedef enum _SID_NAME_USE { + SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias, + SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid, + SidTypeUnknown +} SID_NAME_USE,*PSID_NAME_USE; +typedef struct _QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; +} QUOTA_LIMITS,*PQUOTA_LIMITS; +typedef struct _IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} IO_COUNTERS, *PIO_COUNTERS; +typedef struct _FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR FileName[1]; +} FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION; +typedef struct _TAPE_ERASE { + DWORD Type; + BOOLEAN Immediate; +} TAPE_ERASE,*PTAPE_ERASE; +typedef 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; +} TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS; +typedef struct _TAPE_GET_MEDIA_PARAMETERS { + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; +} TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS; +typedef struct _TAPE_GET_POSITION { + ULONG Type; + ULONG Partition; + ULONG OffsetLow; + ULONG OffsetHigh; +} TAPE_GET_POSITION,*PTAPE_GET_POSITION; +typedef struct _TAPE_PREPARE { + DWORD Operation; + BOOLEAN Immediate; +} TAPE_PREPARE,*PTAPE_PREPARE; +typedef struct _TAPE_SET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + ULONG EOTWarningZoneSize; +} TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS; +typedef struct _TAPE_SET_MEDIA_PARAMETERS { + ULONG BlockSize; +} TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS; +typedef struct _TAPE_SET_POSITION { + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; +} TAPE_SET_POSITION,*PTAPE_SET_POSITION; +typedef struct _TAPE_WRITE_MARKS { + DWORD Type; + DWORD Count; + BOOLEAN Immediate; +} TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS; +typedef struct _TAPE_CREATE_PARTITION { + DWORD Method; + DWORD Count; + DWORD Size; +} TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION; +typedef struct _MEMORY_BASIC_INFORMATION { + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + DWORD RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION; +typedef struct _MESSAGE_RESOURCE_ENTRY { + WORD Length; + WORD Flags; + BYTE Text[1]; +} MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY; +typedef struct _MESSAGE_RESOURCE_BLOCK { + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; +} MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK; +typedef struct _MESSAGE_RESOURCE_DATA { + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK Blocks[1]; +} MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA; +typedef struct _LIST_ENTRY { + struct _LIST_ENTRY *Flink; + struct _LIST_ENTRY *Blink; +} LIST_ENTRY,*PLIST_ENTRY; +typedef struct _SINGLE_LIST_ENTRY { + struct _SINGLE_LIST_ENTRY *Next; +} SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY; + +#ifndef _SLIST_HEADER_ +#define _SLIST_HEADER_ +#define SLIST_ENTRY SINGLE_LIST_ENTRY +#define _SLIST_ENTRY _SINGLE_LIST_ENTRY +#define PSLIST_ENTRY PSINGLE_LIST_ENTRY +typedef union _SLIST_HEADER { + ULONGLONG Alignment; + _ANONYMOUS_STRUCT struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; + } DUMMYSTRUCTNAME; +} SLIST_HEADER,*PSLIST_HEADER; +#endif /* !_SLIST_HEADER_ */ + +typedef struct _RTL_CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + struct _RTL_CRITICAL_SECTION *CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD Spare[2]; +} RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG; +typedef struct _RTL_CRITICAL_SECTION { + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD Reserved; +} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION; +typedef 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; +} EVENTLOGRECORD,*PEVENTLOGRECORD; +typedef struct _OSVERSIONINFOA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; +} OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA; +typedef struct _OSVERSIONINFOW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[128]; +} OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW; +typedef struct _OSVERSIONINFOEXA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; +typedef struct _OSVERSIONINFOEXW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[128]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW; +#pragma pack(push,2) +typedef 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 e32_res3[12]; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; +} IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER; +#pragma pack(pop) +#pragma pack(push,4) +typedef struct _IMAGE_FILE_HEADER { + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; +} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; +typedef struct _IMAGE_DATA_DIRECTORY { + DWORD VirtualAddress; + DWORD Size; +} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; +typedef struct _IMAGE_OPTIONAL_HEADER { + 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 Reserved1; + 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 DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER; +typedef 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 CprMask[4]; + DWORD GpValue; +} IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER; +#pragma pack(pop) +#pragma pack(push,2) +typedef 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 e_res[4]; + WORD e_oemid; + WORD e_oeminfo; + WORD e_res2[10]; + LONG e_lfanew; +} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER; +typedef 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; +} IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER; +#pragma pack(pop) +#pragma pack(push,4) +typedef struct _IMAGE_NT_HEADERS { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; +} IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS; +typedef struct _IMAGE_ROM_HEADERS { + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; +} IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS; +typedef struct _IMAGE_SECTION_HEADER { + BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; + union { + DWORD PhysicalAddress; + DWORD VirtualSize; + } Misc; + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; +} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; +#pragma pack(pop) +#pragma pack(push,2) +typedef struct _IMAGE_SYMBOL { + union { + BYTE ShortName[8]; + struct { + DWORD Short; + DWORD Long; + } Name; + PBYTE LongName[2]; + } N; + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; +} IMAGE_SYMBOL,*PIMAGE_SYMBOL; +typedef union _IMAGE_AUX_SYMBOL { + struct { + DWORD TagIndex; + union { + struct { + WORD Linenumber; + WORD Size; + } LnSz; + DWORD TotalSize; + } Misc; + union { + struct { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; + } Function; + struct { + WORD Dimension[4]; + } Array; + } FcnAry; + WORD TvIndex; + } Sym; + struct { + BYTE Name[IMAGE_SIZEOF_SYMBOL]; + } File; + struct { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; + } Section; +} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL; +typedef struct _IMAGE_COFF_SYMBOLS_HEADER { + DWORD NumberOfSymbols; + DWORD LvaToFirstSymbol; + DWORD NumberOfLinenumbers; + DWORD LvaToFirstLinenumber; + DWORD RvaToFirstByteOfCode; + DWORD RvaToLastByteOfCode; + DWORD RvaToFirstByteOfData; + DWORD RvaToLastByteOfData; +} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER; +typedef struct _IMAGE_RELOCATION { + _ANONYMOUS_UNION union { + DWORD VirtualAddress; + DWORD RelocCount; + } DUMMYUNIONNAME; + DWORD SymbolTableIndex; + WORD Type; +} IMAGE_RELOCATION,*PIMAGE_RELOCATION; +#pragma pack(pop) +#pragma pack(push,4) +typedef struct _IMAGE_BASE_RELOCATION { + DWORD VirtualAddress; + DWORD SizeOfBlock; +} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION; +#pragma pack(pop) +#pragma pack(push,2) +typedef struct _IMAGE_LINENUMBER { + union { + DWORD SymbolTableIndex; + DWORD VirtualAddress; + } Type; + WORD Linenumber; +} IMAGE_LINENUMBER,*PIMAGE_LINENUMBER; +#pragma pack(pop) +#pragma pack(push,4) +typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { + BYTE Name[16]; + BYTE Date[12]; + BYTE UserID[6]; + BYTE GroupID[6]; + BYTE Mode[8]; + BYTE Size[10]; + BYTE EndHeader[2]; +} IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER; +typedef struct _IMAGE_EXPORT_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Name; + DWORD Base; + DWORD NumberOfFunctions; + DWORD NumberOfNames; + PDWORD *AddressOfFunctions; + PDWORD *AddressOfNames; + PWORD *AddressOfNameOrdinals; +} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY; +typedef struct _IMAGE_IMPORT_BY_NAME { + WORD Hint; + BYTE Name[1]; +} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME; +typedef struct _IMAGE_THUNK_DATA { + union { + PBYTE ForwarderString; + PDWORD Function; + DWORD Ordinal; + PIMAGE_IMPORT_BY_NAME AddressOfData; + } u1; +} IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA; +typedef struct _IMAGE_IMPORT_DESCRIPTOR { + _ANONYMOUS_UNION union { + DWORD Characteristics; + PIMAGE_THUNK_DATA OriginalFirstThunk; + } DUMMYUNIONNAME; + DWORD TimeDateStamp; + DWORD ForwarderChain; + DWORD Name; + PIMAGE_THUNK_DATA FirstThunk; +} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR; +typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; +} IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR; +typedef struct _IMAGE_BOUND_FORWARDER_REF { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD Reserved; +} IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF; +typedef void(NTAPI *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID); +typedef struct _IMAGE_TLS_DIRECTORY { + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + PDWORD AddressOfIndex; + PIMAGE_TLS_CALLBACK *AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY; +typedef struct _IMAGE_RESOURCE_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; +} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY; +_ANONYMOUS_STRUCT typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + DWORD NameOffset:31; + DWORD NameIsString:1; + }DUMMYSTRUCTNAME; + DWORD Name; + WORD Id; + } DUMMYUNIONNAME; + _ANONYMOUS_UNION union { + DWORD OffsetToData; + _ANONYMOUS_STRUCT struct { + DWORD OffsetToDirectory:31; + DWORD DataIsDirectory:1; + } DUMMYSTRUCTNAME2; + } DUMMYUNIONNAME2; +} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY; +typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { + WORD Length; + CHAR NameString[1]; +} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING; +typedef struct _IMAGE_RESOURCE_DIR_STRING_U { + WORD Length; + WCHAR NameString[1]; +} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U; +typedef struct _IMAGE_RESOURCE_DATA_ENTRY { + DWORD OffsetToData; + DWORD Size; + DWORD CodePage; + DWORD Reserved; +} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY; +typedef 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 Reserved[4]; +} IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY; +typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + PVOID ExceptionHandler; + PVOID HandlerData; + DWORD PrologEndAddress; +} IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY; +typedef struct _IMAGE_DEBUG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; +} IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY; +typedef struct _FPO_DATA { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; + WORD cbProlog:8; + WORD cbRegs:3; + WORD fHasSEH:1; + WORD fUseBP:1; + WORD reserved:1; + WORD cbFrame:2; +} FPO_DATA,*PFPO_DATA; +typedef struct _IMAGE_DEBUG_MISC { + DWORD DataType; + DWORD Length; + BOOLEAN Unicode; + BYTE Reserved[3]; + BYTE Data[1]; +} IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC; +typedef struct _IMAGE_FUNCTION_ENTRY { + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; +} IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY; +typedef 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 Reserved[2]; +} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER; +#pragma pack(pop) +typedef enum _CM_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 +} SERVICE_NODE_TYPE; +typedef enum _CM_SERVICE_LOAD_TYPE { + BootLoad=SERVICE_BOOT_START, + SystemLoad=SERVICE_SYSTEM_START, + AutoLoad=SERVICE_AUTO_START, + DemandLoad=SERVICE_DEMAND_START, + DisableLoad=SERVICE_DISABLED +} SERVICE_LOAD_TYPE; +typedef enum _CM_ERROR_CONTROL_TYPE { + IgnoreError=SERVICE_ERROR_IGNORE, + NormalError=SERVICE_ERROR_NORMAL, + SevereError=SERVICE_ERROR_SEVERE, + CriticalError=SERVICE_ERROR_CRITICAL +} SERVICE_ERROR_TYPE; +typedef struct _NT_TIB { + struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + _ANONYMOUS_UNION union { + PVOID FiberData; + DWORD Version; + } DUMMYUNIONNAME; + PVOID ArbitraryUserPointer; + struct _NT_TIB *Self; +} NT_TIB,*PNT_TIB; +typedef struct _REPARSE_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + _ANONYMOUS_UNION union { + struct { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + WCHAR PathBuffer[1]; + } SymbolicLinkReparseBuffer; + struct { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + WCHAR PathBuffer[1]; + } MountPointReparseBuffer; + struct { + BYTE DataBuffer[1]; + } GenericReparseBuffer; + } DUMMYUNIONNAME; +} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; +typedef struct _REPARSE_GUID_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; + struct { + BYTE DataBuffer[1]; + } GenericReparseBuffer; +} REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER; +typedef struct _REPARSE_POINT_INFORMATION { + WORD ReparseDataLength; + WORD UnparsedNameLength; +} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION; + +typedef union _FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; +}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; + +/* JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants */ +#define JOB_OBJECT_LIMIT_WORKINGSET 0x0001 +#define JOB_OBJECT_LIMIT_PROCESS_TIME 0x0002 +#define JOB_OBJECT_LIMIT_JOB_TIME 0x0004 +#define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x0008 +#define JOB_OBJECT_LIMIT_AFFINITY 0x0010 +#define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x0020 +#define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x0040 +#define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x0080 +#define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x0100 +#define JOB_OBJECT_LIMIT_JOB_MEMORY 0x0200 +#define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x0400 +#define JOB_OBJECT_BREAKAWAY_OK 0x0800 +#define JOB_OBJECT_SILENT_BREAKAWAY 0x1000 + +/* JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants */ +#define JOB_OBJECT_UILIMIT_HANDLES 0x0001 +#define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x0002 +#define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x0004 +#define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x0008 +#define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x0010 +#define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x0020 +#define JOB_OBJECT_UILIMIT_DESKTOP 0x0040 +#define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x0080 + +/* JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants */ +#define JOB_OBJECT_SECURITY_NO_ADMIN 0x0001 +#define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x0002 +#define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x0004 +#define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x0008 + +/* JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants */ +#define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 +#define JOB_OBJECT_POST_AT_END_OF_JOB 1 + +#define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 +#define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 +#define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 +#define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 +#define JOB_OBJECT_MSG_NEW_PROCESS 6 +#define JOB_OBJECT_MSG_EXIT_PROCESS 7 +#define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 +#define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 +#define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 + +typedef enum _JOBOBJECTINFOCLASS { + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + MaxJobObjectInfoClass +} JOBOBJECTINFOCLASS; +typedef 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; +} JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; +typedef 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; +} JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION; +typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR ProcessIdList[1]; +} JOBOBJECT_BASIC_PROCESS_ID_LIST, *PJOBOBJECT_BASIC_PROCESS_ID_LIST; +typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { + DWORD UIRestrictionsClass; +} JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS; +typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { + DWORD SecurityLimitFlags; + HANDLE JobToken; + PTOKEN_GROUPS SidsToDisable; + PTOKEN_PRIVILEGES PrivilegesToDelete; + PTOKEN_GROUPS RestrictedSids; +} JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION; +typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { + DWORD EndOfJobTimeAction; +} JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; +typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { + PVOID CompletionKey; + HANDLE CompletionPort; +} JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; +typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { + JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; + IO_COUNTERS IoInfo; +} JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; +typedef 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_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; +typedef struct _JOBOBJECT_JOBSET_INFORMATION { + DWORD MemberLevel; +} JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION; + +/* Fixme: Making these defines conditional on WINVER will break ddk includes */ +#if 1 /* (WINVER >= 0x0500) */ +#include + +#define ES_SYSTEM_REQUIRED 0x00000001 +#define ES_DISPLAY_REQUIRED 0x00000002 +#define ES_USER_PRESENT 0x00000004 +#define ES_CONTINUOUS 0x80000000 + +typedef enum _LATENCY_TIME { + LT_DONT_CARE, + LT_LOWEST_LATENCY +} LATENCY_TIME, *PLATENCY_TIME; + +typedef enum _SYSTEM_POWER_STATE { + PowerSystemUnspecified, + PowerSystemWorking, + PowerSystemSleeping1, + PowerSystemSleeping2, + PowerSystemSleeping3, + PowerSystemHibernate, + PowerSystemShutdown, + PowerSystemMaximum +} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE; +#define POWER_SYSTEM_MAXIMUM PowerSystemMaximum + +typedef enum { + PowerActionNone, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject +} POWER_ACTION, *PPOWER_ACTION; + +typedef enum _DEVICE_POWER_STATE { + PowerDeviceUnspecified, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum +} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; + +typedef struct { + DWORD Granularity; + DWORD Capacity; +} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE; + +typedef struct _POWER_ACTION_POLICY { + POWER_ACTION Action; + ULONG Flags; + ULONG EventCode; +} POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY; + +/* POWER_ACTION_POLICY.Flags constants */ +#define POWER_ACTION_QUERY_ALLOWED 0x00000001 +#define POWER_ACTION_UI_ALLOWED 0x00000002 +#define POWER_ACTION_OVERRIDE_APPS 0x00000004 +#define POWER_ACTION_LIGHTEST_FIRST 0x10000000 +#define POWER_ACTION_LOCK_CONSOLE 0x20000000 +#define POWER_ACTION_DISABLE_WAKES 0x40000000 +#define POWER_ACTION_CRITICAL 0x80000000 + +/* POWER_ACTION_POLICY.EventCode constants */ +#define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001 +#define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002 +#define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004 +#define POWER_USER_NOTIFY_BUTTON 0x00000008 +#define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 +#define POWER_FORCE_TRIGGER_RESET 0x80000000 + +#define DISCHARGE_POLICY_CRITICAL 0 +#define DISCHARGE_POLICY_LOW 1 +#define NUM_DISCHARGE_POLICIES 4 + +#define PO_THROTTLE_NONE 0 +#define PO_THROTTLE_CONSTANT 1 +#define PO_THROTTLE_DEGRADE 2 +#define PO_THROTTLE_ADAPTIVE 3 +#define PO_THROTTLE_MAXIMUM 4 + +typedef struct _SYSTEM_POWER_LEVEL { + BOOLEAN Enable; + UCHAR Spare[3]; + ULONG BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; +} SYSTEM_POWER_LEVEL, *PSYSTEM_POWER_LEVEL; + +typedef 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 Spare2[2]; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + ULONG WinLogonFlags; + ULONG Spare3; + ULONG DozeS4Timeout; + ULONG BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES]; + ULONG VideoTimeout; + BOOLEAN VideoDimDisplay; + ULONG VideoReserved[3]; + ULONG SpindownTimeout; + BOOLEAN OptimizeForPower; + UCHAR FanThrottleTolerance; + UCHAR ForcedThrottle; + UCHAR MinThrottle; + POWER_ACTION_POLICY OverThrottled; +} SYSTEM_POWER_POLICY, *PSYSTEM_POWER_POLICY; + +typedef 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 spare2[4]; + BOOLEAN DiskSpinDown; + UCHAR spare3[8]; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE BatteryScale[3]; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; +} SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES; + +typedef struct _SYSTEM_BATTERY_STATE { + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN Spare1[4]; + ULONG MaxCapacity; + ULONG RemainingCapacity; + ULONG Rate; + ULONG EstimatedTime; + ULONG DefaultAlert1; + ULONG DefaultAlert2; +} SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE; + +typedef 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 +} POWER_INFORMATION_LEVEL; + +#if (_WIN32_WINNT >= 0x0500) +typedef LONG (WINAPI *PVECTORED_EXCEPTION_HANDLER)(PEXCEPTION_POINTERS); +#endif +#if 1 /* (WIN32_WINNT >= 0x0500) */ +typedef struct _SYSTEM_POWER_INFORMATION { + ULONG MaxIdlenessAllowed; + ULONG Idleness; + ULONG TimeRemaining; + UCHAR CoolingMode; +} SYSTEM_POWER_INFORMATION,*PSYSTEM_POWER_INFORMATION; +#endif + +#if (_WIN32_WINNT >= 0x0501) +typedef enum _HEAP_INFORMATION_CLASS { + HeapCompatibilityInformation +} HEAP_INFORMATION_CLASS; +typedef enum _ACTIVATION_CONTEXT_INFO_CLASS { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation, + AssemblyDetailedInformationInActivationContext, + FileInformationInAssemblyOfAssemblyInActivationContext +} ACTIVATION_CONTEXT_INFO_CLASS; +typedef 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; +} ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; +typedef const ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; +typedef 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; +} ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION; +typedef const ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION; +typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX { + ULONG ulAssemblyIndex; + ULONG ulFileIndexInAssembly; +} ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX; +typedef const ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX; +typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; +} ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION; +typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION; +#endif /* (WIN32_WINNT >= 0x0501) */ + +typedef struct _PROCESSOR_POWER_POLICY_INFO { + ULONG TimeCheck; + ULONG DemoteLimit; + ULONG PromoteLimit; + UCHAR DemotePercent; + UCHAR PromotePercent; + UCHAR Spare[2]; + ULONG AllowDemotion : 1; + ULONG AllowPromotion : 1; + ULONG Reserved : 30; +} PROCESSOR_POWER_POLICY_INFO, *PPROCESSOR_POWER_POLICY_INFO; +typedef struct _PROCESSOR_POWER_POLICY { + ULONG Revision; + UCHAR DynamicThrottle; + UCHAR Spare[3]; + ULONG Reserved; + ULONG PolicyCount; + PROCESSOR_POWER_POLICY_INFO Policy[3]; +} PROCESSOR_POWER_POLICY, *PPROCESSOR_POWER_POLICY; +typedef struct _ADMINISTRATOR_POWER_POLICY { + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + ULONG MinVideoTimeout; + ULONG MaxVideoTimeout; + ULONG MinSpindownTimeout; + ULONG MaxSpindownTimeout; +} ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY; +#include +#endif /* WINVER >= 0x0500 */ + +typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); + +#ifdef UNICODE +typedef OSVERSIONINFOW OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO; +typedef OSVERSIONINFOEXW OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX; +#else +typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO; +typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX; +#endif + +#if (WIN32_WINNT >= 0x0500) +ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE); +#endif + +#if defined(__GNUC__) + +PVOID GetCurrentFiber(void); +extern __inline__ PVOID GetCurrentFiber(void) +{ + void* ret; + __asm__ __volatile__ ( + "movl %%fs:0x10,%0" + : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */ + ); + return ret; +} + +PVOID GetFiberData(void); +extern __inline__ PVOID GetFiberData(void) +{ + void* ret; + __asm__ __volatile__ ( + "movl %%fs:0x10,%0\n" + "movl (%0),%0" + : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */ + ); + return ret; +} + +static __inline__ struct _TEB * NtCurrentTeb(void) +{ + struct _TEB *ret; + + __asm__ __volatile__ ( + "movl %%fs:0x18, %0\n" + : "=r" (ret) + : /* no inputs */ + ); + + return ret; +} + +#else + +extern PVOID GetCurrentFiber(void); +#pragma aux GetCurrentFiber = \ + "mov eax, dword ptr fs:0x10" \ + value [eax] \ + modify [eax]; + +extern PVOID GetFiberData(void); +#pragma aux GetFiberData = \ + "mov eax, dword ptr fs:0x10" \ + "mov eax, [eax]" \ + value [eax] \ + modify [eax]; + +#endif /* __GNUC__ */ + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winperf.h b/reactos/w32api/include/winperf.h new file mode 100644 index 00000000000..75e29a8ec72 --- /dev/null +++ b/reactos/w32api/include/winperf.h @@ -0,0 +1,139 @@ +#ifndef _WINPERF_H +#define _WINPERF_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define PERF_DATA_VERSION 1 +#define PERF_DATA_REVISION 1 +#define PERF_NO_INSTANCES -1 +#define PERF_SIZE_DWORD 0 +#define PERF_SIZE_LARGE 256 +#define PERF_SIZE_ZERO 512 +#define PERF_SIZE_VARIABLE_LEN 768 +#define PERF_TYPE_NUMBER 0 +#define PERF_TYPE_COUNTER 1024 +#define PERF_TYPE_TEXT 2048 +#define PERF_TYPE_ZERO 0xC00 +#define PERF_NUMBER_HEX 0 +#define PERF_NUMBER_DECIMAL 0x10000 +#define PERF_NUMBER_DEC_1000 0x20000 +#define PERF_COUNTER_VALUE 0 +#define PERF_COUNTER_RATE 0x10000 +#define PERF_COUNTER_FRACTION 0x20000 +#define PERF_COUNTER_BASE 0x30000 +#define PERF_COUNTER_ELAPSED 0x40000 +#define PERF_COUNTER_QUEUELEN 0x50000 +#define PERF_COUNTER_HISTOGRAM 0x60000 +#define PERF_TEXT_UNICODE 0 +#define PERF_TEXT_ASCII 0x10000 +#define PERF_TIMER_TICK 0 +#define PERF_TIMER_100NS 0x100000 +#define PERF_OBJECT_TIMER 0x200000 +#define PERF_DELTA_COUNTER 0x400000 +#define PERF_DELTA_BASE 0x800000 +#define PERF_INVERSE_COUNTER 0x1000000 +#define PERF_MULTI_COUNTER 0x2000000 +#define PERF_DISPLAY_NO_SUFFIX 0 +#define PERF_DISPLAY_PER_SEC 0x10000000 +#define PERF_DISPLAY_PERCENT 0x20000000 +#define PERF_DISPLAY_SECONDS 0x30000000 +#define PERF_DISPLAY_NOSHOW 0x40000000 +#define PERF_COUNTER_HISTOGRAM_TYPE 0x80000000 +#define PERF_NO_UNIQUE_ID (-1) +#define PERF_DETAIL_NOVICE 100 +#define PERF_DETAIL_ADVANCED 200 +#define PERF_DETAIL_EXPERT 300 +#define PERF_DETAIL_WIZARD 400 +#define PERF_COUNTER_COUNTER (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC) +#define PERF_COUNTER_TIMER (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT) +#define PERF_COUNTER_QUEUELEN_TYPE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_BULK_COUNT (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC) +#define PERF_COUNTER_TEXT (PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_RAWCOUNT (PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_LARGE_RAWCOUNT (PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_RAWCOUNT_HEX (PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_LARGE_RAWCOUNT_HEX (PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX) +#define PERF_SAMPLE_FRACTION (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT) +#define PERF_SAMPLE_COUNTER (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX) +#define PERF_COUNTER_NODATA (PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW) +#define 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) +#define PERF_SAMPLE_BASE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1) +#define PERF_AVERAGE_TIMER (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS) +#define PERF_AVERAGE_BASE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2) +#define PERF_AVERAGE_BULK (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW) +#define PERF_100NSEC_TIMER (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT) +#define 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) +#define 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) +#define 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) +#define PERF_COUNTER_MULTI_BASE (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW) +#define 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) +#define 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) +#define PERF_RAW_FRACTION (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT) +#define PERF_RAW_BASE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3) +#define PERF_ELAPSED_TIME (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS) +typedef struct _PERF_DATA_BLOCK { + WCHAR Signature[4]; + 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; +} PERF_DATA_BLOCK, *PPERF_DATA_BLOCK; +typedef 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; +} PERF_OBJECT_TYPE, *PPERF_OBJECT_TYPE; +typedef struct _PERF_COUNTER_DEFINITION { + DWORD ByteLength; + DWORD CounterNameTitleIndex; + LPWSTR CounterNameTitle; + DWORD CounterHelpTitleIndex; + LPWSTR CounterHelpTitle; + LONG DefaultScale; + DWORD DetailLevel; + DWORD CounterType; + DWORD CounterSize; + DWORD CounterOffset; +} PERF_COUNTER_DEFINITION,*PPERF_COUNTER_DEFINITION; +typedef struct _PERF_INSTANCE_DEFINITION { + DWORD ByteLength; + DWORD ParentObjectTitleIndex; + DWORD ParentObjectInstance; + LONG UniqueID; + DWORD NameOffset; + DWORD NameLength; +} PERF_INSTANCE_DEFINITION,*PPERF_INSTANCE_DEFINITION; +typedef struct _PERF_COUNTER_BLOCK { + DWORD ByteLength; +} PERF_COUNTER_BLOCK, *PPERF_COUNTER_BLOCK; +typedef DWORD(CALLBACK PM_OPEN_PROC)(LPWSTR); +typedef DWORD(CALLBACK PM_COLLECT_PROC)(LPWSTR,PVOID*,PDWORD,PDWORD); +typedef DWORD(CALLBACK PM_CLOSE_PROC)(void); +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winreg.h b/reactos/w32api/include/winreg.h new file mode 100644 index 00000000000..c82adf5d72b --- /dev/null +++ b/reactos/w32api/include/winreg.h @@ -0,0 +1,161 @@ +#ifndef _WINREG_H +#define _WINREG_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define HKEY_CLASSES_ROOT ((HKEY)0x80000000) +#define HKEY_CURRENT_USER ((HKEY)0x80000001) +#define HKEY_LOCAL_MACHINE ((HKEY)0x80000002) +#define HKEY_USERS ((HKEY)0x80000003) +#define HKEY_PERFORMANCE_DATA ((HKEY)0x80000004) +#define HKEY_CURRENT_CONFIG ((HKEY)0x80000005) +#define HKEY_DYN_DATA ((HKEY)0x80000006) +#define REG_OPTION_VOLATILE 1 +#define REG_OPTION_NON_VOLATILE 0 +#define REG_CREATED_NEW_KEY 1 +#define REG_OPENED_EXISTING_KEY 2 +#define REG_NONE 0 +#define REG_SZ 1 +#define REG_EXPAND_SZ 2 +#define REG_BINARY 3 +#define REG_DWORD_LITTLE_ENDIAN 4 +#define REG_DWORD 4 +#define REG_DWORD_BIG_ENDIAN 5 +#define REG_LINK 6 +#define REG_MULTI_SZ 7 +#define REG_RESOURCE_LIST 8 +#define REG_FULL_RESOURCE_DESCRIPTOR 9 +#define REG_RESOURCE_REQUIREMENTS_LIST 10 +#define REG_QWORD_LITTLE_ENDIAN 11 +#define REG_QWORD 11 +#define REG_NOTIFY_CHANGE_NAME 1 +#define REG_NOTIFY_CHANGE_ATTRIBUTES 2 +#define REG_NOTIFY_CHANGE_LAST_SET 4 +#define REG_NOTIFY_CHANGE_SECURITY 8 + +#ifndef RC_INVOKED +typedef ACCESS_MASK REGSAM; +typedef struct value_entA { + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} VALENTA,*PVALENTA; +typedef struct value_entW { + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} VALENTW,*PVALENTW; +BOOL WINAPI AbortSystemShutdownA(LPCSTR); +BOOL WINAPI AbortSystemShutdownW(LPCWSTR); +BOOL WINAPI InitiateSystemShutdownA(LPSTR,LPSTR,DWORD,BOOL,BOOL); +BOOL WINAPI InitiateSystemShutdownW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL); +LONG WINAPI RegCloseKey(HKEY); +LONG WINAPI RegConnectRegistryA(LPCSTR,HKEY,PHKEY); +LONG WINAPI RegConnectRegistryW(LPCWSTR,HKEY,PHKEY); +LONG WINAPI RegCreateKeyA(HKEY,LPCSTR,PHKEY); +LONG WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD); +LONG WINAPI RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD); +LONG WINAPI RegCreateKeyW(HKEY,LPCWSTR,PHKEY); +LONG WINAPI RegDeleteKeyA(HKEY,LPCSTR); +LONG WINAPI RegDeleteKeyW(HKEY,LPCWSTR); +LONG WINAPI RegDeleteValueA(HKEY,LPCSTR); +LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR); +LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD); +LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD); +LONG WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,LPSTR,PDWORD,PFILETIME); +LONG WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,LPWSTR,PDWORD,PFILETIME); +LONG WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD); +LONG WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD); +LONG WINAPI RegFlushKey(HKEY); +LONG WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PDWORD); +LONG WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR); +LONG WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR); +LONG WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL); +LONG WINAPI RegOpenKeyA(HKEY,LPCSTR,PHKEY); +LONG WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY); +LONG WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY); +LONG WINAPI RegOpenKeyW(HKEY,LPCWSTR,PHKEY); +LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME); +LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME); +LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD); +LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,LPDWORD); +LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG); +LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +LONG WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,PLONG); +LONG WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR); +LONG WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR); +LONG WINAPI RegRestoreKeyA(HKEY,LPCSTR,DWORD); +LONG WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD); +LONG WINAPI RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES); +LONG WINAPI RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES); +LONG WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +LONG WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD); +LONG WINAPI RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE*,DWORD); +LONG WINAPI RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE*,DWORD); +LONG WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD); +LONG WINAPI RegUnLoadKeyA(HKEY,LPCSTR); +LONG WINAPI RegUnLoadKeyW(HKEY,LPCWSTR); + +#ifdef UNICODE +typedef VALENTW VALENT,*PVALENT; +#define AbortSystemShutdown AbortSystemShutdownW +#define InitiateSystemShutdown InitiateSystemShutdownW +#define RegConnectRegistry RegConnectRegistryW +#define RegCreateKey RegCreateKeyW +#define RegCreateKeyEx RegCreateKeyExW +#define RegDeleteKey RegDeleteKeyW +#define RegDeleteValue RegDeleteValueW +#define RegEnumKey RegEnumKeyW +#define RegEnumKeyEx RegEnumKeyExW +#define RegEnumValue RegEnumValueW +#define RegLoadKey RegLoadKeyW +#define RegOpenKey RegOpenKeyW +#define RegOpenKeyEx RegOpenKeyExW +#define RegQueryInfoKey RegQueryInfoKeyW +#define RegQueryMultipleValues RegQueryMultipleValuesW +#define RegQueryValue RegQueryValueW +#define RegQueryValueEx RegQueryValueExW +#define RegReplaceKey RegReplaceKeyW +#define RegRestoreKey RegRestoreKeyW +#define RegSaveKey RegSaveKeyW +#define RegSetValue RegSetValueW +#define RegSetValueEx RegSetValueExW +#define RegUnLoadKey RegUnLoadKeyW +#else +typedef VALENTA VALENT,*PVALENT; +#define AbortSystemShutdown AbortSystemShutdownA +#define InitiateSystemShutdown InitiateSystemShutdownA +#define RegConnectRegistry RegConnectRegistryA +#define RegCreateKey RegCreateKeyA +#define RegCreateKeyEx RegCreateKeyExA +#define RegDeleteKey RegDeleteKeyA +#define RegDeleteValue RegDeleteValueA +#define RegEnumKey RegEnumKeyA +#define RegEnumKeyEx RegEnumKeyExA +#define RegEnumValue RegEnumValueA +#define RegLoadKey RegLoadKeyA +#define RegOpenKey RegOpenKeyA +#define RegOpenKeyEx RegOpenKeyExA +#define RegQueryInfoKey RegQueryInfoKeyA +#define RegQueryMultipleValues RegQueryMultipleValuesA +#define RegQueryValue RegQueryValueA +#define RegQueryValueEx RegQueryValueExA +#define RegReplaceKey RegReplaceKeyA +#define RegRestoreKey RegRestoreKeyA +#define RegSaveKey RegSaveKeyA +#define RegSetValue RegSetValueA +#define RegSetValueEx RegSetValueExA +#define RegUnLoadKey RegUnLoadKeyA +#endif +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winresrc.h b/reactos/w32api/include/winresrc.h new file mode 100644 index 00000000000..79a5d8e03e4 --- /dev/null +++ b/reactos/w32api/include/winresrc.h @@ -0,0 +1,14 @@ +#ifndef _WINRESRC_H +#define _WINRESRC_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define WIN32_LEAN_AND_MEAN +#include +#include +#include +#include +#include +#include +#endif diff --git a/reactos/w32api/include/winsnmp.h b/reactos/w32api/include/winsnmp.h new file mode 100644 index 00000000000..bfed3864c19 --- /dev/null +++ b/reactos/w32api/include/winsnmp.h @@ -0,0 +1,329 @@ +/* + winsnmp.h - Header file for the Windows SNMP API + + Written by Filip Navara + + References (2003-08-25): + Windows SNMP + http://www.winsnmp.com/docs/winsnmp.doc + + WinSNMP v2.0 Addendum + http://www.winsnmp.com/docs/winsnmp2.txt + + WinSNMP v3.0 API Addendum + http://www.winsnmp.com/docs/winsnmp3.htm + + WinSNMP Reference + http://msdn.microsoft.com/library/en-us/snmp/snmp/winsnmp_api_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. +*/ + +#ifndef _WINSNMP_H +#define _WINSNMP_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifndef _WINDOWS_H +#include +#endif + +#include + +#ifndef WINSNMPAPI +#define WINSNMPAPI WINAPI +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAXOBJIDSIZE 128 +#define MAXOBJIDSTRSIZE 1408 +#define MAXVENDORINFO 32 +#ifndef _SNMP_ASN_DEFINED +#define _SNMP_ASN_DEFINED +#define ASN_UNIVERSAL 0x00 +#define ASN_PRIMITIVE 0x00 +#define ASN_CONSTRUCTOR 0x20 +#define ASN_APPLICATION 0x40 +#define ASN_CONTEXT 0x80 +#define ASN_PRIVATE 0xC0 +#define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0) +#define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 1) +#define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 2) +#define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 3) +#define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 4) +#define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 4) +#define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 6) +#define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 7) +#define SNMP_PDU_REPORT (ASN_CONTEXT | ASN_CONSTRUCTOR | 8) +#endif /* _SNMP_ASN_DEFINED */ +#define SNMP_SYNTAX_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10) +#define SNMP_SYNTAX_INT (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02) +#define SNMP_SYNTAX_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03) +#define SNMP_SYNTAX_OCTETS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04) +#define SNMP_SYNTAX_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05) +#define SNMP_SYNTAX_OID (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06) +#define SNMP_SYNTAX_IPADDR (ASN_APPLICATION | ASN_PRIMITIVE | 0x00) +#define SNMP_SYNTAX_CNTR32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01) +#define SNMP_SYNTAX_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02) +#define SNMP_SYNTAX_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03) +#define SNMP_SYNTAX_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04) +#define SNMP_SYNTAX_NSAPADDR (ASN_APPLICATION | ASN_PRIMITIVE | 0x05) +#define SNMP_SYNTAX_CNTR64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06) +#define SNMP_SYNTAX_UINT32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07) +#define SNMP_SYNTAX_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00) +#define SNMP_SYNTAX_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01) +#define SNMP_SYNTAX_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02) +#define SNMP_SYNTAX_INT32 SNMP_SYNTAX_INT +#define SNMP_TRAP_COLDSTART 0 +#define SNMP_TRAP_WARMSTART 1 +#define SNMP_TRAP_LINKDOWN 2 +#define SNMP_TRAP_LINKUP 3 +#define SNMP_TRAP_AUTHFAIL 4 +#define SNMP_TRAP_EGPNEIGHBORLOSS 5 +#define SNMP_TRAP_ENTERPRISESPECIFIC 6 +#define SNMP_ERROR_NOERROR 0 +#define SNMP_ERROR_TOOBIG 1 +#define SNMP_ERROR_NOSUCHNAME 2 +#define SNMP_ERROR_BADVALUE 3 +#define SNMP_ERROR_READONLY 4 +#define SNMP_ERROR_GENERR 5 +#define SNMP_ERROR_NOACCESS 6 +#define SNMP_ERROR_WRONGTYPE 7 +#define SNMP_ERROR_WRONGLENGTH 8 +#define SNMP_ERROR_WRONGENCODING 9 +#define SNMP_ERROR_WRONGVALUE 10 +#define SNMP_ERROR_NOCREATION 11 +#define SNMP_ERROR_INCONSISTENTVALUE 12 +#define SNMP_ERROR_RESOURCEUNAVAILABLE 13 +#define SNMP_ERROR_COMMITFAILED 14 +#define SNMP_ERROR_UNDOFAILED 15 +#define SNMP_ERROR_AUTHORIZATIONERROR 16 +#define SNMP_ERROR_NOTWRITABLE 17 +#define SNMP_ERROR_INCONSISTENTNAME 18 +#define SNMP_SEC_MODEL_V1 1 +#define SNMP_SEC_MODEL_V2 2 +#define SNMP_SEC_MODEL_USM 3 +#define SNMP_NOAUTH_NOPRIV 0 +#define SNMP_AUTH_NOPRIV 1 +#define SNMP_AUTH_PRIV 3 +#define SNMP_USM_NO_AUTH_PROTOCOL 1 +#define SNMP_USM_HMACMD5_AUTH_PROTOCOL 2 +#define SNMP_USM_HMACSHA_AUTH_PROTOCOL 3 +#define SNMP_USM_NO_PRIV_PROTOCOL 1 +#define SNMP_USM_DES_PRIV_PROTOCOL 2 +#define SNMPAPI_TRANSLATED 0 +#define SNMPAPI_UNTRANSLATED_V1 1 +#define SNMPAPI_UNTRANSLATED_V2 2 +#define SNMPAPI_UNTRANSLATED_V3 3 +#define SNMPAPI_OFF 0 +#define SNMPAPI_ON 1 +#define SNMPAPI_FAILURE 0 +#define SNMPAPI_SUCCESS 1 +#define SNMPAPI_NO_SUPPORT 0 +#define SNMPAPI_V1_SUPPORT 1 +#define SNMPAPI_V2_SUPPORT 2 +#define SNMPAPI_M2M_SUPPORT 3 +#define SNMPAPI_V3_SUPPORT 3 +#define SNMPAPI_ALLOC_ERROR 2 +#define SNMPAPI_CONTEXT_INVALID 3 +#define SNMPAPI_CONTEXT_UNKNOWN 4 +#define SNMPAPI_ENTITY_INVALID 5 +#define SNMPAPI_ENTITY_UNKNOWN 6 +#define SNMPAPI_INDEX_INVALID 7 +#define SNMPAPI_NOOP 8 +#define SNMPAPI_OID_INVALID 9 +#define SNMPAPI_OPERATION_INVALID 10 +#define SNMPAPI_OUTPUT_TRUNCATED 11 +#define SNMPAPI_PDU_INVALID 12 +#define SNMPAPI_SESSION_INVALID 13 +#define SNMPAPI_SYNTAX_INVALID 14 +#define SNMPAPI_VBL_INVALID 15 +#define SNMPAPI_MODE_INVALID 16 +#define SNMPAPI_SIZE_INVALID 17 +#define SNMPAPI_NOT_INITIALIZED 18 +#define SNMPAPI_MESSAGE_INVALID 19 +#define SNMPAPI_HWND_INVALID 20 +#define SNMPAPI_ENGINE_INVALID 30 +#define SNMPAPI_ENGINE_DISCOVERY_FAILED 31 +#define SNMPAPI_OTHER_ERROR 99 +#define SNMPAPI_TL_NOT_INITIALIZED 100 +#define SNMPAPI_TL_NOT_SUPPORTED 101 +#define SNMPAPI_TL_NOT_AVAILABLE 102 +#define SNMPAPI_TL_RESOURCE_ERROR 103 +#define SNMPAPI_TL_UNDELIVERABLE 104 +#define SNMPAPI_TL_SRC_INVALID 105 +#define SNMPAPI_TL_INVALID_PARAM 106 +#define SNMPAPI_TL_IN_USE 107 +#define SNMPAPI_TL_TIMEOUT 108 +#define SNMPAPI_TL_PDU_TOO_BIG 109 +#define SNMPAPI_TL_OTHER 199 +#define SNMPAPI_RPT_INVALIDMSG 200 +#define SNMPAPI_RPT_INASNPARSEERR 201 +#define SNMPAPI_RPT_UNKNOWNSECMODEL 202 +#define SNMPAPI_RPT_UNKNOWNENGINEID 203 +#define SNMPAPI_RPT_UNSUPPSECLEVEL 204 +#define SNMPAPI_RPT_UNKNOWNUSERNAME 205 +#define SNMPAPI_RPT_WRONGDIGEST 206 +#define SNMPAPI_RPT_NOTINTIMEWINDOW 207 +#define SNMPAPI_RPT_DECRYPTIONERROR 208 +#define SNMPAPI_RPT_OTHER 299 + +#ifndef RC_INVOKED + +typedef HANDLE HSNMP_SESSION, *LPHSNMP_SESSION; +typedef HANDLE HSNMP_CONTEXT, *LPHSNMP_CONTEXT; +typedef HANDLE HSNMP_VBL, *LPHSNMP_VBL; +typedef HANDLE HSNMP_PDU, *LPHSNMP_PDU; +typedef HANDLE HSNMP_ENTITY, *LPHSNMP_ENTITY; +typedef unsigned char smiBYTE, *smiLPBYTE; +typedef signed int smiINT, *smiLPINT; +typedef signed int smiINT32, *smiLPINT32; +typedef unsigned int smiUINT32, *smiLPUINT32; +typedef smiUINT32 smiCNTR32, *smiLPCNTR32; +typedef smiUINT32 smiGAUGE32, *smiLPGAUGE32; +typedef smiUINT32 smiTIMETICKS, *smiLPTIMETICKS; +typedef smiUINT32 SNMPAPI_STATUS; +typedef struct { + smiUINT32 len; + smiLPBYTE ptr; +} smiOCTETS, *smiLPOCTETS, smiOPAQUE, *smiLPOPAQUE, smiBITS, *smiLPBITS, smiIPADDR, *smiLPIPADDR, smiNSAPADDR, *smiLPNSAPADDR; +typedef const smiLPOCTETS smiLPCOCTETS; +typedef struct { + smiUINT32 len; + smiLPUINT32 ptr; +} smiOID, *smiLPOID; +typedef const smiLPOID smiLPCOID; +typedef struct { + smiUINT32 hipart; + smiUINT32 lopart; +} smiCNTR64, *smiLPCNTR64; +typedef struct { + smiUINT32 syntax; + union { + smiINT sNumber; + smiUINT32 uNumber; + smiCNTR64 hNumber; + smiOCTETS string; + smiOID oid; + smiBYTE empty; + } value; +} smiVALUE, *smiLPVALUE; +typedef const smiLPVALUE smiLPCVALUE; +typedef struct { + CHAR vendorName[MAXVENDORINFO*2]; + CHAR vendorContact[MAXVENDORINFO*2]; + CHAR vendorVersionId[MAXVENDORINFO]; + CHAR vendorVersionDate[MAXVENDORINFO]; + smiUINT32 vendorEnterprise; +} smiVENDORINFO, FAR *smiLPVENDORINFO; +typedef SNMPAPI_STATUS (CALLBACK *SNMPAPI_CALLBACK)(HSNMP_SESSION,HWND,UINT,WPARAM,LPARAM,LPVOID); +typedef struct +{ + HSNMP_ENTITY hEntity; + HSNMP_SESSION hSession; + smiUINT32 nTranslateMode; + smiUINT32 nSnmpVersion; + smiOCTETS dFriendlyName; + smiUINT32 nAddressFamily; + smiOCTETS dAddressString; + smiUINT32 nRequestPort; + smiUINT32 nNotificationPort; + smiUINT32 nMaxMsgSize; + smiOCTETS dEngineID; + smiUINT32 nEngineBoots; + smiUINT32 nEngineTime; + smiUINT32 nEngineSeconds; + smiUINT32 nRetransmitMode; + smiTIMETICKS nPolicyTimeout; + smiUINT32 nPolicyRetry; + smiTIMETICKS nActualTimeout; + smiUINT32 nActualRetry; +} smiENTITYINFO, *smiLPENTITYINFO; +typedef struct +{ + HSNMP_CONTEXT hContext; + HSNMP_SESSION hSession; + smiUINT32 nTranslateMode; + smiUINT32 nSnmpVersion; + smiOCTETS dFriendlyName; + smiOCTETS dContextEngineID; + smiOCTETS dContextName; + smiOCTETS dSecurityName; + smiUINT32 nSecurityModel; + smiUINT32 nSecurityLevel; + smiUINT32 nSecurityAuthProtocol; + smiOCTETS dSecurityAuthKey; + smiUINT32 nSecurityPrivProtocol; + smiOCTETS dSecurityPrivKey; +} smiCONTEXTINFO, *smiLPCONTEXTINFO; + +SNMPAPI_STATUS WINSNMPAPI SnmpCancelMsg(HSNMP_SESSION,smiINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpCleanup(VOID); +SNMPAPI_STATUS WINSNMPAPI SnmpClose(HSNMP_SESSION); +SNMPAPI_STATUS WINSNMPAPI SnmpContextToStr(HSNMP_CONTEXT,smiLPOCTETS); +SNMPAPI_STATUS WINSNMPAPI SnmpCountVbl(HSNMP_VBL); +HSNMP_PDU WINSNMPAPI SnmpCreatePdu(HSNMP_SESSION,smiINT,smiINT32,smiINT,smiINT,HSNMP_VBL); +HSNMP_SESSION WINSNMPAPI SnmpCreateSession(HWND,UINT,SNMPAPI_CALLBACK,LPVOID); +HSNMP_VBL WINSNMPAPI SnmpCreateVbl(HSNMP_SESSION,smiLPCOID,smiLPCVALUE); +SNMPAPI_STATUS WINSNMPAPI SnmpDecodeMsg(HSNMP_SESSION,LPHSNMP_ENTITY,LPHSNMP_ENTITY,LPHSNMP_CONTEXT,LPHSNMP_PDU,smiLPCOCTETS); +SNMPAPI_STATUS WINSNMPAPI SnmpDeleteVb(HSNMP_VBL,smiUINT32); +HSNMP_PDU WINSNMPAPI SnmpDuplicatePdu(HSNMP_SESSION,HSNMP_PDU); +HSNMP_VBL WINSNMPAPI SnmpDuplicateVbl(HSNMP_SESSION,HSNMP_VBL); +SNMPAPI_STATUS WINSNMPAPI SnmpEncodeMsg(HSNMP_SESSION,HSNMP_ENTITY,HSNMP_ENTITY,HSNMP_CONTEXT,HSNMP_PDU,smiLPOCTETS); +SNMPAPI_STATUS WINSNMPAPI SnmpEntityToStr(HSNMP_ENTITY,smiUINT32,LPSTR); +SNMPAPI_STATUS WINSNMPAPI SnmpFreeContext(HSNMP_CONTEXT); +SNMPAPI_STATUS WINSNMPAPI SnmpFreeDescriptor(smiUINT32,smiLPOPAQUE); +SNMPAPI_STATUS WINSNMPAPI SnmpFreeEntity(HSNMP_ENTITY); +SNMPAPI_STATUS WINSNMPAPI SnmpFreePdu(HSNMP_PDU); +SNMPAPI_STATUS WINSNMPAPI SnmpFreeVbl(HSNMP_VBL); +SNMPAPI_STATUS WINSNMPAPI SnmpGetLastError(HSNMP_SESSION); +SNMPAPI_STATUS WINSNMPAPI SnmpGetPduData(HSNMP_PDU,smiLPINT,smiLPINT32,smiLPINT,smiLPINT,LPHSNMP_VBL); +SNMPAPI_STATUS WINSNMPAPI SnmpGetRetransmitMode(smiLPUINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpGetRetry(HSNMP_ENTITY,smiLPUINT32,smiLPUINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpGetTimeout(HSNMP_ENTITY,smiLPTIMETICKS,smiLPTIMETICKS); +SNMPAPI_STATUS WINSNMPAPI SnmpGetTranslateMode(smiLPUINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpGetVb(HSNMP_VBL,smiUINT32,smiLPOID,smiLPVALUE); +SNMPAPI_STATUS WINSNMPAPI SnmpGetVendorInfo(smiLPVENDORINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpListen(HSNMP_ENTITY,SNMPAPI_STATUS); +SNMPAPI_STATUS WINSNMPAPI SnmpOidCompare(smiLPCOID,smiLPCOID,smiUINT32,smiLPINT); +SNMPAPI_STATUS WINSNMPAPI SnmpOidCopy(smiLPCOID,smiLPOID); +SNMPAPI_STATUS WINSNMPAPI SnmpOidToStr(smiLPCOID,smiUINT32,LPSTR); +HSNMP_SESSION WINSNMPAPI SnmpOpen(HWND,UINT); +SNMPAPI_STATUS WINSNMPAPI SnmpRecvMsg(HSNMP_SESSION,LPHSNMP_ENTITY,LPHSNMP_ENTITY,LPHSNMP_CONTEXT,LPHSNMP_PDU); +SNMPAPI_STATUS WINSNMPAPI SnmpRegister(HSNMP_SESSION,HSNMP_ENTITY,HSNMP_ENTITY,HSNMP_CONTEXT,smiLPCOID,smiUINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpSendMsg(HSNMP_SESSION,HSNMP_ENTITY,HSNMP_ENTITY,HSNMP_CONTEXT,HSNMP_PDU); +SNMPAPI_STATUS WINSNMPAPI SnmpSetPduData(HSNMP_PDU,const smiINT *,const smiINT32 *,const smiINT *,const smiINT *,const HSNMP_VBL *); +SNMPAPI_STATUS WINSNMPAPI SnmpSetPort(HSNMP_ENTITY,UINT); +SNMPAPI_STATUS WINSNMPAPI SnmpSetRetransmitMode(smiUINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpSetRetry(HSNMP_ENTITY,smiUINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpSetTimeout(HSNMP_ENTITY,smiTIMETICKS); +SNMPAPI_STATUS WINSNMPAPI SnmpSetTranslateMode(smiUINT32); +SNMPAPI_STATUS WINSNMPAPI SnmpSetVb(HSNMP_VBL,smiUINT32,smiLPCOID,smiLPCVALUE); +SNMPAPI_STATUS WINSNMPAPI SnmpStartup(smiLPUINT32,smiLPUINT32,smiLPUINT32,smiLPUINT32,smiLPUINT32); +HSNMP_CONTEXT WINSNMPAPI SnmpStrToContext(HSNMP_SESSION,smiLPCOCTETS); +HSNMP_ENTITY WINSNMPAPI SnmpStrToEntity(HSNMP_SESSION,LPCSTR); +SNMPAPI_STATUS WINSNMPAPI SnmpStrToOid(LPCSTR,smiLPOID); +/* Added in WinSNMP v3.0, not present in some (all?) versions of MS wsnmp32.dll */ +HSNMP_ENTITY WINSNMPAPI SnmpCreateEntity(HSNMP_SESSION,smiLPENTITYINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpGetEntityInfo(HSNMP_ENTITY,smiLPENTITYINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpSetEntityInfo(HSNMP_ENTITY,smiLPENTITYINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpFreeEntityInfo(smiLPENTITYINFO); +HSNMP_CONTEXT WINSNMPAPI SnmpCreateContext(HSNMP_SESSION,smiLPCONTEXTINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpGetContextInfo(HSNMP_CONTEXT,smiLPCONTEXTINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpSetContextInfo(HSNMP_CONTEXT,smiLPCONTEXTINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpFreeContextInfo(smiLPCONTEXTINFO); +SNMPAPI_STATUS WINSNMPAPI SnmpPasswordToKey(smiLPOCTETS,smiINT32,smiLPOCTETS); + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#include +#endif diff --git a/reactos/w32api/include/winsock.h b/reactos/w32api/include/winsock.h new file mode 100644 index 00000000000..36eb713e496 --- /dev/null +++ b/reactos/w32api/include/winsock.h @@ -0,0 +1,535 @@ +/* + + Definitions for winsock 1.1 + + Portions Copyright (c) 1980, 1983, 1988, 1993 + The Regents of the University of California. All rights reserved. + + Portions Copyright (c) 1993 by Digital Equipment Corporation. + */ + +#ifndef _WINSOCK_H +#define _WINSOCK_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define _GNU_H_WINDOWS32_SOCKETS +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined ( _BSDTYPES_DEFINED ) +/* also defined in gmon.h and in cygwin's sys/types */ +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; +#define _BSDTYPES_DEFINED +#endif /* !defined _BSDTYPES_DEFINED */ +typedef u_int SOCKET; +#ifndef FD_SETSIZE +#define FD_SETSIZE 64 +#endif + +/* shutdown() how types */ +#define SD_RECEIVE 0x00 +#define SD_SEND 0x01 +#define SD_BOTH 0x02 + +#ifndef _SYS_TYPES_FD_SET +/* fd_set may have be defined by the newlib + * if __USE_W32_SOCKETS not defined. + */ +#ifdef fd_set +#undef fd_set +#endif +typedef struct fd_set { + u_int fd_count; + SOCKET fd_array[FD_SETSIZE]; +} fd_set; +int PASCAL __WSAFDIsSet(SOCKET,fd_set*); +#ifndef FD_CLR +#define FD_CLR(fd,set) do { u_int __i;\ +for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ + if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ + while (__i < ((fd_set *)(set))->fd_count-1) {\ + ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\ + __i++;\ + }\ + ((fd_set*)(set))->fd_count--;\ + break;\ + }\ +}\ +} while (0) +#endif +#ifndef FD_SET +#define FD_SET(fd, set) do { \ + if (((fd_set *)(set))->fd_count < FD_SETSIZE) \ + ((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\ +}while (0) +#endif +#ifndef FD_ZERO +#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0) +#endif +#ifndef FD_ISSET +#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set)) +#endif +#elif !defined(USE_SYS_TYPES_FD_SET) +#warning "fd_set and associated macros have been defined in sys/types. \ + This can cause runtime problems with W32 sockets" +#endif /* ndef _SYS_TYPES_FD_SET */ + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */ +#define _TIMEVAL_DEFINED +struct timeval { + long tv_sec; + long tv_usec; +}; +#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#define timercmp(tvp, uvp, cmp) \ + (((tvp)->tv_sec != (uvp)->tv_sec) ? \ + ((tvp)->tv_sec cmp (uvp)->tv_sec) : \ + ((tvp)->tv_usec cmp (uvp)->tv_usec)) +#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 +#endif /* _TIMEVAL_DEFINED */ +struct hostent { + char *h_name; + char **h_aliases; + short h_addrtype; + short h_length; + char **h_addr_list; +#define h_addr h_addr_list[0] +}; +struct linger { + u_short l_onoff; + u_short l_linger; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +#define IOCPARM_MASK 0x7f +#define IOC_VOID 0x20000000 +#define IOC_OUT 0x40000000 +#define IOC_IN 0x80000000 +#define IOC_INOUT (IOC_IN|IOC_OUT) + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) +#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define FIONBIO _IOW('f', 126, u_long) +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define FIONREAD _IOR('f', 127, u_long) +#define FIOASYNC _IOW('f', 125, u_long) +#define SIOCSHIWAT _IOW('s', 0, u_long) +#define SIOCGHIWAT _IOR('s', 1, u_long) +#define SIOCSLOWAT _IOW('s', 2, u_long) +#define SIOCGLOWAT _IOR('s', 3, u_long) +#define SIOCATMARK _IOR('s', 7, u_long) + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +struct netent { + char * n_name; + char **n_aliases; + short n_addrtype; + u_long n_net; +}; +struct servent { + char *s_name; + char **s_aliases; + short s_port; + char *s_proto; +}; +struct protoent { + char *p_name; + char **p_aliases; + short p_proto; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define IPPROTO_IP 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_IGMP 2 +#define IPPROTO_GGP 3 +#define IPPROTO_TCP 6 +#define IPPROTO_PUP 12 +#define IPPROTO_UDP 17 +#define IPPROTO_IDP 22 +#define IPPROTO_ND 77 +#define IPPROTO_RAW 255 +#define IPPROTO_MAX 256 +#define IPPORT_ECHO 7 +#define IPPORT_DISCARD 9 +#define IPPORT_SYSTAT 11 +#define IPPORT_DAYTIME 13 +#define IPPORT_NETSTAT 15 +#define IPPORT_FTP 21 +#define IPPORT_TELNET 23 +#define IPPORT_SMTP 25 +#define IPPORT_TIMESERVER 37 +#define IPPORT_NAMESERVER 42 +#define IPPORT_WHOIS 43 +#define IPPORT_MTP 57 +#define IPPORT_TFTP 69 +#define IPPORT_RJE 77 +#define IPPORT_FINGER 79 +#define IPPORT_TTYLINK 87 +#define IPPORT_SUPDUP 95 +#define IPPORT_EXECSERVER 512 +#define IPPORT_LOGINSERVER 513 +#define IPPORT_CMDSERVER 514 +#define IPPORT_EFSSERVER 520 +#define IPPORT_BIFFUDP 512 +#define IPPORT_WHOSERVER 513 +#define IPPORT_ROUTESERVER 520 +#define IPPORT_RESERVED 1024 +#define IMPLINK_IP 155 +#define IMPLINK_LOWEXPER 156 +#define IMPLINK_HIGHEXPER 158 +struct in_addr { + union { + struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; + struct { u_short s_w1,s_w2; } S_un_w; + u_long S_addr; + } S_un; +#define s_addr S_un.S_addr +#define s_host S_un.S_un_b.s_b2 +#define s_net S_un.S_un_b.s_b1 +#define s_imp S_un.S_un_w.s_w2 +#define s_impno S_un.S_un_b.s_b4 +#define s_lh S_un.S_un_b.s_b3 +}; +#define IN_CLASSA(i) ((long)(i)&0x80000000) +#define IN_CLASSA_NET 0xff000000 +#define IN_CLASSA_NSHIFT 24 +#define IN_CLASSA_HOST 0x00ffffff +#define IN_CLASSA_MAX 128 +#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000) +#define IN_CLASSB_NET 0xffff0000 +#define IN_CLASSB_NSHIFT 16 +#define IN_CLASSB_HOST 0x0000ffff +#define IN_CLASSB_MAX 65536 +#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000) +#define IN_CLASSC_NET 0xffffff00 +#define IN_CLASSC_NSHIFT 8 +#define IN_CLASSC_HOST 0xff +#define INADDR_ANY (u_long)0 +#define INADDR_LOOPBACK 0x7f000001 +#define INADDR_BROADCAST (u_long)0xffffffff +#define INADDR_NONE 0xffffffff +struct sockaddr_in { + short sin_family; + u_short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; +}; +#define WSADESCRIPTION_LEN 256 +#define WSASYS_STATUS_LEN 128 +typedef struct WSAData { + WORD wVersion; + WORD wHighVersion; + char szDescription[WSADESCRIPTION_LEN+1]; + char szSystemStatus[WSASYS_STATUS_LEN+1]; + unsigned short iMaxSockets; + unsigned short iMaxUdpDg; + char * lpVendorInfo; +} WSADATA; +typedef WSADATA *LPWSADATA; + +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define IP_OPTIONS 1 +#define SO_DEBUG 1 +#define SO_ACCEPTCONN 2 +#define SO_REUSEADDR 4 +#define SO_KEEPALIVE 8 +#define SO_DONTROUTE 16 +#define SO_BROADCAST 32 +#define SO_USELOOPBACK 64 +#define SO_LINGER 128 +#define SO_OOBINLINE 256 +#define SO_DONTLINGER (u_int)(~SO_LINGER) +#define SO_SNDBUF 0x1001 +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_SNDTIMEO 0x1005 +#define SO_RCVTIMEO 0x1006 +#define SO_ERROR 0x1007 +#define SO_TYPE 0x1008 +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +/* + * Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll). + * They will cause errors or unexpected results if used with the + * (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h. + */ +#define IP_MULTICAST_IF 2 +#define IP_MULTICAST_TTL 3 +#define IP_MULTICAST_LOOP 4 +#define IP_ADD_MEMBERSHIP 5 +#define IP_DROP_MEMBERSHIP 6 + +#define IP_DEFAULT_MULTICAST_TTL 1 +#define IP_DEFAULT_MULTICAST_LOOP 1 +#define IP_MAX_MEMBERSHIPS 20 +struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +}; +#define INVALID_SOCKET (SOCKET)(~0) +#define SOCKET_ERROR (-1) +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 +#define SOCK_RDM 4 +#define SOCK_SEQPACKET 5 +#define TCP_NODELAY 0x0001 +#define AF_UNSPEC 0 +#define AF_UNIX 1 +#define AF_INET 2 +#define AF_IMPLINK 3 +#define AF_PUP 4 +#define AF_CHAOS 5 +#define AF_IPX 6 +#define AF_NS 6 +#define AF_ISO 7 +#define AF_OSI AF_ISO +#define AF_ECMA 8 +#define AF_DATAKIT 9 +#define AF_CCITT 10 +#define AF_SNA 11 +#define AF_DECnet 12 +#define AF_DLI 13 +#define AF_LAT 14 +#define AF_HYLINK 15 +#define AF_APPLETALK 16 +#define AF_NETBIOS 17 +#define AF_VOICEVIEW 18 +#define AF_FIREFOX 19 +#define AF_UNKNOWN1 20 +#define AF_BAN 21 +#define AF_ATM 22 +#define AF_INET6 23 +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define AF_MAX 24 +struct sockaddr { + u_short sa_family; + char sa_data[14]; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +struct sockproto { + u_short sp_family; + u_short sp_protocol; +}; +#define PF_UNSPEC AF_UNSPEC +#define PF_UNIX AF_UNIX +#define PF_INET AF_INET +#define PF_IMPLINK AF_IMPLINK +#define PF_PUP AF_PUP +#define PF_CHAOS AF_CHAOS +#define PF_NS AF_NS +#define PF_IPX AF_IPX +#define PF_ISO AF_ISO +#define PF_OSI AF_OSI +#define PF_ECMA AF_ECMA +#define PF_DATAKIT AF_DATAKIT +#define PF_CCITT AF_CCITT +#define PF_SNA AF_SNA +#define PF_DECnet AF_DECnet +#define PF_DLI AF_DLI +#define PF_LAT AF_LAT +#define PF_HYLINK AF_HYLINK +#define PF_APPLETALK AF_APPLETALK +#define PF_VOICEVIEW AF_VOICEVIEW +#define PF_FIREFOX AF_FIREFOX +#define PF_UNKNOWN1 AF_UNKNOWN1 +#define PF_BAN AF_BAN +#define PF_ATM AF_ATM +#define PF_INET6 AF_INET6 +#define PF_MAX AF_MAX +#define SOL_SOCKET 0xffff +#define SOMAXCONN 5 +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define MSG_OOB 1 +#define MSG_PEEK 2 +#define MSG_DONTROUTE 4 +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +#define MSG_MAXIOVLEN 16 +#define MSG_PARTIAL 0x8000 +#define MAXGETHOSTSTRUCT 1024 +#define FD_READ 1 +#define FD_WRITE 2 +#define FD_OOB 4 +#define FD_ACCEPT 8 +#define FD_CONNECT 16 +#define FD_CLOSE 32 +#ifndef WSABASEERR +#define WSABASEERR 10000 +#define WSAEINTR (WSABASEERR+4) +#define WSAEBADF (WSABASEERR+9) +#define WSAEACCES (WSABASEERR+13) +#define WSAEFAULT (WSABASEERR+14) +#define WSAEINVAL (WSABASEERR+22) +#define WSAEMFILE (WSABASEERR+24) +#define WSAEWOULDBLOCK (WSABASEERR+35) +#define WSAEINPROGRESS (WSABASEERR+36) +#define WSAEALREADY (WSABASEERR+37) +#define WSAENOTSOCK (WSABASEERR+38) +#define WSAEDESTADDRREQ (WSABASEERR+39) +#define WSAEMSGSIZE (WSABASEERR+40) +#define WSAEPROTOTYPE (WSABASEERR+41) +#define WSAENOPROTOOPT (WSABASEERR+42) +#define WSAEPROTONOSUPPORT (WSABASEERR+43) +#define WSAESOCKTNOSUPPORT (WSABASEERR+44) +#define WSAEOPNOTSUPP (WSABASEERR+45) +#define WSAEPFNOSUPPORT (WSABASEERR+46) +#define WSAEAFNOSUPPORT (WSABASEERR+47) +#define WSAEADDRINUSE (WSABASEERR+48) +#define WSAEADDRNOTAVAIL (WSABASEERR+49) +#define WSAENETDOWN (WSABASEERR+50) +#define WSAENETUNREACH (WSABASEERR+51) +#define WSAENETRESET (WSABASEERR+52) +#define WSAECONNABORTED (WSABASEERR+53) +#define WSAECONNRESET (WSABASEERR+54) +#define WSAENOBUFS (WSABASEERR+55) +#define WSAEISCONN (WSABASEERR+56) +#define WSAENOTCONN (WSABASEERR+57) +#define WSAESHUTDOWN (WSABASEERR+58) +#define WSAETOOMANYREFS (WSABASEERR+59) +#define WSAETIMEDOUT (WSABASEERR+60) +#define WSAECONNREFUSED (WSABASEERR+61) +#define WSAELOOP (WSABASEERR+62) +#define WSAENAMETOOLONG (WSABASEERR+63) +#define WSAEHOSTDOWN (WSABASEERR+64) +#define WSAEHOSTUNREACH (WSABASEERR+65) +#define WSAENOTEMPTY (WSABASEERR+66) +#define WSAEPROCLIM (WSABASEERR+67) +#define WSAEUSERS (WSABASEERR+68) +#define WSAEDQUOT (WSABASEERR+69) +#define WSAESTALE (WSABASEERR+70) +#define WSAEREMOTE (WSABASEERR+71) +#define WSAEDISCON (WSABASEERR+101) +#define WSASYSNOTREADY (WSABASEERR+91) +#define WSAVERNOTSUPPORTED (WSABASEERR+92) +#define WSANOTINITIALISED (WSABASEERR+93) +#define WSAHOST_NOT_FOUND (WSABASEERR+1001) +#define WSATRY_AGAIN (WSABASEERR+1002) +#define WSANO_RECOVERY (WSABASEERR+1003) +#define WSANO_DATA (WSABASEERR+1004) +#endif /* !WSABASEERR */ + +#define WSANO_ADDRESS WSANO_DATA +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define h_errno WSAGetLastError() +#define HOST_NOT_FOUND WSAHOST_NOT_FOUND +#define TRY_AGAIN WSATRY_AGAIN +#define NO_RECOVERY WSANO_RECOVERY +#define NO_DATA WSANO_DATA +#define NO_ADDRESS WSANO_ADDRESS +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*); +int PASCAL bind(SOCKET,const struct sockaddr*,int); +int PASCAL closesocket(SOCKET); +int PASCAL connect(SOCKET,const struct sockaddr*,int); +int PASCAL ioctlsocket(SOCKET,long,u_long *); +int PASCAL getpeername(SOCKET,struct sockaddr*,int*); +int PASCAL getsockname(SOCKET,struct sockaddr*,int*); +int PASCAL getsockopt(SOCKET,int,int,char*,int*); +unsigned long PASCAL inet_addr(const char*); +DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr); +int PASCAL listen(SOCKET,int); +int PASCAL recv(SOCKET,char*,int,int); +int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*); +int PASCAL send(SOCKET,const char*,int,int); +int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int); +int PASCAL setsockopt(SOCKET,int,int,const char*,int); +int PASCAL shutdown(SOCKET,int); +SOCKET PASCAL socket(int,int,int); +DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int); +DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*); +DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*); +DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*); +DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int); +DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*); +int PASCAL WSAStartup(WORD,LPWSADATA); +int PASCAL WSACleanup(void); +void PASCAL WSASetLastError(int); +int PASCAL WSAGetLastError(void); +BOOL PASCAL WSAIsBlocking(void); +int PASCAL WSAUnhookBlockingHook(void); +FARPROC PASCAL WSASetBlockingHook(FARPROC); +int PASCAL WSACancelBlockingCall(void); +HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int); +HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int); +int PASCAL WSACancelAsyncRequest(HANDLE); +int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long); +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +u_long PASCAL htonl(u_long); +u_long PASCAL ntohl(u_long); +u_short PASCAL htons(u_short); +u_short PASCAL ntohs(u_short); +int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*); +int PASCAL gethostname(char*,int); +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e) +#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error) +#define WSAGETASYNCBUFLEN(l) LOWORD(l) +#define WSAGETASYNCERROR(l) HIWORD(l) +#define WSAGETSELECTEVENT(l) LOWORD(l) +#define WSAGETSELECTERROR(l) HIWORD(l) + +typedef struct sockaddr SOCKADDR; +typedef struct sockaddr *PSOCKADDR; +typedef struct sockaddr *LPSOCKADDR; +typedef struct sockaddr_in SOCKADDR_IN; +typedef struct sockaddr_in *PSOCKADDR_IN; +typedef struct sockaddr_in *LPSOCKADDR_IN; +typedef struct linger LINGER; +typedef struct linger *PLINGER; +typedef struct linger *LPLINGER; +typedef struct in_addr IN_ADDR; +typedef struct in_addr *PIN_ADDR; +typedef struct in_addr *LPIN_ADDR; +typedef struct fd_set FD_SET; +typedef struct fd_set *PFD_SET; +typedef struct fd_set *LPFD_SET; +typedef struct hostent HOSTENT; +typedef struct hostent *PHOSTENT; +typedef struct hostent *LPHOSTENT; +typedef struct servent SERVENT; +typedef struct servent *PSERVENT; +typedef struct servent *LPSERVENT; +typedef struct protoent PROTOENT; +typedef struct protoent *PPROTOENT; +typedef struct protoent *LPPROTOENT; +typedef struct timeval TIMEVAL; +typedef struct timeval *PTIMEVAL; +typedef struct timeval *LPTIMEVAL; + +#ifdef __cplusplus +} +#endif +/* + * Recent MSDN docs indicate that the MS-specific extensions exported from + * mswsock.dll (AcceptEx, TransmitFile. WSARecEx and GetAcceptExSockaddrs) are + * declared in mswsock.h. These extensions are not supported on W9x or WinCE. + * However, code using WinSock 1.1 API may expect the declarations and + * associated defines to be in this header. Thus we include mswsock.h here. + * + * When linking against the WinSock 1.1 lib, wsock32.dll, the mswsock functions + * are automatically routed to mswsock.dll (on platforms with support). + * The WinSock 2 lib, ws2_32.dll, does not contain any references to + * the mswsock extensions. + */ + +#include + +#endif diff --git a/reactos/w32api/include/winsock2.h b/reactos/w32api/include/winsock2.h new file mode 100644 index 00000000000..3cae8a93587 --- /dev/null +++ b/reactos/w32api/include/winsock2.h @@ -0,0 +1,1218 @@ +/* + + Definitions for winsock 2 + + Initially taken from the Wine project. + + Portions Copyright (c) 1980, 1983, 1988, 1993 + The Regents of the University of California. All rights reserved. + + Portions Copyright (c) 1993 by Digital Equipment Corporation. + */ + +#if !(defined _WINSOCK2_H || defined _WINSOCK_H) +#define _WINSOCK2_H +#define _WINSOCK_H /* to prevent later inclusion of winsock.h */ +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define _GNU_H_WINDOWS32_SOCKETS + +#include + +#ifdef __cplusplus +extern "C" { +#endif +/* Names common to Winsock1.1 and Winsock2 */ +#if !defined ( _BSDTYPES_DEFINED ) +/* also defined in gmon.h and in cygwin's sys/types */ +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; +#define _BSDTYPES_DEFINED +#endif /* ! def _BSDTYPES_DEFINED */ +typedef u_int SOCKET; +#ifndef FD_SETSIZE +#define FD_SETSIZE 64 +#endif + +/* shutdown() how types */ +#define SD_RECEIVE 0x00 +#define SD_SEND 0x01 +#define SD_BOTH 0x02 + +#ifndef _SYS_TYPES_FD_SET +/* fd_set may be defined by the newlib + * if __USE_W32_SOCKETS not defined. + */ +#ifdef fd_set +#undef fd_set +#endif +typedef struct fd_set { + u_int fd_count; + SOCKET fd_array[FD_SETSIZE]; +} fd_set; +int PASCAL __WSAFDIsSet(SOCKET,fd_set*); +#ifndef FD_CLR +#define FD_CLR(fd,set) do { u_int __i;\ +for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ + if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ + while (__i < ((fd_set *)(set))->fd_count-1) {\ + ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\ + __i++;\ + }\ + ((fd_set*)(set))->fd_count--;\ + break;\ + }\ +}\ +} while (0) +#endif +#ifndef FD_SET +/* this differs from the define in winsock.h and in cygwin sys/types.h */ +#define FD_SET(fd, set) do { u_int __i;\ +for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ + if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ + break;\ + }\ +}\ +if (__i == ((fd_set *)(set))->fd_count) {\ + if (((fd_set *)(set))->fd_count < FD_SETSIZE) {\ + ((fd_set *)(set))->fd_array[__i] = (fd);\ + ((fd_set *)(set))->fd_count++;\ + }\ +}\ +} while(0) +#endif +#ifndef FD_ZERO +#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0) +#endif +#ifndef FD_ISSET +#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set)) +#endif +#elif !defined (USE_SYS_TYPES_FD_SET) +#warning "fd_set and associated macros have been defined in sys/types. \ + This may cause runtime problems with W32 sockets" +#endif /* ndef _SYS_TYPES_FD_SET */ +#if !(defined (__INSIDE_CYGWIN__) || (__INSIDE_MSYS__)) +#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */ +#define _TIMEVAL_DEFINED +struct timeval { + long tv_sec; + long tv_usec; +}; +#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +#define timercmp(tvp, uvp, cmp) \ + (((tvp)->tv_sec != (uvp)->tv_sec) ? \ + ((tvp)->tv_sec cmp (uvp)->tv_sec) : \ + ((tvp)->tv_usec cmp (uvp)->tv_usec)) +#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 +#endif /* _TIMEVAL_DEFINED */ +struct hostent { + char *h_name; + char **h_aliases; + short h_addrtype; + short h_length; + char **h_addr_list; +#define h_addr h_addr_list[0] +}; +struct linger { + u_short l_onoff; + u_short l_linger; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +#define IOCPARM_MASK 0x7f +#define IOC_VOID 0x20000000 +#define IOC_OUT 0x40000000 +#define IOC_IN 0x80000000 +#define IOC_INOUT (IOC_IN|IOC_OUT) + +#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) +#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define FIONBIO _IOW('f', 126, u_long) +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define FIONREAD _IOR('f', 127, u_long) +#define FIOASYNC _IOW('f', 125, u_long) +#define SIOCSHIWAT _IOW('s', 0, u_long) +#define SIOCGHIWAT _IOR('s', 1, u_long) +#define SIOCSLOWAT _IOW('s', 2, u_long) +#define SIOCGLOWAT _IOR('s', 3, u_long) +#define SIOCATMARK _IOR('s', 7, u_long) + +#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +struct netent { + char * n_name; + char **n_aliases; + short n_addrtype; + u_long n_net; +}; +struct servent { + char *s_name; + char **s_aliases; + short s_port; + char *s_proto; +}; +struct protoent { + char *p_name; + char **p_aliases; + short p_proto; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define IPPROTO_IP 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_IGMP 2 +#define IPPROTO_GGP 3 +#define IPPROTO_TCP 6 +#define IPPROTO_PUP 12 +#define IPPROTO_UDP 17 +#define IPPROTO_IDP 22 +#define IPPROTO_ND 77 +#define IPPROTO_RAW 255 +#define IPPROTO_MAX 256 +/* IPv6 options */ +#define IPPROTO_HOPOPTS 0 /* IPv6 Hop-by-Hop options */ +#define IPPROTO_IPV6 41 /* IPv6 header */ +#define IPPROTO_ROUTING 43 /* IPv6 Routing header */ +#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */ +#define IPPROTO_ESP 50 /* encapsulating security payload */ +#define IPPROTO_AH 51 /* authentication header */ +#define IPPROTO_ICMPV6 58 /* ICMPv6 */ +#define IPPROTO_NONE 59 /* IPv6 no next header */ +#define IPPROTO_DSTOPTS 60 /* IPv6 Destination options */ +#define IPPORT_ECHO 7 +#define IPPORT_DISCARD 9 +#define IPPORT_SYSTAT 11 +#define IPPORT_DAYTIME 13 +#define IPPORT_NETSTAT 15 +#define IPPORT_FTP 21 +#define IPPORT_TELNET 23 +#define IPPORT_SMTP 25 +#define IPPORT_TIMESERVER 37 +#define IPPORT_NAMESERVER 42 +#define IPPORT_WHOIS 43 +#define IPPORT_MTP 57 +#define IPPORT_TFTP 69 +#define IPPORT_RJE 77 +#define IPPORT_FINGER 79 +#define IPPORT_TTYLINK 87 +#define IPPORT_SUPDUP 95 +#define IPPORT_EXECSERVER 512 +#define IPPORT_LOGINSERVER 513 +#define IPPORT_CMDSERVER 514 +#define IPPORT_EFSSERVER 520 +#define IPPORT_BIFFUDP 512 +#define IPPORT_WHOSERVER 513 +#define IPPORT_ROUTESERVER 520 +#define IPPORT_RESERVED 1024 +#define IMPLINK_IP 155 +#define IMPLINK_LOWEXPER 156 +#define IMPLINK_HIGHEXPER 158 +struct in_addr { + union { + struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; + struct { u_short s_w1,s_w2; } S_un_w; + u_long S_addr; + } S_un; +#define s_addr S_un.S_addr +#define s_host S_un.S_un_b.s_b2 +#define s_net S_un.S_un_b.s_b1 +#define s_imp S_un.S_un_w.s_w2 +#define s_impno S_un.S_un_b.s_b4 +#define s_lh S_un.S_un_b.s_b3 +}; +#define IN_CLASSA(i) ((long)(i)&0x80000000) +#define IN_CLASSA_NET 0xff000000 +#define IN_CLASSA_NSHIFT 24 +#define IN_CLASSA_HOST 0x00ffffff +#define IN_CLASSA_MAX 128 +#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000) +#define IN_CLASSB_NET 0xffff0000 +#define IN_CLASSB_NSHIFT 16 +#define IN_CLASSB_HOST 0x0000ffff +#define IN_CLASSB_MAX 65536 +#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000) +#define IN_CLASSC_NET 0xffffff00 +#define IN_CLASSC_NSHIFT 8 +#define IN_CLASSC_HOST 0xff +#define INADDR_ANY (u_long)0 +#define INADDR_LOOPBACK 0x7f000001 +#define INADDR_BROADCAST (u_long)0xffffffff +#define INADDR_NONE 0xffffffff +struct sockaddr_in { + short sin_family; + u_short sin_port; + struct in_addr sin_addr; + char sin_zero[8]; +}; +#define WSADESCRIPTION_LEN 256 +#define WSASYS_STATUS_LEN 128 +typedef struct WSAData { + WORD wVersion; + WORD wHighVersion; + char szDescription[WSADESCRIPTION_LEN+1]; + char szSystemStatus[WSASYS_STATUS_LEN+1]; + unsigned short iMaxSockets; + unsigned short iMaxUdpDg; + char * lpVendorInfo; +} WSADATA; +typedef WSADATA *LPWSADATA; + +#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define IP_OPTIONS 1 +#define SO_DEBUG 1 +#define SO_ACCEPTCONN 2 +#define SO_REUSEADDR 4 +#define SO_KEEPALIVE 8 +#define SO_DONTROUTE 16 +#define SO_BROADCAST 32 +#define SO_USELOOPBACK 64 +#define SO_LINGER 128 +#define SO_OOBINLINE 256 +#define SO_DONTLINGER (u_int)(~SO_LINGER) +#define SO_SNDBUF 0x1001 +#define SO_RCVBUF 0x1002 +#define SO_SNDLOWAT 0x1003 +#define SO_RCVLOWAT 0x1004 +#define SO_SNDTIMEO 0x1005 +#define SO_RCVTIMEO 0x1006 +#define SO_ERROR 0x1007 +#define SO_TYPE 0x1008 +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +#define INVALID_SOCKET (SOCKET)(~0) +#define SOCKET_ERROR (-1) +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 +#define SOCK_RDM 4 +#define SOCK_SEQPACKET 5 +#define TCP_NODELAY 0x0001 +#define AF_UNSPEC 0 +#define AF_UNIX 1 +#define AF_INET 2 +#define AF_IMPLINK 3 +#define AF_PUP 4 +#define AF_CHAOS 5 +#define AF_IPX 6 +#define AF_NS 6 +#define AF_ISO 7 +#define AF_OSI AF_ISO +#define AF_ECMA 8 +#define AF_DATAKIT 9 +#define AF_CCITT 10 +#define AF_SNA 11 +#define AF_DECnet 12 +#define AF_DLI 13 +#define AF_LAT 14 +#define AF_HYLINK 15 +#define AF_APPLETALK 16 +#define AF_NETBIOS 17 +#define AF_VOICEVIEW 18 +#define AF_FIREFOX 19 +#define AF_UNKNOWN1 20 +#define AF_BAN 21 +#define AF_ATM 22 +#define AF_INET6 23 +#define AF_CLUSTER 24 +#define AF_12844 25 +#define AF_IRDA 26 +#define AF_NETDES 28 +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define AF_MAX 29 +struct sockaddr { + u_short sa_family; + char sa_data[14]; +}; +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +/* Portable IPv6/IPv4 version of sockaddr. + Uses padding to force 8 byte alignment + and maximum size of 128 bytes */ +struct sockaddr_storage { + short ss_family; + char __ss_pad1[6]; /* pad to 8 */ + __int64 __ss_align; /* force alignment */ + char __ss_pad2[112]; /* pad to 128 */ +}; + +struct sockproto { + u_short sp_family; + u_short sp_protocol; +}; +#define PF_UNSPEC AF_UNSPEC +#define PF_UNIX AF_UNIX +#define PF_INET AF_INET +#define PF_IMPLINK AF_IMPLINK +#define PF_PUP AF_PUP +#define PF_CHAOS AF_CHAOS +#define PF_NS AF_NS +#define PF_IPX AF_IPX +#define PF_ISO AF_ISO +#define PF_OSI AF_OSI +#define PF_ECMA AF_ECMA +#define PF_DATAKIT AF_DATAKIT +#define PF_CCITT AF_CCITT +#define PF_SNA AF_SNA +#define PF_DECnet AF_DECnet +#define PF_DLI AF_DLI +#define PF_LAT AF_LAT +#define PF_HYLINK AF_HYLINK +#define PF_APPLETALK AF_APPLETALK +#define PF_VOICEVIEW AF_VOICEVIEW +#define PF_FIREFOX AF_FIREFOX +#define PF_UNKNOWN1 AF_UNKNOWN1 +#define PF_BAN AF_BAN +#define PF_ATM AF_ATM +#define PF_INET6 AF_INET6 +#define PF_MAX AF_MAX +#define SOL_SOCKET 0xffff +#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define SOMAXCONN 0x7fffffff /* (5) in WinSock1.1 */ +#define MSG_OOB 1 +#define MSG_PEEK 2 +#define MSG_DONTROUTE 4 +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +#define MSG_MAXIOVLEN 16 +#define MSG_PARTIAL 0x8000 +#define MAXGETHOSTSTRUCT 1024 + +#define FD_READ_BIT 0 +#define FD_READ (1 << FD_READ_BIT) +#define FD_WRITE_BIT 1 +#define FD_WRITE (1 << FD_WRITE_BIT) +#define FD_OOB_BIT 2 +#define FD_OOB (1 << FD_OOB_BIT) +#define FD_ACCEPT_BIT 3 +#define FD_ACCEPT (1 << FD_ACCEPT_BIT) +#define FD_CONNECT_BIT 4 +#define FD_CONNECT (1 << FD_CONNECT_BIT) +#define FD_CLOSE_BIT 5 +#define FD_CLOSE (1 << FD_CLOSE_BIT) +/* winsock1.1 defines stop at FD_CLOSE (32) */ +#define FD_QOS_BIT 6 +#define FD_QOS (1 << FD_QOS_BIT) +#define FD_GROUP_QOS_BIT 7 +#define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT) +#define FD_ROUTING_INTERFACE_CHANGE_BIT 8 +#define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT) +#define FD_ADDRESS_LIST_CHANGE_BIT 9 +#define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT) +#define FD_MAX_EVENTS 10 +#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1) + +#ifndef WSABASEERR +#define WSABASEERR 10000 +#define WSAEINTR (WSABASEERR+4) +#define WSAEBADF (WSABASEERR+9) +#define WSAEACCES (WSABASEERR+13) +#define WSAEFAULT (WSABASEERR+14) +#define WSAEINVAL (WSABASEERR+22) +#define WSAEMFILE (WSABASEERR+24) +#define WSAEWOULDBLOCK (WSABASEERR+35) +#define WSAEINPROGRESS (WSABASEERR+36) /* deprecated on WinSock2 */ +#define WSAEALREADY (WSABASEERR+37) +#define WSAENOTSOCK (WSABASEERR+38) +#define WSAEDESTADDRREQ (WSABASEERR+39) +#define WSAEMSGSIZE (WSABASEERR+40) +#define WSAEPROTOTYPE (WSABASEERR+41) +#define WSAENOPROTOOPT (WSABASEERR+42) +#define WSAEPROTONOSUPPORT (WSABASEERR+43) +#define WSAESOCKTNOSUPPORT (WSABASEERR+44) +#define WSAEOPNOTSUPP (WSABASEERR+45) +#define WSAEPFNOSUPPORT (WSABASEERR+46) +#define WSAEAFNOSUPPORT (WSABASEERR+47) +#define WSAEADDRINUSE (WSABASEERR+48) +#define WSAEADDRNOTAVAIL (WSABASEERR+49) +#define WSAENETDOWN (WSABASEERR+50) +#define WSAENETUNREACH (WSABASEERR+51) +#define WSAENETRESET (WSABASEERR+52) +#define WSAECONNABORTED (WSABASEERR+53) +#define WSAECONNRESET (WSABASEERR+54) +#define WSAENOBUFS (WSABASEERR+55) +#define WSAEISCONN (WSABASEERR+56) +#define WSAENOTCONN (WSABASEERR+57) +#define WSAESHUTDOWN (WSABASEERR+58) +#define WSAETOOMANYREFS (WSABASEERR+59) +#define WSAETIMEDOUT (WSABASEERR+60) +#define WSAECONNREFUSED (WSABASEERR+61) +#define WSAELOOP (WSABASEERR+62) +#define WSAENAMETOOLONG (WSABASEERR+63) +#define WSAEHOSTDOWN (WSABASEERR+64) +#define WSAEHOSTUNREACH (WSABASEERR+65) +#define WSAENOTEMPTY (WSABASEERR+66) +#define WSAEPROCLIM (WSABASEERR+67) +#define WSAEUSERS (WSABASEERR+68) +#define WSAEDQUOT (WSABASEERR+69) +#define WSAESTALE (WSABASEERR+70) +#define WSAEREMOTE (WSABASEERR+71) +#define WSAEDISCON (WSABASEERR+101) +#define WSASYSNOTREADY (WSABASEERR+91) +#define WSAVERNOTSUPPORTED (WSABASEERR+92) +#define WSANOTINITIALISED (WSABASEERR+93) +#define WSAHOST_NOT_FOUND (WSABASEERR+1001) +#define WSATRY_AGAIN (WSABASEERR+1002) +#define WSANO_RECOVERY (WSABASEERR+1003) +#define WSANO_DATA (WSABASEERR+1004) + +/* WinSock2 specific error codes */ +#define WSAENOMORE (WSABASEERR+102) +#define WSAECANCELLED (WSABASEERR+103) +#define WSAEINVALIDPROCTABLE (WSABASEERR+104) +#define WSAEINVALIDPROVIDER (WSABASEERR+105) +#define WSAEPROVIDERFAILEDINIT (WSABASEERR+106) +#define WSASYSCALLFAILURE (WSABASEERR+107) +#define WSASERVICE_NOT_FOUND (WSABASEERR+108) +#define WSATYPE_NOT_FOUND (WSABASEERR+109) +#define WSA_E_NO_MORE (WSABASEERR+110) +#define WSA_E_CANCELLED (WSABASEERR+111) +#define WSAEREFUSED (WSABASEERR+112) + +/* WS QualityofService errors */ +#define WSA_QOS_RECEIVERS (WSABASEERR + 1005) +#define WSA_QOS_SENDERS (WSABASEERR + 1006) +#define WSA_QOS_NO_SENDERS (WSABASEERR + 1007) +#define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008) +#define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009) +#define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010) +#define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011) +#define WSA_QOS_BAD_STYLE (WSABASEERR + 1012) +#define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013) +#define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014) +#define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015) +#define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016) +#define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017) +#define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018) +#define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019) +#define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020) +#define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021) +#define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022) +#define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023) +#define WSA_QOS_EUNKOWNPSOBJ (WSABASEERR + 1024) +#define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025) +#define WSA_QOS_EFLOWDESC (WSABASEERR + 1026) +#define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027) +#define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028) +#define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029) +#define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030) +#define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031) + +#endif /* !WSABASEERR */ + +#define WSANO_ADDRESS WSANO_DATA +#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +#define h_errno WSAGetLastError() +#define HOST_NOT_FOUND WSAHOST_NOT_FOUND +#define TRY_AGAIN WSATRY_AGAIN +#define NO_RECOVERY WSANO_RECOVERY +#define NO_DATA WSANO_DATA +#define NO_ADDRESS WSANO_ADDRESS +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ +SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*); +int PASCAL bind(SOCKET,const struct sockaddr*,int); +int PASCAL closesocket(SOCKET); +int PASCAL connect(SOCKET,const struct sockaddr*,int); +int PASCAL ioctlsocket(SOCKET,long,u_long *); +int PASCAL getpeername(SOCKET,struct sockaddr*,int*); +int PASCAL getsockname(SOCKET,struct sockaddr*,int*); +int PASCAL getsockopt(SOCKET,int,int,char*,int*); +unsigned long PASCAL inet_addr(const char*); +DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr); +int PASCAL listen(SOCKET,int); +int PASCAL recv(SOCKET,char*,int,int); +int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*); +int PASCAL send(SOCKET,const char*,int,int); +int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int); +int PASCAL setsockopt(SOCKET,int,int,const char*,int); +int PASCAL shutdown(SOCKET,int); +SOCKET PASCAL socket(int,int,int); +DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int); +DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*); +DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*); +DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*); +DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int); +DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*); +int PASCAL WSAStartup(WORD,LPWSADATA); +int PASCAL WSACleanup(void); +void PASCAL WSASetLastError(int); +int PASCAL WSAGetLastError(void); +/* + * Pseudo-blocking functions are deprecated in WinSock2 + * spec. Use threads instead. + */ +BOOL PASCAL WSAIsBlocking(void); +int PASCAL WSAUnhookBlockingHook(void); +FARPROC PASCAL WSASetBlockingHook(FARPROC); +int PASCAL WSACancelBlockingCall(void); + +HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int); +HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int); +HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int); +int PASCAL WSACancelAsyncRequest(HANDLE); +int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long); +#if ! (defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) +u_long PASCAL htonl(u_long); +u_long PASCAL ntohl(u_long); +u_short PASCAL htons(u_short); +u_short PASCAL ntohs(u_short); +int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*); +#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ + +int PASCAL gethostname(char*,int); + +#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e) +#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error) +#define WSAGETASYNCBUFLEN(l) LOWORD(l) +#define WSAGETASYNCERROR(l) HIWORD(l) +#define WSAGETSELECTEVENT(l) LOWORD(l) +#define WSAGETSELECTERROR(l) HIWORD(l) + +typedef struct sockaddr SOCKADDR; +typedef struct sockaddr *PSOCKADDR; +typedef struct sockaddr *LPSOCKADDR; +typedef struct sockaddr_storage SOCKADDR_STORAGE, *PSOCKADDR_STORAGE; +typedef struct sockaddr_in SOCKADDR_IN; +typedef struct sockaddr_in *PSOCKADDR_IN; +typedef struct sockaddr_in *LPSOCKADDR_IN; +typedef struct linger LINGER; +typedef struct linger *PLINGER; +typedef struct linger *LPLINGER; +typedef struct in_addr IN_ADDR; +typedef struct in_addr *PIN_ADDR; +typedef struct in_addr *LPIN_ADDR; +typedef struct fd_set FD_SET; +typedef struct fd_set *PFD_SET; +typedef struct fd_set *LPFD_SET; +typedef struct hostent HOSTENT; +typedef struct hostent *PHOSTENT; +typedef struct hostent *LPHOSTENT; +typedef struct servent SERVENT; +typedef struct servent *PSERVENT; +typedef struct servent *LPSERVENT; +typedef struct protoent PROTOENT; +typedef struct protoent *PPROTOENT; +typedef struct protoent *LPPROTOENT; +typedef struct timeval TIMEVAL; +typedef struct timeval *PTIMEVAL; +typedef struct timeval *LPTIMEVAL; + +/* winsock2 additions */ +#define ADDR_ANY INADDR_ANY + +#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000) +#define IN_CLASSD_NET 0xf0000000 +#define IN_CLASSD_NSHIFT 28 +#define IN_CLASSD_HOST 0x0fffffff +#define IN_MULTICAST(i) IN_CLASSD(i) + +#define FROM_PROTOCOL_INFO (-1) + +#define SO_DONTLINGER (u_int)(~SO_LINGER) +#define SO_GROUP_ID 0x2001 +#define SO_GROUP_PRIORITY 0x2002 +#define SO_MAX_MSG_SIZE 0x2003 +#define SO_PROTOCOL_INFOA 0x2004 +#define SO_PROTOCOL_INFOW 0x2005 +#ifdef UNICODE +#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW +#else +#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA +#endif +#define PVD_CONFIG 0x3001 + +#define MSG_INTERRUPT 0x10 +#define MSG_MAXIOVLEN 16 + +#define WSAAPI WINAPI +#define WSAEVENT HANDLE +#define LPWSAEVENT LPHANDLE +#define WSAOVERLAPPED OVERLAPPED +typedef struct _OVERLAPPED *LPWSAOVERLAPPED; + +#define WSA_IO_PENDING (ERROR_IO_PENDING) +#define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE) +#define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE) +#define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER) +#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY) +#define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED) + +#define WSA_INVALID_EVENT ((WSAEVENT)NULL) +#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS) +#define WSA_WAIT_FAILED ((DWORD)-1L) +#define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0) +#define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION) +#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT) +#define WSA_INFINITE (INFINITE) + +typedef struct _WSABUF { + unsigned long len; + char *buf; +} WSABUF, *LPWSABUF; + +typedef enum +{ + BestEffortService, + ControlledLoadService, + PredictiveService, + GuaranteedDelayService, + GuaranteedService +} GUARANTEE; + +/* TODO: FLOWSPEC and related definitions belong in qos.h */ + +/* + Windows Sockets 2 Application Programming Interface, + revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE + and the elements of _flowspec, but the type uint32 is not defined + or used anywhere else in the w32api. For now, just use + unsigned int, which is 32 bits on _WIN32 and _WIN64. +*/ + +typedef unsigned int SERVICETYPE; +typedef struct _flowspec +{ + unsigned int TokenRate; + unsigned int TokenBucketSize; + unsigned int PeakBandwidth; + unsigned int Latency; + unsigned int DelayVariation; + SERVICETYPE ServiceType; + unsigned int MaxSduSize; + unsigned int MinimumPolicedSize; + } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC; + +typedef struct _QualityOfService +{ + FLOWSPEC SendingFlowspec; + FLOWSPEC ReceivingFlowspec; + WSABUF ProviderSpecific; +} QOS, *LPQOS; + +#define CF_ACCEPT 0x0000 +#define CF_REJECT 0x0001 +#define CF_DEFER 0x0002 +#define SD_RECEIVE 0x00 +#define SD_SEND 0x01 +#define SD_BOTH 0x02 +typedef unsigned int GROUP; + +#define SG_UNCONSTRAINED_GROUP 0x01 +#define SG_CONSTRAINED_GROUP 0x02 +typedef struct _WSANETWORKEVENTS { + long lNetworkEvents; + int iErrorCode[FD_MAX_EVENTS]; +} WSANETWORKEVENTS, *LPWSANETWORKEVENTS; + +#define MAX_PROTOCOL_CHAIN 7 + +#define BASE_PROTOCOL 1 +#define LAYERED_PROTOCOL 0 + +typedef enum _WSAESETSERVICEOP +{ + RNRSERVICE_REGISTER=0, + RNRSERVICE_DEREGISTER, + RNRSERVICE_DELETE +} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP; + +typedef struct _AFPROTOCOLS { + INT iAddressFamily; + INT iProtocol; +} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS; + +typedef enum _WSAEcomparator +{ + COMP_EQUAL = 0, + COMP_NOTLESS +} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR; + +typedef struct _WSAVersion +{ + DWORD dwVersion; + WSAECOMPARATOR ecHow; +} WSAVERSION, *PWSAVERSION, *LPWSAVERSION; + +#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */ +#define __CSADDR_T_DEFINED +typedef struct _SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; +} SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS; +typedef struct _CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; +} CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO; +#endif + +typedef struct _SOCKET_ADDRESS_LIST { + INT iAddressCount; + SOCKET_ADDRESS Address[1]; +} SOCKET_ADDRESS_LIST, * LPSOCKET_ADDRESS_LIST; + +#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */ +#define __BLOB_T_DEFINED +typedef struct _BLOB { + ULONG cbSize; + BYTE *pBlobData; +} BLOB,*PBLOB,*LPBLOB; +#endif + +typedef struct _WSAQuerySetA +{ + DWORD dwSize; + LPSTR lpszServiceInstanceName; + LPGUID lpServiceClassId; + LPWSAVERSION lpVersion; + LPSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; +} WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA; + +typedef struct _WSAQuerySetW +{ + DWORD dwSize; + LPWSTR lpszServiceInstanceName; + LPGUID lpServiceClassId; + LPWSAVERSION lpVersion; + LPWSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPWSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPWSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; +} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW; + +#ifdef UNICODE +typedef WSAQUERYSETW WSAQUERYSET; +typedef PWSAQUERYSETW PWSAQUERYSET; +typedef LPWSAQUERYSETW LPWSAQUERYSET; +#else +typedef WSAQUERYSETA WSAQUERYSET; +typedef PWSAQUERYSETA PWSAQUERYSET; +typedef LPWSAQUERYSETA LPWSAQUERYSET; +#endif + +typedef struct _WSANSClassInfoA +{ + LPSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; +} WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA; + +typedef struct _WSANSClassInfoW +{ + LPWSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; +} WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW; + +#ifdef UNICODE +typedef WSANSCLASSINFOW WSANSCLASSINFO; +typedef PWSANSCLASSINFOW PWSANSCLASSINFO; +typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO; +#else +typedef WSANSCLASSINFOA WSANSCLASSINFO; +typedef PWSANSCLASSINFOA PWSANSCLASSINFO; +typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO; +#endif + +typedef struct _WSAServiceClassInfoA +{ + LPGUID lpServiceClassId; + LPSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOA lpClassInfos; +} WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA; + +typedef struct _WSAServiceClassInfoW +{ + LPGUID lpServiceClassId; + LPWSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOW lpClassInfos; +} WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW; + +#ifdef UNICODE +typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO; +typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO; +typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO; +#else +typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO; +typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO; +typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO; +#endif + +typedef struct _WSANAMESPACE_INFOA { + GUID NSProviderId; + DWORD dwNameSpace; + BOOL fActive; + DWORD dwVersion; + LPSTR lpszIdentifier; +} WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA; + +typedef struct _WSANAMESPACE_INFOW { + GUID NSProviderId; + DWORD dwNameSpace; + BOOL fActive; + DWORD dwVersion; + LPWSTR lpszIdentifier; +} WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW; + +#ifdef UNICODE +typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO; +typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO; +typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO; +#else +typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO; +typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO; +typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO; +#endif + +typedef struct _WSAPROTOCOLCHAIN { + int ChainLen; + DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; +} WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN; + +#define WSAPROTOCOL_LEN 255 + +typedef struct _WSAPROTOCOL_INFOA { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + CHAR szProtocol[WSAPROTOCOL_LEN+1]; +} WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA; + +typedef struct _WSAPROTOCOL_INFOW { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + WCHAR szProtocol[WSAPROTOCOL_LEN+1]; +} WSAPROTOCOL_INFOW, * LPWSAPROTOCOL_INFOW; + +typedef int (CALLBACK *LPCONDITIONPROC)(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD); +typedef void (WINAPI *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD, DWORD, LPWSAOVERLAPPED, DWORD); + + +#ifdef UNICODE +typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO; +typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO; +#else +typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO; +typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO; +#endif + +/* Needed for XP & .NET Server function WSANSPIoctl. */ +typedef enum _WSACOMPLETIONTYPE { + NSP_NOTIFY_IMMEDIATELY = 0, + NSP_NOTIFY_HWND, + NSP_NOTIFY_EVENT, + NSP_NOTIFY_PORT, + NSP_NOTIFY_APC +} WSACOMPLETIONTYPE, * PWSACOMPLETIONTYPE, * LPWSACOMPLETIONTYPE; +typedef struct _WSACOMPLETION { + WSACOMPLETIONTYPE Type; + union { + struct { + HWND hWnd; + UINT uMsg; + WPARAM context; + } WindowMessage; + struct { + LPWSAOVERLAPPED lpOverlapped; + } Event; + struct { + LPWSAOVERLAPPED lpOverlapped; + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc; + } Apc; + struct { + LPWSAOVERLAPPED lpOverlapped; + HANDLE hPort; + ULONG_PTR Key; + } Port; + } Parameters; +} WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION; + +#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001 +#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002 +#define PFL_HIDDEN 0x00000004 +#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008 +#define XP1_CONNECTIONLESS 0x00000001 +#define XP1_GUARANTEED_DELIVERY 0x00000002 +#define XP1_GUARANTEED_ORDER 0x00000004 +#define XP1_MESSAGE_ORIENTED 0x00000008 +#define XP1_PSEUDO_STREAM 0x00000010 +#define XP1_GRACEFUL_CLOSE 0x00000020 +#define XP1_EXPEDITED_DATA 0x00000040 +#define XP1_CONNECT_DATA 0x00000080 +#define XP1_DISCONNECT_DATA 0x00000100 +#define XP1_SUPPORT_BROADCAST 0x00000200 +#define XP1_SUPPORT_MULTIPOINT 0x00000400 +#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800 +#define XP1_MULTIPOINT_DATA_PLANE 0x00001000 +#define XP1_QOS_SUPPORTED 0x00002000 +#define XP1_INTERRUPT 0x00004000 +#define XP1_UNI_SEND 0x00008000 +#define XP1_UNI_RECV 0x00010000 +#define XP1_IFS_HANDLES 0x00020000 +#define XP1_PARTIAL_MESSAGE 0x00040000 + +#define BIGENDIAN 0x0000 +#define LITTLEENDIAN 0x0001 + +#define SECURITY_PROTOCOL_NONE 0x0000 +#define JL_SENDER_ONLY 0x01 +#define JL_RECEIVER_ONLY 0x02 +#define JL_BOTH 0x04 +#define WSA_FLAG_OVERLAPPED 0x01 +#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02 +#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04 +#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08 +#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10 +#define IOC_UNIX 0x00000000 +#define IOC_WS2 0x08000000 +#define IOC_PROTOCOL 0x10000000 +#define IOC_VENDOR 0x18000000 + +#define _WSAIO(x,y) (IOC_VOID|(x)|(y)) +#define _WSAIOR(x,y) (IOC_OUT|(x)|(y)) +#define _WSAIOW(x,y) (IOC_IN|(x)|(y)) +#define _WSAIORW(x,y) (IOC_INOUT|(x)|(y)) + +#define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1) +#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2) +#define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3) +#define SIO_FLUSH _WSAIO(IOC_WS2,4) +#define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5) +#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6) +#define SIO_GET_QOS _WSAIORW(IOC_WS2,7) +#define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8) +#define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9) +#define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10) +#define SIO_SET_QOS _WSAIOW(IOC_WS2,11) +#define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12) +#define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13) +#define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20) +#define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21) +#define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22) +#define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23) +#define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24) +#define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25) + +#define TH_NETDEV 0x00000001 +#define TH_TAPI 0x00000002 + +SOCKET WINAPI WSAAccept(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD); +INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD); +INT WINAPI WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD); +BOOL WINAPI WSACloseEvent(WSAEVENT); +int WINAPI WSAConnect(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS); +WSAEVENT WINAPI WSACreateEvent(void); +int WINAPI WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA); +int WINAPI WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW); +INT WINAPI WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA); +INT WINAPI WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW); +int WINAPI WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS); +int WINAPI WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD); +int WINAPI WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD); +int WINAPI WSAEventSelect(SOCKET, WSAEVENT, long); +BOOL WINAPI WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD); +BOOL WINAPI WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS); +INT WINAPI WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA); +INT WINAPI WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW); +INT WINAPI WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD); +INT WINAPI WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD); +int WINAPI WSAHtonl(SOCKET, unsigned long, unsigned long *); +int WINAPI WSAHtons(SOCKET, unsigned short, unsigned short *); +INT WINAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA); +INT WINAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW); +int WINAPI WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +SOCKET WINAPI WSAJoinLeaf(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD); +INT WINAPI WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE); +INT WINAPI WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE); +INT WINAPI WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA); +INT WINAPI WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW); +INT WINAPI WSALookupServiceEnd(HANDLE); +int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */ +int WINAPI WSANtohl(SOCKET, unsigned long, unsigned long *); +int WINAPI WSANtohs(SOCKET, unsigned short, unsigned short *); +int WINAPI WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +int WINAPI WSARecvDisconnect(SOCKET, LPWSABUF); +int WINAPI WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +INT WINAPI WSARemoveServiceClass(LPGUID); +BOOL WINAPI WSAResetEvent(WSAEVENT); +int WINAPI WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +int WINAPI WSASendDisconnect(SOCKET, LPWSABUF); +int WINAPI WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +BOOL WINAPI WSASetEvent(WSAEVENT); +INT WSAAPI WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD); +INT WINAPI WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD); +SOCKET WINAPI WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD); +SOCKET WINAPI WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD); +INT WINAPI WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT); +INT WINAPI WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT); +DWORD WINAPI WSAWaitForMultipleEvents(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL); +typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD); +typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGA)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD); +typedef INT (WINAPI *LPFN_WSAADDRESSTOSTRINGW)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD); +typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT); +typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS); +typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void); +typedef int (WINAPI *LPFN_WSADUPLICATESOCKETA)(SOCKET, DWORD, LPWSAPROTOCOL_INFOA); +typedef int (WINAPI *LPFN_WSADUPLICATESOCKETW)(SOCKET, DWORD, LPWSAPROTOCOL_INFOW); +typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSA)(LPDWORD, LPWSANAMESPACE_INFOA); +typedef INT (WINAPI *LPFN_WSAENUMNAMESPACEPROVIDERSW)(LPDWORD, LPWSANAMESPACE_INFOW); +typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENTS)(SOCKET, WSAEVENT, LPWSANETWORKEVENTS); +typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD); +typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD); +typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET, WSAEVENT, long); +typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD); +typedef BOOL (WINAPI *LPFN_WSAGETQOSBYNAME)(SOCKET, LPWSABUF, LPQOS); +typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOA)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA); +typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSINFOW)(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW); +typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(LPGUID, LPSTR, LPDWORD); +typedef INT (WINAPI *LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(LPGUID, LPWSTR, LPDWORD); +typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET, unsigned long, unsigned long *); +typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET, unsigned short, unsigned short *); +typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSA)(LPWSASERVICECLASSINFOA); +typedef INT (WINAPI *LPFN_WSAINSTALLSERVICECLASSW)(LPWSASERVICECLASSINFOW); +typedef int (WINAPI *LPFN_WSAIOCTL)(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +typedef SOCKET (WINAPI *LPFN_WSAJOINLEAF)(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD); +typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINA)(LPWSAQUERYSETA, DWORD, LPHANDLE); +typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEBEGINW)(LPWSAQUERYSETW, DWORD, LPHANDLE); +typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTA)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA); +typedef INT (WINAPI *LPFN_WSALOOKUPSERVICENEXTW)(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW); +typedef INT (WINAPI *LPFN_WSALOOKUPSERVICEEND)(HANDLE); +typedef int (WINAPI *LPFN_WSANSPIoctl)(HANDLE, DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); +typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET, unsigned long, unsigned long *); +typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET, unsigned short, unsigned short *); +typedef int (WINAPI *LPFN_WSARECV)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET, LPWSABUF); +typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +typedef INT (WINAPI *LPFN_WSAREMOVESERVICECLASS)(LPGUID); +typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT); +typedef int (WINAPI *LPFN_WSASEND)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET, LPWSABUF); +typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); +typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT); +typedef INT (WINAPI *LPFN_WSASETSERVICEA)(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD); +typedef INT (WINAPI *LPFN_WSASETSERVICEW)(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD); +typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD); +typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD); +typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT); +typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW)(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT); +typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL); + +#ifdef UNICODE +#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW +#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW +#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW +#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW +#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW +#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW +#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW +#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW +#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW +#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW +#define LPFN_WSASOCKET LPFN_WSASOCKETW +#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW +#define WSAAddressToString WSAAddressToStringW +#define WSADuplicateSocket WSADuplicateSocketW +#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW +#define WSAEnumProtocols WSAEnumProtocolsW +#define WSAGetServiceClassInfo WSAGetServiceClassInfoW +#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW +#define WSASetService WSASetServiceW +#define WSASocket WSASocketW +#define WSAStringToAddress WSAStringToAddressW +#define WSALookupServiceBegin WSALookupServiceBeginW +#define WSALookupServiceNext WSALookupServiceNextW +#define WSAInstallServiceClass WSAInstallServiceClassW +#else +#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA +#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW +#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA +#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA +#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA +#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA +#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA +#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA +#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA +#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA +#define LPFN_WSASOCKET LPFN_WSASOCKETA +#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA +#define WSAAddressToString WSAAddressToStringA +#define WSADuplicateSocket WSADuplicateSocketA +#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA +#define WSAEnumProtocols WSAEnumProtocolsA +#define WSAGetServiceClassInfo WSAGetServiceClassInfoA +#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA +#define WSAInstallServiceClass WSAInstallServiceClassA +#define WSALookupServiceBegin WSALookupServiceBeginA +#define WSALookupServiceNext WSALookupServiceNextA +#define WSASocket WSASocketA +#define WSAStringToAddress WSAStringToAddressA +#define WSASetService WSASetServiceA +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winspool.h b/reactos/w32api/include/winspool.h new file mode 100644 index 00000000000..cc803ca2747 --- /dev/null +++ b/reactos/w32api/include/winspool.h @@ -0,0 +1,791 @@ +#ifndef _WINSPOOL_H +#define _WINSPOOL_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define DI_CHANNEL 1 +#define DI_CHANNEL_WRITE 2 +#define DI_READ_SPOOL_JOB 3 +#define FORM_BUILTIN 1 +#define JOB_CONTROL_PAUSE 1 +#define JOB_CONTROL_RESUME 2 +#define JOB_CONTROL_CANCEL 3 +#define JOB_CONTROL_RESTART 4 +#define JOB_CONTROL_DELETE 5 +#define JOB_STATUS_PAUSED 1 +#define JOB_STATUS_ERROR 2 +#define JOB_STATUS_DELETING 4 +#define JOB_STATUS_SPOOLING 8 +#define JOB_STATUS_PRINTING 16 +#define JOB_STATUS_OFFLINE 32 +#define JOB_STATUS_PAPEROUT 0x40 +#define JOB_STATUS_PRINTED 0x80 +#define JOB_STATUS_DELETED 0x100 +#define JOB_STATUS_BLOCKED_DEVQ 0x200 +#define JOB_STATUS_USER_INTERVENTION 0x400 +#define JOB_POSITION_UNSPECIFIED 0 +#define JOB_NOTIFY_TYPE 1 +#define JOB_NOTIFY_FIELD_PRINTER_NAME 0 +#define JOB_NOTIFY_FIELD_MACHINE_NAME 1 +#define JOB_NOTIFY_FIELD_PORT_NAME 2 +#define JOB_NOTIFY_FIELD_USER_NAME 3 +#define JOB_NOTIFY_FIELD_NOTIFY_NAME 4 +#define JOB_NOTIFY_FIELD_DATATYPE 5 +#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 6 +#define JOB_NOTIFY_FIELD_PARAMETERS 7 +#define JOB_NOTIFY_FIELD_DRIVER_NAME 8 +#define JOB_NOTIFY_FIELD_DEVMODE 9 +#define JOB_NOTIFY_FIELD_STATUS 10 +#define JOB_NOTIFY_FIELD_STATUS_STRING 11 +#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 12 +#define JOB_NOTIFY_FIELD_DOCUMENT 13 +#define JOB_NOTIFY_FIELD_PRIORITY 14 +#define JOB_NOTIFY_FIELD_POSITION 15 +#define JOB_NOTIFY_FIELD_SUBMITTED 16 +#define JOB_NOTIFY_FIELD_START_TIME 17 +#define JOB_NOTIFY_FIELD_UNTIL_TIME 18 +#define JOB_NOTIFY_FIELD_TIME 19 +#define JOB_NOTIFY_FIELD_TOTAL_PAGES 20 +#define JOB_NOTIFY_FIELD_PAGES_PRINTED 21 +#define JOB_NOTIFY_FIELD_TOTAL_BYTES 22 +#define JOB_NOTIFY_FIELD_BYTES_PRINTED 23 +#define JOB_ACCESS_ADMINISTER 16 +#define JOB_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|JOB_ACCESS_ADMINISTER) +#define JOB_READ (STANDARD_RIGHTS_READ| JOB_ACCESS_ADMINISTER) +#define JOB_WRITE (STANDARD_RIGHTS_WRITE|JOB_ACCESS_ADMINISTER) +#define JOB_EXECUTE (STANDARD_RIGHTS_EXECUTE|JOB_ACCESS_ADMINISTER) +#define PRINTER_NOTIFY_OPTIONS_REFRESH 1 +#define PRINTER_ACCESS_ADMINISTER 4 +#define PRINTER_ACCESS_USE 8 +#define PRINTER_ERROR_INFORMATION 0x80000000 +#define PRINTER_ERROR_WARNING 0x40000000 +#define PRINTER_ERROR_SEVERE 0x20000000 +#define PRINTER_ERROR_OUTOFPAPER 1 +#define PRINTER_ERROR_JAM 2 +#define PRINTER_ERROR_OUTOFTONER 4 +#define PRINTER_CONTROL_PAUSE 1 +#define PRINTER_CONTROL_RESUME 2 +#define PRINTER_CONTROL_PURGE 3 +#define PRINTER_CONTROL_SET_STATUS 4 +#define PRINTER_STATUS_PAUSED 1 +#define PRINTER_STATUS_ERROR 2 +#define PRINTER_STATUS_PENDING_DELETION 4 +#define PRINTER_STATUS_PAPER_JAM 8 +#define PRINTER_STATUS_PAPER_OUT 0x10 +#define PRINTER_STATUS_MANUAL_FEED 0x20 +#define PRINTER_STATUS_PAPER_PROBLEM 0x40 +#define PRINTER_STATUS_OFFLINE 0x80 +#define PRINTER_STATUS_IO_ACTIVE 0x100 +#define PRINTER_STATUS_BUSY 0x200 +#define PRINTER_STATUS_PRINTING 0x400 +#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x800 +#define PRINTER_STATUS_NOT_AVAILABLE 0x1000 +#define PRINTER_STATUS_WAITING 0x2000 +#define PRINTER_STATUS_PROCESSING 0x4000 +#define PRINTER_STATUS_INITIALIZING 0x8000 +#define PRINTER_STATUS_WARMING_UP 0x10000 +#define PRINTER_STATUS_TONER_LOW 0x20000 +#define PRINTER_STATUS_NO_TONER 0x40000 +#define PRINTER_STATUS_PAGE_PUNT 0x80000 +#define PRINTER_STATUS_USER_INTERVENTION 0x100000 +#define PRINTER_STATUS_OUT_OF_MEMORY 0x200000 +#define PRINTER_STATUS_DOOR_OPEN 0x400000 +#define PRINTER_STATUS_SERVER_UNKNOWN 0x800000 +#define PRINTER_STATUS_POWER_SAVE 0x1000000 +#define PRINTER_ATTRIBUTE_QUEUED 1 +#define PRINTER_ATTRIBUTE_DIRECT 2 +#define PRINTER_ATTRIBUTE_DEFAULT 4 +#define PRINTER_ATTRIBUTE_SHARED 8 +#define PRINTER_ATTRIBUTE_NETWORK 0x10 +#define PRINTER_ATTRIBUTE_HIDDEN 0x20 +#define PRINTER_ATTRIBUTE_LOCAL 0x40 +#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x80 +#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x100 +#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x200 +#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x400 +#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x800 +#define PRINTER_ATTRIBUTE_RAW_ONLY 0x1000 +#define PRINTER_ATTRIBUTE_PUBLISHED 0x2000 +#define PRINTER_ENUM_DEFAULT 1 +#define PRINTER_ENUM_LOCAL 2 +#define PRINTER_ENUM_CONNECTIONS 4 +#define PRINTER_ENUM_FAVORITE 4 +#define PRINTER_ENUM_NAME 8 +#define PRINTER_ENUM_REMOTE 16 +#define PRINTER_ENUM_SHARED 32 +#define PRINTER_ENUM_NETWORK 0x40 +#define PRINTER_ENUM_EXPAND 0x4000 +#define PRINTER_ENUM_CONTAINER 0x8000 +#define PRINTER_ENUM_ICONMASK 0xff0000 +#define PRINTER_ENUM_ICON1 0x10000 +#define PRINTER_ENUM_ICON2 0x20000 +#define PRINTER_ENUM_ICON3 0x40000 +#define PRINTER_ENUM_ICON4 0x80000 +#define PRINTER_ENUM_ICON5 0x100000 +#define PRINTER_ENUM_ICON6 0x200000 +#define PRINTER_ENUM_ICON7 0x400000 +#define PRINTER_ENUM_ICON8 0x800000 +#define PRINTER_NOTIFY_TYPE 0 +#define PRINTER_NOTIFY_FIELD_SERVER_NAME 0 +#define PRINTER_NOTIFY_FIELD_PRINTER_NAME 1 +#define PRINTER_NOTIFY_FIELD_SHARE_NAME 2 +#define PRINTER_NOTIFY_FIELD_PORT_NAME 3 +#define PRINTER_NOTIFY_FIELD_DRIVER_NAME 4 +#define PRINTER_NOTIFY_FIELD_COMMENT 5 +#define PRINTER_NOTIFY_FIELD_LOCATION 6 +#define PRINTER_NOTIFY_FIELD_DEVMODE 7 +#define PRINTER_NOTIFY_FIELD_SEPFILE 8 +#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 9 +#define PRINTER_NOTIFY_FIELD_PARAMETERS 10 +#define PRINTER_NOTIFY_FIELD_DATATYPE 11 +#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 12 +#define PRINTER_NOTIFY_FIELD_ATTRIBUTES 13 +#define PRINTER_NOTIFY_FIELD_PRIORITY 14 +#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 15 +#define PRINTER_NOTIFY_FIELD_START_TIME 16 +#define PRINTER_NOTIFY_FIELD_UNTIL_TIME 17 +#define PRINTER_NOTIFY_FIELD_STATUS 18 +#define PRINTER_NOTIFY_FIELD_STATUS_STRING 19 +#define PRINTER_NOTIFY_FIELD_CJOBS 20 +#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM 21 +#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES 22 +#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED 23 +#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES 24 +#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED 25 +#define PRINTER_CHANGE_ADD_PRINTER 1 +#define PRINTER_CHANGE_SET_PRINTER 2 +#define PRINTER_CHANGE_DELETE_PRINTER 4 +#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 8 +#define PRINTER_CHANGE_PRINTER 0xFF +#define PRINTER_CHANGE_ADD_JOB 0x100 +#define PRINTER_CHANGE_SET_JOB 0x200 +#define PRINTER_CHANGE_DELETE_JOB 0x400 +#define PRINTER_CHANGE_WRITE_JOB 0x800 +#define PRINTER_CHANGE_JOB 0xFF00 +#define PRINTER_CHANGE_ADD_FORM 0x10000 +#define PRINTER_CHANGE_SET_FORM 0x20000 +#define PRINTER_CHANGE_DELETE_FORM 0x40000 +#define PRINTER_CHANGE_FORM 0x70000 +#define PRINTER_CHANGE_ADD_PORT 0x100000 +#define PRINTER_CHANGE_CONFIGURE_PORT 0x200000 +#define PRINTER_CHANGE_DELETE_PORT 0x400000 +#define PRINTER_CHANGE_PORT 0x700000 +#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x1000000 +#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x4000000 +#define PRINTER_CHANGE_PRINT_PROCESSOR 0x7000000 +#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000 +#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000 +#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000 +#define PRINTER_CHANGE_PRINTER_DRIVER 0x70000000 +#define PRINTER_CHANGE_TIMEOUT 0x80000000 +#define PRINTER_CHANGE_ALL 0x7777FFFF +#define PRINTER_NOTIFY_INFO_DISCARDED 1 +#define PRINTER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE) +#define PRINTER_READ (STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE) +#define PRINTER_WRITE (STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE) +#define PRINTER_EXECUTE (STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE) +#define NO_PRIORITY 0 +#define MAX_PRIORITY 99 +#define MIN_PRIORITY 1 +#define DEF_PRIORITY 1 +#define PORT_TYPE_WRITE 1 +#define PORT_TYPE_READ 2 +#define PORT_TYPE_REDIRECTED 4 +#define PORT_TYPE_NET_ATTACHED 8 +#define SERVER_ACCESS_ADMINISTER 1 +#define SERVER_ACCESS_ENUMERATE 2 +#define SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE) +#define SERVER_READ (STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE) +#define SERVER_WRITE (STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE) +#define SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE) +#define PORT_STATUS_TYPE_ERROR 1 +#define PORT_STATUS_TYPE_WARNING 2 +#define PORT_STATUS_TYPE_INFO 3 +#define PORT_STATUS_OFFLINE 1 +#define PORT_STATUS_PAPER_JAM 2 +#define PORT_STATUS_PAPER_OUT 3 +#define PORT_STATUS_OUTPUT_BIN_FULL 4 +#define PORT_STATUS_PAPER_PROBLEM 5 +#define PORT_STATUS_NO_TONER 6 +#define PORT_STATUS_DOOR_OPEN 7 +#define PORT_STATUS_USER_INTERVENTION 8 +#define PORT_STATUS_OUT_OF_MEMORY 9 +#define PORT_STATUS_TONER_LOW 10 +#define PORT_STATUS_WARMING_UP 11 +#define PORT_STATUS_POWER_SAVE 12 +#ifndef RC_INVOKED +typedef struct _ADDJOB_INFO_1A { + LPSTR Path; + DWORD JobId; +} ADDJOB_INFO_1A,*PADDJOB_INFO_1A,*LPADDJOB_INFO_1A; +typedef struct _ADDJOB_INFO_1W { + LPWSTR Path; + DWORD JobId; +} ADDJOB_INFO_1W,*PADDJOB_INFO_1W,*LPADDJOB_INFO_1W; +typedef struct _DATATYPES_INFO_1A{LPSTR pName;} DATATYPES_INFO_1A,*PDATATYPES_INFO_1A,*LPDATATYPES_INFO_1A; +typedef struct _DATATYPES_INFO_1W{LPWSTR pName;} DATATYPES_INFO_1W,*PDATATYPES_INFO_1W,*LPDATATYPES_INFO_1W; +typedef 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; +} JOB_INFO_1A,*PJOB_INFO_1A,*LPJOB_INFO_1A; +typedef 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; +} JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W; +typedef 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; +} JOB_INFO_2A,*PJOB_INFO_2A,*LPJOB_INFO_2A; +typedef 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; +} JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W; +typedef struct _DOC_INFO_1A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; +} DOC_INFO_1A,*PDOC_INFO_1A,*LPDOC_INFO_1A; +typedef struct _DOC_INFO_1W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; +} DOC_INFO_1W,*PDOC_INFO_1W,*LPDOC_INFO_1W; +typedef struct _DOC_INFO_2A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} DOC_INFO_2A,*PDOC_INFO_2A,*LPDOC_INFO_2A; +typedef struct _DOC_INFO_2W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} DOC_INFO_2W,*PDOC_INFO_2W,*LPDOC_INFO_2W; +typedef struct _DRIVER_INFO_1A {LPSTR pName;} DRIVER_INFO_1A,*PDRIVER_INFO_1A,*LPDRIVER_INFO_1A; +typedef struct _DRIVER_INFO_1W {LPWSTR pName;} DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W; +typedef struct _DRIVER_INFO_2A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; +} DRIVER_INFO_2A,*PDRIVER_INFO_2A,*LPDRIVER_INFO_2A; +typedef struct _DRIVER_INFO_2W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; +} DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W; +typedef struct _DRIVER_INFO_3A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; +} DRIVER_INFO_3A,*PDRIVER_INFO_3A,*LPDRIVER_INFO_3A; +typedef struct _DRIVER_INFO_3W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; +} DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W; +typedef struct _MONITOR_INFO_1A{LPSTR pName;} MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A; +typedef struct _MONITOR_INFO_1W{LPWSTR pName;} MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W; +typedef struct _PORT_INFO_1A {LPSTR pName;} PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A; +typedef struct _PORT_INFO_1W {LPWSTR pName;} PORT_INFO_1W,*PPORT_INFO_1W,*LPPORT_INFO_1W; +typedef struct _MONITOR_INFO_2A{ + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} MONITOR_INFO_2A,*PMONITOR_INFO_2A,*LPMONITOR_INFO_2A; +typedef struct _MONITOR_INFO_2W{ + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} MONITOR_INFO_2W,*PMONITOR_INFO_2W,*LPMONITOR_INFO_2W; +typedef struct _PORT_INFO_2A { + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} PORT_INFO_2A,*PPORT_INFO_2A,*LPPORT_INFO_2A; +typedef struct _PORT_INFO_2W { + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} PORT_INFO_2W,*PPORT_INFO_2W,*LPPORT_INFO_2W; +typedef struct _PORT_INFO_3A { + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; +} PORT_INFO_3A,*PPORT_INFO_3A,*LPPORT_INFO_3A; +typedef struct _PORT_INFO_3W { + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; +} PORT_INFO_3W,*PPORT_INFO_3W,*LPPORT_INFO_3W; +typedef struct _PRINTER_INFO_1A { + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; +} PRINTER_INFO_1A,*PPRINTER_INFO_1A,*LPPRINTER_INFO_1A; +typedef struct _PRINTER_INFO_1W { + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; +} PRINTER_INFO_1W,*PPRINTER_INFO_1W,*LPPRINTER_INFO_1W; +typedef 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; +} PRINTER_INFO_2A,*PPRINTER_INFO_2A,*LPPRINTER_INFO_2A; +typedef 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; +} PRINTER_INFO_2W,*PPRINTER_INFO_2W,*LPPRINTER_INFO_2W; +typedef struct _PRINTER_INFO_3 { + PSECURITY_DESCRIPTOR pSecurityDescriptor; +} PRINTER_INFO_3,*PPRINTER_INFO_3,*LPPRINTER_INFO_3; +typedef struct _PRINTER_INFO_4A { + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; +} PRINTER_INFO_4A,*PPRINTER_INFO_4A,*LPPRINTER_INFO_4A; +typedef struct _PRINTER_INFO_4W { + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; +} PRINTER_INFO_4W,*PPRINTER_INFO_4W,*LPPRINTER_INFO_4W; +typedef struct _PRINTER_INFO_5A { + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} PRINTER_INFO_5A,*PPRINTER_INFO_5A,*LPPRINTER_INFO_5A; +typedef struct _PRINTER_INFO_5W { + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} PRINTER_INFO_5W,*PPRINTER_INFO_5W,*LPPRINTER_INFO_5W; +typedef struct _PRINTER_INFO_6 { + DWORD dwStatus; +} PRINTER_INFO_6,*PPRINTER_INFO_6,*LPPRINTER_INFO_6; +typedef struct _PRINTPROCESSOR_INFO_1A {LPSTR pName;} PRINTPROCESSOR_INFO_1A,*PPRINTPROCESSOR_INFO_1A,*LPPRINTPROCESSOR_INFO_1A; +typedef struct _PRINTPROCESSOR_INFO_1W {LPWSTR pName;} PRINTPROCESSOR_INFO_1W,*PPRINTPROCESSOR_INFO_1W,*LPPRINTPROCESSOR_INFO_1W; +typedef struct _PRINTER_NOTIFY_INFO_DATA { + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; + union { + DWORD adwData[2]; + struct { + DWORD cbBuf; + PVOID pBuf; + } Data; + } NotifyData; +} PRINTER_NOTIFY_INFO_DATA,*PPRINTER_NOTIFY_INFO_DATA,*LPPRINTER_NOTIFY_INFO_DATA; +typedef struct _PRINTER_NOTIFY_INFO { + DWORD Version; + DWORD Flags; + DWORD Count; + PRINTER_NOTIFY_INFO_DATA aData[1]; +} PRINTER_NOTIFY_INFO,*PPRINTER_NOTIFY_INFO,*LPPRINTER_NOTIFY_INFO; +typedef struct _FORM_INFO_1A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; +} FORM_INFO_1A,*PFORM_INFO_1A,*LPFORM_INFO_1A; +typedef struct _FORM_INFO_1W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; +} FORM_INFO_1W,*PFORM_INFO_1W,*LPFORM_INFO_1W; +typedef struct _PRINTER_DEFAULTSA { + LPSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA; +typedef struct _PRINTER_DEFAULTSW { + LPWSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW; + +BOOL WINAPI AbortPrinter(HANDLE); +BOOL WINAPI AddFormA(HANDLE,DWORD,PBYTE); +BOOL WINAPI AddFormW(HANDLE,DWORD,PBYTE); +BOOL WINAPI AddJobA(HANDLE,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI AddJobW(HANDLE,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI AddMonitorA(LPSTR,DWORD,PBYTE); +BOOL WINAPI AddMonitorW(LPWSTR,DWORD,PBYTE); +BOOL WINAPI AddPortA(LPSTR,HWND,LPSTR); +BOOL WINAPI AddPortW(LPWSTR,HWND,LPWSTR); +HANDLE WINAPI AddPrinterA(LPSTR,DWORD,PBYTE); +HANDLE WINAPI AddPrinterW(LPWSTR,DWORD,PBYTE); +BOOL WINAPI AddPrinterConnectionA(LPSTR); +BOOL WINAPI AddPrinterConnectionW(LPWSTR); +BOOL WINAPI AddPrinterDriverA(LPSTR,DWORD,PBYTE); +BOOL WINAPI AddPrinterDriverW(LPWSTR,DWORD,PBYTE); +BOOL WINAPI AddPrintProcessorA(LPSTR,LPSTR,LPSTR,LPSTR); +BOOL WINAPI AddPrintProcessorW(LPWSTR,LPWSTR,LPWSTR,LPWSTR); +BOOL WINAPI AddPrintProvidorA(LPSTR,DWORD,PBYTE); +BOOL WINAPI AddPrintProvidorW(LPWSTR,DWORD,PBYTE); +LONG WINAPI AdvancedDocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODE,PDEVMODEA); +LONG WINAPI AdvancedDocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODE,PDEVMODEW); +BOOL WINAPI ClosePrinter(HANDLE); +BOOL WINAPI ConfigurePortA(LPSTR,HWND,LPSTR); +BOOL WINAPI ConfigurePortW(LPWSTR,HWND,LPWSTR); +HANDLE WINAPI ConnectToPrinterDlg(HWND,DWORD); +BOOL WINAPI DeleteFormA(HANDLE,LPSTR); +BOOL WINAPI DeleteFormW(HANDLE,LPWSTR); +BOOL WINAPI DeleteMonitorA(LPSTR,LPSTR,LPSTR); +BOOL WINAPI DeleteMonitorW(LPWSTR,LPWSTR,LPWSTR); +BOOL WINAPI DeletePortA(LPSTR,HWND,LPSTR); +BOOL WINAPI DeletePortW(LPWSTR,HWND,LPWSTR); +BOOL WINAPI DeletePrinter(HANDLE); +BOOL WINAPI DeletePrinterConnectionA(LPSTR); +BOOL WINAPI DeletePrinterConnectionW(LPWSTR); +DWORD WINAPI DeletePrinterDataA(HANDLE,LPSTR); +DWORD WINAPI DeletePrinterDataW(HANDLE,LPWSTR); +BOOL WINAPI DeletePrinterDriverA(LPSTR,LPSTR,LPSTR); +BOOL WINAPI DeletePrinterDriverW(LPWSTR,LPWSTR,LPWSTR); +BOOL WINAPI DeletePrintProcessorA(LPSTR,LPSTR,LPSTR); +BOOL WINAPI DeletePrintProcessorW(LPWSTR,LPWSTR,LPWSTR); +BOOL WINAPI DeletePrintProvidorA(LPSTR,LPSTR,LPSTR); +BOOL WINAPI DeletePrintProvidorW(LPWSTR,LPWSTR,LPWSTR); +LONG WINAPI DocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODEA,PDEVMODEA,DWORD); +LONG WINAPI DocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODEA,PDEVMODEA,DWORD); +BOOL WINAPI EndDocPrinter(HANDLE); +BOOL WINAPI EndPagePrinter(HANDLE); +BOOL WINAPI EnumFormsA(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumFormsW(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumJobsA(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumJobsW(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumMonitorsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumMonitorsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPortsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPortsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +DWORD WINAPI EnumPrinterDataA(HANDLE,DWORD,LPSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI EnumPrinterDataW(HANDLE,DWORD,LPWSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI EnumPrinterDriversA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPrinterDriversW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPrintersA(DWORD,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPrintersW(DWORD,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPrintProcessorsA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumPrintProcessorsW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD); +BOOL WINAPI FindClosePrinterChangeNotification(HANDLE); +HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE,DWORD,DWORD,PVOID); +HANDLE WINAPI FindNextPrinterChangeNotification(HANDLE,PDWORD,PVOID,PVOID*); +BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO); +#if _WIN32_WINNT >= 0x0500 +BOOL WINAPI GetDefaultPrinterA(LPSTR,LPDWORD); +BOOL WINAPI GetDefaultPrinterW(LPWSTR,LPDWORD); +#endif +BOOL WINAPI GetFormA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI GetFormW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI GetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI GetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI GetPrinterA(HANDLE,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI GetPrinterW(HANDLE,DWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrinterDataA(HANDLE,LPSTR,PDWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrinterDataW(HANDLE,LPWSTR,PDWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrinterDriverA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrinterDriverW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrintProcessorDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD); +DWORD WINAPI GetPrintProcessorDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD); +BOOL WINAPI OpenPrinterA(LPSTR,PHANDLE,LPPRINTER_DEFAULTSA); +BOOL WINAPI OpenPrinterW(LPWSTR,PHANDLE,LPPRINTER_DEFAULTSW); +DWORD WINAPI PrinterMessageBoxA(HANDLE,DWORD,HWND,LPSTR,LPSTR,DWORD); +DWORD WINAPI PrinterMessageBoxW(HANDLE,DWORD,HWND,LPWSTR,LPWSTR,DWORD); +BOOL WINAPI PrinterProperties(HWND,HANDLE); +BOOL WINAPI ReadPrinter(HANDLE,PVOID,DWORD,PDWORD); +BOOL WINAPI ResetPrinterA(HANDLE,LPPRINTER_DEFAULTSA); +BOOL WINAPI ResetPrinterW(HANDLE,LPPRINTER_DEFAULTSW); +BOOL WINAPI ScheduleJob(HANDLE,DWORD); +BOOL WINAPI SetFormA(HANDLE,LPSTR,DWORD,PBYTE); +BOOL WINAPI SetFormW(HANDLE,LPWSTR,DWORD,PBYTE); +BOOL WINAPI SetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD); +BOOL WINAPI SetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD); +BOOL WINAPI SetPrinterA(HANDLE,DWORD,PBYTE,DWORD); +BOOL WINAPI SetPrinterW(HANDLE,DWORD,PBYTE,DWORD); +BOOL WINAPI SetPrinterDataA(HANDLE,LPSTR,DWORD,PBYTE,DWORD); +BOOL WINAPI SetPrinterDataW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD); +DWORD WINAPI StartDocPrinterA(HANDLE,DWORD,PBYTE); +DWORD WINAPI StartDocPrinterW(HANDLE,DWORD,PBYTE); +BOOL WINAPI StartPagePrinter(HANDLE); +DWORD WINAPI WaitForPrinterChange(HANDLE,DWORD); +BOOL WINAPI WritePrinter(HANDLE,PVOID,DWORD,PDWORD); + +#ifdef UNICODE +typedef JOB_INFO_1W JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1; +typedef JOB_INFO_2W JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2; +typedef ADDJOB_INFO_1W ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1; +typedef DATATYPES_INFO_1W DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1; +typedef MONITOR_INFO_1W MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1; +typedef MONITOR_INFO_2W MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2; +typedef DOC_INFO_1W DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1; +typedef DOC_INFO_2W DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2; +typedef PORT_INFO_1W PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1; +typedef PORT_INFO_2W PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2; +typedef PORT_INFO_3W PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3; +typedef DRIVER_INFO_2W DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2; +typedef PRINTER_INFO_1W PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1; +typedef PRINTER_INFO_2W PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2; +typedef PRINTER_INFO_4W PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4; +typedef PRINTER_INFO_5W PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5; +typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1; +typedef FORM_INFO_1W FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1; +typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS; +#define AddForm AddFormW +#define AddJob AddJobW +#define AddMonitor AddMonitorW +#define AddPort AddPortW +#define AddPrinter AddPrinterW +#define AddPrinterConnection AddPrinterConnectionW +#define AddPrinterDriver AddPrinterDriverW +#define AddPrintProcessor AddPrintProcessorW +#define AddPrintProvidor AddPrintProvidorW +#define AdvancedDocumentProperties AdvancedDocumentPropertiesW +#define ConfigurePort ConfigurePortW +#define DeleteForm DeleteFormW +#define DeleteMonitor DeleteMonitorW +#define DeletePort DeletePortW +#define DeletePrinterConnection DeletePrinterConnectionW +#define DeletePrinterData DeletePrinterDataW +#define DeletePrinterDriver DeletePrinterDriverW +#define DeletePrintProcessor DeletePrinterProcessorW +#define DeletePrintProvidor DeletePrinterProvidorW +#define DocumentProperties DocumentPropertiesW +#define EnumForms EnumFormsW +#define EnumJobs EnumJobsW +#define EnumMonitors EnumMonitorsW +#define EnumPorts EnumPortsW +#define EnumPrinterData EnumPrinterDataW +#define EnumPrinterDrivers EnumPrinterDriversW +#define EnumPrinters EnumPrintersW +#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW +#define EnumPrintProcessors EnumPrintProcessorsW +#define GetDefaultPrinter GetDefaultPrinterW +#define GetForm GetFormW +#define GetJob GetJobW +#define GetPrinter GetPrinterW +#define GetPrinterData GetPrinterDataW +#define GetPrinterDriver GetPrinterDriverW +#define GetPrinterDriverDirectory GetPrinterDriverDirectoryW +#define GetPrintProcessorDirectory GetPrintProcessorDirectoryW +#define OpenPrinter OpenPrinterW +#define PrinterMessageBox PrinterMessageBoxW +#define ResetPrinter ResetPrinterW +#define SetForm SetFormW +#define SetJob SetJobW +#define SetPrinter SetPrinterW +#define SetPrinterData SetPrinterDataW +#define StartDocPrinter StartDocPrinterW +#else +typedef JOB_INFO_1A JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1; +typedef JOB_INFO_2A JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2; +typedef ADDJOB_INFO_1A ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1; +typedef DATATYPES_INFO_1A DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1; +typedef MONITOR_INFO_1A MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1; +typedef MONITOR_INFO_2A MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2; +typedef DOC_INFO_1A DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1; +typedef DOC_INFO_2A DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2; +typedef PORT_INFO_1A PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1; +typedef PORT_INFO_2A PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2; +typedef PORT_INFO_3A PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3; +typedef DRIVER_INFO_2A DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2; +typedef PRINTER_INFO_1A PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1; +typedef PRINTER_INFO_2A PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2; +typedef PRINTER_INFO_4A PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4; +typedef PRINTER_INFO_5A PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5; +typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1; +typedef FORM_INFO_1A FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1; +typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS; +#define AddForm AddFormA +#define AddJob AddJobA +#define AddMonitor AddMonitorA +#define AddPort AddPortA +#define AddPrinter AddPrinterA +#define AddPrinterConnection AddPrinterConnectionA +#define AddPrinterDriver AddPrinterDriverA +#define AddPrintProcessor AddPrintProcessorA +#define AddPrintProvidor AddPrintProvidorA +#define AdvancedDocumentProperties AdvancedDocumentPropertiesA +#define ConfigurePort ConfigurePortA +#define DeleteForm DeleteFormA +#define DeleteMonitor DeleteMonitorA +#define DeletePort DeletePortA +#define DeletePrinterConnection DeletePrinterConnectionA +#define DeletePrinterData DeletePrinterDataA +#define DeletePrinterDriver DeletePrinterDriverA +#define DeletePrintProcessor DeletePrinterProcessorA +#define DeletePrintProvidor DeletePrinterProvidorA +#define DocumentProperties DocumentPropertiesA +#define EnumForms EnumFormsA +#define EnumJobs EnumJobsA +#define EnumMonitors EnumMonitorsA +#define EnumPorts EnumPortsA +#define EnumPrinterData EnumPrinterDataA +#define EnumPrinterDrivers EnumPrinterDriversA +#define EnumPrinters EnumPrintersA +#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA +#define EnumPrintProcessors EnumPrintProcessorsA +#define GetDefaultPrinter GetDefaultPrinterA +#define GetForm GetFormA +#define GetJob GetJobA +#define GetPrinter GetPrinterA +#define GetPrinterData GetPrinterDataA +#define GetPrinterDriver GetPrinterDriverA +#define GetPrinterDriverDirectory GetPrinterDriverDirectoryA +#define GetPrintProcessorDirectory GetPrintProcessorDirectoryA +#define OpenPrinter OpenPrinterA +#define PrinterMessageBox PrinterMessageBoxA +#define ResetPrinter ResetPrinterA +#define SetForm SetFormA +#define SetJob SetJobA +#define SetPrinter SetPrinterA +#define SetPrinterData SetPrinterDataA +#define StartDocPrinter StartDocPrinterA +#endif +#endif /* RC_INVOKED */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winsvc.h b/reactos/w32api/include/winsvc.h new file mode 100644 index 00000000000..cfc3f57a9d2 --- /dev/null +++ b/reactos/w32api/include/winsvc.h @@ -0,0 +1,309 @@ +#ifndef _WINSVC_H +#define _WINSVC_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define SERVICES_ACTIVE_DATABASEA "ServicesActive" +#define SERVICES_ACTIVE_DATABASEW L"ServicesActive" +#define SERVICES_FAILED_DATABASEA "ServicesFailed" +#define SERVICES_FAILED_DATABASEW L"ServicesFailed" +#define SC_GROUP_IDENTIFIERA '+' +#define SC_GROUP_IDENTIFIERW L'+' +#define SC_MANAGER_ALL_ACCESS 0xf003f +#define SC_MANAGER_CONNECT 1 +#define SC_MANAGER_CREATE_SERVICE 2 +#define SC_MANAGER_ENUMERATE_SERVICE 4 +#define SC_MANAGER_LOCK 8 +#define SC_MANAGER_QUERY_LOCK_STATUS 16 +#define SC_MANAGER_MODIFY_BOOT_CONFIG 32 +#define SERVICE_NO_CHANGE 0xffffffff +#define SERVICE_STOPPED 1 +#define SERVICE_START_PENDING 2 +#define SERVICE_STOP_PENDING 3 +#define SERVICE_RUNNING 4 +#define SERVICE_CONTINUE_PENDING 5 +#define SERVICE_PAUSE_PENDING 6 +#define SERVICE_PAUSED 7 +#define SERVICE_ACCEPT_STOP 1 +#define SERVICE_ACCEPT_PAUSE_CONTINUE 2 +#define SERVICE_ACCEPT_SHUTDOWN 4 +#define SERVICE_ACCEPT_PARAMCHANGE 8 +#define SERVICE_ACCEPT_NETBINDCHANGE 16 +#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 32 +#define SERVICE_ACCEPT_POWEREVENT 64 +#define SERVICE_ACCEPT_SESSIONCHANGE 128 +#define SERVICE_CONTROL_STOP 1 +#define SERVICE_CONTROL_PAUSE 2 +#define SERVICE_CONTROL_CONTINUE 3 +#define SERVICE_CONTROL_INTERROGATE 4 +#define SERVICE_CONTROL_SHUTDOWN 5 +#define SERVICE_CONTROL_PARAMCHANGE 6 +#define SERVICE_CONTROL_NETBINDADD 7 +#define SERVICE_CONTROL_NETBINDREMOVE 8 +#define SERVICE_CONTROL_NETBINDENABLE 9 +#define SERVICE_CONTROL_NETBINDDISABLE 10 +#define SERVICE_CONTROL_DEVICEEVENT 11 +#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 12 +#define SERVICE_CONTROL_POWEREVENT 13 +#define SERVICE_CONTROL_SESSIONCHANGE 14 +#define SERVICE_ACTIVE 1 +#define SERVICE_INACTIVE 2 +#define SERVICE_STATE_ALL 3 +#define SERVICE_QUERY_CONFIG 1 +#define SERVICE_CHANGE_CONFIG 2 +#define SERVICE_QUERY_STATUS 4 +#define SERVICE_ENUMERATE_DEPENDENTS 8 +#define SERVICE_START 16 +#define SERVICE_STOP 32 +#define SERVICE_PAUSE_CONTINUE 64 +#define SERVICE_INTERROGATE 128 +#define SERVICE_USER_DEFINED_CONTROL 256 +#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVICE_QUERY_CONFIG|SERVICE_CHANGE_CONFIG|SERVICE_QUERY_STATUS|SERVICE_ENUMERATE_DEPENDENTS|SERVICE_START|SERVICE_STOP|SERVICE_PAUSE_CONTINUE|SERVICE_INTERROGATE|SERVICE_USER_DEFINED_CONTROL) +#define SERVICE_RUNS_IN_SYSTEM_PROCESS 1 +#define SERVICE_CONFIG_DESCRIPTION 1 +#define SERVICE_CONFIG_FAILURE_ACTIONS 2 + +typedef struct _SERVICE_STATUS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; +} SERVICE_STATUS,*LPSERVICE_STATUS; +typedef struct _SERVICE_STATUS_PROCESS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; + DWORD dwProcessId; + DWORD dwServiceFlags; +} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS; +typedef enum _SC_STATUS_TYPE { + SC_STATUS_PROCESS_INFO = 0 +} SC_STATUS_TYPE; +typedef enum _SC_ENUM_TYPE { + SC_ENUM_PROCESS_INFO = 0 +} SC_ENUM_TYPE; +typedef struct _ENUM_SERVICE_STATUSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA; +typedef struct _ENUM_SERVICE_STATUSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW; +typedef struct _ENUM_SERVICE_STATUS_PROCESSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; +} ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA; +typedef struct _ENUM_SERVICE_STATUS_PROCESSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; +} ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW; +typedef struct _QUERY_SERVICE_CONFIGA { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPSTR lpBinaryPathName; + LPSTR lpLoadOrderGroup; + DWORD dwTagId; + LPSTR lpDependencies; + LPSTR lpServiceStartName; + LPSTR lpDisplayName; +} QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA; +typedef struct _QUERY_SERVICE_CONFIGW { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPWSTR lpBinaryPathName; + LPWSTR lpLoadOrderGroup; + DWORD dwTagId; + LPWSTR lpDependencies; + LPWSTR lpServiceStartName; + LPWSTR lpDisplayName; +} QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW; +typedef struct _QUERY_SERVICE_LOCK_STATUSA { + DWORD fIsLocked; + LPSTR lpLockOwner; + DWORD dwLockDuration; +} QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA; +typedef struct _QUERY_SERVICE_LOCK_STATUSW { + DWORD fIsLocked; + LPWSTR lpLockOwner; + DWORD dwLockDuration; +} QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW; +typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*); +typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*); +typedef struct _SERVICE_TABLE_ENTRYA { + LPSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONA lpServiceProc; +} SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA; +typedef struct _SERVICE_TABLE_ENTRYW { + LPWSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONW lpServiceProc; +} SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW; +DECLARE_HANDLE(SC_HANDLE); +typedef SC_HANDLE *LPSC_HANDLE; +typedef PVOID SC_LOCK; +typedef DWORD SERVICE_STATUS_HANDLE; +typedef VOID(WINAPI *LPHANDLER_FUNCTION)(DWORD); +typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID); +typedef struct _SERVICE_DESCRIPTIONA { + LPSTR lpDescription; +} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA; +typedef struct _SERVICE_DESCRIPTIONW { + LPWSTR lpDescription; +} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW; +typedef enum _SC_ACTION_TYPE { + SC_ACTION_NONE = 0, + SC_ACTION_RESTART = 1, + SC_ACTION_REBOOT = 2, + SC_ACTION_RUN_COMMAND = 3 +} SC_ACTION_TYPE; +typedef struct _SC_ACTION { + SC_ACTION_TYPE Type; + DWORD Delay; +} SC_ACTION,*LPSC_ACTION; +typedef struct _SERVICE_FAILURE_ACTIONSA { + DWORD dwResetPeriod; + LPSTR lpRebootMsg; + LPSTR lpCommand; + DWORD cActions; + SC_ACTION * lpsaActions; +} SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA; +typedef struct _SERVICE_FAILURE_ACTIONSW { + DWORD dwResetPeriod; + LPWSTR lpRebootMsg; + LPWSTR lpCommand; + DWORD cActions; + SC_ACTION * lpsaActions; +} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW; + +BOOL WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +BOOL WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID); +BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID); +BOOL WINAPI CloseServiceHandle(SC_HANDLE); +BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS); +SC_HANDLE WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,PDWORD,LPCSTR,LPCSTR,LPCSTR); +SC_HANDLE WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,PDWORD,LPCWSTR,LPCWSTR,LPCWSTR); +BOOL WINAPI DeleteService(SC_HANDLE); +BOOL WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD); +BOOL WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD,PDWORD); +BOOL WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD,PDWORD); +BOOL WINAPI EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR); +BOOL WINAPI EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR); +BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD); +BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD); +BOOL WINAPI GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD); +BOOL WINAPI GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD); +SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE); +BOOL WINAPI NotifyBootConfigStatus(BOOL); +SC_HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD); +SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD); +SC_HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD); +SC_HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD); +BOOL WINAPI QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,PDWORD); +BOOL WINAPI QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,PDWORD); +BOOL WINAPI QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD); +BOOL WINAPI QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD); +BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,PDWORD); +BOOL WINAPI QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,PDWORD); +BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD); +BOOL WINAPI QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS); +BOOL WINAPI QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD); +SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION); +SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION); +SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID); +SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID); +BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS); +BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*); +BOOL WINAPI StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); +BOOL WINAPI StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); +BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*); +BOOL WINAPI UnlockServiceDatabase(SC_LOCK); + +#ifdef UNICODE +typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS; +typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; +typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS; +typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG; +typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS; +typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY; +typedef LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; +typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; +typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION; +typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; +typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS; +#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW +#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW +#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW +#define ChangeServiceConfig ChangeServiceConfigW +#define ChangeServiceConfig2 ChangeServiceConfig2W +#define CreateService CreateServiceW +#define EnumDependentServices EnumDependentServicesW +#define EnumServicesStatus EnumServicesStatusW +#define EnumServicesStatusEx EnumServicesStatusExW +#define GetServiceDisplayName GetServiceDisplayNameW +#define GetServiceKeyName GetServiceKeyNameW +#define OpenSCManager OpenSCManagerW +#define OpenService OpenServiceW +#define QueryServiceConfig QueryServiceConfigW +#define QueryServiceConfig2 QueryServiceConfig2W +#define QueryServiceLockStatus QueryServiceLockStatusW +#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW +#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW +#define StartService StartServiceW +#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW +#else +typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS; +typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; +typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS; +typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG; +typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS; +typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY; +typedef LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; +typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; +typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION; +typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; +typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS; +#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA +#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA +#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA +#define ChangeServiceConfig ChangeServiceConfigA +#define ChangeServiceConfig2 ChangeServiceConfig2A +#define CreateService CreateServiceA +#define EnumDependentServices EnumDependentServicesA +#define EnumServicesStatus EnumServicesStatusA +#define EnumServicesStatusEx EnumServicesStatusExA +#define GetServiceDisplayName GetServiceDisplayNameA +#define GetServiceKeyName GetServiceKeyNameA +#define OpenSCManager OpenSCManagerA +#define OpenService OpenServiceA +#define QueryServiceConfig QueryServiceConfigA +#define QueryServiceConfig2 QueryServiceConfig2A +#define QueryServiceLockStatus QueryServiceLockStatusA +#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA +#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA +#define StartService StartServiceA +#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA +#endif +#ifdef __cplusplus +} +#endif +#endif /* _WINSVC_H */ diff --git a/reactos/w32api/include/winuser.h b/reactos/w32api/include/winuser.h new file mode 100644 index 00000000000..2c094c5db55 --- /dev/null +++ b/reactos/w32api/include/winuser.h @@ -0,0 +1,4123 @@ +#ifndef _WINUSER_H +#define _WINUSER_H +#if __GNUC__ >= 3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define WC_DIALOG MAKEINTATOM(0x8002) +#define FALT 16 +#define FCONTROL 8 +#define FNOINVERT 2 +#define FSHIFT 4 +#define FVIRTKEY 1 +#define ATF_TIMEOUTON 1 +#define ATF_ONOFFFEEDBACK 2 +#define ATF_AVAILABLE 4 /* May be obsolete. Not in recent MS docs. */ +#define WH_MIN (-1) +#define WH_MSGFILTER (-1) +#define WH_JOURNALRECORD 0 +#define WH_JOURNALPLAYBACK 1 +#define WH_KEYBOARD 2 +#define WH_GETMESSAGE 3 +#define WH_CALLWNDPROC 4 +#define WH_CBT 5 +#define WH_SYSMSGFILTER 6 +#define WH_MOUSE 7 +#define WH_HARDWARE 8 +#define WH_DEBUG 9 +#define WH_SHELL 10 +#define WH_FOREGROUNDIDLE 11 +#define WH_CALLWNDPROCRET 12 +#define WH_KEYBOARD_LL 13 +#define WH_MOUSE_LL 14 +#define WH_MAX 14 +#define WH_MINHOOK WH_MIN +#define WH_MAXHOOK WH_MAX +#define HC_ACTION 0 +#define HC_GETNEXT 1 +#define HC_SKIP 2 +#define HC_NOREMOVE 3 +#define HC_NOREM 3 +#define HC_SYSMODALON 4 +#define HC_SYSMODALOFF 5 +#define HCBT_MOVESIZE 0 +#define HCBT_MINMAX 1 +#define HCBT_QS 2 +#define HCBT_CREATEWND 3 +#define HCBT_DESTROYWND 4 +#define HCBT_ACTIVATE 5 +#define HCBT_CLICKSKIPPED 6 +#define HCBT_KEYSKIPPED 7 +#define HCBT_SYSCOMMAND 8 +#define HCBT_SETFOCUS 9 +#define CF_TEXT 1 +#define CF_BITMAP 2 +#define CF_METAFILEPICT 3 +#define CF_SYLK 4 +#define CF_DIF 5 +#define CF_TIFF 6 +#define CF_OEMTEXT 7 +#define CF_DIB 8 +#define CF_PALETTE 9 +#define CF_PENDATA 10 +#define CF_RIFF 11 +#define CF_WAVE 12 +#define CF_UNICODETEXT 13 +#define CF_ENHMETAFILE 14 +#define CF_HDROP 15 +#define CF_LOCALE 16 +#define CF_MAX 17 +#define CF_OWNERDISPLAY 128 +#define CF_DSPTEXT 129 +#define CF_DSPBITMAP 130 +#define CF_DSPMETAFILEPICT 131 +#define CF_DSPENHMETAFILE 142 +#define CF_PRIVATEFIRST 512 +#define CF_PRIVATELAST 767 +#define CF_GDIOBJFIRST 768 +#define CF_GDIOBJLAST 1023 +#define HKL_NEXT 1 +#define HKL_PREV 0 +#define KLF_ACTIVATE 1 +#define KLF_SUBSTITUTE_OK 2 +#define KLF_UNLOADPREVIOUS 4 +#define KLF_REORDER 8 +#define KLF_REPLACELANG 16 +#define KLF_NOTELLSHELL 128 +#define KLF_SETFORPROCESS 256 +#define KL_NAMELENGTH 9 +#define MF_ENABLED 0 +#define MF_GRAYED 1 +#define MF_DISABLED 2 +#define MF_BITMAP 4 +#define MF_CHECKED 8 +#define MF_MENUBARBREAK 32 +#define MF_MENUBREAK 64 +#define MF_OWNERDRAW 256 +#define MF_POPUP 16 +#define MF_SEPARATOR 0x800 +#define MF_STRING 0 +#define MF_UNCHECKED 0 +#define MF_DEFAULT 4096 +#define MF_SYSMENU 0x2000 +#define MF_HELP 0x4000 +#define MF_END 128 +#define MF_RIGHTJUSTIFY 0x4000 +#define MF_MOUSESELECT 0x8000 +#define MF_INSERT 0 +#define MF_CHANGE 128 +#define MF_APPEND 256 +#define MF_DELETE 512 +#define MF_REMOVE 4096 +#define MF_USECHECKBITMAPS 512 +#define MF_UNHILITE 0 +#define MF_HILITE 128 + +/* Also defined in dbt.h */ +#define BSM_ALLCOMPONENTS 0 +#define BSM_APPLICATIONS 8 +#define BSM_ALLDESKTOPS 16 +#define BSM_INSTALLABLEDRIVERS 4 +#define BSM_NETDRIVER 2 +#define BSM_VXDS 1 +#define BSF_FLUSHDISK 0x00000004 +#define BSF_FORCEIFHUNG 0x00000020 +#define BSF_IGNORECURRENTTASK 0x00000002 +#define BSF_NOHANG 0x00000008 +#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040 +#define BSF_POSTMESSAGE 0x00000010 +#define BSF_QUERY 0x00000001 +#if (_WIN32_WINNT >= 0x0500) +#define BSF_ALLOWSFW 0x00000080 +#define BSF_SENDNOTIFYMESSAGE 0x00000100 +#endif /* (_WIN32_WINNT >= 0x0500) */ +#if (_WIN32_WINNT >= 0x0501) +#define BSF_LUID 0x00000400 +#define BSF_RETURNHDESK 0x00000200 +#endif /* (_WIN32_WINNT >= 0x0501) */ + +#define BROADCAST_QUERY_DENY 1112363332 +#define ENUM_CURRENT_SETTINGS ((DWORD)-1) +#define ENUM_REGISTRY_SETTINGS ((DWORD)-2) +#define DM_BITSPERPEL 0x40000 +#define DM_PELSWIDTH 0x80000 +#define DM_PELSHEIGHT 0x100000 +#define DM_DISPLAYFLAGS 0x200000 +#define DM_DISPLAYFREQUENCY 0x400000 +#define CDS_UPDATEREGISTRY 1 +#define CDS_TEST 2 +#define CDS_FULLSCREEN 4 +#define CDS_GLOBAL 8 +#define CDS_SET_PRIMARY 16 +#define CDS_RESET 0x40000000 +#define CDS_SETRECT 0x20000000 +#define CDS_NORESET 0x10000000 +#define DISP_CHANGE_SUCCESSFUL 0 +#define DISP_CHANGE_RESTART 1 +#define DISP_CHANGE_BADFLAGS (-4) +#define DISP_CHANGE_BADPARAM (-5) +#define DISP_CHANGE_FAILED (-1) +#define DISP_CHANGE_BADMODE (-2) +#define DISP_CHANGE_NOTUPDATED (-3) +#define BST_CHECKED 1 +#define BST_INDETERMINATE 2 +#define BST_UNCHECKED 0 +#define BST_FOCUS 8 +#define BST_PUSHED 4 +#define MF_BYCOMMAND 0 +#define MF_BYPOSITION 1024 +#define MF_UNCHECKED 0 +#define MF_HILITE 128 +#define MF_UNHILITE 0 +#define CWP_ALL 0 +#define CWP_SKIPINVISIBLE 1 +#define CWP_SKIPDISABLED 2 +#define CWP_SKIPTRANSPARENT 4 +#define IMAGE_BITMAP 0 +#define IMAGE_ICON 1 +#define IMAGE_CURSOR 2 +#define IMAGE_ENHMETAFILE 3 +#define DF_ALLOWOTHERACCOUNTHOOK 1 +#define DESKTOP_CREATEMENU 4 +#define DESKTOP_CREATEWINDOW 2 +#define DESKTOP_ENUMERATE 64 +#define DESKTOP_HOOKCONTROL 8 +#define DESKTOP_JOURNALPLAYBACK 32 +#define DESKTOP_JOURNALRECORD 16 +#define DESKTOP_READOBJECTS 1 +#define DESKTOP_SWITCHDESKTOP 256 +#define DESKTOP_WRITEOBJECTS 128 +#define CW_USEDEFAULT 0x80000000 +#define WS_BORDER 0x800000 +#define WS_CAPTION 0xc00000 +#define WS_CHILD 0x40000000 +#define WS_CHILDWINDOW 0x40000000 +#define WS_CLIPCHILDREN 0x2000000 +#define WS_CLIPSIBLINGS 0x4000000 +#define WS_DISABLED 0x8000000 +#define WS_DLGFRAME 0x400000 +#define WS_GROUP 0x20000 +#define WS_HSCROLL 0x100000 +#define WS_ICONIC 0x20000000 +#define WS_MAXIMIZE 0x1000000 +#define WS_MAXIMIZEBOX 0x10000 +#define WS_MINIMIZE 0x20000000 +#define WS_MINIMIZEBOX 0x20000 +#define WS_OVERLAPPED 0 +#define WS_OVERLAPPEDWINDOW 0xcf0000 +#define WS_POPUP 0x80000000 +#define WS_POPUPWINDOW 0x80880000 +#define WS_SIZEBOX 0x40000 +#define WS_SYSMENU 0x80000 +#define WS_TABSTOP 0x10000 +#define WS_THICKFRAME 0x40000 +#define WS_TILED 0 +#define WS_TILEDWINDOW 0xcf0000 +#define WS_VISIBLE 0x10000000 +#define WS_VSCROLL 0x200000 +#define MDIS_ALLCHILDSTYLES 1 +#define BS_3STATE 5 +#define BS_AUTO3STATE 6 +#define BS_AUTOCHECKBOX 3 +#define BS_AUTORADIOBUTTON 9 +#define BS_BITMAP 128 +#define BS_BOTTOM 0x800 +#define BS_CENTER 0x300 +#define BS_CHECKBOX 2 +#define BS_DEFPUSHBUTTON 1 +#define BS_GROUPBOX 7 +#define BS_ICON 64 +#define BS_LEFT 256 +#define BS_LEFTTEXT 32 +#define BS_MULTILINE 0x2000 +#define BS_NOTIFY 0x4000 +#define BS_OWNERDRAW 0xb +#define BS_PUSHBUTTON 0 +#define BS_PUSHLIKE 4096 +#define BS_RADIOBUTTON 4 +#define BS_RIGHT 512 +#define BS_RIGHTBUTTON 32 +#define BS_TEXT 0 +#define BS_TOP 0x400 +#define BS_USERBUTTON 8 +#define BS_VCENTER 0xc00 +#define BS_FLAT 0x8000 +#define CBS_AUTOHSCROLL 64 +#define CBS_DISABLENOSCROLL 0x800 +#define CBS_DROPDOWN 2 +#define CBS_DROPDOWNLIST 3 +#define CBS_HASSTRINGS 512 +#define CBS_LOWERCASE 0x4000 +#define CBS_NOINTEGRALHEIGHT 0x400 +#define CBS_OEMCONVERT 128 +#define CBS_OWNERDRAWFIXED 16 +#define CBS_OWNERDRAWVARIABLE 32 +#define CBS_SIMPLE 1 +#define CBS_SORT 256 +#define CBS_UPPERCASE 0x2000 +#define ES_AUTOHSCROLL 128 +#define ES_AUTOVSCROLL 64 +#define ES_CENTER 1 +#define ES_LEFT 0 +#define ES_LOWERCASE 16 +#define ES_MULTILINE 4 +#define ES_NOHIDESEL 256 +#define ES_NUMBER 0x2000 +#define ES_OEMCONVERT 0x400 +#define ES_PASSWORD 32 +#define ES_READONLY 0x800 +#define ES_RIGHT 2 +#define ES_UPPERCASE 8 +#define ES_WANTRETURN 4096 +#define LBS_DISABLENOSCROLL 4096 +#define LBS_EXTENDEDSEL 0x800 +#define LBS_HASSTRINGS 64 +#define LBS_MULTICOLUMN 512 +#define LBS_MULTIPLESEL 8 +#define LBS_NODATA 0x2000 +#define LBS_NOINTEGRALHEIGHT 256 +#define LBS_NOREDRAW 4 +#define LBS_NOSEL 0x4000 +#define LBS_NOTIFY 1 +#define LBS_OWNERDRAWFIXED 16 +#define LBS_OWNERDRAWVARIABLE 32 +#define LBS_SORT 2 +#define LBS_STANDARD 0xa00003 +#define LBS_USETABSTOPS 128 +#define LBS_WANTKEYBOARDINPUT 0x400 +#define SBS_BOTTOMALIGN 4 +#define SBS_HORZ 0 +#define SBS_LEFTALIGN 2 +#define SBS_RIGHTALIGN 4 +#define SBS_SIZEBOX 8 +#define SBS_SIZEBOXBOTTOMRIGHTALIGN 4 +#define SBS_SIZEBOXTOPLEFTALIGN 2 +#define SBS_SIZEGRIP 16 +#define SBS_TOPALIGN 2 +#define SBS_VERT 1 +#define SS_BITMAP 14 +#define SS_BLACKFRAME 7 +#define SS_BLACKRECT 4 +#define SS_CENTER 1 +#define SS_CENTERIMAGE 512 +#define SS_ENHMETAFILE 15 +#define SS_ETCHEDFRAME 18 +#define SS_ETCHEDHORZ 16 +#define SS_ETCHEDVERT 17 +#define SS_GRAYFRAME 8 +#define SS_GRAYRECT 5 +#define SS_ICON 3 +#define SS_LEFT 0 +#define SS_LEFTNOWORDWRAP 0xc +#define SS_NOPREFIX 128 +#define SS_NOTIFY 256 +#define SS_OWNERDRAW 0xd +#define SS_REALSIZEIMAGE 0x800 +#define SS_RIGHT 2 +#define SS_RIGHTJUST 0x400 +#define SS_SIMPLE 11 +#define SS_SUNKEN 4096 +#define SS_WHITEFRAME 9 +#define SS_WHITERECT 6 +#define SS_USERITEM 10 +#define SS_TYPEMASK 0x0000001FL +#define SS_ENDELLIPSIS 0x00004000L +#define SS_PATHELLIPSIS 0x00008000L +#define SS_WORDELLIPSIS 0x0000C000L +#define SS_ELLIPSISMASK 0x0000C000L +#define DS_3DLOOK 4 +#define DS_ABSALIGN 1 +#define DS_CENTER 0x800 +#define DS_CENTERMOUSE 4096 +#define DS_CONTEXTHELP 0x2000 +#define DS_CONTROL 0x400 +#define DS_FIXEDSYS 8 +#define DS_LOCALEDIT 32 +#define DS_MODALFRAME 128 +#define DS_NOFAILCREATE 16 +#define DS_NOIDLEMSG 256 +#define DS_SETFONT 64 +#define DS_SETFOREGROUND 512 +#define DS_SYSMODAL 2 +#define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS) +#define WS_EX_ACCEPTFILES 16 +#define WS_EX_APPWINDOW 0x40000 +#define WS_EX_CLIENTEDGE 512 +#define WS_EX_COMPOSITED 0x2000000 /* XP */ +#define WS_EX_CONTEXTHELP 0x400 +#define WS_EX_CONTROLPARENT 0x10000 +#define WS_EX_DLGMODALFRAME 1 +#define WS_EX_LAYERED 0x80000 /* w2k */ +#define WS_EX_LAYOUTRTL 0x400000 /* w98, w2k */ +#define WS_EX_LEFT 0 +#define WS_EX_LEFTSCROLLBAR 0x4000 +#define WS_EX_LTRREADING 0 +#define WS_EX_MDICHILD 64 +#define WS_EX_NOACTIVATE 0x8000000 /* w2k */ +#define WS_EX_NOINHERITLAYOUT 0x100000 /* w2k */ +#define WS_EX_NOPARENTNOTIFY 4 +#define WS_EX_OVERLAPPEDWINDOW 0x300 +#define WS_EX_PALETTEWINDOW 0x188 +#define WS_EX_RIGHT 0x1000 +#define WS_EX_RIGHTSCROLLBAR 0 +#define WS_EX_RTLREADING 0x2000 +#define WS_EX_STATICEDGE 0x20000 +#define WS_EX_TOOLWINDOW 128 +#define WS_EX_TOPMOST 8 +#define WS_EX_TRANSPARENT 32 +#define WS_EX_WINDOWEDGE 256 +#define WINSTA_ACCESSCLIPBOARD 4 +#define WINSTA_ACCESSGLOBALATOMS 32 +#define WINSTA_CREATEDESKTOP 8 +#define WINSTA_ENUMDESKTOPS 1 +#define WINSTA_ENUMERATE 256 +#define WINSTA_EXITWINDOWS 64 +#define WINSTA_READATTRIBUTES 2 +#define WINSTA_READSCREEN 512 +#define WINSTA_WRITEATTRIBUTES 16 +#define DDL_READWRITE 0 +#define DDL_READONLY 1 +#define DDL_HIDDEN 2 +#define DDL_SYSTEM 4 +#define DDL_DIRECTORY 16 +#define DDL_ARCHIVE 32 +#define DDL_POSTMSGS 8192 +#define DDL_DRIVES 16384 +#define DDL_EXCLUSIVE 32768 +#define DC_ACTIVE 0x00000001 +#define DC_SMALLCAP 0x00000002 +#define DC_ICON 0x00000004 +#define DC_TEXT 0x00000008 +#define DC_INBUTTON 0x00000010 +#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) +#define DC_GRADIENT 0x00000020 +#endif +#if (_WIN32_WINNT >= 0x0501) +#define DC_BUTTONS 0x00001000 +#endif +/* Where are these documented? */ +#define DC_CAPTION (DC_ICON|DC_TEXT|DC_BUTTONS) +#define DC_NC (DC_CAPTION|DC_FRAME) + +#define BDR_RAISEDOUTER 1 +#define BDR_SUNKENOUTER 2 +#define BDR_RAISEDINNER 4 +#define BDR_SUNKENINNER 8 +#define BDR_OUTER 3 +#define BDR_INNER 0xc +#define BDR_RAISED 5 +#define BDR_SUNKEN 10 +#define EDGE_RAISED (BDR_RAISEDOUTER|BDR_RAISEDINNER) +#define EDGE_SUNKEN (BDR_SUNKENOUTER|BDR_SUNKENINNER) +#define EDGE_ETCHED (BDR_SUNKENOUTER|BDR_RAISEDINNER) +#define EDGE_BUMP (BDR_RAISEDOUTER|BDR_SUNKENINNER) +#define BF_LEFT 1 +#define BF_TOP 2 +#define BF_RIGHT 4 +#define BF_BOTTOM 8 +#define BF_TOPLEFT (BF_TOP|BF_LEFT) +#define BF_TOPRIGHT (BF_TOP|BF_RIGHT) +#define BF_BOTTOMLEFT (BF_BOTTOM|BF_LEFT) +#define BF_BOTTOMRIGHT (BF_BOTTOM|BF_RIGHT) +#define BF_RECT (BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM) +#define BF_DIAGONAL 16 +#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL|BF_TOP|BF_RIGHT) +#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL|BF_TOP|BF_LEFT) +#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL|BF_BOTTOM|BF_LEFT) +#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL|BF_BOTTOM|BF_RIGHT) +#define BF_MIDDLE 0x800 +#define BF_SOFT 0x1000 +#define BF_ADJUST 0x2000 +#define BF_FLAT 0x4000 +#define BF_MONO 0x8000 +#define DFC_CAPTION 1 +#define DFC_MENU 2 +#define DFC_SCROLL 3 +#define DFC_BUTTON 4 +#if (WINVER >= 0x0500) +#define DFC_POPUPMENU 5 +#endif /* WINVER >= 0x0500 */ +#define DFCS_CAPTIONCLOSE 0 +#define DFCS_CAPTIONMIN 1 +#define DFCS_CAPTIONMAX 2 +#define DFCS_CAPTIONRESTORE 3 +#define DFCS_CAPTIONHELP 4 +#define DFCS_MENUARROW 0 +#define DFCS_MENUCHECK 1 +#define DFCS_MENUBULLET 2 +#define DFCS_MENUARROWRIGHT 4 +#define DFCS_SCROLLUP 0 +#define DFCS_SCROLLDOWN 1 +#define DFCS_SCROLLLEFT 2 +#define DFCS_SCROLLRIGHT 3 +#define DFCS_SCROLLCOMBOBOX 5 +#define DFCS_SCROLLSIZEGRIP 8 +#define DFCS_SCROLLSIZEGRIPRIGHT 16 +#define DFCS_BUTTONCHECK 0 +#define DFCS_BUTTONRADIOIMAGE 1 +#define DFCS_BUTTONRADIOMASK 2 +#define DFCS_BUTTONRADIO 4 +#define DFCS_BUTTON3STATE 8 +#define DFCS_BUTTONPUSH 16 +#define DFCS_INACTIVE 256 +#define DFCS_PUSHED 512 +#define DFCS_CHECKED 1024 +#if (WINVER >= 0x0500) +#define DFCS_TRANSPARENT 0x800 +#define DFCS_HOT 0x1000 +#endif +#define DFCS_ADJUSTRECT 0x2000 +#define DFCS_FLAT 0x4000 +#define DFCS_MONO 0x8000 +#define DST_COMPLEX 0 +#define DST_TEXT 1 +#define DST_PREFIXTEXT 2 +#define DST_ICON 3 +#define DST_BITMAP 4 +#define DSS_NORMAL 0 +#define DSS_UNION 16 +#define DSS_DISABLED 32 +#define DSS_MONO 128 +#define DSS_RIGHT 0x8000 +#define DT_BOTTOM 8 +#define DT_CALCRECT 1024 +#define DT_CENTER 1 +#define DT_EDITCONTROL 8192 +#define DT_END_ELLIPSIS 32768 +#define DT_PATH_ELLIPSIS 16384 +#define DT_WORD_ELLIPSIS 0x40000 +#define DT_EXPANDTABS 64 +#define DT_EXTERNALLEADING 512 +#define DT_LEFT 0 +#define DT_MODIFYSTRING 65536 +#define DT_NOCLIP 256 +#define DT_NOPREFIX 2048 +#define DT_RIGHT 2 +#define DT_RTLREADING 131072 +#define DT_SINGLELINE 32 +#define DT_TABSTOP 128 +#define DT_TOP 0 +#define DT_VCENTER 4 +#define DT_WORDBREAK 16 +#define DT_INTERNAL 4096 +#define WB_ISDELIMITER 2 +#define WB_LEFT 0 +#define WB_RIGHT 1 +#define SB_HORZ 0 +#define SB_VERT 1 +#define SB_CTL 2 +#define SB_BOTH 3 +#define ESB_DISABLE_BOTH 3 +#define ESB_DISABLE_DOWN 2 +#define ESB_DISABLE_LEFT 1 +#define ESB_DISABLE_LTUP 1 +#define ESB_DISABLE_RIGHT 2 +#define ESB_DISABLE_RTDN 2 +#define ESB_DISABLE_UP 1 +#define ESB_ENABLE_BOTH 0 +#define SB_LINEUP 0 +#define SB_LINEDOWN 1 +#define SB_LINELEFT 0 +#define SB_LINERIGHT 1 +#define SB_PAGEUP 2 +#define SB_PAGEDOWN 3 +#define SB_PAGELEFT 2 +#define SB_PAGERIGHT 3 +#define SB_THUMBPOSITION 4 +#define SB_THUMBTRACK 5 +#define SB_ENDSCROLL 8 +#define SB_LEFT 6 +#define SB_RIGHT 7 +#define SB_BOTTOM 7 +#define SB_TOP 6 +#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i))) +#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i))) +#ifndef XFree86Server +# define RT_CURSOR MAKEINTRESOURCE(1) +# define RT_FONT MAKEINTRESOURCE(8) +#endif /* ndef XFree86Server */ +#define RT_BITMAP MAKEINTRESOURCE(2) +#define RT_ICON MAKEINTRESOURCE(3) +#define RT_MENU MAKEINTRESOURCE(4) +#define RT_DIALOG MAKEINTRESOURCE(5) +#define RT_STRING MAKEINTRESOURCE(6) +#define RT_FONTDIR MAKEINTRESOURCE(7) +#define RT_ACCELERATOR MAKEINTRESOURCE(9) +#define RT_RCDATA MAKEINTRESOURCE(10) +#define RT_MESSAGETABLE MAKEINTRESOURCE(11) +#define DIFFERENCE 11 +#define RT_GROUP_CURSOR MAKEINTRESOURCE((DWORD)RT_CURSOR+DIFFERENCE) +#define RT_GROUP_ICON MAKEINTRESOURCE((DWORD)RT_ICON+DIFFERENCE) +#define RT_VERSION MAKEINTRESOURCE(16) +#define RT_DLGINCLUDE MAKEINTRESOURCE(17) +#define RT_PLUGPLAY MAKEINTRESOURCE(19) +#define RT_VXD MAKEINTRESOURCE(20) +#define RT_ANICURSOR MAKEINTRESOURCE(21) +#define RT_ANIICON MAKEINTRESOURCE(22) +#define RT_HTML MAKEINTRESOURCE(23) +#ifndef RC_INVOKED +#define RT_MANIFEST MAKEINTRESOURCE(24) +#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1) +#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2) +#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3) +#else +#define RT_MANIFEST 24 +#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 +#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2 +#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3 +#endif +#define EWX_FORCE 4 +#define EWX_LOGOFF 0 +#define EWX_POWEROFF 8 +#define EWX_REBOOT 2 +#define EWX_SHUTDOWN 1 +#if (_WIN32_WINNT >= 0x0500) +#define EWX_FORCEIFHUNG 16 +#endif +#define CS_BYTEALIGNCLIENT 4096 +#define CS_BYTEALIGNWINDOW 8192 +#define CS_KEYCVTWINDOW 4 +#define CS_NOKEYCVT 256 +#define CS_CLASSDC 64 +#define CS_DBLCLKS 8 +#define CS_GLOBALCLASS 16384 +#define CS_HREDRAW 2 +#define CS_NOCLOSE 512 +#define CS_OWNDC 32 +#define CS_PARENTDC 128 +#define CS_SAVEBITS 2048 +#define CS_VREDRAW 1 +#define CS_IME 0x10000 +#define GCW_ATOM (-32) +#define GCL_CBCLSEXTRA (-20) +#define GCL_CBWNDEXTRA (-18) +#define GCL_HBRBACKGROUND (-10) +#define GCL_HCURSOR (-12) +#define GCL_HICON (-14) +#define GCL_HICONSM (-34) +#define GCL_HMODULE (-16) +#define GCL_MENUNAME (-8) +#define GCL_STYLE (-26) +#define GCL_WNDPROC (-24) +#if 0 + /* This is supposed to be defined by the program using it not defined + in the w32api headers. I've left it here for documentation purposes. + */ +#ifndef IDC_STATIC /* May be predefined by resource compiler. */ +#define IDC_STATIC (-1) +#endif +#endif +#define IDC_ARROW MAKEINTRESOURCE(32512) +#define IDC_IBEAM MAKEINTRESOURCE(32513) +#define IDC_WAIT MAKEINTRESOURCE(32514) +#define IDC_CROSS MAKEINTRESOURCE(32515) +#define IDC_UPARROW MAKEINTRESOURCE(32516) +#define IDC_SIZENWSE MAKEINTRESOURCE(32642) +#define IDC_SIZENESW MAKEINTRESOURCE(32643) +#define IDC_SIZEWE MAKEINTRESOURCE(32644) +#define IDC_SIZENS MAKEINTRESOURCE(32645) +#define IDC_SIZEALL MAKEINTRESOURCE(32646) +#define IDC_NO MAKEINTRESOURCE(32648) +#define IDC_HAND MAKEINTRESOURCE(32649) +#define IDC_APPSTARTING MAKEINTRESOURCE(32650) +#define IDC_HELP MAKEINTRESOURCE(32651) +#define IDC_ICON MAKEINTRESOURCE(32641) +#define IDC_SIZE MAKEINTRESOURCE(32640) +#ifndef RC_INVOKED +#define IDI_APPLICATION MAKEINTRESOURCE(32512) +#define IDI_HAND MAKEINTRESOURCE(32513) +#define IDI_QUESTION MAKEINTRESOURCE(32514) +#define IDI_EXCLAMATION MAKEINTRESOURCE(32515) +#define IDI_ASTERISK MAKEINTRESOURCE(32516) +#define IDI_WINLOGO MAKEINTRESOURCE(32517) +#else +#define IDI_APPLICATION 32512 +#define IDI_HAND 32513 +#define IDI_QUESTION 32514 +#define IDI_EXCLAMATION 32515 +#define IDI_ASTERISK 32516 +#define IDI_WINLOGO 32517 +#endif +#define IDI_WARNING IDI_EXCLAMATION +#define IDI_ERROR IDI_HAND +#define IDI_INFORMATION IDI_ASTERISK +#define MIIM_STATE 1 +#define MIIM_ID 2 +#define MIIM_SUBMENU 4 +#define MIIM_CHECKMARKS 8 +#define MIIM_TYPE 16 +#define MIIM_DATA 32 +#define MIIM_STRING 64 +#define MIIM_BITMAP 128 +#define MIIM_FTYPE 256 +#if (WINVER >= 0x0500) +#define MIM_MAXHEIGHT 1 +#define MIM_BACKGROUND 2 +#define MIM_HELPID 4 +#define MIM_MENUDATA 8 +#define MIM_STYLE 16 +#define MIM_APPLYTOSUBMENUS 0x80000000L +#endif +#define MFT_BITMAP 4 +#define MFT_MENUBARBREAK 32 +#define MFT_MENUBREAK 64 +#define MFT_OWNERDRAW 256 +#define MFT_RADIOCHECK 512 +#define MFT_RIGHTJUSTIFY 0x4000 +#define MFT_SEPARATOR 0x800 +#define MFT_RIGHTORDER 0x2000L +#define MFT_STRING 0 +#define MFS_CHECKED 8 +#define MFS_DEFAULT 4096 +#define MFS_DISABLED 3 +#define MFS_ENABLED 0 +#define MFS_GRAYED 3 +#define MFS_HILITE 128 +#define MFS_UNCHECKED 0 +#define MFS_UNHILITE 0 +#define GW_HWNDNEXT 2 +#define GW_HWNDPREV 3 +#define GW_CHILD 5 +#define GW_HWNDFIRST 0 +#define GW_HWNDLAST 1 +#define GW_OWNER 4 +#define SW_HIDE 0 +#define SW_NORMAL 1 +#define SW_SHOWNORMAL 1 +#define SW_SHOWMINIMIZED 2 +#define SW_MAXIMIZE 3 +#define SW_SHOWMAXIMIZED 3 +#define SW_SHOWNOACTIVATE 4 +#define SW_SHOW 5 +#define SW_MINIMIZE 6 +#define SW_SHOWMINNOACTIVE 7 +#define SW_SHOWNA 8 +#define SW_RESTORE 9 +#define SW_SHOWDEFAULT 10 +#define SW_FORCEMINIMIZE 11 +#define SW_MAX 11 +#define MB_USERICON 128 +#define MB_ICONASTERISK 64 +#define MB_ICONEXCLAMATION 0x30 +#define MB_ICONWARNING 0x30 +#define MB_ICONERROR 16 +#define MB_ICONHAND 16 +#define MB_ICONQUESTION 32 +#define MB_OK 0 +#define MB_ABORTRETRYIGNORE 2 +#define MB_APPLMODAL 0 +#define MB_DEFAULT_DESKTOP_ONLY 0x20000 +#define MB_HELP 0x4000 +#define MB_RIGHT 0x80000 +#define MB_RTLREADING 0x100000 +#define MB_TOPMOST 0x40000 +#define MB_DEFBUTTON1 0 +#define MB_DEFBUTTON2 256 +#define MB_DEFBUTTON3 512 +#define MB_DEFBUTTON4 0x300 +#define MB_ICONINFORMATION 64 +#define MB_ICONSTOP 16 +#define MB_OKCANCEL 1 +#define MB_RETRYCANCEL 5 +#ifdef _WIN32_WINNT +#if (_WIN32_WINNT >= 0x0400) +#define MB_SERVICE_NOTIFICATION 0x00200000 +#else +#define MB_SERVICE_NOTIFICATION 0x00040000 +#endif +#define MB_SERVICE_NOTIFICATION_NT3X 0x00040000 +#endif +#define MB_SETFOREGROUND 0x10000 +#define MB_SYSTEMMODAL 4096 +#define MB_TASKMODAL 0x2000 +#define MB_YESNO 4 +#define MB_YESNOCANCEL 3 +#define MB_ICONMASK 240 +#define MB_DEFMASK 3840 +#define MB_MODEMASK 0x00003000 +#define MB_MISCMASK 0x0000C000 +#define MB_NOFOCUS 0x00008000 +#define MB_TYPEMASK 15 +#define MB_TOPMOST 0x40000 + +#define IDOK 1 +#define IDCANCEL 2 +#define IDABORT 3 +#define IDRETRY 4 +#define IDIGNORE 5 +#define IDYES 6 +#define IDNO 7 +#if (WINVER >= 0x0400) +#define IDCLOSE 8 +#define IDHELP 9 +#endif +#if (WINVER >= 0x0500) +#define IDTRYAGAIN 10 +#define IDCONTINUE 11 +#endif + +#define GWL_EXSTYLE (-20) +#define GWL_STYLE (-16) +#define GWL_WNDPROC (-4) +#define GWLP_WNDPROC (-4) +#define GWL_HINSTANCE (-6) +#define GWLP_HINSTANCE (-6) +#define GWL_HWNDPARENT (-8) +#define GWLP_HWNDPARENT (-8) +#define GWL_ID (-12) +#define GWLP_ID (-12) +#define GWL_USERDATA (-21) +#define GWLP_USERDATA (-21) +#define DWL_DLGPROC 4 +#define DWLP_DLGPROC 4 +#define DWL_MSGRESULT 0 +#define DWLP_MSGRESULT 0 +#define DWL_USER 8 +#define DWLP_USER 8 +#if (_WIN32_WINNT >= 0x0501) +#define QS_ALLEVENTS 1215 +#define QS_ALLINPUT 1279 +#else +#define QS_ALLEVENTS 191 +#define QS_ALLINPUT 255 +#endif +#define QS_ALLPOSTMESSAGE 256 +#define QS_HOTKEY 128 +#if (_WIN32_WINNT >= 0x0501) +#define QS_INPUT 1031 +#else +#define QS_INPUT 7 +#endif +#define QS_KEY 1 +#define QS_MOUSE 6 +#define QS_MOUSEBUTTON 4 +#define QS_MOUSEMOVE 2 +#define QS_PAINT 32 +#define QS_POSTMESSAGE 8 +#if (_WIN32_WINNT >= 0x0501) +#define QS_RAWINPUT 1024 +#endif +#define QS_SENDMESSAGE 64 +#define QS_TIMER 16 +#define MWMO_WAITALL 1 +#define MWMO_ALERTABLE 2 +#define MWMO_INPUTAVAILABLE 4 +#define COLOR_3DDKSHADOW 21 +#define COLOR_3DFACE 15 +#define COLOR_3DHILIGHT 20 +#define COLOR_3DHIGHLIGHT 20 +#define COLOR_3DLIGHT 22 +#define COLOR_BTNHILIGHT 20 +#define COLOR_3DSHADOW 16 +#define COLOR_ACTIVEBORDER 10 +#define COLOR_ACTIVECAPTION 2 +#define COLOR_APPWORKSPACE 12 +#define COLOR_BACKGROUND 1 +#define COLOR_DESKTOP 1 +#define COLOR_BTNFACE 15 +#define COLOR_BTNHIGHLIGHT 20 +#define COLOR_BTNSHADOW 16 +#define COLOR_BTNTEXT 18 +#define COLOR_CAPTIONTEXT 9 +#define COLOR_GRAYTEXT 17 +#define COLOR_HIGHLIGHT 13 +#define COLOR_HIGHLIGHTTEXT 14 +#define COLOR_INACTIVEBORDER 11 +#define COLOR_INACTIVECAPTION 3 +#define COLOR_INACTIVECAPTIONTEXT 19 +#define COLOR_INFOBK 24 +#define COLOR_INFOTEXT 23 +#define COLOR_MENU 4 +#define COLOR_MENUTEXT 7 +#define COLOR_SCROLLBAR 0 +#define COLOR_WINDOW 5 +#define COLOR_WINDOWFRAME 6 +#define COLOR_WINDOWTEXT 8 +#define CTLCOLOR_MSGBOX 0 +#define CTLCOLOR_EDIT 1 +#define CTLCOLOR_LISTBOX 2 +#define CTLCOLOR_BTN 3 +#define CTLCOLOR_DLG 4 +#define CTLCOLOR_SCROLLBAR 5 +#define CTLCOLOR_STATIC 6 +#define CTLCOLOR_MAX 7 +#define SM_CXSCREEN 0 +#define SM_CYSCREEN 1 +#define SM_CXVSCROLL 2 +#define SM_CYHSCROLL 3 +#define SM_CYCAPTION 4 +#define SM_CXBORDER 5 +#define SM_CYBORDER 6 +#define SM_CXDLGFRAME 7 +#define SM_CXFIXEDFRAME 7 +#define SM_CYDLGFRAME 8 +#define SM_CYFIXEDFRAME 8 +#define SM_CYVTHUMB 9 +#define SM_CXHTHUMB 10 +#define SM_CXICON 11 +#define SM_CYICON 12 +#define SM_CXCURSOR 13 +#define SM_CYCURSOR 14 +#define SM_CYMENU 15 +#define SM_CXFULLSCREEN 16 +#define SM_CYFULLSCREEN 17 +#define SM_CYKANJIWINDOW 18 +#define SM_MOUSEPRESENT 19 +#define SM_CYVSCROLL 20 +#define SM_CXHSCROLL 21 +#define SM_DEBUG 22 +#define SM_SWAPBUTTON 23 +#define SM_RESERVED1 24 +#define SM_RESERVED2 25 +#define SM_RESERVED3 26 +#define SM_RESERVED4 27 +#define SM_CXMIN 28 +#define SM_CYMIN 29 +#define SM_CXSIZE 30 +#define SM_CYSIZE 31 +#define SM_CXSIZEFRAME 32 +#define SM_CXFRAME 32 +#define SM_CYSIZEFRAME 33 +#define SM_CYFRAME 33 +#define SM_CXMINTRACK 34 +#define SM_CYMINTRACK 35 +#define SM_CXDOUBLECLK 36 +#define SM_CYDOUBLECLK 37 +#define SM_CXICONSPACING 38 +#define SM_CYICONSPACING 39 +#define SM_MENUDROPALIGNMENT 40 +#define SM_PENWINDOWS 41 +#define SM_DBCSENABLED 42 +#define SM_CMOUSEBUTTONS 43 +#define SM_SECURE 44 +#define SM_CXEDGE 45 +#define SM_CYEDGE 46 +#define SM_CXMINSPACING 47 +#define SM_CYMINSPACING 48 +#define SM_CXSMICON 49 +#define SM_CYSMICON 50 +#define SM_CYSMCAPTION 51 +#define SM_CXSMSIZE 52 +#define SM_CYSMSIZE 53 +#define SM_CXMENUSIZE 54 +#define SM_CYMENUSIZE 55 +#define SM_ARRANGE 56 +#define SM_CXMINIMIZED 57 +#define SM_CYMINIMIZED 58 +#define SM_CXMAXTRACK 59 +#define SM_CYMAXTRACK 60 +#define SM_CXMAXIMIZED 61 +#define SM_CYMAXIMIZED 62 +#define SM_NETWORK 63 +#define LR_DEFAULTSIZE 64 +#define SM_CLEANBOOT 67 +#define SM_CXDRAG 68 +#define SM_CYDRAG 69 +#define SM_SHOWSOUNDS 70 +#define SM_CXMENUCHECK 71 +#define SM_CYMENUCHECK 72 +#define SM_SLOWMACHINE 73 +#define SM_MIDEASTENABLED 74 +#define SM_MOUSEWHEELPRESENT 75 +#define SM_XVIRTUALSCREEN 76 +#define SM_YVIRTUALSCREEN 77 +#define SM_CXVIRTUALSCREEN 78 +#define SM_CYVIRTUALSCREEN 79 +#define SM_CMONITORS 80 +#define SM_SAMEDISPLAYFORMAT 81 +#if (_WIN32_WINNT < 0x0400) +#define SM_CMETRICS 76 +#else +#define SM_CMETRICS 83 +#endif +#define SM_REMOTESESSION 0X1000 +#define ARW_BOTTOMLEFT 0 +#define ARW_BOTTOMRIGHT 1 +#define ARW_HIDE 8 +#define ARW_TOPLEFT 2 +#define ARW_TOPRIGHT 3 +#define ARW_DOWN 4 +#define ARW_LEFT 0 +#define ARW_RIGHT 0 +#define ARW_UP 4 +#define UOI_FLAGS 1 +#define UOI_NAME 2 +#define UOI_TYPE 3 +#define UOI_USER_SID 4 +#define LR_DEFAULTCOLOR 0 +#define LR_MONOCHROME 1 +#define LR_COLOR 2 +#define LR_COPYRETURNORG 4 +#define LR_COPYDELETEORG 8 +#define LR_LOADFROMFILE 16 +#define LR_LOADTRANSPARENT 32 +#define LR_LOADREALSIZE 128 +#define LR_LOADMAP3DCOLORS 4096 +#define LR_CREATEDIBSECTION 8192 +#define LR_COPYFROMRESOURCE 0x4000 +#define LR_SHARED 32768 +#define KEYEVENTF_EXTENDEDKEY 0x00000001 +#define KEYEVENTF_KEYUP 00000002 +#if (_WIN32_WINNT >= 0x0500) +#define KEYEVENTF_UNICODE 0x00000004 +#define KEYEVENTF_SCANCODE 0x00000008 +#endif +#define OBM_BTNCORNERS 32758 +#define OBM_BTSIZE 32761 +#define OBM_CHECK 32760 +#define OBM_CHECKBOXES 32759 +#define OBM_CLOSE 32754 +#define OBM_COMBO 32738 +#define OBM_DNARROW 32752 +#define OBM_DNARROWD 32742 +#define OBM_DNARROWI 32736 +#define OBM_LFARROW 32750 +#define OBM_LFARROWI 32734 +#define OBM_LFARROWD 32740 +#define OBM_MNARROW 32739 +#define OBM_OLD_CLOSE 32767 +#define OBM_OLD_DNARROW 32764 +#define OBM_OLD_LFARROW 32762 +#define OBM_OLD_REDUCE 32757 +#define OBM_OLD_RESTORE 32755 +#define OBM_OLD_RGARROW 32763 +#define OBM_OLD_UPARROW 32765 +#define OBM_OLD_ZOOM 32756 +#define OBM_REDUCE 32749 +#define OBM_REDUCED 32746 +#define OBM_RESTORE 32747 +#define OBM_RESTORED 32744 +#define OBM_RGARROW 32751 +#define OBM_RGARROWD 32741 +#define OBM_RGARROWI 32735 +#define OBM_SIZE 32766 +#define OBM_UPARROW 32753 +#define OBM_UPARROWD 32743 +#define OBM_UPARROWI 32737 +#define OBM_ZOOM 32748 +#define OBM_ZOOMD 32745 +#define OCR_NORMAL 32512 +#define OCR_IBEAM 32513 +#define OCR_WAIT 32514 +#define OCR_CROSS 32515 +#define OCR_UP 32516 +#define OCR_SIZE 32640 +#define OCR_ICON 32641 +#define OCR_SIZENWSE 32642 +#define OCR_SIZENESW 32643 +#define OCR_SIZEWE 32644 +#define OCR_SIZENS 32645 +#define OCR_SIZEALL 32646 +#define OCR_NO 32648 +#define OCR_APPSTARTING 32650 +#define OIC_SAMPLE 32512 +#define OIC_HAND 32513 +#define OIC_QUES 32514 +#define OIC_BANG 32515 +#define OIC_NOTE 32516 +#define OIC_WINLOGO 32517 +#define OIC_WARNING OIC_BANG +#define OIC_ERROR OIC_HAND +#define OIC_INFORMATION OIC_NOTE +#define HELPINFO_MENUITEM 2 +#define HELPINFO_WINDOW 1 +#define MSGF_DIALOGBOX 0 +#define MSGF_MESSAGEBOX 1 +#define MSGF_MENU 2 +#define MSGF_MOVE 3 +#define MSGF_SIZE 4 +#define MSGF_SCROLLBAR 5 +#define MSGF_NEXTWINDOW 6 +#define MSGF_MAINLOOP 8 +#define MSGF_USER 4096 +#define MOUSEEVENTF_MOVE 1 +#define MOUSEEVENTF_LEFTDOWN 2 +#define MOUSEEVENTF_LEFTUP 4 +#define MOUSEEVENTF_RIGHTDOWN 8 +#define MOUSEEVENTF_RIGHTUP 16 +#define MOUSEEVENTF_MIDDLEDOWN 32 +#define MOUSEEVENTF_MIDDLEUP 64 +#define MOUSEEVENTF_WHEEL 0x0800 +#define MOUSEEVENTF_ABSOLUTE 32768 +#define PM_NOREMOVE 0 +#define PM_REMOVE 1 +#define PM_NOYIELD 2 +#if (WINVER >= 0x0500) +# define PM_QS_INPUT (QS_INPUT << 16) +# define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE|QS_HOTKEY|QS_TIMER) << 16) +# define PM_QS_PAINT (QS_PAINT << 16) +# define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16) +#endif +#define HWND_BROADCAST ((HWND)0xffff) +#define HWND_BOTTOM ((HWND)1) +#define HWND_NOTOPMOST ((HWND)(-2)) +#define HWND_TOP ((HWND)0) +#define HWND_TOPMOST ((HWND)(-1)) +#define HWND_DESKTOP (HWND)0 +#define HWND_MESSAGE ((HWND)(-3)) /* w2k */ +#define RDW_ERASE 4 +#define RDW_FRAME 1024 +#define RDW_INTERNALPAINT 2 +#define RDW_INVALIDATE 1 +#define RDW_NOERASE 32 +#define RDW_NOFRAME 2048 +#define RDW_NOINTERNALPAINT 16 +#define RDW_VALIDATE 8 +#define RDW_ERASENOW 512 +#define RDW_UPDATENOW 256 +#define RDW_ALLCHILDREN 128 +#define RDW_NOCHILDREN 64 +#define SMTO_ABORTIFHUNG 2 +#define SMTO_BLOCK 1 +#define SMTO_NORMAL 0 +#define SIF_ALL 23 +#define SIF_PAGE 2 +#define SIF_POS 4 +#define SIF_RANGE 1 +#define SIF_DISABLENOSCROLL 8 +#define SIF_TRACKPOS 16 +#define SWP_DRAWFRAME 32 +#define SWP_FRAMECHANGED 32 +#define SWP_HIDEWINDOW 128 +#define SWP_NOACTIVATE 16 +#define SWP_NOCOPYBITS 256 +#define SWP_NOMOVE 2 +#define SWP_NOSIZE 1 +#define SWP_NOREDRAW 8 +#define SWP_NOZORDER 4 +#define SWP_SHOWWINDOW 64 +#define SWP_NOOWNERZORDER 512 +#define SWP_NOREPOSITION 512 +#define SWP_NOSENDCHANGING 1024 +#define SWP_DEFERERASE 8192 +#define SWP_ASYNCWINDOWPOS 16384 +#define HSHELL_ACTIVATESHELLWINDOW 3 +#define HSHELL_GETMINRECT 5 +#define HSHELL_LANGUAGE 8 +#define HSHELL_REDRAW 6 +#define HSHELL_TASKMAN 7 +#define HSHELL_WINDOWACTIVATED 4 +#define HSHELL_WINDOWCREATED 1 +#define HSHELL_WINDOWDESTROYED 2 +#define SPI_GETACCESSTIMEOUT 60 +#define SPI_GETACTIVEWINDOWTRACKING 4096 +#define SPI_GETACTIVEWNDTRKTIMEOUT 8194 +#define SPI_GETACTIVEWNDTRKZORDER 4108 +#define SPI_GETANIMATION 72 +#define SPI_GETBEEP 1 +#define SPI_GETBORDER 5 +#define SPI_GETDEFAULTINPUTLANG 89 +#define SPI_GETDRAGFULLWINDOWS 38 +#define SPI_GETFASTTASKSWITCH 35 +#define SPI_GETFILTERKEYS 50 +#define SPI_GETFONTSMOOTHING 74 +#define SPI_GETGRIDGRANULARITY 18 +#define SPI_GETHIGHCONTRAST 66 +#define SPI_GETICONMETRICS 45 +#define SPI_GETICONTITLELOGFONT 31 +#define SPI_GETICONTITLEWRAP 25 +#define SPI_GETKEYBOARDDELAY 22 +#define SPI_GETKEYBOARDPREF 68 +#define SPI_GETKEYBOARDSPEED 10 +#define SPI_GETLOWPOWERACTIVE 83 +#define SPI_GETLOWPOWERTIMEOUT 79 +#define SPI_GETMENUDROPALIGNMENT 27 +#define SPI_GETMINIMIZEDMETRICS 43 +#define SPI_GETMOUSE 3 +#define SPI_GETMOUSEKEYS 54 +#define SPI_GETMOUSETRAILS 94 +#define SPI_GETNONCLIENTMETRICS 41 +#define SPI_GETPOWEROFFACTIVE 84 +#define SPI_GETPOWEROFFTIMEOUT 80 +#define SPI_GETSCREENREADER 70 +#define SPI_GETSCREENSAVEACTIVE 16 +#define SPI_GETSCREENSAVETIMEOUT 14 +#define SPI_GETSERIALKEYS 62 +#define SPI_GETSHOWSOUNDS 56 +#define SPI_GETSOUNDSENTRY 64 +#define SPI_GETSTICKYKEYS 58 +#define SPI_GETTOGGLEKEYS 52 +#define SPI_GETWHEELSCROLLLINES 104 +#define SPI_GETWINDOWSEXTENSION 92 +#define SPI_GETWORKAREA 48 +#define SPI_ICONHORIZONTALSPACING 13 +#define SPI_ICONVERTICALSPACING 24 +#define SPI_LANGDRIVER 12 +#define SPI_SCREENSAVERRUNNING 97 +#define SPI_SETACCESSTIMEOUT 61 +#define SPI_SETACTIVEWINDOWTRACKING 4097 +#define SPI_SETACTIVEWNDTRKTIMEOUT 8195 +#define SPI_SETACTIVEWNDTRKZORDER 4109 +#define SPI_SETANIMATION 73 +#define SPI_SETBEEP 2 +#define SPI_SETBORDER 6 +#define SPI_SETDEFAULTINPUTLANG 90 +#define SPI_SETDESKPATTERN 21 +#define SPI_SETDESKWALLPAPER 20 +#define SPI_SETDOUBLECLICKTIME 32 +#define SPI_SETDOUBLECLKHEIGHT 30 +#define SPI_SETDOUBLECLKWIDTH 29 +#define SPI_SETDRAGFULLWINDOWS 37 +#define SPI_SETDRAGHEIGHT 77 +#define SPI_SETDRAGWIDTH 76 +#define SPI_SETFASTTASKSWITCH 36 +#define SPI_SETFILTERKEYS 51 +#define SPI_SETFONTSMOOTHING 75 +#define SPI_SETGRIDGRANULARITY 19 +#define SPI_SETHANDHELD 78 +#define SPI_SETHIGHCONTRAST 67 +#define SPI_SETICONMETRICS 46 +#define SPI_SETICONTITLELOGFONT 34 +#define SPI_SETICONTITLEWRAP 26 +#define SPI_SETKEYBOARDDELAY 23 +#define SPI_SETKEYBOARDPREF 69 +#define SPI_SETKEYBOARDSPEED 11 +#define SPI_SETLANGTOGGLE 91 +#define SPI_SETLOWPOWERACTIVE 85 +#define SPI_SETLOWPOWERTIMEOUT 81 +#define SPI_SETMENUDROPALIGNMENT 28 +#define SPI_SETMINIMIZEDMETRICS 44 +#define SPI_SETMOUSE 4 +#define SPI_SETMOUSEBUTTONSWAP 33 +#define SPI_SETMOUSEKEYS 55 +#define SPI_SETMOUSETRAILS 93 +#define SPI_SETNONCLIENTMETRICS 42 +#define SPI_SETPENWINDOWS 49 +#define SPI_SETPOWEROFFACTIVE 86 +#define SPI_SETPOWEROFFTIMEOUT 82 +#define SPI_SETSCREENREADER 71 +#define SPI_SETSCREENSAVEACTIVE 17 +#define SPI_SETSCREENSAVERRUNNING 97 +#define SPI_SETSCREENSAVETIMEOUT 15 +#define SPI_SETSERIALKEYS 63 +#define SPI_SETSHOWSOUNDS 57 +#define SPI_SETSOUNDSENTRY 65 +#define SPI_SETSTICKYKEYS 59 +#define SPI_SETTOGGLEKEYS 53 +#define SPI_SETWHEELSCROLLLINES 105 +#define SPI_SETWORKAREA 47 +#define SPIF_UPDATEINIFILE 1 +#define SPIF_SENDWININICHANGE 2 +#define SPIF_SENDCHANGE 2 +#define ATF_ONOFFFEEDBACK 2 +#define ATF_TIMEOUTON 1 +#define WM_APP 32768 +#define WM_ACTIVATE 6 +#define WM_ACTIVATEAPP 28 +/* FIXME/CHECK: Are WM_AFX{FIRST,LAST} valid for WINVER < 0x400? */ +#define WM_AFXFIRST 864 +#define WM_AFXLAST 895 +#define WM_ASKCBFORMATNAME 780 +#define WM_CANCELJOURNAL 75 +#define WM_CANCELMODE 31 +#define WM_CAPTURECHANGED 533 +#define WM_CHANGECBCHAIN 781 +#define WM_CHAR 258 +#define WM_CHARTOITEM 47 +#define WM_CHILDACTIVATE 34 +#define WM_CLEAR 771 +#define WM_CLOSE 16 +#define WM_COMMAND 273 +#define WM_COMMNOTIFY 68 /* obsolete */ +#define WM_COMPACTING 65 +#define WM_COMPAREITEM 57 +#define WM_CONTEXTMENU 123 +#define WM_COPY 769 +#define WM_COPYDATA 74 +#define WM_CREATE 1 +#define WM_CTLCOLORBTN 309 +#define WM_CTLCOLORDLG 310 +#define WM_CTLCOLOREDIT 307 +#define WM_CTLCOLORLISTBOX 308 +#define WM_CTLCOLORMSGBOX 306 +#define WM_CTLCOLORSCROLLBAR 311 +#define WM_CTLCOLORSTATIC 312 +#define WM_CUT 768 +#define WM_DEADCHAR 259 +#define WM_DELETEITEM 45 +#define WM_DESTROY 2 +#define WM_DESTROYCLIPBOARD 775 +#define WM_DEVICECHANGE 537 +#define WM_DEVMODECHANGE 27 +#define WM_DISPLAYCHANGE 126 +#define WM_DRAWCLIPBOARD 776 +#define WM_DRAWITEM 43 +#define WM_DROPFILES 563 +#define WM_ENABLE 10 +#define WM_ENDSESSION 22 +#define WM_ENTERIDLE 289 +#define WM_ENTERMENULOOP 529 +#define WM_ENTERSIZEMOVE 561 +#define WM_ERASEBKGND 20 +#define WM_EXITMENULOOP 530 +#define WM_EXITSIZEMOVE 562 +#define WM_FONTCHANGE 29 +#define WM_GETDLGCODE 135 +#define WM_GETFONT 49 +#define WM_GETHOTKEY 51 +#define WM_GETICON 127 +#define WM_GETMINMAXINFO 36 +#define WM_GETTEXT 13 +#define WM_GETTEXTLENGTH 14 +/* FIXME/CHECK: Are WM_HANDHEL{FIRST,LAST} valid for WINVER < 0x400? */ +#define WM_HANDHELDFIRST 856 +#define WM_HANDHELDLAST 863 +#define WM_HELP 83 +#define WM_HOTKEY 786 +#define WM_HSCROLL 276 +#define WM_HSCROLLCLIPBOARD 782 +#define WM_ICONERASEBKGND 39 +#define WM_INITDIALOG 272 +#define WM_INITMENU 278 +#define WM_INITMENUPOPUP 279 +#define WM_INPUTLANGCHANGE 81 +#define WM_INPUTLANGCHANGEREQUEST 80 +#define WM_KEYDOWN 256 +#define WM_KEYUP 257 +#define WM_KILLFOCUS 8 +#define WM_MDIACTIVATE 546 +#define WM_MDICASCADE 551 +#define WM_MDICREATE 544 +#define WM_MDIDESTROY 545 +#define WM_MDIGETACTIVE 553 +#define WM_MDIICONARRANGE 552 +#define WM_MDIMAXIMIZE 549 +#define WM_MDINEXT 548 +#define WM_MDIREFRESHMENU 564 +#define WM_MDIRESTORE 547 +#define WM_MDISETMENU 560 +#define WM_MDITILE 550 +#define WM_MEASUREITEM 44 +#if (WINVER >= 0x0500) +#define WM_MENURBUTTONUP 290 +#endif +#define WM_MENUCHAR 288 +#define WM_MENUSELECT 287 +#define WM_NEXTMENU 531 +#define WM_MOVE 3 +#define WM_MOVING 534 +#define WM_NCACTIVATE 134 +#define WM_NCCALCSIZE 131 +#define WM_NCCREATE 129 +#define WM_NCDESTROY 130 +#define WM_NCHITTEST 132 +#define WM_NCLBUTTONDBLCLK 163 +#define WM_NCLBUTTONDOWN 161 +#define WM_NCLBUTTONUP 162 +#define WM_NCMBUTTONDBLCLK 169 +#define WM_NCMBUTTONDOWN 167 +#define WM_NCMBUTTONUP 168 +#define WM_NCMOUSEMOVE 160 +#define WM_NCPAINT 133 +#define WM_NCRBUTTONDBLCLK 166 +#define WM_NCRBUTTONDOWN 164 +#define WM_NCRBUTTONUP 165 +#define WM_NEXTDLGCTL 40 +#define WM_NEXTMENU 531 +#define WM_NOTIFY 78 +#define WM_NOTIFYFORMAT 85 +#define WM_NULL 0 +#define WM_PAINT 15 +#define WM_PAINTCLIPBOARD 777 +#define WM_PAINTICON 38 +#define WM_PALETTECHANGED 785 +#define WM_PALETTEISCHANGING 784 +#define WM_PARENTNOTIFY 528 +#define WM_PASTE 770 +#define WM_PENWINFIRST 896 +#define WM_PENWINLAST 911 +#define WM_POWER 72 +#define WM_POWERBROADCAST 536 +#define WM_PRINT 791 +#define WM_PRINTCLIENT 792 +#define WM_QUERYDRAGICON 55 +#define WM_QUERYENDSESSION 17 +#define WM_QUERYNEWPALETTE 783 +#define WM_QUERYOPEN 19 +#define WM_QUEUESYNC 35 +#define WM_QUIT 18 +#define WM_RENDERALLFORMATS 774 +#define WM_RENDERFORMAT 773 +#define WM_SETCURSOR 32 +#define WM_SETFOCUS 7 +#define WM_SETFONT 48 +#define WM_SETHOTKEY 50 +#define WM_SETICON 128 +#define WM_SETREDRAW 11 +#define WM_SETTEXT 12 +#define WM_SETTINGCHANGE 26 +#define WM_SHOWWINDOW 24 +#define WM_SIZE 5 +#define WM_SIZECLIPBOARD 779 +#define WM_SIZING 532 +#define WM_SPOOLERSTATUS 42 +#define WM_STYLECHANGED 125 +#define WM_STYLECHANGING 124 +#define WM_SYSCHAR 262 +#define WM_SYSCOLORCHANGE 21 +#define WM_SYSCOMMAND 274 +#define WM_SYSDEADCHAR 263 +#define WM_SYSKEYDOWN 260 +#define WM_SYSKEYUP 261 +#define WM_TCARD 82 +#define WM_TIMECHANGE 30 +#define WM_TIMER 275 +#define WM_UNDO 772 +#define WM_USER 1024 +#define WM_USERCHANGED 84 +#define WM_VKEYTOITEM 46 +#define WM_VSCROLL 277 +#define WM_VSCROLLCLIPBOARD 778 +#define WM_WINDOWPOSCHANGED 71 +#define WM_WINDOWPOSCHANGING 70 +#define WM_WININICHANGE 26 +#define WM_KEYFIRST 256 +#define WM_KEYLAST 264 +#define WM_SYNCPAINT 136 +#define WM_MOUSEACTIVATE 33 +#define WM_MOUSEMOVE 512 +#define WM_LBUTTONDOWN 513 +#define WM_LBUTTONUP 514 +#define WM_LBUTTONDBLCLK 515 +#define WM_RBUTTONDOWN 516 +#define WM_RBUTTONUP 517 +#define WM_RBUTTONDBLCLK 518 +#define WM_MBUTTONDOWN 519 +#define WM_MBUTTONUP 520 +#define WM_MBUTTONDBLCLK 521 +#define WM_MOUSEWHEEL 522 +#define WM_MOUSEFIRST 512 +#define WM_MOUSELAST 522 +#define WM_MOUSEHOVER 0x2A1 +#define WM_MOUSELEAVE 0x2A3 +#if (_WIN32_WINNT >= 0x0400) +#define WHEEL_DELTA 120 +#define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam)) +#define WHEEL_PAGESCROLL UINT_MAX +#endif +#define BM_CLICK 245 +#define BM_GETCHECK 240 +#define BM_GETIMAGE 246 +#define BM_GETSTATE 242 +#define BM_SETCHECK 241 +#define BM_SETIMAGE 247 +#define BM_SETSTATE 243 +#define BM_SETSTYLE 244 +#define BN_CLICKED 0 +#define BN_DBLCLK 5 +#define BN_DISABLE 4 +#define BN_DOUBLECLICKED 5 +#define BN_HILITE 2 +#define BN_KILLFOCUS 7 +#define BN_PAINT 1 +#define BN_PUSHED 2 +#define BN_SETFOCUS 6 +#define BN_UNHILITE 3 +#define BN_UNPUSHED 3 +#define CB_ADDSTRING 323 +#define CB_DELETESTRING 324 +#define CB_DIR 325 +#define CB_FINDSTRING 332 +#define CB_FINDSTRINGEXACT 344 +#define CB_GETCOUNT 326 +#define CB_GETCURSEL 327 +#define CB_GETDROPPEDCONTROLRECT 338 +#define CB_GETDROPPEDSTATE 343 +#define CB_GETDROPPEDWIDTH 351 +#define CB_GETEDITSEL 320 +#define CB_GETEXTENDEDUI 342 +#define CB_GETHORIZONTALEXTENT 349 +#define CB_GETITEMDATA 336 +#define CB_GETITEMHEIGHT 340 +#define CB_GETLBTEXT 328 +#define CB_GETLBTEXTLEN 329 +#define CB_GETLOCALE 346 +#define CB_GETTOPINDEX 347 +#define CB_INITSTORAGE 353 +#define CB_INSERTSTRING 330 +#define CB_LIMITTEXT 321 +#define CB_RESETCONTENT 331 +#define CB_SELECTSTRING 333 +#define CB_SETCURSEL 334 +#define CB_SETDROPPEDWIDTH 352 +#define CB_SETEDITSEL 322 +#define CB_SETEXTENDEDUI 341 +#define CB_SETHORIZONTALEXTENT 350 +#define CB_SETITEMDATA 337 +#define CB_SETITEMHEIGHT 339 +#define CB_SETLOCALE 345 +#define CB_SETTOPINDEX 348 +#define CB_SHOWDROPDOWN 335 +#define CBN_CLOSEUP 8 +#define CBN_DBLCLK 2 +#define CBN_DROPDOWN 7 +#define CBN_EDITCHANGE 5 +#define CBN_EDITUPDATE 6 +#define CBN_ERRSPACE (-1) +#define CBN_KILLFOCUS 4 +#define CBN_SELCHANGE 1 +#define CBN_SELENDCANCEL 10 +#define CBN_SELENDOK 9 +#define CBN_SETFOCUS 3 +#define EM_CANUNDO 198 +#define EM_CHARFROMPOS 215 +#define EM_EMPTYUNDOBUFFER 205 +#define EM_FMTLINES 200 +#define EM_GETFIRSTVISIBLELINE 206 +#define EM_GETHANDLE 189 +#define EM_GETLIMITTEXT 213 +#define EM_GETLINE 196 +#define EM_GETLINECOUNT 186 +#define EM_GETMARGINS 212 +#define EM_GETMODIFY 184 +#define EM_GETPASSWORDCHAR 210 +#define EM_GETRECT 178 +#define EM_GETSEL 176 +#define EM_GETTHUMB 190 +#define EM_GETWORDBREAKPROC 209 +#define EM_LIMITTEXT 197 +#define EM_LINEFROMCHAR 201 +#define EM_LINEINDEX 187 +#define EM_LINELENGTH 193 +#define EM_LINESCROLL 182 +#define EM_POSFROMCHAR 214 +#define EM_REPLACESEL 194 +#define EM_SCROLL 181 +#define EM_SCROLLCARET 183 +#define EM_SETHANDLE 188 +#define EM_SETLIMITTEXT 197 +#define EM_SETMARGINS 211 +#define EM_SETMODIFY 185 +#define EM_SETPASSWORDCHAR 204 +#define EM_SETREADONLY 207 +#define EM_SETRECT 179 +#define EM_SETRECTNP 180 +#define EM_SETSEL 177 +#define EM_SETTABSTOPS 203 +#define EM_SETWORDBREAKPROC 208 +#define EM_UNDO 199 +#define EN_CHANGE 768 +#define EN_ERRSPACE 1280 +#define EN_HSCROLL 1537 +#define EN_KILLFOCUS 512 +#define EN_MAXTEXT 1281 +#define EN_SETFOCUS 256 +#define EN_UPDATE 1024 +#define EN_VSCROLL 1538 +#define LB_ADDFILE 406 +#define LB_ADDSTRING 384 +#define LB_DELETESTRING 386 +#define LB_DIR 397 +#define LB_FINDSTRING 399 +#define LB_FINDSTRINGEXACT 418 +#define LB_GETANCHORINDEX 413 +#define LB_GETCARETINDEX 415 +#define LB_GETCOUNT 395 +#define LB_GETCURSEL 392 +#define LB_GETHORIZONTALEXTENT 403 +#define LB_GETITEMDATA 409 +#define LB_GETITEMHEIGHT 417 +#define LB_GETITEMRECT 408 +#define LB_GETLOCALE 422 +#define LB_GETSEL 391 +#define LB_GETSELCOUNT 400 +#define LB_GETSELITEMS 401 +#define LB_GETTEXT 393 +#define LB_GETTEXTLEN 394 +#define LB_GETTOPINDEX 398 +#define LB_INITSTORAGE 424 +#define LB_INSERTSTRING 385 +#define LB_ITEMFROMPOINT 425 +#define LB_RESETCONTENT 388 +#define LB_SELECTSTRING 396 +#define LB_SELITEMRANGE 411 +#define LB_SELITEMRANGEEX 387 +#define LB_SETANCHORINDEX 412 +#define LB_SETCARETINDEX 414 +#define LB_SETCOLUMNWIDTH 405 +#define LB_SETCOUNT 423 +#define LB_SETCURSEL 390 +#define LB_SETHORIZONTALEXTENT 404 +#define LB_SETITEMDATA 410 +#define LB_SETITEMHEIGHT 416 +#define LB_SETLOCALE 421 +#define LB_SETSEL 389 +#define LB_SETTABSTOPS 402 +#define LB_SETTOPINDEX 407 +#define LBN_DBLCLK 2 +#define LBN_ERRSPACE (-2) +#define LBN_KILLFOCUS 5 +#define LBN_SELCANCEL 3 +#define LBN_SELCHANGE 1 +#define LBN_SETFOCUS 4 +#define SBM_ENABLE_ARROWS 228 +#define SBM_GETPOS 225 +#define SBM_GETRANGE 227 +#define SBM_GETSCROLLINFO 234 +#define SBM_SETPOS 224 +#define SBM_SETRANGE 226 +#define SBM_SETRANGEREDRAW 230 +#define SBM_SETSCROLLINFO 233 +#define STM_GETICON 369 +#define STM_GETIMAGE 371 +#define STM_SETICON 368 +#define STM_SETIMAGE 370 +#define STN_CLICKED 0 +#define STN_DBLCLK 1 +#define STN_DISABLE 3 +#define STN_ENABLE 2 +#define DM_GETDEFID WM_USER +#define DM_SETDEFID (WM_USER+1) +#define DM_REPOSITION (WM_USER+2) +#define PSM_PAGEINFO (WM_USER+100) +#define PSM_SHEETINFO (WM_USER+101) +#define PSI_SETACTIVE 1 +#define PSI_KILLACTIVE 2 +#define PSI_APPLY 3 +#define PSI_RESET 4 +#define PSI_HASHELP 5 +#define PSI_HELP 6 +#define PSI_CHANGED 1 +#define PSI_GUISTART 2 +#define PSI_REBOOT 3 +#define PSI_GETSIBLINGS 4 +#define DCX_WINDOW 1 +#define DCX_CACHE 2 +#define DCX_PARENTCLIP 32 +#define DCX_CLIPSIBLINGS 16 +#define DCX_CLIPCHILDREN 8 +#define DCX_NORESETATTRS 4 +#define DCX_LOCKWINDOWUPDATE 0x400 +#define DCX_EXCLUDERGN 64 +#define DCX_INTERSECTRGN 128 +#define DCX_VALIDATE 0x200000 +#define GMDI_GOINTOPOPUPS 2 +#define GMDI_USEDISABLED 1 +#define FKF_AVAILABLE 2 +#define FKF_CLICKON 64 +#define FKF_FILTERKEYSON 1 +#define FKF_HOTKEYACTIVE 4 +#define FKF_HOTKEYSOUND 16 +#define FKF_CONFIRMHOTKEY 8 +#define FKF_INDICATOR 32 +#define HCF_HIGHCONTRASTON 1 +#define HCF_AVAILABLE 2 +#define HCF_HOTKEYACTIVE 4 +#define HCF_CONFIRMHOTKEY 8 +#define HCF_HOTKEYSOUND 16 +#define HCF_INDICATOR 32 +#define HCF_HOTKEYAVAILABLE 64 +#define MKF_AVAILABLE 2 +#define MKF_CONFIRMHOTKEY 8 +#define MKF_HOTKEYACTIVE 4 +#define MKF_HOTKEYSOUND 16 +#define MKF_INDICATOR 32 +#define MKF_MOUSEKEYSON 1 +#define MKF_MODIFIERS 64 +#define MKF_REPLACENUMBERS 128 +#define SERKF_ACTIVE 8 /* May be obsolete. Not in recent MS docs. */ +#define SERKF_AVAILABLE 2 +#define SERKF_INDICATOR 4 +#define SERKF_SERIALKEYSON 1 +#define SSF_AVAILABLE 2 +#define SSF_SOUNDSENTRYON 1 +#define SSTF_BORDER 2 +#define SSTF_CHARS 1 +#define SSTF_DISPLAY 3 +#define SSTF_NONE 0 +#define SSGF_DISPLAY 3 +#define SSGF_NONE 0 +#define SSWF_CUSTOM 4 +#define SSWF_DISPLAY 3 +#define SSWF_NONE 0 +#define SSWF_TITLE 1 +#define SSWF_WINDOW 2 +#define SKF_AUDIBLEFEEDBACK 64 +#define SKF_AVAILABLE 2 +#define SKF_CONFIRMHOTKEY 8 +#define SKF_HOTKEYACTIVE 4 +#define SKF_HOTKEYSOUND 16 +#define SKF_INDICATOR 32 +#define SKF_STICKYKEYSON 1 +#define SKF_TRISTATE 128 +#define SKF_TWOKEYSOFF 256 +#define TKF_AVAILABLE 2 +#define TKF_CONFIRMHOTKEY 8 +#define TKF_HOTKEYACTIVE 4 +#define TKF_HOTKEYSOUND 16 +#define TKF_TOGGLEKEYSON 1 +#define MDITILE_SKIPDISABLED 2 +#define MDITILE_HORIZONTAL 1 +#define MDITILE_VERTICAL 0 +#define VK_LBUTTON 1 +#define VK_RBUTTON 2 +#define VK_CANCEL 3 +#define VK_MBUTTON 4 +#if (_WIN32_WINNT >= 0x0500) +#define VK_XBUTTON1 5 +#define VK_XBUTTON2 6 +#endif +#define VK_BACK 8 +#define VK_TAB 9 +#define VK_CLEAR 12 +#define VK_RETURN 13 +#define VK_SHIFT 16 +#define VK_CONTROL 17 +#define VK_MENU 18 +#define VK_PAUSE 19 +#define VK_CAPITAL 20 +#define VK_KANA 0x15 +#define VK_HANGEUL 0x15 +#define VK_HANGUL 0x15 +#define VK_JUNJA 0x17 +#define VK_FINAL 0x18 +#define VK_HANJA 0x19 +#define VK_KANJI 0x19 +#define VK_ESCAPE 0x1B +#define VK_CONVERT 0x1C +#define VK_NONCONVERT 0x1D +#define VK_ACCEPT 0x1E +#define VK_MODECHANGE 0x1F +#define VK_SPACE 32 +#define VK_PRIOR 33 +#define VK_NEXT 34 +#define VK_END 35 +#define VK_HOME 36 +#define VK_LEFT 37 +#define VK_UP 38 +#define VK_RIGHT 39 +#define VK_DOWN 40 +#define VK_SELECT 41 +#define VK_PRINT 42 +#define VK_EXECUTE 43 +#define VK_SNAPSHOT 44 +#define VK_INSERT 45 +#define VK_DELETE 46 +#define VK_HELP 47 +#define VK_LWIN 0x5B +#define VK_RWIN 0x5C +#define VK_APPS 0x5D +#define VK_SLEEP 0x5F +#define VK_NUMPAD0 0x60 +#define VK_NUMPAD1 0x61 +#define VK_NUMPAD2 0x62 +#define VK_NUMPAD3 0x63 +#define VK_NUMPAD4 0x64 +#define VK_NUMPAD5 0x65 +#define VK_NUMPAD6 0x66 +#define VK_NUMPAD7 0x67 +#define VK_NUMPAD8 0x68 +#define VK_NUMPAD9 0x69 +#define VK_MULTIPLY 0x6A +#define VK_ADD 0x6B +#define VK_SEPARATOR 0x6C +#define VK_SUBTRACT 0x6D +#define VK_DECIMAL 0x6E +#define VK_DIVIDE 0x6F +#define VK_F1 0x70 +#define VK_F2 0x71 +#define VK_F3 0x72 +#define VK_F4 0x73 +#define VK_F5 0x74 +#define VK_F6 0x75 +#define VK_F7 0x76 +#define VK_F8 0x77 +#define VK_F9 0x78 +#define VK_F10 0x79 +#define VK_F11 0x7A +#define VK_F12 0x7B +#define VK_F13 0x7C +#define VK_F14 0x7D +#define VK_F15 0x7E +#define VK_F16 0x7F +#define VK_F17 0x80 +#define VK_F18 0x81 +#define VK_F19 0x82 +#define VK_F20 0x83 +#define VK_F21 0x84 +#define VK_F22 0x85 +#define VK_F23 0x86 +#define VK_F24 0x87 +#define VK_NUMLOCK 0x90 +#define VK_SCROLL 0x91 +#define VK_LSHIFT 0xA0 +#define VK_RSHIFT 0xA1 +#define VK_LCONTROL 0xA2 +#define VK_RCONTROL 0xA3 +#define VK_LMENU 0xA4 +#define VK_RMENU 0xA5 +#if (_WIN32_WINNT >= 0x0500) +#define VK_BROWSER_BACK 0xA6 +#define VK_BROWSER_FORWARD 0xA7 +#define VK_BROWSER_REFRESH 0xA8 +#define VK_BROWSER_STOP 0xA9 +#define VK_BROWSER_SEARCH 0xAA +#define VK_BROWSER_FAVORITES 0xAB +#define VK_BROWSER_HOME 0xAC +#define VK_VOLUME_MUTE 0xAD +#define VK_VOLUME_DOWN 0xAE +#define VK_VOLUME_UP 0xAF +#define VK_MEDIA_NEXT_TRACK 0xB0 +#define VK_MEDIA_PREV_TRACK 0xB1 +#define VK_MEDIA_STOP 0xB2 +#define VK_MEDIA_PLAY_PAUSE 0xB3 +#define VK_LAUNCH_MAIL 0xB4 +#define VK_LAUNCH_MEDIA_SELECT 0xB5 +#define VK_LAUNCH_APP1 0xB6 +#define VK_LAUNCH_APP2 0xB7 +#endif +#define VK_OEM_1 0xBA +#if (_WIN32_WINNT >= 0x0500) +#define VK_OEM_PLUS 0xBB +#define VK_OEM_COMMA 0xBC +#define VK_OEM_MINUS 0xBD +#define VK_OEM_PERIOD 0xBE +#endif +#define VK_OEM_2 0xBF +#define VK_OEM_3 0xC0 +#define VK_OEM_4 0xDB +#define VK_OEM_5 0xDC +#define VK_OEM_6 0xDD +#define VK_OEM_7 0xDE +#define VK_OEM_8 0xDF +#if (_WIN32_WINNT >= 0x0500) +#define VK_OEM_102 0xE2 +#endif +#define VK_PROCESSKEY 0xE5 +#if (_WIN32_WINNT >= 0x0500) +#define VK_PACKET 0xE7 +#endif +#define VK_ATTN 0xF6 +#define VK_CRSEL 0xF7 +#define VK_EXSEL 0xF8 +#define VK_EREOF 0xF9 +#define VK_PLAY 0xFA +#define VK_ZOOM 0xFB +#define VK_NONAME 0xFC +#define VK_PA1 0xFD +#define VK_OEM_CLEAR 0xFE +#define TME_HOVER 1 +#define TME_LEAVE 2 +#define TME_QUERY 0x40000000 +#define TME_CANCEL 0x80000000 +#define HOVER_DEFAULT 0xFFFFFFFF +#define MK_LBUTTON 1 +#define MK_RBUTTON 2 +#define MK_SHIFT 4 +#define MK_CONTROL 8 +#define MK_MBUTTON 16 +#define TPM_CENTERALIGN 4 +#define TPM_LEFTALIGN 0 +#define TPM_RIGHTALIGN 8 +#define TPM_LEFTBUTTON 0 +#define TPM_RIGHTBUTTON 2 +#define TPM_HORIZONTAL 0 +#define TPM_VERTICAL 64 +#define TPM_TOPALIGN 0 +#define TPM_VCENTERALIGN 16 +#define TPM_BOTTOMALIGN 32 +#define TPM_NONOTIFY 128 +#define TPM_RETURNCMD 256 +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +#define TPM_RECURSE 1 +#endif +#define HELP_COMMAND 0x102 +#define HELP_CONTENTS 3 +#define HELP_CONTEXT 1 +#define HELP_CONTEXTPOPUP 8 +#define HELP_FORCEFILE 9 +#define HELP_HELPONHELP 4 +#define HELP_INDEX 3 +#define HELP_KEY 0x101 +#define HELP_MULTIKEY 0x201 +#define HELP_PARTIALKEY 0x105 +#define HELP_QUIT 2 +#define HELP_SETCONTENTS 5 +#define HELP_SETINDEX 5 +#define HELP_CONTEXTMENU 0xa +#define HELP_FINDER 0xb +#define HELP_WM_HELP 0xc +#define HELP_TCARD 0x8000 +#define HELP_TCARD_DATA 16 +#define HELP_TCARD_OTHER_CALLER 0x11 +#define IDH_NO_HELP 28440 +#define IDH_MISSING_CONTEXT 28441 +#define IDH_GENERIC_HELP_BUTTON 28442 +#define IDH_OK 28443 +#define IDH_CANCEL 28444 +#define IDH_HELP 28445 +#define LB_CTLCODE 0 +#define LB_OKAY 0 +#define LB_ERR (-1) +#define LB_ERRSPACE (-2) +#define CB_OKAY 0 +#define CB_ERR (-1) +#define CB_ERRSPACE (-2) +#define HIDE_WINDOW 0 +#define SHOW_OPENWINDOW 1 +#define SHOW_ICONWINDOW 2 +#define SHOW_FULLSCREEN 3 +#define SHOW_OPENNOACTIVATE 4 +#define SW_PARENTCLOSING 1 +#define SW_OTHERZOOM 2 +#define SW_PARENTOPENING 3 +#define SW_OTHERUNZOOM 4 +#define KF_EXTENDED 256 +#define KF_DLGMODE 2048 +#define KF_MENUMODE 4096 +#define KF_ALTDOWN 8192 +#define KF_REPEAT 16384 +#define KF_UP 32768 +#define WSF_VISIBLE 1 +#define PWR_OK 1 +#define PWR_FAIL (-1) +#define PWR_SUSPENDREQUEST 1 +#define PWR_SUSPENDRESUME 2 +#define PWR_CRITICALRESUME 3 +#define NFR_ANSI 1 +#define NFR_UNICODE 2 +#define NF_QUERY 3 +#define NF_REQUERY 4 +#define MENULOOP_WINDOW 0 +#define MENULOOP_POPUP 1 +#define WMSZ_LEFT 1 +#define WMSZ_RIGHT 2 +#define WMSZ_TOP 3 +#define WMSZ_TOPLEFT 4 +#define WMSZ_TOPRIGHT 5 +#define WMSZ_BOTTOM 6 +#define WMSZ_BOTTOMLEFT 7 +#define WMSZ_BOTTOMRIGHT 8 +#define HTERROR (-2) +#define HTTRANSPARENT (-1) +#define HTNOWHERE 0 +#define HTCLIENT 1 +#define HTCAPTION 2 +#define HTSYSMENU 3 +#define HTGROWBOX 4 +#define HTSIZE 4 +#define HTMENU 5 +#define HTHSCROLL 6 +#define HTVSCROLL 7 +#define HTMINBUTTON 8 +#define HTMAXBUTTON 9 +#define HTREDUCE 8 +#define HTZOOM 9 +#define HTLEFT 10 +#define HTSIZEFIRST 10 +#define HTRIGHT 11 +#define HTTOP 12 +#define HTTOPLEFT 13 +#define HTTOPRIGHT 14 +#define HTBOTTOM 15 +#define HTBOTTOMLEFT 16 +#define HTBOTTOMRIGHT 17 +#define HTSIZELAST 17 +#define HTBORDER 18 +#define HTOBJECT 19 +#define HTCLOSE 20 +#define HTHELP 21 +#define MA_ACTIVATE 1 +#define MA_ACTIVATEANDEAT 2 +#define MA_NOACTIVATE 3 +#define MA_NOACTIVATEANDEAT 4 +#define SIZE_RESTORED 0 +#define SIZE_MINIMIZED 1 +#define SIZE_MAXIMIZED 2 +#define SIZE_MAXSHOW 3 +#define SIZE_MAXHIDE 4 +#define SIZENORMAL 0 +#define SIZEICONIC 1 +#define SIZEFULLSCREEN 2 +#define SIZEZOOMSHOW 3 +#define SIZEZOOMHIDE 4 +#define WVR_ALIGNTOP 16 +#define WVR_ALIGNLEFT 32 +#define WVR_ALIGNBOTTOM 64 +#define WVR_ALIGNRIGHT 128 +#define WVR_HREDRAW 256 +#define WVR_VREDRAW 512 +#define WVR_REDRAW (WVR_HREDRAW|WVR_VREDRAW) +#define WVR_VALIDRECTS 1024 +#define PRF_CHECKVISIBLE 1 +#define PRF_NONCLIENT 2 +#define PRF_CLIENT 4 +#define PRF_ERASEBKGND 8 +#define PRF_CHILDREN 16 +#define PRF_OWNED 32 +#define IDANI_OPEN 1 +#define IDANI_CLOSE 2 +#define IDANI_CAPTION 3 +#define WPF_RESTORETOMAXIMIZED 2 +#define WPF_SETMINPOSITION 1 +#define ODT_MENU 1 +#define ODT_LISTBOX 2 +#define ODT_COMBOBOX 3 +#define ODT_BUTTON 4 +#define ODT_STATIC 5 +#define ODA_DRAWENTIRE 1 +#define ODA_SELECT 2 +#define ODA_FOCUS 4 +#define ODS_SELECTED 1 +#define ODS_GRAYED 2 +#define ODS_DISABLED 4 +#define ODS_CHECKED 8 +#define ODS_FOCUS 16 +#define ODS_DEFAULT 32 +#define ODS_COMBOBOXEDIT 4096 +#define IDHOT_SNAPWINDOW (-1) +#define IDHOT_SNAPDESKTOP (-2) +#define DBWF_LPARAMPOINTER 0x8000 +#define DLGWINDOWEXTRA 30 +#define MNC_IGNORE 0 +#define MNC_CLOSE 1 +#define MNC_EXECUTE 2 +#define MNC_SELECT 3 +#define DOF_EXECUTABLE 0x8001 +#define DOF_DOCUMENT 0x8002 +#define DOF_DIRECTORY 0x8003 +#define DOF_MULTIPLE 0x8004 +#define DOF_PROGMAN 1 +#define DOF_SHELLDATA 2 +#define DO_DROPFILE 0x454C4946 +#define DO_PRINTFILE 0x544E5250 +#define SW_SCROLLCHILDREN 1 +#define SW_INVALIDATE 2 +#define SW_ERASE 4 +#define SC_SIZE 0xF000 +#define SC_MOVE 0xF010 +#define SC_MINIMIZE 0xF020 +#define SC_ICON 0xf020 +#define SC_MAXIMIZE 0xF030 +#define SC_ZOOM 0xF030 +#define SC_NEXTWINDOW 0xF040 +#define SC_PREVWINDOW 0xF050 +#define SC_CLOSE 0xF060 +#define SC_VSCROLL 0xF070 +#define SC_HSCROLL 0xF080 +#define SC_MOUSEMENU 0xF090 +#define SC_KEYMENU 0xF100 +#define SC_ARRANGE 0xF110 +#define SC_RESTORE 0xF120 +#define SC_TASKLIST 0xF130 +#define SC_SCREENSAVE 0xF140 +#define SC_HOTKEY 0xF150 +#define SC_DEFAULT 0xF160 +#define SC_MONITORPOWER 0xF170 +#define SC_CONTEXTHELP 0xF180 +#define SC_SEPARATOR 0xF00F +#define EC_LEFTMARGIN 1 +#define EC_RIGHTMARGIN 2 +#define EC_USEFONTINFO 0xffff +#define DC_HASDEFID 0x534B +#define DLGC_WANTARROWS 1 +#define DLGC_WANTTAB 2 +#define DLGC_WANTALLKEYS 4 +#define DLGC_WANTMESSAGE 4 +#define DLGC_HASSETSEL 8 +#define DLGC_DEFPUSHBUTTON 16 +#define DLGC_UNDEFPUSHBUTTON 32 +#define DLGC_RADIOBUTTON 64 +#define DLGC_WANTCHARS 128 +#define DLGC_STATIC 256 +#define DLGC_BUTTON 0x2000 +#define LB_CTLCODE 0 +#define WA_INACTIVE 0 +#define WA_ACTIVE 1 +#define WA_CLICKACTIVE 2 +#define ICON_SMALL 0 +#define ICON_BIG 1 +#if (_WIN32_WINNT >= 0x0501) +#define ICON_SMALL2 2 +#endif +#define HBMMENU_CALLBACK ((HBITMAP) -1) +#define HBMMENU_SYSTEM ((HBITMAP)1) +#define HBMMENU_MBAR_RESTORE ((HBITMAP)2) +#define HBMMENU_MBAR_MINIMIZE ((HBITMAP)3) +#define HBMMENU_MBAR_CLOSE ((HBITMAP)5) +#define HBMMENU_MBAR_CLOSE_D ((HBITMAP)6) +#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP)7) +#define HBMMENU_POPUP_CLOSE ((HBITMAP)8) +#define HBMMENU_POPUP_RESTORE ((HBITMAP)9) +#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP)10) +#define HBMMENU_POPUP_MINIMIZE ((HBITMAP)11) +#define MOD_ALT 1 +#define MOD_CONTROL 2 +#define MOD_SHIFT 4 +#define MOD_WIN 8 +#define MOD_IGNORE_ALL_MODIFIER 1024 +#define MOD_ON_KEYUP 2048 +#define MOD_RIGHT 16384 +#define MOD_LEFT 32768 +#define LLKHF_ALTDOWN 0x00000020 +#if (WINVER >= 0x0500) +#define FLASHW_STOP 0 +#define FLASHW_CAPTION 1 +#define FLASHW_TRAY 2 +#define FLASHW_ALL (FLASHW_CAPTION|FLASHW_TRAY) +#define FLASHW_TIMER 4 +#define FLASHW_TIMERNOFG 12 +#endif /* (WINVER >= 0x0500) */ +#define CURSOR_SHOWING 0x00000001 +#define WS_ACTIVECAPTION 0x00000001 +#if (_WIN32_WINNT >= 0x0403) +#define INPUT_MOUSE 0x00000000 +#define INPUT_KEYBOARD 0x00000001 +#define INPUT_HARDWARE 0x00000002 +#endif /* (_WIN32_WINNT >= 0x0403) */ +#if (WINVER >= 0x0400) +#define ENDSESSION_LOGOFF 0x80000000 +#endif +#if (WINVER >= 0x0500) +#define CHILDID_SELF 0 +#define OBJID_WINDOW 0x00000000 +#define OBJID_SYSMENU 0xFFFFFFFF +#define OBJID_TITLEBAR 0xFFFFFFFE +#define OBJID_MENU 0xFFFFFFFD +#define OBJID_CLIENT 0xFFFFFFFC +#define OBJID_VSCROLL 0xFFFFFFFB +#define OBJID_HSCROLL 0xFFFFFFFA +#define OBJID_SIZEGRIP 0xFFFFFFF9 +#define OBJID_CARET 0xFFFFFFF8 +#define OBJID_CURSOR 0xFFFFFFF7 +#define OBJID_ALERT 0xFFFFFFF6 +#define OBJID_SOUND 0xFFFFFFF5 +#define GUI_CARETBLINKING 0x00000001 +#define GUI_INMOVESIZE 0x00000002 +#define GUI_INMENUMODE 0x00000004 +#define GUI_SYSTEMMENUMODE 0x00000008 +#define GUI_POPUPMENUMODE 0x00000010 +#if (_WIN32_WINNT >= 0x0501) +#define GUI_16BITTASK 0x00000020 +#endif +#define WINEVENT_OUTOFCONTEXT 0x0000 +#define WINEVENT_SKIPOWNTHREAD 0x0001 +#define WINEVENT_SKIPOWNPROCESS 0x0002 +#define WINEVENT_INCONTEXT 0x0004 +#define AW_HOR_POSITIVE 0x00000001 +#define AW_HOR_NEGATIVE 0x00000002 +#define AW_VER_POSITIVE 0x00000004 +#define AW_VER_NEGATIVE 0x00000008 +#define AW_CENTER 0x00000010 +#define AW_HIDE 0x00010000 +#define AW_ACTIVATE 0x00020000 +#define AW_SLIDE 0x00040000 +#define AW_BLEND 0x00080000 +#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000 +#define DEVICE_NOTIFY_SERVICE_HANDLE 0x00000001 +#if (_WIN32_WINNT >= 0x0501) +#define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 0x00000004 +#endif +#define EVENT_MIN 0x00000001 +#define EVENT_SYSTEM_SOUND 0x00000001 +#define EVENT_SYSTEM_ALERT 0x00000002 +#define EVENT_SYSTEM_FOREGROUND 0x00000003 +#define EVENT_SYSTEM_MENUSTART 0x00000004 +#define EVENT_SYSTEM_MENUEND 0x00000005 +#define EVENT_SYSTEM_MENUPOPUPSTART 0x00000006 +#define EVENT_SYSTEM_MENUPOPUPEND 0x00000007 +#define EVENT_SYSTEM_CAPTURESTART 0x00000008 +#define EVENT_SYSTEM_CAPTUREEND 0x00000009 +#define EVENT_SYSTEM_MOVESIZESTART 0x0000000a +#define EVENT_SYSTEM_MOVESIZEEND 0x0000000b +#define EVENT_SYSTEM_CONTEXTHELPSTART 0x0000000c +#define EVENT_SYSTEM_CONTEXTHELPEND 0x0000000d +#define EVENT_SYSTEM_DRAGDROPSTART 0x0000000e +#define EVENT_SYSTEM_DRAGDROPEND 0x0000000f +#define EVENT_SYSTEM_DIALOGSTART 0x00000010 +#define EVENT_SYSTEM_DIALOGEND 0x00000011 +#define EVENT_SYSTEM_SCROLLINGSTART 0x00000012 +#define EVENT_SYSTEM_SCROLLINGEND 0x00000013 +#define EVENT_SYSTEM_SWITCHSTART 0x00000014 +#define EVENT_SYSTEM_SWITCHEND 0x00000015 +#define EVENT_SYSTEM_MINIMIZESTART 0x00000016 +#define EVENT_SYSTEM_MINIMIZEEND 0x00000017 +#define EVENT_OBJECT_CREATE 0x00008000 +#define EVENT_OBJECT_DESTROY 0x00008001 +#define EVENT_OBJECT_SHOW 0x00008002 +#define EVENT_OBJECT_HIDE 0x00008003 +#define EVENT_OBJECT_REORDER 0x00008004 +#define EVENT_OBJECT_FOCUS 0x00008005 +#define EVENT_OBJECT_SELECTION 0x00008006 +#define EVENT_OBJECT_SELECTIONADD 0x00008007 +#define EVENT_OBJECT_SELECTIONREMOVE 0x00008008 +#define EVENT_OBJECT_SELECTIONWITHIN 0x00008009 +#define EVENT_OBJECT_STATECHANGE 0x0000800a +#define EVENT_OBJECT_LOCATIONCHANGE 0x0000800b +#define EVENT_OBJECT_NAMECHANGE 0x0000800c +#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x0000800d +#define EVENT_OBJECT_VALUECHANGE 0x0000800e +#define EVENT_OBJECT_PARENTCHANGE 0x0000800f +#define EVENT_OBJECT_HELPCHANGE 0x00008010 +#define EVENT_OBJECT_DEFACTIONCHANGE 0x00008011 +#define EVENT_OBJECT_ACCELERATORCHANGE 0x00008012 +#if (_WIN32_WINNT >= 0x0501) +#define EVENT_CONSOLE_CARET 0x00004001 +#define CONSOLE_CARET_SELECTION 0x00000001 +#define CONSOLE_CARET_VISIBLE 0x00000002 +#define EVENT_CONSOLE_UPDATE_REGION 0x00004002 +#define EVENT_CONSOLE_UPDATE_SIMPLE 0x00004003 +#define EVENT_CONSOLE_UPDATE_SCROLL 0x00004004 +#define EVENT_CONSOLE_LAYOUT 0x00004005 +#define EVENT_CONSOLE_START_APPLICATION 0x00004006 +#define CONSOLE_APPLICATION_16BIT 0x00000001 +#define EVENT_CONSOLE_END_APPLICATION 0x00004007 +#endif /* (_WIN32_WINNT >= 0x0501) */ +#define EVENT_MAX 0x7fffffff +#endif /* (WINVER >= 0x0500) */ +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490) +#define ASFW_ANY ((DWORD)-1) +#define LSFW_LOCK 1 +#define LSFW_UNLOCK 2 +#endif +#if (_WIN32_WINNT >= 0x0500) +#define LWA_COLORKEY 1 +#define LWA_ALPHA 2 +#endif +#define GA_PARENT 1 +#define GA_ROOT 2 +#define GA_ROOTOWNER 3 +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +#define MONITOR_DEFAULTTONULL 0 +#define MONITOR_DEFAULTTOPRIMARY 1 +#define MONITOR_DEFAULTTONEAREST 2 +#define MONITORINFOF_PRIMARY 1 +#define EDS_RAWMODE 0x00000002 +#define ISMEX_NOSEND 0x00000000 +#define ISMEX_CALLBACK 0x00000004 +#define ISMEX_NOTIFY 0x00000002 +#define ISMEX_REPLIED 0x00000008 +#define ISMEX_SEND 0x00000001 +#endif +#if (_WIN32_WINNT >= 0x0500) +#define GR_GDIOBJECTS 0 +#define GR_USEROBJECTS 1 +#endif +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490) +#define GMMP_USE_DISPLAY_POINTS 1 +#define GMMP_USE_HIGH_RESOLUTION_POINTS 2 +#endif +#if (_WIN32_WINNT >= 0x0501) +#define PW_CLIENTONLY 0x00000001 +#define RIM_INPUT 0x00000000 +#define RIM_INPUTSINK 0x00000001 +#define RIM_TYPEMOUSE 0x00000000 +#define RIM_TYPEKEYBOARD 0x00000001 +#define RIM_TYPEHID 0x00000002 +#define MOUSE_MOVE_RELATIVE 0x00000000 +#define MOUSE_MOVE_ABSOLUTE 0x00000001 +#define MOUSE_VIRTUAL_DESKTOP 0x00000002 +#define MOUSE_ATTRIBUTES_CHANGED 0x00000004 +#define RI_MOUSE_LEFT_BUTTON_DOWN 0x0001 +#define RI_MOUSE_LEFT_BUTTON_UP 0x0002 +#define RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004 +#define RI_MOUSE_RIGHT_BUTTON_UP 0x0008 +#define RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010 +#define RI_MOUSE_MIDDLE_BUTTON_UP 0x0020 +#define RI_MOUSE_BUTTON_1_DOWN RI_MOUSE_LEFT_BUTTON_DOWN +#define RI_MOUSE_BUTTON_1_UP RI_MOUSE_LEFT_BUTTON_UP +#define RI_MOUSE_BUTTON_2_DOWN RI_MOUSE_RIGHT_BUTTON_DOWN +#define RI_MOUSE_BUTTON_2_UP RI_MOUSE_RIGHT_BUTTON_UP +#define RI_MOUSE_BUTTON_3_DOWN RI_MOUSE_MIDDLE_BUTTON_DOWN +#define RI_MOUSE_BUTTON_3_UP RI_MOUSE_MIDDLE_BUTTON_UP +#define RI_MOUSE_BUTTON_4_DOWN 0x0040 +#define RI_MOUSE_BUTTON_4_UP 0x0080 +#define RI_MOUSE_BUTTON_5_DOWN 0x0100 +#define RI_MOUSE_BUTTON_5_UP 0x0200 +#define RI_MOUSE_WHEEL 0x0400 +#define KEYBOARD_OVERRUN_MAKE_CODE 0x00ff +#define RI_KEY_MAKE 0x0000 +#define RI_KEY_BREAK 0x0001 +#define RI_KEY_E0 0x0002 +#define RI_KEY_E1 0x0004 +#define RI_KEY_TERMSRV_SET_LED 0x0008 +#define RI_KEY_TERMSRV_SHADOW 0x0010 +#define RID_INPUT 0x10000003 +#define RID_HEADER 0x10000005 +#define RIDI_PREPARSEDDATA 0x20000005 +#define RIDI_DEVICENAME 0x20000007 +#define RIDI_DEVICEINFO 0x2000000b +#define RIDEV_REMOVE 0x00000001 +#define RIDEV_EXCLUDE 0x00000010 +#define RIDEV_PAGEONLY 0x00000020 +#define RIDEV_NOLEGACY 0x00000030 +#define RIDEV_INPUTSINK 0x00000100 +#define RIDEV_CAPTUREMOUSE 0x00000200 +#define RIDEV_NOHOTKEYS 0x00000200 +#define RIDEV_APPKEYS 0x00000400 +#endif + +#ifndef RC_INVOKED +typedef BOOL(CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM); +typedef VOID(CALLBACK *TIMERPROC)(HWND,UINT,UINT,DWORD); +typedef BOOL(CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,int); +typedef LRESULT(CALLBACK *HOOKPROC)(int,WPARAM,LPARAM); +typedef BOOL(CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE); +typedef BOOL(CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE); +typedef BOOL(CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,DWORD); +typedef BOOL(CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,DWORD); +typedef int(CALLBACK *EDITWORDBREAKPROCA)(LPSTR,int,int,int); +typedef int(CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,int,int,int); +typedef LRESULT(CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM); +typedef BOOL(CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int); +typedef BOOL(CALLBACK *WNDENUMPROC)(HWND,LPARAM); +typedef BOOL(CALLBACK *ENUMWINDOWSPROC)(HWND,LPARAM); +typedef BOOL(CALLBACK* MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM); +typedef BOOL(CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM); +typedef BOOL(CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM); +typedef NAMEENUMPROCA DESKTOPENUMPROCA; +typedef NAMEENUMPROCW DESKTOPENUMPROCW; +typedef NAMEENUMPROCA WINSTAENUMPROCA; +typedef NAMEENUMPROCW WINSTAENUMPROCW; +typedef void(CALLBACK *SENDASYNCPROC)(HWND,UINT,DWORD,LRESULT); +DECLARE_HANDLE(HHOOK); +DECLARE_HANDLE(HDWP); +DECLARE_HANDLE(HDEVNOTIFY); +typedef struct tagACCEL { + BYTE fVirt; + WORD key; + WORD cmd; +} ACCEL,*LPACCEL; +typedef struct tagACCESSTIMEOUT { + UINT cbSize; + DWORD dwFlags; + DWORD iTimeOutMSec; +} ACCESSTIMEOUT, *LPACCESSTIMEOUT; +typedef struct tagANIMATIONINFO { + UINT cbSize; + int iMinAnimate; +} ANIMATIONINFO,*LPANIMATIONINFO; +typedef struct tagCREATESTRUCTA { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCSTR lpszName; + LPCSTR lpszClass; + DWORD dwExStyle; +} CREATESTRUCTA,*LPCREATESTRUCTA; +typedef struct tagCREATESTRUCTW { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCWSTR lpszName; + LPCWSTR lpszClass; + DWORD dwExStyle; +} CREATESTRUCTW,*LPCREATESTRUCTW; +typedef struct tagCBT_CREATEWNDA { + LPCREATESTRUCTA lpcs; + HWND hwndInsertAfter; +} CBT_CREATEWNDA, *LPCBT_CREATEWNDA; +typedef struct tagCBT_CREATEWNDW { + LPCREATESTRUCTW lpcs; + HWND hwndInsertAfter; +} CBT_CREATEWNDW, *LPCBT_CREATEWNDW; +typedef struct tagCBTACTIVATESTRUCT { + BOOL fMouse; + HWND hWndActive; +} CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT; +typedef struct tagCLIENTCREATESTRUCT { + HANDLE hWindowMenu; + UINT idFirstChild; +} CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT; +typedef struct tagCOMPAREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + DWORD itemData1; + UINT itemID2; + DWORD itemData2; + DWORD dwLocaleId; +} COMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT; +typedef struct tagCOPYDATASTRUCT { + DWORD dwData; + DWORD cbData; + PVOID lpData; +} COPYDATASTRUCT,*PCOPYDATASTRUCT; +typedef struct tagCURSORSHAPE { + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; +} CURSORSHAPE,*LPCURSORSHAPE; +typedef struct tagCWPRETSTRUCT { + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + DWORD message; + HWND hwnd; +} CWPRETSTRUCT; +typedef struct tagCWPSTRUCT { + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} CWPSTRUCT,*PCWPSTRUCT; +typedef struct tagDEBUGHOOKINFO { + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; +} DEBUGHOOKINFO,*PDEBUGHOOKINFO,*LPDEBUGHOOKINFO; +typedef struct tagDELETEITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + UINT itemData; +} DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT; +#pragma pack(push,2) +typedef struct { + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; +} DLGITEMTEMPLATE,*LPDLGITEMTEMPLATE; +typedef struct { + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; +} DLGTEMPLATE,*LPDLGTEMPLATE,*LPDLGTEMPLATEA,*LPDLGTEMPLATEW; +typedef const DLGTEMPLATE *LPCDLGTEMPLATE; +#pragma pack(pop) +typedef struct tagDRAWITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + DWORD itemData; +} DRAWITEMSTRUCT,*LPDRAWITEMSTRUCT,*PDRAWITEMSTRUCT; +typedef struct { + UINT cbSize; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; +} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS; +typedef struct tagPAINTSTRUCT { + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE rgbReserved[32]; +} PAINTSTRUCT,*LPPAINTSTRUCT; +typedef struct tagMSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +} MSG,*LPMSG,*PMSG; +typedef struct _ICONINFO { + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; +} ICONINFO,*PICONINFO; +typedef struct tagNMHDR { + HWND hwndFrom; + UINT idFrom; + UINT code; +} NMHDR,*LPNMHDR; +typedef struct _WNDCLASSA { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; +} WNDCLASSA,*LPWNDCLASSA,*PWNDCLASSA; +typedef struct _WNDCLASSW { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; +} WNDCLASSW,*LPWNDCLASSW,*PWNDCLASSW; +typedef struct _WNDCLASSEXA { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; +} WNDCLASSEXA,*LPWNDCLASSEXA,*PWNDCLASSEXA; +typedef struct _WNDCLASSEXW { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; +} WNDCLASSEXW,*LPWNDCLASSEXW,*PWNDCLASSEXW; +typedef struct tagMENUITEMINFOA { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + LPSTR dwTypeData; + UINT cch; +#if (_WIN32_WINNT >= 0x0500) + HBITMAP hbmpItem; +#endif +} MENUITEMINFOA,*LPMENUITEMINFOA; +typedef const MENUITEMINFOA *LPCMENUITEMINFOA; +typedef struct tagMENUITEMINFOW { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + LPWSTR dwTypeData; + UINT cch; +#if (_WIN32_WINNT >= 0x0500) + HBITMAP hbmpItem; +#endif +} MENUITEMINFOW,*LPMENUITEMINFOW; +typedef const MENUITEMINFOW *LPCMENUITEMINFOW; +typedef struct tagSCROLLINFO { + UINT cbSize; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; +} SCROLLINFO,*LPSCROLLINFO; +typedef const SCROLLINFO *LPCSCROLLINFO; +typedef struct _WINDOWPLACEMENT { + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; +} WINDOWPLACEMENT,*LPWINDOWPLACEMENT,*PWINDOWPLACEMENT; +typedef struct { + WORD versionNumber; + WORD offset; +} MENUITEMTEMPLATEHEADER; +typedef struct { + WORD mtOption; + WORD mtID; + WCHAR mtString[1]; +} MENUITEMTEMPLATE; +typedef void MENUTEMPLATE,MENUTEMPLATEA,MENUTEMPLATEW,*LPMENUTEMPLATEA,*LPMENUTEMPLATEW,*LPMENUTEMPLATE; +typedef struct tagHELPINFO { + UINT cbSize; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD dwContextId; + POINT MousePos; +} HELPINFO,*LPHELPINFO; +typedef void(CALLBACK *MSGBOXCALLBACK)(LPHELPINFO); +typedef struct { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA; +typedef struct { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW; +typedef struct tagUSEROBJECTFLAGS { + BOOL fInherit; + BOOL fReserved; + DWORD dwFlags; +} USEROBJECTFLAGS; +typedef struct tagFILTERKEYS { + UINT cbSize; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; +} FILTERKEYS; +typedef struct tagHIGHCONTRASTA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszDefaultScheme; +} HIGHCONTRASTA,*LPHIGHCONTRASTA; +typedef struct tagHIGHCONTRASTW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; +} HIGHCONTRASTW,*LPHIGHCONTRASTW; +#ifndef NOGDI +typedef struct tagICONMETRICSA { + UINT cbSize; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTA lfFont; +} ICONMETRICSA,*LPICONMETRICSA; +typedef struct tagICONMETRICSW { + UINT cbSize; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTW lfFont; +} ICONMETRICSW,*LPICONMETRICSW; +#endif /* NOGDI */ +typedef struct tagMINIMIZEDMETRICS { + UINT cbSize; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; +} MINIMIZEDMETRICS,*LPMINIMIZEDMETRICS; +typedef struct tagMOUSEKEYS{ + UINT cbSize; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; +} MOUSEKEYS,*LPMOUSEKEYS; +#ifndef NOGDI +typedef struct tagNONCLIENTMETRICSA { + UINT cbSize; + 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; +} NONCLIENTMETRICSA,*LPNONCLIENTMETRICSA; +typedef struct tagNONCLIENTMETRICSW { + UINT cbSize; + 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; +} NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW; +#endif +typedef struct tagSERIALKEYSA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} SERIALKEYSA,*LPSERIALKEYSA; +typedef struct tagSERIALKEYSW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} SERIALKEYSW,*LPSERIALKEYSW; +typedef struct tagSOUNDSENTRYA { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} SOUNDSENTRYA,*LPSOUNDSENTRYA; +typedef struct tagSOUNDSENTRYW { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} SOUNDSENTRYW,*LPSOUNDSENTRYW; +typedef struct tagSTICKYKEYS { + DWORD cbSize; + DWORD dwFlags; +} STICKYKEYS,*LPSTICKYKEYS; +typedef struct tagTOGGLEKEYS { + DWORD cbSize; + DWORD dwFlags; +} TOGGLEKEYS; +typedef struct tagMOUSEHOOKSTRUCT { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + DWORD dwExtraInfo; +} MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT; +typedef struct tagTRACKMOUSEEVENT { + DWORD cbSize; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT; +typedef struct tagTPMPARAMS { + UINT cbSize; + RECT rcExclude; +} TPMPARAMS,*LPTPMPARAMS; +typedef struct tagEVENTMSG { + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; +} EVENTMSG,*PEVENTMSGMSG,*LPEVENTMSGMSG,*PEVENTMSG,*LPEVENTMSG; +typedef struct _WINDOWPOS { + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; +} WINDOWPOS,*PWINDOWPOS,*LPWINDOWPOS; +typedef struct tagNCCALCSIZE_PARAMS { + RECT rgrc[3]; + PWINDOWPOS lppos; +} NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS; +typedef struct tagMDICREATESTRUCTA { + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} MDICREATESTRUCTA,*LPMDICREATESTRUCTA; +typedef struct tagMDICREATESTRUCTW { + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} MDICREATESTRUCTW,*LPMDICREATESTRUCTW; +typedef struct tagMINMAXINFO { + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; +} MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO; +typedef struct tagMDINEXTMENU { + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; +} MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU; +typedef struct tagMEASUREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + DWORD itemData; +} MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT; +typedef struct tagDROPSTRUCT { + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + DWORD dwData; + POINT ptDrop; + DWORD dwControlData; +} DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT; +typedef DWORD HELPPOLY; +typedef struct tagMULTIKEYHELPA { + DWORD mkSize; + CHAR mkKeylist; + CHAR szKeyphrase[1]; +} MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA; +typedef struct tagMULTIKEYHELPW { + DWORD mkSize; + WCHAR mkKeylist; + WCHAR szKeyphrase[1]; +} MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW; +typedef struct tagHELPWININFOA { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR rgchMember[2]; +} HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA; +typedef struct tagHELPWININFOW { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR rgchMember[2]; +} HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW; +typedef struct tagSTYLESTRUCT { + DWORD styleOld; + DWORD styleNew; +} STYLESTRUCT,*LPSTYLESTRUCT; +typedef struct tagALTTABINFO { + DWORD cbSize; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; +} ALTTABINFO,*PALTTABINFO,*LPALTTABINFO; +typedef struct tagCOMBOBOXINFO { + DWORD cbSize; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; +} COMBOBOXINFO,*PCOMBOBOXINFO,*LPCOMBOBOXINFO; +typedef struct tagCURSORINFO { + DWORD cbSize; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} CURSORINFO,*PCURSORINFO,*LPCURSORINFO; +typedef struct tagMENUBARINFO { + DWORD cbSize; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; + BOOL fBarFocused:1; + BOOL fFocused:1; +} MENUBARINFO,*PMENUBARINFO; +typedef struct tagMENUINFO { + DWORD cbSize; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; +} MENUINFO,*LPMENUINFO; +typedef MENUINFO CONST *LPCMENUINFO; +#define CCHILDREN_SCROLLBAR 5 +typedef struct tagSCROLLBARINFO { + DWORD cbSize; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD rgstate[CCHILDREN_SCROLLBAR+1]; +} SCROLLBARINFO,*PSCROLLBARINFO,*LPSCROLLBARINFO; +#define CCHILDREN_TITLEBAR 5 +typedef struct tagTITLEBARINFO { + DWORD cbSize; + RECT rcTitleBar; + DWORD rgstate[CCHILDREN_TITLEBAR+1]; +} TITLEBARINFO,*PTITLEBARINFO,*LPTITLEBARINFO; +typedef struct tagWINDOWINFO { + DWORD cbSize; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; +} WINDOWINFO,*PWINDOWINFO,*LPWINDOWINFO; +typedef struct tagLASTINPUTINFO { + UINT cbSize; + DWORD dwTime; +} LASTINPUTINFO,*PLASTINPUTINFO; +typedef struct tagMONITORINFO { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; +} MONITORINFO,*LPMONITORINFO; +#define CCHDEVICENAME 32 +typedef struct tagMONITORINFOEXA { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + CHAR szDevice[CCHDEVICENAME]; +} MONITORINFOEXA,*LPMONITORINFOEXA; +typedef struct tagMONITORINFOEXW { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + WCHAR szDevice[CCHDEVICENAME]; +} MONITORINFOEXW,*LPMONITORINFOEXW; +typedef struct tagKBDLLHOOKSTRUCT { + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + DWORD dwExtraInfo; +} KBDLLHOOKSTRUCT,*LPKBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT; +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +typedef struct { + UINT cbSize; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; +} FLASHWINFO,*PFLASHWINFO; +#endif /* (WINVER >= 0x0500 || _WIN32_WINDOWS >= 0x0410) */ +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490) +typedef struct tagMOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; +} MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT; +#endif +#if (_WIN32_WINNT >= 0x0403) +typedef struct tagMOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} MOUSEINPUT,*PMOUSEINPUT; +typedef struct tagKEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} KEYBDINPUT,*PKEYBDINPUT; +typedef struct tagHARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; +} HARDWAREINPUT,*PHARDWAREINPUT; +typedef struct tagINPUT { + DWORD type; + _ANONYMOUS_UNION union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; + } DUMMYUNIONNAME; +} INPUT,*PINPUT,*LPINPUT; +#endif /* (_WIN32_WINNT >= 0x0403) */ +#if (WINVER >= 0x0500) +typedef struct tagGUITHREADINFO { + DWORD cbSize; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; +} GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO; +typedef VOID (*WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,DWORD,DWORD); +#endif /* (WINVER >= 0x0500) */ +#if (_WIN32_WINNT >= 0x0501) +typedef struct { + UINT cbSize; + HDESK hdesk; + HWND hwnd; + LUID luid; +} BSMINFO,*PBSMINFO; +DECLARE_HANDLE(HRAWINPUT); +typedef struct tagRAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; +} RAWINPUTHEADER,*PRAWINPUTHEADER; +typedef struct tagRAWMOUSE { + USHORT usFlags; + _ANONYMOUS_UNION union { + ULONG ulButtons; + _ANONYMOUS_STRUCT struct { + USHORT usButtonFlags; + USHORT usButtonData; + }; + }; + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; +} RAWMOUSE,*PRAWMOUSE,*LPRAWMOUSE; +typedef struct tagRAWKEYBOARD { + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; +} RAWKEYBOARD,*PRAWKEYBOARD,*LPRAWKEYBOARD; +typedef struct tagRAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData; +} RAWHID,*PRAWHID,*LPRAWHID; +typedef struct tagRAWINPUT { + RAWINPUTHEADER header; + union { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; + } data; +} RAWINPUT,*PRAWINPUT,*LPRAWINPUT; +typedef struct tagRAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; +} RAWINPUTDEVICE,*PRAWINPUTDEVICE,*LPRAWINPUTDEVICE; +typedef const RAWINPUTDEVICE *PCRAWINPUTDEVICE; +typedef struct tagRAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; +} RAWINPUTDEVICELIST,*PRAWINPUTDEVICELIST; +#endif /* (_WIN32_WINNT >= 0x0501) */ + +#define AnsiToOem CharToOemA +#define OemToAnsi OemToCharA +#define AnsiToOemBuff CharToOemBuffA +#define OemToAnsiBuff OemToCharBuffA +#define AnsiUpper CharUpperA +#define AnsiUpperBuff CharUpperBuffA +#define AnsiLower CharLowerA +#define AnsiLowerBuff CharLowerBuffA +#define AnsiNext CharNextA +#define AnsiPrev CharPrevA +#define MAKELPARAM(l,h) ((LPARAM)MAKELONG(l,h)) +#define MAKEWPARAM(l,h) ((WPARAM)MAKELONG(l,h)) +#define MAKELRESULT(l,h) ((LRESULT)MAKELONG(l,h)) +#define POINTSTOPOINT(p,ps) { \ + (p).x=LOWORD(*(DWORD *)&ps); \ + (p).y=HIWORD(*(DWORD *)&ps); \ +} +#define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x,(p).y)) + +HKL WINAPI ActivateKeyboardLayout(HKL,UINT); +BOOL WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL); +BOOL WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI AnimateWindow(HWND,DWORD,DWORD); +#endif /* (_WIN32_WINNT >= 0x0500) */ +BOOL WINAPI AnyPopup(void); +BOOL WINAPI AppendMenuA(HMENU,UINT,UINT_PTR,LPCSTR); +BOOL WINAPI AppendMenuW(HMENU,UINT,UINT_PTR,LPCWSTR); +UINT WINAPI ArrangeIconicWindows(HWND); +BOOL WINAPI AttachThreadInput(DWORD,DWORD,BOOL); +HDWP WINAPI BeginDeferWindowPos(int); +HDC WINAPI BeginPaint(HWND,LPPAINTSTRUCT); +BOOL WINAPI BringWindowToTop(HWND); +long WINAPI BroadcastSystemMessage(DWORD,LPDWORD,UINT,WPARAM,LPARAM); +#if (_WIN32_WINNT >= 0x0400) +long WINAPI BroadcastSystemMessageA(DWORD,LPDWORD,UINT,WPARAM,LPARAM); +long WINAPI BroadcastSystemMessageW(DWORD,LPDWORD,UINT,WPARAM,LPARAM); +#endif /* (_WIN32_WINNT >= 0x0400) */ +#if (_WIN32_WINNT >= 0x0501) +long WINAPI BroadcastSystemMessageExA(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO); +long WINAPI BroadcastSystemMessageExW(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO); +#endif /* (_WIN32_WINNT >= 0x0501) */ +BOOL WINAPI CallMsgFilter(PMSG,int); +LRESULT WINAPI CallNextHookEx(HHOOK,int,WPARAM,LPARAM); +LRESULT WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM); +LRESULT WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM); +WORD WINAPI CascadeWindows(HWND,UINT,LPCRECT,UINT,const HWND*); +BOOL WINAPI ChangeClipboardChain(HWND,HWND); +#ifndef NOGDI +LONG WINAPI ChangeDisplaySettingsA(PDEVMODEA,DWORD); +LONG WINAPI ChangeDisplaySettingsW(PDEVMODEW,DWORD); +LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID); +LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPVOID); +#endif +BOOL WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT); +BOOL WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT); +LPSTR WINAPI CharLowerA(LPSTR); +LPWSTR WINAPI CharLowerW(LPWSTR); +DWORD WINAPI CharLowerBuffA(LPSTR,DWORD); +DWORD WINAPI CharLowerBuffW(LPWSTR,DWORD); +LPSTR WINAPI CharNextA(LPCSTR); +LPWSTR WINAPI CharNextW(LPCWSTR); +LPSTR WINAPI CharNextExA(WORD,LPCSTR,DWORD); +LPWSTR WINAPI CharNextExW(WORD,LPCWSTR,DWORD); +LPSTR WINAPI CharPrevA(LPCSTR,LPCSTR); +LPWSTR WINAPI CharPrevW(LPCWSTR,LPCWSTR); +LPSTR WINAPI CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD); +LPWSTR WINAPI CharPrevExW(WORD,LPCWSTR,LPCWSTR,DWORD); +BOOL WINAPI CharToOemA(LPCSTR,LPSTR); +BOOL WINAPI CharToOemW(LPCWSTR,LPSTR); +BOOL WINAPI CharToOemBuffA(LPCSTR,LPSTR,DWORD); +BOOL WINAPI CharToOemBuffW(LPCWSTR,LPSTR,DWORD); +LPSTR WINAPI CharUpperA(LPSTR); +LPWSTR WINAPI CharUpperW(LPWSTR); +DWORD WINAPI CharUpperBuffA(LPSTR,DWORD); +DWORD WINAPI CharUpperBuffW(LPWSTR,DWORD); +BOOL WINAPI CheckDlgButton(HWND,int,UINT); +DWORD WINAPI CheckMenuItem(HMENU,UINT,UINT); +BOOL WINAPI CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT); +BOOL WINAPI CheckRadioButton(HWND,int,int,int); +HWND WINAPI ChildWindowFromPoint(HWND,POINT); +HWND WINAPI ChildWindowFromPointEx(HWND,POINT,UINT); +BOOL WINAPI ClientToScreen(HWND,LPPOINT); +BOOL WINAPI ClipCursor(LPCRECT); +BOOL WINAPI CloseClipboard(void); +BOOL WINAPI CloseDesktop(HDESK); +BOOL WINAPI CloseWindow(HWND); +BOOL WINAPI CloseWindowStation(HWINSTA); +int WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,int); +int WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,int); +#define CopyCursor(c) ((HCURSOR)CopyIcon((HICON)(c))) +HICON WINAPI CopyIcon(HICON); +HANDLE WINAPI CopyImage(HANDLE,UINT,int,int,UINT); +BOOL WINAPI CopyRect(LPRECT,LPCRECT); +int WINAPI CountClipboardFormats(void); +HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,int); +HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,int); +BOOL WINAPI CreateCaret(HWND,HBITMAP,int,int); +HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID); +#ifndef NOGDI +HDESK WINAPI CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES); +HDESK WINAPI CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES); +#endif +#define CreateDialogA(h,n,w,f) CreateDialogParamA(h,n,w,f,0) +#define CreateDialogW(h,n,w,f) CreateDialogParamW(h,n,w,f,0) +#define CreateDialogIndirectA(h,t,w,f) CreateDialogIndirectParamA(h,t,w,f,0) +#define CreateDialogIndirectW(h,t,w,f) CreateDialogIndirectParamW(h,t,w,f,0) +HWND WINAPI CreateDialogIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM); +HWND WINAPI CreateDialogIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM); +HWND WINAPI CreateDialogParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM); +HWND WINAPI CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM); +HICON WINAPI CreateIcon(HINSTANCE,int,int,BYTE,BYTE,const BYTE*,const BYTE*); +HICON WINAPI CreateIconFromResource(PBYTE,DWORD,BOOL,DWORD); +HICON WINAPI CreateIconFromResourceEx(PBYTE,DWORD,BOOL,DWORD,int,int,UINT); +HICON WINAPI CreateIconIndirect(PICONINFO); +HWND WINAPI CreateMDIWindowA(LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM); +HWND WINAPI CreateMDIWindowW(LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM); +HMENU WINAPI CreateMenu(void); +HMENU WINAPI CreatePopupMenu(void); +#define CreateWindowA(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExA(0,a,b,c,d,e,f,g,h,i,j,k) +#define CreateWindowW(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExW(0,a,b,c,d,e,f,g,h,i,j,k) +HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID); +HWND WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID); +HWINSTA WINAPI CreateWindowStationA(LPSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES); +HWINSTA WINAPI CreateWindowStationW(LPWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES); +LRESULT WINAPI DefDlgProcA(HWND,UINT,WPARAM,LPARAM); +LRESULT WINAPI DefDlgProcW(HWND,UINT,WPARAM,LPARAM); +HDWP WINAPI DeferWindowPos(HDWP,HWND,HWND,int,int,int,int,UINT); +LRESULT WINAPI DefFrameProcA(HWND,HWND,UINT,WPARAM,LPARAM); +LRESULT WINAPI DefFrameProcW(HWND,HWND,UINT,WPARAM,LPARAM); +#define DefHookProc(c,p,lp,h) CallNextHookEx((HHOOK)*h,c,p,lp) +LRESULT WINAPI DefMDIChildProcA(HWND,UINT,WPARAM,LPARAM); +LRESULT WINAPI DefMDIChildProcW(HWND,UINT,WPARAM,LPARAM); +#if (_WIN32_WINNT >= 0x0501) +LRESULT WINAPI DefRawInputProc(PRAWINPUT*,INT,UINT); +#endif +LRESULT WINAPI DefWindowProcA(HWND,UINT,WPARAM,LPARAM); +LRESULT WINAPI DefWindowProcW(HWND,UINT,WPARAM,LPARAM); +BOOL WINAPI DeleteMenu(HMENU,UINT,UINT); +BOOL WINAPI DeregisterShellHookWindow(HWND); +BOOL WINAPI DestroyAcceleratorTable(HACCEL); +BOOL WINAPI DestroyCaret(void); +BOOL WINAPI DestroyCursor(HCURSOR); +BOOL WINAPI DestroyIcon(HICON); +BOOL WINAPI DestroyMenu(HMENU); +BOOL WINAPI DestroyWindow(HWND); +#define DialogBoxA(i,t,p,f) DialogBoxParamA(i,t,p,f,0) +#define DialogBoxW(i,t,p,f) DialogBoxParamW(i,t,p,f,0) +#define DialogBoxIndirectA(i,t,p,f) DialogBoxIndirectParamA(i,t,p,f,0) +#define DialogBoxIndirectW(i,t,p,f) DialogBoxIndirectParamW(i,t,p,f,0) +int WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM); +int WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM); +int WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM); +int WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM); +LONG WINAPI DispatchMessageA(const MSG*); +LONG WINAPI DispatchMessageW(const MSG*); +int WINAPI DlgDirListA(HWND,LPSTR,int,int,UINT); +int WINAPI DlgDirListW(HWND,LPWSTR,int,int,UINT); +int WINAPI DlgDirListComboBoxA(HWND,LPSTR,int,int,UINT); +int WINAPI DlgDirListComboBoxW(HWND,LPWSTR,int,int,UINT); +BOOL WINAPI DlgDirSelectComboBoxExA(HWND,LPSTR,int,int); +BOOL WINAPI DlgDirSelectComboBoxExW(HWND,LPWSTR,int,int); +BOOL WINAPI DlgDirSelectExA(HWND,LPSTR,int,int); +BOOL WINAPI DlgDirSelectExW(HWND,LPWSTR,int,int); +BOOL WINAPI DragDetect(HWND,POINT); +DWORD WINAPI DragObject(HWND,HWND,UINT,DWORD,HCURSOR); +BOOL WINAPI DrawAnimatedRects(HWND,int,LPCRECT,LPCRECT); +BOOL WINAPI DrawCaption(HWND,HDC,LPCRECT,UINT); +BOOL WINAPI DrawEdge(HDC,LPRECT,UINT,UINT); +BOOL WINAPI DrawFocusRect(HDC,LPCRECT); +BOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT); +BOOL WINAPI DrawIcon(HDC,int,int,HICON); +BOOL WINAPI DrawIconEx(HDC,int,int,HICON,int,int,UINT,HBRUSH,UINT); +BOOL WINAPI DrawMenuBar(HWND); +BOOL WINAPI DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT); +BOOL WINAPI DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT); +int WINAPI DrawTextA(HDC,LPCSTR,int,LPRECT,UINT); +int WINAPI DrawTextW(HDC,LPCWSTR,int,LPRECT,UINT); +int WINAPI DrawTextExA(HDC,LPSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS); +int WINAPI DrawTextExW(HDC,LPWSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS); +BOOL WINAPI EmptyClipboard(void); +BOOL WINAPI EnableMenuItem(HMENU,UINT,UINT); +BOOL WINAPI EnableScrollBar(HWND,UINT,UINT); +BOOL WINAPI EnableWindow(HWND,BOOL); +BOOL WINAPI EndDeferWindowPos(HDWP); +BOOL WINAPI EndDialog(HWND,int); +BOOL WINAPI EndMenu(void); +BOOL WINAPI EndPaint(HWND,const PAINTSTRUCT*); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI EndTask(HWND,BOOL,BOOL); +#endif +BOOL WINAPI EnumChildWindows(HWND,ENUMWINDOWSPROC,LPARAM); +UINT WINAPI EnumClipboardFormats(UINT); +BOOL WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM); +BOOL WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM); +BOOL WINAPI EnumDesktopWindows(HDESK,ENUMWINDOWSPROC,LPARAM); +BOOL WINAPI EnumDisplayMonitors(HDC,LPCRECT,MONITORENUMPROC,LPARAM); +#ifndef NOGDI +BOOL WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,PDEVMODEA); +BOOL WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,PDEVMODEW); +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +BOOL WINAPI EnumDisplaySettingsExA(LPCSTR,DWORD,LPDEVMODEA,DWORD); +BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR,DWORD,LPDEVMODEW,DWORD); +#endif +BOOL WINAPI EnumDisplayDevicesA(LPCSTR,DWORD,PDISPLAY_DEVICEA,DWORD); +BOOL WINAPI EnumDisplayDevicesW(LPCWSTR,DWORD,PDISPLAY_DEVICEW,DWORD); +#endif +int WINAPI EnumPropsA(HWND,PROPENUMPROCA); +int WINAPI EnumPropsW(HWND,PROPENUMPROCW); +int WINAPI EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM); +int WINAPI EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM); +#define EnumTaskWindows(h,f,p) EnumThreadWindows((DWORD)h,f,p) +BOOL WINAPI EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM); +BOOL WINAPI EnumWindows(WNDENUMPROC,LPARAM); +BOOL WINAPI EnumWindowStationsA(WINSTAENUMPROCA,LPARAM); +BOOL WINAPI EnumWindowStationsW(WINSTAENUMPROCW,LPARAM); +BOOL WINAPI EqualRect(LPCRECT,LPCRECT); +#define ExitWindows(r,c) ExitWindowsEx(EWX_LOGOFF,0) +BOOL WINAPI ExitWindowsEx(UINT,DWORD); +HWND WINAPI FindWindowA(LPCSTR,LPCSTR); +HWND WINAPI FindWindowExA(HWND,HWND,LPCSTR,LPCSTR); +HWND WINAPI FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR); +HWND WINAPI FindWindowW(LPCWSTR,LPCWSTR); +BOOL WINAPI FlashWindow(HWND,BOOL); +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +BOOL WINAPI FlashWindowEx(PFLASHWINFO); +#endif +int WINAPI FrameRect(HDC,LPCRECT,HBRUSH); +BOOL WINAPI FrameRgn(HDC,HRGN,HBRUSH,int,int); +HWND WINAPI GetActiveWindow(void); +HWND WINAPI GetAncestor(HWND,UINT); +SHORT WINAPI GetAsyncKeyState(int); +HWND WINAPI GetCapture(void); +UINT WINAPI GetCaretBlinkTime(void); +BOOL WINAPI GetCaretPos(LPPOINT); +BOOL WINAPI GetClassInfoA(HINSTANCE,LPCSTR,LPWNDCLASSA); +BOOL WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,LPWNDCLASSEXA); +BOOL WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,LPWNDCLASSW); +BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,LPWNDCLASSEXW); +DWORD WINAPI GetClassLongA(HWND,int); +DWORD WINAPI GetClassLongW(HWND,int); +int WINAPI GetClassNameA(HWND,LPSTR,int); +int WINAPI GetClassNameW(HWND,LPWSTR,int); +WORD WINAPI GetClassWord(HWND,int); +BOOL WINAPI GetClientRect(HWND,LPRECT); +HANDLE WINAPI GetClipboardData(UINT); +int WINAPI GetClipboardFormatNameA(UINT,LPSTR,int); +int WINAPI GetClipboardFormatNameW(UINT,LPWSTR,int); +HWND WINAPI GetClipboardOwner(void); +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +DWORD WINAPI GetClipboardSequenceNumber(void); +#endif +HWND WINAPI GetClipboardViewer(void); +BOOL WINAPI GetClipCursor(LPRECT); +BOOL WINAPI GetCursorPos(LPPOINT); +HDC WINAPI GetDC(HWND); +HDC WINAPI GetDCEx(HWND,HRGN,DWORD); +HWND WINAPI GetDesktopWindow(void); +long WINAPI GetDialogBaseUnits(void); +int WINAPI GetDlgCtrlID(HWND); +HWND WINAPI GetDlgItem(HWND,int); +UINT WINAPI GetDlgItemInt(HWND,int,PBOOL,BOOL); +UINT WINAPI GetDlgItemTextA(HWND,int,LPSTR,int); +UINT WINAPI GetDlgItemTextW(HWND,int,LPWSTR,int); +UINT WINAPI GetDoubleClickTime(void); +HWND WINAPI GetFocus(void); +HWND WINAPI GetForegroundWindow(void); +#if (_WIN32_WINNT >= 0x0500) +DWORD WINAPI GetGuiResources(HANDLE,DWORD); +#endif +BOOL WINAPI GetIconInfo(HICON,PICONINFO); +BOOL WINAPI GetInputState(void); +UINT WINAPI GetKBCodePage(void); +HKL WINAPI GetKeyboardLayout(DWORD); +UINT WINAPI GetKeyboardLayoutList(int,HKL*); +BOOL WINAPI GetKeyboardLayoutNameA(LPSTR); +BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR); +BOOL WINAPI GetKeyboardState(PBYTE); +int WINAPI GetKeyboardType(int); +int WINAPI GetKeyNameTextA(LONG,LPSTR,int); +int WINAPI GetKeyNameTextW(LONG,LPWSTR,int); +SHORT WINAPI GetKeyState(int); +HWND WINAPI GetLastActivePopup(HWND); +DWORD WINAPI GetLastError(void); +HMENU WINAPI GetMenu(HWND); +LONG WINAPI GetMenuCheckMarkDimensions(void); +DWORD WINAPI GetMenuContextHelpId(HMENU); +UINT WINAPI GetMenuDefaultItem(HMENU,UINT,UINT); +int WINAPI GetMenuItemCount(HMENU); +UINT WINAPI GetMenuItemID(HMENU,int); +BOOL WINAPI GetMenuItemInfoA(HMENU,UINT,BOOL,LPMENUITEMINFOA); +BOOL WINAPI GetMenuItemInfoW(HMENU,UINT,BOOL,LPMENUITEMINFOW); +BOOL WINAPI GetMenuItemRect(HWND,HMENU,UINT,LPRECT); +UINT WINAPI GetMenuState(HMENU,UINT,UINT); +int WINAPI GetMenuStringA(HMENU,UINT,LPSTR,int,UINT); +int WINAPI GetMenuStringW(HMENU,UINT,LPWSTR,int,UINT); +BOOL WINAPI GetMessageA(LPMSG,HWND,UINT,UINT); +BOOL WINAPI GetMessageW(LPMSG,HWND,UINT,UINT); +LONG WINAPI GetMessageExtraInfo(void); +DWORD WINAPI GetMessagePos(void); +LONG WINAPI GetMessageTime(void); +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490) +int WINAPI GetMouseMovePointsEx(UINT,LPMOUSEMOVEPOINT,LPMOUSEMOVEPOINT,int,DWORD); +#endif +HWND WINAPI GetNextDlgGroupItem(HWND,HWND,BOOL); +HWND WINAPI GetNextDlgTabItem(HWND,HWND,BOOL); +#define GetNextWindow(h,c) GetWindow(h,c) +HWND WINAPI GetOpenClipboardWindow(void); +HWND WINAPI GetParent(HWND); +int WINAPI GetPriorityClipboardFormat(UINT*,int); +HANDLE WINAPI GetPropA(HWND,LPCSTR); +HANDLE WINAPI GetPropW(HWND,LPCWSTR); +#if (_WIN32_WINNT >= 0x0501) +UINT WINAPI GetRawInputBuffer(PRAWINPUT,PUINT,UINT); +UINT WINAPI GetRawInputData(HRAWINPUT,UINT,LPVOID,PUINT,UINT); +UINT WINAPI GetRawInputDeviceInfoA(HANDLE,UINT,LPVOID,PUINT); +UINT WINAPI GetRawInputDeviceInfoW(HANDLE,UINT,LPVOID,PUINT); +UINT WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST,PUINT,UINT); +UINT WINAPI GetRegisteredRawInputDevices(PRAWINPUTDEVICE,PUINT,UINT); +#endif +DWORD WINAPI GetQueueStatus(UINT); +BOOL WINAPI GetScrollInfo(HWND,int,LPSCROLLINFO); +int WINAPI GetScrollPos(HWND,int); +BOOL WINAPI GetScrollRange(HWND,int,LPINT,LPINT); +#if (_WIN32_WINNT >= 0x0500) +HWND WINAPI GetShellWindow(void); +#endif +HMENU WINAPI GetSubMenu(HMENU,int); +DWORD WINAPI GetSysColor(int); +HBRUSH WINAPI GetSysColorBrush(int); +#define GetSysModalWindow() (NULL) +HMENU WINAPI GetSystemMenu(HWND,BOOL); +int WINAPI GetSystemMetrics(int); +DWORD WINAPI GetTabbedTextExtentA(HDC,LPCSTR,int,int,LPINT); +DWORD WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,int,int,LPINT); +LONG WINAPI GetWindowLongA(HWND,int); +LONG WINAPI GetWindowLongW(HWND,int); +#ifdef _WIN64 +LONG_PTR WINAPI GetWindowLongPtrA(HWND,int); +LONG_PTR WINAPI GetWindowLongPtrW(HWND,int); +#else +#define GetWindowLongPtrA GetWindowLongA +#define GetWindowLongPtrW GetWindowLongW +#endif +HDESK WINAPI GetThreadDesktop(DWORD); +HWND WINAPI GetTopWindow(HWND); +BOOL WINAPI GetUpdateRect(HWND,LPRECT,BOOL); +int WINAPI GetUpdateRgn(HWND,HRGN,BOOL); +BOOL WINAPI GetUserObjectInformationA(HANDLE,int,PVOID,DWORD,PDWORD); +BOOL WINAPI GetUserObjectInformationW(HANDLE,int,PVOID,DWORD,PDWORD); +BOOL WINAPI GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD); +HWND WINAPI GetWindow(HWND,UINT); +DWORD WINAPI GetWindowContextHelpId(HWND); +HDC WINAPI GetWindowDC(HWND); +BOOL WINAPI GetWindowExtEx(HDC,LPSIZE); +BOOL WINAPI GetWindowPlacement(HWND,WINDOWPLACEMENT*); +BOOL WINAPI GetWindowRect(HWND,LPRECT); +int WINAPI GetWindowRgn(HWND,HRGN); +#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL)) +int WINAPI GetWindowTextA(HWND,LPSTR,int); +int WINAPI GetWindowTextLengthA(HWND); +int WINAPI GetWindowTextLengthW(HWND); +int WINAPI GetWindowTextW(HWND,LPWSTR,int); +WORD WINAPI GetWindowWord(HWND,int); +BOOL WINAPI GetAltTabInfoA(HWND,int,PALTTABINFO,LPSTR,UINT); +BOOL WINAPI GetAltTabInfoW(HWND,int,PALTTABINFO,LPWSTR,UINT); +BOOL WINAPI GetComboBoxInfo(HWND,PCOMBOBOXINFO); +BOOL WINAPI GetCursorInfo(PCURSORINFO); +#if (WINVER >= 0x0500) +BOOL WINAPI GetGUIThreadInfo(DWORD,LPGUITHREADINFO); +#endif +BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO); +DWORD WINAPI GetListBoxInfo(HWND); +BOOL WINAPI GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO); +BOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI GetProcessDefaultLayout(DWORD*); +#endif +BOOL WINAPI GetScrollBarInfo(HWND,LONG,PSCROLLBARINFO); +BOOL WINAPI GetTitleBarInfo(HWND,PTITLEBARINFO); +BOOL WINAPI GetWindowInfo(HWND,PWINDOWINFO); +BOOL WINAPI GetMonitorInfoA(HMONITOR,LPMONITORINFO); +BOOL WINAPI GetMonitorInfoW(HMONITOR,LPMONITORINFO); +UINT WINAPI GetWindowModuleFileNameA(HWND,LPSTR,UINT); +UINT WINAPI GetWindowModuleFileNameW(HWND,LPWSTR,UINT); +BOOL WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int); +BOOL WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int); +BOOL WINAPI HideCaret(HWND); +BOOL WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT); +BOOL WINAPI InflateRect(LPRECT,int,int); +BOOL WINAPI InSendMessage(void); +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410) +DWORD WINAPI InSendMessageEx(LPVOID); +#endif +BOOL WINAPI InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR); +BOOL WINAPI InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR); +BOOL WINAPI InsertMenuItemA(HMENU,UINT,BOOL,LPCMENUITEMINFOA); +BOOL WINAPI InsertMenuItemW(HMENU,UINT,BOOL,LPCMENUITEMINFOW); +BOOL WINAPI IntersectRect(LPRECT,LPCRECT,LPCRECT); +BOOL WINAPI InvalidateRect(HWND,LPCRECT,BOOL); +BOOL WINAPI InvalidateRgn(HWND,HRGN,BOOL); +BOOL WINAPI InvertRect(HDC,LPCRECT); +BOOL WINAPI IsCharAlphaA(CHAR ch); +BOOL WINAPI IsCharAlphaNumericA(CHAR); +BOOL WINAPI IsCharAlphaNumericW(WCHAR); +BOOL WINAPI IsCharAlphaW(WCHAR); +BOOL WINAPI IsCharLowerA(CHAR); +BOOL WINAPI IsCharLowerW(WCHAR); +BOOL WINAPI IsCharUpperA(CHAR); +BOOL WINAPI IsCharUpperW(WCHAR); +BOOL WINAPI IsChild(HWND,HWND); +BOOL WINAPI IsClipboardFormatAvailable(UINT); +BOOL WINAPI IsDialogMessageA(HWND,LPMSG); +BOOL WINAPI IsDialogMessageW(HWND,LPMSG); +UINT WINAPI IsDlgButtonChecked(HWND,int); +#if(_WIN32_WINNT >= 0x0501) +BOOL WINAPI IsGUIThread(BOOL); +#endif +#if(_WIN32_WINNT >= 0x0500) +BOOL WINAPI IsHungAppWindow(HWND); +#endif +BOOL WINAPI IsIconic(HWND); +BOOL WINAPI IsMenu(HMENU); +BOOL WINAPI IsRectEmpty(LPCRECT); +BOOL WINAPI IsWindow(HWND); +BOOL WINAPI IsWindowEnabled(HWND); +BOOL WINAPI IsWindowUnicode(HWND); +BOOL WINAPI IsWindowVisible(HWND); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI IsWinEventHookInstalled(DWORD); +#endif +BOOL WINAPI IsZoomed(HWND); +VOID WINAPI keybd_event(BYTE,BYTE,DWORD,DWORD); +BOOL WINAPI KillTimer(HWND,UINT); +HACCEL WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR); +HACCEL WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR); +HBITMAP WINAPI LoadBitmapA(HINSTANCE,LPCSTR); +HBITMAP WINAPI LoadBitmapW(HINSTANCE,LPCWSTR); +HCURSOR WINAPI LoadCursorA(HINSTANCE,LPCSTR); +HCURSOR WINAPI LoadCursorFromFileA(LPCSTR); +HCURSOR WINAPI LoadCursorFromFileW(LPCWSTR); +HCURSOR WINAPI LoadCursorW(HINSTANCE,LPCWSTR); +HICON WINAPI LoadIconA(HINSTANCE,LPCSTR); +HICON WINAPI LoadIconW(HINSTANCE,LPCWSTR); +HANDLE WINAPI LoadImageA(HINSTANCE,LPCSTR,UINT,int,int,UINT); +HANDLE WINAPI LoadImageW(HINSTANCE,LPCWSTR,UINT,int,int,UINT); +HKL WINAPI LoadKeyboardLayoutA(LPCSTR,UINT); +HKL WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT); +HMENU WINAPI LoadMenuA(HINSTANCE,LPCSTR); +HMENU WINAPI LoadMenuIndirectA(const MENUTEMPLATE*); +HMENU WINAPI LoadMenuIndirectW(const MENUTEMPLATE*); +HMENU WINAPI LoadMenuW(HINSTANCE,LPCWSTR); +int WINAPI LoadStringA(HINSTANCE,UINT,LPSTR,int); +int WINAPI LoadStringW(HINSTANCE,UINT,LPWSTR,int); +BOOL WINAPI LockWindowUpdate(HWND); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI LockWorkStation(void); +#endif +int WINAPI LookupIconIdFromDirectory(PBYTE,BOOL); +int WINAPI LookupIconIdFromDirectoryEx(PBYTE,BOOL,int,int,UINT); +BOOL WINAPI MapDialogRect(HWND,LPRECT); +UINT WINAPI MapVirtualKeyA(UINT,UINT); +UINT WINAPI MapVirtualKeyExA(UINT,UINT,HKL); +UINT WINAPI MapVirtualKeyExW(UINT,UINT,HKL); +UINT WINAPI MapVirtualKeyW(UINT,UINT); +int WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT); +int WINAPI MenuItemFromPoint(HWND,HMENU,POINT); +BOOL WINAPI MessageBeep(UINT); +int WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT); +int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT); +int WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD); +int WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD); +int WINAPI MessageBoxIndirectA(CONST MSGBOXPARAMSA*); +int WINAPI MessageBoxIndirectW(CONST MSGBOXPARAMSW*); +BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT,LPCSTR); +BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT,LPCWSTR); +void WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,ULONG_PTR); +BOOL WINAPI MoveWindow(HWND,int,int,int,int,BOOL); +DWORD WINAPI MsgWaitForMultipleObjects(DWORD,CONST HANDLE*,BOOL,DWORD,DWORD); +DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD,CONST HANDLE*,DWORD,DWORD,DWORD); +#if (WINVER >= 0x0500) +void WINAPI NotifyWinEvent(DWORD,HWND,LONG,LONG); +#endif +DWORD WINAPI OemKeyScan(WORD); +BOOL WINAPI OemToCharA(LPCSTR,LPSTR); +BOOL WINAPI OemToCharBuffA(LPCSTR,LPSTR,DWORD); +BOOL WINAPI OemToCharBuffW(LPCSTR,LPWSTR,DWORD); +BOOL WINAPI OemToCharW(LPCSTR,LPWSTR); +BOOL WINAPI OffsetRect(LPRECT,int,int); +BOOL WINAPI OpenClipboard(HWND); +HDESK WINAPI OpenDesktopA(LPSTR,DWORD,BOOL,DWORD); +HDESK WINAPI OpenDesktopW(LPWSTR,DWORD,BOOL,DWORD); +BOOL WINAPI OpenIcon(HWND); +HDESK WINAPI OpenInputDesktop(DWORD,BOOL,DWORD); +HWINSTA WINAPI OpenWindowStationA(LPSTR,BOOL,DWORD); +HWINSTA WINAPI OpenWindowStationW(LPWSTR,BOOL,DWORD); +BOOL WINAPI PaintDesktop(HDC); +BOOL WINAPI PeekMessageA(LPMSG,HWND,UINT,UINT,UINT); +BOOL WINAPI PeekMessageW(LPMSG,HWND,UINT,UINT,UINT); +#define PostAppMessageA(t,m,w,l) PostThreadMessageA((DWORD)t,m,w,l) +#define PostAppMessageW(t,m,w,l) PostThreadMessageW((DWORD)t,m,w,l) +BOOL WINAPI PostMessageA(HWND,UINT,WPARAM,LPARAM); +BOOL WINAPI PostMessageW(HWND,UINT,WPARAM,LPARAM); +void WINAPI PostQuitMessage(int); +BOOL WINAPI PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM); +BOOL WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI PrintWindow(HWND,HDC,UINT); +#endif +BOOL WINAPI PtInRect(LPCRECT,POINT); +HWND WINAPI RealChildWindowFromPoint(HWND,POINT); +UINT WINAPI RealGetWindowClassA(HWND,LPSTR,UINT); +UINT WINAPI RealGetWindowClassW(HWND,LPWSTR,UINT); +BOOL WINAPI RedrawWindow(HWND,LPCRECT,HRGN,UINT); +ATOM WINAPI RegisterClassA(CONST WNDCLASSA*); +ATOM WINAPI RegisterClassW(CONST WNDCLASSW*); +ATOM WINAPI RegisterClassExA(CONST WNDCLASSEXA*); +ATOM WINAPI RegisterClassExW(CONST WNDCLASSEXW*); +UINT WINAPI RegisterClipboardFormatA(LPCSTR); +UINT WINAPI RegisterClipboardFormatW(LPCWSTR); +#if (WINVER >= 0x0500) +HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE,LPVOID,DWORD); +HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE,LPVOID,DWORD); +#endif +BOOL WINAPI RegisterHotKey(HWND,int,UINT,UINT); +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI RegisterRawInputDevices(PCRAWINPUTDEVICE,UINT,UINT); +#endif +UINT WINAPI RegisterWindowMessageA(LPCSTR); +UINT WINAPI RegisterWindowMessageW(LPCWSTR); +BOOL WINAPI ReleaseCapture(void); +int WINAPI ReleaseDC(HWND,HDC); +BOOL WINAPI RemoveMenu(HMENU,UINT,UINT); +HANDLE WINAPI RemovePropA(HWND,LPCSTR); +HANDLE WINAPI RemovePropW(HWND,LPCWSTR); +BOOL WINAPI ReplyMessage(LRESULT); +BOOL WINAPI ScreenToClient(HWND,LPPOINT); +BOOL WINAPI ScrollDC(HDC,int,int,LPCRECT,LPCRECT,HRGN,LPRECT); +BOOL WINAPI ScrollWindow(HWND,int,int,LPCRECT,LPCRECT); +int WINAPI ScrollWindowEx(HWND,int,int,LPCRECT,LPCRECT,HRGN,LPRECT,UINT); +LONG WINAPI SendDlgItemMessageA(HWND,int,UINT,WPARAM,LPARAM); +LONG WINAPI SendDlgItemMessageW(HWND,int,UINT,WPARAM,LPARAM); +#if (_WIN32_WINNT >= 0x0403) +UINT WINAPI SendInput(UINT,LPINPUT,int); +#endif +LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM); +BOOL WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD); +BOOL WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD); +LRESULT WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD); +LRESULT WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD); +LRESULT WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM); +BOOL WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM); +BOOL WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM); +HWND WINAPI SetActiveWindow(HWND); +HWND WINAPI SetCapture(HWND hWnd); +BOOL WINAPI SetCaretBlinkTime(UINT); +BOOL WINAPI SetCaretPos(int,int); +DWORD WINAPI SetClassLongA(HWND,int,LONG); +DWORD WINAPI SetClassLongW(HWND,int,LONG); +WORD WINAPI SetClassWord(HWND,int,WORD); +HANDLE WINAPI SetClipboardData(UINT,HANDLE); +HWND WINAPI SetClipboardViewer(HWND); +HCURSOR WINAPI SetCursor(HCURSOR); +BOOL WINAPI SetCursorPos(int,int); +VOID WINAPI SetDebugErrorLevel(DWORD); +BOOL WINAPI SetDlgItemInt(HWND,int,UINT,BOOL); +BOOL WINAPI SetDlgItemTextA(HWND,int,LPCSTR); +BOOL WINAPI SetDlgItemTextW(HWND,int,LPCWSTR); +BOOL WINAPI SetDoubleClickTime(UINT); +HWND WINAPI SetFocus(HWND); +BOOL WINAPI SetForegroundWindow(HWND); +BOOL WINAPI SetKeyboardState(PBYTE); +BOOL WINAPI SetMenu(HWND,HMENU); +BOOL WINAPI SetMenuContextHelpId(HMENU,DWORD); +BOOL WINAPI SetMenuDefaultItem(HMENU,UINT,UINT); +BOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO); +BOOL WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP); +BOOL WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,LPCMENUITEMINFOA); +BOOL WINAPI SetMenuItemInfoW( HMENU,UINT,BOOL,LPCMENUITEMINFOW); +LPARAM WINAPI SetMessageExtraInfo(LPARAM); +BOOL WINAPI SetMessageQueue(int); +HWND WINAPI SetParent(HWND,HWND); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI SetProcessDefaultLayout(DWORD); +#endif /* (_WIN32_WINNT >= 0x0500) */ +BOOL WINAPI SetProcessWindowStation(HWINSTA); +BOOL WINAPI SetPropA(HWND,LPCSTR,HANDLE); +BOOL WINAPI SetPropW(HWND,LPCWSTR,HANDLE); +BOOL WINAPI SetRect(LPRECT,int,int,int,int); +BOOL WINAPI SetRectEmpty(LPRECT); +int WINAPI SetScrollInfo(HWND,int,LPCSCROLLINFO,BOOL); +int WINAPI SetScrollPos(HWND,int,int,BOOL); +BOOL WINAPI SetScrollRange(HWND,int,int,int,BOOL); +BOOL WINAPI SetSysColors(int,const INT *,const COLORREF *); +#define SetSysModalWindow(h) (NULL) +BOOL WINAPI SetSystemCursor(HCURSOR,DWORD); +BOOL WINAPI SetThreadDesktop(HDESK); +UINT WINAPI SetTimer(HWND,UINT,UINT,TIMERPROC); +BOOL WINAPI SetUserObjectInformationA(HANDLE,int,PVOID,DWORD); +BOOL WINAPI SetUserObjectInformationW(HANDLE,int,PVOID,DWORD); +BOOL WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +#if (WINVER >= 0x0500) +HWINEVENTHOOK WINAPI SetWinEventHook(UINT,UINT,HMODULE,WINEVENTPROC,DWORD,DWORD,UINT); +#endif +BOOL WINAPI SetWindowContextHelpId(HWND,DWORD); +LONG WINAPI SetWindowLongA(HWND,int,LONG); +LONG WINAPI SetWindowLongW(HWND,int,LONG); +#ifdef _WIN64 +LONG_PTR WINAPI SetWindowLongPtrA(HWND,int,LONG_PTR); +LONG_PTR WINAPI SetWindowLongPtrW(HWND,int,LONG_PTR); +#else +#define SetWindowLongPtrA SetWindowLongA +#define SetWindowLongPtrW SetWindowLongW +#endif +BOOL WINAPI SetWindowPlacement(HWND hWnd,const WINDOWPLACEMENT*); +BOOL WINAPI SetWindowPos(HWND,HWND,int,int,int,int,UINT); +int WINAPI SetWindowRgn(HWND,HRGN,BOOL); +HOOKPROC WINAPI SetWindowsHookA(int,HOOKPROC); +HHOOK WINAPI SetWindowsHookExA(int,HOOKPROC,HINSTANCE,DWORD); +HHOOK WINAPI SetWindowsHookExW(int,HOOKPROC,HINSTANCE,DWORD); +BOOL WINAPI SetWindowTextA(HWND,LPCSTR); +BOOL WINAPI SetWindowTextW(HWND,LPCWSTR); +WORD WINAPI SetWindowWord(HWND,int,WORD); +BOOL WINAPI ShowCaret(HWND); +int WINAPI ShowCursor(BOOL); +BOOL WINAPI ShowOwnedPopups(HWND,BOOL); +BOOL WINAPI ShowScrollBar(HWND,int,BOOL); +BOOL WINAPI ShowWindow(HWND,int); +BOOL WINAPI ShowWindowAsync(HWND,int); +BOOL WINAPI SubtractRect(LPRECT,LPCRECT,LPCRECT); +BOOL WINAPI SwapMouseButton(BOOL); +BOOL WINAPI SwitchDesktop(HDESK); +#if(_WIN32_WINNT >= 0x0500) +VOID WINAPI SwitchToThisWindow(HWND,BOOL); +#endif /* (_WIN32_WINNT >= 0x0500) */ +BOOL WINAPI SystemParametersInfoA(UINT,UINT,PVOID,UINT); +BOOL WINAPI SystemParametersInfoW(UINT,UINT,PVOID,UINT); +LONG WINAPI TabbedTextOutA(HDC,int,int,LPCSTR,int,int,LPINT,int); +LONG WINAPI TabbedTextOutW(HDC,int,int,LPCWSTR,int,int,LPINT,int); +WORD WINAPI TileWindows(HWND,UINT,LPCRECT,UINT,const HWND *); +int WINAPI ToAscii(UINT,UINT,PBYTE,LPWORD,UINT); +int WINAPI ToAsciiEx(UINT,UINT,PBYTE,LPWORD,UINT,HKL); +int WINAPI ToUnicode(UINT,UINT,PBYTE,LPWSTR,int,UINT); +int WINAPI ToUnicodeEx(UINT,UINT,PBYTE,LPWSTR,int,UINT,HKL); +BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT); +BOOL WINAPI TrackPopupMenu(HMENU,UINT,int,int,int,HWND,LPCRECT); +BOOL WINAPI TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS); +int WINAPI TranslateAcceleratorA(HWND,HACCEL,LPMSG); +int WINAPI TranslateAcceleratorW(HWND,HACCEL,LPMSG); +BOOL WINAPI TranslateMDISysAccel(HWND,LPMSG); +BOOL WINAPI TranslateMessage(const MSG*); +BOOL WINAPI UnhookWindowsHook(int,HOOKPROC); +BOOL WINAPI UnhookWindowsHookEx(HHOOK); +#if (WINVER >= 0x0500) +BOOL WINAPI UnhookWinEvent(HWINEVENTHOOK); +#endif +BOOL WINAPI UnionRect(LPRECT,LPCRECT,LPCRECT); +BOOL WINAPI UnloadKeyboardLayout(HKL); +BOOL WINAPI UnregisterClassA(LPCSTR,HINSTANCE); +BOOL WINAPI UnregisterClassW(LPCWSTR,HINSTANCE); +BOOL WINAPI UnregisterHotKey(HWND,int); +BOOL WINAPI UpdateWindow(HWND); +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI UserHandleGrantAccess(HANDLE,HANDLE,BOOL); +#endif +BOOL WINAPI ValidateRect(HWND,LPCRECT); +BOOL WINAPI ValidateRgn(HWND,HRGN); +SHORT WINAPI VkKeyScanA(CHAR); +SHORT WINAPI VkKeyScanExA(CHAR,HKL); +SHORT WINAPI VkKeyScanExW(WCHAR,HKL); +SHORT WINAPI VkKeyScanW(WCHAR); +DWORD WINAPI WaitForInputIdle(HANDLE,DWORD); +BOOL WINAPI WaitMessage(void); +HWND WINAPI WindowFromDC(HDC hDC); +HWND WINAPI WindowFromPoint(POINT); +UINT WINAPI WinExec(LPCSTR,UINT); +BOOL WINAPI WinHelpA(HWND,LPCSTR,UINT,DWORD); +BOOL WINAPI WinHelpW(HWND,LPCWSTR,UINT,DWORD); +int WINAPIV wsprintfA(LPSTR,LPCSTR,...); +int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...); +int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist); +int WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list arglist); +#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490) +BOOL WINAPI AllowSetForegroundWindow(DWORD); +BOOL WINAPI LockSetForegroundWindow(UINT); +#endif +#if (_WIN32_WINNT >= 0x0500) +BOOL WINAPI SetLayeredWindowAttributes(HWND,COLORREF,BYTE,DWORD); +#ifndef NOGDI +BOOL WINAPI UpdateLayeredWindow(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD); +#endif +#endif +#if (_WIN32_WINNT >= 0x0501) +BOOL WINAPI GetLayeredWindowAttributes(HWND,COLORREF*,BYTE*,DWORD*); +#endif +#ifdef UNICODE +#define EDITWORDBREAKPROC EDITWORDBREAKPROCW +#define PROPENUMPROC PROPENUMPROCW +#define PROPENUMPROCEX PROPENUMPROCEXW +#define DEKSTOPENUMPROC DEKSTOPENUMPROCW +#define WINSTAENUMPROC WINSTAENUMPROCW +#define PROPENUMPROC PROPENUMPROCW +#define PROPENUMPROCEX PROPENUMPROCEXW +#define MAKEINTRESOURCE MAKEINTRESOURCEW +typedef WNDCLASSW WNDCLASS,*LPWNDCLASS,*PWNDCLASS; +typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX; +typedef MENUITEMINFOW MENUITEMINFO,*LPMENUITEMINFO; +typedef LPCMENUITEMINFOW LPCMENUITEMINFO; +typedef MSGBOXPARAMSW MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS; +typedef HIGHCONTRASTW HIGHCONTRAST,*LPHIGHCONTRAST; +typedef SERIALKEYSW SERIALKEYS,*LPSERIALKEYS; +typedef SOUNDSENTRYW SOUNDSENTRY,*LPSOUNDSENTRY; +typedef CREATESTRUCTW CREATESTRUCT, *LPCREATESTRUCT; +typedef CBT_CREATEWNDW CBT_CREATEWND, *LPCBT_CREATEWND; +typedef MDICREATESTRUCTW MDICREATESTRUCT,*LPMDICREATESTRUCT; +typedef MULTIKEYHELPW MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP; +typedef MONITORINFOEXW MONITORINFOEX, *LPMONITORINFOEX; +#define AppendMenu AppendMenuW +#define BroadcastSystemMessage BroadcastSystemMessageW +#define BroadcastSystemMessageEx BroadcastSystemMessageExW +#define CallWindowProc CallWindowProcW +#define ChangeMenu ChangeMenuW +#define CharLower CharLowerW +#define CharLowerBuff CharLowerBuffW +#define CharNext CharNextW +#define CharNextEx CharNextExW +#define CharPrev CharPrevW +#define CharPrevEx CharPrevExW +#define CharToOem CharToOemW +#define CharToOemBuff CharToOemBuffW +#define CharUpper CharUpperW +#define CharUpperBuff CharUpperBuffW +#define CopyAcceleratorTable CopyAcceleratorTableW +#define CreateAcceleratorTable CreateAcceleratorTableW +#define CreateDialog CreateDialogW +#define CreateDialogIndirect CreateDialogIndirectW +#define CreateDialogIndirectParam CreateDialogIndirectParamW +#define CreateDialogParam CreateDialogParamW +#define CreateMDIWindow CreateMDIWindowW +#define CreateWindow CreateWindowW +#define CreateWindowEx CreateWindowExW +#define CreateWindowStation CreateWindowStationW +#define DefDlgProc DefDlgProcW +#define DefFrameProc DefFrameProcW +#define DefMDIChildProc DefMDIChildProcW +#define DefWindowProc DefWindowProcW +#define DialogBox DialogBoxW +#define DialogBoxIndirect DialogBoxIndirectW +#define DialogBoxIndirectParam DialogBoxIndirectParamW +#define DialogBoxParam DialogBoxParamW +#define DispatchMessage DispatchMessageW +#define DlgDirList DlgDirListW +#define DlgDirListComboBox DlgDirListComboBoxW +#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW +#define DlgDirSelectEx DlgDirSelectExW +#define DrawState DrawStateW +#define DrawText DrawTextW +#define DrawTextEx DrawTextExW +#define EnumDesktops EnumDesktopsW +#define EnumProps EnumPropsW +#define EnumPropsEx EnumPropsExW +#define EnumWindowStations EnumWindowStationsW +#define FindWindow FindWindowW +#define FindWindowEx FindWindowExW +#define GetClassInfo GetClassInfoW +#define GetClassInfoEx GetClassInfoExW +#define GetClassLong GetClassLongW +#define GetClassName GetClassNameW +#define GetClipboardFormatName GetClipboardFormatNameW +#define GetDlgItemText GetDlgItemTextW +#define GetKeyboardLayoutName GetKeyboardLayoutNameW +#define GetKeyNameText GetKeyNameTextW +#define GetMenuItemInfo GetMenuItemInfoW +#define GetMenuString GetMenuStringW +#define GetMessage GetMessageW +#define GetMonitorInfo GetMonitorInfoW +#define GetProp GetPropW +#define GetRawInputDeviceInfo GetRawInputDeviceInfoW +#define GetTabbedTextExtent GetTabbedTextExtentW +#define GetUserObjectInformation GetUserObjectInformationW +#define GetWindowLong GetWindowLongW +#define GetWindowLongPtr GetWindowLongPtrW +#define GetWindowText GetWindowTextW +#define GetWindowTextLength GetWindowTextLengthW +#define GetAltTabInfo GetAltTabInfoW +#define GetWindowModuleFileName GetWindowModuleFileNameW +#define GrayString GrayStringW +#define InsertMenu InsertMenuW +#define InsertMenuItem InsertMenuItemW +#define IsCharAlpha IsCharAlphaW +#define IsCharAlphaNumeric IsCharAlphaNumericW +#define IsCharLower IsCharLowerW +#define IsCharUpper IsCharUpperW +#define IsDialogMessage IsDialogMessageW +#define LoadAccelerators LoadAcceleratorsW +#define LoadBitmap LoadBitmapW +#define LoadCursor LoadCursorW +#define LoadCursorFromFile LoadCursorFromFileW +#define LoadIcon LoadIconW +#define LoadImage LoadImageW +#define LoadKeyboardLayout LoadKeyboardLayoutW +#define LoadMenu LoadMenuW +#define LoadMenuIndirect LoadMenuIndirectW +#define LoadString LoadStringW +#define MapVirtualKey MapVirtualKeyW +#define MapVirtualKeyEx MapVirtualKeyExW +#define MessageBox MessageBoxW +#define MessageBoxEx MessageBoxExW +#define MessageBoxIndirect MessageBoxIndirectW +#define ModifyMenu ModifyMenuW +#define OemToChar OemToCharW +#define OemToCharBuff OemToCharBuffW +#define OpenDesktop OpenDesktopW +#define OpenWindowStation OpenWindowStationW +#define PeekMessage PeekMessageW +#define PostAppMessage PostAppMessageW +#define PostMessage PostMessageW +#define PostThreadMessage PostThreadMessageW +#define RealGetWindowClass RealGetWindowClassW +#define RegisterClass RegisterClassW +#define RegisterClassEx RegisterClassExW +#define RegisterClipboardFormat RegisterClipboardFormatW +#define RegisterDeviceNotification RegisterDeviceNotificationW +#define RegisterWindowMessage RegisterWindowMessageW +#define RemoveProp RemovePropW +#define SendDlgItemMessage SendDlgItemMessageW +#define SendMessage SendMessageW +#define SendMessageCallback SendMessageCallbackW +#define SendMessageTimeout SendMessageTimeoutW +#define SendNotifyMessage SendNotifyMessageW +#define SetClassLong SetClassLongW +#define SetDlgItemText SetDlgItemTextW +#define SetMenuItemInfo SetMenuItemInfoW +#define SetProp SetPropW +#define SetUserObjectInformation SetUserObjectInformationW +#define SetWindowLong SetWindowLongW +#define SetWindowLongPtr SetWindowLongPtrW +#define SetWindowsHook SetWindowsHookW +#define SetWindowsHookEx SetWindowsHookExW +#define SetWindowText SetWindowTextW +#define SystemParametersInfo SystemParametersInfoW +#define TabbedTextOut TabbedTextOutW +#define TranslateAccelerator TranslateAcceleratorW +#define UnregisterClass UnregisterClassW +#define VkKeyScan VkKeyScanW +#define VkKeyScanEx VkKeyScanExW +#define WinHelp WinHelpW +#define wsprintf wsprintfW +#define wvsprintf wvsprintfW +#ifndef NOGDI +typedef ICONMETRICSW ICONMETRICS,*LPICONMETRICS; +typedef NONCLIENTMETRICSW NONCLIENTMETRICS,*LPNONCLIENTMETRICS; +#define ChangeDisplaySettings ChangeDisplaySettingsW +#define ChangeDisplaySettingsEx ChangeDisplaySettingsExW +#define CreateDesktop CreateDesktopW +#define EnumDisplaySettings EnumDisplaySettingsW +#define EnumDisplaySettingsEx EnumDisplaySettingsExW +#define EnumDisplayDevices EnumDisplayDevicesW +#endif /* NOGDI */ +#else /* UNICODE */ +#define EDITWORDBREAKPROC EDITWORDBREAKPROCA +#define PROPENUMPROC PROPENUMPROCA +#define PROPENUMPROCEX PROPENUMPROCEXA +#define DEKSTOPENUMPROC DEKSTOPENUMPROCA +#define WINSTAENUMPROC WINSTAENUMPROCA +#define PROPENUMPROC PROPENUMPROCA +#define PROPENUMPROCEX PROPENUMPROCEXA +#define MAKEINTRESOURCE MAKEINTRESOURCEA +typedef WNDCLASSA WNDCLASS,*LPWNDCLASS,*PWNDCLASS; +typedef WNDCLASSEXA WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX; +typedef MENUITEMINFOA MENUITEMINFO,*LPMENUITEMINFO; +typedef LPCMENUITEMINFOA LPCMENUITEMINFO; +typedef MSGBOXPARAMSA MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS; +typedef HIGHCONTRASTA HIGHCONTRAST,*LPHIGHCONTRAST; +typedef SERIALKEYSA SERIALKEYS,*LPSERIALKEYS; +typedef SOUNDSENTRYA SOUNDSENTRY,*LPSOUNDSENTRY; +typedef CREATESTRUCTA CREATESTRUCT, *LPCREATESTRUCT; +typedef CBT_CREATEWNDA CBT_CREATEWND, *LPCBT_CREATEWND; +typedef MDICREATESTRUCTA MDICREATESTRUCT,*LPMDICREATESTRUCT; +typedef MULTIKEYHELPA MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP; +typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX; +#define AppendMenu AppendMenuA +#define BroadcastSystemMessage BroadcastSystemMessageA +#define BroadcastSystemMessageEx BroadcastSystemMessageExA +#define CallWindowProc CallWindowProcA +#define ChangeMenu ChangeMenuA +#define CharLower CharLowerA +#define CharLowerBuff CharLowerBuffA +#define CharNext CharNextA +#define CharNextEx CharNextExA +#define CharPrev CharPrevA +#define CharPrevEx CharPrevExA +#define CharToOem CharToOemA +#define CharToOemBuff CharToOemBuffA +#define CharUpper CharUpperA +#define CharUpperBuff CharUpperBuffA +#define CopyAcceleratorTable CopyAcceleratorTableA +#define CreateAcceleratorTable CreateAcceleratorTableA +#define CreateDialog CreateDialogA +#define CreateDialogIndirect CreateDialogIndirectA +#define CreateDialogIndirectParam CreateDialogIndirectParamA +#define CreateDialogParam CreateDialogParamA +#define CreateMDIWindow CreateMDIWindowA +#define CreateWindow CreateWindowA +#define CreateWindowEx CreateWindowExA +#define CreateWindowStation CreateWindowStationA +#define DefDlgProc DefDlgProcA +#define DefFrameProc DefFrameProcA +#define DefMDIChildProc DefMDIChildProcA +#define DefWindowProc DefWindowProcA +#define DialogBox DialogBoxA +#define DialogBoxIndirect DialogBoxIndirectA +#define DialogBoxIndirectParam DialogBoxIndirectParamA +#define DialogBoxParam DialogBoxParamA +#define DispatchMessage DispatchMessageA +#define DlgDirList DlgDirListA +#define DlgDirListComboBox DlgDirListComboBoxA +#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA +#define DlgDirSelectEx DlgDirSelectExA +#define DrawState DrawStateA +#define DrawText DrawTextA +#define DrawTextEx DrawTextExA +#define EnumDesktops EnumDesktopsA +#define EnumProps EnumPropsA +#define EnumPropsEx EnumPropsExA +#define EnumWindowStations EnumWindowStationsA +#define FindWindow FindWindowA +#define FindWindowEx FindWindowExA +#define GetClassInfo GetClassInfoA +#define GetClassInfoEx GetClassInfoExA +#define GetClassLong GetClassLongA +#define GetClassName GetClassNameA +#define GetClipboardFormatName GetClipboardFormatNameA +#define GetDlgItemText GetDlgItemTextA +#define GetKeyboardLayoutName GetKeyboardLayoutNameA +#define GetKeyNameText GetKeyNameTextA +#define GetMenuItemInfo GetMenuItemInfoA +#define GetMenuString GetMenuStringA +#define GetMessage GetMessageA +#define GetMonitorInfo GetMonitorInfoA +#define GetProp GetPropA +#define GetRawInputDeviceInfo GetRawInputDeviceInfoA +#define GetTabbedTextExtent GetTabbedTextExtentA +#define GetUserObjectInformation GetUserObjectInformationA +#define GetWindowLong GetWindowLongA +#define GetWindowLongPtr GetWindowLongPtrA +#define GetWindowText GetWindowTextA +#define GetWindowTextLength GetWindowTextLengthA +#define GetAltTabInfo GetAltTabInfoA +#define GetWindowModuleFileName GetWindowModuleFileNameA +#define GrayString GrayStringA +#define InsertMenu InsertMenuA +#define InsertMenuItem InsertMenuItemA +#define IsCharAlpha IsCharAlphaA +#define IsCharAlphaNumeric IsCharAlphaNumericA +#define IsCharLower IsCharLowerA +#define IsCharUpper IsCharUpperA +#define IsDialogMessage IsDialogMessageA +#define LoadAccelerators LoadAcceleratorsA +#define LoadBitmap LoadBitmapA +#define LoadCursor LoadCursorA +#define LoadIcon LoadIconA +#define LoadCursorFromFile LoadCursorFromFileA +#define LoadImage LoadImageA +#define LoadKeyboardLayout LoadKeyboardLayoutA +#define LoadMenu LoadMenuA +#define LoadMenuIndirect LoadMenuIndirectA +#define LoadString LoadStringA +#define MapVirtualKey MapVirtualKeyA +#define MapVirtualKeyEx MapVirtualKeyExA +#define MessageBox MessageBoxA +#define MessageBoxEx MessageBoxExA +#define MessageBoxIndirect MessageBoxIndirectA +#define ModifyMenu ModifyMenuA +#define OemToChar OemToCharA +#define OemToCharBuff OemToCharBuffA +#define OpenDesktop OpenDesktopA +#define OpenWindowStation OpenWindowStationA +#define PeekMessage PeekMessageA +#define PostAppMessage PostAppMessageA +#define PostMessage PostMessageA +#define PostThreadMessage PostThreadMessageA +#define RealGetWindowClass RealGetWindowClassA +#define RegisterClass RegisterClassA +#define RegisterClassEx RegisterClassExA +#define RegisterClipboardFormat RegisterClipboardFormatA +#define RegisterDeviceNotification RegisterDeviceNotificationA +#define RegisterWindowMessage RegisterWindowMessageA +#define RemoveProp RemovePropA +#define SendDlgItemMessage SendDlgItemMessageA +#define SendMessage SendMessageA +#define SendMessageCallback SendMessageCallbackA +#define SendMessageTimeout SendMessageTimeoutA +#define SendNotifyMessage SendNotifyMessageA +#define SetClassLong SetClassLongA +#define SetDlgItemText SetDlgItemTextA +#define SetMenuItemInfo SetMenuItemInfoA +#define SetProp SetPropA +#define SetUserObjectInformation SetUserObjectInformationA +#define SetWindowLong SetWindowLongA +#define SetWindowLongPtr SetWindowLongPtrA +#define SetWindowsHook SetWindowsHookA +#define SetWindowsHookEx SetWindowsHookExA +#define SetWindowText SetWindowTextA +#define SystemParametersInfo SystemParametersInfoA +#define TabbedTextOut TabbedTextOutA +#define TranslateAccelerator TranslateAcceleratorA +#define UnregisterClass UnregisterClassA +#define VkKeyScan VkKeyScanA +#define VkKeyScanEx VkKeyScanExA +#define WinHelp WinHelpA +#define wsprintf wsprintfA +#define wvsprintf wvsprintfA +#ifndef NOGDI +typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS; +typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS; +#define ChangeDisplaySettings ChangeDisplaySettingsA +#define ChangeDisplaySettingsEx ChangeDisplaySettingsExA +#define CreateDesktop CreateDesktopA +#define EnumDisplaySettings EnumDisplaySettingsA +#define EnumDisplaySettingsEx EnumDisplaySettingsExA +#define EnumDisplayDevices EnumDisplayDevicesA +#endif /* NOGDI */ +#endif /* UNICODE */ +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/winver.h b/reactos/w32api/include/winver.h new file mode 100644 index 00000000000..913a35561ae --- /dev/null +++ b/reactos/w32api/include/winver.h @@ -0,0 +1,133 @@ +#ifndef _WINVER_H +#define _WINVER_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif +#define VS_FILE_INFO RT_VERSION +#define VS_VERSION_INFO 1 +#define VS_USER_DEFINED 100 +#define VS_FFI_SIGNATURE 0xFEEF04BD +#define VS_FFI_STRUCVERSION 0x10000 +#define VS_FFI_FILEFLAGSMASK 0x3F +#define VS_FF_DEBUG 1 +#define VS_FF_PRERELEASE 2 +#define VS_FF_PATCHED 4 +#define VS_FF_PRIVATEBUILD 8 +#define VS_FF_INFOINFERRED 16 +#define VS_FF_SPECIALBUILD 32 +#define VOS_UNKNOWN 0 +#define VOS_DOS 0x10000 +#define VOS_OS216 0x20000 +#define VOS_OS232 0x30000 +#define VOS_NT 0x40000 +#define VOS__BASE 0 +#define VOS__WINDOWS16 1 +#define VOS__PM16 2 +#define VOS__PM32 3 +#define VOS__WINDOWS32 4 +#define VOS_DOS_WINDOWS16 0x10001 +#define VOS_DOS_WINDOWS32 0x10004 +#define VOS_OS216_PM16 0x20002 +#define VOS_OS232_PM32 0x30003 +#define VOS_NT_WINDOWS32 0x40004 +#define VFT_UNKNOWN 0 +#define VFT_APP 1 +#define VFT_DLL 2 +#define VFT_DRV 3 +#define VFT_FONT 4 +#define VFT_VXD 5 +#define VFT_STATIC_LIB 7 +#define VFT2_UNKNOWN 0 +#define VFT2_DRV_PRINTER 1 +#define VFT2_DRV_KEYBOARD 2 +#define VFT2_DRV_LANGUAGE 3 +#define VFT2_DRV_DISPLAY 4 +#define VFT2_DRV_MOUSE 5 +#define VFT2_DRV_NETWORK 6 +#define VFT2_DRV_SYSTEM 7 +#define VFT2_DRV_INSTALLABLE 8 +#define VFT2_DRV_SOUND 9 +#define VFT2_DRV_COMM 10 +#define VFT2_DRV_INPUTMETHOD 11 +#define VFT2_FONT_RASTER 1 +#define VFT2_FONT_VECTOR 2 +#define VFT2_FONT_TRUETYPE 3 +#define VFFF_ISSHAREDFILE 1 +#define VFF_CURNEDEST 1 +#define VFF_FILEINUSE 2 +#define VFF_BUFFTOOSMALL 4 +#define VIFF_FORCEINSTALL 1 +#define VIFF_DONTDELETEOLD 2 +#define VIF_TEMPFILE 1 +#define VIF_MISMATCH 2 +#define VIF_SRCOLD 4 +#define VIF_DIFFLANG 8 +#define VIF_DIFFCODEPG 16 +#define VIF_DIFFTYPE 32 +#define VIF_WRITEPROT 64 +#define VIF_FILEINUSE 128 +#define VIF_OUTOFSPACE 256 +#define VIF_ACCESSVIOLATION 512 +#define VIF_SHARINGVIOLATION 1024 +#define VIF_CANNOTCREATE 2048 +#define VIF_CANNOTDELETE 4096 +#define VIF_CANNOTRENAME 8192 +#define VIF_CANNOTDELETECUR 16384 +#define VIF_OUTOFMEMORY 32768 +#define VIF_CANNOTREADSRC 65536 +#define VIF_CANNOTREADDST 0x20000 +#define VIF_BUFFTOOSMALL 0x40000 +#ifndef RC_INVOKED +typedef struct tagVS_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; +} VS_FIXEDFILEINFO; +DWORD WINAPI VerFindFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,PUINT,LPSTR,PUINT); +DWORD WINAPI VerFindFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT,LPWSTR,PUINT); +DWORD WINAPI VerInstallFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,PUINT); +DWORD WINAPI VerInstallFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT); +DWORD WINAPI GetFileVersionInfoSizeA(LPSTR,PDWORD); +DWORD WINAPI GetFileVersionInfoSizeW(LPWSTR,PDWORD); +BOOL WINAPI GetFileVersionInfoA(LPSTR,DWORD,DWORD,PVOID); +BOOL WINAPI GetFileVersionInfoW(LPWSTR,DWORD,DWORD,PVOID); +DWORD WINAPI VerLanguageNameA(DWORD,LPSTR,DWORD); +DWORD WINAPI VerLanguageNameW(DWORD,LPWSTR,DWORD); +BOOL WINAPI VerQueryValueA(const LPVOID,LPSTR,LPVOID*,PUINT); +BOOL WINAPI VerQueryValueW(const LPVOID,LPWSTR,LPVOID*,PUINT); +#ifdef UNICODE +#define VerFindFile VerFindFileW +#define VerQueryValue VerQueryValueW +#define VerInstallFile VerInstallFileW +#define GetFileVersionInfoSize GetFileVersionInfoSizeW +#define GetFileVersionInfo GetFileVersionInfoW +#define VerLanguageName VerLanguageNameW +#define VerQueryValue VerQueryValueW +#else +#define VerQueryValue VerQueryValueA +#define VerFindFile VerFindFileA +#define VerInstallFile VerInstallFileA +#define GetFileVersionInfoSize GetFileVersionInfoSizeA +#define GetFileVersionInfo GetFileVersionInfoA +#define VerLanguageName VerLanguageNameA +#define VerQueryValue VerQueryValueA +#endif +#endif +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/ws2spi.h b/reactos/w32api/include/ws2spi.h new file mode 100644 index 00000000000..49b7c4afc93 --- /dev/null +++ b/reactos/w32api/include/ws2spi.h @@ -0,0 +1,200 @@ +/* + * ws2spi.h + * + * Winsock 2 Service Provider interface. + * + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ +#ifndef _WS2SPI_H +#define _WS2SPI_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define WSPAPI WSAAPI +#define WSPDESCRIPTION_LEN 255 + +#ifndef RC_INVOKED + +typedef struct WSPData { + WORD wVersion; + WORD wHighVersion; + WCHAR szDescription[WSPDESCRIPTION_LEN+1]; +} WSPDATA, FAR *LPWSPDATA; +typedef struct _WSATHREADID { + HANDLE ThreadHandle; + DWORD Reserved; +} WSATHREADID, FAR *LPWSATHREADID; + +typedef BOOL (CALLBACK FAR *LPBLOCKINGCALLBACK)(DWORD); +typedef VOID (CALLBACK FAR *LPWSAUSERAPC)(DWORD); + +/* Prototypes for service provider procedure table */ +typedef SOCKET (WSPAPI *LPWSPACCEPT)(SOCKET,LPSOCKADDR,LPINT,LPCONDITIONPROC,DWORD,LPINT); +typedef INT (WSPAPI *LPWSPADDRESSTOSTRING)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD,LPINT); +typedef INT (WSPAPI *LPWSPASYNCSELECT)(SOCKET,HWND,UINT,LONG,LPINT); +typedef INT (WSPAPI *LPWSPBIND)(SOCKET,const struct sockaddr*,INT,LPINT); +typedef INT (WSPAPI *LPWSPCANCELBLOCKINGCALL)(LPINT); +typedef INT (WSPAPI *LPWSPCLEANUP)(LPINT); +typedef INT (WSPAPI *LPWSPCLOSESOCKET)(SOCKET,LPINT); +typedef INT (WSPAPI *LPWSPCONNECT)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,LPINT); +typedef INT (WSPAPI *LPWSPDUPLICATESOCKET)(SOCKET,DWORD,LPWSAPROTOCOL_INFOW,LPINT); +typedef INT (WSPAPI *LPWSPENUMNETWORKEVENTS)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS,LPINT); +typedef INT (WSPAPI *LPWSPEVENTSELECT)(SOCKET,WSAEVENT,LONG,LPINT); +typedef BOOL (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD,LPINT); +typedef INT (WSPAPI *LPWSPGETPEERNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT); +typedef BOOL (WSPAPI *LPWSPGETQOSBYNAME)(SOCKET,LPWSABUF,LPQOS,LPINT); +typedef INT (WSPAPI *LPWSPGETSOCKNAME)(SOCKET,LPSOCKADDR,LPINT,LPINT); +typedef INT (WSPAPI *LPWSPGETSOCKOPT)(SOCKET,INT,INT,CHAR FAR*,LPINT,LPINT); +typedef INT (WSPAPI *LPWSPIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD, + LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT); +typedef SOCKET (WSPAPI *LPWSPJOINLEAF)(SOCKET,const struct sockaddr*,INT,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD,LPINT); +typedef INT (WSPAPI *LPWSPLISTEN)(SOCKET,INT,LPINT); +typedef INT (WSPAPI *LPWSPRECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD, +LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT); +typedef INT (WSPAPI *LPWSPRECVDISCONNECT)(SOCKET,LPWSABUF,LPINT); +typedef INT (WSPAPI *LPWSPRECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPSOCKADDR, +LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT); +typedef INT (WSPAPI *LPWSPSELECT)(INT,LPFD_SET,LPFD_SET,LPFD_SET,CONST LPTIMEVAL,LPINT); +typedef INT (WSPAPI *LPWSPSEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD, +LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT); +typedef INT (WSPAPI *LPWSPSENDDISCONNECT)(SOCKET,LPWSABUF,LPINT); +typedef INT (WSPAPI *LPWSPSENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct sockaddr*, + INT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPWSATHREADID,LPINT); +typedef INT (WSPAPI *LPWSPSETSOCKOPT)(SOCKET,INT,INT,CONST CHAR FAR*,INT,LPINT); +typedef INT (WSPAPI *LPWSPSHUTDOWN)(SOCKET,INT,LPINT); +typedef SOCKET (WSPAPI *LPWSPSOCKET)(INT,INT,INT,LPWSAPROTOCOL_INFOW,GROUP,DWORD,LPINT); +typedef INT (WSPAPI *LPWSPSTRINGTOADDRESS)(LPWSTR,INT,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPINT,LPINT); + +/* Service provider procedure table */ +typedef struct _WSPPROC_TABLE { + LPWSPACCEPT lpWSPAccept; + LPWSPADDRESSTOSTRING lpWSPAddressToString; + LPWSPASYNCSELECT lpWSPAsyncSelect; + LPWSPBIND lpWSPBind; + LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall; + LPWSPCLEANUP lpWSPCleanup; + LPWSPCLOSESOCKET lpWSPCloseSocket; + LPWSPCONNECT lpWSPConnect; + LPWSPDUPLICATESOCKET lpWSPDuplicateSocket; + LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents; + LPWSPEVENTSELECT lpWSPEventSelect; + LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult; + LPWSPGETPEERNAME lpWSPGetPeerName; + LPWSPGETSOCKNAME lpWSPGetSockName; + LPWSPGETSOCKOPT lpWSPGetSockOpt; + LPWSPGETQOSBYNAME lpWSPGetQOSByName; + LPWSPIOCTL lpWSPIoctl; + LPWSPJOINLEAF lpWSPJoinLeaf; + LPWSPLISTEN lpWSPListen; + LPWSPRECV lpWSPRecv; + LPWSPRECVDISCONNECT lpWSPRecvDisconnect; + LPWSPRECVFROM lpWSPRecvFrom; + LPWSPSELECT lpWSPSelect; + LPWSPSEND lpWSPSend; + LPWSPSENDDISCONNECT lpWSPSendDisconnect; + LPWSPSENDTO lpWSPSendTo; + LPWSPSETSOCKOPT lpWSPSetSockOpt; + LPWSPSHUTDOWN lpWSPShutdown; + LPWSPSOCKET lpWSPSocket; + LPWSPSTRINGTOADDRESS lpWSPStringToAddress; +} WSPPROC_TABLE, FAR* LPWSPPROC_TABLE; + +/* Prototypes for service provider upcall procedure table */ +typedef BOOL (WSPAPI *LPWPUCLOSEEVENT)(WSAEVENT,LPINT); +typedef INT (WSPAPI *LPWPUCLOSESOCKETHANDLE)(SOCKET,LPINT); +typedef INT (WSPAPI *LPWPUCLOSETHREAD)(LPWSATHREADID,LPINT); +typedef WSAEVENT (WSPAPI *LPWPUCREATEEVENT)(LPINT); +typedef SOCKET (WSPAPI *LPWPUCREATESOCKETHANDLE)(DWORD,DWORD,LPINT); +typedef SOCKET (WSPAPI *LPWPUFDISSET)(SOCKET,LPFD_SET); +typedef INT (WSPAPI *LPWPUGETPROVIDERPATH)(LPGUID,LPWSTR,LPINT,LPINT); +typedef SOCKET (WSPAPI *LPWPUMODIFYIFSHANDLE)(DWORD,SOCKET,LPINT); +typedef INT (WSPAPI *LPWPUOPENCURRENTTHREAD)(LPWSATHREADID,LPINT); +typedef BOOL (WSPAPI *LPWPUPOSTMESSAGE)(HWND,UINT,WPARAM,LPARAM); +typedef INT (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(DWORD,LPBLOCKINGCALLBACK FAR*,LPDWORD,LPINT); +typedef INT (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(SOCKET,LPDWORD,LPINT); +typedef INT (WSPAPI *LPWPUQUEUEAPC)(LPWSATHREADID,LPWSAUSERAPC,DWORD,LPINT); +typedef BOOL (WSPAPI *LPWPURESETEVENT)(WSAEVENT,LPINT); +typedef BOOL (WSPAPI *LPWPUSETEVENT)(WSAEVENT,LPINT); +/* Available only directly from the DLL */ +typedef INT (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT); + +/* Service Provider upcall table */ +typedef struct _WSPUPCALLTABLE { + LPWPUCLOSEEVENT lpWPUCloseEvent; + LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle; + LPWPUCREATEEVENT lpWPUCreateEvent; + LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle; + LPWPUFDISSET lpWPUFDIsSet; + LPWPUGETPROVIDERPATH lpWPUGetProviderPath; + LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle; + LPWPUPOSTMESSAGE lpWPUPostMessage; + LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback; + LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext; + LPWPUQUEUEAPC lpWPUQueueApc; + LPWPURESETEVENT lpWPUResetEvent; + LPWPUSETEVENT lpWPUSetEvent; + LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread; + LPWPUCLOSETHREAD lpWPUCloseThread; +} WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE; + +typedef INT (WSPAPI *LPWSPSTARTUP)(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE); + +/* Prototypes for service provider namespace procedure table */ +typedef INT (WSPAPI *LPNSPCLEANUP)(LPGUID); +typedef INT (WSPAPI *LPNSPGETSERVICECLASSINFO)(LPGUID,LPDWORD,LPWSASERVICECLASSINFOW); +typedef INT (WSPAPI *LPNSPINSTALLSERVICECLASS)(LPGUID,LPWSASERVICECLASSINFOW); +typedef INT (WSPAPI *LPNSPLOOKUPSERVICEBEGIN)(LPGUID,LPWSAQUERYSETW,LPWSASERVICECLASSINFOW,DWORD,LPHANDLE); +typedef INT (WSPAPI *LPNSPLOOKUPSERVICEEND)(HANDLE); +typedef INT (WSPAPI *LPNSPLOOKUPSERVICENEXT)(HANDLE,DWORD,LPDWORD,LPWSAQUERYSET); +typedef INT (WSPAPI *LPNSPREMOVESERVICECLASS)(LPGUID,LPGUID); +typedef INT (WSPAPI *LPNSPSETSERVICE)(LPGUID,LPWSASERVICECLASSINFOW,LPWSAQUERYSETW,WSAESETSERVICEOP,DWORD); + +typedef struct _NSP_ROUTINE { + DWORD cbSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + LPNSPCLEANUP NSPCleanup; + LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin; + LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext; + LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd; + LPNSPSETSERVICE NSPSetService; + LPNSPINSTALLSERVICECLASS NSPInstallServiceClass; + LPNSPREMOVESERVICECLASS NSPRemoveServiceClass; + LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo; +} NSP_ROUTINE, *PNSP_ROUTINE, *LPNSP_ROUTINE; + +INT WSPAPI NSPStartup(LPGUID,LPNSP_ROUTINE); + +/* WinSock 2 DLL function prototypes */ +INT WSPAPI WPUCompleteOverlappedRequest(SOCKET,LPWSAOVERLAPPED,DWORD,DWORD,LPINT); +INT WSPAPI WSPStartup(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE); +INT WSPAPI WSCDeinstallProvider(LPGUID,LPINT); +INT WSPAPI WSCEnumProtocols(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD,LPINT); +INT WSPAPI WSCGetProviderPath(LPGUID,LPWSTR,LPINT,LPINT); +INT WSPAPI WSCInstallProvider(CONST LPGUID,CONST LPWSTR,CONST LPWSAPROTOCOL_INFOW,DWORD,LPINT); +INT WSPAPI WSCEnableNSProvider(LPGUID,BOOL); +INT WSPAPI WSCInstallNameSpace(LPWSTR,LPWSTR,DWORD,DWORD,LPGUID); +INT WSPAPI WSCUnInstallNameSpace(LPGUID); +INT WSPAPI WSCWriteProviderOrder(LPDWORD,DWORD); + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _WS2SPI_H */ diff --git a/reactos/w32api/include/ws2tcpip.h b/reactos/w32api/include/ws2tcpip.h new file mode 100644 index 00000000000..ac66fb0be6e --- /dev/null +++ b/reactos/w32api/include/ws2tcpip.h @@ -0,0 +1,358 @@ +/* + * ws2tcpip.h : TCP/IP specific extensions in Windows Sockets 2 + * + * Portions Copyright (c) 1980, 1983, 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + */ + +#ifndef _WS2TCPIP_H +#define _WS2TCPIP_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#if (defined _WINSOCK_H && !defined _WINSOCK2_H) +#error "ws2tcpip.h is not compatable with winsock.h. Include winsock2.h instead." +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The IP_* macros are also defined in winsock.h, but some values are different there. + * The values defined in winsock.h for 1.1 and used in wsock32.dll are consistent + * with the original values Steve Deering defined in his document "IP Multicast Extensions + * for 4.3BSD UNIX related systems (MULTICAST 1.2 Release)." However, these conflicted with + * the definitions for some IPPROTO_IP level socket options already assigned by BSD, + * so Berkeley changed all the values by adding 7. WinSock2 (ws2_32.dll) uses + * the BSD 4.4 compatible values defined here. + * + * See also: msdn kb article Q257460 + * http://support.microsoft.com/support/kb/articles/Q257/4/60.asp + */ + +/* This is also defined in winsock.h; value hasn't changed */ +#define IP_OPTIONS 1 + +#define IP_HDRINCL 2 +/* + * These are also be defined in winsock.h, + * but values have changed for WinSock2 interface + */ +#define IP_TOS 3 /* old (winsock 1.1) value 8 */ +#define IP_TTL 4 /* old value 7 */ +#define IP_MULTICAST_IF 9 /* old value 2 */ +#define IP_MULTICAST_TTL 10 /* old value 3 */ +#define IP_MULTICAST_LOOP 11 /* old value 4 */ +#define IP_ADD_MEMBERSHIP 12 /* old value 5 */ +#define IP_DROP_MEMBERSHIP 13 /* old value 6 */ +#define IP_DONTFRAGMENT 14 /* old value 9 */ +#define IP_ADD_SOURCE_MEMBERSHIP 15 +#define IP_DROP_SOURCE_MEMBERSHIP 16 +#define IP_BLOCK_SOURCE 17 +#define IP_UNBLOCK_SOURCE 18 +#define IP_PKTINFO 19 + +/* + * As with BSD implementation, IPPROTO_IPV6 level socket options have + * same values as IPv4 counterparts. + */ +#define IPV6_UNICAST_HOPS 4 +#define IPV6_MULTICAST_IF 9 +#define IPV6_MULTICAST_HOPS 10 +#define IPV6_MULTICAST_LOOP 11 +#define IPV6_ADD_MEMBERSHIP 12 +#define IPV6_DROP_MEMBERSHIP 13 +#define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP +#define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP +#define IPV6_PKTINFO 19 + +#define IP_DEFAULT_MULTICAST_TTL 1 +#define IP_DEFAULT_MULTICAST_LOOP 1 +#define IP_MAX_MEMBERSHIPS 20 + +#define TCP_EXPEDITED_1122 2 + +#define UDP_NOCHECKSUM 1 + +/* INTERFACE_INFO iiFlags */ +#define IFF_UP 1 +#define IFF_BROADCAST 2 +#define IFF_LOOPBACK 4 +#define IFF_POINTTOPOINT 8 +#define IFF_MULTICAST 16 + +#define SIO_GET_INTERFACE_LIST _IOR('t', 127, u_long) + +#define INET_ADDRSTRLEN 16 +#define INET6_ADDRSTRLEN 46 + +/* getnameinfo constants */ +#define NI_MAXHOST 1025 +#define NI_MAXSERV 32 + +#define NI_NOFQDN 0x01 +#define NI_NUMERICHOST 0x02 +#define NI_NAMEREQD 0x04 +#define NI_NUMERICSERV 0x08 +#define NI_DGRAM 0x10 + +/* getaddrinfo constants */ +#define AI_PASSIVE 1 +#define AI_CANONNAME 2 +#define AI_NUMERICHOST 4 + +/* getaddrinfo error codes */ +#define EAI_AGAIN WSATRY_AGAIN +#define EAI_BADFLAGS WSAEINVAL +#define EAI_FAIL WSANO_RECOVERY +#define EAI_FAMILY WSAEAFNOSUPPORT +#define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY +#define EAI_NODATA WSANO_DATA +#define EAI_NONAME WSAHOST_NOT_FOUND +#define EAI_SERVICE WSATYPE_NOT_FOUND +#define EAI_SOCKTYPE WSAESOCKTNOSUPPORT + +/* + * ip_mreq also in winsock.h for WinSock1.1, + * but online msdn docs say it is defined here for WinSock2. + */ + +struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +}; + +struct ip_mreq_source { + struct in_addr imr_multiaddr; + struct in_addr imr_sourceaddr; + struct in_addr imr_interface; +}; + +struct ip_msfilter { + struct in_addr imsf_multiaddr; + struct in_addr imsf_interface; + u_long imsf_fmode; + u_long imsf_numsrc; + struct in_addr imsf_slist[1]; +}; + +#define IP_MSFILTER_SIZE(numsrc) \ + (sizeof(struct ip_msfilter) - sizeof(struct in_addr) \ + + (numsrc) * sizeof(struct in_addr)) + +struct in_pktinfo { + IN_ADDR ipi_addr; + UINT ipi_ifindex; +}; +typedef struct in_pktinfo IN_PKTINFO; + + +/* ipv6 */ +/* These require XP or .NET Server or use of add-on IPv6 stacks on NT 4 + or higher */ + +/* This is based on the example given in RFC 2553 with stdint types + changed to BSD types. For now, use these field names until there + is some consistency in MS docs. In this file, we only use the + in6_addr structure start address, with casts to get the right offsets + when testing addresses */ + +struct in6_addr { + union { + u_char _S6_u8[16]; + u_short _S6_u16[8]; + u_long _S6_u32[4]; + } _S6_un; +}; +/* s6_addr is the standard name */ +#define s6_addr _S6_un._S6_u8 + +/* These are GLIBC names */ +#define s6_addr16 _S6_un._S6_u16 +#define s6_addr32 _S6_un._S6_u16 + +/* These are used in some MS code */ +#define in_addr6 in6_addr +#define _s6_bytes _S6_un._S6_u8 +#define _s6_words _S6_un._S6_u16 + +typedef struct in6_addr IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR; + +struct sockaddr_in6 { + short sin6_family; /* AF_INET6 */ + u_short sin6_port; /* transport layer port # */ + u_long sin6_flowinfo; /* IPv6 traffic class & flow info */ + struct in6_addr sin6_addr; /* IPv6 address */ + u_long sin6_scope_id; /* set of interfaces for a scope */ +}; +typedef struct sockaddr_in6 SOCKADDR_IN6, *PSOCKADDR_IN6, *LPSOCKADDR_IN6; + +extern const struct in6_addr in6addr_any; +extern const struct in6_addr in6addr_loopback; +/* the above can get initialised using: */ +#define IN6ADDR_ANY_INIT { 0 } +#define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } + +/* Described in RFC 2292, but not in 2553 */ +/* int IN6_ARE_ADDR_EQUAL(const struct in6_addr * a, const struct in6_addr * b) */ +#define IN6_ARE_ADDR_EQUAL(a, b) \ + (memcmp ((void*)(a), (void*)(b), sizeof (struct in6_addr)) == 0) + + +/* Address Testing Macros + + These macro functions all take const struct in6_addr* as arg. + Static inlines would allow type checking, but RFC 2553 says they + macros. + NB: These are written specifically for little endian host */ + +#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)) /* Note byte order reversed */ +/* (((const u_long *)(_addr))[3] == ntohl(1)) */ + +#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)) /* Note byte order reversed */ +/* (((const u_long *)(_addr))[2] == ntohl(0x0000ffff))) */ + +#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)) /* Note byte order reversed */ +/* (ntohl (((const u_long *)(_addr))[3]) > 1 ) */ + + +#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)) + + +typedef int socklen_t; + +struct ipv6_mreq { + struct in6_addr ipv6mr_multiaddr; + unsigned int ipv6mr_interface; +}; +typedef struct ipv6_mreq IPV6_MREG; + +struct in6_pktinfo { + IN6_ADDR ipi6_addr; + UINT ipi6_ifindex; +}; +typedef struct in6_pktinfo IN6_PKTINFO; + +struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + char *ai_canonname; + struct sockaddr *ai_addr; + struct addrinfo *ai_next; +}; + +void WSAAPI freeaddrinfo (struct addrinfo*); +int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*, + struct addrinfo**); + +char* WSAAPI gai_strerrorA(int); +WCHAR* WSAAPI gai_strerrorW(int); +#ifdef UNICODE +#define gai_strerror gai_strerrorW +#else +#define gai_strerror gai_strerrorA +#endif /* UNICODE */ + +int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD, + char*,DWORD,int); + + +/* Some older IPv4/IPv6 compatability stuff */ + +/* This struct lacks sin6_scope_id; retained for use in sockaddr_gen */ +struct sockaddr_in6_old { + short sin6_family; + u_short sin6_port; + u_long sin6_flowinfo; + struct in6_addr sin6_addr; +}; + +typedef union sockaddr_gen{ + struct sockaddr Address; + struct sockaddr_in AddressIn; + struct sockaddr_in6_old AddressIn6; +} sockaddr_gen; + + +typedef struct _INTERFACE_INFO { + u_long iiFlags; + sockaddr_gen iiAddress; + sockaddr_gen iiBroadcastAddress; + sockaddr_gen iiNetmask; +} INTERFACE_INFO, *LPINTERFACE_INFO; + +/* + The definition above can cause problems on NT4,prior to sp4. + To workaround, include the following struct and typedef and + #define INTERFACE_INFO OLD_INTERFACE_INFO + See: FIX: WSAIoctl SIO_GET_INTERFACE_LIST Option Problem + (Q181520) in MSDN KB. + + The old definition causes problems on newer NT and on XP. + +typedef struct _OLD_INTERFACE_INFO { + u_long iiFlags; + struct sockaddr iiAddress; + struct sockaddr iiBroadcastAddress; + struct sockaddr iiNetmask; +} OLD_INTERFACE_INFO; +*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _WS2TCPIP_H */ diff --git a/reactos/w32api/include/wsahelp.h b/reactos/w32api/include/wsahelp.h new file mode 100644 index 00000000000..3c715e622a5 --- /dev/null +++ b/reactos/w32api/include/wsahelp.h @@ -0,0 +1,92 @@ +#ifndef _WSAHELP_H +#define _WSAHELP_H + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define WSH_NOTIFY_BIND 0x00000001 +#define WSH_NOTIFY_LISTEN 0x00000002 +#define WSH_NOTIFY_CONNECT 0x00000004 +#define WSH_NOTIFY_ACCEPT 0x00000008 +#define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x00000010 +#define WSH_NOTIFY_SHUTDOWN_SEND 0x00000020 +#define WSH_NOTIFY_SHUTDOWN_ALL 0x00000040 +#define WSH_NOTIFY_CLOSE 0x00000080 +#define WSH_NOTIFY_CONNECT_ERROR 0x00000100 +#define SOL_INTERNAL 0xFFFE +#define SO_CONTEXT 1 + +#ifndef RC_INVOKED +typedef enum _SOCKADDR_ADDRESS_INFO { + SockaddrAddressInfoNormal, + SockaddrAddressInfoWildcard, + SockaddrAddressInfoBroadcast, + SockaddrAddressInfoLoopback +} SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO; +typedef enum _SOCKADDR_ENDPOINT_INFO { + SockaddrEndpointInfoNormal, + SockaddrEndpointInfoWildcard, + SockaddrEndpointInfoReserved +} SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO; +typedef struct _WINSOCK_MAPPING { + DWORD Rows; + DWORD Columns; + struct { + DWORD AddressFamily; + DWORD SocketType; + DWORD Protocol; + } Mapping[1]; +} WINSOCK_MAPPING, *PWINSOCK_MAPPING; +typedef struct _SOCKADDR_INFO { + SOCKADDR_ADDRESS_INFO AddressInfo; + SOCKADDR_ENDPOINT_INFO EndpointInfo; +} SOCKADDR_INFO, *PSOCKADDR_INFO; + +INT WINAPI WSHAddressToString(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); +INT WINAPI WSHEnumProtocols(LPINT,LPWSTR,LPVOID,LPDWORD); +INT WINAPI WSHGetBroadcastSockaddr(PVOID,PSOCKADDR,PINT); +INT WINAPI WSHGetProviderGuid(LPWSTR,LPGUID); +INT WINAPI WSHGetSockaddrType(PSOCKADDR,DWORD,PSOCKADDR_INFO); +INT WINAPI WSHGetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); +INT WINAPI WSHGetWildcardSockaddr(PVOID,PSOCKADDR,PINT); +DWORD WINAPI WSHGetWinsockMapping(PWINSOCK_MAPPING,DWORD); +INT WINAPI WSHGetWSAProtocolInfo(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD); +INT WINAPI WSHIoctl(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD, +LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL); +INT WINAPI WSHJoinLeaf(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET,PSOCKADDR, +DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD); +INT WINAPI WSHNotify(PVOID,SOCKET,HANDLE,HANDLE,DWORD); +INT WINAPI WSHOpenSocket(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD); +INT WINAPI WSHOpenSocket2(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD); +INT WINAPI WSHSetSocketInformation(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); +INT WINAPI WSHStringToAddress(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD); + +typedef INT (WINAPI *PWSH_ADDRESS_TO_STRING)(LPSOCKADDR,INT,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); +typedef INT (WINAPI *PWSH_ENUM_PROTOCOLS)(LPINT,LPWSTR,LPVOID,LPDWORD); +typedef INT (WINAPI *PWSH_GET_BROADCAST_SOCKADDR)(PVOID,PSOCKADDR,PINT); +typedef INT (WINAPI *PWSH_GET_PROVIDER_GUID)(LPWSTR,LPGUID); +typedef INT (WINAPI *PWSH_GET_SOCKADDR_TYPE)(PSOCKADDR,DWORD,PSOCKADDR_INFO); +typedef INT (WINAPI *PWSH_GET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); +typedef INT (WINAPI *PWSH_GET_WILDCARD_SOCKEADDR)(PVOID,PSOCKADDR,PINT); +typedef DWORD (WINAPI *PWSH_GET_WINSOCK_MAPPING)(PWINSOCK_MAPPING,DWORD); +typedef INT (WINAPI *PWSH_GET_WSAPROTOCOL_INFO)(LPWSTR,LPWSAPROTOCOL_INFOW*,LPDWORD); +typedef INT (WINAPI *PWSH_IOCTL)(PVOID,SOCKET,HANDLE,HANDLE,DWORD,LPVOID,DWORD, + LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE,LPBOOL); +typedef INT (WINAPI *PWSH_JOIN_LEAF)(PVOID,SOCKET,HANDLE,HANDLE,PVOID,SOCKET, + PSOCKADDR,DWORD,LPWSABUF,LPWSABUF,LPQOS,LPQOS,DWORD); +typedef INT (WINAPI *PWSH_NOTIFY)(PVOID,SOCKET,HANDLE,HANDLE,DWORD); +typedef INT (WINAPI *PWSH_OPEN_SOCKET)(PINT,PINT,PINT,PUNICODE_STRING,PVOID,PDWORD); +typedef INT (WINAPI *PWSH_OPEN_SOCKET2)(PINT,PINT,PINT,GROUP,DWORD,PUNICODE_STRING,PVOID*,PDWORD); +typedef INT (WINAPI *PWSH_SET_SOCKET_INFORMATION)(PVOID,SOCKET,HANDLE,HANDLE,INT,INT,PCHAR,INT); +typedef INT (WINAPI *PWSH_STRING_TO_ADDRESS)(LPWSTR,DWORD,LPWSAPROTOCOL_INFOW,LPSOCKADDR,LPDWORD); + +#endif /* RC_INVOKED */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _WSAHELP_H */ diff --git a/reactos/w32api/include/wsipx.h b/reactos/w32api/include/wsipx.h new file mode 100644 index 00000000000..4f24db43bc6 --- /dev/null +++ b/reactos/w32api/include/wsipx.h @@ -0,0 +1,28 @@ +/* WSIPX.H - initially taken from the Wine project + */ + +#ifndef _WSIPX_H +#define _WSIPX_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define NSPROTO_IPX 1000 +#define NSPROTO_SPX 1256 +#define NSPROTO_SPXII 1257 + +typedef struct sockaddr_ipx { + short sa_family; + char sa_netnum[4]; + char sa_nodenum[6]; + unsigned short sa_socket; +} SOCKADDR_IPX, *PSOCKADDR_IPX, *LPSOCKADDR_IPX; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/wsnetbs.h b/reactos/w32api/include/wsnetbs.h new file mode 100644 index 00000000000..e435b5daf1f --- /dev/null +++ b/reactos/w32api/include/wsnetbs.h @@ -0,0 +1,35 @@ +#ifndef _WSNETBS_H +#define _WSNETBS_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#define NETBIOS_NAME_LENGTH 16 +#define NETBIOS_UNIQUE_NAME 0 +#define NETBIOS_GROUP_NAME 1 +#define NETBIOS_TYPE_QUICK_UNIQUE 2 +#define NETBIOS_TYPE_QUICK_GROUP 3 + +#ifndef RC_INVOKED +typedef struct sockaddr_nb { + short snb_family; + u_short snb_type; + char snb_name[NETBIOS_NAME_LENGTH]; +} SOCKADDR_NB, *PSOCKADDR_NB, *LPSOCKADDR_NB; +#define SET_NETBIOS_SOCKADDR(_snb,_type,_name,_port) \ +{ \ + register int _i; \ + register char *_n = (_name); \ + register PSOCKADDR_NB _s = (_snb); \ + _s->snb_family = AF_NETBIOS; \ + _s->snb_type = (_type); \ + for (_i=0; _n[_i] != '\0' && _isnb_name[_i] = _n[_i]; \ + } \ + for (; _isnb_name[_i] = ' '; \ + } \ + _s->snb_name[NETBIOS_NAME_LENGTH-1] = (_port); \ +} +#endif /* RC_INVOKED */ +#endif diff --git a/reactos/w32api/include/wtypes.h b/reactos/w32api/include/wtypes.h new file mode 100644 index 00000000000..612b8dc9790 --- /dev/null +++ b/reactos/w32api/include/wtypes.h @@ -0,0 +1,173 @@ +#include +#include + +#ifndef _WTYPES_H +#define _WTYPES_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define IID_NULL GUID_NULL +#define CLSID_NULL GUID_NULL +#define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt)) +#define DECIMAL_NEG ((BYTE)0x80) +#define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} +#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x01 +#define ROTFLAGS_ALLOWANYCLIENT 0x02 + +#ifndef __BLOB_T_DEFINED /* also in winsock2.h */ +#define __BLOB_T_DEFINED +typedef struct _BLOB { + ULONG cbSize; + BYTE *pBlobData; +} BLOB,*PBLOB,*LPBLOB; +#endif +typedef enum tagDVASPECT { + DVASPECT_CONTENT=1, + DVASPECT_THUMBNAIL=2, + DVASPECT_ICON=4, + DVASPECT_DOCPRINT=8 +} DVASPECT; +typedef enum tagDVASPECT2 { + DVASPECT_OPAQUE=16, + DVASPECT_TRANSPARENT=32 +} DVASPECT2; +typedef enum tagSTATFLAG { + STATFLAG_DEFAULT=0, + STATFLAG_NONAME=1 +} STATFLAG; +typedef enum tagMEMCTX { + MEMCTX_LOCAL=0, + MEMCTX_TASK, + MEMCTX_SHARED, + MEMCTX_MACSYSTEM, + MEMCTX_UNKNOWN=-1, + MEMCTX_SAME=-2 +} MEMCTX; +typedef enum tagMSHCTX { + MSHCTX_LOCAL=0, + MSHCTX_NOSHAREDMEM, + MSHCTX_DIFFERENTMACHINE, + MSHCTX_INPROC, + MSHCTX_CROSSCTX +} MSHCTX; +typedef enum tagCLSCTX { + CLSCTX_INPROC_SERVER=1,CLSCTX_INPROC_HANDLER=2,CLSCTX_LOCAL_SERVER=4, + CLSCTX_INPROC_SERVER16=8,CLSCTX_REMOTE_SERVER=16 +} CLSCTX; +typedef enum tagMSHLFLAGS { + MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK +} MSHLFLAGS; +typedef struct _FLAGGED_WORD_BLOB { + unsigned long fFlags; + unsigned long clSize; + unsigned short asData[1]; +}FLAGGED_WORD_BLOB; + +#ifndef OLE2ANSI +typedef WCHAR OLECHAR; +typedef LPWSTR LPOLESTR; +typedef LPCWSTR LPCOLESTR; +#define OLESTR(s) L##s +#else +typedef char OLECHAR; +typedef LPSTR LPOLESTR; +typedef LPCSTR LPCOLESTR; +#define OLESTR(s) s +#endif +typedef unsigned short VARTYPE; +typedef short VARIANT_BOOL; +typedef VARIANT_BOOL _VARIANT_BOOL; +#define VARIANT_TRUE ((VARIANT_BOOL)0xffff) +#define VARIANT_FALSE ((VARIANT_BOOL)0) +typedef OLECHAR *BSTR; +typedef FLAGGED_WORD_BLOB *wireBSTR; +typedef BSTR *LPBSTR; +typedef LONG SCODE; +typedef void *HCONTEXT; +typedef union tagCY { + _ANONYMOUS_STRUCT struct { + unsigned long Lo; + long Hi; + }_STRUCT_NAME(s); + LONGLONG int64; +} CY; +typedef double DATE; +typedef struct tagBSTRBLOB { + ULONG cbSize; + PBYTE pData; +}BSTRBLOB; +typedef struct tagBSTRBLOB *LPBSTRBLOB; +typedef struct tagCLIPDATA { + ULONG cbSize; + long ulClipFmt; + PBYTE pClipData; +}CLIPDATA; +typedef enum tagSTGC { + STGC_DEFAULT,STGC_OVERWRITE,STGC_ONLYIFCURRENT, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE +}STGC; +typedef enum tagSTGMOVE { + STGMOVE_MOVE,STGMOVE_COPY,STGMOVE_SHALLOWCOPY +}STGMOVE; +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_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 +}; +#ifdef _WIN64 +#define VT_INT_PTR VT_I8 +#define VT_UINT_PTR VT_UI8 +#else +#define VT_INT_PTR VT_I4 +#define VT_UINT_PTR VT_UI4 +#endif + +typedef struct _BYTE_SIZEDARR { + unsigned long clSize; + byte *pData; +}BYTE_SIZEDARR; +typedef struct _SHORT_SIZEDARR { + unsigned long clSize; + unsigned short *pData; +}WORD_SIZEDARR; +typedef struct _LONG_SIZEDARR { + unsigned long clSize; + unsigned long *pData; +}DWORD_SIZEDARR; +typedef struct _HYPER_SIZEDARR { + unsigned long clSize; + hyper *pData; +}HYPER_SIZEDARR; +typedef double DOUBLE; +typedef struct tagDEC { + USHORT wReserved; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + BYTE scale; + BYTE sign; + }_STRUCT_NAME(s); + USHORT signscale; + } DUMMYUNIONNAME; + ULONG Hi32; + _ANONYMOUS_UNION union { + _ANONYMOUS_STRUCT struct { + ULONG Lo32; + ULONG Mid32; + }_STRUCT_NAME(s2); + ULONGLONG Lo64; + } DUMMYUNIONNAME2; +} DECIMAL; +typedef void *HMETAFILEPICT; +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/w32api/include/zmouse.h b/reactos/w32api/include/zmouse.h new file mode 100644 index 00000000000..764d43d1314 --- /dev/null +++ b/reactos/w32api/include/zmouse.h @@ -0,0 +1,36 @@ +/* + zmouse.h - Header for IntelliMouse. + + 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. + + FIXME: This file is obviously horribly incomplete! + +*/ + +#ifndef _ZMOUSE_H +#define _ZMOUSE_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifndef WM_MOUSEWHEEL +# define WM_MOUSEWHEEL (WM_MOUSELAST + 1) +#endif + +#ifndef WHEEL_DELTA +# define WHEEL_DELTA 120 +#endif + +#ifndef WHEEL_PAGESCROLL +# define WHEEL_PAGESCROLL UINT_MAX +#endif + +#ifndef SPI_SETWHEELSCROLLLINES +# define SPI_SETWHEELSCROLLLINES 105 +#endif + +#endif /* _ZMOUSE_H */ diff --git a/rosapps/calc/makefile b/rosapps/calc/makefile index b8c2cc1e410..75dcaa63476 100644 --- a/rosapps/calc/makefile +++ b/rosapps/calc/makefile @@ -18,6 +18,8 @@ TARGET_NAME = calc WINE_INCLUDE = ./ +TARGET_CFLAGS = -D__USE_W32API + #TARGET_CFLAGS = -I$(TEST_ROOT) -DDBG -DUNICODE -D_UNICODE BASE_CFLAGS = -D_WIN32_IE=0x0400 diff --git a/rosapps/dflat32/makefile b/rosapps/dflat32/makefile index 5ac8176a7c1..9c2f8636645 100644 --- a/rosapps/dflat32/makefile +++ b/rosapps/dflat32/makefile @@ -18,6 +18,8 @@ WINE_RC = $(TARGET_NAME) WINE_INCLUDE = ./ +TARGET_CFLAGS = -D__USE_W32API + #WITH_DEBUGGING=yes TARGET_SDKLIBS = \ diff --git a/rosapps/hcalc/Makefile b/rosapps/hcalc/Makefile index c256679e234..c27d52ef9ee 100644 --- a/rosapps/hcalc/Makefile +++ b/rosapps/hcalc/Makefile @@ -18,6 +18,8 @@ WINE_RC = $(TARGET_NAME) WINE_INCLUDE = ./ +TARGET_CFLAGS = -D__USE_W32API + TARGET_SDKLIBS = \ kernel32.a \ user32.a \ diff --git a/rosapps/mc/Makefile b/rosapps/mc/Makefile index b5e2956a405..8a3d5b1ab40 100644 --- a/rosapps/mc/Makefile +++ b/rosapps/mc/Makefile @@ -14,13 +14,7 @@ TARGET_APPTYPE = console TARGET_NAME = mc -TARGET_CFLAGS = -I./pc -I./slang -DMC_$(TARGET_OS) -DHAVE_CONFIG_H - -WINE_MODE = yes - -WINE_RC = $(TARGET_NAME) - -WINE_INCLUDE = ./ +TARGET_CFLAGS = -I./pc -I./slang -DMC_$(TARGET_OS) -DHAVE_CONFIG_H -D__USE_W32API TARGET_SDKLIBS = \ kernel32.a \ diff --git a/rosapps/notepad/makefile b/rosapps/notepad/makefile index c4c5f4c32be..ef75fcf72fc 100644 --- a/rosapps/notepad/makefile +++ b/rosapps/notepad/makefile @@ -26,8 +26,8 @@ TARGET_SDKLIBS = \ kernel32.a \ user32.a \ gdi32.a \ - $(COMCTL32_TARGET).a \ - $(COMDLG32_TARGET).a + comctl32.a \ + comdlg32.a TARGET_OBJECTS = \ framewnd.o \ diff --git a/rosapps/rules.mak b/rosapps/rules.mak index 13dc0f06676..b8bb6417762 100644 --- a/rosapps/rules.mak +++ b/rosapps/rules.mak @@ -19,6 +19,8 @@ ifeq ($(HOST),mingw32-linux) TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) endif +W32API_PATH = $(PATH_TO_TOP)/../reactos/w32api + # # Choose various options # @@ -85,6 +87,7 @@ CFLAGS = \ -Wall \ -Wstrict-prototypes \ -fno-builtin \ + -I$(W32API_PATH)/include \ $(LEAN_AND_MEAN_DEFINE) \ $(DEFINES) \ $(DEBUGGING_CFLAGS) \ diff --git a/rosapps/winfile/Makefile b/rosapps/winfile/Makefile index 9db8b020235..51825a55795 100644 --- a/rosapps/winfile/Makefile +++ b/rosapps/winfile/Makefile @@ -12,7 +12,7 @@ TARGET_APPTYPE = windows TARGET_NAME = winfile -TARGET_CFLAGS = -D_WIN32_IE=0x0400 +TARGET_CFLAGS = -D_WIN32_IE=0x0400 -D__USE_W32API TARGET_RCFLAGS = -D_WIN32_IE=0x0400