summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/pidl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/pidl
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/pidl')
-rw-r--r--epan/dissectors/pidl/CMakeLists.txt167
-rw-r--r--epan/dissectors/pidl/IDL_LICENSE.txt9
-rw-r--r--epan/dissectors/pidl/Makefile.pidl182
-rw-r--r--epan/dissectors/pidl/README107
-rw-r--r--epan/dissectors/pidl/atsvc/atsvc.cnf13
-rw-r--r--epan/dissectors/pidl/atsvc/atsvc.idl119
-rw-r--r--epan/dissectors/pidl/clusapi/clusapi.cnf49
-rw-r--r--epan/dissectors/pidl/clusapi/clusapi.idl2918
-rw-r--r--epan/dissectors/pidl/dfs/dfs.cnf3
-rw-r--r--epan/dissectors/pidl/dfs/dfs.idl394
-rw-r--r--epan/dissectors/pidl/dnsserver/dnsserver.cnf84
-rw-r--r--epan/dissectors/pidl/dnsserver/dnsserver.idl402
-rw-r--r--epan/dissectors/pidl/drsuapi/drsuapi.cnf119
-rw-r--r--epan/dissectors/pidl/drsuapi/drsuapi.idl1957
-rw-r--r--epan/dissectors/pidl/dssetup/dssetup.cnf1
-rw-r--r--epan/dissectors/pidl/dssetup/dssetup.idl101
-rw-r--r--epan/dissectors/pidl/efs/efs.cnf27
-rw-r--r--epan/dissectors/pidl/efs/efs.idl108
-rw-r--r--epan/dissectors/pidl/eventlog/eventlog.cnf158
-rw-r--r--epan/dissectors/pidl/eventlog/eventlog.idl224
-rw-r--r--epan/dissectors/pidl/frsrpc/frsrpc.cnf115
-rw-r--r--epan/dissectors/pidl/frsrpc/frsrpc.idl422
-rw-r--r--epan/dissectors/pidl/frstrans/frstrans.cnf15
-rw-r--r--epan/dissectors/pidl/frstrans/frstrans.idl285
-rw-r--r--epan/dissectors/pidl/fsrvp/fsrvp.cnf109
-rw-r--r--epan/dissectors/pidl/fsrvp/fsrvp.idl105
-rw-r--r--epan/dissectors/pidl/idl_types.h72
-rw-r--r--epan/dissectors/pidl/initshutdown/initshutdown.cnf1
-rw-r--r--epan/dissectors/pidl/initshutdown/initshutdown.idl91
-rw-r--r--epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.cnf170
-rw-r--r--epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.idl84
-rw-r--r--epan/dissectors/pidl/lsa/lsa.cnf407
-rw-r--r--epan/dissectors/pidl/lsa/lsa.idl1293
-rw-r--r--epan/dissectors/pidl/mapi/mapi.cnf1351
-rw-r--r--epan/dissectors/pidl/mapi/mapi.idl4049
-rw-r--r--epan/dissectors/pidl/mapicodes_enum.h98
-rw-r--r--epan/dissectors/pidl/mapitags_enum.h3421
-rw-r--r--epan/dissectors/pidl/mdssvc/mdssvc.cnf25
-rw-r--r--epan/dissectors/pidl/mdssvc/mdssvc.idl68
-rw-r--r--epan/dissectors/pidl/misc/misc.cnf1
-rw-r--r--epan/dissectors/pidl/misc/misc.idl80
-rw-r--r--epan/dissectors/pidl/nspi/README62
-rw-r--r--epan/dissectors/pidl/nspi/README.ws2
-rw-r--r--epan/dissectors/pidl/nspi/nspi.cnf26
-rw-r--r--epan/dissectors/pidl/nspi/nspi.idl377
-rw-r--r--epan/dissectors/pidl/rfr/rfr.cnf1
-rw-r--r--epan/dissectors/pidl/rfr/rfr.idl53
-rw-r--r--epan/dissectors/pidl/samr/samr.cnf501
-rw-r--r--epan/dissectors/pidl/samr/samr.idl1542
-rw-r--r--epan/dissectors/pidl/srvsvc/srvsvc.cnf151
-rw-r--r--epan/dissectors/pidl/srvsvc/srvsvc.idl1567
-rw-r--r--epan/dissectors/pidl/svcctl/svcctl.cnf127
-rw-r--r--epan/dissectors/pidl/svcctl/svcctl.idl868
-rw-r--r--epan/dissectors/pidl/winreg/winreg.cnf234
-rw-r--r--epan/dissectors/pidl/winreg/winreg.idl460
-rw-r--r--epan/dissectors/pidl/winspool/winspool.cnf58
-rw-r--r--epan/dissectors/pidl/winspool/winspool.idl878
-rw-r--r--epan/dissectors/pidl/witness/witness.cnf240
-rw-r--r--epan/dissectors/pidl/witness/witness.idl152
-rw-r--r--epan/dissectors/pidl/wkssvc/wkssvc.cnf79
-rw-r--r--epan/dissectors/pidl/wkssvc/wkssvc.idl793
-rw-r--r--epan/dissectors/pidl/wzcsvc/wzcsvc.cnf2
-rw-r--r--epan/dissectors/pidl/wzcsvc/wzcsvc.idl31
63 files changed, 27608 insertions, 0 deletions
diff --git a/epan/dissectors/pidl/CMakeLists.txt b/epan/dissectors/pidl/CMakeLists.txt
new file mode 100644
index 00000000..2e4dc7ba
--- /dev/null
+++ b/epan/dissectors/pidl/CMakeLists.txt
@@ -0,0 +1,167 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+# TODO fix srvsvc wkssvc
+set(PIDL_DISSECTOR_NAMES
+ atsvc
+ clusapi
+ dfs
+ dnsserver
+ drsuapi
+ dssetup
+ efs
+ eventlog
+ frsrpc
+ frstrans
+ fsrvp
+ initshutdown
+ iwbemlevel1login
+ lsa
+ mapi
+ mdssvc
+ misc
+ nspi
+ rfr
+ samr
+ #srvsvc
+ svcctl
+ winreg
+ winspool
+ witness
+ #wkssvc
+ wzcsvc
+)
+
+set(PIDL_DISSECTOR_clusapi_EXTRA_DEPS
+ clusapi/clusapi.idl
+)
+set(PIDL_DISSECTOR_drsuapi_EXTRA_DEPS
+ misc/misc.idl
+)
+set(PIDL_DISSECTOR_dssetup_EXTRA_DEPS
+ misc/misc.idl
+)
+set(PIDL_DISSECTOR_eventlog_EXTRA_DEPS
+ idl_types.h
+)
+set(PIDL_DISSECTOR_frsrpc_EXTRA_DEPS
+ misc/misc.idl
+ idl_types.h
+)
+set(PIDL_DISSECTOR_frstrans_EXTRA_DEPS
+ misc/misc.idl
+ idl_types.h
+)
+set(PIDL_DISSECTOR_fsrvp_EXTRA_DEPS
+ idl_types.h
+)
+set(PIDL_DISSECTOR_initshutdown_EXTRA_DEPS
+ lsa/lsa.idl
+ idl_types.h
+)
+set(PIDL_DISSECTOR_iwbemlevel1login_EXTRA_DEPS
+ idl_types.h
+)
+set(PIDL_DISSECTOR_lsa_EXTRA_DEPS
+ idl_types.h
+)
+set(PIDL_DISSECTOR_mapi_EXTRA_DEPS
+ idl_types.h
+ mapicodes_enum.h
+ mapitags_enum.h
+)
+set(PIDL_DISSECTOR_mdssvc_EXTRA_DEPS
+ misc/misc.idl
+)
+set(PIDL_DISSECTOR_misc_EXTRA_DEPS
+ idl_types.h
+)
+set(PIDL_DISSECTOR_nspi_EXTRA_DEPS
+ idl_types.h
+ mapicodes_enum.h
+ mapitags_enum.h
+)
+set(PIDL_DISSECTOR_rfr_EXTRA_DEPS
+ idl_types.h
+ mapicodes_enum.h
+)
+set(PIDL_DISSECTOR_samr_EXTRA_DEPS
+ idl_types.h
+)
+set(PIDL_DISSECTOR_srvsvc_EXTRA_DEPS
+ idl_types.h
+)
+set(PIDL_DISSECTOR_winreg_EXTRA_DEPS
+ misc/misc.idl
+)
+set(PIDL_DISSECTOR_winspool_EXTRA_DEPS
+ idl_types.h
+ misc/misc.idl
+)
+set(PIDL_DISSECTOR_witness_EXTRA_DEPS
+ misc/misc.idl
+ idl_types.h
+)
+set(PIDL_DISSECTOR_wkssvc_EXTRA_DEPS
+ lsa/lsa.idl
+ srvsvc/srvsvc.idl
+ idl_types.h
+)
+
+set(PIDL_DISSECTOR_TARGETS)
+
+foreach(PROTOCOL_NAME IN LISTS PIDL_DISSECTOR_NAMES)
+ add_custom_command(
+ OUTPUT packet-dcerpc-${PROTOCOL_NAME}-stamp
+ COMMAND "${PERL_EXECUTABLE}"
+ "${CMAKE_SOURCE_DIR}/tools/pidl/pidl"
+ --ws-parser
+ --outputdir ../..
+ --includedir ..
+ --
+ ${PROTOCOL_NAME}.idl
+ COMMAND
+ "${CMAKE_COMMAND}" -E touch
+ "${CMAKE_CURRENT_BINARY_DIR}/packet-dcerpc-${PROTOCOL_NAME}-stamp"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}"
+ DEPENDS
+ "${CMAKE_SOURCE_DIR}/tools/pidl/pidl"
+ ${PROTOCOL_NAME}/${PROTOCOL_NAME}.idl
+ ${PROTOCOL_NAME}/${PROTOCOL_NAME}.cnf
+ ${PIDL_DISSECTOR_${PROTOCOL_NAME}_EXTRA_DEPS}
+ VERBATIM
+ )
+ add_custom_target(generate_dissector-dcerpc-${PROTOCOL_NAME}
+ DEPENDS packet-dcerpc-${PROTOCOL_NAME}-stamp
+ )
+ set_target_properties(generate_dissector-dcerpc-${PROTOCOL_NAME}
+ PROPERTIES FOLDER "Generated Dissectors/PIDL"
+ )
+ list(APPEND PIDL_DISSECTOR_TARGETS
+ generate_dissector-dcerpc-${PROTOCOL_NAME}
+ )
+endforeach()
+
+add_custom_target(pidl-dissectors ALL DEPENDS ${PIDL_DISSECTOR_TARGETS})
+set_target_properties(pidl-dissectors
+ PROPERTIES FOLDER "Generated Dissectors/PIDL"
+)
+
+#
+# Editor modelines - https://www.wireshark.org/tools/modelines.html
+#
+# Local variables:
+# c-basic-offset: 4
+# tab-width: 4
+# indent-tabs-mode: t
+# End:
+#
+# vi: set shiftwidth=4 tabstop=4 noexpandtab:
+# :indentSize=4:tabSize=4:noTabs=false:
+#
diff --git a/epan/dissectors/pidl/IDL_LICENSE.txt b/epan/dissectors/pidl/IDL_LICENSE.txt
new file mode 100644
index 00000000..01ae670b
--- /dev/null
+++ b/epan/dissectors/pidl/IDL_LICENSE.txt
@@ -0,0 +1,9 @@
+The IDL files in this directory are made available by the Samba Team
+under the following license:
+
+ Permission to use, copy, modify, and distribute these interface
+ definitions for any purpose is hereby granted without fee.
+
+ This work 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.
diff --git a/epan/dissectors/pidl/Makefile.pidl b/epan/dissectors/pidl/Makefile.pidl
new file mode 100644
index 00000000..458c4de4
--- /dev/null
+++ b/epan/dissectors/pidl/Makefile.pidl
@@ -0,0 +1,182 @@
+# Makefile
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 2004 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program 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. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+PIDL = ../../../../tools/pidl/pidl --ws-parser
+
+pidl_out = --outputdir ../..
+pidl_inc = --includedir ..
+
+SUBDIRS = \
+ atsvc \
+ clusapi \
+ dfs \
+ dnsserver \
+ dssetup \
+ efs \
+ eventlog \
+ frsrpc \
+ frstrans \
+ fsrvp \
+ initshutdown \
+ iwbemlevel1login \
+ lsa \
+ mapi \
+ mdssvc \
+ misc \
+ nspi \
+ rfr \
+ samr \
+ svcctl \
+ winreg \
+ winspool \
+ witness \
+ wzcsvc
+
+DONT_BUILD_SUBDIRS = \
+ srvsvc \
+ wkssvc
+
+all: $(SUBDIRS)
+
+.PHONY: $(SUBDIRS) $(DONT_BUILD_SUBDIRS)
+
+$(SUBDIRS) $(DONT_BUILD_SUBDIRS): %: ../packet-dcerpc-%.c ../packet-dcerpc-%.h
+
+../packet-dcerpc-atsvc.c \
+../packet-dcerpc-atsvc.h: atsvc/atsvc.idl atsvc/atsvc.cnf
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-clusapi.c \
+../packet-dcerpc-clusapi.h: clusapi/clusapi.idl clusapi/clusapi.cnf \
+ clusapi/clusapi.idl
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-dfs.c \
+../packet-dcerpc-dfs.h: dfs/dfs.idl dfs/dfs.cnf
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-dnsserver.c \
+../packet-dcerpc-dnsserver.h: dnsserver/dnsserver.idl dnsserver/dnsserver.cnf
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-dssetup.c \
+../packet-dcerpc-dssetup.h: dssetup/dssetup.idl misc/misc.idl
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-efs.c \
+../packet-dcerpc-efs.h: efs/efs.idl efs/efs.cnf
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-eventlog.c \
+../packet-dcerpc-eventlog.h: eventlog/eventlog.idl eventlog/eventlog.cnf \
+ idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-frsrpc.c \
+../packet-dcerpc-frsrpc.h: frsrpc/frsrpc.idl frsrpc/frsrpc.cnf \
+ misc/misc.idl idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-frstrans.c \
+../packet-dcerpc-frstrans.h: frstrans/frstrans.idl frstrans/frstrans.cnf \
+ misc/misc.idl idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-fsrvp.c \
+../packet-dcerpc-fsrvp.h: fsrvp/fsrvp.idl fsrvp/fsrvp.cnf \
+ idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-initshutdown.c \
+../packet-dcerpc-initshutdown.h: initshutdown/initshutdown.idl \
+ initshutdown/initshutdown.cnf \
+ lsa/lsa.idl idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-iwbemlevel1login.c \
+../packet-dcerpc-iwbemlevel1login.h: iwbemlevel1login/iwbemlevel1login.idl \
+ iwbemlevel1login/iwbemlevel1login.cnf \
+ idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-lsa.c \
+../packet-dcerpc-lsa.h: lsa/lsa.idl lsa/lsa.cnf idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-mapi.c \
+../packet-dcerpc-mapi.h: mapi/mapi.idl mapi/mapi.cnf \
+ idl_types.h mapicodes_enum.h mapitags_enum.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-mdssvc.c \
+../packet-dcerpc-mdssvc.h: mdssvc/mdssvc.idl mdssvc/mdssvc.cnf \
+ misc/misc.idl
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-misc.c \
+../packet-dcerpc-misc.h: misc/misc.idl misc/misc.cnf idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-nspi.c \
+../packet-dcerpc-nspi.h: nspi/nspi.idl nspi/nspi.cnf \
+ idl_types.h mapicodes_enum.h mapitags_enum.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-rfr.c \
+../packet-dcerpc-rfr.h: rfr/rfr.idl rfr/rfr.cnf \
+ idl_types.h mapicodes_enum.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-samr.c \
+../packet-dcerpc-samr.h: samr/samr.idl samr/samr.cnf idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-srvsvc.c \
+../packet-dcerpc-srvsvc.h: srvsvc/srvsvc.idl srvsvc/srvsvc.cnf idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-svcctl.c \
+../packet-dcerpc-svcctl.h: svcctl/svcctl.idl svcctl/svcctl.cnf
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-winreg.c \
+../packet-dcerpc-winreg.h: winreg/winreg.idl winreg/winreg.cnf \
+ misc/misc.idl
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-winspool.c \
+../packet-dcerpc-winspool.h: winspool/winspool.idl winspool/winspool.cnf \
+ misc/misc.idl
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-witness.c \
+../packet-dcerpc-witness.h: witness/witness.idl witness/witness.cnf \
+ misc/misc.idl idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-wkssvc.c \
+../packet-dcerpc-wkssvc.h: wkssvc/wkssvc.idl wkssvc/wkssvc.cnf \
+ lsa/lsa.idl srvsvc/srvsvc.idl \
+ idl_types.h
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
+
+../packet-dcerpc-wzcsvc.c \
+../packet-dcerpc-wzcsvc.h: wzcsvc/wzcsvc.idl wzcsvc/wzcsvc.cnf
+ cd $(<D) && $(PIDL) $(pidl_out) $(pidl_inc) -- $(<F)
diff --git a/epan/dissectors/pidl/README b/epan/dissectors/pidl/README
new file mode 100644
index 00000000..d9677b70
--- /dev/null
+++ b/epan/dissectors/pidl/README
@@ -0,0 +1,107 @@
+A note about PIDL generated files
+=================================
+
+Quick guide
+===========
+
+Run 'make -f Makefile.pidl all' inside the pidl folder to generate all the dissectors and place
+them in the epan/dissectors folder.
+
+Complete infos
+==============
+
+The following files:
+../packet-dcerpc-atsvc.h
+../packet-dcerpc-budb.c
+../packet-dcerpc-budb.h
+../packet-dcerpc-butc.c
+../packet-dcerpc-butc.h
+../packet-dcerpc-dfs.h
+../packet-dcerpc-dnsserver.h
+../packet-dcerpc-drsuapi.c
+../packet-dcerpc-drsuapi.h
+../packet-dcerpc-dssetup.h
+../packet-dcerpc-efs.h
+../packet-dcerpc-eventlog.h
+../packet-dcerpc-frsrpc.h
+../packet-dcerpc-frstrans.h
+../packet-dcerpc-initshutdown.h
+../packet-dcerpc-iwbemlevel1login.h
+../packet-dcerpc-lsa.h
+../packet-dcerpc-mapi.h
+../packet-dcerpc-misc.h
+../packet-dcerpc-nspi.h
+../packet-dcerpc-rfr.h
+../packet-dcerpc-samr.h
+../packet-dcerpc-srvsvc.h
+../packet-dcerpc-winreg.h
+../packet-dcerpc-wkssvc.h
+../packet-dcerpc-wzcsvc.h
+
+are automatically generated via a tool called "pidl"; you shouldn't
+modify them manually.
+
+The pidl tool is maintained by the Samba project (http://samba.org,
+samba-technical@samba.org). We have a version in ../../../tools/pidl;
+it currently differs from the Samba version only in its Wireshark-parser
+generator, as we had to change it to reflect some API differences
+between the current Wireshark release and the development trunk.
+
+The Samba version can be fetched from their git tree:
+ git clone git://git.samba.org/samba.git
+
+Running pidl
+============
+
+You have to run the pidl command inside the pidl folder of the wireshark
+source tree.
+
+The command to compile file:
+ ../../../tools/pidl/pidl --includedir . --ws-parser -- <idl-file>
+ ^^^
+ This is *VERY* important
+The command generates 2 files:
+ packet-dcerpc-<interfacename>.h
+ packet-dcerpc-<interfacename>.c
+
+For instance, with the atsvc.idl, the command will be:
+
+ ../../../tools/pidl/pidl --includedir . --ws-parser -- atsvc.idl
+
+This will generate 2 files:
+ packet-dcerpc-atsvc.h
+ packet-dcerpc-atsvc.c
+
+If you run outside the dissectors/pidl directory, this *will* result in a
+warning such as:
+
+ atsvc.idl:5:23: idl_types.h: No such file or directory
+
+and *may* result in additional warnings such as:
+
+ Warning: No conformance file `initshutdown.cnf'
+ Unable to handle string with flags STR_LEN4|STR_NOTERM at /usr/lib/perl5/site_perl/5.8.6/Parse/Pidl/Wireshark/NDR.pm line 283.
+
+Notes about the in-tree pidl
+============================
+
+To allow building Wireshark pidl dissectors without having to
+*explicitly* access a remote git repository, and to allow us to make
+changes to the Wireshark parser generator that the Samba developers
+might not want to make until a new major release of Wireshark comes out,
+so as to allow users to build dissectors to run in the current Wireshark
+release, a copy of pidl is located in tools/pidl.
+
+Not compiling idl
+=================
+As of September 26, 2014, the following idl have issues when generating
+and compiling:
+
+pidl complains that inline arrays aren't supported for these:
+
+ dnsserver.idl
+ eventlog.idl
+
+pidl generates possibly-incorrect code for these - this needs checking:
+
+ rfr/rfr.idl
diff --git a/epan/dissectors/pidl/atsvc/atsvc.cnf b/epan/dissectors/pidl/atsvc/atsvc.cnf
new file mode 100644
index 00000000..4359cb9f
--- /dev/null
+++ b/epan/dissectors/pidl/atsvc/atsvc.cnf
@@ -0,0 +1,13 @@
+HF_FIELD hf_atsvc_job_id "Job Id" "atsvc.job_id" FT_UINT32 BASE_DEC NULL 0 "Identifier of the scheduled job"
+HF_RENAME hf_atsvc_atsvc_JobAdd_job_id hf_atsvc_job_id
+HF_RENAME hf_atsvc_atsvc_JobEnumInfo_job_id hf_atsvc_job_id
+HF_RENAME hf_atsvc_atsvc_JobGetInfo_job_id hf_atsvc_job_id
+HF_FIELD hf_atsvc_servername "Server" "atsvc.server" FT_STRING BASE_NONE NULL 0 "Name of the server"
+HF_RENAME hf_atsvc_atsvc_JobEnum_servername hf_atsvc_servername
+HF_RENAME hf_atsvc_atsvc_JobDel_servername hf_atsvc_servername
+HF_RENAME hf_atsvc_atsvc_JobAdd_servername hf_atsvc_servername
+HF_RENAME hf_atsvc_atsvc_JobGetInfo_servername hf_atsvc_servername
+HF_FIELD hf_atsvc_job_info "JobInfo" "atcvs.job_info" FT_NONE BASE_NONE NULL 0 "JobInfo structure"
+HF_RENAME hf_atsvc_atsvc_JobGetInfo_job_info hf_atsvc_job_info
+HF_RENAME hf_atsvc_atsvc_JobAdd_job_info hf_atsvc_job_info
+
diff --git a/epan/dissectors/pidl/atsvc/atsvc.idl b/epan/dissectors/pidl/atsvc/atsvc.idl
new file mode 100644
index 00000000..75e1daa8
--- /dev/null
+++ b/epan/dissectors/pidl/atsvc/atsvc.idl
@@ -0,0 +1,119 @@
+/*
+ atsvc interface definition
+*/
+
+[ uuid("1ff70682-0a51-30e8-076d-740be8cee98b"),
+ version(1.0),
+ pointer_default(unique),
+ helpstring("Microsoft AT-Scheduler Service"),
+ endpoint("ncacn_np:[\\pipe\\atsvc]", "ncalrpc:")
+] interface atsvc
+{
+ typedef [bitmap32bit] bitmap {
+ First = 0x00000001,
+ Second = 0x00000002,
+ Third = 0x00000004,
+ Fourth = 0x00000008,
+ Fifth = 0x00000010,
+ Sixth = 0x00000020,
+ Seventh = 0x00000040,
+ Eight = 0x00000080,
+ Ninth = 0x00000100,
+ Tenth = 0x00000200,
+ Eleventh = 0x00000400,
+ Twelfth = 0x00000800,
+ Thitteenth = 0x00001000,
+ Fourteenth = 0x00002000,
+ Fifteenth = 0x00004000,
+ Sixteenth = 0x00008000,
+ Seventeenth = 0x00010000,
+ Eighteenth = 0x00020000,
+ Ninteenth = 0x00040000,
+ Twentyth = 0x00080000,
+ Twentyfirst = 0x00100000,
+ Twentysecond = 0x00200000,
+ Twentythird = 0x00400000,
+ Twentyfourth = 0x00800000,
+ Twentyfifth = 0x01000000,
+ Twentysixth = 0x02000000,
+ Twentyseventh = 0x04000000,
+ Twentyeighth = 0x08000000,
+ Twentyninth = 0x10000000,
+ Thirtieth = 0x20000000,
+ Thirtyfirst = 0x40000000
+ } atsvc_DaysOfMonth;
+
+ typedef [bitmap8bit] bitmap {
+ JOB_RUN_PERIODICALLY = 0x01,
+ JOB_EXEC_ERROR = 0x02,
+ JOB_RUNS_TODAY = 0x04,
+ JOB_ADD_CURRENT_DATE = 0x08,
+ JOB_NONINTERACTIVE = 0x10
+ } atsvc_Flags;
+
+ typedef [bitmap8bit] bitmap {
+ DAYSOFWEEK_MONDAY = 0x01,
+ DAYSOFWEEK_TUESDAY = 0x02,
+ DAYSOFWEEK_WEDNESDAY = 0x04,
+ DAYSOFWEEK_THURSDAY = 0x08,
+ DAYSOFWEEK_FRIDAY = 0x10,
+ DAYSOFWEEK_SATURDAY = 0x20,
+ DAYSOFWEEK_SUNDAY = 0x40
+ } atsvc_DaysOfWeek;
+
+ typedef struct {
+ uint32 job_time;
+ atsvc_DaysOfMonth days_of_month;
+ atsvc_DaysOfWeek days_of_week;
+ atsvc_Flags flags;
+ [string,charset(UTF16)] uint16 *command;
+ } atsvc_JobInfo;
+
+ /******************/
+ /* Function: 0x00 */
+ [public] NTSTATUS atsvc_JobAdd(
+ [in,unique,string,charset(UTF16)] uint16 *servername,
+ [in] atsvc_JobInfo *job_info,
+ [out,ref] uint32 *job_id
+ );
+
+ /******************/
+ /* Function: 0x01 */
+ [public] NTSTATUS atsvc_JobDel(
+ [in,unique,string,charset(UTF16)] uint16 *servername,
+ [in] uint32 min_job_id,
+ [in] uint32 max_job_id
+ );
+
+ typedef struct {
+ uint32 job_id;
+ uint32 job_time;
+ atsvc_DaysOfMonth days_of_month;
+ atsvc_DaysOfWeek days_of_week;
+ atsvc_Flags flags;
+ [string,charset(UTF16)] uint16 *command;
+ } atsvc_JobEnumInfo;
+
+ typedef struct {
+ uint32 entries_read;
+ [size_is(entries_read)] atsvc_JobEnumInfo *first_entry;
+ } atsvc_enum_ctr;
+
+ /******************/
+ /* Function: 0x02 */
+ [public] NTSTATUS atsvc_JobEnum(
+ [in,unique,string,charset(UTF16)] uint16 *servername,
+ [in,out] atsvc_enum_ctr *ctr,
+ [in] uint32 preferred_max_len,
+ [out,ref] uint32 *total_entries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x03 */
+ [public] NTSTATUS atsvc_JobGetInfo(
+ [in,unique,string,charset(UTF16)] uint16 *servername,
+ [in] uint32 job_id,
+ [out] atsvc_JobInfo **job_info
+ );
+}
diff --git a/epan/dissectors/pidl/clusapi/clusapi.cnf b/epan/dissectors/pidl/clusapi/clusapi.cnf
new file mode 100644
index 00000000..2a413e91
--- /dev/null
+++ b/epan/dissectors/pidl/clusapi/clusapi.cnf
@@ -0,0 +1,49 @@
+TYPE winreg_Type "offset = misc_dissect_enum_winreg_Type(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE winreg_AccessMask "offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_NONE BASE_NONE 0 NULL NULL
+
+#MANUAL clusapi_dissect_struct_PROPERTY_LIST
+#NOEMIT clusapi_dissect_element_PROPERTY_LIST_propertyValues_
+#
+#CODE START
+#
+#int
+#clusapi_dissect_struct_PROPERTY_LIST(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+#{
+# proto_item *item = NULL;
+# proto_tree *tree = NULL;
+# int old_offset;
+# guint32 i, count;
+#
+# ALIGN_TO_4_BYTES;
+#
+# ALIGN_TO_4_BYTES;
+#
+# old_offset = offset;
+#
+# if (parent_tree) {
+# item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+# tree = proto_item_add_subtree(item, ett_clusapi_clusapi_PROPERTY_LIST);
+# }
+#
+# count = tvb_get_letohl(tvb, offset);
+#
+# offset = clusapi_dissect_element_PROPERTY_LIST_propertyCount(tvb, offset, pinfo, tree, di, drep);
+#
+# for (i=0; i < count; i++) {
+# offset = clusapi_dissect_element_PROPERTY_LIST_propertyValues(tvb, offset, pinfo, tree, di, drep);
+# }
+#
+# offset = clusapi_dissect_element_PROPERTY_LIST_end_mark(tvb, offset, pinfo, tree, di, drep);
+#
+#
+# proto_item_set_len(item, offset-old_offset);
+#
+#
+# if (di->call_data->flags & DCERPC_IS_NDR64) {
+# ALIGN_TO_4_BYTES;
+# }
+#
+# return offset;
+#}
+#
+#CODE END
diff --git a/epan/dissectors/pidl/clusapi/clusapi.idl b/epan/dissectors/pidl/clusapi/clusapi.idl
new file mode 100644
index 00000000..ea9c2b67
--- /dev/null
+++ b/epan/dissectors/pidl/clusapi/clusapi.idl
@@ -0,0 +1,2918 @@
+import "winreg.idl", "misc.idl";
+
+#include "idl_types.h"
+
+[
+ uuid("b97db8b2-4c63-11cf-bff6-08002be23f2f"),
+ version(3.0),
+ pointer_default(unique),
+ endpoint("ncacn_ip_tcp:"),
+ authservice("MSServerClusterMgmtAPI"),
+ helpstring("Failover Cluster Management API (clusapi)")
+]
+#define MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE 0x7FFFFFFF
+ interface clusapi
+{
+#if 0
+ /*
+ * pidl does not yet have a real [context_handle] implementation, so we
+ * just use some defines here.
+ */
+
+ typedef [context_handle] void *HCLUSTER_RPC;
+ typedef [context_handle] void *HNODE_RPC;
+ typedef [context_handle] void *HGROUP_RPC;
+ typedef [context_handle] void *HRES_RPC;
+ typedef [context_handle] void *HKEY_RPC;
+ typedef [context_handle] void *HNOTIFY_RPC;
+ typedef [context_handle] void *HNETWORK_RPC;
+ typedef [context_handle] void *HNETINTERFACE_RPC;
+ typedef [context_handle] void *HBATCH_PORT_RPC;
+#else
+#define HCLUSTER_RPC policy_handle
+#define HNODE_RPC policy_handle
+#define HGROUP_RPC policy_handle
+#define HRES_RPC policy_handle
+#define HKEY_RPC policy_handle
+#define HNOTIFY_RPC policy_handle
+#define HNETWORK_RPC policy_handle
+#define HNETINTERFACE_RPC policy_handle
+#define HBATCH_PORT_RPC policy_handle
+#endif
+
+ typedef struct {
+ [ size_is( cbInSecurityDescriptor ), length_is( cbOutSecurityDescriptor ) ] uint8 *lpSecurityDescriptor;
+ uint32 cbInSecurityDescriptor;
+ uint32 cbOutSecurityDescriptor;
+ } RPC_SECURITY_DESCRIPTOR;
+
+ typedef struct {
+ uint32 nLength;
+ RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
+ long bInheritHandle;
+ } RPC_SECURITY_ATTRIBUTES;
+
+ typedef struct {
+ [value(20)] uint32 dwSize;
+ uint32 dwClusterHighestVersion;
+ uint32 dwClusterLowestVersion;
+ uint32 dwFlags;
+ uint32 dwReserved;
+ } CLUSTER_OPERATIONAL_VERSION_INFO;
+
+ typedef struct {
+ uint32 NodeId;
+ boolean8 SetAttempted;
+ uint32 ReturnStatus;
+ } IDL_CLUSTER_SET_PASSWORD_STATUS;
+
+ typedef enum {
+ IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
+ } IDL_CLUSTER_SET_PASSWORD_FLAGS;
+
+ typedef struct {
+ uint32 dwVersion;
+ uint32 dwGroupType;
+ } CLUSTER_CREATE_GROUP_INFO_RPC;
+
+ /*****************/
+ /* Function 0x00 */
+
+#if 0
+ /*
+ * pidl cannot generate code for functions that return structures in
+ * IDL, therefore pretend the function is void and add the returned
+ * structure as an out parameter. This is what we do with pretty much
+ * all the Open calls right now in this interface - gd
+ */
+
+ HCLUSTER_RPC
+ clusapi_OpenCluster(
+ [ out ] WERROR *Status
+ );
+#else
+ void
+ clusapi_OpenCluster(
+ [ out ] WERROR *Status,
+ [ out ] HCLUSTER_RPC *Cluster
+ );
+#endif
+
+ /*****************/
+ /* Function 0x01 */
+
+ WERROR
+ clusapi_CloseCluster(
+ [ in, out ] HCLUSTER_RPC *Cluster
+ );
+
+ /*****************/
+ /* Function 0x02 */
+
+ WERROR
+ clusapi_SetClusterName(
+ [ in, string ] [charset(UTF16)] uint16 *NewClusterName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x03 */
+
+ WERROR
+ clusapi_GetClusterName(
+ [ out, string ] [charset(UTF16)] uint16 **ClusterName,
+ [ out, string ] [charset(UTF16)] uint16 **NodeName
+ );
+
+ /*****************/
+ /* Function 0x04 */
+
+ WERROR
+ clusapi_GetClusterVersion(
+ [ out ] uint16 *lpwMajorVersion,
+ [ out ] uint16 *lpwMinorVersion,
+ [ out ] uint16 *lpwBuildNumber,
+ [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
+ [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion
+ );
+
+ /*****************/
+ /* Function 0x05 */
+
+ WERROR
+ clusapi_GetQuorumResource(
+ [ out, string ] [charset(UTF16)] uint16 **lpszResourceName,
+ [ out, string ] [charset(UTF16)] uint16 **lpszDeviceName,
+ [ out ] uint32 *pdwMaxQuorumLogSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x06 */
+
+ WERROR
+ clusapi_SetQuorumResource(
+ [ in ] HRES_RPC hResource,
+ [ in, string ] [charset(UTF16)] uint16 *lpszDeviceName,
+ [ in ] uint32 dwMaxQuorumLogSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ typedef [bitmap32bit] bitmap {
+ CLUSTER_ENUM_NODE = 0x00000001,
+ CLUSTER_ENUM_RESTYPE = 0x00000002,
+ CLUSTER_ENUM_RESOURCE = 0x00000004,
+ CLUSTER_ENUM_GROUP = 0x00000008,
+ CLUSTER_ENUM_NETWORK = 0x00000010,
+ CLUSTER_ENUM_NETINTERFACE = 0x00000020,
+ CLUSTER_ENUM_INTERNAL_NETWORK = 0x80000000,
+ CLUSTER_ENUM_SHARED_VOLUME_RESOURCE = 0x40000000
+ } ClusterEnumType;
+
+ typedef struct {
+ ClusterEnumType Type;
+ [string] [charset(UTF16)] uint16 *Name;
+ } ENUM_ENTRY;
+
+ typedef struct {
+ uint32 EntryCount;
+ [size_is(EntryCount)] ENUM_ENTRY Entry[*];
+ } ENUM_LIST;
+
+ typedef struct {
+ [string] [charset(UTF16)] uint16 *Name;
+ [string] [charset(UTF16)] uint16 *Id;
+ uint32 dwState;
+ [string] [charset(UTF16)] uint16 *Owner;
+ uint32 dwFlags;
+ uint32 cbProperties;
+ [size_is(cbProperties)] uint8* Properties;
+ uint32 cbRoProperties;
+ [size_is(cbRoProperties)] uint8* RoProperties;
+ } GROUP_ENUM_ENTRY;
+
+ typedef struct {
+ [string] [charset(UTF16)] uint16 *Name;
+ [string] [charset(UTF16)] uint16 *Id;
+ [string] [charset(UTF16)] uint16 *OwnerName;
+ [string] [charset(UTF16)] uint16 *OwnerId;
+ uint32 cbProperties;
+ [size_is(cbProperties)] uint8* Properties;
+ uint32 cbRoProperties;
+ [size_is(cbRoProperties)] uint8* RoProperties;
+ } RESOURCE_ENUM_ENTRY;
+
+ typedef struct {
+ uint32 EntryCount;
+ [size_is(EntryCount)] GROUP_ENUM_ENTRY Entry[*];
+ } GROUP_ENUM_LIST;
+
+ typedef struct {
+ uint32 EntryCount;
+ [size_is(EntryCount)] RESOURCE_ENUM_ENTRY Entry[*];
+ } RESOURCE_ENUM_LIST;
+
+ /*****************/
+ /* Function 0x07 */
+
+ WERROR
+ clusapi_CreateEnum(
+ [ in ] ClusterEnumType dwType,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x08 */
+
+#if 0
+ HRES_RPC
+ clusapi_OpenResource(
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenResource(
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HRES_RPC *hResource
+ );
+#endif
+ /*****************/
+ /* Function 0x09 */
+
+ typedef [v1_enum] enum {
+ CLUSTER_RESOURCE_DEFAULT_MONITOR = 0x00000000,
+ CLUSTER_RESOURCE_SEPARATE_MONITOR = 0x00000001
+ } clusapi_CreateResourceFlags;
+
+#if 0
+ HRES_RPC
+ clusapi_CreateResource(
+ [ in ] HGROUP_RPC hGroup,
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
+ [ in ] clusapi_CreateResourceFlags dwFlags,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateResource(
+ [ in ] HGROUP_RPC hGroup,
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceType,
+ [ in ] clusapi_CreateResourceFlags dwFlags,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HRES_RPC *hResource
+ );
+#endif
+ /*****************/
+ /* Function 0x0A */
+
+ WERROR
+ clusapi_DeleteResource(
+ [ in ] HRES_RPC hResource,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x0B */
+
+ WERROR
+ clusapi_CloseResource(
+ [ in, out ] HRES_RPC *Resource
+ );
+
+ /*****************/
+ /* Function 0x0C */
+
+ typedef [v1_enum] enum {
+ ClusterResourceInitializing = 0x00000001,
+ ClusterResourceOnline = 0x00000002,
+ ClusterResourceOffline = 0x00000003,
+ ClusterResourceFailed = 0x00000004,
+ ClusterResourceOnlinePending = 0x00000081,
+ ClusterResourceOfflinePending = 0x00000082,
+ ClusterResourceStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterResourceState;
+
+ WERROR
+ clusapi_GetResourceState(
+ [ in ] HRES_RPC hResource,
+ [ out ] clusapi_ClusterResourceState *State,
+ [ out, string ] [charset(UTF16)] uint16 **NodeName,
+ [ out, string ] [charset(UTF16)] uint16 **GroupName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x0D */
+
+ WERROR
+ clusapi_SetResourceName(
+ [ in ] HRES_RPC hResource,
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x0E */
+
+ WERROR
+ clusapi_GetResourceId(
+ [ in ] HRES_RPC hResource,
+ [ out, string ] [charset(UTF16)] uint16 **pGuid,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x0F */
+
+ WERROR
+ clusapi_GetResourceType(
+ [ in ] HRES_RPC hResource,
+ [ out, string ] [charset(UTF16)] uint16 **lpszResourceType,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x10 */
+
+ WERROR
+ clusapi_FailResource(
+ [ in ] HRES_RPC hResource,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x11 */
+
+ WERROR
+ clusapi_OnlineResource(
+ [ in ] HRES_RPC hResource,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x12 */
+
+ WERROR
+ clusapi_OfflineResource(
+ [ in ] HRES_RPC hResource,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x13 */
+
+ WERROR
+ clusapi_AddResourceDependency(
+ [ in ] HRES_RPC hResource,
+ [ in ] HRES_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x14 */
+
+ WERROR
+ clusapi_RemoveResourceDependency(
+ [ in ] HRES_RPC hResource,
+ [ in ] HRES_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x15 */
+
+ WERROR
+ clusapi_CanResourceBeDependent(
+ [ in ] HRES_RPC hResource,
+ [ in ] HRES_RPC hResourceDependent,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x16 */
+
+ WERROR
+ clusapi_CreateResEnum(
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwType,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x17 */
+
+ WERROR
+ clusapi_AddResourceNode(
+ [ in ] HRES_RPC hResource,
+ [ in ] HNODE_RPC hNode,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x18 */
+
+ WERROR
+ clusapi_RemoveResourceNode(
+ [ in ] HRES_RPC hResource,
+ [ in ] HNODE_RPC hNode,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x19 */
+
+ WERROR
+ clusapi_ChangeResourceGroup(
+ [ in ] HRES_RPC hResource,
+ [ in ] HGROUP_RPC hGroup,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x1A */
+
+ WERROR
+ clusapi_CreateResourceType(
+ [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
+ [ in, string ] [charset(UTF16)] uint16 *lpszDisplayName,
+ [ in, string ] [charset(UTF16)] uint16 *lpszDllName,
+ [ in ] uint32 dwLooksAlive,
+ [ in ] uint32 dwIsAlive,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x1B */
+
+ WERROR
+ clusapi_DeleteResourceType(
+ [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x1C */
+#if 0
+ HKEY_RPC
+ clusapi_GetRootKey(
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_GetRootKey(
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HKEY_RPC *phKey
+ );
+#endif
+ /*****************/
+ /* Function 0x1D */
+#if 0
+ HKEY_RPC
+ clusapi_CreateKey(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
+ [ in ] uint32 dwOptions,
+ [ in ] winreg_AccessMask samDesired,
+ [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
+ [ out ] uint32 *lpdwDisposition,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateKey(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
+ [ in ] uint32 dwOptions,
+ [ in ] winreg_AccessMask samDesired,
+ [ in, unique ] RPC_SECURITY_ATTRIBUTES *lpSecurityAttributes,
+ [ out ] uint32 *lpdwDisposition,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HKEY_RPC *phKey
+ );
+#endif
+ /*****************/
+ /* Function 0x1E */
+#if 0
+ HKEY_RPC
+ clusapi_OpenKey(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenKey(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
+ [ in ] winreg_AccessMask samDesired,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HKEY_RPC *phKey
+ );
+#endif
+ /*****************/
+ /* Function 0x1F */
+
+ WERROR
+ clusapi_EnumKey(
+ [ in ] HKEY_RPC hKey,
+ [ in ] uint32 dwIndex,
+ [ out, string ] [charset(UTF16)] uint16 **KeyName,
+ [ out ] NTTIME *lpftLastWriteTime,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x20 */
+
+ WERROR
+ clusapi_SetValue(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpValueName,
+ [ in ] winreg_Type dwType,
+ [ in, size_is(cbData) ] uint8 *lpData,
+ [ in ] uint32 cbData,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x21 */
+
+ WERROR
+ clusapi_DeleteValue(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpValueName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x22 */
+
+ WERROR
+ clusapi_QueryValue(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpValueName,
+ [ out ] winreg_Type *lpValueType,
+ [ out, size_is(cbData) ] uint8 *lpData,
+ [ in ] uint32 cbData,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x23 */
+
+ WERROR
+ clusapi_DeleteKey(
+ [ in ] HKEY_RPC hKey,
+ [ in, string ] [charset(UTF16)] uint16 *lpSubKey,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x24 */
+
+ WERROR
+ clusapi_EnumValue(
+ [ in ] HKEY_RPC hKey,
+ [ in ] uint32 dwIndex,
+ [ out, string ] [charset(UTF16)] uint16 **lpValueName,
+ [ out ] winreg_Type *lpType,
+ [ out, size_is(*lpcbData) ] uint8 *lpData,
+ [ in, out ] uint32 *lpcbData,
+ [ out ] uint32 *TotalSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x25 */
+
+ WERROR
+ clusapi_CloseKey(
+ [ in, out ] HKEY_RPC *pKey
+ );
+
+ /*****************/
+ /* Function 0x26 */
+
+ WERROR
+ clusapi_QueryInfoKey(
+ [ in ] HKEY_RPC hKey,
+ [ out ] uint32 *lpcSubKeys,
+ [ out ] uint32 *lpcbMaxSubKeyLen,
+ [ out ] uint32 *lpcValues,
+ [ out ] uint32 *lpcbMaxValueNameLen,
+ [ out ] uint32 *lpcbMaxValueLen,
+ [ out ] uint32 *lpcbSecurityDescriptor,
+ [ out ] NTTIME *lpftLastWriteTime,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x27 */
+
+ WERROR
+ clusapi_SetKeySecurity(
+ [ in ] HKEY_RPC hKey,
+ [ in ] uint32 SecurityInformation,
+ [ in ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x28 */
+
+ WERROR
+ clusapi_GetKeySecurity(
+ [ in ] HKEY_RPC hKey,
+ [ in ] uint32 SecurityInformation,
+ [ in, out ] RPC_SECURITY_DESCRIPTOR *pRpcSecurityDescriptor,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x29 */
+#if 0
+ HGROUP_RPC
+ clusapi_OpenGroup(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenGroup(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUP_RPC *hGroup
+ );
+#endif
+ /*****************/
+ /* Function 0x2A */
+#if 0
+ HGROUP_RPC
+ clusapi_CreateGroup(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateGroup(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUP_RPC *hGroup
+ );
+#endif
+ /*****************/
+ /* Function 0x2B */
+
+ WERROR
+ clusapi_DeleteGroup(
+ [ in ] HGROUP_RPC Group,
+ [ in ] boolean8 force,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x2C */
+
+ WERROR
+ clusapi_CloseGroup(
+ [ in, out ] HGROUP_RPC *Group
+ );
+
+ /*****************/
+ /* Function 0x2D */
+
+ typedef [v1_enum] enum {
+ ClusterGroupOnline = 0x00000000,
+ ClusterGroupOffline = 0x00000001,
+ ClusterGroupFailed = 0x00000002,
+ ClusterGroupPartialOnline = 0x00000003,
+ ClusterGroupPending = 0x00000004,
+ ClusterGroupStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterGroupState;
+
+ WERROR
+ clusapi_GetGroupState(
+ [ in ] HGROUP_RPC hGroup,
+ [ out ] clusapi_ClusterGroupState *State,
+ [ out, string ] [charset(UTF16)] uint16 **NodeName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x2E */
+
+ WERROR
+ clusapi_SetGroupName(
+ [ in ] HGROUP_RPC hGroup,
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x2F */
+
+ WERROR
+ clusapi_GetGroupId(
+ [ in ] HGROUP_RPC hGroup,
+ [ out, string ] [charset(UTF16)] uint16 **pGuid,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x30 */
+
+ WERROR
+ clusapi_GetNodeId(
+ [ in ] HNODE_RPC hNode,
+ [ out, string ] [charset(UTF16)] uint16 **pGuid,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x31 */
+
+ WERROR
+ clusapi_OnlineGroup(
+ [ in ] HGROUP_RPC hGroup,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x32 */
+
+ WERROR
+ clusapi_OfflineGroup(
+ [ in ] HGROUP_RPC hGroup,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x33 */
+
+ WERROR
+ clusapi_MoveGroup(
+ [ in ] HGROUP_RPC hGroup,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x34 */
+
+ WERROR
+ clusapi_MoveGroupToNode(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] HNODE_RPC hNode,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x35 */
+
+ typedef [bitmap32bit] bitmap {
+ CLUSTER_GROUP_ENUM_CONTAINS = 0x00000001,
+ CLUSTER_GROUP_ENUM_NODES = 0x00000002
+ } ClusterGroupEnumType;
+
+ WERROR
+ clusapi_CreateGroupResourceEnum(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] ClusterGroupEnumType dwType,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x36 */
+
+ WERROR
+ clusapi_SetGroupNodeList(
+ [ in ] HGROUP_RPC hGroup,
+ [ in, unique, size_is(cchListSize) ] uint16 *multiSzNodeList,
+ [ in ] uint32 cchListSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x37 */
+#if 0
+ HNOTIFY_RPC
+ clusapi_CreateNotify(
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateNotify(
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNOTIFY_RPC *hNotify
+ );
+#endif
+ /*****************/
+ /* Function 0x38 */
+
+ WERROR
+ clusapi_CloseNotify(
+ [ in, out ] HNOTIFY_RPC *Notify
+ );
+
+ /*****************/
+ /* Function 0x39 */
+
+ WERROR
+ clusapi_AddNotifyCluster(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x3A */
+
+ WERROR
+ clusapi_AddNotifyNode(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ out ] uint32 *dwStateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x3B */
+
+ WERROR
+ clusapi_AddNotifyGroup(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ out ] uint32 *dwStateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x3C */
+
+ WERROR
+ clusapi_AddNotifyResource(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ out ] uint32 *dwStateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x3D */
+
+ WERROR
+ clusapi_AddNotifyKey(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HKEY_RPC hKey,
+ [ in ] uint32 dwNotifyKey,
+ [ in ] uint32 Filter,
+ [ in ] boolean8 WatchSubTree,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x3E */
+
+ WERROR
+ clusapi_ReAddNotifyNode(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ in ] uint32 StateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x3F */
+
+ WERROR
+ clusapi_ReAddNotifyGroup(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ in ] uint32 StateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x40 */
+
+ WERROR
+ clusapi_ReAddNotifyResource(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ in ] uint32 StateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x41 */
+
+ WERROR
+ clusapi_GetNotify(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ out ] uint32 *dwNotifyKey,
+ [ out ] uint32 *dwFilter,
+ [ out ] uint32 *dwStateSequence,
+ [ out, string ] [charset(UTF16)] uint16 **Name,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x42 */
+#if 0
+ HNODE_RPC
+ clusapi_OpenNode(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenNode(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNODE_RPC *hNode
+ );
+#endif
+ /*****************/
+ /* Function 0x43 */
+
+ WERROR
+ clusapi_CloseNode(
+ [ in, out ] HNODE_RPC *Node
+ );
+
+ /*****************/
+ /* Function 0x44 */
+
+ typedef [v1_enum] enum {
+ ClusterNodeUp = 0x00000000,
+ ClusterNodeDown = 0x00000001,
+ ClusterNodePaused = 0x00000002,
+ ClusterNodeJoining = 0x00000003,
+ ClusterNodeStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterNodeState;
+
+ WERROR
+ clusapi_GetNodeState(
+ [ in ] HNODE_RPC hNode,
+ [ out ] clusapi_ClusterNodeState *State,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x45 */
+
+ WERROR
+ clusapi_PauseNode(
+ [ in ] HNODE_RPC hNode,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x46 */
+
+ WERROR
+ clusapi_ResumeNode(
+ [ in ] HNODE_RPC hNode,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x47 */
+
+ WERROR
+ clusapi_EvictNode(
+ [ in ] HNODE_RPC hNode,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x48 */
+
+ WERROR
+ clusapi_NodeResourceControl(
+ [ in ] HRES_RPC hResource,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x49 */
+
+ typedef [v1_enum] enum {
+ CLUS_RESCLASS_UNKNOWN = 0x00000000,
+ CLUS_RESCLASS_STORAGE = 0x00000001,
+ CLUS_RESCLASS_NETWORK = 0x00000002
+ } clusapi_ResourceClass;
+
+ typedef [public] struct {
+ clusapi_ResourceClass Class;
+ uint32 SubClass;
+ } CLUS_RESOURCE_CLASS_INFO;
+
+ typedef [v1_enum] enum {
+ CLUSCTL_RESOURCE_UNKNOWN = 0x01000000,
+ CLUSCTL_RESOURCE_GET_CHARACTERISTICS = 0x01000005,
+ CLUSCTL_RESOURCE_GET_FLAGS = 0x01000009,
+ CLUSCTL_RESOURCE_GET_CLASS_INFO = 0x0100000D,
+ CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES = 0x01000011,
+ CLUSCTL_RESOURCE_GET_NAME = 0x01000029,
+ CLUSCTL_RESOURCE_GET_RESOURCE_TYPE = 0x0100002D,
+ CLUSCTL_RESOURCE_GET_ID = 0x01000039,
+ CLUSCTL_RESOURCE_ENUM_COMMON_PROPERTIES = 0x01000051,
+ CLUSCTL_RESOURCE_GET_RO_COMMON_PROPERTIES = 0x01000055,
+ CLUSCTL_RESOURCE_GET_COMMON_PROPERTIES = 0x01000059,
+ CLUSCTL_RESOURCE_SET_COMMON_PROPERTIES = 0x0140005E,
+ CLUSCTL_RESOURCE_VALIDATE_COMMON_PROPERTIES = 0x01000061,
+ CLUSCTL_RESOURCE_GET_COMMON_PROPERTY_FMTS = 0x01000065,
+ CLUSCTL_RESOURCE_ENUM_PRIVATE_PROPERTIES = 0x01000079,
+ CLUSCTL_RESOURCE_GET_RO_PRIVATE_PROPERTIES = 0x0100007D,
+ CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES = 0x01000081,
+ CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES = 0x01400086,
+ CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES = 0x01000089,
+ CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTY_FMTS = 0x0100008D,
+ CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT = 0x014000A2,
+ CLUSCTL_RESOURCE_DELETE_REGISTRY_CHECKPOINT = 0x014000A6,
+ CLUSCTL_RESOURCE_GET_REGISTRY_CHECKPOINTS = 0x010000A9,
+ CLUSCTL_RESOURCE_ADD_CRYPTO_CHECKPOINT = 0x014000AE,
+ CLUSCTL_RESOURCE_DELETE_CRYPTO_CHECKPOINT = 0x014000B2,
+ CLUSCTL_RESOURCE_GET_CRYPTO_CHECKPOINTS = 0x010000B5,
+ CLUSCTL_RESOURCE_UPGRADE_DLL = 0x014000BA,
+ CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_64BIT = 0x014000BE,
+ CLUSCTL_RESOURCE_ADD_REGISTRY_CHECKPOINT_32BIT = 0x014000C2,
+ CLUSCTL_RESOURCE_GET_NETWORK_NAME = 0x01000169,
+ CLUSCTL_RESOURCE_NETNAME_REGISTER_DNS_RECORDS = 0x01000172,
+ CLUSCTL_RESOURCE_GET_DNS_NAME = 0x01000175,
+ CLUSCTL_RESOURCE_NETNAME_SET_PWD_INFO = 0x0100017A,
+ CLUSCTL_RESOURCE_NETNAME_DELETE_CO = 0x0100017E,
+ CLUSCTL_RESOURCE_NETNAME_VALIDATE_VCO = 0x01000181,
+ CLUSCTL_RESOURCE_NETNAME_RESET_VCO = 0x01000185,
+ CLUSCTL_RESOURCE_NETNAME_CREDS_UPDATED = 0x01c0018a,
+ CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO = 0x01000191,
+ CLUSCTL_RESOURCE_STORAGE_IS_PATH_VALID = 0x01000199,
+ CLUSCTL_RESOURCE_IPADDRESS_RENEW_LEASE = 0x014001BE,
+ CLUSCTL_RESOURCE_IPADDRESS_RELEASE_LEASE = 0x014001C2,
+ CLUSCTL_RESOURCE_QUERY_MAINTENANCE_MODE = 0x010001E1,
+ CLUSCTL_RESOURCE_SET_MAINTENANCE_MODE = 0x014001E6,
+ CLUSCTL_RESOURCE_STORAGE_SET_DRIVELETTER = 0x014001EA,
+ CLUSCTL_RESOURCE_STORAGE_GET_DISK_INFO_EX = 0x010001F1,
+ CLUSCTL_RESOURCE_STORAGE_GET_DIRTY = 0x01000219,
+ CLUSCTL_RESOURCE_STORAGE_GET_MOUNTPOINTS = 0x01000211,
+ CLUSCTL_RESOURCE_STORAGE_GET_SHARED_VOLUME_INFO = 0x01000225,
+ CLUSCTL_RESOURCE_VM_START_MIGRATION = 0x01600004,
+ CLUSCTL_RESOURCE_VM_CANCEL_MIGRATION = 0x01600008,
+ CLUSCTL_RESOURCE_SET_CSV_MAINTENANCE_MODE = 0x01400296,
+ CLUSCTL_RESOURCE_ENABLE_SHARED_VOLUME_DIRECTIO = 0x0140028a,
+ CLUSCTL_RESOURCE_DISABLE_SHARED_VOLUME_DIRECTIO = 0x0140028e,
+ CLUSCTL_RESOURCE_SET_SHARED_VOLUME_BACKUP_MODE = 0x0140029a,
+ CLUSCTL_RESOURCE_GET_RELATED_RESOURCE_NAMES = 0x01001fad,
+ CLUSCTL_RESOURCE_POOL_GET_DRIVE_INFO = 0x010002b5,
+ CLUSCTL_RESOURCE_CLOUD_WITNESS_UPDATE_TOKEN = 0x014020e6,
+ CLUSCTL_RESOURCE_NETNAME_CHECK_OU_PERMISSIONS = 0x07002121,
+ CLUSCTL_RESOURCE_NETNAME_CHECK_AD_STATE = 0x07002125
+ } clusapi_ResourceControlCode;
+
+ WERROR
+ clusapi_ResourceControl(
+ [ in ] HRES_RPC hResource,
+ [ in ] clusapi_ResourceControlCode dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x4A */
+
+ WERROR
+ clusapi_NodeResourceTypeControl(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x4B */
+
+ typedef [v1_enum] enum {
+ CLUSCTL_RESOURCE_TYPE_UNKNOWN = 0x02000000,
+ CLUSCTL_RESOURCE_TYPE_GET_CHARACTERISTICS = 0x02000005,
+ CLUSCTL_RESOURCE_TYPE_GET_FLAGS = 0x02000009,
+ CLUSCTL_RESOURCE_TYPE_GET_CLASS_INFO = 0x0200000D,
+ CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES = 0x02000011,
+ CLUSCTL_RESOURCE_TYPE_GET_ARB_TIMEOUT = 0x02000015,
+ CLUSCTL_RESOURCE_TYPE_ENUM_COMMON_PROPERTIES = 0x02000051,
+ CLUSCTL_RESOURCE_TYPE_GET_RO_COMMON_PROPERTIES = 0x02000055,
+ CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTIES = 0x02000059,
+ CLUSCTL_RESOURCE_TYPE_SET_COMMON_PROPERTIES = 0x0240005E,
+ CLUSCTL_RESOURCE_TYPE_VALIDATE_COMMON_PROPERTIES = 0x02000061,
+ CLUSCTL_RESOURCE_TYPE_GET_COMMON_PROPERTY_FMTS = 0x02000065,
+ CLUSCTL_RESOURCE_TYPE_GET_COMMON_RESOURCE_PROPERTY_FMTS = 0x02000069,
+ CLUSCTL_RESOURCE_TYPE_ENUM_PRIVATE_PROPERTIES = 0x02000079,
+ CLUSCTL_RESOURCE_TYPE_GET_RO_PRIVATE_PROPERTIES = 0x0200007D,
+ CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES = 0x02000081,
+ CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES = 0x02400086,
+ CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES = 0x02000089,
+ CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTY_FMTS = 0x0200008D,
+ CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_RESOURCE_PROPERTY_FMTS= 0x02000091,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS = 0x02000195,
+ CLUSCTL_RESOURCE_TYPE_NETNAME_VALIDATE_NETNAME = 0x02000235,
+ CLUSCTL_RESOURCE_TYPE_VALIDATE_PATH = 0x02000231,
+ CLUSCTL_RESOURCE_TYPE_GEN_APP_VALIDATE_DIRECTORY = 0x02000239,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DRIVELETTERS = 0x020001ED,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_AVAILABLE_DISKS_EX = 0x020001F5,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_REMAP_DRIVELETTER = 0x02000201,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID = 0x02000205,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE = 0x02000209,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_RELEASE_OWNERSHIP = 0x0240020E,
+ CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CSV_FILE = 0x1000229,
+ CLUSCTL_RESOURCE_TYPE_CLOUD_WITNESS_VALIDATE_CREDENTIALS= 0x020020e1,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_LOGDISKS = 0x02002149,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_TARGET_DATADISKS = 0x0200214D,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_ELIGIBLE_SOURCE_DATADISKS = 0x02002151,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICA_VOLUMES = 0x02002159,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_LOG_VOLUME = 0x0200215D,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_REPLICATED_DISKS = 0x02002155,
+ CLUSCTL_RESOURCE_TYPE_REPLICATION_GET_RESOURCE_GROUP = 0x02002161
+ } clusapi_ResourceTypeControlCode;
+
+ WERROR
+ clusapi_ResourceTypeControl(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceTypeName,
+ [ in ] clusapi_ResourceTypeControlCode dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x4C */
+
+ WERROR
+ clusapi_NodeGroupControl(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x4D */
+
+ typedef [v1_enum] enum {
+ CLUSCTL_GROUP_UNKNOWN = 0x03000000,
+ CLUSCTL_GROUP_GET_CHARACTERISTICS = 0x03000005,
+ CLUSCTL_GROUP_GET_FLAGS = 0x03000009,
+ CLUSCTL_GROUP_GET_NAME = 0x03000029,
+ CLUSCTL_GROUP_GET_ID = 0x03000039,
+ CLUSCTL_GROUP_ENUM_COMMON_PROPERTIES = 0x03000051,
+ CLUSCTL_GROUP_GET_RO_COMMON_PROPERTIES = 0x03000055,
+ CLUSCTL_GROUP_GET_COMMON_PROPERTIES = 0x03000059,
+ CLUSCTL_GROUP_SET_COMMON_PROPERTIES = 0x0340005E,
+ CLUSCTL_GROUP_VALIDATE_COMMON_PROPERTIES = 0x03000061,
+ CLUSCTL_GROUP_GET_COMMON_PROPERTY_FMTS = 0x03000065,
+ CLUSCTL_GROUP_ENUM_PRIVATE_PROPERTIES = 0x03000079,
+ CLUSCTL_GROUP_GET_RO_PRIVATE_PROPERTIES = 0x0300007D,
+ CLUSCTL_GROUP_GET_PRIVATE_PROPERTIES = 0x03000081,
+ CLUSCTL_GROUP_SET_PRIVATE_PROPERTIES = 0x03400086,
+ CLUSCTL_GROUP_VALIDATE_PRIVATE_PROPERTIES = 0x03000089
+ } clusapi_GroupControlCode;
+
+ WERROR
+ clusapi_GroupControl(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] clusapi_GroupControlCode dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x4E */
+
+ WERROR
+ clusapi_NodeNodeControl(
+ [ in ] HNODE_RPC hNode,
+ [ in ] HNODE_RPC hHostNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x4F */
+
+ typedef [v1_enum] enum {
+ CLUSCTL_NODE_UNKNOWN = 0x04000000,
+ CLUSCTL_NODE_GET_CHARACTERISTICS = 0x04000005,
+ CLUSCTL_NODE_GET_FLAGS = 0x04000009,
+ CLUSCTL_NODE_GET_NAME = 0x04000029,
+ CLUSCTL_NODE_GET_ID = 0x04000039,
+ CLUSCTL_NODE_GET_CLUSTER_SERVICE_ACCOUNT_NAME = 0x04000041,
+ CLUSCTL_NODE_ENUM_COMMON_PROPERTIES = 0x04000051,
+ CLUSCTL_NODE_GET_RO_COMMON_PROPERTIES = 0x04000055,
+ CLUSCTL_NODE_GET_COMMON_PROPERTIES = 0x04000059,
+ CLUSCTL_NODE_SET_COMMON_PROPERTIES = 0x0440005E,
+ CLUSCTL_NODE_VALIDATE_COMMON_PROPERTIES = 0x04000061,
+ CLUSCTL_NODE_ENUM_PRIVATE_PROPERTIES = 0x04000079,
+ CLUSCTL_NODE_GET_RO_PRIVATE_PROPERTIES = 0x0400007D,
+ CLUSCTL_NODE_GET_PRIVATE_PROPERTIES = 0x04000081,
+ CLUSCTL_NODE_SET_PRIVATE_PROPERTIES = 0x04400086,
+ CLUSCTL_NODE_VALIDATE_PRIVATE_PROPERTIES = 0x04000089
+ } clusapi_NodeControlCode;
+
+ WERROR
+ clusapi_NodeControl(
+ [ in ] HNODE_RPC hNode,
+ [ in ] clusapi_NodeControlCode dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x50 */
+
+ WERROR
+ Opnum80NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x51 */
+#if 0
+ HNETWORK_RPC
+ clusapi_OpenNetwork(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenNetwork(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNETWORK_RPC *hNetwork
+ );
+#endif
+ /*****************/
+ /* Function 0x52 */
+
+ WERROR
+ clusapi_CloseNetwork(
+ [ in, out ] HNETWORK_RPC *Network
+ );
+
+ /*****************/
+ /* Function 0x53 */
+
+ typedef [v1_enum] enum {
+ ClusterNetworkUnavailable = 0x00000000,
+ ClusterNetworkDown = 0x00000001,
+ ClusterNetworkPartitioned = 0x00000002,
+ ClusterNetworkUp = 0x00000003,
+ ClusterNetworkStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterNetworkState;
+
+ WERROR
+ clusapi_GetNetworkState(
+ [ in ] HNETWORK_RPC hNetwork,
+ [ out ] clusapi_ClusterNetworkState *State,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x54 */
+
+ WERROR
+ clusapi_SetNetworkName(
+ [ in ] HNETWORK_RPC hNetwork,
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x55 */
+
+ WERROR
+ clusapi_CreateNetworkEnum(
+ [ in ] HNETWORK_RPC hNetwork,
+ [ in ] uint32 dwType,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x56 */
+
+ WERROR
+ clusapi_GetNetworkId(
+ [ in ] HNETWORK_RPC hNetwork,
+ [ out, string ] [charset(UTF16)] uint16 **pGuid,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x57 */
+
+ WERROR
+ clusapi_SetNetworkPriorityOrder(
+ [ in, range(0, 1000)] uint32 NetworkCount,
+ [ in, string, size_is(NetworkCount) ] [charset(UTF16)] uint16 NetworkIdList[*],
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x58 */
+
+ WERROR
+ clusapi_NodeNetworkControl(
+ [ in ] HNETWORK_RPC hNetwork,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x59 */
+
+ WERROR
+ clusapi_NetworkControl(
+ [ in ] HNETWORK_RPC hNetwork,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x5A */
+
+ WERROR
+ clusapi_AddNotifyNetwork(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HNETWORK_RPC hNetwork,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ out ] uint32 *dwStateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x5B */
+
+ WERROR
+ clusapi_ReAddNotifyNetwork(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HNETWORK_RPC hNetwork,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ in ] uint32 StateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x5C */
+#if 0
+ HNETINTERFACE_RPC
+ clusapi_OpenNetInterface(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenNetInterface(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNETINTERFACE_RPC *hNetInterface
+ );
+#endif
+ /*****************/
+ /* Function 0x5D */
+
+ WERROR
+ clusapi_CloseNetInterface(
+ [ in, out ] HNETINTERFACE_RPC *NetInterface
+ );
+
+ /*****************/
+ /* Function 0x5E */
+
+ typedef [v1_enum] enum {
+ ClusterNetInterfaceFailed = 0x00000000,
+ ClusterNetInterfaceUnreachable = 0x00000001,
+ ClusterNetInterfaceUnavailable = 0x00000002,
+ ClusterNetInterfaceUp = 0x00000003,
+ ClusterNetInterfaceStateUnknown = 0xFFFFFFFF
+ } clusapi_ClusterNetInterfaceState;
+
+ WERROR
+ clusapi_GetNetInterfaceState(
+ [ in ] HNETINTERFACE_RPC hNetInterface,
+ [ out ] clusapi_ClusterNetInterfaceState *State,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x5F */
+
+ WERROR
+ clusapi_GetNetInterface(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+ [ out, string ] [charset(UTF16)] uint16 **lppszInterfaceName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x60 */
+
+ WERROR
+ clusapi_GetNetInterfaceId(
+ [ in ] HNETINTERFACE_RPC hNetInterface,
+ [ out, string ] [charset(UTF16)] uint16 **pGuid,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x61 */
+
+ WERROR
+ clusapi_NodeNetInterfaceControl(
+ [ in ] HNETINTERFACE_RPC hNetInterface,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x62 */
+
+ WERROR
+ clusapi_NetInterfaceControl(
+ [ in ] HNETINTERFACE_RPC hNetInterface,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x63 */
+
+ WERROR
+ clusapi_AddNotifyNetInterface(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HNETINTERFACE_RPC hNetInterface,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ out ] uint32 *dwStateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x64 */
+
+ WERROR
+ clusapi_ReAddNotifyNetInterface(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HNETINTERFACE_RPC hNetInterface,
+ [ in ] uint32 dwFilter,
+ [ in ] uint32 dwNotifyKey,
+ [ in ] uint32 StateSequence,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x65 */
+
+ WERROR
+ clusapi_CreateNodeEnum(
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwType,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x66 */
+
+ WERROR
+ clusapi_GetClusterVersion2(
+ [ out ] uint16 *lpwMajorVersion,
+ [ out ] uint16 *lpwMinorVersion,
+ [ out ] uint16 *lpwBuildNumber,
+ [ out, string ] [charset(UTF16)] uint16 **lpszVendorId,
+ [ out, string ] [charset(UTF16)] uint16 **lpszCSDVersion,
+ [ out ] CLUSTER_OPERATIONAL_VERSION_INFO **ppClusterOpVerInfo,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x67 */
+
+ typedef [bitmap32bit] bitmap {
+ CLUSTER_RESOURCE_TYPE_ENUM_NODES = 0x00000001,
+ CLUSTER_RESOURCE_TYPE_ENUM_RESOURCES = 0x00000002
+ } ClusterResTypeEnumType;
+
+ WERROR
+ clusapi_CreateResTypeEnum(
+ [ in, string ] [charset(UTF16)] uint16 *lpszTypeName,
+ [ in ] ClusterResTypeEnumType dwType,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x68 */
+
+ WERROR
+ clusapi_BackupClusterDatabase(
+ [ in, string ] [charset(UTF16)] uint16 *lpszPathName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x69 */
+
+ WERROR
+ clusapi_NodeClusterControl(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in ] HNODE_RPC hHostNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x6A */
+
+ typedef [v1_enum] enum {
+ CLUSCTL_CLUSTER_UNKNOWN = 0x07000000,
+ CLUSCTL_CLUSTER_GET_FQDN = 0x0700003D,
+ CLUSCTL_CLUSTER_CHECK_VOTER_EVICT = 0x07000045,
+ CLUSCTL_CLUSTER_CHECK_VOTER_DOWN = 0x07000049,
+ CLUSCTL_CLUSTER_SHUTDOWN = 0x0700004D,
+ CLUSCTL_CLUSTER_ENUM_COMMON_PROPERTIES = 0x07000051,
+ CLUSCTL_CLUSTER_GET_RO_COMMON_PROPERTIES = 0x07000055,
+ CLUSCTL_CLUSTER_GET_COMMON_PROPERTIES = 0x07000059,
+ CLUSCTL_CLUSTER_SET_COMMON_PROPERTIES = 0x0740005E,
+ CLUSCTL_CLUSTER_VALIDATE_COMMON_PROPERTIES = 0x07000061,
+ CLUSCTL_CLUSTER_GET_COMMON_PROPERTY_FMTS = 0x07000065,
+ CLUSCTL_CLUSTER_ENUM_PRIVATE_PROPERTIES = 0x07000079,
+ CLUSCTL_CLUSTER_GET_RO_PRIVATE_PROPERTIES = 0x0700007D,
+ CLUSCTL_CLUSTER_GET_PRIVATE_PROPERTIES = 0x07000081,
+ CLUSCTL_CLUSTER_SET_PRIVATE_PROPERTIES = 0x07400086,
+ CLUSCTL_CLUSTER_VALIDATE_PRIVATE_PROPERTIES = 0x07000089,
+ CLUSCTL_CLUSTER_GET_SHARED_VOLUME_ID = 0x07000291,
+ CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION = 0x074000ce,
+ CLUSCTL_CLUSTER_CLEAR_UPGRADE_IN_PROGRESS = 0x074000d2,
+ CLUSCTL_CLUSTER_IS_READY_FOR_UPGRADE = 0x070000d5
+ } clusapi_ClusterControlCode;
+
+ typedef [v1_enum] enum {
+ CLUSPROP_SYNTAX_ENDMARK = 0x00000000,
+ CLUSPROP_SYNTAX_NAME = 0x00040003,
+ CLUSPROP_SYNTAX_RESCLASS = 0x00020002,
+ CLUSPROP_SYNTAX_LIST_VALUE_SZ = 0x00010003,
+ CLUSPROP_SYNTAX_LIST_VALUE_EXPAND_SZ = 0x00010004,
+ CLUSPROP_SYNTAX_LIST_VALUE_DWORD = 0x00010002,
+ CLUSPROP_SYNTAX_LIST_VALUE_BINARY = 0x00010001,
+ CLUSPROP_SYNTAX_LIST_VALUE_MULTI_SZ = 0x00010005,
+ CLUSPROP_SYNTAX_LIST_VALUE_LONG = 0x00010007,
+ CLUSPROP_SYNTAX_LIST_VALUE_EXPANDED_SZ = 0x00010008,
+ CLUSPROP_SYNTAX_LIST_VALUE_SECURITY_DESCRIPTOR = 0x00010009,
+ CLUSPROP_SYNTAX_LIST_VALUE_LARGE_INTEGER = 0x0001000a,
+ CLUSPROP_SYNTAX_LIST_VALUE_ULARGE_INTEGER = 0x00010006,
+ CLUSPROP_SYNTAX_LIST_VALUE_WORD = 0x0001000b,
+ CLUSPROP_SYNTAX_LIST_VALUE_FILETIME = 0x0001000c,
+ CLUSPROP_SYNTAX_DISK_SIGNATURE = 0x00050002,
+ CLUSPROP_SYNTAX_SCSI_ADDRESS = 0x00060002,
+ CLUSPROP_SYNTAX_DISK_NUMBER = 0x00070002,
+ CLUSPROP_SYNTAX_PARTITION_INFO = 0x00080001,
+ CLUSPROP_SYNTAX_DISK_SERIALNUMBER = 0x000a0003,
+ CLUSPROP_SYNTAX_DISK_GUID = 0x000b0003,
+ CLUSPROP_SYNTAX_DISK_SIZE = 0x000c0006,
+ CLUSPROP_SYNTAX_PARTITION_INFO_EX = 0x000d0001
+ } CLUSTER_PROPERTY_SYNTAX;
+#if 0
+ typedef struct {
+ CLUSTER_PROPERTY_SYNTAX Syntax;
+ uint32 Size;
+ [subcontext(0),subcontext_size(Size)] [flag(NDR_REMAINING)] DATA_BLOB Buffer;
+ [flag(NDR_ALIGN4)] DATA_BLOB Padding;
+ } clusapi_propertyValues;
+
+ typedef struct {
+ [value(CLUSPROP_SYNTAX_NAME)] CLUSTER_PROPERTY_SYNTAX syntax_name;
+ [value(strlen_m_term(buffer)*2)] uint32 size;
+ nstring buffer;
+ [flag(NDR_ALIGN2)] DATA_BLOB padding;
+ clusapi_propertyValues PropertyValues;
+ [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
+ } clusapi_propertyValue;
+
+ typedef [public] struct {
+ uint32 propertyCount;
+ clusapi_propertyValue propertyValues[propertyCount];
+ [value(CLUSPROP_SYNTAX_ENDMARK)] CLUSTER_PROPERTY_SYNTAX end_mark;
+ } clusapi_PROPERTY_LIST;
+#endif
+ WERROR
+ clusapi_ClusterControl(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in ] clusapi_ClusterControlCode dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize),
+ length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in ] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x6B */
+
+ WERROR
+ clusapi_UnblockGetNotifyCall(
+ [ in ] HNOTIFY_RPC hNotify
+ );
+
+ /*****************/
+ /* Function 0x6C */
+
+ WERROR
+ clusapi_SetServiceAccountPassword(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNewPassword,
+ [ in ] IDL_CLUSTER_SET_PASSWORD_FLAGS dwFlags,
+ [ out, size_is(ReturnStatusBufferSize), length_is(*SizeReturned) ]
+ IDL_CLUSTER_SET_PASSWORD_STATUS ReturnStatusBufferPtr[*],
+ [ in, range(0, (64 * 1024)) ] uint32 ReturnStatusBufferSize,
+ [ out ] uint32 *SizeReturned,
+ [ out ] uint32 *ExpectedBufferSize
+ );
+
+ /*****************/
+ /* Function 0x6D */
+
+ WERROR
+ clusapi_SetResourceDependencyExpression(
+ [ in ] HRES_RPC hResource,
+ [ in, string, unique ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x6E */
+
+ WERROR
+ clusapi_GetResourceDependencyExpression(
+ [ in ] HRES_RPC hResource,
+ [ out, string ] [charset(UTF16)] uint16 **lpszDependencyExpression,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x6F */
+
+ WERROR
+ Opnum111NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x70 */
+
+ WERROR
+ clusapi_GetResourceNetworkName(
+ [ in ] HRES_RPC hResource,
+ [ out, string ] [charset(UTF16)] uint16 **lpszName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x71 */
+
+ WERROR
+ clusapi_ExecuteBatch(
+ [ in ] HKEY_RPC hKey,
+ [ in ] uint32 cbData,
+ [ in, size_is(cbData)] uint8 *lpData,
+ [ out ] int *pdwFailedCommand,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x72 */
+
+ WERROR
+ clusapi_CreateBatchPort(
+ [ in ] HKEY_RPC hKey,
+ [ out ] HBATCH_PORT_RPC *phBatchPort,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x73 */
+
+ WERROR
+ clusapi_GetBatchNotification(
+ [ in ] HBATCH_PORT_RPC hBatchNotify,
+ [ out ] uint32 *cbData,
+ [ out, size_is(,*cbData) ] uint8 ** lpData
+ );
+
+ /*****************/
+ /* Function 0x74 */
+
+ WERROR
+ clusapi_CloseBatchPort(
+ [ in, out ] HBATCH_PORT_RPC *phBatchPort
+ );
+
+ /*****************/
+ /* Function 0x75 */
+
+ typedef [bitmap32bit] bitmap {
+ CLUSAPI_READ_ACCESS = 0x00000001,
+ CLUSAPI_CHANGE_ACCESS = 0x00000002,
+ CLUSAPI_GENERIC_READ = 0x80000000,
+ CLUSAPI_GENERIC_WRITE = 0x40000000,
+ CLUSAPI_GENERIC_EXECUTE = 0x20000000,
+ CLUSAPI_GENERIC_ALL = 0x10000000,
+ CLUSAPI_MAXIMUM_ALLOWED = 0x02000000
+ } clusapi_DesiredAccessMask;
+
+#if 0
+ HCLUSTER_RPC
+ clusapi_OpenClusterEx(
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status
+ );
+#else
+ void
+ clusapi_OpenClusterEx(
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] HCLUSTER_RPC *hCluster
+ );
+#endif
+
+ /*****************/
+ /* Function 0x76 */
+#if 0
+ HNODE_RPC
+ clusapi_OpenNodeEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenNodeEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNodeName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNODE_RPC *hNode
+ );
+#endif
+ /*****************/
+ /* Function 0x77 */
+#if 0
+ HGROUP_RPC
+ clusapi_OpenGroupEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenGroupEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUP_RPC *hGroup
+ );
+#endif
+ /*****************/
+ /* Function 0x78 */
+#if 0
+ HRES_RPC
+ clusapi_OpenResourceEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenResourceEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszResourceName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HRES_RPC *hResource
+ );
+#endif
+ /*****************/
+ /* Function 0x79 */
+#if 0
+ HNETWORK_RPC
+ clusapi_OpenNetworkEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenNetworkEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetworkName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNETWORK_RPC *hNetwork
+ );
+#endif
+ /*****************/
+ /* Function 0x7A */
+#if 0
+ HNETINTERFACE_RPC
+ clusapi_OpenNetInterfaceEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenNetInterfaceEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszNetInterfaceName,
+ [ in ] clusapi_DesiredAccessMask dwDesiredAccess,
+ [ out ] uint32 *lpdwGrantedAccess,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNETINTERFACE_RPC *hNetInterface
+ );
+#endif
+ /*****************/
+ /* Function 0x7B */
+
+ WERROR
+ clusapi_ChangeCsvState(
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwState,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x7C */
+
+ WERROR
+ clusapi_CreateNodeEnumEx(
+ [in] HNODE_RPC hNode,
+ [in] uint32 dwType,
+ [in] uint32 dwOptions,
+ [out] ENUM_LIST **ReturnIdEnum,
+ [out] ENUM_LIST **ReturnNameEnum,
+ [out] WERROR* rpc_status
+ );
+
+ /*****************/
+ /* Function 0x7D */
+
+ WERROR
+ clusapi_CreateEnumEx(
+ [in] HCLUSTER_RPC hCluster,
+ [in] ClusterEnumType dwType,
+ [in] uint32 dwOptions,
+ [out] ENUM_LIST **ReturnIdEnum,
+ [out] ENUM_LIST **ReturnNameEnum,
+ [out] WERROR* rpc_status
+ );
+
+ /*****************/
+ /* Function 0x7E */
+
+ WERROR
+ clusapi_PauseNodeEx(
+ [ in ] HNODE_RPC hNode,
+ [ in ] boolean8 bDrainNode,
+ [ in ] uint32 dwPauseFlags,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x7F */
+
+ WERROR
+ clusapi_PauseNodeWithDrainTarget(
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwPauseFlags,
+ [ in ] HNODE_RPC hNodeDrainTarget,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x80 */
+
+ WERROR
+ clusapi_ResumeNodeEx(
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwResumeFailbackType,
+ [ in ] uint32 dwResumeFlagsReserved,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x81 */
+#if 0
+ HGROUP_RPC
+ clusapi_CreateGroupEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateGroupEx(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupName,
+ [ in, unique ] CLUSTER_CREATE_GROUP_INFO_RPC *pGroupInfo,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUP_RPC *hGroup
+ );
+#endif
+ /*****************/
+ /* Function 0x82 */
+
+ WERROR
+ clusapi_OnlineGroupEx(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] uint32 dwOnlineFlags,
+ [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+ [ in ] uint32 cbInBufferSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x83 */
+
+ WERROR
+ clusapi_OfflineGroupEx(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] uint32 dwOfflineFlags,
+ [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+ [ in ] uint32 cbInBufferSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x84 */
+
+ WERROR
+ clusapi_MoveGroupEx(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] uint32 dwMoveFlags,
+ [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+ [ in ] uint32 cbInBufferSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x85 */
+
+ WERROR
+ clusapi_MoveGroupToNodeEx(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwMoveFlags,
+ [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+ [ in ] uint32 cbInBufferSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x86 */
+
+ WERROR
+ clusapi_CancelClusterGroupOperation(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] uint32 dwCancelFlags,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x87 */
+
+ WERROR
+ clusapi_OnlineResourceEx(
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwOnlineFlags,
+ [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+ [ in ] uint32 cbInBufferSize,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x88 */
+
+ WERROR
+ clusapi_OfflineResourceEx(
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwOfflineFlags,
+ [ in, size_is(cbInBufferSize) ] uint8* lpInBuffer,
+ [ in ] uint32 cbInBufferSize,
+ [ out ] WERROR *rpc_status
+ );
+
+#define HGENERIC_RPC policy_handle
+#if 0
+ typedef [context_handle] void *HGENERIC_RPC;
+#endif
+
+ typedef struct {
+ uint32 dwObjectType; /* really of type CLUSTER_OBJECT_TYPE_RPC */
+ hyper FilterFlags;
+ } NOTIFY_FILTER_AND_TYPE_RPC;
+
+ typedef struct {
+ NOTIFY_FILTER_AND_TYPE_RPC FilterAndType;
+ [ size_is(dwBufferSize ) ] uint8* buffer;
+ uint32 dwBufferSize;
+ [string] [charset(UTF16)] uint16 *ObjectId;
+ [string] [charset(UTF16)] uint16 *ParentId;
+ [string] [charset(UTF16)] uint16 *Name;
+ [string] [charset(UTF16)] uint16 *Type;
+ } NOTIFICATION_DATA_RPC;
+
+ typedef struct {
+ uint32 *dwNotifyKey;
+ NOTIFICATION_DATA_RPC NotificationData;
+ } NOTIFICATION_RPC;
+
+ /*****************/
+ /* Function 0x89 */
+
+ /*
+ * Notify interface V2 functions
+ */
+#if 0
+ HNOTIFY_RPC
+ clusapi_CreateNotifyV2(
+ [ out ] WERROR *rpc_error,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateNotifyV2(
+ [ out ] WERROR *rpc_error,
+ [ out ] WERROR *rpc_status,
+ [ out ] HNOTIFY_RPC *hNotify
+ );
+
+#endif
+ /*****************/
+ /* Function 0x8A */
+
+ WERROR
+ clusapi_AddNotifyV2(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] HGENERIC_RPC hObject,
+ [ in ] NOTIFY_FILTER_AND_TYPE_RPC filter,
+ [ in ] uint32 dwNotifyKey,
+ [ in ] uint32 dwVersion,
+ [ in ] boolean8 isTargetedAtObject,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x8B */
+
+ WERROR
+ clusapi_GetNotifyV2(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_RPC **Notifications,
+ [ out ] uint32 *dwNumNotifications
+ );
+
+ /*****************/
+ /* Function 0x8C */
+
+ WERROR
+ clusapi_QueryAllValues(
+ [ in ] HKEY_RPC hKey,
+ [ out ] uint32 *pcbData,
+ [ out, size_is(1, *pcbData) ] uint8 ** ppData,
+ [ out ] WERROR *rpc_status
+ );
+
+ typedef struct {
+ uint32 DiskIdType;
+ uint8 DiskIdBlob[16];
+ } CLUSTER_DISKID;
+
+ /*****************/
+ /* Function 0x8D */
+
+ WERROR
+ clusapi_StmFindDisk(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in ] uint32 dwFlags,
+ [ in, out, unique ] CLUSTER_DISKID *pDiskId,
+ [ in, size_is(uniqueIdSize), unique ] uint8 *pUniqueId,
+ [ in ] uint32 uniqueIdSize,
+ [ out, ref, string ] [charset(UTF16)] uint16 **ppszDeviceName,
+ [ out ] WERROR *rpc_status
+ );
+
+ typedef struct{
+ [string] [charset(UTF16)] uint16 *pszNodeName;
+ HRESULT ResultCode;
+ uint32 ResultSize;
+ [unique, size_is(ResultSize)] uint8 *pResultData;
+ } CLUSTER_MRR_NODE_RESPONSE;
+
+ typedef struct {
+ uint32 NodeCount;
+ [size_is(NodeCount)] CLUSTER_MRR_NODE_RESPONSE *pNodes;
+ } CLUSTER_MRR_RESPONSE;
+
+ /*****************/
+ /* Function 0x8E */
+
+ WERROR
+ clusapi_ClusterMrr(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in ] boolean8 fExcludeSelf,
+ [ in ] hyper nodeSet,
+ [ in ] uint32 dwTimeout,
+ [ in ] uint32 dwComponent,
+ [ in ] uint32 dwControlCode,
+ [ in ] uint32 inSize,
+ [ in, unique, size_is(inSize) ] uint8 *pInData,
+ [ out, ref, size_is(1, 1) ] CLUSTER_MRR_RESPONSE **ppInfo,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x8F */
+
+ WERROR
+ clusapi_CreateGroupEnum(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in, unique, size_is(cbProperties)] uint8* pProperties,
+ [ in ] uint32 cbProperties,
+ [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
+ [ in ] uint32 cbRoProperties,
+ [ out ] GROUP_ENUM_LIST **ppResultList,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x90 */
+
+ WERROR
+ clusapi_CreateResourceEnum(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ in, unique, size_is(cbProperties)] uint8* pProperties,
+ [ in ] uint32 cbProperties,
+ [ in, unique, size_is(cbRoProperties)] uint8* pRoProperties,
+ [ in ] uint32 cbRoProperties,
+ [ out ] RESOURCE_ENUM_LIST **ppResultList,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x91 */
+
+ WERROR
+ clusapi_ExecuteReadBatch(
+ [ in ] HKEY_RPC hKey,
+ [ in ] uint32 cbInData,
+ [ in, size_is(cbInData)] uint8 *lpInData,
+ [ out ] uint32 *cbOutData,
+ [ out, size_is(,*cbOutData) ] uint8 ** lpOutData,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x92 */
+
+ WERROR
+ clusapi_RestartResource(
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwFlags,
+ [ out ] WERROR *rpc_status
+ );
+
+ typedef struct {
+ uint32 dwNotifyKey;
+ uint32 dwFilter;
+ [string] [charset(UTF16)] uint16 *Name;
+ } NOTIFICATION_DATA_ASYNC_RPC;
+
+ /*****************/
+ /* Function 0x93 */
+
+ WERROR
+ clusapi_GetNotifyAsync(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ out, size_is(,*dwNumNotifications) ] NOTIFICATION_DATA_ASYNC_RPC **Notifications,
+ [ out ] uint32 *dwNumNotifications
+ );
+
+ typedef enum {
+ DiskIdSignature = 0x00000001,
+ DiskIdGuid = 0x00000002,
+ DiskIdUnKnown = 0x00001388
+ } CLUSDSK_DISKID_ENUM;
+
+#if 0
+ typedef struct {
+ CLUSDSK_DISKID_ENUM DiskIdType;
+ [switch_is(DiskIdType)] union {
+ [case(DiskIdSignature)] uint32 DiskSignature;
+ [case(DiskIdGuid)] GUID DiskGuid;
+ };
+ } CLUSDSK_DISKID;
+#endif
+ typedef enum {
+ CLUSPROP_TYPE_ENDMARK = 0x0000,
+ CLUSPROP_TYPE_LIST_VALUE = 0x0001,
+ CLUSPROP_TYPE_RESCLASS = 0x0002,
+ CLUSPROP_TYPE_NAME = 0x0004,
+ CLUSPROP_TYPE_SIGNATURE = 0x0005,
+ CLUSPROP_TYPE_SCSIADDRESS = 0x0006,
+ CLUSPROP_TYPE_DISK_NUMBER = 0x0007,
+ CLUSPROP_TYPE_PARTITION_INFO = 0x0008,
+ CLUSPROP_TYPE_DISK_SERIALNUMBER = 0x000a,
+ CLUSPROP_TYPE_DISK_GUID = 0x000b,
+ CLUSPROP_TYPE_DISK_SIZE = 0x000c,
+ CLUSPROP_TYPE_PARTITION_INFO_EX = 0x000d
+ } CLUSTER_PROPERTY_TYPE;
+
+ typedef enum {
+ CLUSPROP_FORMAT_UNKNOWN = 0x0000,
+ CLUSPROP_FORMAT_BINARY = 0x0001,
+ CLUSPROP_FORMAT_DWORD = 0x0002,
+ CLUSPROP_FORMAT_SZ = 0x0003,
+ CLUSPROP_FORMAT_EXPAND_SZ = 0x0004,
+ CLUSPROP_FORMAT_MULTI_SZ = 0x0005,
+ CLUSPROP_FORMAT_ULARGE_INTEGER = 0x0006,
+ CLUSPROP_FORMAT_LONG = 0x0007,
+ CLUSPROP_FORMAT_EXPANDED_SZ = 0x0008,
+ CLUSPROP_FORMAT_SECURITY_DESCRIPTOR = 0x0009,
+ CLUSPROP_FORMAT_LARGE_INTEGER = 0x000a,
+ CLUSPROP_FORMAT_WORD = 0x000b,
+ CLUSPROP_FORMAT_FILETIME = 0x000c
+ } CLUSTER_PROPERTY_FORMAT;
+
+ typedef enum {
+ CLUS_CHAR_UNKNOWN = 0x00000000,
+ CLUS_CHAR_QUORUM = 0x00000001,
+ CLUS_CHAR_DELETE_REQUIRES_ALL_NODES = 0x00000002,
+ CLUS_CHAR_LOCAL_QUORUM = 0x00000004,
+ CLUS_CHAR_BROADCAST_DELETE = 0x00000020,
+ CLUS_CHAR_SINGLE_CLUSTER_INSTANCE = 0x00000040,
+ CLUS_CHAR_SINGLE_GROUP_INSTANCE = 0x00000080,
+ CLUS_CHAR_COEXIST_IN_SHARED_VOLUME_GROUP = 0x00000100,
+ CLUS_CHAR_RESERVED1 = 0x00000200,
+ CLUS_CHAR_MONITOR_DETACH = 0x00000400,
+ CLUS_CHAR_RESERVED2 = 0x00000800,
+ CLUS_CHAR_RESERVED3 = 0x00001000,
+ CLUS_CHAR_RESERVED4 = 0x00002000
+ } CLUS_CHARACTERISTICS;
+
+ typedef enum {
+ CLUS_FLAG_CORE = 0x00000001
+ } CLUS_FLAGS;
+
+ typedef enum {
+ MaintenanceModeTypeDisableIsAliveCheck = 1,
+ MaintenanceModeTypeOfflineResource = 2,
+ MaintenanceModeTypeUnclusterResource = 3
+ } MAINTENANCE_MODE_TYPE;
+
+ typedef enum {
+ CLUSTER_CHANGE_NODE_STATE = 0x00000001,
+ CLUSTER_CHANGE_NODE_DELETED = 0x00000002,
+ CLUSTER_CHANGE_NODE_ADDED = 0x00000004,
+ CLUSTER_CHANGE_NODE_PROPERTY = 0x00000008,
+ CLUSTER_CHANGE_REGISTRY_NAME = 0x00000010,
+ CLUSTER_CHANGE_REGISTRY_ATTRIBUTES = 0x00000020,
+ CLUSTER_CHANGE_REGISTRY_VALUE = 0x00000040,
+ CLUSTER_CHANGE_REGISTRY_SUBTREE = 0x00000080,
+ CLUSTER_CHANGE_RESOURCE_STATE = 0x00000100,
+ CLUSTER_CHANGE_RESOURCE_DELETED = 0x00000200,
+ CLUSTER_CHANGE_RESOURCE_ADDED = 0x00000400,
+ CLUSTER_CHANGE_RESOURCE_PROPERTY = 0x00000800,
+ CLUSTER_CHANGE_GROUP_STATE = 0x00001000,
+ CLUSTER_CHANGE_GROUP_DELETED = 0x00002000,
+ CLUSTER_CHANGE_GROUP_ADDED = 0x00004000,
+ CLUSTER_CHANGE_GROUP_PROPERTY = 0x00008000,
+ CLUSTER_CHANGE_RESOURCE_TYPE_DELETED = 0x00010000,
+ CLUSTER_CHANGE_RESOURCE_TYPE_ADDED = 0x00020000,
+ CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY = 0x00040000,
+ CLUSTER_CHANGE_CLUSTER_RECONNECT = 0x00080000,
+ CLUSTER_CHANGE_NETWORK_STATE = 0x00100000,
+ CLUSTER_CHANGE_NETWORK_DELETED = 0x00200000,
+ CLUSTER_CHANGE_NETWORK_ADDED = 0x00400000,
+ CLUSTER_CHANGE_NETWORK_PROPERTY = 0x00800000,
+ CLUSTER_CHANGE_NETINTERFACE_STATE = 0x01000000,
+ CLUSTER_CHANGE_NETINTERFACE_DELETED = 0x02000000,
+ CLUSTER_CHANGE_NETINTERFACE_ADDED = 0x04000000,
+ CLUSTER_CHANGE_NETINTERFACE_PROPERTY = 0x08000000,
+ CLUSTER_CHANGE_QUORUM_STATE = 0x10000000,
+ CLUSTER_CHANGE_CLUSTER_STATE = 0x20000000,
+ CLUSTER_CHANGE_CLUSTER_PROPERTY = 0x40000000,
+ CLUSTER_CHANGE_HANDLE_CLOSE = 0x80000000
+ } CLUSTER_CHANGE;
+
+ typedef enum {
+ CLUSREG_SET_VALUE = 1,
+ CLUSREG_CREATE_KEY = 2,
+ CLUSREG_DELETE_KEY = 3,
+ CLUSREG_DELETE_VALUE = 4,
+ CLUSREG_VALUE_DELETED = 6,
+ CLUSREG_READ_KEY = 7,
+ CLUSREG_READ_VALUE = 8,
+ CLUSREG_READ_ERROR = 9
+ } CLUSTER_REG_BATCH_COMMAND;
+#if 0
+ typedef enum {
+ IDL_CLUSTER_SET_PASSWORD_IGNORE_DOWN_NODES = 1
+ } IDL_CLUSTER_SET_PASSWORD_FLAGS;
+#endif
+ typedef enum {
+ CLUSTER_QUORUM_MAINTAINED = 0,
+ CLUSTER_QUORUM_LOST = 1
+ } CLUSTER_QUORUM_VALUE;
+
+ typedef enum {
+ CLUSTER_OBJECT_TYPE_CLUSTER = 0x00000001,
+ CLUSTER_OBJECT_TYPE_GROUP = 0x00000002,
+ CLUSTER_OBJECT_TYPE_RESOURCE = 0x00000003,
+ CLUSTER_OBJECT_TYPE_RESOURCE_TYPE = 0x00000004,
+ CLUSTER_OBJECT_TYPE_NETWORK_INTERFACE = 0x00000005,
+ CLUSTER_OBJECT_TYPE_NETWORK = 0x00000006,
+ CLUSTER_OBJECT_TYPE_NODE = 0x00000007,
+ CLUSTER_OBJECT_TYPE_REGISTRY = 0x00000008,
+ CLUSTER_OBJECT_TYPE_QUORUM = 0x00000009,
+ CLUSTER_OBJECT_TYPE_SHARED_VOLUME = 0x0000000a
+ } CLUSTER_OBJECT_TYPE;
+
+ typedef enum {
+ CLUSTER_CHANGE_CLUSTER_RECONNECT_V2 = 0x00000001,
+ CLUSTER_CHANGE_CLUSTER_STATE_V2 = 0x00000002,
+ CLUSTER_CHANGE_CLUSTER_GROUP_ADDED_V2 = 0x00000004,
+ CLUSTER_CHANGE_CLUSTER_HANDLE_CLOSE_V2 = 0x00000008,
+ CLUSTER_CHANGE_CLUSTER_NETWORK_ADDED_V2 = 0x00000010,
+ CLUSTER_CHANGE_CLUSTER_NODE_ADDED_V2 = 0x00000020,
+ CLUSTER_CHANGE_CLUSTER_RESOURCE_TYPE_ADDED_V2 = 0x00000040,
+ CLUSTER_CHANGE_CLUSTER_COMMON_PROPERTY_V2 = 0x00000080,
+ CLUSTER_CHANGE_CLUSTER_PRIVATE_PROPERTY_V2 = 0x00000100,
+ CLUSTER_CHANGE_CLUSTER_LOST_NOTIFICATIONS_V2 = 0x00000200,
+ CLUSTER_CHANGE_CLUSTER_RENAME_V2 = 0x00000400
+ } CLUSTER_CHANGE_CLUSTER_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_GROUP_DELETED_V2 = 0x00000001,
+ CLUSTER_CHANGE_GROUP_COMMON_PROPERTY_V2 = 0x00000002,
+ CLUSTER_CHANGE_GROUP_PRIVATE_PROPERTY_V2 = 0x00000004,
+ CLUSTER_CHANGE_GROUP_STATE_V2 = 0x00000008,
+ CLUSTER_CHANGE_GROUP_OWNER_NODE_V2 = 0x00000010,
+ CLUSTER_CHANGE_GROUP_PREFERRED_OWNERS_V2 = 0x00000020,
+ CLUSTER_CHANGE_GROUP_RESOURCE_ADDED_V2 = 0x00000040,
+ CLUSTER_CHANGE_GROUP_RESOURCE_GAINED_V2 = 0x00000080,
+ CLUSTER_CHANGE_GROUP_RESOURCE_LOST_V2 = 0x00000100,
+ CLUSTER_CHANGE_GROUP_HANDLE_CLOSE_V2 = 0x00000200
+ } CLUSTER_CHANGE_GROUP_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_RESOURCE_COMMON_PROPERTY_V2 = 0x00000001,
+ CLUSTER_CHANGE_RESOURCE_PRIVATE_PROPERTY_V2 = 0x00000002,
+ CLUSTER_CHANGE_RESOURCE_STATE_V2 = 0x00000004,
+ CLUSTER_CHANGE_RESOURCE_OWNER_GROUP_V2 = 0x00000008,
+ CLUSTER_CHANGE_RESOURCE_DEPENDENCIES_V2 = 0x00000010,
+ CLUSTER_CHANGE_RESOURCE_DEPENDENTS_V2 = 0x00000020,
+ CLUSTER_CHANGE_RESOURCE_POSSIBLE_OWNERS_V2 = 0x00000040,
+ CLUSTER_CHANGE_RESOURCE_DELETED_V2 = 0x00000080,
+ CLUSTER_CHANGE_RESOURCE_DLL_UPGRADED_V2 = 0x00000100,
+ CLUSTER_CHANGE_RESOURCE_HANDLE_CLOSE_V2 = 0x00000200
+ } CLUSTER_CHANGE_RESOURCE_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_RESOURCE_TYPE_DELETED_V2 = 0x00000001,
+ CLUSTER_CHANGE_RESOURCE_TYPE_COMMON_PROPERTY_V2 = 0x00000002,
+ CLUSTER_CHANGE_RESOURCE_TYPE_PRIVATE_PROPERTY_V2 = 0x00000004,
+ CLUSTER_CHANGE_RESOURCE_TYPE_POSSIBLE_OWNERS_V2 = 0x00000008,
+ CLUSTER_CHANGE_RESOURCE_TYPE_DLL_UPGRADED_V2 = 0x00000010
+ } CHANGE_RESOURCE_TYPE_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_NETINTERFACE_DELETED_V2 = 0x00000001,
+ CLUSTER_CHANGE_NETINTERFACE_COMMON_PROPERTY_V2 = 0x00000002,
+ CLUSTER_CHANGE_NETINTERFACE_PRIVATE_PROPERTY_V2 = 0x00000004,
+ CLUSTER_CHANGE_NETINTERFACE_STATE_V2 = 0x00000008,
+ CLUSTER_CHANGE_NETINTERFACE_HANDLE_CLOSE_V2 = 0x00000010
+ } CLUSTER_CHANGE_NETINTERFACE_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_NETWORK_DELETED_V2 = 0x00000001,
+ CLUSTER_CHANGE_NETWORK_COMMON_PROPERTY_V2 = 0x00000002,
+ CLUSTER_CHANGE_NETWORK_PRIVATE_PROPERTY_V2 = 0x00000004,
+ CLUSTER_CHANGE_NETWORK_STATE_V2 = 0x00000008,
+ CLUSTER_CHANGE_NETWORK_HANDLE_CLOSE_V2 = 0x00000010
+ } CLUSTER_CHANGE_NETWORK_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_NODE_NETINTERFACE_ADDED_V2 = 0x00000001,
+ CLUSTER_CHANGE_NODE_DELETED_V2 = 0x00000002,
+ CLUSTER_CHANGE_NODE_COMMON_PROPERTY_V2 = 0x00000004,
+ CLUSTER_CHANGE_NODE_PRIVATE_PROPERTY_V2 = 0x00000008,
+ CLUSTER_CHANGE_NODE_STATE_V2 = 0x00000010,
+ CLUSTER_CHANGE_NODE_GROUP_GAINED_V2 = 0x00000020,
+ CLUSTER_CHANGE_NODE_GROUP_LOST_V2 = 0x00000040,
+ CLUSTER_CHANGE_NODE_HANDLE_CLOSE_V2 = 0x00000080
+ } CLUSTER_CHANGE_NODE_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_REGISTRY_ATTRIBUTES_V2 = 0x00000001,
+ CLUSTER_CHANGE_REGISTRY_NAME_V2 = 0x00000002,
+ CLUSTER_CHANGE_REGISTRY_SUBTREE_V2 = 0x00000004,
+ CLUSTER_CHANGE_REGISTRY_VALUE_V2 = 0x00000008,
+ CLUSTER_CHANGE_REGISTRY_HANDLE_CLOSE_V2 = 0x00000010
+ } CLUSTER_CHANGE_REGISTRY_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_QUORUM_STATE_V2 = 0x00000001
+ } CLUSTER_CHANGE_QUORUM_V2;
+
+ typedef enum {
+ CLUSTER_CHANGE_SHARED_VOLUME_STATE_V2 = 0x00000001
+ } CLUSTER_CHANGE_SHARED_VOLUME_V2;
+#if 0
+ typedef enum {
+ DiskIdSignature = 0x00000001,
+ DiskIdGuid = 0x00000002,
+ DiskIdUnKnown = 0x00001388
+ } CLUSDSK_DISKID_ENUM;
+#endif
+
+ /*****************/
+ /* Function 0x94 */
+ WERROR
+ Opnum148NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x95 */
+ WERROR
+ Opnum149otUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x96 */
+ WERROR
+ Opnum150NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x97 */
+ WERROR
+ Opnum151NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x98 */
+ WERROR
+ Opnum152NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x99 */
+ WERROR
+ Opnum153NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9A */
+ WERROR
+ Opnum154NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9B */
+ WERROR
+ clusapi_AddNotifyResourceTypeV2(
+ [ in ] HNOTIFY_RPC hNotify,
+ [ in ] hyper filter,
+ [ in ] uint32 dwNotifyKey,
+ [ in, string ] [charset(UTF16)] uint16 *resTypeName,
+ [ in ] uint32 dwVersion,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x9C */
+ WERROR
+ Opnum156NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9D */
+ WERROR
+ clusapi_ExecuteReadBatchEx(
+ [in] HKEY_RPC hKey,
+ [in] uint32 cbInData,
+ [in, size_is(cbInData)] uint8* lpInData,
+ [in] uint32 flags,
+ [out] uint32* cbOutData,
+ [out, size_is(,*cbOutData)] uint8** lpOutData,
+ [out] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0x9E */
+ WERROR
+ Opnum158NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0x9F */
+ WERROR
+ Opnum159NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA0 */
+ WERROR
+ Opnum160NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA1 */
+ WERROR
+ Opnum161NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA2 */
+ WERROR
+ Opnum162NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xA3 */
+
+#define HGROUPSET_RPC policy_handle
+#if 0
+ typedef [context_handle] void *HGROUPSET_RPC;
+#endif
+#if 0
+ HGROUPSET_RPC
+ clusapi_CreateGroupSet (
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_CreateGroupSet (
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUPSET_RPC *hGroupSet
+ );
+#endif
+
+ /*****************/
+ /* Function 0xA4 */
+#if 0
+ HGROUPSET_RPC
+ clusapi_OpenGroupSet(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status
+ );
+#else
+ void
+ clusapi_OpenGroupSet(
+ [ in, string ] [charset(UTF16)] uint16 *lpszGroupSetName,
+ [ out ] WERROR *Status,
+ [ out ] WERROR *rpc_status,
+ [ out ] HGROUPSET_RPC *hGroupSet
+ );
+#endif
+
+ /*****************/
+ /* Function 0xA5 */
+ WERROR
+ clusapi_CloseGroupSet(
+ [ in, out ] HGROUPSET_RPC *GroupSet
+ );
+
+ /*****************/
+ /* Function 0xA6 */
+ WERROR
+ clusapi_DeleteGroupSet(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xA7 */
+ WERROR
+ clusapi_AddGroupToGroupSet(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ in ] HGROUP_RPC Group,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xA8 */
+ WERROR
+ clusapi_RemoveGroupFromGroupSet(
+ [ in ] HGROUP_RPC Group,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xA9 */
+ WERROR
+ clusapi_MoveGroupToGroupSet(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ in ] HGROUP_RPC Group,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAA */
+ WERROR
+ Opnum170NotUsedOnWire(void);
+
+ /*****************/
+ /* Function 0xAB */
+ WERROR
+ clusapi_AddGroupSetDependency(
+ [ in ] HGROUPSET_RPC DependentGroupSet,
+ [ in ] HGROUPSET_RPC ProviderGroupSet,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAC */
+ WERROR
+ clusapi_AddGroupToGroupSetDependency(
+ [ in ] HGROUP_RPC DependentGroup,
+ [ in ] HGROUPSET_RPC ProviderGroupSet,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAD */
+ WERROR
+ clusapi_NodeGroupSetControl(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in ] HNODE_RPC hNode,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in, range(0, MAX_CLUSTER_CONTROL_CODE_BUFFER_SIZE)] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAE */
+ WERROR
+ clusapi_GroupSetControl(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in ] uint32 dwControlCode,
+ [ in, unique, size_is(nInBufferSize) ] uint8 *lpInBuffer,
+ [ in ] uint32 nInBufferSize,
+ [ out, size_is(nOutBufferSize), length_is (*lpBytesReturned)] uint8 *lpOutBuffer,
+ [ in, range(0, 0x7FFFFFFF)] uint32 nOutBufferSize,
+ [ out ] uint32 *lpBytesReturned,
+ [ out ] uint32 *lpcbRequired,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xAF */
+ WERROR
+ clusapi_SetGroupDependencyExpression(
+ [ in ] HGROUP_RPC hGroup,
+ [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB0 */
+ WERROR
+ clusapi_RemoveClusterGroupDependency(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] HGROUP_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB1 */
+ WERROR
+ clusapi_SetGroupSetDependencyExpression(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in, string ] [charset(UTF16)] uint16 *lpszDependencyExpression,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB2 */
+ WERROR
+ clusapi_RemoveGroupSetDependency(
+ [ in ] HGROUPSET_RPC hGroupSet,
+ [ in ] HGROUPSET_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB3 */
+ WERROR
+ clusapi_RemoveClusterGroupToGroupSetDependency(
+ [ in ] HGROUP_RPC hGroup,
+ [ in ] HGROUPSET_RPC hDependsOn,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB4 */
+ WERROR
+ clusapi_CreateGroupSetEnum(
+ [ in ] HCLUSTER_RPC hCluster,
+ [ out ] ENUM_LIST **ReturnEnum,
+ [ out ] WERROR * rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB5 */
+ WERROR
+ clusapi_CreateNetInterfaceEnum(
+ [in] HCLUSTER_RPC hCluster,
+ [in, string] [charset(UTF16)] uint16 *lpszNodeName,
+ [in, string] [charset(UTF16)] uint16 *lpszNetworkName,
+ [out] ENUM_LIST **ReturnEnum,
+ [out] WERROR * rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB6 */
+ WERROR
+ clusapi_ChangeCsvStateEx(
+ [ in ] HRES_RPC hResource,
+ [ in ] uint32 dwState,
+ [ in, string ] [charset(UTF16)] uint16 *lpszVolumeName,
+ [ out ] WERROR *rpc_status
+ );
+
+ /*****************/
+ /* Function 0xB7 */
+ WERROR
+ clusapi_AddGroupToGroupSetEx(
+ [ in ] HGROUPSET_RPC GroupSet,
+ [ in ] HGROUP_RPC Group,
+ [ in ] uint32 FaultDomain,
+ [ in ] uint32 UpdateDomain,
+ [ in ] boolean8 UseDomains,
+ [ in ] uint32 *Reserved,
+ [ out ] WERROR *rpc_status
+ );
+}
diff --git a/epan/dissectors/pidl/dfs/dfs.cnf b/epan/dissectors/pidl/dfs/dfs.cnf
new file mode 100644
index 00000000..4cb06365
--- /dev/null
+++ b/epan/dissectors/pidl/dfs/dfs.cnf
@@ -0,0 +1,3 @@
+# Conformance file for DFS
+
+
diff --git a/epan/dissectors/pidl/dfs/dfs.idl b/epan/dissectors/pidl/dfs/dfs.idl
new file mode 100644
index 00000000..2b519b15
--- /dev/null
+++ b/epan/dissectors/pidl/dfs/dfs.idl
@@ -0,0 +1,394 @@
+/*
+ dfs interface definition
+*/
+
+[ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"),
+ version(3.0),
+ pointer_default(unique),
+ helpstring("Settings for Microsoft Distributed File System")
+] interface netdfs
+{
+ /******************/
+ /* Function: 0x00 */
+ typedef [v1_enum] enum {
+ DFS_MANAGER_VERSION_NT4 = 1,
+ DFS_MANAGER_VERSION_W2K = 2,
+ DFS_MANAGER_VERSION_W2K3 = 4
+ } dfs_ManagerVersion;
+
+ [public] void dfs_GetManagerVersion(
+ [out] dfs_ManagerVersion *version
+ );
+
+
+ /******************/
+ /* Function: 0x01 */
+ WERROR dfs_Add (
+ [in] [string,charset(UTF16)] uint16 *path,
+ [in] [string,charset(UTF16)] uint16 *server,
+ [in,unique] [string,charset(UTF16)] uint16 *share,
+ [in,unique] [string,charset(UTF16)] uint16 *comment,
+ [in] uint32 flags
+ );
+
+ /******************/
+ /* Function: 0x02 */
+ WERROR dfs_Remove (
+ [in] [string,charset(UTF16)] uint16 *dfs_entry_path,
+ [in,unique] [string,charset(UTF16)] uint16 *servername,
+ [in,unique] [string,charset(UTF16)] uint16 *sharename
+ );
+
+ /******************/
+ /* Function: 0x03 */
+
+ typedef struct {
+ } dfs_Info0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *path;
+ } dfs_Info1;
+
+ /* first 4 bits unverified yet */
+ typedef [public,bitmap32bit] bitmap {
+ DFS_VOLUME_STATE_OK = 0x1,
+ DFS_VOLUME_STATE_INCONSISTENT = 0x2,
+ DFS_VOLUME_STATE_OFFLINE = 0x4,
+ DFS_VOLUME_STATE_ONLINE = 0x8,
+ DFS_VOLUME_STATE_STANDALONE = DFS_VOLUME_FLAVOR_STANDALONE,
+ DFS_VOLUME_STATE_AD_BLOB = DFS_VOLUME_FLAVOR_AD_BLOB
+ } dfs_VolumeState;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *comment;
+ dfs_VolumeState state;
+ uint32 num_stores;
+ } dfs_Info2;
+
+ const int DFS_STORAGE_STATES = 0xf;
+
+ /* yes, this is a bitmap */
+ typedef [public,bitmap32bit] bitmap {
+ DFS_STORAGE_STATE_OFFLINE = 1,
+ DFS_STORAGE_STATE_ONLINE = 2,
+ DFS_STORAGE_STATE_ACTIVE = 4
+ } dfs_StorageState;
+
+ typedef struct {
+ dfs_StorageState state;
+ [string,charset(UTF16)] uint16 *server;
+ [string,charset(UTF16)] uint16 *share;
+ } dfs_StorageInfo;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *comment;
+ dfs_VolumeState state;
+ uint32 num_stores;
+ [size_is(num_stores)] dfs_StorageInfo *stores;
+ } dfs_Info3;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *comment;
+ dfs_VolumeState state;
+ uint32 timeout;
+ GUID guid;
+ uint32 num_stores;
+ [size_is(num_stores)] dfs_StorageInfo *stores;
+ } dfs_Info4;
+
+ /* verified with dfsutil */
+ typedef [public,bitmap32bit] bitmap {
+ DFS_PROPERTY_FLAG_INSITE_REFERRALS = 0x01,
+ DFS_PROPERTY_FLAG_ROOT_SCALABILITY = 0x02,
+ DFS_PROPERTY_FLAG_SITE_COSTING = 0x04,
+ DFS_PROPERTY_FLAG_TARGET_FAILBACK = 0x08,
+ DFS_PROPERTY_FLAG_CLUSTER_ENABLED = 0x10 /* untested */
+ } dfs_PropertyFlags;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *comment;
+ dfs_VolumeState state;
+ uint32 timeout;
+ GUID guid;
+ dfs_PropertyFlags flags;
+ uint32 pktsize;
+ uint32 num_stores;
+ } dfs_Info5;
+
+ typedef [v1_enum] enum {
+ DFS_INVALID_PRIORITY_CLASS = -1,
+ DFS_SITE_COST_NORMAL_PRIORITY_CLASS = 0,
+ DFS_GLOBAL_HIGH_PRIORITY_CLASS = 1,
+ DFS_SITE_COST_HIGH_PRIORITY_CLASS = 2,
+ DFS_SITE_COST_LOW_PRIORITY_CLASS = 3,
+ DFS_GLOBAL_LOW_PRIORITY_CLASS = 4
+ } dfs_Target_PriorityClass;
+
+ typedef struct {
+ dfs_Target_PriorityClass target_priority_class;
+ uint16 target_priority_rank;
+ uint16 reserved;
+ } dfs_Target_Priority;
+
+ typedef struct {
+ dfs_StorageInfo info;
+ dfs_Target_Priority target_priority;
+ } dfs_StorageInfo2;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *entry_path;
+ [string,charset(UTF16)] uint16 *comment;
+ dfs_VolumeState state;
+ uint32 timeout;
+ GUID guid;
+ dfs_PropertyFlags flags;
+ uint32 pktsize;
+ uint16 num_stores;
+ [size_is(num_stores)] dfs_StorageInfo2 *stores;
+ } dfs_Info6;
+
+ typedef struct {
+ GUID generation_guid;
+ } dfs_Info7;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *comment;
+ } dfs_Info100;
+
+ typedef struct {
+ dfs_StorageState state;
+ } dfs_Info101;
+
+ typedef struct {
+ uint32 timeout;
+ } dfs_Info102;
+
+ typedef struct {
+ dfs_PropertyFlags flags;
+ } dfs_Info103;
+
+ typedef struct {
+ dfs_Target_Priority priority;
+ } dfs_Info104;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *comment;
+ dfs_VolumeState state;
+ uint32 timeout;
+ uint32 property_flag_mask;
+ uint32 property_flags;
+ } dfs_Info105;
+
+ typedef struct {
+ dfs_StorageState state;
+ dfs_Target_Priority priority;
+ } dfs_Info106;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *dom_root;
+ } dfs_Info200;
+
+ typedef enum {
+ DFS_VOLUME_FLAVOR_STANDALONE = 0x100,
+ DFS_VOLUME_FLAVOR_AD_BLOB = 0x200
+ } dfs_VolumeFlavor;
+
+ typedef struct {
+ dfs_VolumeFlavor flavor;
+ [string,charset(UTF16)] uint16 *dom_root;
+ } dfs_Info300;
+
+ typedef union {
+ [case(0)] dfs_Info0 *info0;
+ [case(1)] dfs_Info1 *info1;
+ [case(2)] dfs_Info2 *info2;
+ [case(3)] dfs_Info3 *info3;
+ [case(4)] dfs_Info4 *info4;
+ [case(5)] dfs_Info5 *info5;
+ [case(6)] dfs_Info6 *info6;
+ [case(7)] dfs_Info7 *info7;
+ [case(100)] dfs_Info100 *info100;
+ [case(101)] dfs_Info101 *info101;
+ [case(102)] dfs_Info102 *info102;
+ [case(103)] dfs_Info103 *info103;
+ [case(104)] dfs_Info104 *info104;
+ [case(105)] dfs_Info105 *info105;
+ [case(106)] dfs_Info106 *info106;
+ } dfs_Info;
+
+ WERROR dfs_SetInfo (
+ [in] [string,charset(UTF16)] uint16 dfs_entry_path[],
+ [in,unique] [string,charset(UTF16)] uint16 *servername,
+ [in,unique] [string,charset(UTF16)] uint16 *sharename,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] dfs_Info *info
+ );
+
+ /******************/
+ /* Function: 0x04 */
+ WERROR dfs_GetInfo (
+ [in] [string,charset(UTF16)] uint16 dfs_entry_path[],
+ [in,unique] [string,charset(UTF16)] uint16 *servername,
+ [in,unique] [string,charset(UTF16)] uint16 *sharename,
+ [in] uint32 level,
+ [out,switch_is(level)] dfs_Info *info
+ );
+
+ /******************/
+ /* Function: 0x05 */
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] dfs_Info1 *s;
+ } dfs_EnumArray1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] dfs_Info2 *s;
+ } dfs_EnumArray2;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] dfs_Info3 *s;
+ } dfs_EnumArray3;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] dfs_Info4 *s;
+ } dfs_EnumArray4;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] dfs_Info200 *s;
+ } dfs_EnumArray200;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] dfs_Info300 *s;
+ } dfs_EnumArray300;
+
+
+ typedef union {
+ [case(1)] dfs_EnumArray1 *info1;
+ [case(2)] dfs_EnumArray2 *info2;
+ [case(3)] dfs_EnumArray3 *info3;
+ [case(4)] dfs_EnumArray4 *info4;
+ [case(200)] dfs_EnumArray200 *info200;
+ [case(300)] dfs_EnumArray300 *info300;
+ } dfs_EnumInfo;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] dfs_EnumInfo e;
+ } dfs_EnumStruct;
+
+ WERROR dfs_Enum (
+ [in] uint32 level,
+ [in] uint32 bufsize,
+ [in,out,unique] dfs_EnumStruct *info,
+ [in,out,unique] uint32 *total
+ );
+
+ /* Function 0x06 */
+ WERROR dfs_Rename();
+
+ /* Function 0x07 */
+ WERROR dfs_Move();
+
+ /* Function 0x08 */
+ WERROR dfs_ManagerGetConfigInfo();
+
+ /* Function 0x09 */
+ WERROR dfs_ManagerSendSiteInfo();
+
+ /* Function 0x0a */
+ typedef struct {
+ uint32 unknown1;
+ [string,charset(UTF16)] uint16 *unknown2;
+ } dfs_UnknownStruct;
+
+ WERROR dfs_AddFtRoot(
+ [in] [string,charset(UTF16)] uint16 servername[],
+ [in] [string,charset(UTF16)] uint16 dns_servername[],
+ [in] [string,charset(UTF16)] uint16 dfsname[],
+ [in] [string,charset(UTF16)] uint16 rootshare[],
+ [in] [string,charset(UTF16)] uint16 comment[],
+ [in] [string,charset(UTF16)] uint16 dfs_config_dn[],
+ [in] uint8 unknown1,
+ [in] uint32 flags,
+ [in,out,unique] dfs_UnknownStruct **unknown2
+ );
+
+ /* Function 0x0b */
+ WERROR dfs_RemoveFtRoot(
+ [in] [string,charset(UTF16)] uint16 servername[],
+ [in] [string,charset(UTF16)] uint16 dns_servername[],
+ [in] [string,charset(UTF16)] uint16 dfsname[],
+ [in] [string,charset(UTF16)] uint16 rootshare[],
+ [in] uint32 flags,
+ [in,out,unique] dfs_UnknownStruct **unknown
+ );
+
+ /* Function 0x0c */
+ WERROR dfs_AddStdRoot(
+ [in] [string,charset(UTF16)] uint16 servername[],
+ [in] [string,charset(UTF16)] uint16 rootshare[],
+ [in] [string,charset(UTF16)] uint16 comment[],
+ [in] uint32 flags
+ );
+
+ /* Function 0x0d */
+ WERROR dfs_RemoveStdRoot(
+ [in] [string,charset(UTF16)] uint16 servername[],
+ [in] [string,charset(UTF16)] uint16 rootshare[],
+ [in] uint32 flags
+ );
+
+ /* Function 0x0e */
+ WERROR dfs_ManagerInitialize(
+ [in] [string,charset(UTF16)] uint16 *servername,
+ [in] uint32 flags
+ );
+
+ /* Function 0x0f */
+ WERROR dfs_AddStdRootForced(
+ [in] [string,charset(UTF16)] uint16 servername[],
+ [in] [string,charset(UTF16)] uint16 rootshare[],
+ [in] [string,charset(UTF16)] uint16 comment[],
+ [in] [string,charset(UTF16)] uint16 store[] /* C:\\whatever */
+ );
+
+ /* Function 0x10 */
+ WERROR dfs_GetDcAddress();
+
+ /* Function 0x11 */
+ WERROR dfs_SetDcAddress();
+
+ /* Function 0x12 */
+ WERROR dfs_FlushFtTable(
+ [in] [string,charset(UTF16)] uint16 servername[],
+ [in] [string,charset(UTF16)] uint16 rootshare[]
+ );
+
+ /* Function 0x13 */
+ WERROR dfs_Add2();
+
+ /* Function 0x14 */
+ WERROR dfs_Remove2();
+
+ /* Function 0x15 */
+ [public] WERROR dfs_EnumEx(
+ [in] [string,charset(UTF16)] uint16 dfs_name[],
+ [in] uint32 level,
+ [in] uint32 bufsize,
+ [in,out,unique] dfs_EnumStruct *info,
+ [in,out,unique] uint32 *total
+ );
+
+ /* Function 0x16 */
+ WERROR dfs_SetInfo2();
+}
diff --git a/epan/dissectors/pidl/dnsserver/dnsserver.cnf b/epan/dissectors/pidl/dnsserver/dnsserver.cnf
new file mode 100644
index 00000000..ab89c333
--- /dev/null
+++ b/epan/dissectors/pidl/dnsserver/dnsserver.cnf
@@ -0,0 +1,84 @@
+#
+# DNS_RPC_NAME
+#
+MANUAL dnsserver_dissect_struct_DNS_RPC_NAME
+HF_FIELD hf_dnsserver_DNS_RPC_NAME_name "Name" "dnsserver.DNS_RPC_NAME.name" FT_STRING BASE_NONE NULL 0 "" "" ""
+
+
+#
+# DNS_RPC_NODE
+#
+MANUAL dnsserver_dissect_element_DNS_RPC_NODE_RecordCount
+MANUAL dnsserver_dissect_element_DNS_RPC_NODE_records
+
+
+NOEMIT dnsserver_dissect_element_DNS_RPC_NAME_NameLength
+NOEMIT dnsserver_dissect_element_DNS_RPC_NAME_Name
+NOEMIT dnsserver_dissect_element_DNS_RPC_NAME_Name_
+
+CODE START
+
+int
+dnsserver_dissect_struct_DNS_RPC_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ guint8 len;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RPC_NAME);
+ }
+
+ offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, di, drep, hf_dnsserver_DNS_RPC_NAME_NameLength, &len);
+ proto_tree_add_item(tree, hf_dnsserver_DNS_RPC_NAME_name, tvb,
+ offset, len, ENC_UTF_8);
+ offset += len;
+
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
+
+
+static guint16 node_record_count;
+
+static int
+dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_dnsserver_DNS_RPC_NODE_RecordCount, &node_record_count);
+
+ return offset;
+}
+
+static int
+dnsserver_dissect_element_DNS_RPC_NODE_records(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ while(node_record_count--){
+ offset = dnsserver_dissect_element_DNS_RPC_NODE_records_(tvb, offset, pinfo, tree, di, drep);
+ }
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/dnsserver/dnsserver.idl b/epan/dissectors/pidl/dnsserver/dnsserver.idl
new file mode 100644
index 00000000..c71b8eb1
--- /dev/null
+++ b/epan/dissectors/pidl/dnsserver/dnsserver.idl
@@ -0,0 +1,402 @@
+/*
+ dnsserver interface definition
+*/
+
+[ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
+ version(5.0),
+ pointer_default(unique),
+ helpstring("DNS Server")
+] interface dnsserver
+{
+
+ typedef [v1_enum] enum {
+ DNS_CLIENT_VERSION_W2K = 0x00000000,
+ DNS_CLIENT_VERSION_DOTNET = 0x00000006,
+ DNS_CLIENT_VERSION_LONGHORN = 0x00000007
+ } DNS_RPC_CLIENT_VERSION;
+
+ typedef [flag(NDR_ALIGN4)] struct {
+ uint8 OSMajorVersion;
+ uint8 OSMinorVersion;
+ uint16 ServicePackVersion;
+ } DNS_RPC_VERSION;
+
+ typedef [enum8bit] enum {
+ DNS_RPC_BOOT_METHOD_FILE = 0x01,
+ DNS_RPC_BOOT_METHOD_REGISTRY = 0x02,
+ DNS_RPC_BOOT_METHOD_DIRECTORY = 0x03
+ } DNS_RPC_BOOT_METHOD;
+
+
+ const uint32 DNS_LOG_LEVEL_ALL_PACKETS = 0x0000ffff;
+ const uint32 DNS_LOG_LEVEL_NON_QUERY = 0x000000fe;
+ typedef [bitmap32bit] bitmap {
+ DNS_LOG_LEVEL_QUERY = 0x00000001,
+ DNS_LOG_LEVEL_NOTIFY = 0x00000010,
+ DNS_LOG_LEVEL_UPDATE = 0x00000020,
+ DNS_LOG_LEVEL_QUESTIONS = 0x00000100,
+ DNS_LOG_LEVEL_ANSWERS = 0x00000200,
+ DNS_LOG_LEVEL_SEND = 0x00001000,
+ DNS_LOG_LEVEL_RECV = 0x00002000,
+ DNS_LOG_LEVEL_UDP = 0x00004000,
+ DNS_LOG_LEVEL_TCP = 0x00008000,
+ DNS_LOG_LEVEL_FULL_PACKETS = 0x01000000,
+ DNS_LOG_LEVEL_WRITE_THROUGH = 0x80000000
+ } DNS_LOG_LEVELS;
+
+ const uint32 DNS_RPC_USE_ALL_PROTOCOLS = 0xffffffff;
+ typedef [bitmap32bit] bitmap {
+ DNS_RPC_USE_TCPIP = 0x00000001,
+ DNS_RPC_USE_NAMED_PIPE = 0x00000002,
+ DNS_RPC_USE_LPC = 0x00000004
+ } DNS_RPC_PROTOCOLS;
+
+ typedef [v1_enum] enum {
+ DNS_ALLOW_RFC_NAMES_ONLY = 0x00000000,
+ DNS_ALLOW_NONRFC_NAMES = 0x00000001,
+ DNS_ALLOW_MULTIBYTE_NAMES = 0x00000002,
+ DNS_ALLOW_ALL_NAMES = 0x00000003
+ } DNS_NAME_CHECK_FLAGS;
+
+ typedef [enum16bit] enum {
+ DNS_TYPE_ZERO = 0x0000,
+ DNS_TYPE_A = 0x0001,
+ DNS_TYPE_NS = 0x0002,
+ DNS_TYPE_MD = 0x0003,
+ DNS_TYPE_MF = 0x0004,
+ DNS_TYPE_CNAME = 0x0005,
+ DNS_TYPE_SOA = 0x0006,
+ DNS_TYPE_MB = 0x0007,
+ DNS_TYPE_MG = 0x0008,
+ DNS_TYPE_MR = 0x0009,
+ DNS_TYPE_NULL = 0x000a,
+ DNS_TYPE_WKS = 0x000b,
+ DNS_TYPE_PTR = 0x000c,
+ DNS_TYPE_HINFO = 0x000d,
+ DNS_TYPE_MINFO = 0x000e,
+ DNS_TYPE_MX = 0x000f,
+ DNS_TYPE_TXT = 0x0010,
+ DNS_TYPE_RP = 0x0011,
+ DNS_TYPE_AFSDB = 0x0012,
+ DNS_TYPE_X25 = 0x0013,
+ DNS_TYPE_ISDN = 0x0014,
+ DNS_TYPE_RT = 0x0015,
+ DNS_TYPE_NSAP = 0x0016,
+ DNS_TYPE_NSAPPTR = 0x0017,
+ DNS_TYPE_SIG = 0x0018,
+ DNS_TYPE_KEY = 0x0019,
+ DNS_TYPE_PX = 0x001a,
+ DNS_TYPE_GPOS = 0x001b,
+ DNS_TYPE_AAAA = 0x001c,
+ DNS_TYPE_LOC = 0x001d,
+ DNS_TYPE_NXT = 0x001e,
+ DNS_TYPE_SRV = 0x0021,
+ DNS_TYPE_ATMA = 0x0022,
+ DNS_TYPE_NAPTR = 0x0023,
+ DNS_TYPE_DNAME = 0x0024,
+ DNS_TYPE_ALL = 0x00ff,
+ DNS_TYPE_WINS = 0xff01,
+ DNS_TYPE_WINSR = 0xff02
+ } DNS_RECORD_TYPE;
+
+ typedef [bitmap32bit] bitmap {
+ DNS_RPC_VIEW_AUTHORITY_DATA = 0x00000001,
+ DNS_RPC_VIEW_CACHE_DATA = 0x00000002,
+ DNS_RPC_VIEW_GLUE_DATA = 0x00000004,
+ DNS_RPC_VIEW_ROOT_HINT_DATA = 0x00000008,
+ DNS_RPC_VIEW_ADDITIONAL_DATA = 0x00000010,
+ DNS_RPC_VIEW_NO_CHILDREN = 0x00010000,
+ DNS_RPC_VIEW_ONLY_CHILDREN = 0x00020000
+ } DNS_SELECT_FLAGS;
+
+ typedef [bitmap32bit] bitmap {
+ DNS_RPC_FLAG_CACHE_DATA = 0x80000000,
+ DNS_RPC_FLAG_ZONE_ROOT = 0x40000000,
+ DNS_RPC_FLAG_AUTH_ZONE_ROOT = 0x20000000,
+ DNS_RPC_FLAG_ZONE_DELEGATION = 0x10000000,
+ DNS_RPC_FLAG_RECOR_DEFAULT_TTL = 0x08000000,
+ DNS_RPC_FLAG_RECORD_TTL_CHANGE = 0x04000000,
+ DNS_RPC_FLAG_RECORD_CREATE_PTR = 0x02000000,
+ DNS_RPC_FLAG_NODE_STICKY = 0x01000000,
+ DNS_RPC_FLAG_NODE_COMPLETE = 0x00800000,
+ DNS_RPC_FLAG_OPEN_ACL = 0x00040000,
+ DNS_RPC_FLAG_AGING_ON = 0x00020000,
+ DNS_RPC_FLAG_SUPPRESS_NOTIFY = 0x00010000
+ } DNS_RPC_NODE_FLAGS;
+
+ /* 2.2.2.2.1 this cant really be described in IDL :-( */
+ typedef struct {
+ uint8 NameLength;
+ uint8 Name[NameLength];
+ } DNS_RPC_NAME;
+
+ typedef struct {
+ DNS_RPC_NAME Name;
+ } DNS_RPC_RECORD_NODE_NAME;
+
+/* typedef [nodiscriminant] union { */
+ typedef union {
+ [case(2)] DNS_RPC_RECORD_NODE_NAME NodeName;
+ } DNS_RPC_RECORD_UNION;
+
+ typedef struct {
+ uint16 DataLength; /* size of */
+ DNS_RECORD_TYPE Type;
+ uint32 Flags;
+ uint32 Serial;
+ uint32 TtlSeconds;
+ uint32 TimeStamp;
+ uint32 reserved;
+ [switch_is(Type)] DNS_RPC_RECORD_UNION record;
+ } DNS_RPC_RECORD;
+
+ typedef struct {
+ uint16 Length;
+ uint16 RecordCount;
+ DNS_RPC_NODE_FLAGS Flags;
+ uint32 Childcount;
+ DNS_RPC_NAME NodeName;
+ DNS_RPC_RECORD records[RecordCount];
+ } DNS_RPC_NODE;
+/* XXX */
+
+
+ typedef struct {
+ uint32 AddrCount;
+ [size_is(AddrCount)] uint32 AddrArray[];
+ } IP4_ARRAY;
+
+/* XXX */
+ typedef struct {
+ uint32 RpcStructureVersion;
+ uint32 reserved0;
+ DNS_RPC_VERSION Version;
+ DNS_RPC_BOOT_METHOD BootMethod;
+ boolean8 AdminConfigured;
+ boolean8 AllowUpdate;
+ boolean8 DsAvailable;
+ [unique, string] uint8 *ServerName;
+ [unique, string, charset(UTF16)] uint16 *DsContainer;
+ [unique] IP4_ARRAY *ServerAddrs;
+ [unique] IP4_ARRAY *ListenAddrs;
+ [unique] IP4_ARRAY *Forwarders;
+ [unique] IP4_ARRAY *LogFilter;
+ [unique, string, charset(UTF16)] uint16 *LogFilePath;
+ [unique, string] uint8 *DomainName;
+ [unique, string] uint8 *ForestName;
+ [unique, string] uint8 *DomainDirectoryPartition;
+ [unique, string] uint8 *ForestDirectoryPartition;
+ [unique, string] uint8 *extension0;
+ [unique, string] uint8 *extension1;
+ [unique, string] uint8 *extension2;
+ [unique, string] uint8 *extension3;
+ [unique, string] uint8 *extension4;
+ [unique, string] uint8 *extension5;
+ DNS_LOG_LEVELS LogLevel;
+ uint32 DebugLevel;
+ uint32 ForwardTimeout;
+ DNS_RPC_PROTOCOLS RpcProtocol;
+ DNS_NAME_CHECK_FLAGS NameCheckFlag;
+ uint32 AddressAnswerLimit;
+ uint32 RecursionRetry;
+ uint32 RecursionTimeout;
+ uint32 MaxCacheTtl;
+ uint32 DsPollingInterval;
+ uint32 LocalNetPriorityNetmask;
+ uint32 ScavengingInterval;
+ uint32 DefaultRefreshInterval;
+ uint32 DefaultNoRefreshInterval;
+ uint32 LastScavengeTime;
+ uint32 EventLogLevel;
+ uint32 LogFileMaxSize;
+ uint32 DsForestVersion;
+ uint32 DsDomainVersion;
+ uint32 DsDsaVersion;
+ uint32 reserve_array[4];
+ boolean8 AutoReverseZones;
+ boolean8 AutoCacheUpdate;
+ boolean8 RecurseAfterForwarding;
+ boolean8 ForwardDelegations;
+ boolean8 NoRecursion;
+ boolean8 SecureResponses;
+ boolean8 RoundRobin;
+ boolean8 LocalNetPriority;
+ boolean8 BindSecondaries;
+ boolean8 WriteAuthorityNs;
+ boolean8 StrictFileParsing;
+ boolean8 LooseWildcarding;
+ boolean8 DefaultAgingState;
+ boolean8 reserve_array2[15];
+ } DNS_RPC_SERVER_INFO_DOTNET;
+/* XXX */
+
+ typedef [v1_enum, flag(NDR_PAHEX)] enum {
+ DNSSRV_TYPEID_NULL = 0,
+ DNSSRV_TYPEID_DWORD = 1,
+ DNSSRV_TYPEID_LPSTR = 2,
+ DNSSRV_TYPEID_LPWSTR = 3,
+ DNSSRV_TYPEID_IPARRAY = 4,
+ DNSSRV_TYPEID_BUFFER = 5,
+ DNSSRV_TYPEID_SERVER_INFO_W2K = 6,
+ DNSSRV_TYPEID_STATS = 7,
+ DNSSRV_TYPEID_FORWARDERS_W2K = 8,
+ DNSSRV_TYPEID_ZONE_W2K = 9,
+ DNSSRV_TYPEID_ZONE_INFO_W2K = 10,
+ DNSSRV_TYPEID_ZONE_SECONDARIES_W2K = 11,
+ DNSSRV_TYPEID_ZONE_DATABASE_W2K = 12,
+ DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K = 13,
+ DNSSRV_TYPEID_ZONE_CREATE_W2K = 14,
+ DNSSRV_TYPEID_NAME_AND_PARAM = 15,
+ DNSSRV_TYPEID_ZONE_LIST_W2K = 16,
+ DNSSRV_TYPEID_ZONE_RENAME = 17,
+ DNSSRV_TYPEID_ZONE_EXPORT = 18,
+ DNSSRV_TYPEID_SERVER_INFO_DOTNET = 19,
+ DNSSRV_TYPEID_FORWARDERS_DOTNET = 20,
+ DNSSRV_TYPEID_ZONE = 21,
+ DNSSRV_TYPEID_ZONE_INFO_DOTNET = 22,
+ DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET = 23,
+ DNSSRV_TYPEID_ZONE_DATABASE = 24,
+ DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET = 25,
+ DNSSRV_TYPEID_ZONE_CREATE_DOTNET = 26,
+ DNSSRV_TYPEID_ZONE_LIST = 27,
+ DNSSRV_TYPEID_DP_ENUM = 28,
+ DNSSRV_TYPEID_DP_INFO = 29,
+ DNSSRV_TYPEID_DP_LIST = 30,
+ DNSSRV_TYPEID_ENLIST_DP = 31,
+ DNSSRV_TYPEID_ZONE_CHANGE_DP = 32,
+ DNSSRV_TYPEID_ENUM_ZONES_FILTER = 33,
+ DNSSRV_TYPEID_ADDARRAY = 34,
+ DNSSRV_TYPEID_SERVER_INFO = 35,
+ DNSSRV_TYPEID_ZONE_INFO = 36,
+ DNSSRV_TYPEID_FORWARDERS = 37,
+ DNSSRV_TYPEID_ZONE_SECONDARIES = 38,
+ DNSSRV_TYPEID_ZONE_TYPE_RESET = 39,
+ DNSSRV_TYPEID_ZONE_CREATE = 40,
+ DNSSRV_TYPEID_IP_VALIDATE = 41,
+ DNSSRV_TYPEID_AUTOCONFIGURE = 42,
+ DNSSRV_TYPEID_UTF8_STRING_LIST = 43,
+ DNSSRV_TYPEID_UNICODE_STRING_LIST = 44
+ } DnssrvRpcTypeId;
+
+ typedef union {
+ [case(DNSSRV_TYPEID_NULL)] uint8 *null;
+ [case(DNSSRV_TYPEID_DWORD)] uint32 dword;
+/* DNSSRV_TYPEID_LPSTR = 2,*/
+/* DNSSRV_TYPEID_LPWSTR = 3,*/
+/* DNSSRV_TYPEID_IPARRAY = 4,*/
+/* DNSSRV_TYPEID_BUFFER = 5,*/
+/* DNSSRV_TYPEID_SERVER_INFO_W2K = 6,*/
+/* DNSSRV_TYPEID_STATS = 7,*/
+/* DNSSRV_TYPEID_FORWARDERS_W2K = 8,*/
+/* DNSSRV_TYPEID_ZONE_W2K = 9,*/
+/* DNSSRV_TYPEID_ZONE_INFO_W2K = 10,*/
+/* DNSSRV_TYPEID_ZONE_SECONDARIES_W2K = 11,*/
+/* DNSSRV_TYPEID_ZONE_DATABASE_W2K = 12,*/
+/* DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K = 13,*/
+/* DNSSRV_TYPEID_ZONE_CREATE_W2K = 14,*/
+/* DNSSRV_TYPEID_NAME_AND_PARAM = 15,*/
+/* DNSSRV_TYPEID_ZONE_LIST_W2K = 16,*/
+/* DNSSRV_TYPEID_ZONE_RENAME = 17,*/
+/* DNSSRV_TYPEID_ZONE_EXPORT = 18,*/
+ [case(DNSSRV_TYPEID_SERVER_INFO_DOTNET)] DNS_RPC_SERVER_INFO_DOTNET *ServerInfoDotnet;
+/* DNSSRV_TYPEID_FORWARDERS_DOTNET = 20,*/
+/* DNSSRV_TYPEID_ZONE = 21,*/
+/* DNSSRV_TYPEID_ZONE_INFO_DOTNET = 22,*/
+/* DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET = 23,*/
+/* DNSSRV_TYPEID_ZONE_DATABASE = 24,*/
+/* DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET = 25,*/
+/* DNSSRV_TYPEID_ZONE_CREATE_DOTNET = 26,*/
+/* DNSSRV_TYPEID_ZONE_LIST = 27,*/
+/* DNSSRV_TYPEID_DP_ENUM = 28,*/
+/* DNSSRV_TYPEID_DP_INFO = 29,*/
+/* DNSSRV_TYPEID_DP_LIST = 30,*/
+/* DNSSRV_TYPEID_ENLIST_DP = 31,*/
+/* DNSSRV_TYPEID_ZONE_CHANGE_DP = 32,*/
+/* DNSSRV_TYPEID_ENUM_ZONES_FILTER = 33,*/
+/* DNSSRV_TYPEID_ADDARRAY = 34,*/
+/* DNSSRV_TYPEID_SERVER_INFO = 35,*/
+/* DNSSRV_TYPEID_ZONE_INFO = 36,*/
+/* DNSSRV_TYPEID_FORWARDERS = 37,*/
+/* DNSSRV_TYPEID_ZONE_SECONDARIES = 38,*/
+/* DNSSRV_TYPEID_ZONE_TYPE_RESET = 39,*/
+/* DNSSRV_TYPEID_ZONE_CREATE = 40,*/
+/* DNSSRV_TYPEID_IP_VALIDATE = 41,*/
+/* DNSSRV_TYPEID_AUTOCONFIGURE = 42,*/
+/* DNSSRV_TYPEID_UTF8_STRING_LIST = 43,*/
+/* DNSSRV_TYPEID_UNICODE_STRING_LIST = 44*/
+ } DNSSRV_RPC_UNION;
+
+
+ /******************/
+ /* Function: 0x00 */
+ NTSTATUS DnssrvOperation (
+ );
+
+ /******************/
+ /* Function: 0x01 */
+ NTSTATUS DnssrvQuery (
+ );
+
+ /******************/
+ /* Function: 0x02 */
+ NTSTATUS DnssrvComplexOperation (
+ );
+
+ /******************/
+ /* Function: 0x03 */
+ NTSTATUS DnssrvEnumRecords (
+ );
+
+ /******************/
+ /* Function: 0x04 */
+ NTSTATUS DnssrvUpdateRecord (
+ );
+
+ /******************/
+ /* Function: 0x05 */
+ NTSTATUS DnssrvOperation2 (
+ );
+
+ /******************/
+ /* Function: 0x06 */
+ NTSTATUS DnssrvQuery2 (
+ [in] DNS_RPC_CLIENT_VERSION client_version,
+ [in] uint32 setting_flags,
+ [in, unique, string, charset(UTF16)] uint16 *server_name,
+ [in, unique, string] uint8 *zone,
+ [in, unique, string] uint8 *operation,
+ [out, ref] DnssrvRpcTypeId *type_id,
+ [out, ref, switch_is(*type_id)] DNSSRV_RPC_UNION *data
+ );
+
+ /******************/
+ /* Function: 0x07 */
+ NTSTATUS DnssrvComplexOperation2 (
+ );
+
+ typedef struct {
+ DNS_RPC_NODE rpc_node;
+ } DNS_RECORD_BUFFER;
+
+ /******************/
+ /* Function: 0x08 */
+ NTSTATUS DnssrvEnumRecords2 (
+ [in] DNS_RPC_CLIENT_VERSION client_version,
+ [in] uint32 setting_flags,
+ [in, unique, string, charset(UTF16)] uint16 *server_name,
+ [in, unique, string] uint8 *zone,
+ [in, unique, string] uint8 *node_name,
+ [in, unique, string] uint8 *start_child,
+ [in] DNS_RECORD_TYPE record_type,
+ [in] DNS_SELECT_FLAGS select_flag,
+ [in, unique, string] uint8 *filter_start,
+ [in, unique, string] uint8 *filter_stop,
+ [out,ref] uint32 *buffer_length,
+ [out, unique, subcontext(4)] DNS_RPC_NODE *record_buffer
+ );
+
+ /******************/
+ /* Function: 0x09 */
+ NTSTATUS DnssrvUpdateRecord2 (
+ );
+}
diff --git a/epan/dissectors/pidl/drsuapi/drsuapi.cnf b/epan/dissectors/pidl/drsuapi/drsuapi.cnf
new file mode 100644
index 00000000..305e6907
--- /dev/null
+++ b/epan/dissectors/pidl/drsuapi/drsuapi.cnf
@@ -0,0 +1,119 @@
+# conformance file for DRSUAPI
+#
+
+MANUAL drsuapi_dissect_element_DsBindInfoCtr_length
+MANUAL drsuapi_dissect_element_DsBindInfoCtr_info
+MANUAL drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next_
+MANUAL drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object_
+MANUAL drsuapi_dissect_element_DsReplicaObjectListItem_next_object_
+MANUAL drsuapi_dissect_element_DsaAddressListItem_V1_next_
+MANUAL drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next_
+MANUAL drsuapi_dissect_element_DsCrackNames_ctr_
+MANUAL drsuapi_dissect_ReadNgcKeyReply
+
+TYPE lsa_String "offset=dissect_ndr_counted_string(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_STRING BASE_NONE 0 NULL 4
+
+CODE START
+
+static int
+drsuapi_dissect_element_DsBindInfoCtr_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint3264 *length _U_)
+{
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_length, NULL);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_DsBindInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+static int
+drsuapi_dissect_element_DsBindInfoCtr_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint3264 *length)
+{
+ if(di->conformant_run){
+ return offset;
+ }
+ offset = drsuapi_dissect_DsBindInfo(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsBindInfoCtr_info, (guint32)*length);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_DsNameCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+static int
+drsuapi_dissect_element_DsCrackNames_ctr_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ ALIGN_TO_5_BYTES;
+ offset = drsuapi_dissect_DsNameCtr(tvb, offset, pinfo, tree, di, drep, hf_drsuapi_drsuapi_DsCrackNames_ctr, 0);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_AttrErrListItem_V1_next_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = drsuapi_dissect_struct_DsAddEntry_AttrErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_AttrErrListItem_V1_next,0);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectListItemEx_next_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = drsuapi_dissect_struct_DsReplicaObjectListItemEx(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsGetNCChangesCtr1_first_object,0);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_element_DsReplicaObjectListItem_next_object_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = drsuapi_dissect_struct_DsReplicaObjectListItem(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryRequest2_first_object,0);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_element_DsaAddressListItem_V1_next_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = drsuapi_dissect_struct_DsaAddressListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntry_RefErrListItem_V1_addr_list,0);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_element_DsAddEntry_RefErrListItem_V1_next_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = drsuapi_dissect_struct_DsAddEntry_RefErrListItem_V1(tvb,offset,pinfo,tree,di,drep,hf_drsuapi_drsuapi_DsAddEntryErrorInfo_Referr_V1_refer,0);
+
+ return offset;
+}
+
+static int
+drsuapi_dissect_ReadNgcKeyReply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ guint32 level;
+
+ ALIGN_TO_5_BYTES;
+
+ old_offset = offset;
+ if (parent_tree) {
+ tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_drsuapi_drsuapi_ReadNgcKeyReply, &item, "drsuapi_ReadNgcKeyReply");
+ }
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
+ ALIGN_TO_5_BYTES;
+
+ switch(level) {
+ case 1:
+ offset = drsuapi_dissect_element_ReadNgcKeyReply_V1(tvb, offset, pinfo, tree, di, drep);
+ break;
+ }
+ proto_item_set_len(item, offset-old_offset);
+
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/drsuapi/drsuapi.idl b/epan/dissectors/pidl/drsuapi/drsuapi.idl
new file mode 100644
index 00000000..c4db864c
--- /dev/null
+++ b/epan/dissectors/pidl/drsuapi/drsuapi.idl
@@ -0,0 +1,1957 @@
+#include "idl_types.h"
+
+import "misc.idl", "lsa.idl", "samr.idl";
+
+[
+ uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
+ version(4.0),
+ endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]", "ncacn_ip_tcp:", "ncalrpc:"),
+ authservice("ldap"),
+ helpstring("Active Directory Replication"),
+ pointer_default(unique)
+]
+interface drsuapi
+{
+ typedef bitmap security_GroupAttrs security_GroupAttrs;
+
+ /* see MS-DRSR section 5.39 */
+ typedef [public,bitmap32bit] bitmap {
+ DRSUAPI_DRS_ASYNC_OP = 0x00000001,
+ DRSUAPI_DRS_GETCHG_CHECK = 0x00000002,
+ DRSUAPI_DRS_UPDATE_NOTIFICATION = 0x00000002,
+ DRSUAPI_DRS_ADD_REF = 0x00000004,
+ DRSUAPI_DRS_SYNC_ALL = 0x00000008,
+ DRSUAPI_DRS_DEL_REF = 0x00000008,
+ DRSUAPI_DRS_WRIT_REP = 0x00000010,
+ DRSUAPI_DRS_INIT_SYNC = 0x00000020,
+ DRSUAPI_DRS_PER_SYNC = 0x00000040,
+ DRSUAPI_DRS_MAIL_REP = 0x00000080,
+ DRSUAPI_DRS_ASYNC_REP = 0x00000100,
+ DRSUAPI_DRS_IGNORE_ERROR = 0x00000100,
+ DRSUAPI_DRS_TWOWAY_SYNC = 0x00000200,
+ DRSUAPI_DRS_CRITICAL_ONLY = 0x00000400,
+ DRSUAPI_DRS_GET_ANC = 0x00000800,
+ DRSUAPI_DRS_GET_NC_SIZE = 0x00001000,
+ DRSUAPI_DRS_LOCAL_ONLY = 0x00001000,
+ DRSUAPI_DRS_NONGC_RO_REP = 0x00002000,
+ DRSUAPI_DRS_SYNC_BYNAME = 0x00004000,
+ DRSUAPI_DRS_REF_OK = 0x00004000,
+ DRSUAPI_DRS_FULL_SYNC_NOW = 0x00008000,
+ DRSUAPI_DRS_NO_SOURCE = 0x00008000,
+ DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS = 0x00010000,
+ DRSUAPI_DRS_FULL_SYNC_PACKET = 0x00020000,
+ DRSUAPI_DRS_SYNC_REQUEUE = 0x00040000,
+ DRSUAPI_DRS_SYNC_URGENT = 0x00080000,
+ DRSUAPI_DRS_REF_GCSPN = 0x00100000,
+ DRSUAPI_DRS_NO_DISCARD = 0x00100000,
+ DRSUAPI_DRS_NEVER_SYNCED = 0x00200000,
+ DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING = 0x00400000,
+ DRSUAPI_DRS_INIT_SYNC_NOW = 0x00800000,
+ DRSUAPI_DRS_PREEMPTED = 0x01000000,
+ DRSUAPI_DRS_SYNC_FORCED = 0x02000000,
+ DRSUAPI_DRS_DISABLE_AUTO_SYNC = 0x04000000,
+ DRSUAPI_DRS_DISABLE_PERIODIC_SYNC = 0x08000000,
+ DRSUAPI_DRS_USE_COMPRESSION = 0x10000000,
+ DRSUAPI_DRS_NEVER_NOTIFY = 0x20000000,
+ DRSUAPI_DRS_SYNC_PAS = 0x40000000,
+ DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP = 0x80000000
+ } drsuapi_DrsOptions;
+
+ typedef [public,bitmap32bit] bitmap {
+ DRSUAPI_DRS_GET_TGT = 0x00000001
+ } drsuapi_DrsMoreOptions;
+
+ /* see DRS_MSG_REPMOD_V1 */
+ typedef [public,bitmap32bit] bitmap {
+ DRSUAPI_DRS_UPDATE_FLAGS = 0x00000001,
+ DRSUAPI_DRS_UPDATE_ADDRESS = 0x00000002,
+ DRSUAPI_DRS_UPDATE_SCHEDULE = 0x00000004
+ } drsuapi_DrsUpdate;
+
+ /*****************/
+ /* Function 0x00 drsuapi_DsBind() */
+
+ /* MS-DRSR 5.39 DRS_EXTENSIONS_INT */
+ typedef [bitmap32bit] bitmap {
+ DRSUAPI_SUPPORTED_EXTENSION_BASE = 0x00000001,
+ DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION = 0x00000002,
+ DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI = 0x00000004,
+ DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 = 0x00000008,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS = 0x00000010,
+ DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 = 0x00000020,
+ DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION = 0x00000040,
+ DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY = 0x00000080,
+ DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE = 0x00000100,
+ DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 = 0x00000200,
+ DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION = 0x00000400,
+ DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 = 0x00000800,
+ DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD= 0x00001000,
+ DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND = 0x00002000,
+ DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO = 0x00004000,
+ DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION = 0x00008000,
+ DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 = 0x00010000,
+ DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP = 0x00020000,
+ DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY = 0x00040000,
+ DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 = 0x00080000,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5 = 0x00100000,
+ DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 = 0x00200000,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 = 0x00400000,
+ DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS = 0x00800000,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 = 0x01000000,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 = 0x02000000,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 = 0x04000000,
+ /*
+ * the following 3 have the same value
+ * repadmin.exe /bind says that
+ */
+ DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 = 0x08000000,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 = 0x08000000,
+ DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT = 0x08000000,
+ DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS = 0x10000000,
+ DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10 = 0x20000000,
+ DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2 = 0x40000000,
+ DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3 = 0x80000000
+ } drsuapi_SupportedExtensions;
+
+ typedef [bitmap32bit] bitmap {
+ DRSUAPI_SUPPORTED_EXTENSION_ADAM = 0x00000001,
+ DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 = 0x00000002,
+ DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN = 0x00000004
+ } drsuapi_SupportedExtensionsExt;
+
+ /* this is used by w2k */
+ typedef [public] struct {
+ drsuapi_SupportedExtensions supported_extensions;
+ GUID site_guid;
+ uint32 pid;
+ } drsuapi_DsBindInfo24;
+
+ /* this is used by w2k3 */
+ typedef [public] struct {
+ drsuapi_SupportedExtensions supported_extensions;
+ GUID site_guid;
+ uint32 pid;
+ uint32 repl_epoch;
+ } drsuapi_DsBindInfo28;
+
+ typedef [public] struct {
+ drsuapi_SupportedExtensions supported_extensions;
+ GUID site_guid;
+ uint32 pid;
+ uint32 repl_epoch;
+ drsuapi_SupportedExtensionsExt supported_extensions_ext;
+ } drsuapi_DsBindInfo32;
+
+ /* this is used by w2k8 */
+ typedef [public] struct {
+ drsuapi_SupportedExtensions supported_extensions;
+ GUID site_guid;
+ uint32 pid;
+ uint32 repl_epoch;
+ drsuapi_SupportedExtensionsExt supported_extensions_ext;
+ GUID config_dn_guid;
+ } drsuapi_DsBindInfo48;
+
+ /* this is used by w2k12 R2 [MS-DRSR] Section 5.39 */
+ typedef [public] struct {
+ drsuapi_SupportedExtensions supported_extensions;
+ GUID site_guid;
+ uint32 pid;
+ uint32 repl_epoch;
+ drsuapi_SupportedExtensionsExt supported_extensions_ext;
+ GUID config_dn_guid;
+ drsuapi_SupportedExtensionsExt supported_capabilities_ext;
+ } drsuapi_DsBindInfo52;
+
+ typedef [public] struct {
+ [flag(NDR_REMAINING)] DATA_BLOB info;
+ } drsuapi_DsBindInfoFallBack;
+
+ typedef [nopull, nopush, noprint] union {
+ [case(24)] drsuapi_DsBindInfo24 info24;
+ [case(28)] drsuapi_DsBindInfo28 info28;
+ [case(32)] drsuapi_DsBindInfo32 info32;
+ [case(48)] drsuapi_DsBindInfo48 info48;
+ [case(52)] drsuapi_DsBindInfo52 info52;
+ /*
+ * The size for the default case is a bit arbitrary it in fact the value
+ * of the switch but we can't reference it.
+ * As we hand(un-)marshall this structure it has 0 impact and makes
+ * pidl happy for wireshark too
+ */
+ [default] drsuapi_DsBindInfoFallBack Fallback;
+ } drsuapi_DsBindInfo;
+
+ /* the drsuapi_DsBindInfoCtr was this before
+ * typedef [flag(NDR_PAHEX)] struct {
+ * [range(1,10000)] uint32 length;
+ * [size_is(length)] uint8 data[];
+ * } drsuapi_DsBindInfo;
+ *
+ * but we don't want the caller to manually decode this blob,
+ * so we're doing it here
+ */
+
+ /*
+ * MS-DRSR.pdf gives the following definition
+ typedef struct {
+ [range(1,10000)] DWORD cb;
+ [size_is(cb)] BYTE rgb[];
+ } DRS_EXTENSIONS;
+
+ But we use a subcontext which has a slightly different signification on how
+ data are laid out.
+ With the MS-DRSR definition we will have
+ size_is_cb cv rgb_array
+ with size_is_cb being a uint3264 and cv being a uint32
+
+ We used to have
+ typedef struct {
+ [range(1,10000)] uint32 length;
+ [switch_is(length)] drsuapi_DsBindInfo info;
+ } drsuapi_DsBindInfoCtr;
+
+ typedef [nodiscriminant] union {
+ [case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24;
+ [case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28;
+ [case(48)][subcontext(4)] drsuapi_DsBindInfo48 info48;
+ [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack;
+ } drsuapi_DsBindInfo;
+
+ With this definition data is laid out this way:
+ length subcontext_size drsuapi_DsBindInfoxx
+ with length being a uint32 and subcontext_size being a uint3264
+
+ It has clearly an impact on the way things are aligned when using NDR64
+ */
+ typedef [flag(NDR_NOALIGN)] struct {
+ [range(1,10000)] uint3264 length;
+ [switch_is(length)] drsuapi_DsBindInfo info;
+ } drsuapi_DsBindInfoCtr;
+
+ /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work
+ *
+ * maybe the bind_guid could also be the invocation_id see drsuapi_DsReplicaConnection04
+ */
+ const char *DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d";
+ /*
+ * this magic guid are needed to fetch the whole tree with drsuapi_DsGetNCChanges()
+ * as administrator and this values are also used in the destination_dsa_guid field
+ * of drsuapi_DsGetNCChangesReq5/8 and the source_dsa_guid is zero.
+ */
+ const char *DRSUAPI_DS_BIND_GUID_W2K = "6abec3d1-3054-41c8-a362-5a0c5b7d5d71";
+ const char *DRSUAPI_DS_BIND_GUID_W2K3 = "6afab99c-6e26-464a-975f-f58f105218bc";
+
+ [public] WERROR drsuapi_DsBind(
+ [in,unique] GUID *bind_guid,
+ [in,out,unique] drsuapi_DsBindInfoCtr *bind_info,
+ [out, ref] policy_handle *bind_handle
+ );
+
+ /*****************/
+ /* Function 0x01 */
+ WERROR drsuapi_DsUnbind(
+ [in,out] policy_handle *bind_handle
+ );
+
+ /*****************/
+ /* Function 0x02 */
+ typedef [public,gensize] struct {
+ [value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->flags)-4)] uint32 __ndr_size;
+ [value(ndr_size_dom_sid28(&sid, ndr->flags))] uint32 __ndr_size_sid;
+ GUID guid;
+ dom_sid28 sid;
+ [value(strlen_m(dn))] uint32 __ndr_size_dn;
+ [charset(UTF16),size_is(__ndr_size_dn+1)] uint16 dn[];
+ } drsuapi_DsReplicaObjectIdentifier;
+
+ typedef struct {
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ GUID source_dsa_guid;
+ [charset(DOS),string] char *source_dsa_dns; /* Source DSA dns_name in <guid>._msdcs.<domain_dns> form */
+ drsuapi_DrsOptions options;
+ } drsuapi_DsReplicaSyncRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsReplicaSyncRequest1 req1;
+ } drsuapi_DsReplicaSyncRequest;
+
+ WERROR drsuapi_DsReplicaSync(
+ [in] policy_handle *bind_handle,
+ [in] uint32 version,
+ [in,switch_is(version)] drsuapi_DsReplicaSyncRequest *req
+ );
+
+ /*****************/
+ /* Function 0x03 */
+ typedef [public] struct {
+ hyper tmp_highest_usn; /* updated after each object update */
+ hyper reserved_usn;
+ hyper highest_usn; /* updated after a full replication cycle */
+ } drsuapi_DsReplicaHighWaterMark;
+
+ typedef [public] struct {
+ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+ hyper highest_usn; /* updated after a full replication cycle */
+ } drsuapi_DsReplicaCursor;
+
+ typedef struct {
+ [value(1)] uint32 version;
+ [value(0)] uint32 reserved1;
+ [range(0,0x100000)] uint32 count;
+ [value(0)] uint32 reserved2;
+ [size_is(count)] drsuapi_DsReplicaCursor cursors[];
+ } drsuapi_DsReplicaCursorCtrEx;
+
+ typedef [flag(NDR_PAHEX),v1_enum] enum {
+ DRSUAPI_EXOP_NONE = 0x00000000,
+ DRSUAPI_EXOP_FSMO_REQ_ROLE = 0x00000001,
+ DRSUAPI_EXOP_FSMO_RID_ALLOC = 0x00000002,
+ DRSUAPI_EXOP_FSMO_RID_REQ_ROLE = 0x00000003,
+ DRSUAPI_EXOP_FSMO_REQ_PDC = 0x00000004,
+ DRSUAPI_EXOP_FSMO_ABANDON_ROLE = 0x00000005,
+ DRSUAPI_EXOP_REPL_OBJ = 0x00000006,
+ DRSUAPI_EXOP_REPL_SECRET = 0x00000007
+ } drsuapi_DsExtendedOperation;
+
+ typedef [flag(NDR_PAHEX),v1_enum] enum {
+ DRSUAPI_EXOP_ERR_NONE = 0x00000000,
+ DRSUAPI_EXOP_ERR_SUCCESS = 0x00000001,
+ DRSUAPI_EXOP_ERR_UNKNOWN_OP = 0x00000002,
+ DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER = 0x00000003,
+ DRSUAPI_EXOP_ERR_UPDATE_ERR = 0x00000004,
+ DRSUAPI_EXOP_ERR_EXCEPTION = 0x00000005,
+ DRSUAPI_EXOP_ERR_UNKNOWN_CALLER = 0x00000006,
+ DRSUAPI_EXOP_ERR_RID_ALLOC = 0x00000007,
+ DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED = 0x00000008,
+ DRSUAPI_EXOP_ERR_FMSO_PENDING_OP = 0x00000009,
+ DRSUAPI_EXOP_ERR_MISMATCH = 0x0000000A,
+ DRSUAPI_EXOP_ERR_COULDNT_CONTACT = 0x0000000B,
+ DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES = 0x0000000C,
+ DRSUAPI_EXOP_ERR_DIR_ERROR = 0x0000000D,
+ DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS = 0x0000000E,
+ DRSUAPI_EXOP_ERR_ACCESS_DENIED = 0x0000000F,
+ DRSUAPI_EXOP_ERR_PARAM_ERROR = 0x00000010
+ } drsuapi_DsExtendedError;
+
+ typedef struct {
+ GUID destination_dsa_guid;
+ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ drsuapi_DsReplicaHighWaterMark highwatermark;
+ drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
+ drsuapi_DrsOptions replica_flags;
+ uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
+ uint32 max_ndr_size; /* w2k3 seems to ignore this */
+ drsuapi_DsExtendedOperation extended_op;
+ hyper fsmo_info;
+ } drsuapi_DsGetNCChangesRequest5;
+
+ /*
+ * In DRSUAPI all attributes with syntax 2.5.5.2
+ * are identified by uint32 values
+ *
+ * the following table shows the mapping used between the two representations
+ * e.g. - objectClass 'nTDSDSA' has governsID: 1.2.840.113556.1.5.7000.47
+ * and a UINT32-ID of '0x0017002F'.
+ * - so the OID 1.2.840.113556.1.5.7000.47 is split into a
+ * OID-prefix: 1.2.840.113556.1.5.7000
+ * and a value: 47 => 0x2F
+ * - the mapping table gives a UINT32-prefix: 0x00170000
+ * - and the UINT32-ID is 0x0017002F = 0x00170000 | 0x2F
+ *
+ * This prefix mapping table is replied in the drsuapi_DsReplicaOIDMapping_Ctr
+ * array. The following are the default mappings of w2k3
+ *
+ * OID-prefix => UINT32-Id prefix
+ *
+ * 2.5.4.* => 0x00000000 (standard attributes RFC2256 core.schema)
+ * 2.5.6.* => 0x00010000 (standard object classes RFC2256 core.schema)
+ * 1.2.840.113556.1.2.* => 0x00020000
+ * 1.2.840.113556.1.3.* => 0x00030000
+ * 2.5.5.* => 0x00080000 (attributeSyntax OID's)
+ * 1.2.840.113556.1.4.* => 0x00090000
+ * 1.2.840.113556.1.5.* => 0x000A0000
+ * 2.16.840.1.113730.3.* => 0x00140000
+ * 0.9.2342.19200300.100.1.* => 0x00150000
+ * 2.16.840.1.113730.3.1.* => 0x00160000
+ * 1.2.840.113556.1.5.7000.* => 0x00170000
+ * 2.5.21.* => 0x00180000 (attrs for SubSchema)
+ * 2.5.18.* => 0x00190000 (createTimeStamp,modifyTimeStamp, SubSchema)
+ * 2.5.20.* => 0x001A0000
+ * 1.3.6.1.4.1.1466.101.119.* => 0x001B0000 (dynamicObject, entryTTL)
+ * 2.16.840.1.113730.3.2.* => 0x001C0000
+ * 1.3.6.1.4.1.250.1.* => 0x001D0000
+ * 1.2.840.113549.1.9.* => 0x001E0000 (unstructuredAddress,unstructuredName)
+ * 0.9.2342.19200300.100.4.* => 0x001F0000
+ *
+ * Here's a list of used 'attributeSyntax' OID's
+ *
+ * 2.5.5.1 => Object(DS-DN) string
+ * struct drsuapi_DsObjectIdentifier3
+ *
+ * 2.5.5.2 => OID-string
+ * => all values are represented as uint32 values in drsuapi
+ * => governsID, attributeID and attributeSyntax returned as OID-Strings in LDAP
+ * => mayContain, mustContain and all other attributes with 2.5.5.2 syntax
+ * are returned as attribute names
+ *
+ * 2.5.5.4 => String(Teletex) case-insensitive string with teletex charset
+ *
+ * 2.5.5.5 => String(IA5) case-sensitive string
+ *
+ * 2.5.5.6 => String(Numeric)
+ * => eg. internationalISDNNumber
+ *
+ * 2.5.5.7 => Object(DN-Binary) B:<byte count>:<bytes>:<object DN>
+ * => e.g. wellKnownObjects
+ *
+ * 2.5.5.8 => BOOL
+ *
+ * 2.5.5.9 => int32
+ *
+ * 2.5.5.10 => DATA_BLOB
+ * => struct GUID
+ *
+ * 2.5.5.11 => LDAP timestring
+ * => NTTIME_1sec
+ *
+ * 2.5.5.12 => String(Unicode) case-insensitive string
+ * => 'standard strings'
+ *
+ * 2.5.5.13 => Object(Presentation-Address) string
+ * => used in objectClass applicationEntity
+ *
+ * 2.5.5.14 => Object(DN-String) S:<char count>:<string>:<object DN>
+ * => not used
+ *
+ * 2.5.5.15 => ntSecurityDescriptor
+ *
+ * 2.5.5.16 => int64
+ *
+ * 2.5.5.17 => dom_sid
+ */
+ typedef [noprint] struct {
+ [range(0,10000)] uint32 length;
+ [size_is(length)] uint8 *binary_oid; /* partial-binary-OID encoded with asn1_write_partial_OID_String() */
+ } drsuapi_DsReplicaOID;
+
+ typedef struct {
+ uint32 id_prefix;
+ drsuapi_DsReplicaOID oid;
+ } drsuapi_DsReplicaOIDMapping;
+
+ typedef [public] struct {
+ [range(0,0x100000)] uint32 num_mappings;
+ [size_is(num_mappings)] drsuapi_DsReplicaOIDMapping *mappings;
+ } drsuapi_DsReplicaOIDMapping_Ctr;
+
+ typedef [flag(NDR_PAHEX),v1_enum] enum {
+ DRSUAPI_OBJECTCLASS_top = 0x00010000,
+ DRSUAPI_OBJECTCLASS_classSchema = 0x0003000d,
+ DRSUAPI_OBJECTCLASS_attributeSchema = 0x0003000e
+ } drsuapi_DsObjectClassId;
+
+ typedef [flag(NDR_PAHEX),v1_enum,public] enum {
+ DRSUAPI_ATTID_objectClass = 0x00000000,
+ DRSUAPI_ATTID_cn = 0x00000003,
+ DRSUAPI_ATTID_ou = 0x0000000b,
+ DRSUAPI_ATTID_description = 0x0000000d,
+ DRSUAPI_ATTID_member = 0x0000001f,
+ DRSUAPI_ATTID_distinguishedName = 0x00000031,
+ DRSUAPI_ATTID_instanceType = 0x00020001,
+ DRSUAPI_ATTID_whenCreated = 0x00020002,
+ DRSUAPI_ATTID_possSuperiors = 0x00020008,
+ DRSUAPI_ATTID_displayName = 0x0002000d,
+ DRSUAPI_ATTID_hasMasterNCs = 0x0002000e,
+ DRSUAPI_ATTID_nCName = 0x00020010,
+ DRSUAPI_ATTID_subClassOf = 0x00020015,
+ DRSUAPI_ATTID_governsID = 0x00020016,
+ DRSUAPI_ATTID_mustContain = 0x00020018,
+ DRSUAPI_ATTID_mayContain = 0x00020019,
+ DRSUAPI_ATTID_rDNAttId = 0x0002001A,
+ DRSUAPI_ATTID_attributeID = 0x0002001e,
+ DRSUAPI_ATTID_attributeSyntax = 0x00020020,
+ DRSUAPI_ATTID_isSingleValued = 0x00020021,
+ DRSUAPI_ATTID_rangeLower = 0x00020022,
+ DRSUAPI_ATTID_rangeUpper = 0x00020023,
+ DRSUAPI_ATTID_dMDLocation = 0x00020024,
+ DRSUAPI_ATTID_isDeleted = 0x00020030,
+ DRSUAPI_ATTID_objectVersion = 0x0002004c,
+ DRSUAPI_ATTID_invocationId = 0x00020073,
+ DRSUAPI_ATTID_showInAdvancedViewOnly = 0x000200a9,
+ DRSUAPI_ATTID_adminDisplayName = 0x000200c2,
+ DRSUAPI_ATTID_adminDescription = 0x000200e2,
+ DRSUAPI_ATTID_oMSyntax = 0x000200e7,
+ DRSUAPI_ATTID_ntSecurityDescriptor = 0x00020119,
+ DRSUAPI_ATTID_searchFlags = 0x0002014e,
+ DRSUAPI_ATTID_auxiliaryClass = 0x0002015f,
+ DRSUAPI_ATTID_lDAPDisplayName = 0x000201cc,
+ DRSUAPI_ATTID_name = 0x00090001,
+ DRSUAPI_ATTID_objectGUID = 0x00090002,
+ DRSUAPI_ATTID_replPropertyMetaData = 0x00090003,
+ DRSUAPI_ATTID_userAccountControl = 0x00090008,
+ DRSUAPI_ATTID_badPwdCount = 0x0009000c,
+ DRSUAPI_ATTID_codePage = 0x00090010,
+ DRSUAPI_ATTID_countryCode = 0x00090019,
+ DRSUAPI_ATTID_currentValue = 0x0009001b,
+ DRSUAPI_ATTID_homeDirectory = 0x0009002c,
+ DRSUAPI_ATTID_homeDrive = 0x0009002d,
+ DRSUAPI_ATTID_lastLogoff = 0x00090033,
+ DRSUAPI_ATTID_lastLogon = 0x00090034,
+ DRSUAPI_ATTID_dBCSPwd = 0x00090037,/* lmPwdHash */
+ DRSUAPI_ATTID_scriptPath = 0x0009003e,
+ DRSUAPI_ATTID_logonHours = 0x00090040,
+ DRSUAPI_ATTID_userWorkstations = 0x00090056,
+ DRSUAPI_ATTID_unicodePwd = 0x0009005a,/* ntPwdHash */
+ DRSUAPI_ATTID_ntPwdHistory = 0x0009005e,
+ DRSUAPI_ATTID_pwdLastSet = 0x00090060,
+ DRSUAPI_ATTID_primaryGroupID = 0x00090062,
+ DRSUAPI_ATTID_priorValue = 0x00090064,
+ DRSUAPI_ATTID_supplementalCredentials = 0x0009007d,
+ DRSUAPI_ATTID_trustAuthIncoming = 0x00090081,
+ DRSUAPI_ATTID_trustDirection = 0x00090084,
+ DRSUAPI_ATTID_trustPartner = 0x00090085,
+ DRSUAPI_ATTID_trustPosixOffset = 0x00090086,
+ DRSUAPI_ATTID_trustAuthOutgoing = 0x00090087,
+ DRSUAPI_ATTID_trustType = 0x00090088,
+ DRSUAPI_ATTID_userParameters = 0x0009008a,
+ DRSUAPI_ATTID_profilePath = 0x0009008b,
+ DRSUAPI_ATTID_operatorCount = 0x00090090,
+ DRSUAPI_ATTID_objectSid = 0x00090092,
+ DRSUAPI_ATTID_schemaIDGUID = 0x00090094,
+ DRSUAPI_ATTID_adminCount = 0x00090096,
+ DRSUAPI_ATTID_comment = 0x0009009C,/* User-Comment */
+ DRSUAPI_ATTID_accountExpires = 0x0009009f,
+ DRSUAPI_ATTID_lmPwdHistory = 0x000900a0,
+ DRSUAPI_ATTID_logonCount = 0x000900a9,
+ DRSUAPI_ATTID_systemPossSuperiors = 0x000900c3,
+ DRSUAPI_ATTID_systemMayContain = 0x000900c4,
+ DRSUAPI_ATTID_systemMustContain = 0x000900c5,
+ DRSUAPI_ATTID_systemAuxiliaryClass = 0x000900c6,
+ DRSUAPI_ATTID_sAMAccountName = 0x000900dd,
+ DRSUAPI_ATTID_sAMAccountType = 0x0009012e,
+ DRSUAPI_ATTID_options = 0x00090133,
+ DRSUAPI_ATTID_fSMORoleOwner = 0x00090171,
+ DRSUAPI_ATTID_systemFlags = 0x00090177,
+ DRSUAPI_ATTID_trustAttributes = 0x000901d6,
+ DRSUAPI_ATTID_trustParent = 0x000901d7,
+ DRSUAPI_ATTID_flatName = 0x000901ff,
+ DRSUAPI_ATTID_serverReference = 0x00090203,
+ DRSUAPI_ATTID_serverReferenceBL = 0x00090204,
+ DRSUAPI_ATTID_nonSecurityMember = 0x00090212,
+ DRSUAPI_ATTID_initialAuthIncoming = 0x0009021b,
+ DRSUAPI_ATTID_initialAuthOutgoing = 0x0009021c,
+ DRSUAPI_ATTID_wellKnownObjects = 0x0009026a,
+ DRSUAPI_ATTID_dNSHostName = 0x0009026b,
+ DRSUAPI_ATTID_isMemberOfPartialAttributeSet = 0x0009027f,
+ DRSUAPI_ATTID_managedBy = 0x0009028d,
+ DRSUAPI_ATTID_userPrincipalName = 0x00090290,
+ DRSUAPI_ATTID_groupType = 0x000902ee,
+ DRSUAPI_ATTID_servicePrincipalName = 0x00090303,
+ DRSUAPI_ATTID_lastKnownParent = 0x0009030d,
+ DRSUAPI_ATTID_objectCategory = 0x0009030e,
+ DRSUAPI_ATTID_gPLink = 0x0009037b,
+ DRSUAPI_ATTID_transportAddressAttribute = 0x0009037f,
+ DRSUAPI_ATTID_schemaInfo = 0x0009054e,
+ DRSUAPI_ATTID_msDS_Behavior_Version = 0x000905b3,
+ DRSUAPI_ATTID_msDS_TrustForestTrustInfo = 0x000906a6,
+ DRSUAPI_ATTID_msDS_KeyVersionNumber = 0x000906f6,
+ DRSUAPI_ATTID_msDS_NonMembers = 0x00090701,
+ DRSUAPI_ATTID_msDS_MembersForAzRole = 0x0009070e,
+ DRSUAPI_ATTID_msDS_HasDomainNCs = 0x0009071c,
+ DRSUAPI_ATTID_msDS_hasMasterNCs = 0x0009072c,
+ DRSUAPI_ATTID_msDS_NeverRevealGroup = 0x00090786,
+ DRSUAPI_ATTID_msDS_RevealOnDemandGroup = 0x00090788,
+ DRSUAPI_ATTID_msDS_SupportedEncryptionTypes = 0x000907ab,
+ DRSUAPI_ATTID_msDS_HostServiceAccount = 0x00090808,
+ DRSUAPI_ATTID_isRecycled = 0x0009080a,
+
+ DRSUAPI_ATTID_INVALID = 0xFFFFFFFF
+ } drsuapi_DsAttributeId;
+
+ typedef struct {
+ [value(1)] uint32 version;
+ [value(0)] uint32 reserved1;
+ [range(1,0x100000)] uint32 num_attids;
+ [size_is(num_attids)] drsuapi_DsAttributeId attids[];
+ } drsuapi_DsPartialAttributeSet;
+
+ typedef [public] struct {
+ GUID destination_dsa_guid;
+ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ drsuapi_DsReplicaHighWaterMark highwatermark;
+ drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
+ drsuapi_DrsOptions replica_flags;
+ uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
+ uint32 max_ndr_size; /* w2k3 seems to ignore this */
+ drsuapi_DsExtendedOperation extended_op;
+ hyper fsmo_info;
+ drsuapi_DsPartialAttributeSet *partial_attribute_set;
+ drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;
+ drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
+ } drsuapi_DsGetNCChangesRequest8;
+
+ typedef [public] struct {
+ GUID destination_dsa_guid;
+ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ drsuapi_DsReplicaHighWaterMark highwatermark;
+ drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
+ drsuapi_DrsOptions replica_flags;
+ uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
+ uint32 max_ndr_size; /* w2k3 seems to ignore this */
+ drsuapi_DsExtendedOperation extended_op;
+ hyper fsmo_info;
+ drsuapi_DsPartialAttributeSet *partial_attribute_set;
+ drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;
+ drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
+ drsuapi_DrsMoreOptions more_flags;
+ } drsuapi_DsGetNCChangesRequest10;
+
+ typedef [switch_type(uint32)] union {
+ [case(5)] drsuapi_DsGetNCChangesRequest5 req5;
+ [case(8)] drsuapi_DsGetNCChangesRequest8 req8;
+ [case(10)] drsuapi_DsGetNCChangesRequest10 req10;
+ } drsuapi_DsGetNCChangesRequest;
+
+ typedef [public] struct {
+ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+ hyper highest_usn; /* updated after a full replication cycle */
+ NTTIME last_sync_success;
+ } drsuapi_DsReplicaCursor2;
+
+ typedef struct {
+ [value(2)] uint32 version;
+ [value(0)] uint32 reserved1;
+ [range(0,0x100000)] uint32 count;
+ [value(0)] uint32 reserved2;
+ [size_is(count)] drsuapi_DsReplicaCursor2 cursors[];
+ } drsuapi_DsReplicaCursor2CtrEx;
+
+ /* Generic DATA_BLOB values */
+ typedef struct {
+ [range(0,26214400),value(ndr_size_DATA_BLOB(0,blob,0))] uint32 __ndr_size;
+ DATA_BLOB *blob;
+ } drsuapi_DsAttributeValue;
+
+ typedef struct {
+ [range(0,10485760)] uint32 num_values;
+ [size_is(num_values)] drsuapi_DsAttributeValue *values;
+ } drsuapi_DsAttributeValueCtr;
+
+ /* DN String values */
+ typedef [public,gensize] struct {
+ [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->flags))] uint32 __ndr_size;
+ [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid;
+ GUID guid;
+ dom_sid28 sid;
+ [value(strlen_m(dn))] uint32 __ndr_size_dn;
+ [charset(UTF16), size_is(__ndr_size_dn+1), length_is(__ndr_size_dn+1)] uint16 *dn;
+ } drsuapi_DsReplicaObjectIdentifier3;
+
+ typedef [public] struct {
+ [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r, ndr->flags))] uint32 __ndr_size;
+ [value(ndr_size_dom_sid28(&sid,ndr->flags))] uint32 __ndr_size_sid;
+ GUID guid;
+ dom_sid28 sid;
+ [value(strlen_m(dn))] uint32 __ndr_size_dn;
+ [charset(UTF16), size_is(__ndr_size_dn+1), length_is(__ndr_size_dn+1)] uint16 *dn;
+ [value(binary.length + 4)] uint32 __ndr_size_binary;
+ [flag(NDR_REMAINING)] DATA_BLOB binary;
+ } drsuapi_DsReplicaObjectIdentifier3Binary;
+
+ typedef [public,noprint] struct {
+ drsuapi_DsAttributeId attid;
+ drsuapi_DsAttributeValueCtr value_ctr;
+ } drsuapi_DsReplicaAttribute;
+
+ typedef struct {
+ [range(0,1048576)] uint32 num_attributes;
+ [size_is(num_attributes)] drsuapi_DsReplicaAttribute *attributes;
+ } drsuapi_DsReplicaAttributeCtr;
+
+ typedef [public] bitmap {
+ DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER = 0x00000001,
+ DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC = 0x00000002,
+ DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY = 0x00010000
+ } drsuapi_DsReplicaObjectFlags;
+
+ typedef [public] struct {
+ drsuapi_DsReplicaObjectIdentifier *identifier;
+ drsuapi_DsReplicaObjectFlags flags;
+ drsuapi_DsReplicaAttributeCtr attribute_ctr;
+ } drsuapi_DsReplicaObject;
+
+ typedef struct {
+ uint32 version;
+ NTTIME_1sec originating_change_time;
+ GUID originating_invocation_id;
+ hyper originating_usn;
+ } drsuapi_DsReplicaMetaData;
+
+ typedef [public] struct {
+ [range(0,1048576)] uint32 count;
+ [size_is(count)] drsuapi_DsReplicaMetaData meta_data[];
+ } drsuapi_DsReplicaMetaDataCtr;
+
+ typedef [public,noprint] struct {
+ drsuapi_DsReplicaObjectListItemEx *next_object;
+ drsuapi_DsReplicaObject object;
+ boolean32 is_nc_prefix;
+ GUID *parent_object_guid;
+ drsuapi_DsReplicaMetaDataCtr *meta_data_ctr;
+ } drsuapi_DsReplicaObjectListItemEx;
+
+ typedef [public,gensize] struct {
+ GUID source_dsa_guid; /* the 'objectGUID' field of the CN=NTDS Settings object */
+ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+ drsuapi_DsReplicaObjectIdentifier *naming_context;
+ drsuapi_DsReplicaHighWaterMark old_highwatermark;
+ drsuapi_DsReplicaHighWaterMark new_highwatermark;
+ drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
+ drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
+ drsuapi_DsExtendedError extended_ret; /* w2k sends the nc_object_count value here */
+ uint32 object_count;
+ /* this +55 is sometimes +56, so I don't know where this comes from... --metze */
+ [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] uint32 __ndr_size;
+ drsuapi_DsReplicaObjectListItemEx *first_object;
+ boolean32 more_data;
+ } drsuapi_DsGetNCChangesCtr1;
+
+ /*
+ * if the DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE flag
+ * isn't there it means the value is deleted
+ */
+ typedef [public] bitmap {
+ DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE = 0x00000001
+ } drsuapi_DsLinkedAttributeFlags;
+
+ typedef [public] struct {
+ drsuapi_DsReplicaObjectIdentifier *identifier;
+ drsuapi_DsAttributeId attid;
+ drsuapi_DsAttributeValue value;
+ drsuapi_DsLinkedAttributeFlags flags;
+ NTTIME_1sec originating_add_time;
+ drsuapi_DsReplicaMetaData meta_data;
+ } drsuapi_DsReplicaLinkedAttribute;
+
+ /* [MS-DRSR] section 4.1.10.2.11 DRS_MSG_GETCHGREPLY_V6 */
+ typedef [public,gensize] struct {
+ GUID source_dsa_guid; /* the 'objectGUID' field of the CN=NTDS Settings object */
+ GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
+ drsuapi_DsReplicaObjectIdentifier *naming_context;
+ drsuapi_DsReplicaHighWaterMark old_highwatermark;
+ drsuapi_DsReplicaHighWaterMark new_highwatermark;
+ drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;
+ drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
+ drsuapi_DsExtendedError extended_ret;
+ uint32 object_count;
+ /* this +55 is sometimes +56, so I don't know where this comes from... --metze */
+ [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] uint32 __ndr_size;
+ drsuapi_DsReplicaObjectListItemEx *first_object;
+ boolean32 more_data;
+ uint32 nc_object_count; /* estimated amount of objects in the whole NC */
+ uint32 nc_linked_attributes_count; /* estimated amount of linked values in the whole NC */
+ [range(0,1048576)] uint32 linked_attributes_count;
+ [size_is(linked_attributes_count)] drsuapi_DsReplicaLinkedAttribute *linked_attributes;
+ WERROR drs_error;
+ } drsuapi_DsGetNCChangesCtr6;
+
+ typedef [public] struct {
+ drsuapi_DsGetNCChangesCtr1 ctr1;
+ } drsuapi_DsGetNCChangesCtr1TS;
+
+ typedef [public] struct {
+ drsuapi_DsGetNCChangesCtr6 ctr6;
+ } drsuapi_DsGetNCChangesCtr6TS;
+
+ typedef [nopush] struct {
+ uint32 decompressed_length;
+ uint32 compressed_length;
+ [subcontext(4),subcontext_size(compressed_length),
+ compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)]
+ drsuapi_DsGetNCChangesCtr1TS *ts;
+ } drsuapi_DsGetNCChangesMSZIPCtr1;
+
+ typedef [nopush] struct {
+ uint32 decompressed_length;
+ uint32 compressed_length;
+ [subcontext(4),subcontext_size(compressed_length),
+ compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length)]
+ drsuapi_DsGetNCChangesCtr6TS *ts;
+ } drsuapi_DsGetNCChangesMSZIPCtr6;
+
+ typedef [nopush] struct {
+ uint32 decompressed_length;
+ uint32 compressed_length;
+ [subcontext(4),subcontext_size(compressed_length),
+ compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length)]
+ drsuapi_DsGetNCChangesCtr1TS *ts;
+ } drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1;
+
+ typedef [nopush] struct {
+ uint32 decompressed_length;
+ uint32 compressed_length;
+ [subcontext(4),subcontext_size(compressed_length),
+ compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length)]
+ drsuapi_DsGetNCChangesCtr6TS *ts;
+ } drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6;
+
+ typedef [enum16bit] enum {
+ DRSUAPI_COMPRESSION_TYPE_MSZIP = 2,
+ DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2 = 3 /* CompressOrDecompressWin2k3 DRS_COMP_ALG_WIN2K3 */
+ } drsuapi_DsGetNCChangesCompressionType;
+
+ typedef [nodiscriminant,flag(NDR_PAHEX)] union {
+ [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr1 mszip1;
+ [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] drsuapi_DsGetNCChangesMSZIPCtr6 mszip6;
+ [case(1|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1 xpress1;
+ [case(6|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6 xpress6;
+ } drsuapi_DsGetNCChangesCompressedCtr;
+
+ typedef struct {
+ drsuapi_DsGetNCChangesMSZIPCtr1 mszip1;
+ } drsuapi_DsGetNCChangesCtr2;
+
+ typedef struct {
+ [range(0,6)] uint32 level;
+ [range(2,3)] drsuapi_DsGetNCChangesCompressionType type;
+ [switch_is(level | (type<<16))] drsuapi_DsGetNCChangesCompressedCtr ctr;
+ } drsuapi_DsGetNCChangesCtr7;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetNCChangesCtr1 ctr1;
+ [case(2)] drsuapi_DsGetNCChangesCtr2 ctr2;
+ [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6;
+ [case(7)] drsuapi_DsGetNCChangesCtr7 ctr7;
+ } drsuapi_DsGetNCChangesCtr;
+
+ WERROR drsuapi_DsGetNCChanges(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] drsuapi_DsGetNCChangesRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref,switch_is(*level_out)] drsuapi_DsGetNCChangesCtr *ctr
+ );
+
+ /*****************/
+ /* Function 0x04 */
+ /* [MS-DRSR] 4.1.26 */
+
+ typedef struct {
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ [ref,charset(DOS),string] uint8 *dest_dsa_dns_name;
+ GUID dest_dsa_guid;
+ drsuapi_DrsOptions options;
+ } drsuapi_DsReplicaUpdateRefsRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1;
+ } drsuapi_DsReplicaUpdateRefsRequest;
+
+ WERROR drsuapi_DsReplicaUpdateRefs(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req
+ );
+
+ /*****************/
+ /* Function 0x05 */
+
+ typedef struct {
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ [charset(UTF16),string] uint16 *source_dsa_address;
+ uint8 schedule[84];
+ drsuapi_DrsOptions options;
+ } drsuapi_DsReplicaAddRequest1;
+
+ typedef struct {
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ drsuapi_DsReplicaObjectIdentifier *source_dsa_dn;
+ drsuapi_DsReplicaObjectIdentifier *transport_dn;
+ [charset(UTF16),string] uint16 *source_dsa_address;
+ uint8 schedule[84];
+ drsuapi_DrsOptions options;
+ } drsuapi_DsReplicaAddRequest2;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsReplicaAddRequest1 req1;
+ [case(2)] drsuapi_DsReplicaAddRequest2 req2;
+ } drsuapi_DsReplicaAddRequest;
+
+ WERROR drsuapi_DsReplicaAdd(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,switch_is(level)] drsuapi_DsReplicaAddRequest req
+ );
+
+ /*****************/
+ /* Function 0x06 */
+ typedef struct {
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ [charset(UTF8), string] uint8 *source_dsa_address;
+ drsuapi_DrsOptions options;
+ } drsuapi_DsReplicaDelRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsReplicaDelRequest1 req1;
+ } drsuapi_DsReplicaDelRequest;
+
+ WERROR drsuapi_DsReplicaDel(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,switch_is(level)] drsuapi_DsReplicaDelRequest req
+ );
+
+ /*****************/
+ /* Function 0x07 */
+
+ typedef struct {
+ [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
+ GUID source_dra;
+ [charset(UTF16),string] uint16 *source_dra_address;
+ uint8 schedule[84];
+ drsuapi_DrsOptions replica_flags;
+ uint32 modify_fields;
+ drsuapi_DrsOptions options;
+ } drsuapi_DsReplicaModRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsReplicaModRequest1 req1;
+ } drsuapi_DsReplicaModRequest;
+
+ WERROR drsuapi_DsReplicaMod(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,switch_is(level)] drsuapi_DsReplicaModRequest req
+ );
+
+ /*****************/
+ /* Function 0x08 */
+ [todo] WERROR DRSUAPI_VERIFY_NAMES();
+
+ /*****************/
+ /* Function 0x09 */
+
+ /* how are type 4 and 7 different from 2 and 3 ? */
+ typedef [v1_enum] enum {
+ DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS = 1,
+ DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS = 2,
+ DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS = 3,
+ DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2 = 4,
+ DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS = 5,
+ DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS = 6,
+ DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2 = 7
+ } drsuapi_DsMembershipType;
+
+ typedef struct {
+ NTSTATUS status;
+ [range(0,10000)] uint32 num_memberships;
+ [range(0,10000)] uint32 num_sids;
+ [size_is(num_memberships)] drsuapi_DsReplicaObjectIdentifier **info_array;
+ [size_is(num_memberships)] security_GroupAttrs *group_attrs;
+ [size_is(num_sids)] dom_sid28 **sids;
+ } drsuapi_DsGetMembershipsCtr1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1;
+ } drsuapi_DsGetMembershipsCtr;
+
+ const int DRSUAPI_DS_MEMBERSHIP_FLAG_GROUP_ATTR = 0x1;
+
+ typedef struct {
+ [range(1,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsReplicaObjectIdentifier **info_array;
+ uint32 flags;
+ [range(1,7)] drsuapi_DsMembershipType type;
+ drsuapi_DsReplicaObjectIdentifier *domain;
+ } drsuapi_DsGetMembershipsRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetMembershipsRequest1 req1;
+ } drsuapi_DsGetMembershipsRequest;
+
+ WERROR drsuapi_DsGetMemberships(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] drsuapi_DsGetMembershipsRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref] [switch_is(*level_out)] drsuapi_DsGetMembershipsCtr *ctr
+ );
+
+ /*****************/
+ /* Function 0x0a */
+ [todo] WERROR DRSUAPI_INTER_DOMAIN_MOVE();
+
+ /*****************/
+ /* Function 0x0b */
+ typedef [bitmap32bit] bitmap {
+ DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG = 0x00000001,
+ DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS = 0x00000002
+ } drsuapi_DsGetNT4ChangeLogFlags;
+
+ typedef struct {
+ drsuapi_DsGetNT4ChangeLogFlags flags;
+ uint32 preferred_maximum_length;
+ [range(0,0x00A00000)] uint32 restart_length;
+ [size_is(restart_length)] uint8 *restart_data;
+ } drsuapi_DsGetNT4ChangeLogRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetNT4ChangeLogRequest1 req1;
+ } drsuapi_DsGetNT4ChangeLogRequest;
+
+ typedef struct {
+ [range(0,0x00A00000)] uint32 restart_length;
+ [range(0,0x00A00000)] uint32 log_length;
+ hyper sam_serial_number;
+ NTTIME sam_creation_time;
+ hyper builtin_serial_number;
+ NTTIME builtin_creation_time;
+ hyper lsa_serial_number;
+ NTTIME lsa_creation_time;
+ NTSTATUS status;
+ [size_is(restart_length)] uint8 *restart_data;
+ [size_is(log_length)] uint8 *log_data;
+ } drsuapi_DsGetNT4ChangeLogInfo1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1;
+ } drsuapi_DsGetNT4ChangeLogInfo;
+
+ WERROR drsuapi_DsGetNT4ChangeLog(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref] [switch_is(*level_out)] drsuapi_DsGetNT4ChangeLogInfo *info
+ );
+
+ /*****************/
+ /* Function 0x0c */
+ typedef [v1_enum] enum {
+ DRSUAPI_DS_NAME_STATUS_OK = 0,
+ DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR = 1,
+ DRSUAPI_DS_NAME_STATUS_NOT_FOUND = 2,
+ DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE = 3,
+ DRSUAPI_DS_NAME_STATUS_NO_MAPPING = 4,
+ DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY = 5,
+ DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING = 6,
+ DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL = 7
+ } drsuapi_DsNameStatus;
+
+ typedef [v1_enum] enum {
+ DRSUAPI_DS_NAME_FLAG_NO_FLAGS = 0x0,
+ DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY = 0x1,
+ DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC = 0x2,
+ DRSUAPI_DS_NAME_FLAG_GCVERIFY = 0x4,
+ DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL = 0x8
+ } drsuapi_DsNameFlags;
+
+ typedef [v1_enum] enum {
+ DRSUAPI_DS_NAME_FORMAT_UNKNOWN = 0x00000000,
+ DRSUAPI_DS_NAME_FORMAT_FQDN_1779 = 0x00000001,
+ DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT = 0x00000002,
+ DRSUAPI_DS_NAME_FORMAT_DISPLAY = 0x00000003,
+ DRSUAPI_DS_NAME_FORMAT_GUID = 0x00000006,
+ DRSUAPI_DS_NAME_FORMAT_CANONICAL = 0x00000007,
+ DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL = 0x00000008,
+ DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX = 0x00000009,
+ DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL = 0x0000000A,
+ DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY = 0x0000000B,
+ DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN = 0x0000000C,
+ DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID = 0xFFFFFFEF,
+ DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN_EX = 0xFFFFFFF0,
+ DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS = 0xFFFFFFF1,
+ DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON = 0xFFFFFFF2,
+ DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE = 0xFFFFFFF3,
+ DRSUAPI_DS_NAME_FORMAT_STRING_SID_NAME = 0xFFFFFFF4,
+ DRSUAPI_DS_NAME_FORMAT_ALT_SECURITY_IDENTITIES_NAME = 0xFFFFFFF5,
+ DRSUAPI_DS_NAME_FORMAT_LIST_NCS = 0xFFFFFFF6,
+ DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS = 0xFFFFFFF7,
+ DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID = 0xFFFFFFF8,
+ DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN = 0xFFFFFFF9,
+ DRSUAPI_DS_NAME_FORMAT_LIST_ROLES = 0xFFFFFFFA,
+ DRSUAPI_DS_NAME_FORMAT_LIST_INFO_FOR_SERVER = 0xFFFFFFFB,
+ DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_FOR_DOMAIN_IN_SITE = 0xFFFFFFFC,
+ DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS_IN_SITE = 0xFFFFFFFD,
+ DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_IN_SITE = 0xFFFFFFFE,
+ DRSUAPI_DS_NAME_FORMAT_LIST_SITES = 0xFFFFFFFF
+ } drsuapi_DsNameFormat;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *str;
+ } drsuapi_DsNameString;
+
+ typedef struct {
+ uint32 codepage; /* 0x000004e4 - 1252 is german codepage*/
+ uint32 language; /* 0x00000407 - german language ID*/
+ drsuapi_DsNameFlags format_flags;
+ drsuapi_DsNameFormat format_offered;
+ drsuapi_DsNameFormat format_desired;
+ [range(1,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsNameString *names;
+ } drsuapi_DsNameRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsNameRequest1 req1;
+ } drsuapi_DsNameRequest;
+
+ typedef struct {
+ drsuapi_DsNameStatus status;
+ [charset(UTF16),string] uint16 *dns_domain_name;
+ [charset(UTF16),string] uint16 *result_name;
+ } drsuapi_DsNameInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] drsuapi_DsNameInfo1 *array;
+ } drsuapi_DsNameCtr1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsNameCtr1 *ctr1;
+ } drsuapi_DsNameCtr;
+
+ WERROR drsuapi_DsCrackNames(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] drsuapi_DsNameRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref,switch_is(*level_out)] drsuapi_DsNameCtr *ctr
+ );
+
+ /*****************/
+ /* Function 0x0d */
+ typedef [v1_enum] enum {
+ DRSUAPI_DS_SPN_OPERATION_ADD = 0,
+ DRSUAPI_DS_SPN_OPERATION_REPLACE= 1,
+ DRSUAPI_DS_SPN_OPERATION_DELETE = 2
+ } drsuapi_DsSpnOperation;
+
+ typedef struct {
+ drsuapi_DsSpnOperation operation;
+ uint32 unknown1;
+ [charset(UTF16),string] uint16 *object_dn;
+ [range(0,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsNameString *spn_names;
+ } drsuapi_DsWriteAccountSpnRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1;
+ } drsuapi_DsWriteAccountSpnRequest;
+
+ typedef struct {
+ WERROR status;
+ } drsuapi_DsWriteAccountSpnResult1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsWriteAccountSpnResult1 res1;
+ } drsuapi_DsWriteAccountSpnResult;
+
+ WERROR drsuapi_DsWriteAccountSpn(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] drsuapi_DsWriteAccountSpnRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref,switch_is(*level_out)] drsuapi_DsWriteAccountSpnResult *res
+ );
+
+ /*****************/
+ /* Function 0x0e */
+ typedef struct {
+ [charset(UTF16),string] uint16 *server_dn;
+ [charset(UTF16),string] uint16 *domain_dn;
+ boolean32 commit;
+ } drsuapi_DsRemoveDSServerRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsRemoveDSServerRequest1 req1;
+ } drsuapi_DsRemoveDSServerRequest;
+
+ typedef struct {
+ boolean32 last_dc_in_domain;
+ } drsuapi_DsRemoveDSServerResult1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsRemoveDSServerResult1 res1;
+ } drsuapi_DsRemoveDSServerResult;
+
+ WERROR drsuapi_DsRemoveDSServer(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] drsuapi_DsRemoveDSServerRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref,switch_is(*level_out)] drsuapi_DsRemoveDSServerResult *res
+ );
+
+ /*****************/
+ /* Function 0x0f */
+ [todo] WERROR DRSUAPI_REMOVE_DS_DOMAIN();
+
+ /*****************/
+ /* Function 0x10 */
+ typedef [v1_enum] enum {
+ DRSUAPI_DC_INFO_CTR_1 = 1,
+ DRSUAPI_DC_INFO_CTR_2 = 2,
+ DRSUAPI_DC_INFO_CTR_3 = 3,
+ DRSUAPI_DC_CONNECTION_CTR_01 = 0xFFFFFFFF
+ } drsuapi_DsGetDCInfoCtrLevels;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *domain_name; /* netbios or dns */
+ drsuapi_DsGetDCInfoCtrLevels level; /* specifies the switch level for the request */
+ } drsuapi_DsGetDCInfoRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetDCInfoRequest1 req1;
+ } drsuapi_DsGetDCInfoRequest;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *netbios_name;
+ [charset(UTF16),string] uint16 *dns_name;
+ [charset(UTF16),string] uint16 *site_name;
+ [charset(UTF16),string] uint16 *computer_dn;
+ [charset(UTF16),string] uint16 *server_dn;
+ uint32 is_pdc;
+ uint32 is_enabled;
+ } drsuapi_DsGetDCInfo1;
+
+ typedef struct {
+ [range(0,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsGetDCInfo1 *array;
+ } drsuapi_DsGetDCInfoCtr1;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *netbios_name;
+ [charset(UTF16),string] uint16 *dns_name;
+ [charset(UTF16),string] uint16 *site_name;
+ [charset(UTF16),string] uint16 *site_dn;
+ [charset(UTF16),string] uint16 *computer_dn;
+ [charset(UTF16),string] uint16 *server_dn;
+ [charset(UTF16),string] uint16 *ntds_dn;
+ uint32 is_pdc;
+ uint32 is_enabled;
+ uint32 is_gc;
+ GUID site_guid;
+ GUID computer_guid;
+ GUID server_guid;
+ GUID ntds_guid;
+ } drsuapi_DsGetDCInfo2;
+
+ typedef struct {
+ [range(0,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsGetDCInfo2 *array;
+ } drsuapi_DsGetDCInfoCtr2;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *netbios_name;
+ [charset(UTF16),string] uint16 *dns_name;
+ [charset(UTF16),string] uint16 *site_name;
+ [charset(UTF16),string] uint16 *site_dn;
+ [charset(UTF16),string] uint16 *computer_dn;
+ [charset(UTF16),string] uint16 *server_dn;
+ [charset(UTF16),string] uint16 *ntds_dn;
+ uint32 is_pdc;
+ uint32 is_enabled;
+ uint32 is_gc;
+ uint32 is_rodc;
+ GUID site_guid;
+ GUID computer_guid;
+ GUID server_guid;
+ GUID ntds_guid;
+ } drsuapi_DsGetDCInfo3;
+
+ typedef struct {
+ [range(0,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsGetDCInfo3 *array;
+ } drsuapi_DsGetDCInfoCtr3;
+
+ /*
+ * this represents an active connection to the
+ * Directory System Agent (DSA)
+ * this can be via LDAP or DRSUAPI
+ */
+ typedef struct {
+ [flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address;
+ uint32 unknown2;
+ uint32 connection_time; /* in seconds */
+ uint32 unknown4;
+ uint32 unknown5;
+ uint32 unknown6;
+ /*
+ * client_account can be the following:
+ * "W2K3\Administrator"
+ * "Administrator@W2K3"
+ * "cn=Administrator,cn=Users,DC=w2k3,DC=vmnet1,DC=vm,DC=base"
+ * ""
+ * or NULL
+ */
+ [charset(UTF16),string] uint16 *client_account;
+ } drsuapi_DsGetDCConnection01;
+
+ typedef struct {
+ [range(0,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsGetDCConnection01 *array;
+ } drsuapi_DsGetDCConnectionCtr01;
+
+ typedef [switch_type(drsuapi_DsGetDCInfoCtrLevels)] union {
+ [case(DRSUAPI_DC_INFO_CTR_1)] drsuapi_DsGetDCInfoCtr1 ctr1;
+ [case(DRSUAPI_DC_INFO_CTR_2)] drsuapi_DsGetDCInfoCtr2 ctr2;
+ [case(DRSUAPI_DC_INFO_CTR_3)] drsuapi_DsGetDCInfoCtr3 ctr3;
+ [case(DRSUAPI_DC_CONNECTION_CTR_01)] drsuapi_DsGetDCConnectionCtr01 ctr01;
+ } drsuapi_DsGetDCInfoCtr;
+
+ WERROR drsuapi_DsGetDomainControllerInfo(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] drsuapi_DsGetDCInfoRequest *req,
+ [out,ref] drsuapi_DsGetDCInfoCtrLevels *level_out,
+ [out,ref,switch_is(*level_out)] drsuapi_DsGetDCInfoCtr *ctr
+ );
+
+ /*****************/
+ /* Function 0x11 */
+ typedef [public,noprint] struct {
+ drsuapi_DsReplicaObjectListItem *next_object;
+ drsuapi_DsReplicaObject object;
+ } drsuapi_DsReplicaObjectListItem;
+
+ /*
+ * The DsAddEntry() call which creates a nTDSDSA object,
+ * also adds a servicePrincipalName in the following form
+ * to the computer account of the new domain controller
+ * referenced by the "serverReferenece" attribute.
+ *
+ * E3514235-4B06-11D1-AB04-00C04FC2DCD2/<new-ntdsdsa-object-guid-as-string>/<domain-dns-name>
+ *
+ * also note that the "serverReference" isn't added to the new object!
+ */
+ const char *DRSUAPI_NTDSDSA_KRB5_SERVICE_GUID = "E3514235-4B06-11D1-AB04-00C04FC2DCD2";
+
+ /* Error codes to classify an error that occurs
+ * during a search for, or the update of,
+ * a directory object */
+ typedef [v1_enum] enum {
+ DRSUAPI_DIRERR_OK = 0,
+ DRSUAPI_DIRERR_ATTRIBUTE = 1,
+ DRSUAPI_DIRERR_NAME = 2,
+ DRSUAPI_DIRERR_REFERRAL = 3,
+ DRSUAPI_DIRERR_SECURITY = 4,
+ DRSUAPI_DIRERR_SERVICE = 5,
+ DRSUAPI_DIRERR_UPDATE = 6,
+ DRSUAPI_DIRERR_SYSTEM = 7
+ } drsuapi_DsAddEntry_DirErr;
+
+ /*
+ * Ref: DRS_MSG_ADDENTRYREQ_V2, [MS-DRSR]: 4.1.1.1.3
+ */
+ typedef struct {
+ drsuapi_DsReplicaObjectListItem first_object;
+ } drsuapi_DsAddEntryRequest2;
+
+ /* Buffer type is actually more
+ * like a semi Flags
+ * Ref: DRS_SecBuffer, [MS-DRSR]: 5.41 */
+ typedef [v1_enum,noprint] enum {
+ DRSUAPI_SECBUFFER_EMPTY = 0x00000000,
+ DRSUAPI_SECBUFFER_DATA = 0x00000001,
+ DRSUAPI_SECBUFFER_TOKEN = 0x00000002,
+ DRSUAPI_SECBUFFER_PKG_PARAMS = 0x00000003,
+ DRSUAPI_SECBUFFER_MISSING = 0x00000004,
+ DRSUAPI_SECBUFFER_EXTRA = 0x00000005,
+ DRSUAPI_SECBUFFER_STREAM_TRAILER = 0x00000006,
+ DRSUAPI_SECBUFFER_STREAM_HEADER = 0x00000007,
+ DRSUAPI_SECBUFFER_READONLY = 0x80000000
+ } drsuapi_SecBufferType;
+
+ typedef struct {
+ [range(0,10000)] uint32 buf_size;
+ drsuapi_SecBufferType buf_type;
+ [size_is(buf_size)] uint8 *buffer;
+ } drsuapi_SecBuffer;
+
+ typedef struct {
+ [value(0)] uint32 version;
+ [range(0,10000)] uint32 buff_count;
+ [size_is(buff_count)] drsuapi_SecBuffer *buffers;
+ } drsuapi_SecBufferDesc;
+
+ /*
+ * Ref: DRS_MSG_ADDENTRYREQ_V3, [MS-DRSR]: 4.1.1.1.4
+ */
+ typedef struct {
+ drsuapi_DsReplicaObjectListItem first_object;
+ drsuapi_SecBufferDesc *client_creds;
+ } drsuapi_DsAddEntryRequest3;
+
+ typedef [switch_type(uint32)] union {
+ [case(2)] drsuapi_DsAddEntryRequest2 req2;
+ [case(3)] drsuapi_DsAddEntryRequest3 req3;
+ } drsuapi_DsAddEntryRequest;
+
+ /* Generic extended error info
+ * commonly used in most places
+ * where rich error info is returned */
+ typedef struct {
+ uint32 dsid; /* implementation-specific diagnostic code */
+ WERROR extended_err; /* 0, STATUS code, or Windows error code */
+ uint32 extended_data; /* implementation-specific diagnostic code */
+ uint16 problem; /* 0 or PROBLEM error code */
+ } drsuapi_DsAddEntryErrorInfoX;
+
+ /* Attribute errors
+ * Ref: ATRERR_DRS_WIRE_V1, [MS-DRSR]: 4.1.1.1.11 */
+ typedef struct {
+ uint32 dsid;
+ WERROR extended_err;
+ uint32 extended_data;
+ uint16 problem;
+ drsuapi_DsAttributeId attid;
+ boolean32 is_val_returned;
+ drsuapi_DsAttributeValue attr_val;
+ } drsuapi_DsAddEntry_AttrErr_V1;
+
+ typedef [noprint] struct {
+ drsuapi_DsAddEntry_AttrErrListItem_V1 *next;
+ drsuapi_DsAddEntry_AttrErr_V1 err_data;
+ } drsuapi_DsAddEntry_AttrErrListItem_V1;
+
+ typedef struct {
+ drsuapi_DsReplicaObjectIdentifier *id;
+ uint32 count;
+ drsuapi_DsAddEntry_AttrErrListItem_V1 first;
+ } drsuapi_DsAddEntryErrorInfo_Attr_V1;
+
+ /* Name resolution error
+ * Ref: NAMERR_DRS_WIRE_V1, [MS-DRSR]: 4.1.1.1.14 */
+ typedef struct {
+ uint32 dsid;
+ WERROR extended_err;
+ uint32 extended_data;
+ uint16 problem;
+ drsuapi_DsReplicaObjectIdentifier *id_matched; /* The best match for the supplied object identity */
+ } drsuapi_DsAddEntryErrorInfo_Name_V1;
+
+ /* Referral error
+ * Ref: REFERR_DRS_WIRE_V1, [MS-DRSR]: 4.1.1.1.15 */
+ typedef struct {
+ [value(83)] uint8 name_res; /* Must be 'S' */
+ [value(0)] uint8 unused_pad;
+ [value(0)] uint16 next_rdn;
+ } drsuapi_NameResOp_V1;
+
+ typedef [enum16bit] enum {
+ DRSUAPI_CH_REFTYPE_SUPERIOR = 0x0000, /* referral to a superior DC */
+ DRSUAPI_CH_REFTYPE_SUBORDINATE = 0x0001, /* referral to a subordinate DC */
+ DRSUAPI_CH_REFTYPE_NSSR = 0x0002, /* Not used */
+ DRSUAPI_CH_REFTYPE_CROSS = 0x0003 /* A referral to an external crossRef object */
+ } drsuapi_DsAddEntry_RefType;
+
+ typedef [enum8bit] enum {
+ DRSUAPI_SE_CHOICE_BASE_ONLY = 0x00,
+ DRSUAPI_SE_CHOICE_IMMED_CHLDRN = 0x01,
+ DRSUAPI_SE_CHOICE_WHOLE_SUBTREE = 0x02
+ } drsuapi_DsAddEntry_ChoiceType;
+
+ /* list of network names of the DCs
+ * to which the referral is directed */
+ typedef struct {
+ drsuapi_DsaAddressListItem_V1 *next;
+ lsa_String *address;
+ } drsuapi_DsaAddressListItem_V1;
+
+ typedef struct {
+ drsuapi_DsReplicaObjectIdentifier *id_target; /* object to which the referral is directed */
+ drsuapi_NameResOp_V1 op_state;
+ [value(0)] uint16 rdn_alias;
+ [value(0)] uint16 rdn_internal;
+ drsuapi_DsAddEntry_RefType ref_type;
+ uint16 addr_list_count;
+ drsuapi_DsaAddressListItem_V1 *addr_list;
+ drsuapi_DsAddEntry_RefErrListItem_V1 *next;
+ boolean32 is_choice_set;
+ drsuapi_DsAddEntry_ChoiceType choice;
+ } drsuapi_DsAddEntry_RefErrListItem_V1;
+
+ typedef struct {
+ uint32 dsid;
+ WERROR extended_err;
+ uint32 extended_data;
+ drsuapi_DsAddEntry_RefErrListItem_V1 refer;
+ } drsuapi_DsAddEntryErrorInfo_Referr_V1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsAddEntryErrorInfo_Attr_V1 attr_err;
+ [case(2)] drsuapi_DsAddEntryErrorInfo_Name_V1 name_err;
+ [case(3)] drsuapi_DsAddEntryErrorInfo_Referr_V1 referral_err;
+ [case(4)] drsuapi_DsAddEntryErrorInfoX security_err;
+ [case(5)] drsuapi_DsAddEntryErrorInfoX service_err;
+ [case(6)] drsuapi_DsAddEntryErrorInfoX update_err;
+ [case(7)] drsuapi_DsAddEntryErrorInfoX system_err;
+ } drsuapi_DsAddEntryErrorInfo;
+
+ typedef struct {
+ WERROR status;
+ drsuapi_DsAddEntry_DirErr dir_err;
+ [switch_is(dir_err)] drsuapi_DsAddEntryErrorInfo info; /* FIXME */
+ } drsuapi_DsAddEntry_ErrData_V1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsAddEntry_ErrData_V1 v1;
+ } drsuapi_DsAddEntry_ErrData;
+
+ typedef struct {
+ GUID guid;
+ dom_sid28 sid;
+ } drsuapi_DsReplicaObjectIdentifier2;
+
+ typedef struct {
+ drsuapi_DsReplicaObjectIdentifier *id;
+ drsuapi_DsAddEntry_DirErr dir_err;
+ uint32 dsid; /* implementation-specific diagnostic code */
+ WERROR extended_err; /* 0, STATUS code, or Windows error code */
+ uint32 extended_data; /* implementation-specific diagnostic code */
+ uint16 problem; /* 0 or PROBLEM error code */
+ [range(0,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects;
+ } drsuapi_DsAddEntryCtr2;
+
+ typedef struct {
+ drsuapi_DsReplicaObjectIdentifier *id;
+ uint32 err_ver; /* Must be 1 */
+ [switch_is(err_ver)] drsuapi_DsAddEntry_ErrData err_data; /* FIXME */
+ [range(0,10000)] uint32 count;
+ [size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects;
+ } drsuapi_DsAddEntryCtr3;
+
+ typedef [switch_type(uint32)] union {
+ [case(2)] drsuapi_DsAddEntryCtr2 ctr2;
+ [case(3)] drsuapi_DsAddEntryCtr3 ctr3;
+ } drsuapi_DsAddEntryCtr;
+
+ [public] WERROR drsuapi_DsAddEntry(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] drsuapi_DsAddEntryRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref,switch_is(*level_out)] drsuapi_DsAddEntryCtr *ctr
+ );
+
+ /*****************/
+ /* Function 0x12 */
+ typedef bitmap {
+ DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION = 0x00000001,
+ DRSUAPI_DS_EXECUTE_KCC_DAMPED = 0x00000002
+ } drsuapi_DsExecuteKCCFlags;
+
+ typedef struct {
+ uint32 taskID;
+ drsuapi_DsExecuteKCCFlags flags;
+ } drsuapi_DsExecuteKCC1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsExecuteKCC1 ctr1;
+ } drsuapi_DsExecuteKCCRequest;
+
+ WERROR drsuapi_DsExecuteKCC(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in, ref, switch_is(level)] drsuapi_DsExecuteKCCRequest *req
+ );
+
+ /*****************/
+ /* Function 0x13 */
+ typedef [v1_enum] enum {
+ DRSUAPI_DS_REPLICA_GET_INFO = 1,
+ DRSUAPI_DS_REPLICA_GET_INFO2 = 2
+ } drsuapi_DsReplicaGetInfoLevel;
+
+ typedef [v1_enum] enum {
+ DRSUAPI_DS_REPLICA_INFO_NEIGHBORS = 0,
+ DRSUAPI_DS_REPLICA_INFO_CURSORS = 1,
+ DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA = 2,
+ DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES = 3,
+ DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES = 4,
+ DRSUAPI_DS_REPLICA_INFO_PENDING_OPS = 5,
+ DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA = 6,
+ DRSUAPI_DS_REPLICA_INFO_CURSORS2 = 7,
+ DRSUAPI_DS_REPLICA_INFO_CURSORS3 = 8,
+ DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2 = 9,
+ DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2 = 10,
+ DRSUAPI_DS_REPLICA_INFO_REPSTO = -2,
+ DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS = -4,
+ DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1 = -5,
+ DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS = -6
+ } drsuapi_DsReplicaInfoType;
+
+ typedef struct {
+ drsuapi_DsReplicaInfoType info_type;
+ [charset(UTF16),string] uint16 *object_dn;
+ GUID source_dsa_guid;
+ } drsuapi_DsReplicaGetInfoRequest1;
+
+ typedef struct {
+ drsuapi_DsReplicaInfoType info_type;
+ [charset(UTF16),string] uint16 *object_dn;
+ GUID source_dsa_guid;
+ uint32 flags;
+ [charset(UTF16),string] uint16 *attribute_name;
+ [charset(UTF16),string] uint16 *value_dn_str;
+ uint32 enumeration_context;
+ } drsuapi_DsReplicaGetInfoRequest2;
+
+ typedef [switch_type(drsuapi_DsReplicaGetInfoLevel)] union {
+ [case(DRSUAPI_DS_REPLICA_GET_INFO)] drsuapi_DsReplicaGetInfoRequest1 req1;
+ [case(DRSUAPI_DS_REPLICA_GET_INFO2)] drsuapi_DsReplicaGetInfoRequest2 req2;
+ } drsuapi_DsReplicaGetInfoRequest;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *naming_context_dn;
+ [charset(UTF16),string] uint16 *source_dsa_obj_dn;
+ [charset(UTF16),string] uint16 *source_dsa_address;
+ [charset(UTF16),string] uint16 *transport_obj_dn;
+ drsuapi_DrsOptions replica_flags;
+ uint32 reserved;
+ GUID naming_context_obj_guid;
+ GUID source_dsa_obj_guid;
+ GUID source_dsa_invocation_id;
+ GUID transport_obj_guid;
+ hyper tmp_highest_usn;
+ hyper highest_usn;
+ NTTIME last_success;
+ NTTIME last_attempt;
+ WERROR result_last_attempt;
+ uint32 consecutive_sync_failures;
+ } drsuapi_DsReplicaNeighbour;
+
+ typedef struct {
+ uint32 count;
+ uint32 reserved;
+ [size_is(count)] drsuapi_DsReplicaNeighbour array[];
+ } drsuapi_DsReplicaNeighbourCtr;
+
+ typedef struct {
+ uint32 count;
+ uint32 reserved;
+ [size_is(count)] drsuapi_DsReplicaCursor array[];
+ } drsuapi_DsReplicaCursorCtr;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *attribute_name;
+ uint32 version;
+ NTTIME originating_change_time;
+ GUID originating_invocation_id;
+ hyper originating_usn;
+ hyper local_usn;
+ } drsuapi_DsReplicaObjMetaData;
+
+ typedef struct {
+ uint32 count;
+ uint32 reserved;
+ [size_is(count)] drsuapi_DsReplicaObjMetaData array[];
+ } drsuapi_DsReplicaObjMetaDataCtr;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *dsa_obj_dn;
+ GUID dsa_obj_guid;
+ NTTIME first_failure;
+ uint32 num_failures;
+ WERROR last_result;
+ } drsuapi_DsReplicaKccDsaFailure;
+
+ typedef struct {
+ uint32 count;
+ uint32 reserved;
+ [size_is(count)] drsuapi_DsReplicaKccDsaFailure array[];
+ } drsuapi_DsReplicaKccDsaFailuresCtr;
+
+ typedef enum {
+ DRSUAPI_DS_REPLICA_OP_TYPE_SYNC = 0,
+ DRSUAPI_DS_REPLICA_OP_TYPE_ADD = 1,
+ DRSUAPI_DS_REPLICA_OP_TYPE_DELETE = 2,
+ DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY = 3,
+ DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS = 4
+ } drsuapi_DsReplicaOpType;
+
+ typedef struct {
+ NTTIME operation_start;
+ uint32 serial_num; /* unique till reboot */
+ uint32 priority;
+ drsuapi_DsReplicaOpType operation_type;
+ drsuapi_DrsOptions options;
+ [charset(UTF16),string] uint16 *nc_dn;
+ [charset(UTF16),string] uint16 *remote_dsa_obj_dn;
+ [charset(UTF16),string] uint16 *remote_dsa_address;
+ GUID nc_obj_guid;
+ GUID remote_dsa_obj_guid;
+ } drsuapi_DsReplicaOp;
+
+ typedef struct {
+ NTTIME time;
+ uint32 count;
+ [size_is(count)] drsuapi_DsReplicaOp array[];
+ } drsuapi_DsReplicaOpCtr;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *attribute_name;
+ [charset(UTF16),string] uint16 *object_dn;
+ [value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary;
+ DATA_BLOB *binary;
+ NTTIME deleted;
+ NTTIME created;
+ uint32 version;
+ NTTIME originating_change_time;
+ GUID originating_invocation_id;
+ hyper originating_usn;
+ hyper local_usn;
+ } drsuapi_DsReplicaAttrValMetaData;
+
+ typedef struct {
+ uint32 count;
+ uint32 enumeration_context;
+ [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[];
+ } drsuapi_DsReplicaAttrValMetaDataCtr;
+
+ typedef struct {
+ uint32 count;
+ uint32 enumeration_context;
+ [size_is(count)] drsuapi_DsReplicaCursor2 array[];
+ } drsuapi_DsReplicaCursor2Ctr;
+
+ typedef struct {
+ GUID source_dsa_invocation_id;
+ hyper highest_usn;
+ NTTIME last_sync_success;
+ [charset(UTF16),string] uint16 *source_dsa_obj_dn;
+ } drsuapi_DsReplicaCursor3;
+
+ typedef struct {
+ uint32 count;
+ uint32 enumeration_context;
+ [size_is(count)] drsuapi_DsReplicaCursor3 array[];
+ } drsuapi_DsReplicaCursor3Ctr;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *attribute_name;
+ uint32 version;
+ NTTIME originating_change_time;
+ GUID originating_invocation_id;
+ hyper originating_usn;
+ hyper local_usn;
+ [charset(UTF16),string] uint16 *originating_dsa_dn;
+ } drsuapi_DsReplicaObjMetaData2;
+
+ typedef struct {
+ uint32 count;
+ uint32 enumeration_context;
+ [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[];
+ } drsuapi_DsReplicaObjMetaData2Ctr;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *attribute_name;
+ [charset(UTF16),string] uint16 *object_dn;
+ [value(ndr_size_DATA_BLOB(0,binary,0))] uint32 __ndr_size_binary;
+ DATA_BLOB *binary;
+ NTTIME deleted;
+ NTTIME created;
+ uint32 version;
+ NTTIME originating_change_time;
+ GUID originating_invocation_id;
+ hyper originating_usn;
+ hyper local_usn;
+ [charset(UTF16),string] uint16 *originating_dsa_dn;
+ } drsuapi_DsReplicaAttrValMetaData2;
+
+ typedef struct {
+ uint32 count;
+ uint32 enumeration_context;
+ [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[];
+ } drsuapi_DsReplicaAttrValMetaData2Ctr;
+
+ typedef struct {
+ hyper u1; /* session number? */
+ uint32 u2;
+ uint32 u3;
+ GUID bind_guid;
+ NTTIME_1sec bind_time;
+ [flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address;
+ uint32 u5; /* this is the same value the client used as pid in the DsBindInfoX struct */
+ } drsuapi_DsReplicaConnection04;
+
+ typedef struct {
+ [range(0,10000)] uint32 count;
+ uint32 reserved;
+ [size_is(count)] drsuapi_DsReplicaConnection04 array[];
+ } drsuapi_DsReplicaConnection04Ctr;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *str1;
+ uint32 u1;
+ uint32 u2;
+ uint32 u3;
+ uint32 u4;
+ uint32 u5;
+ hyper u6;
+ uint32 u7;
+ } drsuapi_DsReplica06;
+
+ typedef struct {
+ [range(0,256)] uint32 count;
+ uint32 reserved;
+ [size_is(count)] drsuapi_DsReplica06 array[];
+ } drsuapi_DsReplica06Ctr;
+
+ typedef [switch_type(drsuapi_DsReplicaInfoType)] union {
+ [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS)] drsuapi_DsReplicaNeighbourCtr *neighbours;
+ [case(DRSUAPI_DS_REPLICA_INFO_CURSORS)] drsuapi_DsReplicaCursorCtr *cursors;
+ [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA)] drsuapi_DsReplicaObjMetaDataCtr *objmetadata;
+ [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES)] drsuapi_DsReplicaKccDsaFailuresCtr *connectfailures;
+ [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES)] drsuapi_DsReplicaKccDsaFailuresCtr *linkfailures;
+ [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS)] drsuapi_DsReplicaOpCtr *pendingops;
+ [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA)] drsuapi_DsReplicaAttrValMetaDataCtr *attrvalmetadata;
+ [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2)] drsuapi_DsReplicaCursor2Ctr *cursors2;
+ [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] drsuapi_DsReplicaCursor3Ctr *cursors3;
+ [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2;
+ [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2;
+ [case(DRSUAPI_DS_REPLICA_INFO_REPSTO)] drsuapi_DsReplicaNeighbourCtr *repsto;
+ [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS)] drsuapi_DsReplicaConnection04Ctr *clientctx;
+ [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1)] drsuapi_DsReplicaCursorCtrEx *udv1;
+ [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS)] drsuapi_DsReplica06Ctr *srvoutgoingcalls;
+ } drsuapi_DsReplicaInfo;
+
+ WERROR drsuapi_DsReplicaGetInfo(
+ [in] policy_handle *bind_handle,
+ [in] drsuapi_DsReplicaGetInfoLevel level,
+ [in,ref,switch_is(level)] drsuapi_DsReplicaGetInfoRequest *req,
+ [out,ref] drsuapi_DsReplicaInfoType *info_type,
+ [out,ref,switch_is(*info_type)] drsuapi_DsReplicaInfo *info
+ );
+
+ /*****************/
+ /* Function 0x14 */
+ [todo] WERROR DRSUAPI_ADD_SID_HISTORY();
+
+ /*****************/
+ /* Function 0x15 */
+
+ typedef struct {
+ [range(0,10000)] uint32 num_entries;
+ [size_is(num_entries)] drsuapi_DsGetMembershipsCtr1 **ctrl_array;
+ } drsuapi_DsGetMemberships2Ctr1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1;
+ } drsuapi_DsGetMemberships2Ctr;
+
+ typedef struct {
+ [range(1,10000)] uint32 num_req;
+ [size_is(num_req)] drsuapi_DsGetMembershipsRequest1 **req_array;
+ } drsuapi_DsGetMemberships2Request1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_DsGetMemberships2Request1 req1;
+ } drsuapi_DsGetMemberships2Request;
+
+ WERROR drsuapi_DsGetMemberships2(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] drsuapi_DsGetMemberships2Request *req,
+ [out,ref] uint32 *level_out,
+ [out,ref] [switch_is(*level_out)] drsuapi_DsGetMemberships2Ctr *ctr
+ );
+
+ /*****************/
+ /* Function 0x16 */
+ [todo] WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS();
+
+ /*****************/
+ /* Function 0x17 */
+ [todo] WERROR DRSUAPI_GET_OBJECT_EXISTENCE();
+
+ /*****************/
+ /* Function 0x18 */
+ typedef struct {
+ WERROR error_code;
+ uint32 site_cost;
+ } drsuapi_DsSiteCostInfo;
+
+ typedef struct {
+ [range(0,10000)] uint32 num_info;
+ [size_is(num_info)] drsuapi_DsSiteCostInfo *info;
+ [value(0)] uint32 flags_reserved;
+ } drsuapi_QuerySitesByCostCtr1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_QuerySitesByCostCtr1 ctr1;
+ } drsuapi_QuerySitesByCostCtr;
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *site_from;
+ [range(1,10000)] uint32 num_req;
+ [size_is(num_req)] [charset(UTF16),string] uint16 **site_to;
+ uint32 flags;
+ } drsuapi_QuerySitesByCostRequest1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_QuerySitesByCostRequest1 req1;
+ } drsuapi_QuerySitesByCostRequest;
+
+ WERROR drsuapi_QuerySitesByCost(
+ [in] policy_handle *bind_handle,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] drsuapi_QuerySitesByCostRequest *req,
+ [out,ref] uint32 *level_out,
+ [out,ref] [switch_is(*level_out)] drsuapi_QuerySitesByCostCtr *ctr
+ );
+
+ /*****************/
+ /* Function 0x19 */
+ [todo] WERROR drsuapi_InitDemotion();
+
+ /*****************/
+ /* Function 0x1a */
+ [todo] WERROR drsuapi_ReplicaDemotion();
+
+ /*****************/
+ /* Function 0x1b */
+ [todo] WERROR drsuapi_FinishDemotion();
+
+ /*****************/
+ /* Function 0x1c */
+ [todo] WERROR drsuapi_AddCloneDC();
+
+ /*****************/
+ /* Function 0x1d */
+ [todo] WERROR drsuapi_WriteNgcKey();
+
+ /*****************/
+ /* Function 0x1e */
+
+ typedef struct {
+ [charset(UTF16),string] uint16 *pwszAccount;
+ } drsuapi_ReadNgcKeyReqV1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_ReadNgcKeyReqV1 V1;
+ } drsuapi_ReadNgcKeyReq;
+
+ typedef struct {
+ uint32 retVal;
+ [range(0,0xFFFF)] uint32 cNgcKey;
+ [size_is(cNgcKey), string] uint8 * pNgcKey;
+ } drsuapi_ReadNgcKeyReplyV1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] drsuapi_ReadNgcKeyReplyV1 V1;
+ } drsuapi_ReadNgcKeyReply;
+
+ WERROR drsuapi_ReadNgcKey(
+ [in] policy_handle * hDrs,
+ [in] uint32 inVersion,
+ [in, ref, switch_is(inVersion)] drsuapi_ReadNgcKeyReq * ngcReq,
+ [out, ref] uint32 * pOutVersion,
+ [out, ref, switch_is(*pOutVersion)] drsuapi_ReadNgcKeyReply* ngcReply
+ );
+}
diff --git a/epan/dissectors/pidl/dssetup/dssetup.cnf b/epan/dissectors/pidl/dssetup/dssetup.cnf
new file mode 100644
index 00000000..a551614b
--- /dev/null
+++ b/epan/dissectors/pidl/dssetup/dssetup.cnf
@@ -0,0 +1 @@
+# Conformance file for dssetup
diff --git a/epan/dissectors/pidl/dssetup/dssetup.idl b/epan/dissectors/pidl/dssetup/dssetup.idl
new file mode 100644
index 00000000..922caba4
--- /dev/null
+++ b/epan/dissectors/pidl/dssetup/dssetup.idl
@@ -0,0 +1,101 @@
+/*
+ dssetup interface definition
+*/
+
+import "misc/misc.idl";
+
+[
+ uuid("3919286a-b10c-11d0-9ba8-00c04fd92ef5"),
+ version(0.0),
+ endpoint("ncacn_np:[\\pipe\\lsarpc]", "ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
+ pointer_default(unique),
+ helpstring("Active Directory Setup")
+] interface dssetup
+{
+ /**********************************************/
+ /* Function 0x00 */
+
+ typedef enum {
+ DS_ROLE_STANDALONE_WORKSTATION = 0,
+ DS_ROLE_MEMBER_WORKSTATION = 1,
+ DS_ROLE_STANDALONE_SERVER = 2,
+ DS_ROLE_MEMBER_SERVER = 3,
+ DS_ROLE_BACKUP_DC = 4,
+ DS_ROLE_PRIMARY_DC = 5
+ } dssetup_DsRole;
+
+ typedef [bitmap32bit] bitmap {
+ DS_ROLE_PRIMARY_DS_RUNNING = 0x00000001,
+ DS_ROLE_PRIMARY_DS_MIXED_MODE = 0x00000002,
+ DS_ROLE_UPGRADE_IN_PROGRESS = 0x00000004,
+ DS_ROLE_PRIMARY_DOMAIN_GUID_PRESENT = 0x01000000
+ } dssetup_DsRoleFlags;
+
+ typedef struct {
+ dssetup_DsRole role;
+ dssetup_DsRoleFlags flags;
+ [charset(UTF16),string] uint16 *domain;
+ [charset(UTF16),string] uint16 *dns_domain;
+ [charset(UTF16),string] uint16 *forest;
+ GUID domain_guid;
+ } dssetup_DsRolePrimaryDomInfoBasic;
+
+ typedef [v1_enum] enum {
+ DS_ROLE_NOT_UPGRADING = 0,
+ DS_ROLE_UPGRADING = 1
+ } dssetup_DsUpgrade;
+
+ typedef enum {
+ DS_ROLE_PREVIOUS_UNKNOWN = 0,
+ DS_ROLE_PREVIOUS_PRIMARY = 1,
+ DS_ROLE_PREVIOUS_BACKUP = 2
+ } dssetup_DsPrevious;
+
+ typedef struct {
+ dssetup_DsUpgrade upgrading;
+ dssetup_DsPrevious previous_role;
+ } dssetup_DsRoleUpgradeStatus;
+
+ typedef enum {
+ DS_ROLE_OP_IDLE = 0,
+ DS_ROLE_OP_ACTIVE = 1,
+ DS_ROLE_OP_NEEDS_REBOOT = 2
+ } dssetup_DsRoleOp;
+
+ typedef struct {
+ dssetup_DsRoleOp status;
+ } dssetup_DsRoleOpStatus;
+
+ typedef enum {
+ DS_ROLE_BASIC_INFORMATION = 1,
+ DS_ROLE_UPGRADE_STATUS = 2,
+ DS_ROLE_OP_STATUS = 3
+ } dssetup_DsRoleInfoLevel;
+
+ typedef [switch_type(dssetup_DsRoleInfoLevel)] union {
+ [case(DS_ROLE_BASIC_INFORMATION)] dssetup_DsRolePrimaryDomInfoBasic basic;
+ [case(DS_ROLE_UPGRADE_STATUS)] dssetup_DsRoleUpgradeStatus upgrade;
+ [case(DS_ROLE_OP_STATUS)] dssetup_DsRoleOpStatus opstatus;
+ } dssetup_DsRoleInfo;
+
+ WERROR dssetup_DsRoleGetPrimaryDomainInformation(
+ [in] dssetup_DsRoleInfoLevel level,
+ [out,switch_is(level),unique] dssetup_DsRoleInfo *info
+ );
+
+ /*
+ w2k3 has removed all the calls below from their implementation.
+ These stubs are left here only as a way of documenting the names
+ of the calls in case they ever turn up on the wire.
+ */
+ [todo] WERROR dssetup_DsRoleDnsNameToFlatName();
+ [todo] WERROR dssetup_DsRoleDcAsDc();
+ [todo] WERROR dssetup_DsRoleDcAsReplica();
+ [todo] WERROR dssetup_DsRoleDemoteDc();
+ [todo] WERROR dssetup_DsRoleGetDcOperationProgress();
+ [todo] WERROR dssetup_DsRoleGetDcOperationResults();
+ [todo] WERROR dssetup_DsRoleCancel();
+ [todo] WERROR dssetup_DsRoleServerSaveStateForUpgrade();
+ [todo] WERROR dssetup_DsRoleUpgradeDownlevelServer();
+ [todo] WERROR dssetup_DsRoleAbortDownlevelServerUpgrade();
+}
diff --git a/epan/dissectors/pidl/efs/efs.cnf b/epan/dissectors/pidl/efs/efs.cnf
new file mode 100644
index 00000000..cac75869
--- /dev/null
+++ b/epan/dissectors/pidl/efs/efs.cnf
@@ -0,0 +1,27 @@
+# Conformance file for EFS
+
+#
+# policyhandle tracking
+# This block is to specify where a policyhandle is opened and where it is
+# closed so that policyhandles when dissected contain nice info such as
+# [opened in xxx] [closed in yyy]
+#
+# Policyhandles are opened in these functions
+PARAM_VALUE efs_dissect_element_EfsRpcOpenFileRaw_pvContext_ PIDL_POLHND_OPEN
+# Policyhandles are closed in these functions
+PARAM_VALUE efs_dissect_element_EfsRpcCloseRaw_pvContext_ PIDL_POLHND_CLOSE
+
+CODE START
+static int
+efs_dissect_struct_dom_sid(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info* di, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ if(di->conformant_run){
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
+ }
+
+ offset=dissect_nt_sid(tvb, offset, tree, "SID", NULL, -1);
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/efs/efs.idl b/epan/dissectors/pidl/efs/efs.idl
new file mode 100644
index 00000000..54f971d1
--- /dev/null
+++ b/epan/dissectors/pidl/efs/efs.idl
@@ -0,0 +1,108 @@
+/*
+ IDL definitions from original packet-dcerpc-efs.c
+ by Jean-Baptiste Marchand
+*/
+
+/* import "security.idl";*/
+
+[
+ uuid("c681d488-d850-11d0-8c52-00c04fd90f7e"),
+ version(1.0),
+ pointer_default(unique)
+] interface efs
+{
+
+WERROR EfsRpcOpenFileRaw(
+ [out,ref] policy_handle *pvContext,
+ [in] [charset(UTF16),string] uint16 FileName[],
+ [in] uint32 Flags
+ );
+
+WERROR EfsRpcReadFileRaw(
+ [in,ref] policy_handle *pvContext
+/* incomplete */
+);
+
+
+WERROR EfsRpcWriteFileRaw(
+ [in,ref] policy_handle *pvContext
+/* incomplete */
+);
+
+void EfsRpcCloseRaw(
+ [in,out,ref] policy_handle *pvContext
+);
+
+WERROR EfsRpcEncryptFileSrv(
+ [in] [charset(UTF16),string] uint16 Filename[]
+);
+
+WERROR EfsRpcDecryptFileSrv(
+ [in] [charset(UTF16),string] uint16 FileName[],
+ [in] uint32 Reserved
+);
+
+typedef struct {
+ uint32 cbData;
+ [size_is(cbData), unique] uint8 *pbData;
+} EFS_HASH_BLOB;
+
+typedef struct {
+ uint32 cbTotalLength;
+ [unique] dom_sid *pUserSid;
+ [unique] EFS_HASH_BLOB *pHash;
+ [unique] [charset(UTF16),string] uint16 *lpDisplayInformation;
+} ENCRYPTION_CERTIFICATE_HASH;
+
+typedef struct {
+ uint32 nCert_Hash;
+ /* this is a pointer to an array of pointers */
+ [size_is(nCert_Hash)] ENCRYPTION_CERTIFICATE_HASH *pUsers[*];
+} ENCRYPTION_CERTIFICATE_HASH_LIST;
+
+WERROR EfsRpcQueryUsersOnFile(
+ [in] [charset(UTF16),string] uint16 FileName[],
+ [out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers
+);
+
+WERROR EfsRpcQueryRecoveryAgents(
+ [in] [charset(UTF16),string] uint16 FileName[],
+ [out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents
+);
+
+WERROR EfsRpcRemoveUsersFromFile(
+ [in] [charset(UTF16),string] uint16 FileName[]
+ /* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
+);
+
+WERROR EfsRpcAddUsersToFile(
+ [in] [charset(UTF16),string] uint16 FileName[]
+ /* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
+);
+
+typedef struct {
+ uint32 dwCertEncodingType;
+ uint32 cbData;
+ [size_is(cbData)] [unique] uint8 *pbData;
+} EFS_CERTIFICATE_BLOB;
+
+typedef struct {
+ uint32 TotalLength;
+ [unique] dom_sid *pUserSid;
+ [unique] EFS_CERTIFICATE_BLOB *pCertBlob;
+} ENCRYPTION_CERTIFICATE;
+
+WERROR EfsRpcSetFileEncryptionKey(
+ [in] [unique] ENCRYPTION_CERTIFICATE *pEncryptionCertificate
+);
+
+WERROR EfsRpcNotSupported(
+);
+
+WERROR EfsRpcFileKeyInfo(
+);
+
+WERROR EfsRpcDuplicateEncryptionInfoFile(
+);
+
+}
diff --git a/epan/dissectors/pidl/eventlog/eventlog.cnf b/epan/dissectors/pidl/eventlog/eventlog.cnf
new file mode 100644
index 00000000..f9182117
--- /dev/null
+++ b/epan/dissectors/pidl/eventlog/eventlog.cnf
@@ -0,0 +1,158 @@
+# Conformance file for EVENTLOG
+#
+
+HF_FIELD hf_eventlog_Record "Record" "eventlog.Record" FT_NONE BASE_NONE NULL 0 "" "" ""
+HF_FIELD hf_eventlog_Record_length "Record Length" "eventlog.Record.length" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+HF_FIELD hf_eventlog_Record_source_name "Source Name" "eventlog.Record.source_name" FT_STRING BASE_NONE NULL 0 "" "" ""
+HF_FIELD hf_eventlog_Record_computer_name "Computer Name" "eventlog.Record.computer_name" FT_STRING BASE_NONE NULL 0 "" "" ""
+HF_FIELD hf_eventlog_Record_string "string" "eventlog.Record.string" FT_STRING BASE_NONE NULL 0 "" "" ""
+
+MANUAL eventlog_dissect_element_ReadEventLogW_data_
+MANUAL eventlog_dissect_element_Record_sid_length
+MANUAL eventlog_dissect_element_Record_sid_offset
+MANUAL eventlog_dissect_element_Record_source_name
+MANUAL eventlog_dissect_element_Record_computer_name
+MANUAL eventlog_dissect_element_Record_num_of_strings
+MANUAL eventlog_dissect_element_Record_stringoffset
+MANUAL eventlog_dissect_element_Record_strings
+
+NOEMIT eventlog_dissect_element_Record_strings_
+NOEMIT eventlog_dissect_element_ReadEventLogW_data__
+#
+# policyhandle tracking
+# This block is to specify where a policyhandle is opened and where it is
+# closed so that policyhandles when dissected contain nice info such as
+# [opened in xxx] [closed in yyy]
+#
+# Policyhandles are opened in these functions
+PARAM_VALUE eventlog_dissect_element_OpenEventLogW_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE eventlog_dissect_element_OpenBackupEventLogW_handle_ PIDL_POLHND_OPEN
+# Policyhandles are closed in these functions
+PARAM_VALUE eventlog_dissect_element_CloseEventLog_handle_ PIDL_POLHND_CLOSE
+
+TYPE lsa_String "offset=dissect_ndr_counted_string(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_STRING BASE_NONE 0 NULL 4
+
+
+CODE START
+
+static int
+eventlog_dissect_element_ReadEventLogW_data_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
+{
+ guint32 len;
+ tvbuff_t *record_tvb;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
+ hf_eventlog_Record_length, &len);
+
+ /* Create a new tvb so that we know that offset==0 is the beginning
+ * of the record. We need to know this since the data is not really
+ * NDR encoded at all and there are byte offsets into this buffer
+ * encoded therein.
+ */
+ record_tvb=tvb_new_subset_length_caplen(tvb, offset, MIN((gint)len, tvb_captured_length_remaining(tvb, offset)), len);
+ eventlog_dissect_struct_Record(record_tvb, 0, pinfo, tree, di, drep, hf_eventlog_Record, 0);
+ offset+=len;
+
+ return offset;
+}
+
+
+/* sid_length and sid_offset handled by manual code since this is not NDR
+ and we want to dissect the sid from the data blob */
+static guint32 sid_length;
+static int
+eventlog_dissect_element_Record_sid_length(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
+{
+ sid_length=0;
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_eventlog_eventlog_Record_sid_length,&sid_length);
+
+ return offset;
+}
+static int
+eventlog_dissect_element_Record_sid_offset(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
+{
+ guint32 sid_offset=0;
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_eventlog_eventlog_Record_sid_offset,&sid_offset);
+
+ if(sid_offset && sid_length){
+ tvbuff_t *sid_tvb;
+
+ /* this blob contains an NT SID.
+ * tvb starts at the beginning of the record.
+ */
+ sid_tvb=tvb_new_subset_length_caplen(tvb, sid_offset, MIN((gint)sid_length, tvb_captured_length_remaining(tvb, offset)), sid_length);
+ dissect_nt_sid(sid_tvb, 0, tree, "SID", NULL, -1);
+ }
+
+ return offset;
+}
+
+static int
+eventlog_dissect_element_Record_source_name(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info *di _U_, guint8 *drep _U_)
+{
+ guint len;
+
+ len=tvb_unicode_strsize(tvb, offset);
+ proto_tree_add_item(tree, hf_eventlog_Record_source_name, tvb, offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
+
+ offset+=len;
+ return offset;
+}
+
+static int
+eventlog_dissect_element_Record_computer_name(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info *di _U_, guint8 *drep _U_)
+{
+ guint len;
+
+ len=tvb_unicode_strsize(tvb, offset);
+ proto_tree_add_item(tree, hf_eventlog_Record_computer_name, tvb, offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
+
+ offset+=len;
+ return offset;
+}
+
+static guint16 num_of_strings;
+
+static int
+eventlog_dissect_element_Record_num_of_strings(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
+{
+ num_of_strings=0;
+ offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_eventlog_eventlog_Record_num_of_strings,&num_of_strings);
+
+ return offset;
+}
+
+static guint32 string_offset;
+
+static int
+eventlog_dissect_element_Record_stringoffset(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
+{
+ string_offset=0;
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_eventlog_eventlog_Record_stringoffset,&string_offset);
+
+ return offset;
+}
+
+static int
+eventlog_dissect_element_Record_strings(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info *di _U_, guint8 *drep _U_)
+{
+ while(string_offset && num_of_strings){
+ guint len;
+
+ len=tvb_unicode_strsize(tvb, string_offset);
+ proto_tree_add_item(tree, hf_eventlog_Record_string, tvb, string_offset, len, ENC_UTF_16|ENC_LITTLE_ENDIAN);
+ string_offset+=len;
+
+ num_of_strings--;
+ }
+
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/eventlog/eventlog.idl b/epan/dissectors/pidl/eventlog/eventlog.idl
new file mode 100644
index 00000000..cef3c388
--- /dev/null
+++ b/epan/dissectors/pidl/eventlog/eventlog.idl
@@ -0,0 +1,224 @@
+#include "idl_types.h"
+
+/* import "lsa.idl", "security.idl";*/
+
+/*
+ eventlog interface definition
+*/
+[ uuid("82273fdc-e32a-18c3-3f78-827929dc23ea"),
+ version(0.0),
+ pointer_default(unique),
+ helpstring("Event Logger")
+] interface eventlog
+{
+ typedef bitmap {
+ EVENTLOG_SEQUENTIAL_READ = 0x0001,
+ EVENTLOG_SEEK_READ = 0x0002,
+ EVENTLOG_FORWARDS_READ = 0x0004,
+ EVENTLOG_BACKWARDS_READ = 0x0008
+ } eventlogReadFlags;
+
+ typedef bitmap {
+ EVENTLOG_SUCCESS = 0x0000,
+ EVENTLOG_ERROR_TYPE = 0x0001,
+ EVENTLOG_WARNING_TYPE = 0x0002,
+ EVENTLOG_INFORMATION_TYPE = 0x0004,
+ EVENTLOG_AUDIT_SUCCESS = 0x0008,
+ EVENTLOG_AUDIT_FAILURE = 0x0010
+ } eventlogEventTypes;
+
+ typedef struct {
+ uint16 unknown0;
+ uint16 unknown1;
+ } eventlog_OpenUnknown0;
+
+ typedef [public] struct {
+ uint32 size;
+ uint32 reserved;
+ uint32 record_number;
+ uint32 time_generated;
+ uint32 time_written;
+ uint32 event_id;
+ uint16 event_type;
+ uint16 num_of_strings;
+ uint16 event_category;
+ uint16 reserved_flags;
+ uint32 closing_record_number;
+ uint32 stringoffset;
+ uint32 sid_length;
+ uint32 sid_offset;
+ uint32 data_length;
+ uint32 data_offset;
+ nstring source_name;
+ nstring computer_name;
+ nstring strings[num_of_strings];
+ astring raw_data;
+ } eventlog_Record;
+
+ /******************/
+ /* Function: 0x00 */
+ NTSTATUS eventlog_ClearEventLogW(
+ [in] policy_handle *handle,
+ [in,unique] lsa_String *backupfilename
+ );
+
+ /******************/
+ /* Function: 0x01 */
+ NTSTATUS eventlog_BackupEventLogW(
+ [in] policy_handle *handle,
+ [in,unique] lsa_String *backupfilename
+ );
+
+ /******************/
+ /* Function: 0x02 */
+ NTSTATUS eventlog_CloseEventLog(
+ [in,out] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x03 */
+ NTSTATUS eventlog_DeregisterEventSource(
+ [in,out] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x04 */
+ NTSTATUS eventlog_GetNumRecords(
+ [in] policy_handle *handle,
+ [out,ref] uint32 *number
+ );
+
+ /******************/
+ /* Function: 0x05 */
+ NTSTATUS eventlog_GetOldestRecord(
+ [in] policy_handle *handle,
+ [out,ref] uint32 *oldest
+ );
+
+ /******************/
+ /* Function: 0x06 */
+ typedef struct {
+ uint32 unknown0;
+ uint32 unknown1;
+ } eventlog_ChangeUnknown0;
+
+ NTSTATUS eventlog_ChangeNotify(
+ [in] policy_handle *handle,
+ [in, ref] eventlog_ChangeUnknown0 *unknown2,
+ [in] uint32 unknown3
+ );
+
+ /******************/
+ /* Function: 0x07 */
+ NTSTATUS eventlog_OpenEventLogW(
+ [in,unique] eventlog_OpenUnknown0 *unknown0,
+ [in] lsa_String Module,
+ [in] lsa_String RegModuleName,
+ [in] uint32 MajorVersion,
+ [in] uint32 MinorVersion,
+ [out] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x08 */
+ NTSTATUS eventlog_RegisterEventSourceW(
+ [in,unique] eventlog_OpenUnknown0 *unknown0,
+ [in] lsa_String logname,
+ [in] lsa_String servername,
+ [in] uint32 unknown2,
+ [in] uint32 unknown3,
+ [out] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x09 */
+ NTSTATUS eventlog_OpenBackupEventLogW(
+ [in,unique] eventlog_OpenUnknown0 *unknown0,
+ [in] lsa_String logname,
+ [in] uint32 unknown2,
+ [in] uint32 unknown3,
+ [out] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x0a */
+ NTSTATUS eventlog_ReadEventLogW(
+ [in] policy_handle *handle,
+ [in] eventlogReadFlags flags,
+ [in] uint32 offset,
+ [in] uint32 number_of_bytes,
+ [out,size_is(number_of_bytes)] uint8 *data,
+ [out,ref] uint32 *sent_size,
+ [out,ref] uint32 *real_size
+ );
+
+ /*****************/
+ /* Function 0x0b */
+ NTSTATUS eventlog_ReportEventW(
+ [in] policy_handle *handle,
+ [in] uint32 time,
+ [in] eventlogEventTypes Type,
+ [in] uint16 event_category,
+ [in] uint32 event_id,
+ [in] uint16 num_of_strings,
+ [in] uint32 data_length,
+ [in] lsa_String computer_name
+ /* sid */
+ );
+
+ /*****************/
+ /* Function 0x0c */
+ NTSTATUS eventlog_ClearEventLogA();
+
+ /******************/
+ /* Function: 0x0d */
+ NTSTATUS eventlog_BackupEventLogA();
+
+ /*****************/
+ /* Function 0x0e */
+ NTSTATUS eventlog_OpenEventLogA();
+
+ /*****************/
+ /* Function 0x0f */
+ NTSTATUS eventlog_RegisterEventSourceA();
+
+ /*****************/
+ /* Function 0x10 */
+ NTSTATUS eventlog_OpenBackupEventLogA();
+
+ /*****************/
+ /* Function 0x11 */
+ NTSTATUS eventlog_ReadEventLogA();
+
+ /*****************/
+ /* Function 0x12 */
+ NTSTATUS eventlog_ReportEventA();
+
+ /*****************/
+ /* Function 0x13 */
+ NTSTATUS eventlog_RegisterClusterSvc();
+
+ /*****************/
+ /* Function 0x14 */
+ NTSTATUS eventlog_DeregisterClusterSvc();
+
+ /*****************/
+ /* Function 0x15 */
+ NTSTATUS eventlog_WriteClusterEvents();
+
+ /*****************/
+ /* Function 0x16 */
+ NTSTATUS eventlog_GetLogIntormation(
+ [in] policy_handle *handle,
+ [in] uint32 dwInfoLevel,
+ [out] [size_is(cbBufSize)] char lpBuffer[*],
+ [in] uint32 cbBufSize,
+ [out,ref] long *cbBytesNeeded
+ );
+
+ /*****************/
+ /* Function 0x17 */
+ NTSTATUS eventlog_FlushEventLog(
+ [in] policy_handle *handle
+ );
+}
diff --git a/epan/dissectors/pidl/frsrpc/frsrpc.cnf b/epan/dissectors/pidl/frsrpc/frsrpc.cnf
new file mode 100644
index 00000000..a0116f30
--- /dev/null
+++ b/epan/dissectors/pidl/frsrpc/frsrpc.cnf
@@ -0,0 +1,115 @@
+NOEMIT CommPktChunkCtr
+NOEMIT CommPktChangeOrderCommand.file_name
+
+ETT_FIELD ett_ChunkCtr
+HF_FIELD hf_frsrpc_CommPktChangeOrderCommand_file_name "File Name" "frsrpc.CommPktChangeOrderCommand.file_name" FT_STRING BASE_NONE NULL 0 "" "" ""
+HF_FIELD hf_CommPktChunk "Chunk" "frsrpc.chunk.ctr.chunk" FT_NONE BASE_NONE NULL 0 "" "" ""
+
+MANUAL frsrpc_dissect_struct_frsrpc_CommPktChunkCtr
+MANUAL frsrpc_dissect_element_CommPktChangeOrderCommand_file_name
+MANUAL frsrpc_dissect_enum_CommPktCommand
+MANUAL frsrpc_dissect_struct_CommPktChunk
+
+CODE START
+static int
+frsrpc_dissect_element_CommPktChangeOrderCommand_file_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ int conformant = di->conformant_run;
+
+ if (!conformant) {
+ guint32 soffset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_frsrpc_CommPktChangeOrderCommand_file_name, 0);
+ /* The difference has to be 4 due to the uint16 of the length + null terminator utf16*/
+ DISSECTOR_ASSERT(soffset - offset < 261);
+ offset += 261;
+ }
+
+ return offset;
+}
+
+int
+frsrpc_dissect_struct_CommPktChunk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ guint1632 type = 0;
+ int i = 0;
+ const char *s = NULL;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_frsrpc_frsrpc_CommPktChunk);
+ }
+
+ offset = frsrpc_dissect_element_CommPktChunk_type(tvb, offset, pinfo, tree, di, drep, &type);
+
+ offset = frsrpc_dissect_element_CommPktChunk_data(tvb, offset, pinfo, tree, di, drep, &type);
+
+ for (i=0; frsrpc_frsrpc_CommPktChunkType_vals[i].strptr; i++) {
+ if (frsrpc_frsrpc_CommPktChunkType_vals[i].value == type) {
+ s = frsrpc_frsrpc_CommPktChunkType_vals[i].strptr;
+ }
+ }
+ if (s != NULL) {
+ proto_item_append_text(item, ", type = %s", s);
+ }
+ proto_item_set_len(item, offset-old_offset);
+
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_3_BYTES;
+ }
+
+ return offset;
+}
+
+int
+frsrpc_dissect_enum_CommPktCommand(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)
+{
+ guint32 parameter=0;
+ int i = 0;
+ const char *s = NULL;
+ if(param){
+ parameter=(guint32)*param;
+ }
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
+
+ for (i=0; frsrpc_frsrpc_CommPktCommand_vals[i].strptr != NULL; i++) {
+ if (frsrpc_frsrpc_CommPktCommand_vals[i].value == parameter) {
+ s = frsrpc_frsrpc_CommPktCommand_vals[i].strptr;
+ }
+ }
+ if (s!= NULL)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ",command = %s",
+ s);
+
+ if(param){
+ *param=(guint32)parameter;
+ }
+ return offset;
+}
+
+
+static int
+frsrpc_dissect_struct_frsrpc_CommPktChunkCtr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep _U_, int hf_index, guint32 param _U_)
+{
+ guint32 remaining = tvb_reported_length_remaining(tvb, offset);
+ int align_status = di->no_align;
+
+ if (remaining > 0) {
+ proto_item *item = proto_tree_add_item(tree, hf_index, tvb, offset, -1, TRUE);
+ proto_tree *subtree = proto_item_add_subtree(item, ett_ChunkCtr);
+ di->no_align = 1;
+ while (remaining > 0) {
+ offset = frsrpc_dissect_struct_CommPktChunk(tvb, offset, pinfo, subtree, di, drep, hf_CommPktChunk, param);
+ remaining = tvb_reported_length_remaining(tvb, offset);
+ }
+ di->no_align = align_status;
+ }
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/frsrpc/frsrpc.idl b/epan/dissectors/pidl/frsrpc/frsrpc.idl
new file mode 100644
index 00000000..3d2feddf
--- /dev/null
+++ b/epan/dissectors/pidl/frsrpc/frsrpc.idl
@@ -0,0 +1,422 @@
+#include "idl_types.h"
+
+import "misc/misc.idl";
+
+[
+ uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
+ version(1.1),
+ endpoint("ncacn_ip_tcp:", "ncalrpc:"),
+ helpstring("File Replication Service"),
+ helper("../librpc/ndr/ndr_frsrpc.h"),
+ pointer_default(unique)
+]
+interface frsrpc
+{
+ /*****************/
+ /* Function 0x00 */
+
+ typedef struct {
+ [subcontext(4)] GUID guid;
+ [subcontext(4)] nstring name;
+ } frsrpc_CommPktChunkGuidName;
+
+ typedef struct {
+ hyper vsn;
+ GUID guid;
+ } frsrpc_CommPktGSVN;
+
+ typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap {
+ FRSRPC_CO_FLAG_ABORT_CO = 0x00000001,
+ FRSRPC_CO_FLAG_VV_ACTIVATED = 0x00000002,
+ FRSRPC_CO_FLAG_CONTENT_CMD = 0x00000004,
+ FRSRPC_CO_FLAG_LOCATION_CMD = 0x00000008,
+ FRSRPC_CO_FLAG_ONLIST = 0x00000010,
+ FRSRPC_CO_FLAG_LOCALCO = 0x00000020,
+ FRSRPC_CO_FLAG_RETRY = 0x00000040,
+ FRSRPC_CO_FLAG_OUT_OF_ORDER = 0x00000200,
+ FRSRPC_CO_FLAG_NEW_FILE = 0x00000400,
+ FRSRPC_CO_FLAG_CONTROL = 0x00001000,
+ FRSRPC_CO_FLAG_DIRECTED_CO = 0x00002000,
+ FRSRPC_CO_FLAG_VVJOIN_TO_ORIG = 0x00040000,
+ FRSRPC_CO_FLAG_SKIP_ORIG_REC_C = 0x00100000,
+ FRSRPC_CO_FLAG_MOVEIN_GEN = 0x00200000,
+ FRSRPC_CO_FLAG_MORPH_GEN_HEAD = 0x00400000,
+ FRSRPC_CO_FLAG_JUST_OID_RESET = 0x00800000,
+ FRSRPC_CO_FLAG_COMPRESSED_STAGE = 0x01000000,
+ FRSRPC_CO_FLAG_SKIP_VV_UPDATE = 0x02000000
+ } frsrpc_CommPktCoCmdFlags;
+
+ const uint32 FRSRPC_CO_IFLAG_NONE = 0x0000000;
+
+ typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap {
+ FRSRPC_CO_IFLAG_VVRETIRE_EXEC = 0x00000001,
+ FRSRPC_CO_IFLAG_CO_ABORT = 0x00000002,
+ FRSRPC_CO_IFLAG_DIR_ENUM_PENDING= 0x00000004
+ } frsrpc_CommPktCoCmdIFlags;
+
+ typedef [v1_enum,flag(NDR_PAHEX)] enum {
+ FRSRPC_CO_STATUS_CO_ENTERED_LOG = 0x00000000,
+ FRSRPC_CO_STATUS_ALLOC_STAGING_LOCAL_CO = 0x00000001,
+ FRSRPC_CO_STATUS_LOCAL_CO_STAGING_STARTED = 0x00000002,
+ FRSRPC_CO_STATUS_LOCAL_CO_STAGING_COMPLETED = 0x00000003,
+ FRSRPC_CO_STATUS_WAIT_RETRY_LOCAL_CO_STAGING = 0x00000004,
+ FRSRPC_CO_STATUS_ALLOC_STAGING_REMOTE_CO = 0x00000005,
+ FRSRPC_CO_STATUS_REMOTE_CO_STAGING_STARTED = 0x00000006,
+ FRSRPC_CO_STATUS_REMOTE_CO_STAGING_COMPLETED = 0x00000007,
+ FRSRPC_CO_STATUS_WAIT_RETRY_REMOTE_CO_STAGING = 0x00000008,
+ FRSRPC_CO_STATUS_FILE_INSTALL_REQUESTED = 0x00000009,
+ FRSRPC_CO_STATUS_FILE_INSTALL_STARTED = 0x0000000A,
+ FRSRPC_CO_STATUS_FILE_INSTALL_COMPLETED = 0x0000000B,
+ FRSRPC_CO_STATUS_FILE_INSTALL_WAIT_RETRY = 0x0000000C,
+ FRSRPC_CO_STATUS_FILE_INSTALL_RETRYING = 0x0000000D,
+ FRSRPC_CO_STATUS_FILE_INSTALL_RENAME_RETRYING = 0x0000000E,
+ FRSRPC_CO_STATUS_FILE_INSTALL_DELETE_RETRYING = 0x0000000F,
+ FRSRPC_CO_STATUS_CO_RECYCLED_FOR_ENUM = 0x00000013,
+ FRSRPC_CO_STATUS_REQUEST_OUTBOUND_PROPAGATION = 0x00000014,
+ FRSRPC_CO_STATUS_REQUEST_ACCEPTED_OUTBOUND_LOG = 0x00000015,
+ FRSRPC_CO_STATUS_DB_STATE_UPDATE_STARTED = 0x00000016,
+ FRSRPC_CO_STATUS_DB_STATE_UPDATE_COMPLETED = 0x00000017,
+ FRSRPC_CO_STATUS_CO_ABORTED = 0x00000018
+ } frsrpc_CommPktCoCmdStatus;
+
+ typedef [bitmap32bit,flag(NDR_PAHEX)] bitmap {
+ FRSRPC_CONTENT_REASON_DATA_OVERWRITE = 0x00000001,
+ FRSRPC_CONTENT_REASON_DATA_EXTEND = 0x00000002,
+ FRSRPC_CONTENT_REASON_DATA_TRUNCATION = 0x00000004,
+ FRSRPC_CONTENT_REASON_NAMED_DATA_OVERWRITE = 0x00000010,
+ FRSRPC_CONTENT_REASON_NAMED_DATA_EXTEND = 0x00000020,
+ FRSRPC_CONTENT_REASON_NAMED_DATA_TRUNCATION = 0x00000040,
+ FRSRPC_CONTENT_REASON_FILE_CREATE = 0x00000100,
+ FRSRPC_CONTENT_REASON_FILE_DELETE = 0x00000200,
+ FRSRPC_CONTENT_REASON_EA_CHANGE = 0x00000400,
+ FRSRPC_CONTENT_REASON_SECURITY_CHANGE = 0x00000800,
+ FRSRPC_CONTENT_REASON_OLD_NAME = 0x00001000,
+ FRSRPC_CONTENT_REASON_NEW_NAME = 0x00002000,
+ FRSRPC_CONTENT_REASON_BASIC_INFO_CHANGE = 0x00004000,
+ FRSRPC_CONTENT_REASON_COMPRESSION_CHANGE = 0x00020000
+ } frsrpc_CommPktCoCmdContentCmd;
+
+ typedef [v1_enum,flag(NDR_PAHEX)] enum {
+ FRSRPC_CO_LOCATION_FILE_CREATE = 0x00000000,
+ FRSRPC_CO_LOCATION_DIR_CREATE = 0x00000000 | 0x00000001,
+ FRSRPC_CO_LOCATION_FILE_DELETE = 0x00000002,
+ FRSRPC_CO_LOCATION_DIR_DELETE = 0x00000002 | 0x00000001,
+ FRSRPC_CO_LOCATION_FILE_MOVEIN = 0x00000004,
+ FRSRPC_CO_LOCATION_DIR_MOVEIN = 0x00000004 | 0x00000001,
+ FRSRPC_CO_LOCATION_FILE_MOVEIN2 = 0x00000006,
+ FRSRPC_CO_LOCATION_DIR_MOVEIN2 = 0x00000006 | 0x00000001,
+ FRSRPC_CO_LOCATION_FILE_MOVEOUT = 0x00000008,
+ FRSRPC_CO_LOCATION_DIR_MOVEOUT = 0x00000008 | 0x00000001,
+ FRSRPC_CO_LOCATION_FILE_MOVERS = 0x0000000a,
+ FRSRPC_CO_LOCATION_DIR_MOVERS = 0x0000000a | 0x00000001,
+ FRSRPC_CO_LOCATION_FILE_MOVEDIR = 0x0000000c,
+ FRSRPC_CO_LOCATION_DIR_MOVEDIR = 0x0000000c | 0x00000001,
+ FRSRPC_CO_LOCATION_FILE_NO_CMD = 0x0000000e,
+ FRSRPC_CO_LOCATION_DIR_NO_CMD = 0x0000000e | 0x00000001
+ } frsrpc_CommPktCoCmdLocationCmd;
+
+ typedef struct {
+ uint32 sequence_number;
+ frsrpc_CommPktCoCmdFlags flags;
+ frsrpc_CommPktCoCmdIFlags iflags;
+ frsrpc_CommPktCoCmdStatus status;
+ frsrpc_CommPktCoCmdContentCmd content_cmd;
+ frsrpc_CommPktCoCmdLocationCmd location_cmd;
+ uint32 file_attributes;
+ uint32 file_version_number;
+ uint32 partern_ack_sequence_number;
+ [value(0)] uint32 not_used;
+ hyper file_size;
+ hyper file_offset;
+ hyper frs_vsn;
+ hyper file_usn;
+ hyper jrnl_usn;
+ hyper jrnl_first_usn;
+ uint32 original_replica_num;
+ uint32 new_replica_num;
+ GUID change_order_guid;
+ GUID originator_guid;
+ GUID file_guid;
+ GUID old_parent_guid;
+ GUID new_parent_guid;
+ GUID connection_guid;
+ hyper ack_version;
+ [value(0)] hyper spare2ul1;
+ [value(0)] hyper spare1guid_p1;
+ [value(0)] hyper spare1guid_p2;
+ [value(0)] hyper spare2guid_p1;
+ [value(0)] hyper spare3guid_p2;
+ [value(0)] uint32 spare1wcs;
+ [value(0)] uint32 spare2wcs;
+ [value(0)] uint32 extension;
+ [value(0)] uint32 spare2bin;
+ NTTIME event_time;
+ [value(2*strlen_m(file_name))] uint16 file_name_length;
+#define FRSRPC_MAX_PATH 260
+ [charset(UTF16)] uint16 file_name[FRSRPC_MAX_PATH+1];
+ [value(0)] uint8 padding1;
+ [value(0)] uint8 padding2;
+ [value(0)] uint8 padding3;
+ [value(0)] uint8 padding4;
+ } frsrpc_CommPktChangeOrderCommand;
+
+ typedef [v1_enum,flag(NDR_PAHEX)] enum {
+ FRSRPC_DATA_EXTENSION_TERMINATOR = 0x00000000,
+ FRSRPC_DATA_EXTENSION_MD5_CHECKSUM = 0x00000001,
+ FRSRPC_DATA_EXTENSION_RETRY_TIMEOUT = 0x00000002
+ } frsrpc_CommPktDataExtensionType;
+
+ typedef [flag(NDR_PAHEX)] struct {
+ [value(0x00000018)] uint32 prefix_size;
+ [value(FRSRPC_DATA_EXTENSION_MD5_CHECKSUM)]
+ frsrpc_CommPktDataExtensionType prefix_type;
+ uint8 data[16];
+ } frsrpc_CommPktDataExtensionChecksum;
+
+ typedef struct {
+ [value(0x00000018)] uint32 prefix_size;
+ [value(FRSRPC_DATA_EXTENSION_RETRY_TIMEOUT)]
+ frsrpc_CommPktDataExtensionType prefix_type;
+ uint32 count;
+ [value(0)] uint32 not_used;
+ NTTIME first_try_time;
+ } frsrpc_CommPktDataExtensionRetryTimeout;
+
+ typedef [flag(NDR_PAHEX)] enum {
+ FRSRPC_CO_RECORD_EXTENSION_VERSION_WIN2K = 0x0000,
+ FRSRPC_CO_RECORD_EXTENSION_VERSION_1 = 0x0001
+ } frsrpc_CommPktCoRecordExtensionMajor;
+
+ typedef struct {
+ [value(0x00000028)] uint32 field_size;
+ [value(FRSRPC_CO_RECORD_EXTENSION_VERSION_WIN2K)]
+ frsrpc_CommPktCoRecordExtensionMajor major;
+ [value(0x0001)] uint16 offset_count;
+ [value(0x00000010)] uint32 offset;
+ [value(0)] uint32 offset_last;
+ frsrpc_CommPktDataExtensionChecksum data_checksum;
+ } frsrpc_CommPktCoRecordExtensionWin2k;
+
+ typedef struct {
+ [value(0x00000048)] uint32 field_size;
+ frsrpc_CommPktCoRecordExtensionMajor major;
+ [value(0x0002)] uint16 offset_count;
+ [value(0x00000018)] uint32 offset0;
+ [value(0x00000030)] uint32 offset1;/*TODO: is this correct??? */
+ [value(0)] uint32 offset_last;
+ [value(0)] uint32 not_used;
+ frsrpc_CommPktDataExtensionChecksum data_checksum;
+ frsrpc_CommPktDataExtensionRetryTimeout data_retry_timeout;
+ } frsrpc_CommPktChangeOrderRecordExtension;
+
+ typedef [v1_enum,flag(NDR_PAHEX)] enum {
+ FRSRPC_COMMAND_REMOTE_CO = 0x00000218,
+ FRSRPC_COMMAND_RECEIVING_STATE = 0x00000238,
+ FRSRPC_COMMAND_REMOTE_CO_DONE = 0x00000250,
+ FRSRPC_COMMAND_ABORT_FETCH = 0x00000246,
+ FRSRPC_COMMAND_RETRY_FETCH = 0x00000244,
+ FRSRPC_COMMAND_NEED_JOIN = 0x00000121,
+ FRSRPC_COMMAND_START_JOIN = 0x00000122,
+ FRSRPC_COMMAND_JOINING = 0x00000130,
+ FRSRPC_COMMAND_JOINED = 0x00000128,
+ FRSRPC_COMMAND_UNJOIN_REMOTE = 0x00000148,
+ FRSRPC_COMMAND_WJOIN_DONE = 0x00000136,
+ FRSRPC_COMMAND_SEND_STAGE = 0x00000228
+ } frsrpc_CommPktCommand;
+
+ typedef [flag(NDR_PAHEX)] enum {
+ FRSRPC_COMM_PKT_CHUNK_BOP = 0x0001,
+ FRSRPC_COMM_PKT_CHUNK_COMMAND = 0x0002,
+ FRSRPC_COMM_PKT_CHUNK_TO = 0x0003,
+ FRSRPC_COMM_PKT_CHUNK_FROM = 0x0004,
+ FRSRPC_COMM_PKT_CHUNK_REPLICA = 0x0005,
+ FRSRPC_COMM_PKT_CHUNK_CONNECTION = 0x0008,
+ FRSRPC_COMM_PKT_CHUNK_JOIN_GUID = 0x0006,
+ FRSRPC_COMM_PKT_CHUNK_LAST_JOIN_TIME = 0x0012,
+
+ FRSRPC_COMM_PKT_CHUNK_VVECTOR = 0x0007,
+ FRSRPC_COMM_PKT_CHUNK_JOIN_TIME = 0x0011,
+ FRSRPC_COMM_PKT_CHUNK_REPLICA_VERSION_GUID = 0x0014,
+ FRSRPC_COMM_PKT_CHUNK_COMPRESSION_GUID = 0x0018,
+
+ FRSRPC_COMM_PKT_CHUNK_BLOCK = 0x0009,
+ FRSRPC_COMM_PKT_CHUNK_BLOCK_SIZE = 0x000A,
+ FRSRPC_COMM_PKT_CHUNK_FILE_SIZE = 0x000B,
+ FRSRPC_COMM_PKT_CHUNK_FILE_OFFSET = 0x000C,
+ FRSRPC_COMM_PKT_CHUNK_GVSN = 0x000E,
+ FRSRPC_COMM_PKT_CHUNK_CO_GUID = 0x000F,
+ FRSRPC_COMM_PKT_CHUNK_CO_SEQUENCE_NUMBER = 0x0010,
+
+ FRSRPC_COMM_PKT_CHUNK_REMOTE_CO = 0x000D,
+ FRSRPC_COMM_PKT_CHUNK_CO_EXT_WIN2K = 0x0016,
+ FRSRPC_COMM_PKT_CHUNK_CO_EXTENTION_2 = 0x0017,
+
+ FRSRPC_COMM_PKT_CHUNK_EOP = 0x0013
+ } frsrpc_CommPktChunkType;
+
+ typedef [nodiscriminant] union {
+ [default,flag(NDR_REMAINING)] DATA_BLOB blob;
+ [case(FRSRPC_COMM_PKT_CHUNK_BOP)]
+ [value(0)] uint32 bop;
+ [case(FRSRPC_COMM_PKT_CHUNK_COMMAND)]
+ frsrpc_CommPktCommand command;
+ [case(FRSRPC_COMM_PKT_CHUNK_TO)]
+ frsrpc_CommPktChunkGuidName to;
+ [case(FRSRPC_COMM_PKT_CHUNK_FROM)]
+ frsrpc_CommPktChunkGuidName from;
+ [case(FRSRPC_COMM_PKT_CHUNK_REPLICA)]
+ frsrpc_CommPktChunkGuidName replica;
+ [case(FRSRPC_COMM_PKT_CHUNK_CONNECTION)]
+ frsrpc_CommPktChunkGuidName connection;
+ [case(FRSRPC_COMM_PKT_CHUNK_JOIN_GUID)][subcontext(4)]
+ GUID join_guid;
+ [case(FRSRPC_COMM_PKT_CHUNK_LAST_JOIN_TIME)]
+ NTTIME last_join_time;
+ [case(FRSRPC_COMM_PKT_CHUNK_VVECTOR)][subcontext(4)]
+ frsrpc_CommPktGSVN vvector;
+ [case(FRSRPC_COMM_PKT_CHUNK_JOIN_TIME)][subcontext(4)]
+ NTTIME join_time;
+ [case(FRSRPC_COMM_PKT_CHUNK_REPLICA_VERSION_GUID)][subcontext(4)]
+ GUID replica_version_guid;
+ [case(FRSRPC_COMM_PKT_CHUNK_COMPRESSION_GUID)]
+ GUID compression_guid;
+ [case(FRSRPC_COMM_PKT_CHUNK_BLOCK)]
+ [flag(NDR_REMAINING)] DATA_BLOB block;
+ [case(FRSRPC_COMM_PKT_CHUNK_BLOCK_SIZE)]
+ hyper block_size;
+ [case(FRSRPC_COMM_PKT_CHUNK_FILE_SIZE)]
+ hyper file_size;
+ [case(FRSRPC_COMM_PKT_CHUNK_FILE_OFFSET)]
+ hyper file_offset;
+ [case(FRSRPC_COMM_PKT_CHUNK_GVSN)][subcontext(4)]
+ frsrpc_CommPktGSVN gvsn;
+ [case(FRSRPC_COMM_PKT_CHUNK_CO_GUID)][subcontext(4)]
+ GUID co_guid;
+ [case(FRSRPC_COMM_PKT_CHUNK_CO_SEQUENCE_NUMBER)]
+ uint32 co_sequnence_number;
+ [case(FRSRPC_COMM_PKT_CHUNK_REMOTE_CO)][subcontext(4)]
+ frsrpc_CommPktChangeOrderCommand remote_co;
+ [case(FRSRPC_COMM_PKT_CHUNK_CO_EXT_WIN2K)][subcontext(4)]
+ frsrpc_CommPktCoRecordExtensionWin2k co_ext_win2k;
+ [case(FRSRPC_COMM_PKT_CHUNK_CO_EXTENTION_2)]
+ frsrpc_CommPktChangeOrderRecordExtension co_extension2;
+ [case(FRSRPC_COMM_PKT_CHUNK_EOP)]
+ [value(0xFFFFFFFF)] uint32 bopend;
+ } frsrpc_CommPktChunkData;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ frsrpc_CommPktChunkType type;
+ [subcontext(4),switch_is(type)] frsrpc_CommPktChunkData data;
+ } frsrpc_CommPktChunk;
+
+ typedef [nopull,nopush,flag(NDR_NOALIGN)] struct {
+ uint32 num_chunks; /* this doesn't appear on the wire */
+ frsrpc_CommPktChunk chunks[num_chunks];
+ } frsrpc_CommPktChunkCtr;
+
+ typedef [v1_enum] enum {
+ FRSRPC_COMM_PKT_MAJOR_0 = 0x00000000
+ } frsrpc_CommPktMajor;
+
+ typedef [v1_enum] enum {
+ FRSRPC_COMM_PKT_MINOR_0 = 0x00000000,
+ FRSRPC_COMM_PKT_MINOR_1 = 0x00000001,
+ FRSRPC_COMM_PKT_MINOR_2 = 0x00000002,
+ FRSRPC_COMM_PKT_MINOR_3 = 0x00000003,
+ FRSRPC_COMM_PKT_MINOR_4 = 0x00000004,
+ FRSRPC_COMM_PKT_MINOR_5 = 0x00000005,
+ FRSRPC_COMM_PKT_MINOR_6 = 0x00000006,
+ FRSRPC_COMM_PKT_MINOR_7 = 0x00000007,
+ FRSRPC_COMM_PKT_MINOR_8 = 0x00000008,
+ FRSRPC_COMM_PKT_MINOR_9 = 0x00000009
+ } frsrpc_CommPktMinor;
+
+ typedef struct {
+ frsrpc_CommPktMajor major;
+ frsrpc_CommPktMinor minor;
+ [value(1)] uint32 cs_id;
+ [value(pkt_len+12)] uint32 memory_len;
+ [value(ndr_size_frsrpc_CommPktChunkCtr(r->ctr,
+ ndr->flags))]
+ [range(0, 262144)]
+ uint32 pkt_len;
+ [value(0)] uint32 upk_len;
+ [subcontext(4),subcontext_size(pkt_len)]
+ frsrpc_CommPktChunkCtr *ctr;
+ [value(0)] uint3264 data_name;
+ [value(0)] uint3264 data_handle;
+ } frsrpc_FrsSendCommPktReq;
+
+ WERROR frsrpc_FrsSendCommPkt(
+ [in] frsrpc_FrsSendCommPktReq req
+ );
+
+ /*****************/
+ /* Function 0x01 */
+ /* this function always return WERR_CALL_NOT_IMPLEMENTED */
+ WERROR frsrpc_FrsVerifyPromotionParent(
+ [in,unique,string,charset(UTF16)] uint16 *parent_account,
+ [in,unique,string,charset(UTF16)] uint16 *parent_password,
+ [in,unique,string,charset(UTF16)] uint16 *replica_set_name,
+ [in,unique,string,charset(UTF16)] uint16 *replica_set_type,
+ [in] frsrpc_PartnerAuthLevel partner_auth_level,
+ [in] uint32 __ndr_guid_size
+ );
+
+ /*****************/
+ /* Function 0x02 */
+ typedef [v1_enum,flag(NDR_PAHEX)] enum {
+ FRSRPC_PARENT_AUTH_LEVEL_ENCRYPTED_KERBEROS = 0x00000000,
+ FRSRPC_PARENT_AUTH_LEVEL_NO_AUTHENTICATION = 0x00000001
+ } frsrpc_PartnerAuthLevel;
+
+ WERROR frsrpc_FrsStartPromotionParent(
+ [in,unique,string,charset(UTF16)] uint16 *parent_account,
+ [in,unique,string,charset(UTF16)] uint16 *parent_password,
+ [in,unique,string,charset(UTF16)] uint16 *replica_set_name,
+ [in,unique,string,charset(UTF16)] uint16 *replica_set_type,
+ [in,unique,string,charset(UTF16)] uint16 *connection_name,
+ [in,unique,string,charset(UTF16)] uint16 *partner_name,
+ [in,unique,string,charset(UTF16)] uint16 *partner_princ_name,
+ [in] frsrpc_PartnerAuthLevel partner_auth_level,
+ [in,value(16),range(16,16)] uint32 __ndr_guid_size,
+ [in,unique,subcontext(4),subcontext_size(16)]
+ GUID *connection_guid,
+ [in,unique,subcontext(4),subcontext_size(16)]
+ GUID *partner_guid,
+ [in,out,unique,subcontext(4),subcontext_size(16)]
+ GUID *parent_guid
+ );
+
+ /*****************/
+ /* Function 0x03 */
+ WERROR frsrpc_FrsNOP();
+
+ /*****************/
+ /* Function 0x04 */
+ [todo] void FRSRPC_BACKUP_COMPLETE();
+
+ /*****************/
+ /* Function 0x05 */
+ [todo] void FRSRPC_BACKUP_COMPLETE_5();
+
+ /*****************/
+ /* Function 0x06 */
+ [todo] void FRSRPC_BACKUP_COMPLETE_6();
+
+ /*****************/
+ /* Function 0x07 */
+ [todo] void FRSRPC_BACKUP_COMPLETE_7();
+
+ /*****************/
+ /* Function 0x08 */
+ [todo] void FRSRPC_BACKUP_COMPLETE_8();
+
+ /*****************/
+ /* Function 0x09 */
+ [todo] void FRSRPC_BACKUP_COMPLETE_9();
+
+ /*****************/
+ /* Function 0x0a */
+ [todo] void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
+}
diff --git a/epan/dissectors/pidl/frstrans/frstrans.cnf b/epan/dissectors/pidl/frstrans/frstrans.cnf
new file mode 100644
index 00000000..a1613776
--- /dev/null
+++ b/epan/dissectors/pidl/frstrans/frstrans.cnf
@@ -0,0 +1,15 @@
+# Conformance file for DFS-R / FRSTRANS
+
+TYPE hyper "offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_UINT64 BASE_DEC 0 NULL 8
+
+CODE START
+
+static int
+cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, guint32 param _U_, int hfindex)
+{
+ offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hfindex, NULL);
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/frstrans/frstrans.idl b/epan/dissectors/pidl/frstrans/frstrans.idl
new file mode 100644
index 00000000..761c3eec
--- /dev/null
+++ b/epan/dissectors/pidl/frstrans/frstrans.idl
@@ -0,0 +1,285 @@
+#include "idl_types.h"
+
+/*import "misc.idl";*/
+
+[
+ uuid("897e2e5f-93f3-4376-9c9c-fd2277495c27"),
+ version(1.0),
+ endpoint("ncacn_ip_tcp:", "ncalrpc:"),
+ helpstring("File Replication Service DFS-R"),
+ pointer_default(unique)
+]
+interface frstrans
+{
+ /*****************/
+ /* Function 0x00 */
+ WERROR frstrans_CheckConnectivity(
+ [in] GUID replica_set_guid,
+ [in] GUID connection_guid
+ );
+
+ /*****************/
+ /* Function 0x01 */
+ typedef [v1_enum,flag(NDR_PAHEX)] enum {
+ FRSTRANS_PROTOCOL_VERSION_W2K3R2 = 0x00050000,
+ FRSTRANS_PROTOCOL_VERSION_LONGHORN_SERVER = 0x00050002
+ } frstrans_ProtocolVersion;
+
+ typedef [bitmap32bit] bitmap {
+ FRSTRANS_TRANSPORT_SUPPORTS_RDC_SIMILARITY = 0x00000001
+ } frstrans_TransportFlags;
+
+ WERROR frstrans_EstablishConnection(
+ [in] GUID replica_set_guid,
+ [in] GUID connection_guid,
+ [in] frstrans_ProtocolVersion downstream_protocol_version,
+ [in] frstrans_TransportFlags downstream_flags,
+ [out,ref] frstrans_ProtocolVersion *upstream_protocol_version,
+ [out,ref] frstrans_TransportFlags *upstream_flags
+ );
+
+ /*****************/
+ /* Function 0x02 */
+ WERROR frstrans_EstablishSession(
+ [in] GUID connection_guid,
+ [in] GUID content_set_guid
+ );
+
+ /*****************/
+ /* Function 0x03 */
+ typedef enum {
+ FRSTRANS_UPDATE_REQUEST_ALL = 0x0000,
+ FRSTRANS_UPDATE_REQUEST_TOMBSTONES = 0x0001,
+ FRSTRANS_UPDATE_REQUEST_LIVE = 0x0002
+ } frstrans_UpdateRequestType;
+
+ typedef enum {
+ FRSTRANS_UPDATE_STATUS_DONE = 0x0002,
+ FRSTRANS_UPDATE_STATUS_MORE = 0x0003
+ } frstrans_UpdateStatus;
+
+ typedef struct {
+ GUID db_guid;
+ hyper low;
+ hyper high;
+ } frstrans_VersionVector;
+
+ typedef [flag(NDR_PAHEX)] struct {
+ boolean32 present;
+ boolean32 name_conflict;
+ uint32 attributes;
+ NTTIME fence;
+ NTTIME clock;
+ NTTIME create_time;
+ GUID content_set_guid;
+ uint8 sha1_hash[20];
+ uint8 rdc_similarity[16];
+ GUID uid_db_guid;
+ hyper uid_version;
+ GUID gsvn_db_guid;
+ hyper gsvn_version;
+ GUID parent_db_guid;
+ hyper parent_version;
+ [string,charset(UTF16)] uint16 name[261];
+ uint32 flags;
+ } frstrans_Update;
+
+ WERROR frstrans_RequestUpdates(
+ [in] GUID connection_guid,
+ [in] GUID content_set_guid,
+ [in,range(0,256)] uint32 credits_available,
+ [in,range(0,1)] boolean32 hash_requested,
+ [in,range(0,2)]
+ frstrans_UpdateRequestType update_request_type,
+ [in] uint32 version_vector_diff_count,
+ [in,size_is(version_vector_diff_count)]
+ frstrans_VersionVector *version_vector_diff,
+ [out,ref,size_is(credits_available),length_is(*update_count)]
+ frstrans_Update *frs_update,
+ [out,ref] uint32 *update_count,
+ [out,ref] frstrans_UpdateStatus *update_status,
+ [out,ref] GUID *gvsn_db_guid,
+ [out,ref] hyper *gvsn_version
+ );
+
+ /*****************/
+ /* Function 0x04 */
+ typedef enum {
+ FRSTRANS_VERSION_REQUEST_NORNAL_SYNC = 0x0000,
+ FRSTRANS_VERSION_REQUEST_SLOW_SYNC = 0x0001,
+ FRSTRANS_VERSION_REQUEST_SLAVE_SYNC = 0x0002
+ } frstrans_VersionRequestType;
+
+ typedef enum {
+ FRSTRANS_VERSION_CHANGE_NOTIFY = 0x0000,
+ FRSTRANS_VERSION_CHANGE_ALL = 0x0002
+ } frstrans_VersionChangeType;
+
+ WERROR frstrans_RequestVersionVector(
+ [in] uint32 sequence_number,
+ [in] GUID connection_guid,
+ [in] GUID content_set_guid,
+ [in,range(0,2)] frstrans_VersionRequestType request_type,
+ [in,range(0,2)] frstrans_VersionChangeType change_type,
+ [in] hyper vv_generation
+ );
+
+ /*****************/
+ /* Function 0x05 */
+ typedef struct {
+ GUID machine_guid;
+ uint32 year;
+ uint32 month;
+ uint32 day_of_week;
+ uint32 day;
+ uint32 hour;
+ uint32 minute;
+ uint32 second;
+ uint32 milli_seconds;
+ } frstrans_EpoqueVector;
+
+ typedef struct {
+ hyper vv_generation;
+ uint32 version_vector_count;
+ [size_is(version_vector_count)]
+ frstrans_VersionVector *version_vector;
+ uint32 epoque_vector_count;
+ [size_is(epoque_vector_count)]
+ frstrans_EpoqueVector *epoque_vector;
+ } frstrans_AsyncVersionVectorResponse;
+
+ typedef struct {
+ uint32 sequence_number;
+ WERROR status;
+ frstrans_AsyncVersionVectorResponse response;
+ } frstrans_AsyncResponseContext;
+
+ WERROR frstrans_AsyncPoll(
+ [in] GUID connection_guid,
+ [out,ref] frstrans_AsyncResponseContext *response
+ );
+
+ /*****************/
+ /* Function 0x06 */
+ void FRSTRANS_REQUEST_RECORDS();
+
+ /*****************/
+ /* Function 0x07 */
+ void FRSTRANS_UPDATE_CANCEL();
+
+ /*****************/
+ /* Function 0x08 */
+ void FRSTRANS_RAW_GET_FILE_DATA();
+
+ /*****************/
+ /* Function 0x09 */
+ void FRSTRANS_RDC_GET_SIGNATURES();
+
+ /*****************/
+ /* Function 0x0a */
+ void FRSTRANS_RDC_PUSH_SOURCE_NEEDS();
+
+ /*****************/
+ /* Function 0x0b */
+ void FRSTRANS_RDC_GET_FILE_DATA();
+
+ /*****************/
+ /* Function 0x0c */
+ void FRSTRANS_RDC_CLOSE();
+
+ /*****************/
+ /* Function 0x0d */
+ typedef enum {
+ FRSTRANS_STAGING_POLICY_SERVER_DEFAULTY = 0x0000,
+ FRSTRANS_STAGING_POLICY_STATGING_REQUIRED = 0x0001,
+ FRSTRANS_STAGING_POLICY_RESTATGING_REQUIRED = 0x0002
+ } frstrans_RequestedStagingPolicy;
+
+ typedef enum {
+ FRSTRANS_RDC_FILTER_GENERIC = 0x0000,
+ FRSTRANS_RDC_FILTER_MAX = 0x0001,
+ FRSTRANS_RDC_FILTER_POINT = 0x0002,
+ FRSTRANS_RDC_MAX_ALGORITHM = 0x0003
+ } frstrans_RdcChunckerAlgorithm;
+
+ typedef struct {
+ frstrans_RdcChunckerAlgorithm chunker_type;
+ uint8 chunker_parameters[64];
+ } frstrans_RdcParameterGeneric;
+
+ typedef struct {
+ [range(128,1024*16)] uint16 min_horizon_size;
+ [range(2,96)] uint16 max_window_size;
+ } frstrans_RdcParameterFilterMax;
+
+ typedef struct {
+ uint16 min_chunk_size;
+ uint16 max_chunk_size;
+ } frstrans_RdcParameterFilterPoint;
+
+ typedef [switch_type(frstrans_RdcChunckerAlgorithm)] union {
+ [case(FRSTRANS_RDC_FILTER_GENERIC)]
+ frstrans_RdcParameterGeneric filter_generic;
+ [case(FRSTRANS_RDC_FILTER_MAX)]
+ frstrans_RdcParameterFilterMax filter_max;
+ [case(FRSTRANS_RDC_FILTER_POINT)]
+ frstrans_RdcParameterFilterPoint filter_point;
+ } frstrans_RdcParameterUnion;
+
+ typedef struct {
+ frstrans_RdcChunckerAlgorithm rdc_chunker_algorithm;
+ [switch_is(rdc_chunker_algorithm)] frstrans_RdcParameterUnion u;
+ } frstrans_RdcParameters;
+
+ typedef enum {
+ FRSTRANS_RDC_VERSION = 0x0001
+ } frstrans_RdcVersion;
+
+ typedef enum {
+ FRSTRANS_RDC_VERSION_COMPATIBLE = 0x0001
+ } frstrans_RdcVersionCompatible;
+
+ typedef enum {
+ FRSTRANS_RDC_UNCOMPRESSED = 0x0000,
+ FRSTRANS_RDC_XPRESS = 0x0001
+ } frstrans_RdcCompressionAlgorithm;
+
+ typedef struct {
+ hyper on_disk_file_size;
+ hyper file_size_estimate;
+ frstrans_RdcVersion rdc_version;
+ frstrans_RdcVersionCompatible rdc_minimum_compatible_version;
+ [range(0,8)] uint8 rdc_signature_levels;
+ frstrans_RdcCompressionAlgorithm compression_algorithm;
+ [size_is(rdc_signature_levels)]
+ frstrans_RdcParameters rdc_filter_parameters[*];
+ } frstrans_RdcFileInfo;
+
+ WERROR frstrans_InitializeFileTransferAsync(
+ [in] GUID connection_guid,
+ [in,out,ref] frstrans_Update *frs_update,
+ [in,range(0,1)] boolean32 rdc_desired,
+ [in,out,ref] frstrans_RequestedStagingPolicy *staging_policy,
+ [out,ref] policy_handle *server_context,
+ [out,ref] frstrans_RdcFileInfo **rdc_file_info,
+ [out,ref,size_is(buffer_size),length_is(*size_read)]
+ uint8 *data_buffer,
+ [in,range(0,262144)] uint32 buffer_size,
+ [out,ref] uint32 *size_read,
+ [out,ref] boolean32 *is_end_of_file
+ );
+
+ /*****************/
+ /* Function 0x0e */
+ void FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE();
+
+ /* The following functions are new in Windows 2008 */
+
+ /*****************/
+ /* Function 0x0f */
+ void FRSTRANS_RAW_GET_FILE_DATA_ASYNC();
+
+ /*****************/
+ /* Function 0x10 */
+ void FRSTRANS_RDC_GET_FILE_DATA_ASYNC();
+}
diff --git a/epan/dissectors/pidl/fsrvp/fsrvp.cnf b/epan/dissectors/pidl/fsrvp/fsrvp.cnf
new file mode 100644
index 00000000..f77001d5
--- /dev/null
+++ b/epan/dissectors/pidl/fsrvp/fsrvp.cnf
@@ -0,0 +1,109 @@
+# Conformance file for FSRVP
+
+MANUAL fsrvp_dissect_SetContext_request
+MANUAL fsrvp_dissect_StartShadowCopySet_request
+MANUAL fsrvp_dissect_AddToShadowCopySet_request
+MANUAL fsrvp_dissect_CommitShadowCopySet_request
+MANUAL fsrvp_dissect_ExposeShadowCopySet_request
+MANUAL fsrvp_dissect_RecoveryCompleteShadowCopySet_request
+MANUAL fsrvp_dissect_AbortShadowCopySet_request
+MANUAL fsrvp_dissect_GetShareMapping_request
+MANUAL fsrvp_dissect_DeleteShareMapping_request
+MANUAL fsrvp_dissect_PrepareShadowCopySet_request
+
+CODE START
+
+static int
+fsrvp_dissect_SetContext_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="SetContext";
+ offset = fsrvp_dissect_element_SetContext_Context(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_StartShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="StartShadowCopySet";
+ offset = fsrvp_dissect_element_StartShadowCopySet_ClientShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_AddToShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="AddToShadowCopySet";
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ClientShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_AddToShadowCopySet_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_CommitShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="CommitShadowCopySet";
+ offset = fsrvp_dissect_element_CommitShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_CommitShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_ExposeShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="ExposeShadowCopySet";
+ offset = fsrvp_dissect_element_ExposeShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_ExposeShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_RecoveryCompleteShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="RecoveryCompleteShadowCopySet";
+ offset = fsrvp_dissect_element_RecoveryCompleteShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_AbortShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="AbortShadowCopySet";
+ offset = fsrvp_dissect_element_AbortShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_GetShareMapping_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="GetShareMapping";
+ offset = fsrvp_dissect_element_GetShareMapping_ShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ offset = fsrvp_dissect_element_GetShareMapping_Level(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_DeleteShareMapping_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="DeleteShareMapping";
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShadowCopyId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_DeleteShareMapping_ShareName(tvb, offset, pinfo, tree, di, drep);
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+ return offset;
+}
+
+static int
+fsrvp_dissect_PrepareShadowCopySet_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ di->dcerpc_procedure_name="PrepareShadowCopySet";
+ offset = fsrvp_dissect_element_PrepareShadowCopySet_ShadowCopySetId(tvb, offset, pinfo, tree, di, drep);
+ offset = fsrvp_dissect_element_PrepareShadowCopySet_TimeOutInMilliseconds(tvb, offset, pinfo, tree, di, drep);
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/fsrvp/fsrvp.idl b/epan/dissectors/pidl/fsrvp/fsrvp.idl
new file mode 100644
index 00000000..b76e822f
--- /dev/null
+++ b/epan/dissectors/pidl/fsrvp/fsrvp.idl
@@ -0,0 +1,105 @@
+#include "idl_types.h"
+
+/*
+ * File Server Remote VSS Protocol Definitions
+ */
+
+[ uuid("a8e0653c-2744-4389-a61d-7373df8b2292"),
+ version(1.0),
+ endpoint("ncacn_np:[\\pipe\\FssagentRpc]"),
+ helpstring("File Server Remote VSS Protocol"),
+ pointer_default(unique)
+] interface fsrvp
+{
+ const uint32 FSRVP_E_BAD_STATE = 0x80042301;
+ const uint32 FSRVP_E_SHADOW_COPY_SET_IN_PROGRESS = 0x80042316;
+ const uint32 FSRVP_E_NOT_SUPPORTED = 0x8004230C;
+ const uint32 FSRVP_E_WAIT_TIMEOUT = 0x00000102;
+ const uint32 FSRVP_E_WAIT_FAILED = 0xFFFFFFFF;
+ const uint32 FSRVP_E_OBJECT_ALREADY_EXISTS = 0x8004230D;
+ const uint32 FSRVP_E_OBJECT_NOT_FOUND = 0x80042308;
+ const uint32 FSRVP_E_UNSUPPORTED_CONTEXT = 0x8004231B;
+ const uint32 FSRVP_E_BAD_ID = 0x80042302; /* wire, not documented */
+ const uint32 FSRVP_E_SHADOWCOPYSET_ID_MISMATCH = 0x80042501;
+ typedef struct {
+ GUID ShadowCopySetId;
+ GUID ShadowCopyId;
+ [string,charset(UTF16)] uint16 *ShareNameUNC;
+ [string,charset(UTF16)] uint16 *ShadowCopyShareName;
+ NTTIME tstamp;
+ } fssagent_share_mapping_1;
+
+ typedef union {
+ [case(1)] fssagent_share_mapping_1 *ShareMapping1;
+ [default];
+ } fssagent_share_mapping;
+
+ const uint32 FSRVP_RPC_VERSION_1 = 0x000000001;
+ NTSTATUS fsrvp_GetSupportedVersion(
+ [out] uint32 *MinVersion,
+ [out] uint32 *MaxVersion);
+
+ const uint32 ATTR_PERSISTENT = 0x00000001;
+ const uint32 ATTR_NO_AUTO_RECOVERY = 0x00000002;
+ const uint32 ATTR_NO_AUTO_RELEASE = 0x00000008;
+ const uint32 ATTR_NO_WRITERS = 0x00000010;
+ const uint32 ATTR_FILE_SHARE = 0x04000000;
+ const uint32 ATTR_AUTO_RECOVERY = 0x00400000;
+
+ const uint32 FSRVP_CTX_BACKUP = 0x00000000;
+ const uint32 FSRVP_CTX_FILE_SHARE_BACKUP = 0x00000010;
+ const uint32 FSRVP_CTX_NAS_ROLLBACK = 0x00000019;
+ const uint32 FSRVP_CTX_APP_ROLLBACK = 0x00000009;
+ NTSTATUS fsrvp_SetContext(
+ [in] uint32 Context);
+
+ NTSTATUS fsrvp_StartShadowCopySet(
+ [in] GUID ClientShadowCopySetId,
+ [out] GUID *pShadowCopySetId);
+
+ NTSTATUS fsrvp_AddToShadowCopySet(
+ [in] GUID ClientShadowCopyId,
+ [in] GUID ShadowCopySetId,
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [out] GUID *pShadowCopyId);
+
+ NTSTATUS fsrvp_CommitShadowCopySet(
+ [in] GUID ShadowCopySetId,
+ [in] uint32 TimeOutInMilliseconds);
+
+ NTSTATUS fsrvp_ExposeShadowCopySet(
+ [in] GUID ShadowCopySetId,
+ [in] uint32 TimeOutInMilliseconds);
+
+ NTSTATUS fsrvp_RecoveryCompleteShadowCopySet(
+ [in] GUID ShadowCopySetId);
+
+ NTSTATUS fsrvp_AbortShadowCopySet(
+ [in] GUID ShadowCopySetId);
+
+ NTSTATUS fsrvp_IsPathSupported(
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [out] boolean32 *SupportedByThisProvider,
+ [out] [string,charset(UTF16)] uint16 **OwnerMachineName);
+
+ NTSTATUS fsrvp_IsPathShadowCopied(
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [out] boolean32 *ShadowCopyPresent,
+ [out] int32 *ShadowCopyCompatibility);
+
+ NTSTATUS fsrvp_GetShareMapping(
+ [in] GUID ShadowCopyId,
+ [in] GUID ShadowCopySetId,
+ [in] [string,charset(UTF16)] uint16 *ShareName,
+ [in] uint32 Level,
+ [out,switch_is(Level)] fssagent_share_mapping *ShareMapping);
+
+ NTSTATUS fsrvp_DeleteShareMapping(
+ [in] GUID ShadowCopySetId,
+ [in] GUID ShadowCopyId,
+ [in] [string,charset(UTF16)] uint16 *ShareName);
+
+ NTSTATUS fsrvp_PrepareShadowCopySet(
+ [in] GUID ShadowCopySetId,
+ [in] uint32 TimeOutInMilliseconds);
+}
diff --git a/epan/dissectors/pidl/idl_types.h b/epan/dissectors/pidl/idl_types.h
new file mode 100644
index 00000000..3c6c12cd
--- /dev/null
+++ b/epan/dissectors/pidl/idl_types.h
@@ -0,0 +1,72 @@
+#define STR_ASCII LIBNDR_FLAG_STR_ASCII
+#define STR_LEN4 LIBNDR_FLAG_STR_LEN4
+#define STR_SIZE4 LIBNDR_FLAG_STR_SIZE4
+#define STR_SIZE2 LIBNDR_FLAG_STR_SIZE2
+#define STR_NOTERM LIBNDR_FLAG_STR_NOTERM
+#define STR_NULLTERM LIBNDR_FLAG_STR_NULLTERM
+#define STR_BYTESIZE LIBNDR_FLAG_STR_BYTESIZE
+#define STR_CONFORMANT LIBNDR_FLAG_STR_CONFORMANT
+#define STR_CHARLEN LIBNDR_FLAG_STR_CHARLEN
+#define STR_UTF8 LIBNDR_FLAG_STR_UTF8
+
+/*
+ a null terminated UCS2 string
+*/
+#define nstring [flag(STR_NULLTERM)] string
+
+/*
+ an ascii string prefixed with [offset] [length], both 32 bits
+ null terminated
+*/
+#define ascstr2 [flag(STR_ASCII|STR_LEN4)] string
+
+/*
+ an ascii string prefixed with [size], 32 bits
+*/
+#define asclstr [flag(STR_ASCII|STR_SIZE4)] string
+
+/*
+ an ascii string prefixed with [size], 16 bits
+ null terminated
+*/
+#define ascstr3 [flag(STR_ASCII|STR_SIZE2)] string
+
+/*
+ an ascii string prefixed with [size] [offset] [length], all 32 bits
+ not null terminated
+*/
+#define ascstr_noterm [flag(STR_NOTERM|STR_ASCII|STR_SIZE4|STR_LEN4)] string
+
+/*
+ a null terminated ascii string
+*/
+#define astring [flag(STR_ASCII|STR_NULLTERM)] string
+
+/*
+ a null terminated UTF8 string
+*/
+#define utf8string [flag(STR_UTF8|STR_NULLTERM)] string
+
+/*
+ a null terminated UCS2 string
+*/
+#define nstring_array [flag(STR_NULLTERM)] string_array
+
+#define NDR_NOALIGN LIBNDR_FLAG_NOALIGN
+#define NDR_REMAINING LIBNDR_FLAG_REMAINING
+#define NDR_ALIGN2 LIBNDR_FLAG_ALIGN2
+#define NDR_ALIGN4 LIBNDR_FLAG_ALIGN4
+#define NDR_ALIGN8 LIBNDR_FLAG_ALIGN8
+
+/* this flag is used to force a section of IDL as little endian. It is
+ needed for the epmapper IDL, which is defined as always being LE */
+#define NDR_LITTLE_ENDIAN LIBNDR_FLAG_LITTLE_ENDIAN
+#define NDR_BIG_ENDIAN LIBNDR_FLAG_BIGENDIAN
+
+/*
+ this is used to control formatting of uint8 arrays
+*/
+#define NDR_PAHEX LIBNDR_PRINT_ARRAY_HEX
+
+#define NDR_RELATIVE_REVERSE LIBNDR_FLAG_RELATIVE_REVERSE
+#define NDR_NO_RELATIVE_REVERSE LIBNDR_FLAG_NO_RELATIVE_REVERSE
diff --git a/epan/dissectors/pidl/initshutdown/initshutdown.cnf b/epan/dissectors/pidl/initshutdown/initshutdown.cnf
new file mode 100644
index 00000000..25691da2
--- /dev/null
+++ b/epan/dissectors/pidl/initshutdown/initshutdown.cnf
@@ -0,0 +1 @@
+TYPE lsa_StringLarge "offset=lsarpc_dissect_struct_lsa_StringLarge(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_NONE BASE_NONE 0 NULL NULL
diff --git a/epan/dissectors/pidl/initshutdown/initshutdown.idl b/epan/dissectors/pidl/initshutdown/initshutdown.idl
new file mode 100644
index 00000000..ffe068d2
--- /dev/null
+++ b/epan/dissectors/pidl/initshutdown/initshutdown.idl
@@ -0,0 +1,91 @@
+#include "idl_types.h"
+
+/*
+ initshutdown interface definition
+*/
+
+import "lsa/lsa.idl";
+
+[
+ uuid("894de0c0-0d55-11d3-a322-00c04fa321a1"),
+ version(1.0),
+ endpoint("ncacn_np:[\\pipe\\InitShutdown]"),
+ pointer_default(unique),
+ helpstring("Init shutdown service")
+] interface initshutdown
+{
+ typedef [v1_enum] enum {
+ SHTDN_REASON_MAJOR_OTHER = 0x00000000,
+ SHTDN_REASON_MAJOR_HARDWARE = 0x00010000,
+ SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000,
+ SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000,
+ SHTDN_REASON_MAJOR_APPLICATION = 0x00040000,
+ SHTDN_REASON_MAJOR_SYSTEM = 0x00050000,
+ SHTDN_REASON_MAJOR_POWER = 0x00060000,
+ SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000
+ } initshutdown_ReasonMajor;
+
+ typedef [v1_enum] enum {
+ SHTDN_REASON_MINOR_OTHER = 0x00000000,
+ SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001,
+ SHTDN_REASON_MINOR_INSTALLATION = 0x00000002,
+ SHTDN_REASON_MINOR_UPGRADE = 0x00000003,
+ SHTDN_REASON_MINOR_RECONFIG = 0x00000004,
+ SHTDN_REASON_MINOR_HUNG = 0x00000005,
+ SHTDN_REASON_MINOR_UNSTABLE = 0x00000006,
+ SHTDN_REASON_MINOR_DISK = 0x00000007,
+ SHTDN_REASON_MINOR_PROCESSOR = 0x00000008,
+ SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009,
+ SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a,
+ SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b,
+ SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c,
+ SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d,
+ SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e,
+ SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000f,
+ SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010,
+ SHTDN_REASON_MINOR_HOTFIX = 0x00000011,
+ SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012,
+ SHTDN_REASON_MINOR_SECURITY = 0x00000013,
+ SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014,
+ SHTDN_REASON_MINOR_WMI = 0x00000015,
+ SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL= 0x00000016,
+ SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017,
+ SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL= 0x00000018,
+ SHTDN_REASON_MINOR_MMC = 0x00000019,
+ SHTDN_REASON_MINOR_TERMSRV = 0x00000020
+ } initshutdown_ReasonMinor;
+
+ typedef [bitmap32bit] bitmap {
+ SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000,
+ SHTDN_REASON_FLAG_PLANNED = 0x80000000
+ } initshutdown_ReasonFlags;
+
+ WERROR initshutdown_Init(
+ [in,unique] uint16 *hostname,
+ /*
+ * Note: lsa_String and winreg_String both result
+ * in WERR_INVALID_PARAM
+ */
+ [in,unique] lsa_StringLarge *message,
+ [in] uint32 timeout,
+ [in] uint8 force_apps,
+ [in] uint8 do_reboot
+ );
+
+ WERROR initshutdown_Abort(
+ [in,unique] uint16 *server
+ );
+
+ WERROR initshutdown_InitEx(
+ [in,unique] uint16 *hostname,
+ /*
+ * Note: lsa_String and winreg_String both result
+ * in WERR_INVALID_PARAM
+ */
+ [in,unique] lsa_StringLarge *message,
+ [in] uint32 timeout,
+ [in] uint8 force_apps,
+ [in] uint8 do_reboot,
+ [in] uint32 reason
+ );
+}
diff --git a/epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.cnf b/epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.cnf
new file mode 100644
index 00000000..1fd19e09
--- /dev/null
+++ b/epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.cnf
@@ -0,0 +1,170 @@
+# Conformance file for iwbemlevel1login
+
+MANUAL IWbemLevel1Login_dissect_element_EstablishPosition_orpcthis
+MANUAL IWbemLevel1Login_dissect_element_EstablishPosition_orpcthat_
+MANUAL IWbemLevel1Login_dissect_element_RequestChallenge_orpcthis
+MANUAL IWbemLevel1Login_dissect_element_RequestChallenge_orpcthat_
+MANUAL IWbemLevel1Login_dissect_element_WBEMLogin_orpcthis
+MANUAL IWbemLevel1Login_dissect_element_WBEMLogin_orpcthat_
+MANUAL IWbemLevel1Login_dissect_element_NTLMLogin_orpcthis
+MANUAL IWbemLevel1Login_dissect_element_NTLMLogin_orpcthat_
+MANUAL IWbemLevel1Login_dissect_element_IWbemServices_services
+
+NOEMIT IWbemLevel1Login_dissect_element_IWbemServices_services_
+
+ETT_FIELD ett_IWbemLevel1Login_EstablishPosition_orpcthis
+ETT_FIELD ett_IWbemLevel1Login_EstablishPosition_orpcthat
+ETT_FIELD ett_IWbemLevel1Login_RequestChallenge_orpcthis
+ETT_FIELD ett_IWbemLevel1Login_RequestChallenge_orpcthat
+ETT_FIELD ett_IWbemLevel1Login_WBEMLogin_orpcthis
+ETT_FIELD ett_IWbemLevel1Login_WBEMLogin_orpcthat
+ETT_FIELD ett_IWbemLevel1Login_NTLMLogin_orpcthis
+ETT_FIELD ett_IWbemLevel1Login_NTLMLogin_orpcthat
+
+CODE START
+
+ #include "packet-dcom.h"
+
+/* EstablishPosition */
+static int
+IWbemLevel1Login_dissect_element_EstablishPosition_orpcthis(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_EstablishPosition_orpcthis, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_EstablishPosition_orpcthis);
+
+ offset = dissect_dcom_this(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+static int
+IWbemLevel1Login_dissect_element_EstablishPosition_orpcthat_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_EstablishPosition_orpcthat, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_EstablishPosition_orpcthat);
+
+ offset = dissect_dcom_that(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+/* RequestChallenge */
+static int
+IWbemLevel1Login_dissect_element_RequestChallenge_orpcthis(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_RequestChallenge_orpcthis, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_RequestChallenge_orpcthis);
+
+ offset = dissect_dcom_this(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+static int
+IWbemLevel1Login_dissect_element_RequestChallenge_orpcthat_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_RequestChallenge_orpcthat, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_RequestChallenge_orpcthat);
+
+ offset = dissect_dcom_that(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+/* WBEMLogin */
+static int
+IWbemLevel1Login_dissect_element_WBEMLogin_orpcthis(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_WBEMLogin_orpcthis, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_WBEMLogin_orpcthis);
+
+ offset = dissect_dcom_this(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+static int
+IWbemLevel1Login_dissect_element_WBEMLogin_orpcthat_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_WBEMLogin_orpcthat, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_WBEMLogin_orpcthat);
+
+ offset = dissect_dcom_that(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+/* NTLMLogin */
+static int
+IWbemLevel1Login_dissect_element_NTLMLogin_orpcthis(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_NTLMLogin_orpcthis, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_NTLMLogin_orpcthis);
+
+ offset = dissect_dcom_this(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+static int
+IWbemLevel1Login_dissect_element_NTLMLogin_orpcthat_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_NTLMLogin_orpcthat, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_NTLMLogin_orpcthat);
+
+ offset = dissect_dcom_that(tvb, offset, pinfo, sub_tree, di, drep);
+
+ return offset;
+}
+
+static int
+IWbemLevel1Login_dissect_element_IWbemServices_services_(tvbuff_t *tvb, int offset, int length _U_, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep _U_)
+;
+
+static int
+IWbemLevel1Login_dissect_element_IWbemServices_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_ucarray_block(tvb, offset, pinfo, tree, di, drep, &IWbemLevel1Login_dissect_element_IWbemServices_services_);
+
+ return offset;
+}
+
+static int
+IWbemLevel1Login_dissect_element_IWbemServices_services_(tvbuff_t *tvb, int offset, int length _U_, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep _U_)
+{
+ proto_item *sub_item;
+ proto_tree *sub_tree;
+
+ sub_item = proto_tree_add_item(tree, hf_IWbemLevel1Login_WBEMLogin_ppNamespace, tvb, offset, 0, ENC_NA);
+ sub_tree = proto_item_add_subtree(sub_item, ett_IWbemLevel1Login_IWbemServices);
+
+ offset = dissect_dcom_OBJREF(tvb, offset, pinfo, sub_tree, di, drep, hf_IWbemLevel1Login_WBEMLogin_ppNamespace, NULL);
+
+ return offset;
+}
+
+CODE END \ No newline at end of file
diff --git a/epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.idl b/epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.idl
new file mode 100644
index 00000000..7b0b00cd
--- /dev/null
+++ b/epan/dissectors/pidl/iwbemlevel1login/iwbemlevel1login.idl
@@ -0,0 +1,84 @@
+#include "idl_types.h"
+
+/*
+ IWbemLevel1Login interface definitions
+*/
+[ uuid("f309ad18-d86a-11d0-a075-00c04fb68820"),
+ restricted,
+ pointer_default(unique)
+]
+interface IWbemLevel1Login
+{
+ /*****************/
+ /* Function 0x00 */
+ [todo] WERROR iwbemlevel1login_opnum0(
+ );
+
+ /*****************/
+ /* Function 0x01 */
+ [todo] WERROR iwbemlevel1login_opnum1(
+ );
+
+ /*****************/
+ /* Function 0x02 */
+ [todo] WERROR iwbemlevel1login_opnum2(
+ );
+
+ typedef [public] struct
+ {
+ } ORPCTHIS;
+
+ typedef [public] struct
+ {
+ } ORPCTHAT;
+
+ /*****************/
+ /* Function 0x03 */
+ WERROR EstablishPosition(
+ [in] ORPCTHIS orpcthis,
+ [in, unique, string, charset(UTF16)] uint16* reserved1,
+ [in] uint32 reserved2,
+ [out] ORPCTHAT* orpcthat,
+ [out] uint32* LocaleVersion
+ );
+
+ /*****************/
+ /* Function 0x04 */
+ WERROR RequestChallenge(
+ [in] ORPCTHIS orpcthis,
+ [in, unique, string, charset(UTF16)] uint16* reserved1,
+ [in, unique, string, charset(UTF16)] uint16* reserved2,
+ [out] ORPCTHAT* orpcthat,
+ [out, size_is(16), length_is(16)] uint8* reserved3
+ );
+
+ /*****************/
+ /* Function 0x05 */
+ WERROR WBEMLogin(
+ [in] ORPCTHIS orpcthis,
+ [in, unique, string, charset(UTF16)] uint16* reserved1,
+ [in, size_is(16), length_is(16), unique] uint8* reserved2,
+ [in] long reserved3,
+ [in] uint8* reserved4,
+ [out] ORPCTHAT* orpcthat,
+ [out, ref] IWbemServices **ppNamespace
+ );
+
+ typedef [flag(NDR_NOALIGN)] struct
+ {
+ uint32 count;
+ [size_is(count)] uint8 services[];
+ } IWbemServices;
+
+ /*****************/
+ /* Function 0x06 */
+ WERROR NTLMLogin(
+ [in] ORPCTHIS orpcthis,
+ [in, unique, string, charset(UTF16)] uint16* wszNetworkResource,
+ [in, unique, string, charset(UTF16)] uint16* wszPreferredLocale,
+ [in] long lFlags,
+ [in, unique] uint8* pCtx,
+ [out] ORPCTHAT* orpcthat,
+ [out, ref] IWbemServices **ppNamespace
+ );
+}; \ No newline at end of file
diff --git a/epan/dissectors/pidl/lsa/lsa.cnf b/epan/dissectors/pidl/lsa/lsa.cnf
new file mode 100644
index 00000000..4453f7fe
--- /dev/null
+++ b/epan/dissectors/pidl/lsa/lsa.cnf
@@ -0,0 +1,407 @@
+#
+# policyhandle tracking
+# This block is to specify where a policyhandle is opened and where it is
+# closed so that policyhandles when dissected contain nice info such as
+# [opened in xxx] [closed in yyy]
+#
+# Policyhandles are opened in these functions
+PARAM_VALUE lsarpc_dissect_element_lsa_OpenPolicy_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_POLICY
+PARAM_VALUE lsarpc_dissect_element_lsa_OpenPolicy2_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_POLICY
+PARAM_VALUE lsarpc_dissect_element_lsa_CreateAccount_acct_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_ACCOUNT
+PARAM_VALUE lsarpc_dissect_element_lsa_OpenAccount_acct_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_ACCOUNT
+PARAM_VALUE lsarpc_dissect_element_lsa_CreateTrustedDomain_trustdom_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_DOMAIN
+PARAM_VALUE lsarpc_dissect_element_lsa_OpenTrustedDomain_trustdom_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_DOMAIN
+PARAM_VALUE lsarpc_dissect_element_lsa_OpenTrustedDomainByName_trustdom_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_DOMAIN
+PARAM_VALUE lsarpc_dissect_element_lsa_CreateSecret_sec_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_SECRET
+PARAM_VALUE lsarpc_dissect_element_lsa_OpenSecret_sec_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_LSA_SECRET
+# Policyhandles are closed in these functions
+PARAM_VALUE lsarpc_dissect_element_lsa_Close_handle_ PIDL_POLHND_CLOSE
+PARAM_VALUE lsarpc_dissect_element_lsa_Delete_handle_ PIDL_POLHND_CLOSE
+PARAM_VALUE lsarpc_dissect_element_lsa_CloseTrustedDomainEx_handle_ PIDL_POLHND_CLOSE
+
+
+
+TYPE hyper "offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_UINT64 BASE_DEC 0 NULL 8
+
+TYPE sec_desc_buf "offset=cnf_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL 4
+HF_FIELD hf_lsarpc_sec_desc_buf_len "Sec Desc Buf Len" "lsarpc.sec_desc_buf_len" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+
+
+MANUAL lsarpc_dissect_bitmap_lsa_PolicyAccessMask
+MANUAL lsarpc_dissect_bitmap_lsa_AccountAccessMask
+MANUAL lsarpc_dissect_bitmap_lsa_SecretAccessMask
+MANUAL lsarpc_dissect_bitmap_lsa_DomainAccessMask
+HF_FIELD hf_lsarpc_policy_access_mask "Access Mask" "lsarpc.policy.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_FIELD hf_lsarpc_account_access_mask "Access Mask" "lsarpc.policy.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_FIELD hf_lsarpc_secret_access_mask "Access Mask" "lsarpc.policy.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_FIELD hf_lsarpc_domain_access_mask "Access Mask" "lsarpc.policy.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+
+HF_FIELD hf_lsarpc_String_name "String" "lsarpc.lsa.string" FT_STRING BASE_NONE NULL 0 "" "" ""
+
+MANUAL lsarpc_dissect_element_lsa_LookupNames_names
+MANUAL lsarpc_dissect_element_lsa_LookupNames2_names
+MANUAL lsarpc_dissect_element_lsa_LookupNames3_names
+MANUAL lsarpc_dissect_element_lsa_LookupNames4_names
+MANUAL lsarpc_dissect_element_lsa_String_string_
+MANUAL lsarpc_dissect_element_lsa_StringLarge_string_
+
+NOEMIT lsarpc_dissect_element_lsa_String_string__
+NOEMIT lsarpc_dissect_element_lsa_StringLarge_string__
+NOEMIT lsarpc_dissect_element_lsa_DomainInfoEfs_efs_blob__
+NOEMIT lsarpc_dissect_element_lsa_LookupNames_names_
+NOEMIT lsarpc_dissect_element_lsa_LookupNames2_names_
+NOEMIT lsarpc_dissect_element_lsa_LookupNames4_names_
+
+ETT_FIELD ett_lsarpc_names
+HF_FIELD hf_lsarpc_names "Names" "lsarpc.lookup.names" FT_NONE BASE_NONE NULL 0 "" "" ""
+
+
+MANUAL lsarpc_dissect_element_lsa_DomainInfoEfs_efs_blob_
+HF_FIELD hf_lsarpc_efs_blob_len "EFS blob size" "lsarpc.efs.blob_size" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+
+CODE START
+
+
+static void
+lsarpc_policy_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_NOTIFICATION,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_LOOKUP_NAMES,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_SERVER_ADMIN,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_AUDIT_LOG_ADMIN,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_SET_AUDIT_REQUIREMENTS,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_SET_DEFAULT_QUOTA_LIMITS,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_CREATE_PRIVILEGE,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_CREATE_SECRET,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_CREATE_ACCOUNT,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_TRUST_ADMIN,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_GET_PRIVATE_INFORMATION,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_VIEW_AUDIT_INFORMATION,
+ &hf_lsarpc_lsa_PolicyAccessMask_LSA_POLICY_VIEW_LOCAL_INFORMATION,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+static void
+lsarpc_account_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_lsarpc_lsa_AccountAccessMask_LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS,
+ &hf_lsarpc_lsa_AccountAccessMask_LSA_ACCOUNT_ADJUST_QUOTAS,
+ &hf_lsarpc_lsa_AccountAccessMask_LSA_ACCOUNT_ADJUST_PRIVILEGES,
+ &hf_lsarpc_lsa_AccountAccessMask_LSA_ACCOUNT_VIEW,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+static void
+lsarpc_secret_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_lsarpc_lsa_SecretAccessMask_LSA_SECRET_QUERY_VALUE,
+ &hf_lsarpc_lsa_SecretAccessMask_LSA_SECRET_SET_VALUE,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+static void
+lsarpc_domain_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_lsarpc_lsa_DomainAccessMask_LSA_DOMAIN_QUERY_AUTH,
+ &hf_lsarpc_lsa_DomainAccessMask_LSA_DOMAIN_SET_AUTH,
+ &hf_lsarpc_lsa_DomainAccessMask_LSA_DOMAIN_SET_POSIX,
+ &hf_lsarpc_lsa_DomainAccessMask_LSA_DOMAIN_QUERY_POSIX,
+ &hf_lsarpc_lsa_DomainAccessMask_LSA_DOMAIN_SET_CONTROLLERS,
+ &hf_lsarpc_lsa_DomainAccessMask_LSA_DOMAIN_QUERY_CONTROLLERS,
+ &hf_lsarpc_lsa_DomainAccessMask_LSA_DOMAIN_QUERY_DOMAIN_NAME,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+
+struct access_mask_info lsarpc_policy_access_mask_info = {
+ "LSA Policy", /* Name of specific rights */
+ lsarpc_policy_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+struct access_mask_info lsarpc_account_access_mask_info = {
+ "LSA Account", /* Name of specific rights */
+ lsarpc_account_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+struct access_mask_info lsarpc_secret_access_mask_info = {
+ "LSA Secret", /* Name of specific rights */
+ lsarpc_secret_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+struct access_mask_info lsarpc_domain_access_mask_info = {
+ "LSA Domain", /* Name of specific rights */
+ lsarpc_domain_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+int
+lsarpc_dissect_bitmap_lsa_PolicyAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_lsarpc_policy_access_mask,
+ &lsarpc_policy_access_mask_info, NULL);
+ return offset;
+}
+
+int
+lsarpc_dissect_bitmap_lsa_AccountAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_lsarpc_account_access_mask,
+ &lsarpc_account_access_mask_info, NULL);
+ return offset;
+}
+
+int
+lsarpc_dissect_bitmap_lsa_SecretAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_lsarpc_secret_access_mask,
+ &lsarpc_secret_access_mask_info, NULL);
+ return offset;
+}
+
+int
+lsarpc_dissect_bitmap_lsa_DomainAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_lsarpc_domain_access_mask,
+ &lsarpc_domain_access_mask_info, NULL);
+ return offset;
+}
+
+static int
+cnf_dissect_sec_desc_buf_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ guint32 len;
+ e_ctx_hnd *polhnd = NULL;
+ dcerpc_call_value *dcv = NULL;
+ guint32 type=0;
+ struct access_mask_info *ami=NULL;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
+ hf_lsarpc_sec_desc_buf_len, &len);
+
+ dcv = (dcerpc_call_value *)di->call_data;
+ if(dcv){
+ polhnd = dcv->pol;
+ }
+ if(polhnd){
+ dcerpc_fetch_polhnd_data(polhnd, NULL, &type, NULL, NULL,
+ pinfo->num);
+ }
+ switch(type){
+ case PIDL_POLHND_TYPE_LSA_POLICY:
+ ami=&lsarpc_policy_access_mask_info;
+ break;
+ case PIDL_POLHND_TYPE_LSA_ACCOUNT:
+ ami=&lsarpc_account_access_mask_info;
+ break;
+ case PIDL_POLHND_TYPE_LSA_SECRET:
+ ami=&lsarpc_secret_access_mask_info;
+ break;
+ case PIDL_POLHND_TYPE_LSA_DOMAIN:
+ ami=&lsarpc_domain_access_mask_info;
+ break;
+ }
+
+ dissect_nt_sec_desc(tvb, offset, pinfo, tree, drep, TRUE, len, ami);
+
+ offset += len;
+
+ return offset;
+}
+
+static int
+cnf_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ guint32 len;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
+ hf_lsarpc_sec_desc_buf_len, &len);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep,
+ cnf_dissect_sec_desc_buf_, NDR_POINTER_UNIQUE,
+ "LSA SECURITY DESCRIPTOR data:", -1);
+
+ return offset;
+}
+
+
+int
+lsarpc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep){
+ return cnf_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);
+}
+
+static int
+lsarpc_dissect_struct_security_descriptor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_, int unused1 _U_, int unused2 _U_){
+ return cnf_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);
+}
+
+
+int
+lsarpc_dissect_struct_dom_sid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_, int unused1 _U_, int unused2 _U_) {
+ /* sid */
+ return dissect_ndr_nt_SID(tvb, offset, pinfo, tree, di, drep);
+
+}
+
+static int
+cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, guint32 param _U_, int hfindex)
+{
+ offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hfindex, NULL);
+
+ return offset;
+}
+
+# PIDL cant handle top level arrays so we must explicitely go through a
+# ref pointer here
+static int
+lsarpc_dissect_element_lsa_LookupNames3_names_X(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_lsarpc_names, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_lsarpc_names);
+ }
+
+ offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_LookupNames3_names_);
+
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+static int
+lsarpc_dissect_element_lsa_LookupNames_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_LookupNames3_names_X, NDR_POINTER_REF, "Pointer to Names", hf_lsarpc_names);
+
+ return offset;
+}
+static int
+lsarpc_dissect_element_lsa_LookupNames2_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_LookupNames3_names_X, NDR_POINTER_REF, "Pointer to Names", hf_lsarpc_names);
+
+ return offset;
+}
+static int
+lsarpc_dissect_element_lsa_LookupNames3_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_LookupNames3_names_X, NDR_POINTER_REF, "Pointer to Names", hf_lsarpc_names);
+
+ return offset;
+}
+static int
+lsarpc_dissect_element_lsa_LookupNames4_names(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, lsarpc_dissect_element_lsa_LookupNames3_names_X, NDR_POINTER_REF, "Pointer to Names", hf_lsarpc_names);
+
+ return offset;
+}
+
+
+
+static int
+lsarpc_dissect_element_lsa_String_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_String_name, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+static int
+lsarpc_dissect_element_lsa_StringLarge_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ char *data;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint16), hf_lsarpc_String_name, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ return offset;
+}
+
+
+
+static int
+lsarpc_dissect_element_lsa_DomainInfoEfs_efs_blob_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di, guint8 *drep _U_)
+{
+ tvbuff_t *next_tvb;
+ gint len, reported_len;
+ dissector_handle_t efsblob_handle;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
+ hf_lsarpc_efs_blob_len, &reported_len);
+
+ len = reported_len;
+ if (len > tvb_captured_length_remaining(tvb, offset)) {
+ len = tvb_captured_length_remaining(tvb, offset);
+ }
+
+ next_tvb = tvb_new_subset_length_caplen(tvb, offset, len, reported_len);
+
+ efsblob_handle = find_dissector("efsblob");
+ if (efsblob_handle) {
+ call_dissector(efsblob_handle, next_tvb, pinfo, tree);
+ }
+
+ offset += reported_len;
+
+ return offset;
+}
+
+CODE END
+
+HEADER START
+
+extern int
+lsarpc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep);
+extern int
+lsarpc_dissect_struct_dom_sid2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int unused1, int unused2);
+
+HEADER END
diff --git a/epan/dissectors/pidl/lsa/lsa.idl b/epan/dissectors/pidl/lsa/lsa.idl
new file mode 100644
index 00000000..f7535d6a
--- /dev/null
+++ b/epan/dissectors/pidl/lsa/lsa.idl
@@ -0,0 +1,1293 @@
+#include "idl_types.h"
+
+/*
+ lsa interface definition
+*/
+
+/*import "misc.idl", "security.idl";*/
+
+[ uuid("12345778-1234-abcd-ef00-0123456789ab"),
+ version(0.0),
+ endpoint("ncacn_np:[\\pipe\\lsarpc]","ncacn_np:[\\pipe\\netlogon]","ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
+ pointer_default(unique),
+ helpstring("Local Security Authority")
+] interface lsarpc
+{
+ typedef [bitmap32bit] bitmap {
+ LSA_POLICY_NOTIFICATION = 0x00001000,
+ LSA_POLICY_LOOKUP_NAMES = 0x00000800,
+ LSA_POLICY_SERVER_ADMIN = 0x00000400,
+ LSA_POLICY_AUDIT_LOG_ADMIN = 0x00000200,
+ LSA_POLICY_SET_AUDIT_REQUIREMENTS = 0x00000100,
+ LSA_POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x00000080,
+ LSA_POLICY_CREATE_PRIVILEGE = 0x00000040,
+ LSA_POLICY_CREATE_SECRET = 0x00000020,
+ LSA_POLICY_CREATE_ACCOUNT = 0x00000010,
+ LSA_POLICY_TRUST_ADMIN = 0x00000008,
+ LSA_POLICY_GET_PRIVATE_INFORMATION = 0x00000004,
+ LSA_POLICY_VIEW_AUDIT_INFORMATION = 0x00000002,
+ LSA_POLICY_VIEW_LOCAL_INFORMATION = 0x00000001
+ } lsa_PolicyAccessMask;
+
+ typedef [bitmap32bit] bitmap {
+ LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS = 0x00000008,
+ LSA_ACCOUNT_ADJUST_QUOTAS = 0x00000004,
+ LSA_ACCOUNT_ADJUST_PRIVILEGES = 0x00000002,
+ LSA_ACCOUNT_VIEW = 0x00000001
+ } lsa_AccountAccessMask;
+
+ typedef [bitmap32bit] bitmap {
+ LSA_DOMAIN_QUERY_AUTH = 0x00000040,
+ LSA_DOMAIN_SET_AUTH = 0x00000020,
+ LSA_DOMAIN_SET_POSIX = 0x00000010,
+ LSA_DOMAIN_QUERY_POSIX = 0x00000008,
+ LSA_DOMAIN_SET_CONTROLLERS = 0x00000004,
+ LSA_DOMAIN_QUERY_CONTROLLERS = 0x00000002,
+ LSA_DOMAIN_QUERY_DOMAIN_NAME = 0x00000001
+ } lsa_DomainAccessMask;
+
+ typedef [bitmap32bit] bitmap {
+ LSA_SECRET_QUERY_VALUE = 0x00000002,
+ LSA_SECRET_SET_VALUE = 0x00000001
+ } lsa_SecretAccessMask;
+
+ typedef bitmap security_secinfo security_secinfo;
+
+ typedef [public] struct {
+ [value(2*strlen_m(string))] uint16 length;
+ [value(2*strlen_m(string))] uint16 size;
+ [charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
+ } lsa_String;
+
+ typedef [public] struct {
+ [value(2*strlen_m(string))] uint16 length;
+ [value(2*strlen_m_term(string))] uint16 size;
+ [charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
+ } lsa_StringLarge;
+
+ typedef [public] struct {
+ uint32 count;
+ [size_is(count)] lsa_String *names;
+ } lsa_Strings;
+
+ typedef [public] struct {
+ [value(strlen_m(string))] uint16 length;
+ [value(strlen_m(string))] uint16 size;
+ [charset(DOS),size_is(size),length_is(length)] uint8 *string;
+ } lsa_AsciiString;
+
+ typedef [public] struct {
+ [value(strlen_m(string))] uint16 length;
+ [value(strlen_m_term(string))] uint16 size;
+ [charset(DOS),size_is(size),length_is(length)] uint8 *string;
+ } lsa_AsciiStringLarge;
+
+ /******************/
+ /* Function: 0x00 */
+ NTSTATUS lsa_Close (
+ [in,out] policy_handle *handle
+ );
+
+
+ /******************/
+ /* Function: 0x01 */
+ [public] NTSTATUS lsa_Delete (
+ [in] policy_handle *handle
+ );
+
+
+ /******************/
+ /* Function: 0x02 */
+ typedef struct {
+ uint32 low;
+ uint32 high;
+ } lsa_LUID;
+
+ typedef struct {
+ lsa_StringLarge name;
+ lsa_LUID luid;
+ } lsa_PrivEntry;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] lsa_PrivEntry *privs;
+ } lsa_PrivArray;
+
+ [public] NTSTATUS lsa_EnumPrivs (
+ [in] policy_handle *handle,
+ [in,out] uint32 *resume_handle,
+ [in] uint32 max_count,
+ [out] lsa_PrivArray *privs
+ );
+
+ /******************/
+ /* Function: 0x03 */
+
+ NTSTATUS lsa_QuerySecurity (
+ [in] policy_handle *handle,
+ [in] security_secinfo sec_info,
+ [out] sec_desc_buf **sdbuf
+ );
+
+
+ /******************/
+ /* Function: 0x04 */
+ [todo] NTSTATUS lsa_SetSecObj ();
+
+
+ /******************/
+ /* Function: 0x05 */
+ [todo] NTSTATUS lsa_ChangePassword ();
+
+
+ /******************/
+ /* Function: 0x06 */
+
+ typedef enum {
+ LSA_SECURITY_ANONYMOUS = 0,
+ LSA_SECURITY_IDENTIFICATION = 1,
+ LSA_SECURITY_IMPERSONATION = 2,
+ LSA_SECURITY_DELEGATION = 3
+ } lsa_SecurityImpersonationLevel;
+
+ typedef struct {
+ uint32 len; /* ignored */
+ lsa_SecurityImpersonationLevel impersonation_level;
+ uint8 context_mode;
+ uint8 effective_only;
+ } lsa_QosInfo;
+
+ typedef struct {
+ uint32 len; /* ignored */
+ uint8 *root_dir;
+ [string,charset(UTF16)] uint16 *object_name;
+ uint32 attributes;
+ security_descriptor *sec_desc;
+ lsa_QosInfo *sec_qos;
+ } lsa_ObjectAttribute;
+
+ /* notice the screwup with the system_name - thats why MS created
+ OpenPolicy2 */
+ [public] NTSTATUS lsa_OpenPolicy (
+ [in,unique] uint16 *system_name,
+ [in] lsa_ObjectAttribute *attr,
+ [in] lsa_PolicyAccessMask access_mask,
+ [out] policy_handle *handle
+ );
+
+
+
+ /******************/
+ /* Function: 0x07 */
+
+ typedef struct {
+ uint32 percent_full;
+ uint32 log_size;
+ NTTIME retention_time;
+ uint8 shutdown_in_progress;
+ NTTIME time_to_shutdown;
+ uint32 next_audit_record;
+ uint32 unknown;
+ } lsa_AuditLogInfo;
+
+ typedef [v1_enum] enum {
+ LSA_AUDIT_POLICY_NONE=0,
+ LSA_AUDIT_POLICY_SUCCESS=1,
+ LSA_AUDIT_POLICY_FAILURE=2,
+ LSA_AUDIT_POLICY_ALL=(LSA_AUDIT_POLICY_SUCCESS|LSA_AUDIT_POLICY_FAILURE),
+ LSA_AUDIT_POLICY_CLEAR=4
+ } lsa_PolicyAuditPolicy;
+
+ typedef enum {
+ LSA_AUDIT_CATEGORY_SYSTEM = 0,
+ LSA_AUDIT_CATEGORY_LOGON = 1,
+ LSA_AUDIT_CATEGORY_FILE_AND_OBJECT_ACCESS = 2,
+ LSA_AUDIT_CATEGORY_USE_OF_USER_RIGHTS = 3,
+ LSA_AUDIT_CATEGORY_PROCCESS_TRACKING = 4,
+ LSA_AUDIT_CATEGORY_SECURITY_POLICY_CHANGES = 5,
+ LSA_AUDIT_CATEGORY_ACCOUNT_MANAGEMENT = 6,
+ LSA_AUDIT_CATEGORY_DIRECTORY_SERVICE_ACCESS = 7, /* only in win2k/2k3 */
+ LSA_AUDIT_CATEGORY_ACCOUNT_LOGON = 8 /* only in win2k/2k3 */
+ } lsa_PolicyAuditEventType;
+
+ typedef struct {
+ uint32 auditing_mode;
+ [size_is(count)] lsa_PolicyAuditPolicy *settings;
+ uint32 count;
+ } lsa_AuditEventsInfo;
+
+ typedef struct {
+ lsa_StringLarge name;
+ dom_sid2 *sid;
+ } lsa_DomainInfo;
+
+ typedef struct {
+ lsa_String name;
+ } lsa_PDAccountInfo;
+
+ typedef enum {
+ LSA_POLICY_ROLE_BACKUP = 2,
+ LSA_POLICY_ROLE_PRIMARY = 3
+ } lsa_PolicyServerRole;
+
+ typedef struct {
+ lsa_PolicyServerRole role;
+ } lsa_ServerRole;
+
+ typedef struct {
+ lsa_String source;
+ lsa_String account;
+ } lsa_ReplicaSourceInfo;
+
+ typedef struct {
+ uint32 paged_pool;
+ uint32 non_paged_pool;
+ uint32 min_wss;
+ uint32 max_wss;
+ uint32 pagefile;
+ hyper unknown;
+ } lsa_DefaultQuotaInfo;
+
+ typedef struct {
+ hyper modified_id;
+ NTTIME db_create_time;
+ } lsa_ModificationInfo;
+
+ typedef struct {
+ uint8 shutdown_on_full;
+ } lsa_AuditFullSetInfo;
+
+ typedef struct {
+ uint16 unknown; /* an midl padding bug? */
+ uint8 shutdown_on_full;
+ uint8 log_is_full;
+ } lsa_AuditFullQueryInfo;
+
+ typedef struct {
+ /* it's important that we use the lsa_StringLarge here,
+ * because otherwise windows clients result with such dns hostnames
+ * e.g. w2k3-client.samba4.samba.orgsamba4.samba.org
+ * where it should be
+ * w2k3-client.samba4.samba.org
+ */
+ lsa_StringLarge name;
+ lsa_StringLarge dns_domain;
+ lsa_StringLarge dns_forest;
+ GUID domain_guid;
+ dom_sid2 *sid;
+ } lsa_DnsDomainInfo;
+
+ typedef enum {
+ LSA_POLICY_INFO_AUDIT_LOG=1,
+ LSA_POLICY_INFO_AUDIT_EVENTS=2,
+ LSA_POLICY_INFO_DOMAIN=3,
+ LSA_POLICY_INFO_PD=4,
+ LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
+ LSA_POLICY_INFO_ROLE=6,
+ LSA_POLICY_INFO_REPLICA=7,
+ LSA_POLICY_INFO_QUOTA=8,
+ LSA_POLICY_INFO_DB=9,
+ LSA_POLICY_INFO_AUDIT_FULL_SET=10,
+ LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
+ LSA_POLICY_INFO_DNS=12,
+ LSA_POLICY_INFO_DNS_INT=13,
+ LSA_POLICY_INFO_LOCAL_ACCOUNT_DOMAIN=14
+ } lsa_PolicyInfo;
+
+ typedef [switch_type(uint16)] union {
+ [case(LSA_POLICY_INFO_AUDIT_LOG)] lsa_AuditLogInfo audit_log;
+ [case(LSA_POLICY_INFO_AUDIT_EVENTS)] lsa_AuditEventsInfo audit_events;
+ [case(LSA_POLICY_INFO_DOMAIN)] lsa_DomainInfo domain;
+ [case(LSA_POLICY_INFO_PD)] lsa_PDAccountInfo pd;
+ [case(LSA_POLICY_INFO_ACCOUNT_DOMAIN)] lsa_DomainInfo account_domain;
+ [case(LSA_POLICY_INFO_ROLE)] lsa_ServerRole role;
+ [case(LSA_POLICY_INFO_REPLICA)] lsa_ReplicaSourceInfo replica;
+ [case(LSA_POLICY_INFO_QUOTA)] lsa_DefaultQuotaInfo quota;
+ [case(LSA_POLICY_INFO_DB)] lsa_ModificationInfo db;
+ [case(LSA_POLICY_INFO_AUDIT_FULL_SET)] lsa_AuditFullSetInfo auditfullset;
+ [case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] lsa_AuditFullQueryInfo auditfullquery;
+ [case(LSA_POLICY_INFO_DNS)] lsa_DnsDomainInfo dns;
+ } lsa_PolicyInformation;
+
+ NTSTATUS lsa_QueryInfoPolicy (
+ [in] policy_handle *handle,
+ [in] lsa_PolicyInfo level,
+ [out,switch_is(level)] lsa_PolicyInformation **info
+ );
+
+ /******************/
+ /* Function: 0x08 */
+ NTSTATUS lsa_SetInfoPolicy (
+ [in] policy_handle *handle,
+ [in] lsa_PolicyInfo level,
+ [in,switch_is(level)] lsa_PolicyInformation *info
+ );
+
+ /******************/
+ /* Function: 0x09 */
+ [todo] NTSTATUS lsa_ClearAuditLog ();
+
+ /******************/
+ /* Function: 0x0a */
+ [public] NTSTATUS lsa_CreateAccount (
+ [in] policy_handle *handle,
+ [in] dom_sid2 *sid,
+ [in] lsa_AccountAccessMask access_mask,
+ [out] policy_handle *acct_handle
+ );
+
+ /******************/
+ /* NOTE: This only returns accounts that have at least
+ one privilege set
+ */
+ /* Function: 0x0b */
+ typedef struct {
+ dom_sid2 *sid;
+ } lsa_SidPtr;
+
+ typedef [public] struct {
+ [range(0,1000)] uint32 num_sids;
+ [size_is(num_sids)] lsa_SidPtr *sids;
+ } lsa_SidArray;
+
+ [public] NTSTATUS lsa_EnumAccounts (
+ [in] policy_handle *handle,
+ [in,out] uint32 *resume_handle,
+ [in,range(0,8192)] uint32 num_entries,
+ [out] lsa_SidArray *sids
+ );
+
+
+ /*************************************************/
+ /* Function: 0x0c */
+
+ [public] NTSTATUS lsa_CreateTrustedDomain(
+ [in] policy_handle *handle,
+ [in] lsa_DomainInfo *info,
+ [in] lsa_DomainAccessMask access_mask,
+ [out] policy_handle *trustdom_handle
+ );
+
+
+ /******************/
+ /* Function: 0x0d */
+
+ /* w2k3 treats max_size as max_domains*60 */
+ const int LSA_ENUM_TRUST_DOMAIN_MULTIPLIER = 60;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] lsa_DomainInfo *domains;
+ } lsa_DomainList;
+
+ NTSTATUS lsa_EnumTrustDom (
+ [in] policy_handle *handle,
+ [in,out] uint32 *resume_handle,
+ [in] uint32 max_size,
+ [out] lsa_DomainList *domains
+ );
+
+
+ /******************/
+ /* Function: 0x0e */
+ typedef [public] enum {
+ SID_NAME_USE_NONE = 0,/* NOTUSED */
+ SID_NAME_USER = 1, /* user */
+ SID_NAME_DOM_GRP = 2, /* domain group */
+ SID_NAME_DOMAIN = 3, /* domain: don't know what this is */
+ SID_NAME_ALIAS = 4, /* local group */
+ SID_NAME_WKN_GRP = 5, /* well-known group */
+ SID_NAME_DELETED = 6, /* deleted account: needed for c2 rating */
+ SID_NAME_INVALID = 7, /* invalid account */
+ SID_NAME_UNKNOWN = 8, /* oops. */
+ SID_NAME_COMPUTER = 9 /* machine */
+ } lsa_SidType;
+
+ typedef struct {
+ lsa_SidType sid_type;
+ uint32 rid;
+ uint32 sid_index;
+ } lsa_TranslatedSid;
+
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ [size_is(count)] lsa_TranslatedSid *sids;
+ } lsa_TransSidArray;
+
+ const int LSA_REF_DOMAIN_LIST_MULTIPLIER = 32;
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ [size_is(count)] lsa_DomainInfo *domains;
+ uint32 max_size;
+ } lsa_RefDomainList;
+
+ /* Level 1: Ask everywhere
+ * Level 2: Ask domain and trusted domains, no builtin and wkn
+ * Level 3: Only ask domain
+ * Level 4: W2k3ad: Only ask AD trusts
+ * Level 5: Only ask transitive forest trusts
+ * Level 6: Like 4
+ */
+
+ typedef enum {
+ LSA_LOOKUP_NAMES_ALL = 1,
+ LSA_LOOKUP_NAMES_DOMAINS_ONLY = 2,
+ LSA_LOOKUP_NAMES_PRIMARY_DOMAIN_ONLY = 3,
+ LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY = 4,
+ LSA_LOOKUP_NAMES_FOREST_TRUSTS_ONLY = 5,
+ LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY2 = 6
+ } lsa_LookupNamesLevel;
+
+ [public] NTSTATUS lsa_LookupNames (
+ [in] policy_handle *handle,
+ [in,range(0,1000)] uint32 num_names,
+ [in,size_is(num_names)] lsa_String names[],
+ [out] lsa_RefDomainList **domains,
+ [in,out] lsa_TransSidArray *sids,
+ [in] lsa_LookupNamesLevel level,
+ [in,out] uint32 *count
+ );
+
+
+ /******************/
+ /* Function: 0x0f */
+
+ typedef struct {
+ lsa_SidType sid_type;
+ lsa_String name;
+ uint32 sid_index;
+ } lsa_TranslatedName;
+
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ [size_is(count)] lsa_TranslatedName *names;
+ } lsa_TransNameArray;
+
+ [public] NTSTATUS lsa_LookupSids (
+ [in] policy_handle *handle,
+ [in] lsa_SidArray *sids,
+ [out] lsa_RefDomainList *domains,
+ [in,out] lsa_TransNameArray *names,
+ [in] uint16 level,
+ [in,out] uint32 *count
+ );
+
+
+ /* Function: 0x10 */
+ [public] NTSTATUS lsa_CreateSecret(
+ [in] policy_handle *handle,
+ [in] lsa_String name,
+ [in] lsa_SecretAccessMask access_mask,
+ [out] policy_handle *sec_handle
+ );
+
+
+ /*****************************************/
+ /* Function: 0x11 */
+ NTSTATUS lsa_OpenAccount (
+ [in] policy_handle *handle,
+ [in] dom_sid2 *sid,
+ [in] lsa_AccountAccessMask access_mask,
+ [out] policy_handle *acct_handle
+ );
+
+
+ /****************************************/
+ /* Function: 0x12 */
+
+ typedef struct {
+ lsa_LUID luid;
+ uint32 attribute;
+ } lsa_LUIDAttribute;
+
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ uint32 unknown;
+ [size_is(count)] lsa_LUIDAttribute set[*];
+ } lsa_PrivilegeSet;
+
+ NTSTATUS lsa_EnumPrivsAccount (
+ [in] policy_handle *handle,
+ [out] lsa_PrivilegeSet **privs
+ );
+
+
+ /****************************************/
+ /* Function: 0x13 */
+ NTSTATUS lsa_AddPrivilegesToAccount(
+ [in] policy_handle *handle,
+ [in] lsa_PrivilegeSet *privs
+ );
+
+
+ /****************************************/
+ /* Function: 0x14 */
+ NTSTATUS lsa_RemovePrivilegesFromAccount(
+ [in] policy_handle *handle,
+ [in] uint8 remove_all,
+ [in,unique] lsa_PrivilegeSet *privs
+ );
+
+ /* Function: 0x15 */
+ [todo] NTSTATUS lsa_GetQuotasForAccount();
+
+ /* Function: 0x16 */
+ [todo] NTSTATUS lsa_SetQuotasForAccount();
+
+ /* Function: 0x17 */
+ [todo] NTSTATUS lsa_GetSystemAccessAccount();
+ /* Function: 0x18 */
+ [todo] NTSTATUS lsa_SetSystemAccessAccount();
+
+ /* Function: 0x19 */
+ NTSTATUS lsa_OpenTrustedDomain(
+ [in] policy_handle *handle,
+ [in] dom_sid2 *sid,
+ [in] lsa_DomainAccessMask access_mask,
+ [out] policy_handle *trustdom_handle
+ );
+
+ typedef [flag(NDR_PAHEX)] struct {
+ uint32 length;
+ uint32 size;
+ [size_is(size),length_is(length)] uint8 *data;
+ } lsa_DATA_BUF;
+
+ typedef [flag(NDR_PAHEX)] struct {
+ [range(0,65536)] uint32 size;
+ [size_is(size)] uint8 *data;
+ } lsa_DATA_BUF2;
+
+ typedef enum {
+ LSA_TRUSTED_DOMAIN_INFO_NAME = 1,
+ LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO = 2,
+ LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET = 3,
+ LSA_TRUSTED_DOMAIN_INFO_PASSWORD = 4,
+ LSA_TRUSTED_DOMAIN_INFO_BASIC = 5,
+ LSA_TRUSTED_DOMAIN_INFO_INFO_EX = 6,
+ LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO = 7,
+ LSA_TRUSTED_DOMAIN_INFO_FULL_INFO = 8,
+ LSA_TRUSTED_DOMAIN_INFO_11 = 11,
+ LSA_TRUSTED_DOMAIN_INFO_INFO_ALL = 12
+ } lsa_TrustDomInfoEnum;
+
+ typedef struct {
+ lsa_StringLarge netbios_name;
+ } lsa_TrustDomainInfoName;
+
+ typedef struct {
+ uint32 posix_offset;
+ } lsa_TrustDomainInfoPosixOffset;
+
+ typedef struct {
+ lsa_DATA_BUF *password;
+ lsa_DATA_BUF *old_password;
+ } lsa_TrustDomainInfoPassword;
+
+ typedef struct {
+ lsa_String netbios_name;
+ dom_sid2 *sid;
+ } lsa_TrustDomainInfoBasic;
+
+ typedef struct {
+ lsa_StringLarge domain_name;
+ lsa_StringLarge netbios_name;
+ dom_sid2 *sid;
+ uint32 trust_direction;
+ uint32 trust_type;
+ uint32 trust_attributes;
+ } lsa_TrustDomainInfoInfoEx;
+
+ typedef struct {
+ NTTIME_hyper last_update_time;
+ uint32 secret_type;
+ lsa_DATA_BUF2 data;
+ } lsa_TrustDomainInfoBuffer;
+
+ typedef struct {
+ uint32 incoming_count;
+ lsa_TrustDomainInfoBuffer *incoming_current_auth_info;
+ lsa_TrustDomainInfoBuffer *incoming_previous_auth_info;
+ uint32 outgoing_count;
+ lsa_TrustDomainInfoBuffer *outgoing_current_auth_info;
+ lsa_TrustDomainInfoBuffer *outgoing_previous_auth_info;
+ } lsa_TrustDomainInfoAuthInfo;
+
+ typedef struct {
+ lsa_TrustDomainInfoInfoEx info_ex;
+ lsa_TrustDomainInfoPosixOffset posix_offset;
+ lsa_TrustDomainInfoAuthInfo auth_info;
+ } lsa_TrustDomainInfoFullInfo;
+
+ typedef struct {
+ lsa_TrustDomainInfoInfoEx info_ex;
+ lsa_DATA_BUF2 data1;
+ } lsa_TrustDomainInfo11;
+
+ typedef struct {
+ lsa_TrustDomainInfoInfoEx info_ex;
+ lsa_DATA_BUF2 data1;
+ lsa_TrustDomainInfoPosixOffset posix_offset;
+ lsa_TrustDomainInfoAuthInfo auth_info;
+ } lsa_TrustDomainInfoInfoAll;
+
+ typedef [switch_type(lsa_TrustDomInfoEnum)] union {
+ [case(LSA_TRUSTED_DOMAIN_INFO_NAME)] lsa_TrustDomainInfoName name;
+ [case(LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET)] lsa_TrustDomainInfoPosixOffset posix_offset;
+ [case(LSA_TRUSTED_DOMAIN_INFO_PASSWORD)] lsa_TrustDomainInfoPassword password;
+ [case(LSA_TRUSTED_DOMAIN_INFO_BASIC)] lsa_TrustDomainInfoBasic info_basic;
+ [case(LSA_TRUSTED_DOMAIN_INFO_INFO_EX)] lsa_TrustDomainInfoInfoEx info_ex;
+ [case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO)] lsa_TrustDomainInfoAuthInfo auth_info;
+ [case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO)] lsa_TrustDomainInfoFullInfo full_info;
+ [case(LSA_TRUSTED_DOMAIN_INFO_11)] lsa_TrustDomainInfo11 info11;
+ [case(LSA_TRUSTED_DOMAIN_INFO_INFO_ALL)] lsa_TrustDomainInfoInfoAll info_all;
+ } lsa_TrustedDomainInfo;
+
+ /* Function: 0x1a */
+ NTSTATUS lsa_QueryTrustedDomainInfo(
+ [in] policy_handle *trustdom_handle,
+ [in] lsa_TrustDomInfoEnum level,
+ [out,switch_is(level)] lsa_TrustedDomainInfo **info
+ );
+
+ /* Function: 0x1b */
+ [todo] NTSTATUS lsa_SetInformationTrustedDomain();
+
+ /* Function: 0x1c */
+ [public] NTSTATUS lsa_OpenSecret(
+ [in] policy_handle *handle,
+ [in] lsa_String name,
+ [in] lsa_SecretAccessMask access_mask,
+ [out] policy_handle *sec_handle
+ );
+
+ /* Function: 0x1d */
+
+ [public] NTSTATUS lsa_SetSecret(
+ [in] policy_handle *sec_handle,
+ [in,unique] lsa_DATA_BUF *new_val,
+ [in,unique] lsa_DATA_BUF *old_val
+ );
+
+ typedef struct {
+ lsa_DATA_BUF *buf;
+ } lsa_DATA_BUF_PTR;
+
+ /* Function: 0x1e */
+ [public] NTSTATUS lsa_QuerySecret (
+ [in] policy_handle *sec_handle,
+ [in,out,unique] lsa_DATA_BUF_PTR *new_val,
+ [in,out,unique] NTTIME_hyper *new_mtime,
+ [in,out,unique] lsa_DATA_BUF_PTR *old_val,
+ [in,out,unique] NTTIME_hyper *old_mtime
+ );
+
+ /* Function: 0x1f */
+ NTSTATUS lsa_LookupPrivValue(
+ [in] policy_handle *handle,
+ [in] lsa_String *name,
+ [out] lsa_LUID *luid
+ );
+
+
+ /* Function: 0x20 */
+ NTSTATUS lsa_LookupPrivName (
+ [in] policy_handle *handle,
+ [in] lsa_LUID *luid,
+ [out] lsa_StringLarge **name
+ );
+
+
+ /*******************/
+ /* Function: 0x21 */
+ NTSTATUS lsa_LookupPrivDisplayName (
+ [in] policy_handle *handle,
+ [in] lsa_String *name,
+ [out] lsa_StringLarge **disp_name,
+ /* see http://www.microsoft.com/globaldev/nlsweb/ for
+ language definitions */
+ [in,out] uint16 *language_id,
+ [in] uint16 unknown
+ );
+
+ /* Function: 0x22 */
+ [todo] NTSTATUS lsa_DeleteObject();
+
+
+ /*******************/
+ /* Function: 0x23 */
+ NTSTATUS lsa_EnumAccountsWithUserRight (
+ [in] policy_handle *handle,
+ [in,unique] lsa_String *name,
+ [out] lsa_SidArray *sids
+ );
+
+ /* Function: 0x24 */
+ typedef struct {
+ [string,charset(UTF16)] uint16 *name;
+ } lsa_RightAttribute;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] lsa_StringLarge *names;
+ } lsa_RightSet;
+
+ NTSTATUS lsa_EnumAccountRights (
+ [in] policy_handle *handle,
+ [in] dom_sid2 *sid,
+ [out] lsa_RightSet *rights
+ );
+
+
+ /**********************/
+ /* Function: 0x25 */
+ NTSTATUS lsa_AddAccountRights (
+ [in] policy_handle *handle,
+ [in] dom_sid2 *sid,
+ [in] lsa_RightSet *rights
+ );
+
+ /**********************/
+ /* Function: 0x26 */
+ NTSTATUS lsa_RemoveAccountRights (
+ [in] policy_handle *handle,
+ [in] dom_sid2 *sid,
+ [in] uint32 unknown,
+ [in] lsa_RightSet *rights
+ );
+
+ /* Function: 0x27 */
+ NTSTATUS lsa_QueryTrustedDomainInfoBySid(
+ [in] policy_handle *handle,
+ [in] dom_sid2 *dom_sid,
+ [in] lsa_TrustDomInfoEnum level,
+ [out,switch_is(level)] lsa_TrustedDomainInfo **info
+ );
+
+ /* Function: 0x28 */
+ [todo] NTSTATUS lsa_SetTrustedDomainInfo();
+ /* Function: 0x29 */
+ NTSTATUS lsa_DeleteTrustedDomain(
+ [in] policy_handle *handle,
+ [in] dom_sid2 *dom_sid
+ );
+
+ /* Function: 0x2a */
+ [todo] NTSTATUS lsa_StorePrivateData();
+ /* Function: 0x2b */
+ [todo] NTSTATUS lsa_RetrievePrivateData();
+
+
+ /**********************/
+ /* Function: 0x2c */
+ [public] NTSTATUS lsa_OpenPolicy2 (
+ [in,unique] [string,charset(UTF16)] uint16 *system_name,
+ [in] lsa_ObjectAttribute *attr,
+ [in] lsa_PolicyAccessMask access_mask,
+ [out] policy_handle *handle
+ );
+
+ /**********************/
+ /* Function: 0x2d */
+ typedef struct {
+ lsa_String *string;
+ } lsa_StringPointer;
+
+ NTSTATUS lsa_GetUserName(
+ [in,unique] [string,charset(UTF16)] uint16 *system_name,
+ [in,out,unique] lsa_String *account_name,
+ [in,out,unique] lsa_StringPointer *authority_name
+ );
+
+ /**********************/
+ /* Function: 0x2e */
+
+ NTSTATUS lsa_QueryInfoPolicy2(
+ [in] policy_handle *handle,
+ [in] lsa_PolicyInfo level,
+ [out,switch_is(level)] lsa_PolicyInformation **info
+ );
+
+ /* Function 0x2f */
+ NTSTATUS lsa_SetInfoPolicy2(
+ [in] policy_handle *handle,
+ [in] lsa_PolicyInfo level,
+ [in,switch_is(level)] lsa_PolicyInformation *info
+ );
+
+ /**********************/
+ /* Function 0x30 */
+ NTSTATUS lsa_QueryTrustedDomainInfoByName(
+ [in] policy_handle *handle,
+ [in] lsa_String trusted_domain,
+ [in] lsa_TrustDomInfoEnum level,
+ [out,switch_is(level)] lsa_TrustedDomainInfo **info
+ );
+
+ /**********************/
+ /* Function 0x31 */
+ NTSTATUS lsa_SetTrustedDomainInfoByName(
+ [in] policy_handle *handle,
+ [in] lsa_String trusted_domain,
+ [in] lsa_TrustDomInfoEnum level,
+ [in,unique,switch_is(level)] lsa_TrustedDomainInfo *info
+ );
+
+ /* Function 0x32 */
+
+ /* w2k3 treats max_size as max_domains*82 */
+ const int LSA_ENUM_TRUST_DOMAIN_EX_MULTIPLIER = 82;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] lsa_TrustDomainInfoInfoEx *domains;
+ } lsa_DomainListEx;
+
+ NTSTATUS lsa_EnumTrustedDomainsEx (
+ [in] policy_handle *handle,
+ [in,out] uint32 *resume_handle,
+ [out] lsa_DomainListEx *domains,
+ [in] uint32 max_size
+ );
+
+
+ /* Function 0x33 */
+ [todo] NTSTATUS lsa_CreateTrustedDomainEx();
+
+ /* Function 0x34 */
+ NTSTATUS lsa_CloseTrustedDomainEx(
+ [in,out] policy_handle *handle
+ );
+
+ /* Function 0x35 */
+
+ /* w2k3 returns either 0x000bbbd000000000 or 0x000a48e800000000
+ for unknown6 - gd */
+ typedef struct {
+ uint32 enforce_restrictions;
+ hyper service_tkt_lifetime;
+ hyper user_tkt_lifetime;
+ hyper user_tkt_renewaltime;
+ hyper clock_skew;
+ hyper unknown6;
+ } lsa_DomainInfoKerberos;
+
+ typedef struct {
+ uint32 blob_size;
+ [size_is(blob_size)] uint8 *efs_blob;
+ } lsa_DomainInfoEfs;
+
+ typedef enum {
+ LSA_DOMAIN_INFO_POLICY_QOS=1,
+ LSA_DOMAIN_INFO_POLICY_EFS=2,
+ LSA_DOMAIN_INFO_POLICY_KERBEROS=3
+ } lsa_DomainInfoEnum;
+
+ typedef [switch_type(uint16)] union {
+ [case(LSA_DOMAIN_INFO_POLICY_EFS)] lsa_DomainInfoEfs efs_info;
+ [case(LSA_DOMAIN_INFO_POLICY_KERBEROS)] lsa_DomainInfoKerberos kerberos_info;
+ } lsa_DomainInformationPolicy;
+
+ NTSTATUS lsa_QueryDomainInformationPolicy(
+ [in] policy_handle *handle,
+ [in] lsa_DomainInfoEnum level,
+ [out,switch_is(level)] lsa_DomainInformationPolicy **info
+ );
+
+ /* Function 0x36 */
+ NTSTATUS lsa_SetDomainInformationPolicy(
+ [in] policy_handle *handle,
+ [in] lsa_DomainInfoEnum level,
+ [in,unique,switch_is(level)] lsa_DomainInformationPolicy *info
+ );
+
+ /**********************/
+ /* Function 0x37 */
+ NTSTATUS lsa_OpenTrustedDomainByName(
+ [in] policy_handle *handle,
+ [in] lsa_String name,
+ [in] lsa_DomainAccessMask access_mask,
+ [out] policy_handle *trustdom_handle
+ );
+
+ /* Function 0x38 */
+ [todo] NTSTATUS lsa_TestCall();
+
+ /**********************/
+ /* Function 0x39 */
+
+ typedef struct {
+ lsa_SidType sid_type;
+ lsa_String name;
+ uint32 sid_index;
+ uint32 unknown;
+ } lsa_TranslatedName2;
+
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ [size_is(count)] lsa_TranslatedName2 *names;
+ } lsa_TransNameArray2;
+
+ [public] NTSTATUS lsa_LookupSids2(
+ [in] policy_handle *handle,
+ [in] lsa_SidArray *sids,
+ [out] lsa_RefDomainList **domains,
+ [in,out] lsa_TransNameArray2 *names,
+ [in] uint16 level,
+ [in,out] uint32 *count,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
+ /**********************/
+ /* Function 0x3a */
+
+ typedef struct {
+ lsa_SidType sid_type;
+ uint32 rid;
+ uint32 sid_index;
+ uint32 unknown;
+ } lsa_TranslatedSid2;
+
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ [size_is(count)] lsa_TranslatedSid2 *sids;
+ } lsa_TransSidArray2;
+
+ [public] NTSTATUS lsa_LookupNames2 (
+ [in] policy_handle *handle,
+ [in,range(0,1000)] uint32 num_names,
+ [in,size_is(num_names)] lsa_String names[],
+ [out] lsa_RefDomainList **domains,
+ [in,out] lsa_TransSidArray2 *sids,
+ [in] lsa_LookupNamesLevel level,
+ [in,out] uint32 *count,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
+ /* Function 0x3b */
+ [todo] NTSTATUS lsa_CreateTrustedDomainEx2();
+
+ /* Function 0x3c */
+ [todo] NTSTATUS lsa_CREDRWRITE();
+
+ /* Function 0x3d */
+ [todo] NTSTATUS lsa_CREDRREAD();
+
+ /* Function 0x3e */
+ [todo] NTSTATUS lsa_CREDRENUMERATE();
+
+ /* Function 0x3f */
+ [todo] NTSTATUS lsa_CREDRWRITEDOMAINCREDENTIALS();
+
+ /* Function 0x40 */
+ [todo] NTSTATUS lsa_CREDRREADDOMAINCREDENTIALS();
+
+ /* Function 0x41 */
+ [todo] NTSTATUS lsa_CREDRDELETE();
+
+ /* Function 0x42 */
+ [todo] NTSTATUS lsa_CREDRGETTARGETINFO();
+
+ /* Function 0x43 */
+ [todo] NTSTATUS lsa_CREDRPROFILELOADED();
+
+ /**********************/
+ /* Function 0x44 */
+ typedef struct {
+ lsa_SidType sid_type;
+ dom_sid2 *sid;
+ uint32 sid_index;
+ uint32 unknown;
+ } lsa_TranslatedSid3;
+
+ typedef struct {
+ [range(0,1000)] uint32 count;
+ [size_is(count)] lsa_TranslatedSid3 *sids;
+ } lsa_TransSidArray3;
+
+ [public] NTSTATUS lsa_LookupNames3 (
+ [in] policy_handle *handle,
+ [in,range(0,1000)] uint32 num_names,
+ [in,size_is(num_names)] lsa_String names[],
+ [out] lsa_RefDomainList **domains,
+ [in,out] lsa_TransSidArray3 *sids,
+ [in] lsa_LookupNamesLevel level,
+ [in,out] uint32 *count,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
+ /* Function 0x45 */
+ [todo] NTSTATUS lsa_CREDRGETSESSIONTYPES();
+
+ /* Function 0x46 */
+ [todo] NTSTATUS lsa_LSARREGISTERAUDITEVENT();
+
+ /* Function 0x47 */
+ [todo] NTSTATUS lsa_LSARGENAUDITEVENT();
+
+ /* Function 0x48 */
+ [todo] NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
+
+ /* Function 0x49 */
+ typedef struct {
+ [range(0,131072)] uint32 length;
+ [size_is(length)] uint8 *data;
+ } lsa_ForestTrustBinaryData;
+
+ typedef struct {
+ dom_sid2 *domain_sid;
+ lsa_StringLarge dns_domain_name;
+ lsa_StringLarge netbios_domain_name;
+ } lsa_ForestTrustDomainInfo;
+
+ typedef [switch_type(uint32)] union {
+ [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME)] lsa_String top_level_name;
+ [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX)] lsa_StringLarge top_level_name_ex;
+ [case(LSA_FOREST_TRUST_DOMAIN_INFO)] lsa_ForestTrustDomainInfo domain_info;
+ [default] lsa_ForestTrustBinaryData data;
+ } lsa_ForestTrustData;
+
+ typedef [v1_enum] enum {
+ LSA_FOREST_TRUST_TOP_LEVEL_NAME = 0,
+ LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX = 1,
+ LSA_FOREST_TRUST_DOMAIN_INFO = 2,
+ LSA_FOREST_TRUST_RECORD_TYPE_LAST = 3
+ } lsa_ForestTrustRecordType;
+
+ typedef struct {
+ uint32 flags;
+ lsa_ForestTrustRecordType level;
+ hyper unknown;
+ [switch_is(level)] lsa_ForestTrustData forest_trust_data;
+ } lsa_ForestTrustRecord;
+
+ typedef [public] struct {
+ [range(0,4000)] uint32 count;
+ [size_is(count)] lsa_ForestTrustRecord **entries;
+ } lsa_ForestTrustInformation;
+
+ NTSTATUS lsa_lsaRQueryForestTrustInformation(
+ [in] policy_handle *handle,
+ [in,ref] lsa_String *trusted_domain_name,
+ [in] uint16 unknown, /* level ? */
+ [out,ref] lsa_ForestTrustInformation **forest_trust_info
+ );
+
+ /* Function 0x4a */
+ [todo] NTSTATUS lsa_LSARSETFORESTTRUSTINFORMATION();
+
+ /* Function 0x4b */
+ [todo] NTSTATUS lsa_CREDRRENAME();
+
+ /*****************/
+ /* Function 0x4c */
+
+ [public] NTSTATUS lsa_LookupSids3(
+ [in] lsa_SidArray *sids,
+ [out] lsa_RefDomainList **domains,
+ [in,out] lsa_TransNameArray2 *names,
+ [in] uint16 level,
+ [in,out] uint32 *count,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
+ /* Function 0x4d */
+ NTSTATUS lsa_LookupNames4(
+ [in,range(0,1000)] uint32 num_names,
+ [in,size_is(num_names)] lsa_String names[],
+ [out] lsa_RefDomainList **domains,
+ [in,out] lsa_TransSidArray3 *sids,
+ [in] lsa_LookupNamesLevel level,
+ [in,out] uint32 *count,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
+ /* Function 0x4e */
+ [todo] NTSTATUS lsa_LSAROPENPOLICYSCE();
+
+ /* Function 0x4f */
+ [todo] NTSTATUS lsa_LSARADTREGISTERSECURITYEVENTSOURCE();
+
+ /* Function 0x50 */
+ [todo] NTSTATUS lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE();
+
+ /* Function 0x51 */
+ [todo] NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();
+
+ /* Function 0x52 */
+ [todo] NTSTATUS Opnum82NotUsedOnWire(void);
+
+ /* Function 0x53 */
+ [todo] NTSTATUS Opnum83NotUsedOnWire(void);
+
+ /* Function 0x54 */
+ [todo] NTSTATUS Opnum84NotUsedOnWire(void);
+
+ /* Function 0x55 */
+ [todo] NTSTATUS Opnum85NotUsedOnWire(void);
+
+ /* Function 0x56 */
+ [todo] NTSTATUS Opnum86NotUsedOnWire(void);
+
+ /* Function 0x57 */
+ [todo] NTSTATUS Opnum87NotUsedOnWire(void);
+
+ /* Function 0x58 */
+ [todo] NTSTATUS Opnum88NotUsedOnWire(void);
+
+ /* Function 0x59 */
+ [todo] NTSTATUS Opnum89NotUsedOnWire(void);
+
+ /* Function 0x5A */
+ [todo] NTSTATUS Opnum90NotUsedOnWire(void);
+
+ /* Function 0x5B */
+ [todo] NTSTATUS Opnum91NotUsedOnWire(void);
+
+ /* Function 0x5C */
+ [todo] NTSTATUS Opnum92NotUsedOnWire(void);
+
+ /* Function 0x5D */
+ [todo] NTSTATUS Opnum93NotUsedOnWire(void);
+
+ /* Function 0x5E */
+ [todo] NTSTATUS Opnum94NotUsedOnWire(void);
+
+ /* Function 0x5F */
+ [todo] NTSTATUS Opnum95NotUsedOnWire(void);
+
+ /* Function 0x60 */
+ [todo] NTSTATUS Opnum96NotUsedOnWire(void);
+
+ /* Function 0x61 */
+ [todo] NTSTATUS Opnum97NotUsedOnWire(void);
+
+ /* Function 0x62 */
+ [todo] NTSTATUS Opnum98NotUsedOnWire(void);
+
+ /* Function 0x63 */
+ [todo] NTSTATUS Opnum99NotUsedOnWire(void);
+
+ /* Function 0x64 */
+ [todo] NTSTATUS Opnum100NotUsedOnWire(void);
+
+ /* Function 0x65 */
+ [todo] NTSTATUS Opnum101NotUsedOnWire(void);
+
+ /* Function 0x66 */
+ [todo] NTSTATUS Opnum102NotUsedOnWire(void);
+
+ /* Function 0x67 */
+ [todo] NTSTATUS Opnum103NotUsedOnWire(void);
+
+ /* Function 0x68 */
+ [todo] NTSTATUS Opnum104NotUsedOnWire(void);
+
+ /* Function 0x69 */
+ [todo] NTSTATUS Opnum105NotUsedOnWire(void);
+
+ /* Function 0x6A */
+ [todo] NTSTATUS Opnum106NotUsedOnWire(void);
+
+ /* Function 0x6B */
+ [todo] NTSTATUS Opnum107NotUsedOnWire(void);
+
+ /* Function 0x6C */
+ [todo] NTSTATUS Opnum108NotUsedOnWire(void);
+
+ /* Function 0x6D */
+ [todo] NTSTATUS Opnum109NotUsedOnWire(void);
+
+ /* Function 0x6E */
+ [todo] NTSTATUS Opnum110NotUsedOnWire(void);
+
+ /* Function 0x6F */
+ [todo] NTSTATUS Opnum111NotUsedOnWire(void);
+
+ /* Function 0x70 */
+ [todo] NTSTATUS Opnum112NotUsedOnWire(void);
+
+ /* Function 0x71 */
+ [todo] NTSTATUS Opnum113NotUsedOnWire(void);
+
+ /* Function 0x72 */
+ [todo] NTSTATUS Opnum114NotUsedOnWire(void);
+
+ /* Function 0x73 */
+ [todo] NTSTATUS Opnum115NotUsedOnWire(void);
+
+ /* Function 0x74 */
+ [todo] NTSTATUS Opnum116NotUsedOnWire(void);
+
+ /* Function 0x75 */
+ [todo] NTSTATUS Opnum117NotUsedOnWire(void);
+
+ /* Function 0x76 */
+ [todo] NTSTATUS Opnum118NotUsedOnWire(void);
+
+ /* Function 0x77 */
+ [todo] NTSTATUS Opnum119NotUsedOnWire(void);
+
+ /* Function 0x78 */
+ [todo] NTSTATUS Opnum120NotUsedOnWire(void);
+
+ /* Function 0x79 */
+ [todo] NTSTATUS Opnum121NotUsedOnWire(void);
+
+ /* Function 0x7A */
+ [todo] NTSTATUS Opnum122NotUsedOnWire(void);
+
+ /* Function 0x7B */
+ [todo] NTSTATUS Opnum123NotUsedOnWire(void);
+
+ /* Function 0x7C */
+ [todo] NTSTATUS Opnum124NotUsedOnWire(void);
+
+ /* Function 0x7D */
+ [todo] NTSTATUS Opnum125NotUsedOnWire(void);
+
+ /* Function 0x7E */
+ [todo] NTSTATUS Opnum126NotUsedOnWire(void);
+
+ /* Function 0x7F */
+ [todo] NTSTATUS Opnum127NotUsedOnWire(void);
+
+ /* Function 0x80 */
+ [todo] NTSTATUS Opnum128NotUsedOnWire(void);
+
+ /* Function 0x81 */
+ [todo] NTSTATUS lsa_LsarCreateTrustedDomainEx3(void);
+
+ /*****************/
+ /* Function 0x82 */
+
+ typedef [v1_enum] enum {
+ LSAPR_REVISION_VERSION_1 = 0x00000001
+ } LSAPR_REVISION_VERSION;
+
+ typedef struct _LSAPR_REVISION_INFO_V1
+ {
+ uint32 Revision;
+ uint32 SupportedFeatures;
+ } LSAPR_REVISION_INFO_V1;
+
+ typedef [switch_type(LSAPR_REVISION_VERSION)] union {
+ [case(LSAPR_REVISION_VERSION_1)] LSAPR_REVISION_INFO_V1 revision_info_v1;
+ } LSAPR_REVISION_INFO;
+
+ NTSTATUS lsa_LsarOpenPolicy3(
+ [in,unique] [string,charset(UTF16)] uint16 *system_name,
+ [in] lsa_ObjectAttribute *ObjectAttributes,
+ [in] lsa_PolicyAccessMask DesiredAccess,
+ [in] uint32 InVersion,
+ [in] [switch_is(InVersion)] LSAPR_REVISION_INFO* InRevisionInfo,
+ [out] uint32 *OutVersion,
+ [out] [switch_is(*OutVersion)] LSAPR_REVISION_INFO* OutRevisionInfo,
+ [out] policy_handle *handle
+ );
+}
diff --git a/epan/dissectors/pidl/mapi/mapi.cnf b/epan/dissectors/pidl/mapi/mapi.cnf
new file mode 100644
index 00000000..c817bbca
--- /dev/null
+++ b/epan/dissectors/pidl/mapi/mapi.cnf
@@ -0,0 +1,1351 @@
+# Conformance file for mapi
+
+HF_FIELD hf_mapi_decrypted_data "Decrypted data" "mapi.decrypted.data" FT_BYTES BASE_NONE NULL 0 NULL HFILL
+HF_FIELD hf_mapi_LogonId "LogonId" "mapi.rop.LogonId" FT_UINT8 BASE_DEC NULL 0 NULL HFILL
+HF_FIELD hf_mapi_ResponseHandleIndex "ResponseHandleIndex" "mapi.rop.ResponseHandleIndex" FT_UINT8 BASE_DEC NULL 0 NULL HFILL
+HF_FIELD hf_mapi_InputHandleIndex "InputHandleIndex" "mapi.rop.InputHandleIndex" FT_UINT8 BASE_DEC NULL 0 NULL HFILL
+HF_FIELD hf_mapi_OutputHandleIndex "OutputHandleIndex" "mapi.rop.OutputHandleIndex" FT_UINT8 BASE_DEC NULL 0 NULL HFILL
+HF_FIELD hf_mapi_RgbInSize "RgbInSize" "mapi.RgbIn.RgbInSize" FT_UINT32 BASE_DEC NULL 0 NULL HFILL
+HF_FIELD hf_mapi_RgbOutSize "RgbOutSize" "mapi.RgbOut.RgbOutSize" FT_UINT32 BASE_DEC NULL 0 NULL HFILL
+HF_FIELD hf_mapi_AUX_PERF_CLIENTINFO_ClientIPV4 "ClientIP" "mapi.AUX_PERF_CLIENTINFO.ClientIP" FT_IPv4 BASE_NONE NULL 0 NULL HFILL
+HF_FIELD hf_mapi_AUX_PERF_CLIENTINFO_ClientIPV6 "ClientIPV6" "mapi.AUX_PERF_CLIENTINFO.ClientIPV6" FT_IPv6 BASE_NONE NULL 0 NULL HFILL
+HF_FIELD hf_mapi_AUX_PERF_CLIENTINFO_MacAddressEther "MacAddress" "mapi.AUX_PERF_CLIENTINFO.MacAddress" FT_ETHER BASE_NONE NULL 0 NULL HFILL
+
+HF_RENAME hf_mapi_AUX_PERF_CLIENTINFO_MacAddress hf_mapi_AUX_PERF_CLIENTINFO_MacAddressEther
+HF_RENAME hf_mapi_AUX_PERF_CLIENTINFO_ClientIP hf_mapi_AUX_PERF_CLIENTINFO_ClientIPV4
+HF_RENAME hf_mapi_AbortSubmit_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_Abort_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_AddressTypes_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CloneStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CollapseRow_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CommitStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CopyFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CopyProperties_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CopyToStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CopyTo_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CreateAttach_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CreateBookmark_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CreateFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_CreateMessage_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_DeleteAttach_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_DeleteFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_DeleteMessages_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_DeletePropertiesNoReplicate_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_DeleteProps_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_EmptyFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ExpandRow_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_FastTransferSourceGetBuffer_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_FindRow_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_FreeBookmark_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetAttachmentTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetCollapseState_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetContentsTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetHierarchyTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetIDsFromNames_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetLocalReplicaIds_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetMessageStatus_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetNamesFromIDs_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetOwningServers_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetPerUserGuid_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetPerUserLongTermIds_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetPermissionsTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetPropList_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetPropsAll_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetProps_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetReceiveFolderTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetReceiveFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetRulesTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetSearchCriteria_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetStatus_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetStoreState_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetStreamSize_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetTransportFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_GetValidAttachments_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_HardDeleteMessagesAndSubfolders_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_HardDeleteMessages_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_IdFromLongTermId_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_LockRegionStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_Logon_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_LongTermIdFromId_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ModifyPermissions_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ModifyRecipients_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ModifyRules_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_MoveCopyMessages_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_MoveFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_OpenAttach_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_OpenEmbeddedMessage_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_OpenFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_OpenMessage_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_OpenStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_OptionsData_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_Progress_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_PublicFolderIsGhosted_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_QueryColumnsAll_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_QueryNamedProperties_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_QueryPosition_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_QueryRows_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ReadPerUserInformation_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ReadRecipients_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ReadStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_RegisterNotification_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_Release_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_RemoveAllRecipients_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_ResetTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SaveChangesAttachment_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SaveChangesMessage_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SeekRowApprox_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SeekRowBookmark_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SeekRow_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SeekStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetCollapseState_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetColumns_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetMessageReadFlag_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetMessageStatus_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetPropertiesNoReplicate_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetProps_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetReadFlags_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetReceiveFolder_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetSearchCriteria_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetSpooler_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SetStreamSize_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SortTable_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SpoolerLockMessage_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SubmitMessage_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncConfigure_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncGetTransferState_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncImportDeletes_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncImportHierarchyChange_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncImportMessageChange_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncImportMessageMove_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncImportReadStateChanges_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncOpenCollector_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncUploadStateStreamBegin_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncUploadStateStreamContinue_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_SyncUploadStateStreamEnd_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_TransportNewMail_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_TransportSend_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_UnlockRegionStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_UpdateDeferredActionMessages_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_WriteAndCommitStream_req_LogonId hf_mapi_LogonId
+HF_RENAME hf_mapi_WriteStream_req_LogonId hf_mapi_LogonId
+
+
+HF_RENAME hf_mapi_AbortSubmit_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_Abort_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_AddressTypes_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_CloneStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_CollapseRow_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_CommitStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_CreateAttach_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_CreateBookmark_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_CreateFolder_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_CreateMessage_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_DeleteAttach_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_DeleteFolder_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_DeleteMessages_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_DeletePropertiesNoReplicate_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_DeleteProps_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_EmptyFolder_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ExpandRow_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_FastTransferSourceGetBuffer_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_FindRow_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_FreeBookmark_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetAttachmentTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetCollapseState_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetContentsTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetHierarchyTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetIDsFromNames_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetLocalReplicaIds_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetMessageStatus_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetNamesFromIDs_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetOwningServers_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetPerUserGuid_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetPerUserLongTermIds_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetPermissionsTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetPropList_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetPropsAll_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetProps_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetReceiveFolderTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetReceiveFolder_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetRulesTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetSearchCriteria_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetStatus_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetStoreState_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetStreamSize_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetTransportFolder_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_GetValidAttachments_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_HardDeleteMessagesAndSubfolders_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_HardDeleteMessages_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_IdFromLongTermId_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_LockRegionStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_LongTermIdFromId_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ModifyPermissions_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ModifyRecipients_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ModifyRules_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_OpenAttach_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_OpenEmbeddedMessage_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_OpenFolder_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_OpenMessage_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_OpenStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_OptionsData_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_Progress_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_PublicFolderIsGhosted_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_QueryColumnsAll_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_QueryNamedProperties_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_QueryPosition_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_QueryRows_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ReadPerUserInformation_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ReadRecipients_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ReadStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_RegisterNotification_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_Release_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_RemoveAllRecipients_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_ResetTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SaveChangesAttachment_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SaveChangesMessage_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SeekRowApprox_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SeekRowBookmark_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SeekRow_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SeekStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetCollapseState_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetColumns_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetMessageReadFlag_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetMessageStatus_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetPropertiesNoReplicate_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetProps_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetReadFlags_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetReceiveFolder_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetSearchCriteria_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetSpooler_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SetStreamSize_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SortTable_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SpoolerLockMessage_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SubmitMessage_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncConfigure_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncGetTransferState_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncImportDeletes_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncImportHierarchyChange_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncImportMessageChange_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncImportMessageMove_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncImportReadStateChanges_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncOpenCollector_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncUploadStateStreamBegin_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncUploadStateStreamContinue_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_SyncUploadStateStreamEnd_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_TransportNewMail_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_TransportSend_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_UnlockRegionStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_UpdateDeferredActionMessages_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_WriteAndCommitStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+HF_RENAME hf_mapi_WriteStream_req_InputHandleIndex hf_mapi_InputHandleIndex
+
+HF_RENAME hf_mapi_CloneStream_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_CreateAttach_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_CreateFolder_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_CreateMessage_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_GetAttachmentTable_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_GetContentsTable_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_GetHierarchyTable_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_GetPermissionsTable_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_GetRulesTable_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_Logon_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_OpenAttach_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_OpenEmbeddedMessage_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_OpenFolder_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_OpenMessage_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_OpenStream_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_RegisterNotification_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_SyncConfigure_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_SyncGetTransferState_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_SyncImportMessageChange_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+HF_RENAME hf_mapi_SyncOpenCollector_req_OutputHandleIndex hf_mapi_OutputHandleIndex
+
+HF_RENAME hf_mapi_SaveChangesAttachment_req_ResponseHandleIndex hf_mapi_ResponseHandleIndex
+HF_RENAME hf_mapi_SaveChangesMessage_req_ResponseHandleIndex hf_mapi_ResponseHandleIndex
+HF_RENAME hf_mapi_SetMessageReadFlag_req_ResponseHandleIndex hf_mapi_ResponseHandleIndex
+
+HF_FIELD hf_mapi_SyncUploadStateStreamContinue_req_StreamDataValue "StreamData" "mapi.SyncUploadStateStreamContinue_req.StreamData" FT_BYTES BASE_NONE NULL 0 NULL HFILL
+HF_RENAME hf_mapi_SyncUploadStateStreamContinue_req_StreamData hf_mapi_SyncUploadStateStreamContinue_req_StreamDataValue
+
+HF_FIELD hf_mapi_SyncImportMessageMove_req_SourceFolderIdValue "SourceFolderId" "mapi.SyncImportMessageMove_req.SourceFolderId" FT_BYTES BASE_NONE NULL 0 NULL HFILL
+HF_RENAME hf_mapi_SyncImportMessageMove_req_SourceFolderId hf_mapi_SyncImportMessageMove_req_SourceFolderIdValue
+
+HF_FIELD hf_mapi_SyncImportMessageMove_req_SourceMessageIdValue "SourceMessageId" "mapi.SyncImportMessageMove_req.SourceMessageId" FT_BYTES BASE_NONE NULL 0 NULL HFILL
+HF_RENAME hf_mapi_SyncImportMessageMove_req_SourceMessageId hf_mapi_SyncImportMessageMove_req_SourceMessageIdValue
+
+HF_FIELD hf_mapi_SyncImportMessageMove_req_PredecessorChangeListValue "PredecessorChangeList" "mapi.SyncImportMessageMove_req.PredecessorChangeList" FT_BYTES BASE_NONE NULL 0 NULL HFILL
+HF_RENAME hf_mapi_SyncImportMessageMove_req_PredecessorChangeList hf_mapi_SyncImportMessageMove_req_PredecessorChangeListValue
+
+HF_FIELD hf_mapi_SyncImportMessageMove_req_DestinationMessageIdValue "DestinationMessageId" "mapi.SyncImportMessageMove_req.DestinationMessageId" FT_BYTES BASE_NONE NULL 0 NULL HFILL
+HF_RENAME hf_mapi_SyncImportMessageMove_req_DestinationMessageId hf_mapi_SyncImportMessageMove_req_DestinationMessageIdValue
+
+HF_FIELD hf_mapi_SyncImportMessageMove_req_ChangeNumberValue "ChangeNumber" "mapi.SyncImportMessageMove_req.ChangeNumber" FT_BYTES BASE_NONE NULL 0 NULL HFILL
+HF_RENAME hf_mapi_SyncImportMessageMove_req_ChangeNumber hf_mapi_SyncImportMessageMove_req_ChangeNumberValue
+
+ETT_FIELD ett_mapi_connect_request
+ETT_FIELD ett_ServerObjectHandleTable
+
+MANUAL mapi_dissect_struct_request
+MANUAL mapi_dissect_struct_EcDoRpcMapiRequest
+MANUAL mapi_dissect_struct_AuxInfo
+MANUAL mapi_dissect_struct_AUX_HEADER
+MANUAL mapi_dissect_AUX_HEADER_TYPE_ENUM
+MANUAL mapi_dissect_AUX_DATA
+MANUAL mapi_dissect_struct_EcDoRpcMapiResponse
+MANUAL mapi_dissect_struct_response
+MANUAL mapi_dissect_element_EcDoRpc_response
+MANUAL mapi_dissect_struct_AUX_PERF_CLIENTINFO
+MANUAL mapi_dissect_element_AuxInfo_auxHeader
+MANUAL mapi_dissect_element_EcDoConnect_szUserDN
+MANUAL mapi_dissect_element_EcDoConnectEx_szUserDN
+MANUAL mapi_dissect_element_EcDoConnectEx_rgbAuxOut_
+MANUAL mapi_dissect_element_EcDoRpcExt2_rgbAuxOut_
+MANUAL mapi_dissect_element_EcDoConnect_rgwClientVersion
+MANUAL mapi_dissect_element_EcDoConnect_rgwServerVersion
+MANUAL mapi_dissect_element_EcDoConnect_rgwBestVersion
+MANUAL mapi_dissect_element_EcDoConnectEx_rgwClientVersion
+MANUAL mapi_dissect_element_EcDoConnectEx_rgwServerVersion
+MANUAL mapi_dissect_element_EcDoConnectEx_rgwBestVersion
+MANUAL mapi_dissect_struct_SyncUploadStateStreamContinue_req
+MANUAL mapi_dissect_struct_SyncImportMessageMove_req
+MANUAL mapi_dissect_bitmap_OpenFlags
+MANUAL mapi_dissect_bitmap_StoreState
+MANUAL mapi_dissect_struct_Logon_repl
+MANUAL mapi_dissect_struct_RgbIn
+MANUAL mapi_dissect_struct_RgbOut
+MANUAL mapi_dissect_element_EcDoRpcExt2_rgbOut_
+MANUAL mapi_dissect_element_EcDoRpcExt_rgbOut_
+
+
+NOEMIT mapi_dissect_element_EcDoRpc_request
+NOEMIT mapi_dissect_element_request_len
+NOEMIT mapi_dissect_element_request_length
+NOEMIT mapi_dissect_element_EcDoRpcMapiRequest_opnum
+NOEMIT mapi_dissect_element_request_handles
+NOEMIT mapi_dissect_element_EcDoRpc_MAPI_REPL_opnum
+NOEMIT mapi_dissect_element_EcDoRpcMapiResponse_opnum
+NOEMIT mapi_dissect_element_response_len
+NOEMIT mapi_dissect_element_response_length
+NOEMIT mapi_dissect_element_response_handles
+NOEMIT mapi_dissect_element_EcDoRpc_response_
+NOEMIT mapi_dissect_element_AuxInfo_auxInSize
+NOEMIT mapi_dissect_element_AuxInfo_auxIn
+NOEMIT mapi_dissect_element_AuxInfo_RpcHeaderExtension
+NOEMIT mapi_dissect_element_AuxInfo_AUX_HEADER
+NOEMIT mapi_dissect_element_AUX_HEADER_hdrType
+NOEMIT mapi_dissect_element_AUX_HEADER_TYPE_ENUM_Type
+NOEMIT mapi_dissect_element_AUX_HEADER_TYPE_ENUM_Type_2
+NOEMIT mapi_dissect_element_AUX_HEADER_AuxData
+NOEMIT mapi_dissect_element_AUX_DATA_Version1
+NOEMIT mapi_dissect_element_AUX_DATA_Version2
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_MachineNameOffset
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_UserNameOffset
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientIPSize
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientIPOffset
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientIPMaskSize
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientIPMaskOffset
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_AdapterNameOffset
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_MacAddressSize
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_MacAddressOffset
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_MachineName
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_UserName
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientIP
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientIPMask
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_AdapterName
+NOEMIT mapi_dissect_element_AUX_PERF_CLIENTINFO_MacAddress
+NOEMIT mapi_dissect_element_AUX_HEADER_Size
+NOEMIT mapi_dissect_element_EcDoConnectEx_rgbAuxOut__
+NOEMIT mapi_dissect_element_EcDoRpcExt2_rgbAuxOut__
+NOEMIT mapi_dissect_element_AuxInfo_auxHeader_
+NOEMIT mapi_dissect_element_EcDoConnect_rgwClientVersion_
+NOEMIT mapi_dissect_element_ROPRequest_RopId
+NOEMIT mapi_dissect_element_SyncUploadStateStreamContinue_req_StreamDataSize
+NOEMIT mapi_dissect_element_SyncUploadStateStreamContinue_req_StreamData
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_SourceFolderIdSize
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_SourceFolderId
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_SourceMessageIdSize
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_SourceMessageId
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_PredecessorChangeListSize
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_PredecessorChangeList
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_DestinationMessageIdSize
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_DestinationMessageId
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_ChangeNumberSize
+NOEMIT mapi_dissect_element_SyncImportMessageMove_req_ChangeNumber
+NOEMIT mapi_dissect_element_Logon_repl_ReturnValue
+NOEMIT mapi_dissect_element_Logon_repl_LogonFlags
+NOEMIT mapi_dissect_element_RgbIn_RpcHeaderExtension
+NOEMIT mapi_dissect_element_RgbIn_ropIn
+NOEMIT mapi_dissect_element_RgbOut_RpcHeaderExtension
+NOEMIT mapi_dissect_element_RgbOut_ropOut
+NOEMIT mapi_dissect_element_EcDoRpcExt2_rgbOut__
+NOEMIT mapi_dissect_element_EcDoRpcExt_rgbOut__
+
+CODE START
+
+tvbuff_t *
+mapi_deobfuscate(tvbuff_t *tvb, int offset, packet_info *pinfo, guint32 size)
+{
+ tvbuff_t *deob_tvb = NULL;
+ guint8 *decrypted_data;
+ const guint8 *ptr;
+ gint reported_len;
+
+ reported_len = tvb_reported_length_remaining(tvb, offset);
+
+ if ((guint32) reported_len > size) {
+ reported_len = size;
+ }
+
+ if (size > (guint32) reported_len) {
+ size = reported_len;
+ }
+
+ ptr = tvb_get_ptr(tvb, offset, size);
+
+ decrypted_data = (guint8 *)wmem_alloc0(pinfo->pool, size);
+ for (guint32 i = 0; i < size; i++) {
+ decrypted_data[i] = ptr[i] ^ 0xA5;
+ }
+
+ deob_tvb = tvb_new_child_real_data(tvb, decrypted_data, size, reported_len);
+
+ return deob_tvb;
+}
+
+/* [MS-OXCRPC] 3.1.4.1.3.1 Version Number Comparison
+*/
+static int
+normalize_version(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, int hf_index, const gchar * str)
+{
+ guint16 version_0, build_major, product_major, product_minor;
+ gchar *value;
+
+ version_0= tvb_get_letohs(tvb, offset);
+ build_major= tvb_get_letohs(tvb, offset + 2);
+
+ if(build_major & 0x8000){
+ product_major = (version_0 & 0xFF00) >> 8;
+ product_minor = (version_0 & 0xFF);
+ build_major = (build_major & 0x7FFF);
+ } else {
+ product_major = version_0;
+ product_minor = 0;
+ }
+
+ value = wmem_strdup_printf( pinfo->pool
+ , "%d.%d.%d.%d"
+ , product_major
+ , product_minor
+ , build_major
+ , tvb_get_letohs(tvb, offset + 4));
+
+ proto_tree_add_string_format( tree
+ , hf_index
+ , tvb
+ , offset
+ , 6
+ , value
+ , "%s: %s"
+ , str
+ , value
+ );
+ return offset + 6;
+}
+
+static int
+mapi_dissect_element_EcDoConnect_rgwClientVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return normalize_version(tvb, pinfo, offset, tree, hf_mapi_mapi_EcDoConnect_rgwClientVersion, "rgwClientVersion");
+}
+
+static int
+mapi_dissect_element_EcDoConnect_rgwServerVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return normalize_version(tvb, pinfo, offset, tree, hf_mapi_mapi_EcDoConnect_rgwServerVersion, "rgwServerVersion");
+}
+
+static int
+mapi_dissect_element_EcDoConnect_rgwBestVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return normalize_version(tvb, pinfo, offset, tree, hf_mapi_mapi_EcDoConnect_rgwBestVersion, "rgwBestVersion");
+}
+
+static int
+mapi_dissect_element_EcDoConnectEx_rgwClientVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return normalize_version(tvb, pinfo, offset, tree, hf_mapi_mapi_EcDoConnectEx_rgwClientVersion, "rgwClientVersion");
+}
+
+static int
+mapi_dissect_element_EcDoConnectEx_rgwServerVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return normalize_version(tvb, pinfo, offset, tree, hf_mapi_mapi_EcDoConnectEx_rgwServerVersion, "rgwServerVersion");
+}
+
+static int
+mapi_dissect_element_EcDoConnectEx_rgwBestVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return normalize_version(tvb, pinfo, offset, tree, hf_mapi_mapi_EcDoConnectEx_rgwBestVersion, "rgwBestVersion");
+}
+
+
+static int
+mapi_dissect_element_EcDoRpc_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return mapi_dissect_struct_request(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_EcDoRpc_mapi_request, 0);
+}
+
+static int
+mapi_dissect_element_EcDoRpc_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return mapi_dissect_struct_response(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_EcDoRpc_mapi_response, 0);
+}
+
+/**
+ * Analyze mapi_request MAPI Handles
+ */
+static int
+mapi_dissect_element_handles_cnf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, int hf_index _U_, guint8 *drep _U_)
+{
+ gint reported_len;
+ gint handles_cnt = 0;
+ guint32 value;
+ proto_tree *tr = NULL;
+
+ reported_len = tvb_reported_length_remaining(tvb, offset);
+
+ handles_cnt = reported_len / 4;
+
+ tr = proto_tree_add_subtree_format(tree, tvb, offset, reported_len, ett_mapi_mapi_request, NULL, "MAPI Handles: %d", handles_cnt);
+
+ for (gint i = 0; i < handles_cnt; i++) {
+ value = tvb_get_letohl(tvb, offset);
+ proto_tree_add_uint_format(tr, hf_index, tvb, offset, 4, value, "[%.2d] MAPI handle: 0x%.8x", i, value);
+ offset += 4;
+ }
+
+ return offset;
+}
+
+int
+mapi_dissect_struct_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int start_offset = offset;
+ tvbuff_t *decrypted_tvb;
+ guint32 size;
+ guint16 pdu_len;
+
+ ALIGN_TO_5_BYTES;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, start_offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_mapi_response);
+ }
+
+ offset = dissect_ndr_uint32(tvb, start_offset, pinfo, tree, di, drep, hf_mapi_mapi_response_mapi_len, &size);
+
+ decrypted_tvb = mapi_deobfuscate(tvb, offset, pinfo, size);
+ if (!decrypted_tvb || tvb_reported_length(decrypted_tvb) != size) {
+ return offset;
+ }
+
+ offset += size;
+ proto_item_set_len(item, offset - start_offset);
+
+ {
+ add_new_data_source(pinfo, decrypted_tvb, "Decrypted MAPI Response");
+
+ tree = proto_tree_add_subtree(tree, decrypted_tvb, 0, size, ett_mapi_mapi_response, NULL, "Decrypted MAPI Response PDU");
+
+ pdu_len = tvb_get_letohs(decrypted_tvb, 0);
+ proto_tree_add_uint(tree, hf_mapi_mapi_response_length, decrypted_tvb, 0, sizeof(guint16), pdu_len);
+ proto_tree_add_item(tree, hf_mapi_decrypted_data, decrypted_tvb, sizeof(guint16), pdu_len - sizeof(guint16), ENC_NA);
+
+ /* analyze contents */
+ mapi_dissect_element_response_rpcResponse(decrypted_tvb, sizeof(guint16), pinfo, tree, di, drep);
+ mapi_dissect_element_handles_cnf(decrypted_tvb, pdu_len, pinfo, tree, di, hf_mapi_mapi_response_handles, drep);
+ }
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_5_BYTES;
+ }
+
+ return offset;
+}
+
+static int
+mapi_dissect_element_AuxInfo_auxHeader(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ guint total_length = tvb_reported_length(tvb);
+
+ if(di->conformant_run){
+ return offset;
+ }
+
+ while(offset >= 0 && (guint)offset < total_length){
+ offset = mapi_dissect_struct_AUX_HEADER(tvb,offset,pinfo,tree,di,drep,di->ptype == PDU_REQ ? hf_mapi_AuxInfo_auxHeader : hf_mapi_AuxInfoOut_auxHeader ,0);
+ }
+
+ return offset;
+}
+
+int
+dissect_EcDoConnectEx_AuxInfoOut(tvbuff_t *tvb _U_, int offset _U_, int length _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ if (length == 0){
+ return offset;
+ }
+ return mapi_dissect_struct_AuxInfo(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_mapi_EcDoConnectEx_rgbAuxOut, 0);
+}
+
+static int
+mapi_dissect_element_EcDoConnectEx_rgbAuxOut_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return dissect_ndr_ucvarray_block(tvb, offset, pinfo, tree, di, drep, &dissect_EcDoConnectEx_AuxInfoOut);
+}
+
+int
+dissect_EcDoRpcExt2_AuxInfoOut(tvbuff_t *tvb _U_, int offset _U_, int length _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ if (length == 0){
+ return offset;
+ }
+ return mapi_dissect_struct_AuxInfo(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_mapi_EcDoRpcExt2_rgbAuxOut, 0);
+}
+
+static int
+mapi_dissect_element_EcDoRpcExt2_rgbAuxOut_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return dissect_ndr_ucvarray_block(tvb, offset, pinfo, tree, di, drep, &dissect_EcDoRpcExt2_AuxInfoOut);
+}
+
+int
+mapi_dissect_struct_AUX_PERF_CLIENTINFO(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+ int old_offset, cur_end_offset;
+ guint16 MachineNameOffset;
+ guint16 UserNameOffset;
+ guint16 ClientIPSize;
+ guint16 ClientIPOffset;
+ guint16 ClientIPMaskSize;
+ guint16 ClientIPMaskOffset;
+ guint16 AdapterNameOffset;
+ guint16 MacAddressSize;
+ guint16 MacAddressOffset;
+
+ di->no_align = TRUE;
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_AUX_PERF_CLIENTINFO);
+ }
+
+ offset = mapi_dissect_element_AUX_PERF_CLIENTINFO_AdapterSpeed(tvb, offset, pinfo, tree, di, drep);
+
+ offset = mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientID(tvb, offset, pinfo, tree, di, drep);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_MachineNameOffset, 0, &MachineNameOffset);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_UserNameOffset, 0, &UserNameOffset);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_ClientIPSize, 0, &ClientIPSize);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_ClientIPOffset, 0, &ClientIPOffset);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_ClientIPMaskSize, 0, &ClientIPMaskSize);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_ClientIPMaskOffset, 0, &ClientIPMaskOffset);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_AdapterNameOffset, 0, &AdapterNameOffset);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_MacAddressSize, 0, &MacAddressSize);
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_MacAddressOffset, 0, &MacAddressOffset);
+
+ offset = mapi_dissect_element_AUX_PERF_CLIENTINFO_ClientMode(tvb, offset, pinfo, tree, di, drep);
+
+ offset = mapi_dissect_element_AUX_PERF_CLIENTINFO_Reserved(tvb, offset, pinfo, tree, di, drep);
+
+ if (MachineNameOffset > 0){
+ cur_end_offset = dissect_null_term_wstring(tvb, MachineNameOffset, pinfo, tree, drep, hf_mapi_AUX_PERF_CLIENTINFO_MachineName , 0);
+ if (cur_end_offset > offset)
+ offset = cur_end_offset;
+ }
+
+ if (UserNameOffset > 0){
+ cur_end_offset = dissect_null_term_wstring(tvb, UserNameOffset, pinfo, tree, drep, hf_mapi_AUX_PERF_CLIENTINFO_UserName , 0);
+ if (cur_end_offset > offset)
+ offset = cur_end_offset;
+ }
+
+ if (ClientIPOffset > 0 && ClientIPSize > 0){
+ if(ClientIPSize == 4){
+ proto_tree_add_item(tree, hf_mapi_AUX_PERF_CLIENTINFO_ClientIPV4, tvb, ClientIPOffset, 4, ENC_NA);
+ } else if(ClientIPSize == 16){
+ proto_tree_add_item(tree, hf_mapi_AUX_PERF_CLIENTINFO_ClientIPV6, tvb, ClientIPOffset, 16, ENC_NA);
+ }
+
+ cur_end_offset = ClientIPOffset + ClientIPSize;
+
+ if (cur_end_offset > offset)
+ offset = cur_end_offset;
+ }
+
+ if (ClientIPMaskOffset > 0 && ClientIPMaskSize > 0){
+ for (int i = 0; i < ClientIPMaskSize; i++)
+ cur_end_offset = PIDL_dissect_uint8(tvb, ClientIPMaskOffset+i, pinfo, tree, di, drep, hf_mapi_AUX_PERF_CLIENTINFO_ClientIPMask, 0);
+
+ if (cur_end_offset > offset)
+ offset = cur_end_offset;
+ }
+
+ if (AdapterNameOffset > 0){
+ cur_end_offset = dissect_null_term_wstring(tvb, AdapterNameOffset, pinfo, tree, drep, hf_mapi_AUX_PERF_CLIENTINFO_AdapterName , 0);
+
+ if (cur_end_offset > offset)
+ offset = cur_end_offset;
+ }
+
+ if (MacAddressOffset > 0 && MacAddressSize > 0){
+ if(MacAddressSize == 6){
+ proto_tree_add_item(tree, hf_mapi_AUX_PERF_CLIENTINFO_MacAddressEther, tvb, MacAddressOffset, 6, ENC_NA);
+ }
+
+ cur_end_offset = MacAddressOffset + MacAddressSize;
+
+ if (cur_end_offset > offset)
+ offset = cur_end_offset;
+ }
+
+ proto_item_set_len(item, offset-old_offset);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+static int
+mapi_dissect_AuxDataVersion1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+
+static int
+mapi_dissect_AuxDataVersion2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+
+static int
+mapi_dissect_AUX_DATA(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 Version, int hf_index _U_, guint8 hdrType)
+{
+ switch(Version) {
+ case AUX_VERSION_1:
+ return mapi_dissect_AuxDataVersion1(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_AUX_DATA_Version1, hdrType);
+ case AUX_VERSION_2:
+ return mapi_dissect_AuxDataVersion2(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_AUX_DATA_Version2, hdrType);
+ default:
+ return offset;
+ }
+}
+
+int
+mapi_dissect_AUX_HEADER_TYPE_ENUM(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint8 Version, int hf_index _U_, guint8 *hdrType)
+{
+ switch(Version) {
+ case AUX_VERSION_1:
+ return PIDL_dissect_uint8_val(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_AUX_HEADER_TYPE_ENUM_Type, 0, hdrType);
+ case AUX_VERSION_2:
+ return PIDL_dissect_uint8_val(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_AUX_HEADER_TYPE_ENUM_Type_2, 0, hdrType);
+ default:
+ return offset;
+ }
+}
+
+int
+mapi_dissect_struct_AUX_HEADER(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ guint16 auxSize = 0;
+ guint8 Version = 0;
+ guint8 hdrType = 0;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+
+ di->no_align = TRUE;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_AUX_HEADER);
+ }
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_AUX_HEADER_Size, 0, &auxSize);
+ offset = mapi_dissect_element_AUX_HEADER_Version(tvb, offset, pinfo, tree, di, drep, &Version);
+ offset = mapi_dissect_AUX_HEADER_TYPE_ENUM(tvb, offset, pinfo, tree, di, drep, Version, hf_mapi_AUX_HEADER_hdrType, &hdrType);
+ offset = mapi_dissect_AUX_DATA(tvb, offset, pinfo, tree, di, drep, Version, hf_mapi_AUX_HEADER_AuxData, hdrType);
+
+ proto_item_set_len(item, auxSize);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+int
+mapi_dissect_struct_EcDoRpcMapiRequest(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ guint8 opnum = 0;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+ int old_offset;
+
+ di->no_align = TRUE;
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_EcDoRpcMapiRequest);
+ }
+
+ offset = PIDL_dissect_uint8_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiRequest_opnum, param, &opnum);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str(opnum, mapi_ROP_OPNUM_vals, "Unknown MAPI operation"));
+
+ offset = mapi_dissect_element_EcDoRpcMapiRequest_u(tvb, offset, pinfo, tree, di, drep, &opnum);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+int
+mapi_dissect_struct_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int start_offset = offset;;
+ tvbuff_t *decrypted_tvb = NULL;
+ guint16 pdu_len;
+ guint32 size;
+
+ ALIGN_TO_5_BYTES;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_mapi_request);
+ }
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_mapi_request_mapi_len, &size);
+
+ decrypted_tvb = mapi_deobfuscate(tvb, offset, pinfo, size);
+ if (!decrypted_tvb || tvb_reported_length(decrypted_tvb) != size) {
+ return offset;
+ }
+
+ offset += size;
+ proto_item_set_len(item, offset - start_offset);
+
+ {
+ add_new_data_source(pinfo, decrypted_tvb, "Decrypted MAPI Request");
+
+ tree = proto_tree_add_subtree(tree, decrypted_tvb, 0, size, ett_mapi_mapi_request, NULL, "Decrypted MAPI Request PDU");
+
+ pdu_len = tvb_get_letohs(decrypted_tvb, 0);
+ proto_tree_add_uint(tree, hf_mapi_mapi_request_length, decrypted_tvb, 0, 2, pdu_len);
+ proto_tree_add_item(tree, hf_mapi_decrypted_data, decrypted_tvb, 2, pdu_len - 2, ENC_NA);
+
+ /* analyze contents */
+ mapi_dissect_element_request_rpcRequest(decrypted_tvb, 2, pinfo, tree, di, drep);
+
+ mapi_dissect_element_handles_cnf(decrypted_tvb, pdu_len, pinfo, tree, di, hf_mapi_mapi_request_handles, drep);
+ }
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_5_BYTES;
+ }
+
+ return offset;
+}
+
+static int
+mapi_dissect_element_EcDoConnect_szUserDN(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data= NULL;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_mapi_mapi_EcDoConnect_szUserDN, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " DN: %s", data);
+
+ return offset;
+}
+
+static int
+mapi_dissect_element_EcDoConnectEx_szUserDN(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ char *data= NULL;
+
+ offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(guint8), hf_mapi_mapi_EcDoConnectEx_szUserDN, FALSE, &data);
+ proto_item_append_text(tree, ": %s", data);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO, " DN: %s", data);
+
+ return offset;
+}
+
+int
+mapi_dissect_struct_EcDoRpcMapiResponse(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ guint8 opnum = 0;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+ int old_offset= offset;
+
+ di->no_align = TRUE;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_EcDoRpcMapiResponse);
+ }
+
+ offset = PIDL_dissect_uint8_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_EcDoRpcMapiResponse_opnum, param, &opnum);
+ col_append_fstr(pinfo->cinfo, COL_INFO, " + %s", val_to_str(opnum, mapi_ROP_OPNUM_vals, "Unknown MAPI operation"));
+
+ offset = mapi_dissect_element_EcDoRpcMapiResponse_u(tvb, offset, pinfo, tree, di, drep, &opnum);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+int
+uint32_size_uint8_buffer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, int hf_size_index, int hf_buffer_index, guint32 param)
+{
+ guint32 size= 0;
+
+ offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, parent_tree, di, drep, hf_size_index, param, &size);
+
+ proto_tree_add_item(parent_tree, hf_buffer_index, tvb, offset, size, ENC_NA);
+
+ return offset+size;
+}
+
+int
+mapi_dissect_struct_SyncUploadStateStreamContinue_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+ int old_offset= offset;
+
+ di->no_align = TRUE;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_SyncUploadStateStreamContinue_req);
+ }
+
+ offset = mapi_dissect_element_SyncUploadStateStreamContinue_req_LogonId(tvb, offset, pinfo, tree, di, drep);
+
+ offset = mapi_dissect_element_SyncUploadStateStreamContinue_req_InputHandleIndex(tvb, offset, pinfo, tree, di, drep);
+
+ offset = uint32_size_uint8_buffer(tvb, offset, pinfo, tree, di, drep, hf_mapi_SyncUploadStateStreamContinue_req_StreamDataSize, hf_mapi_SyncUploadStateStreamContinue_req_StreamDataValue, 0);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+int
+mapi_dissect_struct_SyncImportMessageMove_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+ int old_offset = offset;
+
+ di->no_align = TRUE;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_SyncImportMessageMove_req);
+ }
+
+ offset = mapi_dissect_element_SyncImportMessageMove_req_LogonId(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_SyncImportMessageMove_req_InputHandleIndex(tvb, offset, pinfo, tree, di, drep);
+ offset = uint32_size_uint8_buffer(tvb, offset, pinfo, tree, di, drep, hf_mapi_SyncImportMessageMove_req_SourceFolderIdSize, hf_mapi_SyncImportMessageMove_req_SourceFolderIdValue, 0);
+ offset = uint32_size_uint8_buffer(tvb, offset, pinfo, tree, di, drep, hf_mapi_SyncImportMessageMove_req_SourceMessageIdSize, hf_mapi_SyncImportMessageMove_req_SourceMessageIdValue, 0);
+ offset = uint32_size_uint8_buffer(tvb, offset, pinfo, tree, di, drep, hf_mapi_SyncImportMessageMove_req_PredecessorChangeListSize, hf_mapi_SyncImportMessageMove_req_PredecessorChangeListValue, 0);
+ offset = uint32_size_uint8_buffer(tvb, offset, pinfo, tree, di, drep, hf_mapi_SyncImportMessageMove_req_DestinationMessageIdSize, hf_mapi_SyncImportMessageMove_req_DestinationMessageIdValue, 0);
+ offset = uint32_size_uint8_buffer(tvb, offset, pinfo, tree, di, drep, hf_mapi_SyncImportMessageMove_req_ChangeNumberSize, hf_mapi_SyncImportMessageMove_req_ChangeNumberValue, 0);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+/* IDL: bitmap { */
+/* IDL: PUBLIC = 0x2 , */
+/* IDL: HOME_LOGON = 0x4 , */
+/* IDL: TAKE_OWNERSHIP = 0x8 , */
+/* IDL: ALTERNATE_SERVER = 0x100 , */
+/* IDL: IGNORE_HOME_MDB = 0x200 , */
+/* IDL: NO_MAIL = 0x400 , */
+/* IDL: USE_PER_MDB_REPLID_MAPPING = 0x010000000 , */
+/* IDL: } */
+
+int
+mapi_dissect_bitmap_OpenFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item= NULL;
+ static int * const mapi_OpenFlags_fields[] = {
+ &hf_mapi_OpenFlags_PUBLIC,
+ &hf_mapi_OpenFlags_HOME_LOGON,
+ &hf_mapi_OpenFlags_TAKE_OWNERSHIP,
+ &hf_mapi_OpenFlags_ALTERNATE_SERVER,
+ &hf_mapi_OpenFlags_IGNORE_HOME_MDB,
+ &hf_mapi_OpenFlags_NO_MAIL,
+ &hf_mapi_OpenFlags_USE_PER_MDB_REPLID_MAPPING,
+ NULL
+ };
+ guint32 flags;
+
+ item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+ ett_mapi_OpenFlags, mapi_OpenFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+
+ if (!flags)
+ proto_item_append_text(item, ": (No values set)");
+
+ if (flags & (~0x1000070e)) {
+ flags &= (~0x1000070e);
+ proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+ }
+
+ return offset;
+}
+
+int
+mapi_dissect_bitmap_StoreState(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item;
+ static int * const mapi_StoreState_fields[] = {
+ &hf_mapi_StoreState_STORE_HAS_SEARCHES,
+ NULL
+ };
+ guint32 flags;
+
+ item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
+ ett_mapi_StoreState, mapi_StoreState_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
+
+ if (!flags)
+ proto_item_append_text(item, ": (No values set)");
+
+ if (flags & (~0x10000000)) {
+ flags &= (~0x10000000);
+ proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
+ }
+
+ return offset;
+}
+
+int
+mapi_dissect_struct_Logon_repl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+ int old_offset= offset;
+ guint32 returnValue;
+
+ di->no_align = TRUE;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_Logon_repl);
+ }
+
+ offset = mapi_dissect_element_Logon_repl_OutputHandleIndex(tvb, offset, pinfo, tree, di, drep);
+
+ offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tree, di, drep, hf_mapi_Logon_repl_ReturnValue, 0, &returnValue);
+
+ if (returnValue == 0x0){
+ // 2.2.3.1.2 RopLogon ROP Success Response Buffer
+ guint8 LogonFlags= 0;
+
+ offset = mapi_dissect_enum_LogonFlags(tvb, offset, pinfo, tree, di, drep, hf_mapi_Logon_repl_LogonFlags, &LogonFlags);
+
+ if (LogonFlags == 0x1){
+ // Private
+ offset = mapi_dissect_element_Logon_repl_FolderIds(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_ResponseFlags(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_MailboxGuid(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_ReplId(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_ReplGuid(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_LogonTime(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_GwartTime(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_StoreState(tvb, offset, pinfo, tree, di, drep);
+ } else {
+ // Public
+ offset = mapi_dissect_element_Logon_repl_FolderIds(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_ReplId(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_ReplGuid(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_PerUserGuid(tvb, offset, pinfo, tree, di, drep);
+ }
+ } else if (returnValue == 0x00000478){
+ // 2.2.1.1.2 RopLogon ROP Redirect Response Buffer
+ offset = mapi_dissect_enum_LogonFlags(tvb, offset, pinfo, tree, di, drep, hf_mapi_Logon_repl_LogonFlags, 0);
+ offset = mapi_dissect_element_Logon_repl_ServerNameSize(tvb, offset, pinfo, tree, di, drep);
+ offset = mapi_dissect_element_Logon_repl_ServerName(tvb, offset, pinfo, tree, di, drep);
+ }
+
+ proto_item_set_len(item, offset-old_offset);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+ #define RHEF_Compressed 0x0001
+ #define RHEF_XorMagic 0x0002
+ #define RHEF_Last 0x0004
+
+int dissect_RPC_HEADER_EXT(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, int hf_index, tvbuff_t **ppUncomp_tvb)
+{
+ proto_tree *hTree = NULL;
+ proto_item *rpcItem = NULL;
+ guint16 flags;
+ guint16 compressedSize= 0, uncompressedSize= 0;
+ int old_offset= offset;
+
+ ALIGN_TO_2_BYTES;
+
+ if (parent_tree) {
+ rpcItem = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ hTree = proto_item_add_subtree(rpcItem, ett_mapi_RPC_HEADER_EXT);
+ }
+
+ offset = mapi_dissect_element_RPC_HEADER_EXT_Version(tvb, offset, pinfo, hTree, di, drep);
+
+ proto_item *flagItem;
+ static int * const mapi_RPC_HEADER_EXT_Flags_fields[] = {
+ &hf_mapi_RPC_HEADER_EXT_Flags_RHEF_Compressed,
+ &hf_mapi_RPC_HEADER_EXT_Flags_RHEF_XorMagic,
+ &hf_mapi_RPC_HEADER_EXT_Flags_RHEF_Last,
+ NULL
+ };
+
+ ALIGN_TO_2_BYTES;
+
+ flagItem = proto_tree_add_bitmask_with_flags(hTree, tvb, offset, hf_mapi_RPC_HEADER_EXT_Flags,
+ ett_mapi_RPC_HEADER_EXT_Flags, mapi_RPC_HEADER_EXT_Flags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
+
+ offset = dissect_ndr_uint16(tvb, offset, pinfo, hTree, di, drep, -1, &flags);
+
+ if (!flags)
+ proto_item_append_text(flagItem, ": (No values set)");
+
+ if (flags & (~0x00000007)) {
+ flags &= (~0x00000007);
+ proto_item_append_text(flagItem, "Unknown bitmap value 0x%x", flags);
+ }
+
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, hTree, di, drep, hf_mapi_RPC_HEADER_EXT_Size, 0, &compressedSize);
+ offset = PIDL_dissect_uint16_val(tvb, offset, pinfo, hTree, di, drep, hf_mapi_RPC_HEADER_EXT_SizeActual, 0, &uncompressedSize);
+
+ proto_item_set_len(flagItem, 2);
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_2_BYTES;
+ }
+
+ bool last = RHEF_Last == (flags & RHEF_Last);
+ bool compressed = RHEF_Compressed == (flags & RHEF_Compressed);
+ bool xored = RHEF_XorMagic == (flags & RHEF_XorMagic);
+
+ if (!last){
+ // TODO: Currently we don't support multiple buffers of RPC_HEADER_EXT.
+ return offset;
+ }
+
+ if (compressed && xored){
+ // TODO: Currently we don't support both compressed and Xored
+ return offset;
+ }
+
+ if (compressed){
+ *ppUncomp_tvb= tvb_child_uncompress_lz77(tvb, tvb, offset, compressedSize);
+ } else if (xored){
+ *ppUncomp_tvb= mapi_deobfuscate(tvb, offset, pinfo, uncompressedSize);
+ } else if (!compressed && !xored) {
+ *ppUncomp_tvb = tvb_new_subset_length(tvb, offset, uncompressedSize);
+ } else {
+ return offset;
+ }
+
+ if (!(*ppUncomp_tvb) || tvb_reported_length(*ppUncomp_tvb) != uncompressedSize) {
+ *ppUncomp_tvb= NULL;
+ return offset;
+ }
+
+ offset += compressedSize;
+
+ proto_item_set_len(rpcItem, offset-old_offset);
+
+ return offset;
+}
+
+int
+mapi_dissect_struct_AuxInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset= offset;
+ tvbuff_t *uncomp_tvb = NULL;
+
+ ALIGN_TO_4_BYTES;
+
+ if(di->conformant_run){
+ return offset;
+ }
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_mapi_AuxInfo);
+ }
+
+ if (di->ptype == PDU_REQ){
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_mapi_AuxInfo_auxInSize, NULL);
+ }
+
+ offset = dissect_RPC_HEADER_EXT(tvb, offset, pinfo, tree, di, drep, di->ptype == PDU_REQ ? hf_mapi_AuxInfo_RpcHeaderExtension : hf_mapi_AuxInfoOut_RpcHeaderExtension, &uncomp_tvb);
+
+ if (!uncomp_tvb) {
+ return offset;
+ }
+
+ proto_item_set_len(item, offset-old_offset);
+
+ add_new_data_source(pinfo, uncomp_tvb, "Decrypted MAPI AuxInfo");
+
+ {
+ tree = proto_tree_add_subtree(tree, uncomp_tvb, 0, tvb_reported_length(uncomp_tvb), ett_mapi_connect_request, NULL, "Decrypted MAPI AuxInfo");
+
+ mapi_dissect_element_AuxInfo_auxHeader(uncomp_tvb, 0, pinfo, tree, di, drep);
+ }
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_4_BYTES;
+ }
+
+ return offset;
+}
+
+int
+mapi_dissect_RgbInOut(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, int hf_index)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset= offset;
+ tvbuff_t *uncomp_tvb = NULL;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, di->ptype == PDU_REQ ? ett_mapi_RgbIn : ett_mapi_RgbOut);
+ }
+
+ if (di->ptype == PDU_REQ){
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tree, di, drep, di->ptype == PDU_REQ ? hf_mapi_RgbInSize : hf_mapi_RgbOutSize, NULL);
+ }
+
+ offset = dissect_RPC_HEADER_EXT(tvb, offset, pinfo, tree, di, drep, di->ptype == PDU_REQ ? hf_mapi_RgbIn_RpcHeaderExtension : hf_mapi_RgbOut_RpcHeaderExtension, &uncomp_tvb);
+
+ if (!uncomp_tvb) {
+ return offset;
+ }
+
+ proto_item_set_len(item, offset-old_offset);
+
+ add_new_data_source(pinfo, uncomp_tvb, di->ptype == PDU_REQ ? "Decrypted MAPI ROPIn PDU" : "Decrypted MAPI ROPOut PDU");
+
+ {
+ int uncompressed_offset= 0;
+ guint16 total_length;
+
+ item = proto_tree_add_item(tree, di->ptype == PDU_REQ ? hf_mapi_RgbIn_ropIn : hf_mapi_RgbOut_ropOut, uncomp_tvb, 0, tvb_reported_length(uncomp_tvb), ENC_NA);
+ tree = proto_item_add_subtree(item, di->ptype == PDU_REQ ? ett_mapi_RgbIn : ett_mapi_RgbOut);
+
+ uncompressed_offset = PIDL_dissect_uint16_val(uncomp_tvb, uncompressed_offset, pinfo, tree, di, drep, di->ptype == PDU_REQ ? hf_mapi_ROPInputBuffer_ropSize : hf_mapi_ROPOutputBuffer_ropSize, 0, &total_length);
+
+ while((guint)(uncompressed_offset) < total_length){
+ if (di->ptype == PDU_REQ){
+ uncompressed_offset = mapi_dissect_struct_RopInput(uncomp_tvb, uncompressed_offset,pinfo,tree,di,drep,hf_mapi_ROPInputBuffer_rop,0);
+ } else {
+ uncompressed_offset = mapi_dissect_struct_RopOutput(uncomp_tvb, uncompressed_offset,pinfo,tree,di,drep,hf_mapi_ROPOutputBuffer_rop,0);
+ }
+ }
+ }
+
+ ALIGN_TO_5_BYTES
+
+ return offset;
+}
+
+
+int
+mapi_dissect_struct_RgbIn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, int hf_index, guint32 param _U_)
+{
+ return mapi_dissect_RgbInOut(tvb, offset, pinfo, parent_tree, di, drep, hf_index);
+}
+
+int
+dissect_EcDoRpcExt2_RgbOut(tvbuff_t *tvb _U_, int offset _U_, int length _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ if (length == 0){
+ return offset;
+ }
+ return mapi_dissect_struct_RgbOut(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_mapi_EcDoRpcExt2_rgbOut, 0);
+}
+
+static int
+mapi_dissect_element_EcDoRpcExt2_rgbOut_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return dissect_ndr_ucvarray_block(tvb, offset, pinfo, tree, di, drep, &dissect_EcDoRpcExt2_RgbOut);
+}
+
+int
+dissect_EcDoRpcExt_RgbOut(tvbuff_t *tvb _U_, int offset _U_, int length _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ if (length == 0){
+ return offset;
+ }
+ return mapi_dissect_struct_RgbOut(tvb, offset, pinfo, parent_tree, di, drep, hf_mapi_mapi_EcDoRpcExt_rgbOut, 0);
+}
+
+static int
+mapi_dissect_element_EcDoRpcExt_rgbOut_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return dissect_ndr_ucvarray_block(tvb, offset, pinfo, tree, di, drep, &dissect_EcDoRpcExt_RgbOut);
+}
+
+int
+mapi_dissect_struct_RgbOut(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ return mapi_dissect_RgbInOut(tvb, offset, pinfo, parent_tree, di, drep, hf_index);
+}
+
+CODE END \ No newline at end of file
diff --git a/epan/dissectors/pidl/mapi/mapi.idl b/epan/dissectors/pidl/mapi/mapi.idl
new file mode 100644
index 00000000..2b77f2ca
--- /dev/null
+++ b/epan/dissectors/pidl/mapi/mapi.idl
@@ -0,0 +1,4049 @@
+#include "idl_types.h"
+
+import "nspi.idl";
+
+/*
+ emsmdb interface definitions
+*/
+[ uuid("a4f1db00-ca47-1067-b31f-00dd010662da"),
+ version(0.82),
+ endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]","ncacn_ip_tcp:"),
+ pointer_default(unique),
+ helpstring("MAPI")
+] interface mapi
+{
+#include "mapicodes_enum.h"
+#include "mapitags_enum.h"
+
+/* Property types */
+#define PT_UNSPECIFIED 0x0
+#define PT_NULL 0x1
+#define PT_I2 0x2
+#define PT_SHORT 0x2
+#define PT_LONG 0x3
+#define PT_FLOAT 0x4
+#define PT_DOUBLE 0x5
+#define PT_CURRENCY 0x6
+#define PT_APPTIME 0x7
+#define PT_ERROR 0xa
+#define PT_BOOLEAN 0xb
+#define PT_OBJECT 0xd
+#define PT_I8 0x14
+#define PT_STRING8 0x1e
+#define PT_UNICODE 0x1f
+#define PT_SYSTIME 0x40
+#define PT_CLSID 0x48
+#define PT_SVREID 0xFB
+#define PT_SRESTRICT 0xFD
+#define PT_ACTIONS 0xFE
+#define PT_BINARY 0x102
+
+ typedef struct datablob {
+ uint8 *data;
+ uint8 length;
+ } DATA_BLOB;
+
+ /******************/
+ /* Function: 0x00 */
+ WERROR mapi_EcDoConnect(
+ [out] policy_handle *hBinding,
+ [in,string,charset(DOS)] uint8 szUserDN[],
+ [in] uint32 ulFlags,
+ [in] uint32 ulConMod,
+ [in] uint32 cbLimit,
+ [in] uint32 ulCpid,
+ [in] uint32 ulLcidString,
+ [in] uint32 ulLcidSort,
+ [in] uint32 ulIcxrLink,
+ [in] uint16 usFCanConvertCodePages,
+ [out] uint32 *pcmsPollsMax,
+ [out] uint32 *pcRetry,
+ [out] uint32 *pcmsRetryDelay,
+ [out] uint32 *picxr,
+ [out,unique,ref,string,charset(DOS)] uint8 **szDNPrefix,
+ [out,unique,ref,string,charset(DOS)] uint8 **szDisplayName,
+ [in,string] uint8 rgwClientVersion[6],
+ [out,string] uint8 rgwServerVersion[6],
+ [out,string] uint8 rgwBestVersion[6],
+ [in,out] uint32 *pullTimeStamp
+ );
+
+ /******************/
+ /* Function: 0x01 */
+ WERROR mapi_EcDoDisconnect(
+ [in, out, ref] policy_handle *pcxh
+ );
+
+ /******************/
+ /* Function: 0x02 */
+ typedef [public, enum8bit, flag(NDR_PAHEX)] enum
+ {
+ MAPI_STORE = 0x1,
+ MAPI_ADDRBOOK = 0x2,
+ MAPI_FOLDER = 0x3,
+ MAPI_ABCONT = 0x4,
+ MAPI_MESSAGE = 0x5,
+ MAPI_MAILUSER = 0x6, /* Individual Recipient */
+ MAPI_ATTACH = 0x7,
+ MAPI_DISTLIST = 0x8,
+ MAPI_PROFSECT = 0x9,
+ MAPI_STATUS = 0xA,
+ MAPI_SESSION = 0xB,
+ MAPI_FORMINFO = 0xC
+ } MAPI_OBJTYPE;
+
+ typedef [public, v1_enum, flag(NDR_PAHEX)] enum
+ {
+ RightsNone = 0x00000000,
+ RightsReadItems = 0x00000001,
+ RightsCreateItems = 0x00000002,
+ RightsEditOwn = 0x00000008,
+ RightsDeleteOwn = 0x00000010,
+ RightsEditAll = 0x00000020,
+ RightsDeleteAll = 0x00000040,
+ RightsCreateSubfolders = 0x00000080,
+ RightsFolderOwner = 0x00000100,
+ RightsFolderContact = 0x00000200,
+ RoleNone = 0x00000400,
+ RoleReviewer = 0x00000401,
+ RoleContributor = 0x00000402,
+ RoleNoneditingAuthor = 0x00000413,
+ RoleAuthor = 0x0000041B,
+ RoleEditor = 0x0000047B,
+ RolePublishAuthor = 0x0000049B,
+ RolePublishEditor = 0x000004FB,
+ RightsAll = 0x000005FB,
+ RoleOwner = 0x000007FB
+ } ACLRIGHTS;
+
+ /*
+ EcDoRpc opnums
+ */
+ typedef [public, enum8bit, flag(NDR_PAHEX)] enum
+ {
+ RopNone = 0x00,
+ RopRelease = 0x01,
+ RopOpenFolder = 0x02,
+ RopOpenMessage = 0x03,
+ RopGetHierarchyTable = 0x04,
+ RopGetContentsTable = 0x05,
+ RopCreateMessage = 0x06,
+ RopGetPropertiesSpecific = 0x07,
+ RopGetPropertiesAll = 0x08,
+ RopGetPropertiesList = 0x09,
+ RopSetProperties = 0x0a,
+ RopDeleteProperties = 0x0b,
+ RopSaveChangesMessage = 0x0c,
+ RopRemoveAllRecipients = 0x0d,
+ RopModifyRecipients = 0x0e,
+ RopReadRecipients = 0x0f,
+ RopReloadCachedInformation = 0x10,
+ RopSetMessageReadFlag = 0x11,
+ RopSetColumns = 0x12,
+ RopSortTable = 0x13,
+ RopRestrict = 0x14,
+ RopQueryRows = 0x15,
+ RopGetStatus = 0x16,
+ RopQueryPosition = 0x17,
+ RopSeekRow = 0x18,
+ RopSeekRowBookmark = 0x19,
+ RopSeekRowFractional = 0x1a,
+ RopCreateBookmark = 0x1b,
+ RopCreateFolder = 0x1c,
+ RopDeleteFolder = 0x1d,
+ RopDeleteMessages = 0x1e,
+ RopGetMessageStatus = 0x1f,
+ RopSetMessageStatus = 0x20,
+ RopGetAttachmentTable = 0x21,
+ RopOpenAttachment = 0x22,
+ RopCreateAttachment = 0x23,
+ RopDeleteAttachment = 0x24,
+ RopSaveChangesAttachment = 0x25,
+ RopSetReceiveFolder = 0x26,
+ RopGetReceiveFolder = 0x27,
+ RopSpoolerRules = 0x28,
+ RopRegisterNotification = 0x29,
+ RopNotify = 0x2a,
+ RopOpenStream = 0x2b,
+ RopReadStream = 0x2c,
+ RopWriteStream = 0x2d,
+ RopSeekStream = 0x2e,
+ RopSetStreamSize = 0x2f,
+ RopSetSearchCriteria = 0x30,
+ RopGetSearchCriteria = 0x31,
+ RopSubmitMessage = 0x32,
+ RopMoveCopyMessages = 0x33,
+ RopAbortSubmit = 0x34,
+ RopMoveFolder = 0x35,
+ RopCopyFolder = 0x36,
+ RopQueryColumnsAll = 0x37,
+ RopAbort = 0x38,
+ RopCopyTo = 0x39,
+ RopCopyToStream = 0x3a,
+ RopCloneStream = 0x3b,
+ RopRegisterTableNotification = 0x3c,
+ RopDeregisterTableNotification = 0x3d,
+ RopGetPermissionsTable = 0x3e, /* RopGetACLTable */
+ RopGetRulesTable = 0x3f,
+ RopModifyPermissions = 0x40,
+ RopModifyRules = 0x41,
+ RopGetOwningServers = 0x42,
+ RopLongTermIdFromId = 0x43,
+ RopIdFromLongTermId = 0x44,
+ RopPublicFolderIsGhosted = 0x45,
+ RopOpenEmbeddedMessage = 0x46,
+ RopSetSpooler = 0x47,
+ RopSpoolerLockMessage = 0x48,
+ RopGetAddressTypes = 0x49,
+ RopTransportSend = 0x4a,
+ RopFastTransferSourceCopyMessages = 0x4b, /* NEW */
+ RopFastTransferSourceCopyFolder = 0x4c, /* NEW */
+ RopFastTransferSourceCopyTo = 0x4d, /* NEW */
+ RopFastTransferSourceGetBuffer = 0x4e,
+ RopFindRow = 0x4f,
+ RopProgress = 0x50,
+ RopTransportNewMail = 0x51,
+ RopGetValidAttachments = 0x52,
+ RopFastTransferDestinationConfigure = 0x53, /* NEW */
+ RopFastTransferDestinationPutBuffer = 0x54, /* NEW */
+ RopGetNamesFromPropertyIds = 0x55,
+ RopGetPropertyIdsFromNames = 0x56,
+ RopUpdateDeferredActionMessages = 0x57,
+ RopEmptyFolder = 0x58,
+ RopExpandRow = 0x59,
+ RopCollapseRow = 0x5a,
+ RopLockRegionStream = 0x5b,
+ RopUnlockRegionStream = 0x5c,
+ RopCommitStream = 0x5d,
+ RopGetStreamSize = 0x5e,
+ RopQueryNamedProperties = 0x5f,
+ RopGetPerUserLongTermIds = 0x60,
+ RopGetPerUserGuid = 0x61,
+ RopFlushPerUser = 0x62,
+ RopReadPerUserInformation = 0x63,
+ RopWritePerUserInformation = 0x64, /* NEW */
+ RopCacheCcnRead = 0x65,
+ RopSetReadFlags = 0x66,
+ RopCopyProperties = 0x67,
+ RopGetReceiveFolderTable = 0x68,
+ RopFastTransferSourceCopyProperties = 0x69, /* NEW */
+ RopFastTransferDestinationCopyProperties = 0x6a, /* NEW */
+ RopGetCollapseState = 0x6b,
+ RopSetCollapseState = 0x6c,
+ RopGetTransportFolder = 0x6d,
+ RopPending = 0x6e,
+ RopOptionsData = 0x6f,
+ RopSynchronizationConfigure = 0x70,
+ RopIncrState = 0x71,
+ RopSynchronizationImportMessageChange = 0x72,
+ RopSynchronizationImportHierarchyChange = 0x73,
+ RopSynchronizationImportDeletes = 0x74,
+ RopSynchronizationUploadStateStreamBegin = 0x75,
+ RopSynchronizationUploadStateStreamContinue = 0x76,
+ RopSynchronizationUploadStateStreamEnd = 0x77,
+ RopSynchronizationImportMessageMove = 0x78,
+ RopSetPropertiesNoReplicate = 0x79,
+ RopDeletePropertiesNoReplicate = 0x7a,
+ RopGetStoreState = 0x7b,
+ RopGetRights = 0x7c,
+ RopGetAllPerUserLtids = 0x7d,
+ RopSynchronizationOpenCollector = 0x7e,
+ RopGetLocalReplicaIds = 0x7f,
+ RopSynchronizationImportReadStateChanges = 0x80,
+ RopResetTable = 0x81,
+ RopSynchronizationGetTransferState = 0x82,
+ RopOpenAdvisor = 0x83,
+ RopRegICSNotifs = 0x84,
+ RopOpenCStream = 0x85,
+ RopTellVersion = 0x86, /* NEW */
+ RopOpenPublicFolderByName = 0x87,
+ RopSetSyncNotificationGuid = 0x88,
+ RopFreeBookmark = 0x89,
+ RopWriteAndCommitStream = 0x90,
+ RopHardDeleteMessages = 0x91,
+ RopHardDeleteMessagesAndSubfolders = 0x92,
+ RopSetLocalReplicaMidsetDeleted = 0x93, /* NEW */
+ RopTransportDeliverMessage = 0x94,
+ RopTransportDoneWithMessage = 0x95,
+ RopIdFromLegacyDN = 0x96,
+ RopSetAuthenticatedContext = 0x97,
+ RopCopyToEx = 0x98,
+ RopImportMsgChangePartial = 0x99,
+ RopSetMessageFlags = 0x9a,
+ RopMoveCopyMessagesEx = 0x9b,
+ RopFXSrcGetBufferEx = 0x9c,
+ RopFXDstPutBufferEx = 0x9d,
+ RopTransportDeliverMessage2 = 0x9e,
+ RopCreateMessageEx = 0x9f,
+ RopMoveCopyMessagesEID = 0xA0,
+ RopTransportDupDlvCheck = 0xA1,
+ RopPrereadMessages = 0xA2,
+ RopWriteStreamExtended = 0xA3,
+ RopGetContentsTableExtended = 0xA4,
+ RopStartScope = 0xA5,
+ RopEndScope = 0xA6,
+ RopEchoString = 0xC8,
+ RopEchoInt = 0xC9,
+ RopEchoBinary = 0xCA,
+ RopBackoff = 0xF9, /* NEW */
+ RopExtendedError = 0xFA, /* NEW */
+ RopBookmarkReturned = 0xFB,
+ RopFidReturned = 0xFC,
+ RopHsotReturned = 0xFd,
+ RopLogon = 0xFE,
+ RopBufferTooSmall = 0xFF
+ } ROP_OPNUM;
+
+ typedef [public,noprint,flag(NDR_NOALIGN)] struct {
+ uint16 cb;
+ [flag(NDR_BUFFERS), size_is(cb)] uint8 lpb[];
+ } SBinary_short;
+
+ typedef [public] struct {
+ uint32 cValues;
+ [size_is(cValues)] uint32 lpl[];
+ } mapi_MV_LONG_STRUCT;
+
+ typedef [public] struct {
+ astring lppszA;
+ } mapi_LPSTR;
+
+ typedef [public] struct {
+ uint32 cValues;
+ [size_is(cValues)] mapi_LPSTR strings[];
+ } mapi_SLPSTRArray;
+
+ typedef struct {
+ [flag(STR_NULLTERM)] string lppszW;
+ } mapi_LPWSTR;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] mapi_LPWSTR strings[];
+ } mapi_SPLSTRArrayW;
+
+ typedef [public] struct {
+ uint32 cValues;
+ [size_is(cValues)] SBinary_short bin[];
+ } mapi_SBinaryArray;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] GUID lpguid[];
+ } mapi_SGuidArray;
+
+ /******* part of the no-pointer deep recursion hack *******/
+ typedef [nopull,nopush,noprint,flag(NDR_NOALIGN)] struct {
+ uint8 wrap[0x8000];
+ } mapi_SRestriction_wrap;
+
+ typedef [nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
+ uint8 wrap[0x8000];
+ } mapi_SPropValue_wrap;
+
+ typedef [nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
+ uint8 wrap[0x8000];
+ } mapi_SPropValue_array_wrap;
+ /**********************************************************/
+
+ typedef [enum8bit] enum {
+ ActionType_OP_MOVE = 0x1,
+ ActionType_OP_COPY = 0x2,
+ ActionType_OP_REPLY = 0x3,
+ ActionType_OP_OOF_REPLY = 0x4,
+ ActionType_OP_DEFER_ACTION = 0x5,
+ ActionType_OP_BOUNCE = 0x6,
+ ActionType_OP_FORWARD = 0x7,
+ ActionType_OP_DELEGATE = 0x8,
+ ActionType_OP_TAG = 0x9,
+ ActionType_OP_DELETE = 0xA,
+ ActionType_OP_MARK_AS_READ = 0xB
+ } ActionType;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 FolderInThisStore;
+ SBinary_short StoreEID;
+ SBinary_short FolderEID;
+ } MoveCopy_Action;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper ReplyTemplateFID;
+ hyper ReplyTemplateMID;
+ GUID ReplyTemplateGUID;
+ } ReplyOOF_Action;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 Reserved;
+ mapi_SPropValue_array_wrap PropertyValue;
+ } RecipientBlock;
+
+ typedef [flag(NDR_NOALIGN)] enum {
+ BOUNCE_MESSAGE_TOO_LARGE = 0x0000000d,
+ BOUNCE_MESSAGE_NOT_DISPLAYED = 0x0000001f,
+ BOUNCE_MESSAGE_DENIED = 0x00000026
+ } BounceCode;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 RecipientCount;
+ [size_is(RecipientCount)] RecipientBlock RecipientBlock[];
+ } ForwardDelegate_Action;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(ActionType_OP_MOVE)] MoveCopy_Action MoveAction;
+ [case(ActionType_OP_COPY)] MoveCopy_Action CopyAction;
+ [case(ActionType_OP_REPLY)] ReplyOOF_Action ReplyAction;
+ [case(ActionType_OP_OOF_REPLY)] ReplyOOF_Action ReplyOOFAction;
+ [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING)] DATA_BLOB DeferAction;
+ [case(ActionType_OP_BOUNCE)] BounceCode BounceCode;
+ [case(ActionType_OP_TAG)] mapi_SPropValue_wrap PropValue;
+ [case(ActionType_OP_FORWARD)] ForwardDelegate_Action ForwardAction;
+ [case(ActionType_OP_DELEGATE)] ForwardDelegate_Action DelegateAction;
+ [case(ActionType_OP_DELETE)];
+ [case(ActionType_OP_MARK_AS_READ)];
+ } ActionData;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ ActionType ActionType;
+ uint32 ActionFlavor;
+ uint32 ActionFlags;
+ [switch_is(ActionType)] ActionData ActionDataBuffer;
+ } ActionBlockData;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ [flag(NDR_REMAINING)] [represent_as(uint16)] ActionBlockData ActionBlockData;
+ } ActionBlock;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 count;
+ [size_is(count)] ActionBlock ActionBlock[];
+ } RuleAction;
+
+ typedef struct {
+ [range(0,100000)] uint32 cValues;
+ [size_is(cValues)] uint16 *lpi;
+ } ShortArray_r;
+
+ typedef struct {
+ [range(0,100000)] uint32 cValues;
+ [size_is(cValues)] uint32 *lpl;
+ } LongArray_r;
+
+ typedef struct {
+ [range(0,100000)] uint32 cValues;
+ [size_is(cValues)] Binary_r *lpbin;
+ } BinaryArray_r;
+
+ typedef struct {
+ [range(0,100000)] uint32 cValues;
+ [size_is(cValues)] FILETIME *lpft;
+ } DateTimeArray_r;
+
+ typedef [public] struct {
+ [range(0,2097152)] uint32 cb;
+ [size_is(cb)] uint8 *lpb;
+ } Binary_r;
+
+ typedef [switch_type(uint32)] union {
+ [case(PT_I2)] uint16 i;
+ [case(PT_LONG)] uint32 l;
+ [case(PT_DOUBLE)] dlong dbl;
+ [case(PT_BOOLEAN)] uint8 b;
+ [case(PT_I8)] dlong d;
+ [case(PT_STRING8)][unique][string,charset(DOS)] uint8 *lpszA;
+ [case(PT_BINARY)] Binary_r bin;
+ [case(PT_SVREID)] SBinary_short svreid;
+ [case(PT_UNICODE)][string,charset(UTF16)] uint16 *lpszW;
+ [case(PT_CLSID)] GUID *lpguid;
+ [case(PT_SRESTRICT)] mapi_SRestriction_wrap Restrictions;
+ [case(PT_ACTIONS)] RuleAction RuleAction;
+ [case(PT_SYSTIME)] FILETIME ft;
+ [case(PT_ERROR)] MAPISTATUS err;
+ [case(PT_MV_I2)] ShortArray_r MVi;
+ [case(PT_MV_LONG)] LongArray_r MVl;
+ [case(PT_MV_STRING8)] mapi_SLPSTRArray MVszA;
+ [case(PT_MV_BINARY)] mapi_SBinaryArray MVbin;
+ [case(PT_MV_CLSID)] mapi_SGuidArray MVguid;
+ [case(PT_MV_UNICODE)] mapi_SPLSTRArrayW MVszW;
+ [case(PT_MV_SYSTIME)] DateTimeArray_r MVft;
+ [case(PT_NULL)] uint32 null;
+ [case(PT_OBJECT)] uint32 object;
+ } mapi_SPropValue_CTR;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ MAPITAGS ulPropTag;
+ [switch_is(ulPropTag & 0xFFFF)] mapi_SPropValue_CTR value;
+ } mapi_SPropValue;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ uint16 cValues;
+ [flag(NDR_REMAINING), size_is(cValues)]mapi_SPropValue lpProps[];
+ } mapi_SPropValue_array;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 cValues;
+ [size_is(cValues)] MAPITAGS aulPropTag[];
+ } mapi_SPropTagArray;
+
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ ROW_ADD = 0x1,
+ ROW_MODIFY = 0x2,
+ ROW_REMOVE = 0x4
+ } ulRowFlags;
+
+ /**************************/
+ /* ROP: RopRelease(0x1) */
+ typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } Release_req;
+
+ typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
+ } Release_repl;
+
+ /**************************/
+ /* ROP: RopOpenFolder(0x2) */
+ typedef [enum8bit] enum {
+ OpenModeFlags_Folder = 0x0,
+ OpenModeFlags_SoftDeleted = 0x4
+ } OpenFolder_OpenModeFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ hyper FolderId;
+ OpenFolder_OpenModeFlags OpenModeFlags;
+ } OpenFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ServerCount;
+ uint16 CheapServerCount;
+ [size_is(ServerCount)] astring Servers[];
+ } OpenFolder_Replicas;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x1)] OpenFolder_Replicas Replicas;
+ } IsGhosted;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasRules;
+ boolean8 IsGhosted;
+ [switch_is(IsGhosted)] IsGhosted Ghost;
+ } OpenFolder_Success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] OpenFolder_Success Success;
+ [default];
+ } OpenFolder_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 OutputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] OpenFolder_repl_status repl;
+ } OpenFolder_repl;
+
+ /**************************/
+ /* ROP: RopOpenMessage(0x3) */
+ typedef [enum8bit] enum {
+ StringType_NONE = 0x0,
+ StringType_EMPTY = 0x1,
+ StringType_STRING8 = 0x2,
+ StringType_UNICODE_REDUCED = 0x3,
+ StringType_UNICODE = 0x4
+ } StringType;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x1)];
+ [case(0x2)] astring lpszA;
+ [case(0x3)] astring lpszW_reduced;
+ [case(0x4)] [flag(STR_NULLTERM)] string lpszW;
+ } String;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ StringType StringType;
+ [switch_is(StringType)] String String;
+ } TypedString;
+
+ typedef [enum8bit] enum {
+ ReadOnly = 0x0,
+ ReadWrite = 0x1,
+ Create = 0x3,
+ OpenSoftDelete = 0x4
+ } OpenMessage_OpenModeFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ uint16 CodePageId;
+ hyper FolderId;
+ OpenMessage_OpenModeFlags OpenModeFlags;
+ hyper MessageId;
+ } OpenMessage_req;
+
+ typedef [enum16bit, flag(NDR_PAHEX)] enum {
+ CP_USASCII = 0x04E4,
+ CP_UNICODE = 0x04B0,
+ CP_JAUTODETECT = 0xC6F4,
+ CP_KAUTODETECT = 0xC705,
+ CP_ISO2022JPESC = 0xC42D,
+ CP_ISO2022JPSIO = 0xC42E
+ } CODEPAGEID;
+
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ MAPI_ORIG = 0x0,
+ MAPI_TO = 0x1,
+ MAPI_CC = 0x2,
+ MAPI_BCC = 0x3
+ } ulRecipClass;
+
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ SINGLE_RECIPIENT = 0x0,
+ DISTRIBUTION_LIST = 0x1
+ } addr_type;
+
+ typedef [flag(NDR_NOALIGN)]struct {
+ uint8 organization_length;
+ addr_type addr_type;
+ astring username;
+ } RecipExchange;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } RecipSMTP;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x1)] RecipExchange EXCHANGE;
+ [case(0x3)] RecipSMTP SMTP;
+ [default];
+ } recipient_type;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x400)] astring lpszA;
+ [case(0x600)][flag(STR_NULLTERM)] string lpszW;
+ [default];
+ } recipient_SimpleDisplayName;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x60)];
+ [case(0x260)];
+ [case(0x20)] astring lpszA;
+ [case(0x220)][flag(STR_NULLTERM)] string lpszW;
+ [default];
+ } recipient_TransmittableDisplayName;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x10)] astring lpszA;
+ [case(0x210)][flag(STR_NULLTERM)] string lpszW;
+ [default];
+ } recipient_DisplayName;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x8)] astring lpszA;
+ [case(0x208)][flag(STR_NULLTERM)] string lpszW;
+ [default];
+ } recipient_EmailAddress;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 RecipientFlags;
+ [switch_is(RecipientFlags & 0x7)] recipient_type type;
+ [switch_is(RecipientFlags & 0x208)] recipient_EmailAddress EmailAddress;
+ [switch_is(RecipientFlags & 0x210)] recipient_DisplayName DisplayName;
+ [switch_is(RecipientFlags & 0x600)] recipient_SimpleDisplayName SimpleDisplayName;
+ [switch_is(RecipientFlags & 0x260)] recipient_TransmittableDisplayName TransmittableDisplayName;
+ uint16 prop_count;
+ uint8 layout;
+ [flag(NDR_REMAINING)] DATA_BLOB prop_values;
+ } RecipientRow;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ ulRecipClass RecipClass;
+ CODEPAGEID codepage;
+ uint16 Reserved;
+ [represent_as(uint16)] RecipientRow RecipientRow;
+ } OpenMessage_recipients;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasNamedProperties;
+ TypedString SubjectPrefix;
+ TypedString NormalizedSubject;
+ uint16 RecipientCount;
+ uint16 ColumnCount;
+ mapi_SPropTagArray RecipientColumns;
+ uint8 RowCount;
+ [size_is(RowCount)] OpenMessage_recipients recipients[];
+ } OpenMessage_Success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] OpenMessage_Success Success;
+ [default];
+ } OpenMessage_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 OutputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] OpenMessage_repl_status repl;
+ } OpenMessage_repl;
+
+ /**************************/
+ /* ROP: RopGetHierarchyTable(0x4) */
+ typedef [bitmap8bit] bitmap {
+ TableFlags_Depth = 0x4,
+ TableFlags_DeferredErrors = 0x8,
+ TableFlags_NoNotifications = 0x10,
+ TableFlags_SoftDeletes = 0x20,
+ TableFlags_UseUnicode = 0x40,
+ TableFlags_SuppressNotifications = 0x80
+ } TableFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ TableFlags TableFlags;
+ } GetHierarchyTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 RowCount;
+ } GetHierarchyTable_repl_success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] GetHierarchyTable_repl_success Success;
+ [default];
+ } GetHierarchyTable_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 OutputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] GetHierarchyTable_repl_status repl;
+ } GetHierarchyTable_repl;
+
+ /**************************/
+ /* ROP: RopGetContentsTable(0x5) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ TableFlags TableFlags;
+ } GetContentsTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 RowCount;
+ } GetContentsTable_repl_success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] GetContentsTable_repl_success Success;
+ [default];
+ } GetContentsTable_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 OutputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] GetContentsTable_repl_status repl;
+ } GetContentsTable_repl;
+
+ /**************************/
+ /* ROP: RopCreateMessage(0x6) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ uint16 CodePageId;
+ hyper FolderId;
+ boolean8 AssociatedFlag;
+ } CreateMessage_req;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x1)] hyper MessageId;
+ } CreateMessage_MessageId;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasMessageId;
+ [switch_is(HasMessageId)] CreateMessage_MessageId MessageId;
+ } CreateMessage_repl_success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] CreateMessage_repl_success Success;
+ [default];
+ } CreateMessage_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 OutputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] CreateMessage_repl_status repl;
+ } CreateMessage_repl;
+
+ /*************************/
+ /* ROP: RopGetPropertiesSpecific(0x7) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 PropertySizeLimit;
+ uint16 WantUnicode;
+ uint16 prop_count;
+ [size_is(prop_count)] MAPITAGS properties[];
+ } GetProps_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 layout;
+ [flag(NDR_REMAINING)] DATA_BLOB prop_data;
+ } GetProps_repl_success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] GetProps_repl_success Success;
+ [default];
+ } GetProps_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 InputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] GetProps_repl_status repl;
+ } GetProps_repl;
+
+ /*************************/
+ /* ROP: RopGetPropertiesAll(0x8) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 PropertySizeLimit;
+ uint16 WantUnicode;
+ } GetPropsAll_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ mapi_SPropValue_array properties;
+ } GetPropsAll_repl_success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] GetPropsAll_repl_success Success;
+ [default];
+ } GetPropsAll_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 InputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] GetPropsAll_repl_status repl;
+ } GetPropsAll_repl;
+
+ /*************************/
+ /* ROP: RopGetPropertiesList(0x9) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } GetPropList_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 count;
+ [size_is(count)] MAPITAGS tags[];
+ } GetPropList_repl;
+
+ /*************************/
+ /* ROP: RopSetProperties(0xa) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 index; /* index into array of property tags */
+ MAPITAGS property_tag; /* property for which there was an error */
+ MAPISTATUS error_code; /* the error that occurred for this property */
+ } PropertyProblem;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ [represent_as(uint16)] mapi_SPropValue_array values;
+ } SetProps_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 PropertyProblemCount;
+ [size_is(PropertyProblemCount)] PropertyProblem PropertyProblem[];
+ } SetProps_repl;
+
+ /*************************/
+ /* ROP: RopDeleteProperties(0xb) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 PropertyTagCount;
+ [size_is(PropertyTagCount)] MAPITAGS tags[];
+ } DeleteProps_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 PropertyProblemCount;
+ [size_is(PropertyProblemCount)] PropertyProblem PropertyProblem[];
+ } DeleteProps_repl;
+
+ /*************************/
+ /* ROP: RopSaveChangesMessage(0xc) */
+ typedef [enum8bit] enum {
+ KeepOpenReadOnly = 0x9,
+ KeepOpenReadWrite = 0xA,
+ ForceSave = 0xC
+ } SaveFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 ResponseHandleIndex;
+ uint8 InputHandleIndex;
+ uint8 SaveFlags;
+ } SaveChangesMessage_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 handle_idx;
+ hyper MessageId;
+ } SaveChangesMessage_repl;
+
+ /*************************/
+ /* ROP: RopRemoveAllRecipients(0xd) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint32 ulReserved;
+ } RemoveAllRecipients_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+
+ } RemoveAllRecipients_repl;
+
+ /*************************/
+ /* ROP: RopModifyRecipients(0xe) */
+
+ /*
+ * MODRECIP_NULL and INVALID are not part of the msdn flags
+ * but are added for printing support
+ */
+ typedef [enum8bit,flag(NDR_PAHEX)] enum {
+ MODRECIP_NULL = 0x0,
+ MODRECIP_INVALID = 0x1,
+ MODRECIP_ADD = 0x2,
+ MODRECIP_MODIFY = 0x4,
+ MODRECIP_REMOVE = 0x8
+ } modrecip;
+
+ typedef [flag(NDR_NOALIGN)]struct {
+ uint32 idx;
+ ulRecipClass RecipClass;
+ [represent_as(uint16),flag(NDR_REMAINING)] RecipientRow RecipientRow;
+ } ModifyRecipientRow;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 prop_count;
+ [size_is(prop_count)] MAPITAGS properties[];
+ uint16 cValues;
+ [size_is(cValues)] ModifyRecipientRow RecipientRow[];
+ } ModifyRecipients_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+
+ } ModifyRecipients_repl;
+
+ /*************************/
+ /* ROP: RopReadRecipients(0xf) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint32 RowId;
+ uint16 ulReserved;
+ } ReadRecipients_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 RowId;
+ ulRecipClass RecipientType;
+ uint16 CodePageId;
+ uint16 ulReserved;
+ [represent_as(uint16)] RecipientRow RecipientRow;
+ } ReadRecipientRow;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 RowCount;
+ [size_is(RowCount)] ReadRecipientRow RecipientRows[];
+ } ReadRecipients_repl;
+
+ /*************************/
+ /* ROP: RopReloadCachedInformation(0x10) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ ulRecipClass RecipientType;
+ uint16 CodePageId;
+ uint16 Reserved;
+ [represent_as(uint16),flag(NDR_REMAINING)]RecipientRow RecipientRow;
+ } OpenRecipientRow;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 Reserved;
+ } ReloadCachedInformation_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasNamedProperties;
+ TypedString SubjectPrefix;
+ TypedString NormalizedSubject;
+ uint16 RecipientCount;
+ mapi_SPropTagArray RecipientColumns;
+ uint8 RowCount;
+ [size_is(RowCount)] OpenRecipientRow RecipientRows[];
+ } ReloadCachedInformation_repl;
+
+ /*************************/
+ /* ROP: RopSetMessageReadFlag(0x11) */
+ typedef [bitmap8bit] bitmap {
+ SUPPRESS_RECEIPT = 0x01,
+ CLEAR_READ_FLAG = 0x04,
+ MAPI_DEFERRED_ERRORS = 0x08,
+ GENERATE_RECEIPT_ONLY = 0x10,
+ CLEAR_RN_PENDING = 0x20,
+ CLEAR_NRN_PENDING = 0x40
+ } MSGFLAG_READ;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 ResponseHandleIndex;
+ uint8 InputHandleIndex;
+ MSGFLAG_READ ReadFlags;
+ [flag(NDR_REMAINING)] DATA_BLOB clientdata;
+ } SetMessageReadFlag_req;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x1)] uint8 LogonId;
+ } SetMessageReadFlag_LogonId;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x1)] uint8 ClientData[24];
+ } SetMessageReadFlag_ClientData;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 ReadStatusChanged;
+ [switch_is(ReadStatusChanged)] SetMessageReadFlag_LogonId LogonId;
+ [switch_is(ReadStatusChanged)] SetMessageReadFlag_ClientData ClientData;
+ } SetMessageReadFlag_repl;
+
+ /*************************/
+ /* ROP: RopSetColumns(0x12) */
+ typedef [enum8bit] enum {
+ SetColumns_TBL_SYNC = 0x0,
+ SetColumns_TBL_ASYNC = 0x1
+ } SetColumnsFlags;
+
+ typedef [enum8bit] enum {
+ TBLSTAT_COMPLETE = 0x0,
+ TBLSTAT_SORTING = 0x9,
+ TBLSTAT_SORT_ERROR = 0xA,
+ TBLSTAT_SETTING_COLS = 0xB,
+ TBLSTAT_SETCOL_ERROR = 0xD,
+ TBLSTAT_RESTRICTING = 0xE,
+ TBLSTAT_RESTRICT_ERROR = 0xF
+ } TableStatus;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ SetColumnsFlags SetColumnsFlags;
+ uint16 prop_count;
+ [size_is(prop_count)] MAPITAGS properties[];
+ } SetColumns_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ TableStatus TableStatus;
+ } SetColumns_repl;
+
+ /**************************/
+ /* ROP: RopSortTable(0x13) */
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ TBL_ASYNC = 0x1,
+ TBL_BATCH = 0x2
+ } TBL_FLAGS;
+
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ TABLE_SORT_ASCEND = 0x0,
+ TABLE_SORT_COMBINE = 0x1,
+ TABLE_SORT_DESCEND = 0x2
+ } TABLE_SORT;
+
+ typedef [public, flag(NDR_NOALIGN)] struct _SSortOrder{
+ MAPITAGS ulPropTag;
+ TABLE_SORT ulOrder;
+ } SSortOrder;
+
+ typedef [public, flag(NDR_NOALIGN)] struct _SSortOrderSet {
+ uint16 cSorts;
+ uint16 cCategories;
+ uint16 cExpanded;
+ [size_is(cSorts)] SSortOrder aSort[];
+ } SSortOrderSet;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 SortTableFlags;
+ SSortOrderSet lpSortCriteria;
+ } SortTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ TableStatus TableStatus;
+ } SortTable_repl;
+
+ /**************************/
+ /* ROP: RopRestrict(0x14) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 cRes;
+ [size_is(cRes)] SRestriction_and res[];
+ } mapi_SAndRestriction;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 cRes;
+ [size_is(cRes)] SRestriction_or res[];
+ } mapi_SOrRestriction;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ mapi_SRestriction_wrap res;
+ } mapi_SNotRestriction;
+
+ typedef [noprint, bitmap32bit] bitmap {
+ FL_FULLSTRING = 0x00000,
+ FL_SUBSTRING = 0x00001,
+ FL_PREFIX = 0x00002,
+ FL_IGNORECASE = 0x10000,
+ FL_IGNORENONSPACE = 0x20000,
+ FL_LOOSE = 0x40000
+ } fuzzyLevel;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ fuzzyLevel fuzzy;
+ MAPITAGS ulPropTag;
+ mapi_SPropValue lpProp;
+ } mapi_SContentRestriction;
+
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ BMR_EQZ = 0x0,
+ BMR_NEZ = 0x1
+ } relMBR;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ relMBR relMBR;
+ MAPITAGS ulPropTag;
+ uint32 ulMask;
+ } mapi_SBitmaskRestriction;
+
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ RELOP_LT = 0x0, /* < */
+ RELOP_LE = 0x1, /* <= */
+ RELOP_GT = 0x2, /* > */
+ RELOP_GE = 0x3, /* >= */
+ RELOP_EQ = 0x4, /* == */
+ RELOP_NE = 0x5, /* != */
+ RELOP_RE = 0x6 /* LIKE (Regular expression) */
+ } CompareRelop;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ CompareRelop relop;
+ MAPITAGS ulPropTag;
+ uint32 size;
+ } mapi_SSizeRestriction;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 relop;
+ MAPITAGS ulPropTag;
+ mapi_SPropValue lpProp;
+ } mapi_SPropertyRestriction;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ CompareRelop relop;
+ MAPITAGS ulPropTag1;
+ MAPITAGS ulPropTag2;
+ } mapi_SCompareProps;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ MAPITAGS ulPropTag;
+ } mapi_SExistRestriction;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ MAPITAGS ulSubObject;
+ [size_is(ulSubObject - ulSubObject + 1)] SRestriction_sub res[]; /* nasty hack - generates fake pointer */
+ } mapi_SSubRestriction;
+
+ typedef [nopush,nopull,noprint,nodiscriminant] union {
+ [case(0x0)];
+ [case(0x1)] SRestriction_comment *res;
+ } RestrictionVariable;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 TaggedValuesCount;
+ [size_is(TaggedValuesCount)] mapi_SPropValue TaggedValues[];
+ boolean8 RestrictionPresent;
+ [switch_is(RestrictionPresent)] RestrictionVariable Restriction;
+ } mapi_SCommentRestriction;
+
+ typedef [public,nodiscriminant] union {
+ [case(RES_AND)] mapi_SAndRestriction resAnd;
+ [case(RES_OR)] mapi_SOrRestriction resOr;
+ [case(RES_NOT)] mapi_SNotRestriction resNot;
+ [case(RES_CONTENT)] mapi_SContentRestriction resContent;
+ [case(RES_PROPERTY)] mapi_SPropertyRestriction resProperty;
+ [case(RES_COMPAREPROPS)] mapi_SCompareProps resCompareProps;
+ [case(RES_BITMASK)] mapi_SBitmaskRestriction resBitmask;
+ [case(RES_SIZE)] mapi_SSizeRestriction resSize;
+ [case(RES_EXIST)] mapi_SExistRestriction resExist;
+ [case(RES_SUBRESTRICTION)] mapi_SSubRestriction resSub;
+ [case(RES_COMMENT)] mapi_SCommentRestriction resComment;
+ [default];
+ } mapi_SRestriction_CTR;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ uint8 rt;
+ [switch_is(rt)] mapi_SRestriction_CTR res;
+ } mapi_SRestriction;
+
+ typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction_and {
+ uint8 rt;
+ [switch_is(rt)] mapi_SRestriction_CTR res;
+ } SRestriction_and;
+
+ typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction_or {
+ uint8 rt;
+ [switch_is(rt)] mapi_SRestriction_CTR res;
+ } SRestriction_or;
+
+ typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction_sub {
+ uint8 rt;
+ [switch_is(rt)] mapi_SRestriction_CTR res;
+ } SRestriction_sub;
+
+ typedef [public,flag(NDR_NOALIGN)] struct _mapi_SRestriction_comment {
+ uint8 rt;
+ [switch_is(rt)] mapi_SRestriction_CTR res;
+ } SRestriction_comment;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 handle_idx;
+ [represent_as(uint16)] mapi_SRestriction restrictions;
+ } Restrict_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ TableStatus TableStatus;
+ } Restrict_repl;
+
+ /**************************/
+ /* ROP: RopQueryRows(0x15) */
+ typedef [enum8bit] enum {
+ TBL_ADVANCE = 0x0,
+ TBL_NOADVANCE = 0x1,
+ TBL_ENABLEPACKEDBUFFERS = 0x2
+ } QueryRowsFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ QueryRowsFlags QueryRowsFlags;
+ uint8 ForwardRead;
+ uint16 RowCount;
+ } QueryRows_req;
+
+ typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
+ uint8 Origin;
+ uint16 RowCount;
+ [flag(NDR_REMAINING)]DATA_BLOB RowData;
+ } QueryRows_repl;
+
+ /**************************/
+ /* ROP: RopGetStatus(0x16) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } GetStatus_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ TableStatus TableStatus;
+ } GetStatus_repl;
+
+ /**************************/
+ /* ROP: RopQueryPosition(0x17) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } QueryPosition_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 Numerator;
+ uint32 Denominator;
+ } QueryPosition_repl;
+
+ /**************************/
+ /* ROP: RopSeekRow(0x18) */
+ typedef [enum8bit] enum {
+ BOOKMARK_BEGINNING = 0x0,
+ BOOKMARK_CURRENT = 0x1,
+ BOOKMARK_END = 0x2,
+ BOOKMARK_USER = 0x3
+ } BOOKMARK;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ BOOKMARK origin;
+ int32 offset;
+ boolean8 WantRowMovedCount;
+ } SeekRow_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasSoughtLess;
+ uint32 RowsSought;
+ } SeekRow_repl;
+
+ /**************************/
+ /* ROP: RopSeekRowBookmark(0x19) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ SBinary_short Bookmark;
+ uint32 RowCount;
+ boolean8 WantRowMovedCount;
+ } SeekRowBookmark_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 RowNoLongerVisible;
+ boolean8 HasSoughtLess;
+ uint32 RowsSought;
+ } SeekRowBookmark_repl;
+
+ /**************************/
+ /* ROP: RopSeekRowFractional(0x1a) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint32 ulNumerator;
+ uint32 ulDenominator;
+ } SeekRowApprox_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SeekRowApprox_repl;
+
+ /**************************/
+ /* ROP: RopCreateBookmark(0x1b) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } CreateBookmark_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ SBinary_short bookmark;
+ } CreateBookmark_repl;
+
+ /**************************/
+ /* ROP: RopCreateFolder(0x1c) */
+ typedef [enum8bit] enum {
+ FOLDER_GENERIC = 0x1,
+ FOLDER_SEARCH = 0x2
+ } FOLDER_TYPE;
+
+ typedef [enum8bit] enum {
+ MAPI_FOLDER_ANSI = 0x0,
+ MAPI_FOLDER_UNICODE = 0x1
+ } FOLDER_STRING;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(MAPI_FOLDER_ANSI)] astring lpszA;
+ [case(MAPI_FOLDER_UNICODE)][flag(STR_NULLTERM)] string lpszW;
+ } LPTSTR;
+
+ typedef [enum16bit] enum {
+ NONE = 0x0000,
+ OPEN_IF_EXISTS = 0x0001
+ } FOLDER_FLAGS;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ FOLDER_TYPE ulFolderType;
+ FOLDER_STRING ulType;
+ FOLDER_FLAGS ulFlags;
+ [switch_is(ulType)] LPTSTR FolderName;
+ [switch_is(ulType)] LPTSTR FolderComment;
+ } CreateFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasRules;
+ boolean8 IsGhosted;
+ [switch_is(IsGhosted)] IsGhosted Ghost;
+ } CreateFolder_GhostInfo;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [case(0x1)] CreateFolder_GhostInfo GhostInfo;
+ } CreateFolder_GhostUnion;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper folder_id;
+ boolean8 IsExistingFolder;
+ [switch_is(IsExistingFolder)] CreateFolder_GhostUnion GhostUnion;
+ } CreateFolder_repl;
+
+ /**************************/
+ /* ROP: RopDeleteFolder(0x1d) */
+ typedef [bitmap8bit] bitmap {
+ DEL_MESSAGES = 0x1,
+ DEL_FOLDERS = 0x4,
+ DELETE_HARD_DELETE = 0x10
+ } DeleteFolderFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ DeleteFolderFlags DeleteFolderFlags;
+ hyper FolderId;
+ } DeleteFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } DeleteFolder_repl;
+
+ /**************************/
+ /* ROP: RopDeleteMessages(0x1e) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 WantAsynchronous;
+ boolean8 NotifyNonRead;
+ uint16 cn_ids;
+ [size_is(cn_ids)] hyper message_ids[];
+ } DeleteMessages_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } DeleteMessages_repl;
+
+ /**************************/
+ /* ROP: RopGetMessageStatus(0x1f) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper msgid;
+ } GetMessageStatus_req;
+
+ /**************************/
+ /* ROP: RopSetMessageStatus(0x20) */
+ typedef [bitmap32bit] bitmap {
+ MSGSTATUS_HIGHLIGHTED = 0x1,
+ MSGSTATUS_TAGGED = 0x2,
+ MSGSTATUS_HIDDEN = 0x4,
+ MSGSTATUS_DELMARKED = 0x8,
+ MSGSTATUS_REMOTE_DOWNLOAD = 0x1000,
+ MSGSTATUS_REMOTE_DELETE = 0x2000
+ } ulMessageStatus;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper msgid;
+ uint32 ulNewStatus;
+ ulMessageStatus ulNewStatusMask;
+ } SetMessageStatus_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ ulMessageStatus ulOldStatus;
+ } SetMessageStatus_repl;
+
+ /**************************/
+ /* ROP: RopGetAttachmentTable(0x21) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ TableFlags TableFlags;
+ } GetAttachmentTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } GetAttachmentTable_repl;
+
+ /*************************/
+ /* ROP: RopOpenAttachment(0x22) */
+ typedef [enum8bit] enum {
+ OpenAttachmentFlags_ReadOnly = 0x0,
+ OpenAttachmentFlags_ReadWrite = 0x1,
+ OpenAttachmentFlags_BestAccess = 0x3
+ } OpenAttachmentFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ OpenAttachmentFlags OpenAttachmentFlags;
+ uint32 AttachmentID;
+ } OpenAttach_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } OpenAttach_repl;
+
+ /*************************/
+ /* ROP: RopCreateAttachment(0x23) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ } CreateAttach_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 AttachmentID;
+ } CreateAttach_repl;
+
+ /*************************/
+ /* ROP: RopDeleteAttachment(0x24) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint32 AttachmentID;
+ } DeleteAttach_req;
+
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } DeleteAttach_repl;
+
+ /*************************/
+ /* ROP: RopSaveChangesAttachment(0x25) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 ResponseHandleIndex;
+ uint8 InputHandleIndex;
+ SaveFlags SaveFlags;
+ } SaveChangesAttachment_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SaveChangesAttachment_repl;
+
+ /*************************/
+ /* ROP: RopSetReceiveFolder(0x26) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper fid;
+ astring lpszMessageClass;
+ } SetReceiveFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SetReceiveFolder_repl;
+
+ /*************************/
+ /* ROP: RopGetReceiveFolder(0x27) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ astring MessageClass;
+ } GetReceiveFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper folder_id;
+ astring MessageClass;
+ } GetReceiveFolder_repl;
+
+ /*************************/
+ /* ROP: RopRegisterNotification(0x29) */
+ typedef [enum16bit] enum {
+ fnevCriticalError = 0x0001,
+ fnevNewMail = 0x0002,
+ fnevObjectCreated = 0x0004,
+ fnevObjectDeleted = 0x0008,
+ fnevObjectModified = 0x0010,
+ fnevObjectMoved = 0x0020,
+ fnevObjectCopied = 0x0040,
+ fnevSearchComplete = 0x0080,
+ fnevTableModified = 0x0100,
+ fnevStatusObjectModified = 0x0200,
+ fnevReserved = 0x0400,
+ fnevTbit = 0x1000,
+ fnevUbit = 0x2000,
+ fnevSbit = 0x4000,
+ fnevMbit = 0x8000
+ } NotificationFlags;
+
+ typedef [nodiscriminant,flag(NDR_NOALIGN)] union {
+ [case(0x0)] hyper ID;
+ [case(0x1)];
+ } hyperbool;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ NotificationFlags notificationFlags;
+ uint8 layout;
+ [switch_is(layout)] hyperbool u;
+ } RegisterNotification_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } RegisterNotification_repl;
+
+ /*************************/
+ /* ROP: RopNotify(0x2a) */
+ typedef [bitmap32bit] bitmap {
+ MSGFLAG_READ = 0x1,
+ MSGFLAG_UNMODIFIED = 0x2,
+ MSGFLAG_SUBMIT = 0x4,
+ MSGFLAG_UNSENT = 0x8,
+ MSGFLAG_HASATTACH = 0x10,
+ MSGFLAG_FROMME = 0x20,
+ MSGFLAG_ASSOCIATED = 0x40,
+ MSGFLAG_RESEND = 0x80,
+ MSGFLAG_RN_PENDING = 0x100,
+ MSGFLAG_NRN_PENDING = 0x200
+ } MsgFlags;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] astring lpszA;
+ [case(0x1)][flag(STR_NULLTERM)] string lpszW;
+ } MessageClass;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ GUID DatabaseGUID;
+ uint8 GlobalCounter[6];
+ } GID;
+
+ typedef [enum16bit] enum {
+ TABLE_CHANGED = 0x1,
+ TABLE_ROW_ADDED = 0x3,
+ TABLE_ROW_DELETED = 0x4,
+ TABLE_ROW_MODIFIED = 0x5,
+ TABLE_RESTRICT_DONE = 0x7
+ } RichTableNotificationType;
+
+ /* NewMailNotification: case 0x2 and 0x8002 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ MsgFlags MessageFlags;
+ boolean8 UnicodeFlag;
+ [switch_is(UnicodeFlag)] MessageClass MessageClass;
+ } NewMailNotification;
+
+ /* FolderCreatedNotification: case 0x4 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper ParentFID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ } FolderCreatedNotification;
+
+ /* FolderDeletedNotification: case 0x8 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper ParentFID;
+ } FolderDeletedNotification;
+
+ /* FolderModifiedNotification: case 0x10 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ } FolderModifiedNotification_10;
+
+ /* FolderMoveCopyNotification: case 0x20 and 0x40 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper ParentFID;
+ hyper OldFID;
+ hyper OldParentFID;
+ } FolderMoveCopyNotification;
+
+ /* SearchCompleteNotification: case 0x80 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ } SearchCompleteNotification;
+
+ /* HierarchyTable: case 0x100 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper InsertAfterFID;
+ [represent_as(uint16)] DATA_BLOB Columns;
+ } HierarchyRowAddedNotification;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ } HierarchyRowDeletedNotification;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper InsertAfterFID;
+ [represent_as(uint16)] DATA_BLOB Columns;
+ } HierarchyRowModifiedNotification;
+
+ typedef [nodiscriminant] union {
+ [case(TABLE_ROW_ADDED)] HierarchyRowAddedNotification HierarchyRowAddedNotification;
+ [case(TABLE_ROW_DELETED)] HierarchyRowDeletedNotification HierarchyRowDeletedNotification;
+ [case(TABLE_ROW_MODIFIED)] HierarchyRowModifiedNotification HierarchyRowModifiedNotification;
+ [default];
+ } HierarchyTableChangeUnion;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ RichTableNotificationType TableEvent;
+ [switch_is(TableEvent)] HierarchyTableChangeUnion HierarchyTableChangeUnion;
+ } HierarchyTableChange;
+
+ /* IcsNotification: case 0x200 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HierChanged;
+ uint32 GIDCount;
+ [size_is(GIDCount)] GID GID[];
+ } IcsNotification;
+
+ /* FolderModifiedNotification: case 0x1010 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ uint32 TotalMessageCount;
+ } FolderModifiedNotification_1010;
+
+ /* FolderModifiedNotification: case 0x2010 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ uint32 UnreadMessageCount;
+ } FolderModifiedNotification_2010;
+
+ /* FolderModifiedNotification: case 0x3010 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ uint32 TotalMessageCount;
+ uint32 UnreadMessageCount;
+ } FolderModifiedNotification_3010;
+
+ /* MessageCreatedNotification: case 0x8004 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ } MessageCreatedNotification;
+
+ /* MessageDeletedNotification: case 0x8008 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ } MessageDeletedNotification;
+
+ /* MessageModifiedNotification: case 0x8010 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ } MessageModifiedNotification;
+
+ /* MessageMoveCopyNotification: case 0x8020 and 0x8040 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ hyper OldFID;
+ hyper OldMID;
+ } MessageMoveCopyNotification;
+
+ /* ContentsTableChange: case 0x8100 and 0xc100 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ uint32 Instance;
+ hyper InsertAfterFID;
+ hyper InsertAfterMID;
+ uint32 InsertAfterInstance;
+ [represent_as(uint16)] DATA_BLOB Columns;
+ } ContentsRowAddedNotification;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ uint32 Instance;
+ } ContentsRowDeletedNotification;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ uint32 Instance;
+ hyper InsertAfterFID;
+ hyper InsertAfterMID;
+ uint32 InsertAfterInstance;
+ [represent_as(uint16)] DATA_BLOB Columns;
+ } ContentsRowModifiedNotification;
+
+ typedef [nodiscriminant] union {
+ [case(TABLE_ROW_ADDED)] ContentsRowAddedNotification ContentsRowAddedNotification;
+ [case(TABLE_ROW_DELETED)] ContentsRowDeletedNotification ContentsRowDeletedNotification;
+ [case(TABLE_ROW_MODIFIED)] ContentsRowModifiedNotification ContentsRowModifiedNotification;
+ [default];
+ } ContentsTableChangeUnion;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ RichTableNotificationType TableEvent;
+ [switch_is(TableEvent)] ContentsTableChangeUnion ContentsTableChangeUnion;
+ } ContentsTableChange;
+
+ /* SearchMessageCreatedNotification: case 0xc004 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ hyper SearchFID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ } SearchMessageCreatedNotification;
+
+ /* SearchMessageRemovedNotification: case 0xc008 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ hyper SearchFID;
+ } SearchMessageRemovedNotification;
+
+ /* SearchMessageModifiedNotification: 0xc010 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FID;
+ hyper MID;
+ uint16 TagCount;
+ [size_is(TagCount)] MAPITAGS Tags[];
+ } SearchMessageModifiedNotification;
+
+ typedef [nodiscriminant] union {
+ [case(0x0002)] NewMailNotification NewMailNotification;
+ [case(0x0004)] FolderCreatedNotification FolderCreatedNotification;
+ [case(0x0008)] FolderDeletedNotification FolderDeletedNotification;
+ [case(0x0010)] FolderModifiedNotification_10 FolderModifiedNotification_10;
+ [case(0x0020)] FolderMoveCopyNotification FolderMoveNotification;
+ [case(0x0040)] FolderMoveCopyNotification FolderCopyNotification;
+ [case(0x0080)] SearchCompleteNotification SearchCompleteNotification;
+ [case(0x0100)] HierarchyTableChange HierarchyTableChange;
+ [case(0x0200)] IcsNotification IcsNotification;
+ [case(0x1010)] FolderModifiedNotification_1010 FolderModifiedNotification_1010;
+ [case(0x2010)] FolderModifiedNotification_2010 FolderModifiedNotification_2010;
+ [case(0x3010)] FolderModifiedNotification_3010 FolderModifiedNotification_3010;
+ [case(0x8002)] NewMailNotification NewMessageNotification;
+ [case(0x8004)] MessageCreatedNotification MessageCreatedNotification;
+ [case(0x8008)] MessageDeletedNotification MessageDeletedNotification;
+ [case(0x8010)] MessageModifiedNotification MessageModifiedNotification;
+ [case(0x8020)] MessageMoveCopyNotification MessageMoveNotification;
+ [case(0x8040)] MessageMoveCopyNotification MessageCopyNotification;
+ [case(0x8100)] ContentsTableChange ContentsTableChange;
+ [case(0xc004)] SearchMessageCreatedNotification SearchMessageCreatedNotification;
+ [case(0xc008)] SearchMessageRemovedNotification SearchMessageRemovedNotification;
+ [case(0xc010)] SearchMessageModifiedNotification SearchMessageModifiedNotification;
+ [case(0xc100)] ContentsTableChange SearchTableChange;
+ } NotificationData;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 NotificationHandle;
+ uint8 LogonId;
+ NotificationFlags NotificationType;
+ [switch_is(NotificationType)] NotificationData NotificationData;
+ } Notify_repl;
+
+ /*************************/
+ /* ROP: RopOpenStream(0x2b) */
+ typedef [enum8bit] enum {
+ OpenStream_ReadOnly = 0x0,
+ OpenStream_ReadWrite = 0x1,
+ OpenStream_Create = 0x2,
+ OpenStream_BestAccess = 0x3
+ } OpenStream_OpenModeFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ MAPITAGS PropertyTag;
+ OpenStream_OpenModeFlags OpenModeFlags;
+ } OpenStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 StreamSize;
+ } OpenStream_repl;
+
+ /*************************/
+ /* ROP: RopReadStream(0x2c) */
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0xBABE)] uint32 value;
+ [default];
+ } MaximumByteCount;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 ByteCount;
+ [switch_is(ByteCount)] MaximumByteCount MaximumByteCount;
+ } ReadStream_req;
+
+ typedef [flag(NDR_ALIGN2)] struct {
+ [represent_as(uint16), flag(NDR_REMAINING)] DATA_BLOB data;
+ } ReadStream_repl;
+
+ /*************************/
+ /* ROP: RopWriteStream(0x2d) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ [represent_as(uint16), flag(NDR_REMAINING)] DATA_BLOB data;
+ } WriteStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 WrittenSize;
+ } WriteStream_repl;
+
+ /*************************/
+ /* ROP: RopSeekStream(0x2e) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 Origin;
+ hyper Offset;
+ } SeekStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper NewPosition;
+ } SeekStream_repl;
+
+ /*************************/
+ /* ROP: RopSetStreamSize(0x2f) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper SizeStream;
+ } SetStreamSize_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SetStreamSize_repl;
+
+ /*************************/
+ /* ROP: RopSetSearchCriteria(0x30) */
+ typedef [bitmap32bit, flag(NDR_PAHEX)] bitmap {
+ STOP_SEARCH = 0x00000001,
+ RESTART_SEARCH = 0x00000002,
+ RECURSIVE_SEARCH = 0x00000004,
+ SHALLOW_SEARCH = 0x00000008,
+ FOREGROUND_SEARCH = 0x00000010,
+ BACKGROUND_SEARCH = 0x00000020,
+ CONTENT_INDEXED_SEARCH = 0x00010000,
+ NON_CONTENT_INDEXED_SEARCH = 0x00020000,
+ STATIC_SEARCH = 0x00040000
+ } SearchFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ [represent_as(uint16)] mapi_SRestriction res;
+ uint16 FolderIdCount;
+ [size_is(FolderIdCount)] hyper FolderIds[];
+ SearchFlags SearchFlags;
+ } SetSearchCriteria_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SetSearchCriteria_repl;
+
+ /*************************/
+ /* ROP: RopGetSearchCriteria(0x31) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 UseUnicode;
+ boolean8 IncludeRestriction;
+ boolean8 IncludeFolders;
+ } GetSearchCriteria_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ [represent_as(uint16)] mapi_SRestriction res;
+ uint8 unknown;
+ uint16 FolderIdCount;
+ [size_is(FolderIdCount)] hyper FolderIds[];
+ SearchFlags SearchFlags;
+ } GetSearchCriteria_repl;
+
+ /*************************/
+ /* ROP: RopSubmitMessage(0x32) */
+ typedef [enum8bit] enum {
+ None = 0x0, /* None */
+ PreProcess = 0x1, /* Needs to be preprocessed by the server */
+ NeedsSpooler = 0x2 /* Is to be processed by a client spooler */
+ } SubmitFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ SubmitFlags SubmitFlags;
+ } SubmitMessage_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SubmitMessage_repl;
+
+ /*************************/
+ /* ROP: RopMoveCopyMessages(0x33) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint16 count;
+ [size_is(count)] hyper message_id[];
+ boolean8 WantAsynchronous;
+ boolean8 WantCopy;
+ } MoveCopyMessages_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } MoveCopyMessages_repl;
+
+ /*************************/
+ /* ROP: RopAbortSubmit(0x34) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper FolderId;
+ hyper MessageId;
+ } AbortSubmit_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } AbortSubmit_repl;
+
+ /*************************/
+ /* ROP: RopMoveFolder(0x35) */
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] astring lpszA;
+ [case(0x1)][flag(STR_NULLTERM)] string lpszW;
+ } Folder_name;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ boolean8 WantAsynchronous;
+ boolean8 UseUnicode;
+ hyper FolderId;
+ [switch_is(UseUnicode)] Folder_name NewFolderName;
+ } MoveFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } MoveFolder_repl;
+
+ /*************************/
+ /* ROP: RopCopyFolder(0x36) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ boolean8 WantAsynchronous;
+ boolean8 WantRecursive;
+ boolean8 UseUnicode;
+ hyper FolderId;
+ [switch_is(UseUnicode)] Folder_name NewFolderName;
+ } CopyFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } CopyFolder_repl;
+
+ /*************************/
+ /* ROP: RopQueryColumnsAll(0x37) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } QueryColumnsAll_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 PropertyTagCount;
+ [size_is(PropertyTagCount)] MAPITAGS PropertyTags[];
+ } QueryColumnsAll_repl;
+
+ /*************************/
+ /* ROP: RopAbort(0x38) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } Abort_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ TableStatus TableStatus;
+ } Abort_repl;
+
+ /*************************/
+ /* ROP: RopCopyTo(0x39) */
+ typedef [bitmap8bit] bitmap {
+ CopyFlagsMove = 0x1, /* Move properties */
+ CopyFlagsNoOverwrite = 0x2 /* Do not overwrite existing properties */
+ } CopyFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ boolean8 WantAsynchronous;
+ boolean8 WantSubObjects;
+ CopyFlags CopyFlags;
+ mapi_SPropTagArray ExcludedTags;
+ } CopyTo_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 PropertyProblemCount;
+ [size_is(PropertyProblemCount)] PropertyProblem PropertyProblem[];
+ } CopyTo_repl;
+
+ /*************************/
+ /* ROP: RopCopyToStream(0x3a) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ hyper ByteCount;
+ } CopyToStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper ReadByteCount;
+ hyper WrittenByteCount;
+ } CopyToStream_repl;
+
+ /*************************/
+ /* ROP: RopCloneStream(0x3b) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ } CloneStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } CloneStream_repl;
+
+ /*************************/
+ /* ROP: RopGetPermissionsTable(0x3e) */
+ typedef [bitmap8bit] bitmap {
+ IncludeFreeBusy = 0x02
+ } PermissionsTableFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ PermissionsTableFlags TableFlags;
+ } GetPermissionsTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } GetPermissionsTable_repl;
+
+ /*************************/
+ /* ROP: RopGetRulesTable(0x3f) */
+ typedef [bitmap8bit] bitmap {
+ RulesTableFlags_Unicode = 0x40
+ } RulesTableFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ RulesTableFlags TableFlags;
+ } GetRulesTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } GetRulesTable_repl;
+
+ /*************************/
+ /* ROP: RopModifyPermissions(0x40) */
+ typedef [bitmap8bit] bitmap {
+ ModifyPerms_IncludeFreeBusy = 0x02,
+ ModifyPerms_ReplaceRows = 0x01
+ } ModifyPermissionsFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ ulRowFlags PermissionDataFlags;
+ mapi_SPropValue_array lpProps;
+ } PermissionData;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ ModifyPermissionsFlags ModifyFlags;
+ uint16 ModifyCount;
+ [size_is(ModifyCount)] PermissionData PermissionsData[];
+ } mapi_PermissionsData;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ mapi_PermissionsData rowList;
+ } ModifyPermissions_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } ModifyPermissions_repl;
+
+ /*************************/
+ /* ROP: RopModifyRules(0x41) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ ulRowFlags RuleDataFlags;
+ mapi_SPropValue_array PropertyValues;
+ } RuleData;
+
+ typedef [bitmap8bit] bitmap {
+ ModifyRulesFlag_Replace = 0x01
+ } ModifyRulesFlag;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ ModifyRulesFlag ModifyRulesFlags;
+ uint16 RulesCount;
+ [size_is(RulesCount)] RuleData RulesData[];
+ } ModifyRules_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } ModifyRules_repl;
+
+ /*************************/
+ /* ROP: RopGetOwningServers(0x42) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper FolderId;
+ } GetOwningServers_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 OwningServersCount;
+ uint16 CheapServersCount;
+ [size_is(OwningServersCount)] astring OwningServers[];
+ } GetOwningServers_repl;
+
+ /*************************/
+ /* ROP: RopLongTermIdFromId(0x43) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper Id;
+ } LongTermIdFromId_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ GUID DatabaseGuid;
+ uint8 GlobalCounter[6];
+ uint16 padding;
+ } LongTermId;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ LongTermId LongTermId;
+ } LongTermIdFromId_repl_Success;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)] LongTermIdFromId_repl_Success Success;
+ [default];
+ } LongTermIdFromId_repl_status;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 InputHandleIndex;
+ uint32 ReturnValue;
+ [switch_is(ReturnValue)] LongTermIdFromId_repl_status repl;
+ } LongTermIdFromId_repl;
+
+ /*************************/
+ /* ROP: RopIdFromLongTermId(0x44) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ LongTermId LongTermId;
+ } IdFromLongTermId_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper Id;
+ } IdFromLongTermId_repl;
+
+ /*************************/
+ /* ROP: RopPublicFolderIsGhosted(0x45) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper FolderId;
+ } PublicFolderIsGhosted_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 IsGhosted;
+ [switch_is(IsGhosted)] IsGhosted Ghost;
+ } PublicFolderIsGhosted_repl;
+
+ /*************************/
+ /* ROP: RopOpenEmbeddedMessage(0x46) */
+ typedef [enum8bit, flag(NDR_PAHEX)] enum {
+ MAPI_READONLY = 0x0,
+ MAPI_READWRITE = 0x1,
+ MAPI_CREATE = 0x2
+ } OpenEmbeddedMessage_OpenModeFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ uint16 CodePageId;
+ OpenEmbeddedMessage_OpenModeFlags OpenModeFlags;
+ } OpenEmbeddedMessage_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 Reserved;
+ hyper MessageId;
+ boolean8 HasNamedProperties;
+ TypedString SubjectPrefix;
+ TypedString NormalizedSubject;
+ uint16 RecipientCount;
+ uint16 ColumnCount;
+ [size_is(ColumnCount)] MAPITAGS RecipientColumns[];
+ uint8 RowCount;
+ [size_is(RowCount)] OpenRecipientRow RecipientRows[];
+ } OpenEmbeddedMessage_repl;
+
+ /*************************/
+ /* ROP: RopSetSpooler(0x47) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } SetSpooler_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SetSpooler_repl;
+
+ /*************************/
+ /* ROP: RopSpoolerLockMessage(0x48) */
+ typedef [enum8bit] enum {
+ LockState_1stLock = 0x0,
+ LockState_1stUnlock = 0x1,
+ LockState_1stFinished = 0x2
+ } LockState;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper MessageId;
+ LockState LockState;
+ } SpoolerLockMessage_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SpoolerLockMessage_repl;
+
+ /*************************/
+ /* ROP: RopGetAddressTypes(0x49) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } AddressTypes_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 cValues;
+ uint16 size;
+ [size_is(cValues)] mapi_LPSTR transport[];
+ } AddressTypes_repl;
+
+ /**************************/
+ /* ROP: RopTransportSend(0x4a) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } TransportSend_req;
+
+ typedef [nodiscriminant] union {
+ [case(0x0)] mapi_SPropValue_array lpProps;
+ [case(0x1)];
+ } TransportSend_lpProps;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 NoPropertiesReturned;
+ [switch_is(NoPropertiesReturned)] TransportSend_lpProps properties;
+ } TransportSend_repl;
+
+ /**************************/
+ /* ROP: RopFastTransferSourceCopyMessages(0x4b) */
+ /* TODO */
+
+ /**************************/
+ /* ROP: RopFastTransferSourceCopyFolder(0x4c) */
+ /* TODO */
+
+ /**************************/
+ /* ROP: RopFastTransferSourceCopyTo(0x4d) */
+ /* TODO */
+
+ /**************************/
+ /* ROP: RopFastTransferSourceGetBuffer(0x4e) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 BufferSize;
+ } FastTransferSourceGetBuffer_req;
+
+ typedef [enum16bit] enum {
+ TransferStatus_Error = 0x0,
+ TransferStatus_Partial = 0x1,
+ TransferStatus_NoRoom = 0x2,
+ TransferStatus_Done = 0x3
+ } TransferStatus;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ TransferStatus TransferStatus;
+ uint16 InProgressCount;
+ uint16 TotalStepCount;
+ uint8 Reserved;
+ [flag(NDR_REMAINING)] [represent_as(uint16)] DATA_BLOB TransferBuffer;
+ /*uint16 TransferBufferSize;
+ [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer;*/
+ } FastTransferSourceGetBuffer_repl;
+
+ /**************************/
+ /* ROP: RopFindRow(0x4f) */
+ typedef [enum8bit] enum {
+ DIR_FORWARD = 0x0,
+ DIR_BACKWARD = 0x1
+ } FindRow_ulFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ FindRow_ulFlags ulFlags;
+ [represent_as(uint16)] mapi_SRestriction res;
+ BOOKMARK origin;
+ SBinary_short bookmark;
+ } FindRow_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 RowNoLongerVisible;
+ uint8 HasRowData;
+ [flag(NDR_NOALIGN)] DATA_BLOB row;
+ } FindRow_repl;
+
+ /**************************/
+ /* ROP: RopProgress(0x50) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 WantCancel;
+ } Progress_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 CompletedTaskCount;
+ uint32 TotalTaskCount;
+ } Progress_repl;
+
+ /**************************/
+ /* ROP: RopTransportNewMail(0x51) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper MessageId;
+ hyper FolderId;
+ astring MessageClass;
+ uint32 MessageFlags;
+ } TransportNewMail_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } TransportNewMail_repl;
+
+ /**************************/
+ /* ROP: RopGetValidAttachments(0x52) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } GetValidAttachments_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 AttachmentIdCount;
+ [size_is(AttachmentIdCount)] uint32 AttachmentIdArray[];
+ } GetValidAttachments_repl;
+
+ /**************************/
+ /* ROP: RopFastTransferDestinationConfigure(0x53) */
+ /* TODO */
+
+ /**************************/
+ /* ROP: RopFastTransferDestinationPutBuffer(0x54) */
+ /* TODO */
+
+ /*************************/
+ /* ROP: RopGetNamesFromPropertyIds(0x55) */
+ typedef [enum8bit] enum {
+ MNID_ID = 0,
+ MNID_STRING = 1
+ } ulKind;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 NameSize;
+ [flag(STR_NULLTERM)] string Name;
+ } mapi_name;
+
+ typedef [nodiscriminant] union {
+ [case(MNID_ID)] uint32 lid;
+ [case(MNID_STRING)] mapi_name lpwstr;
+ } Kind;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ ulKind ulKind;
+ GUID lpguid;
+ [switch_is(ulKind)] Kind kind;
+ } MAPINAMEID;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 PropertyIdCount;
+ [size_is(PropertyIdCount)] uint16 PropertyIds[];
+ } GetNamesFromIDs_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 count;
+ [size_is(count)] MAPINAMEID nameid[];
+ } GetNamesFromIDs_repl;
+
+ /*************************/
+ /* ROP: RopGetPropertyIdsFromNames(0x56) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 ulFlags;
+ uint16 count;
+ [size_is(count)] MAPINAMEID nameid[];
+ } GetIDsFromNames_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 count;
+ [size_is(count)] uint16 propID[];
+ } GetIDsFromNames_repl;
+
+ /*************************/
+ /* ROP: RopUpdateDeferredActionMessages(0x57) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ SBinary_short ServerEntryId;
+ SBinary_short ClientEntryId;
+ } UpdateDeferredActionMessages_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } UpdateDeferredActionMessages_repl;
+
+ /*************************/
+ /* ROP: RopEmptyFolder(0x58) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 WantAsynchronous;
+ boolean8 WantDeleteAssociated;
+ } EmptyFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } EmptyFolder_repl;
+
+ /*************************/
+ /* ROP: RopExpandRow(0x59) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint16 MaxRowCount;
+ hyper CategoryId;
+ } ExpandRow_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 ExpandedRowCount;
+ uint16 RowCount;
+ [flag(NDR_REMAINING)]DATA_BLOB RowData;
+ } ExpandRow_repl;
+
+ /*************************/
+ /* ROP: RopCollapseRow(0x5a) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper CategoryId;
+ } CollapseRow_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 CollapsedRowCount;
+ } CollapseRow_repl;
+
+ /*************************/
+ /* ROP: RopLockRegionStream(0x5b) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper RegionOffset;
+ hyper RegionSize;
+ uint32 LockFlags;
+ } LockRegionStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } LockRegionStream_repl;
+
+ /*************************/
+ /* ROP: RopUnlockRegionStream(0x5c) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper RegionOffset;
+ hyper RegionSize;
+ uint32 LockFlags;
+ } UnlockRegionStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } UnlockRegionStream_repl;
+
+ /*************************/
+ /* ROP: RopCommitStream(0x5d) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } CommitStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } CommitStream_repl;
+
+ /*************************/
+ /* ROP: RopGetStreamSize(0x5e) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } GetStreamSize_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 StreamSize;
+ } GetStreamSize_repl;
+
+ /*************************/
+ /* ROP: RopQueryNamedProperties(0x5f) */
+ typedef [bitmap8bit] bitmap {
+ NoStrings = 0x01,
+ NoIds = 0x02
+ } QueryFlags;
+
+ typedef [nodiscriminant] union {
+ [case(0x0)];
+ [case(0x1)] GUID guid;
+ } QueryNamedProperties_guid;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ QueryFlags QueryFlags;
+ boolean8 HasGuid;
+ [switch_is(HasGuid)] QueryNamedProperties_guid PropertyGuid;
+ } QueryNamedProperties_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 IdCount;
+ [size_is(IdCount)] uint16 PropertyIds[];
+ [size_is(IdCount)] MAPINAMEID PropertyNames[];
+ } QueryNamedProperties_repl;
+
+ /*************************/
+ /* ROP: RopGetPerUserLongTermIds(0x60) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ GUID DatabaseGuid;
+ } GetPerUserLongTermIds_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 LongTermIdCount;
+ [size_is(LongTermIdCount)] LongTermId LongTermIds[];
+ } GetPerUserLongTermIds_repl;
+
+ /*************************/
+ /* ROP: RopGetPerUserGuid(0x61) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ LongTermId LongTermId;
+ } GetPerUserGuid_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ GUID DatabaseGuid;
+ } GetPerUserGuid_repl;
+
+ /*************************/
+ /* ROP: RopReadPerUserInformation(0x63) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 FolderId[24];
+ boolean8 WhatIfChanged;
+ uint32 DataOffset;
+ uint16 MaxDataSize;
+ } ReadPerUserInformation_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasFinished;
+ [flag(NDR_REMAINING)] [represent_as(uint16)] DATA_BLOB Data;
+ /*uint16 DataSize;
+ [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data;*/
+ } ReadPerUserInformation_repl;
+
+ /*************************/
+ /* ROP: RopWritePerUserInformation(0x64) */
+ /* TODO */
+
+ /*************************/
+ /* ROP: RopSetReadFlags(0x66) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 WantAsynchronous;
+ MSGFLAG_READ ReadFlags;
+ uint16 MessageIdCount;
+ [size_is(MessageIdCount)] hyper MessageIds[];
+ } SetReadFlags_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } SetReadFlags_repl;
+
+ /*************************/
+ /* ROP: RopCopyProperties(0x67) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ boolean8 WantAsynchronous;
+ CopyFlags CopyFlags;
+ mapi_SPropTagArray PropertyTags;
+ } CopyProperties_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 PropertyProblemCount;
+ [size_is(PropertyProblemCount)] PropertyProblem PropertyProblem[];
+ } CopyProperties_repl;
+
+ /*************************/
+ /* ROP: RopGetReceiveFolderTable(0x68) */
+ typedef struct {
+ uint32 dwLowDateTime;
+ uint32 dwHighDateTime;
+ } FILETIME;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 unknown;
+ hyper fid;
+ astring lpszMessageClass;
+ FILETIME modiftime;
+ } ReceiveFolder;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } GetReceiveFolderTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 cValues;
+ [size_is(cValues)] ReceiveFolder entries[];
+ } GetReceiveFolderTable_repl;
+
+ /*************************/
+ /* ROP: RopFastTransferSourceCopyProperties(0x69) */
+ /* TODO */
+
+ /*************************/
+ /* ROP: RopGetCollapseState(0x6b) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ hyper RowId;
+ uint32 RowInstanceNumber;
+ } GetCollapseState_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ SBinary_short CollapseState;
+ } GetCollapseState_repl;
+
+ /*************************/
+ /* ROP: RopSetCollapseState(0x6c) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ SBinary_short CollapseState;
+ } SetCollapseState_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ SBinary_short bookmark;
+ } SetCollapseState_repl;
+
+ /*************************/
+ /* ROP: RopGetTransportFolder(0x6d) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } GetTransportFolder_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FolderId;
+ } GetTransportFolder_repl;
+
+ /*************************/
+ /* ROP: RopPending(0x6e) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 SessionIndex;
+ } Pending_repl;
+
+ /*************************/
+ /* ROP: RopOptionsData(0x6f) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ astring AddressType;
+ boolean8 WantWin32;
+ } OptionsData_req;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+ [case(0x0)];
+ [default] astring HelpFileName;
+ } OptionsData_HelpFileName;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 Reserved;
+ SBinary_short OptionsInfo;
+ uint16 HelpFileSize;
+ [size_is(HelpFileSize)] uint8 HelpFile[];
+ [switch_is(HelpFileSize)] OptionsData_HelpFileName HelpFileName;
+ } OptionsData_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationConfigure(0x70) */
+ typedef [enum8bit] enum {
+ Contents = 0x1,
+ Hierarchy = 0x2
+ } SynchronizationType;
+
+ typedef [bitmap8bit] bitmap {
+ SendOptions_Unicode = 0x1,
+ SendOptions_ForUpload = 0x3,
+ SendOptions_RecoverMode = 0x4,
+ SendOptions_ForceUnicode = 0x8,
+ SendOptions_Partial = 0x10
+ } SendOptions;
+
+ typedef [bitmap16bit] bitmap {
+ SynchronizationFlag_Unicode = 0x1,
+ SynchronizationFlag_NoDeletions = 0x2,
+ SynchronizationFlag_NoSoftDeletions = 0x4,
+ SynchronizationFlag_ReadState = 0x8,
+ SynchronizationFlag_FAI = 0x10,
+ SynchronizationFlag_Normal = 0x20,
+ SynchronizationFlag_OnlySpecifiedProperties = 0x80,
+ SynchronizationFlag_NoForeignIdentifiers = 0x100,
+ SynchronizationFlag_Reserved = 0x1000,
+ SynchronizationFlag_BestBody = 0x2000,
+ SynchronizationFlag_IgnoreSpecifiedOnFAI = 0x4000,
+ SynchronizationFlag_Progress = 0x8000
+ } SynchronizationFlag;
+
+ typedef [bitmap32bit] bitmap {
+ Eid = 0x00000001,
+ MessageSize = 0x00000002,
+ Cn = 0x00000004,
+ OrderByDeliveryTime = 0x00000008
+ } SynchronizationExtraFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ SynchronizationType SynchronizationType;
+ SendOptions SendOptions;
+ SynchronizationFlag SynchronizationFlag;
+ [flag(NDR_REMAINING)] [represent_as(uint16)] DATA_BLOB RestrictionData;
+ SynchronizationExtraFlags SynchronizationExtraFlags;
+ mapi_SPropTagArray PropertyTags;
+ } SyncConfigure_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncConfigure_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationImportMessageChange(0x72) */
+ typedef [bitmap8bit] bitmap {
+ ImportFlag_Associated = 0x10,
+ ImportFlag_FailOnConflict = 0x40
+ } ImportFlag;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ ImportFlag ImportFlag;
+ mapi_SPropValue_array PropertyValues;
+ } SyncImportMessageChange_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper MessageId;
+ } SyncImportMessageChange_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationImportHierarchyChange(0x73) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ mapi_SPropValue_array HierarchyValues;
+ mapi_SPropValue_array PropertyValues;
+ } SyncImportHierarchyChange_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper FolderId;
+ } SyncImportHierarchyChange_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationImportDeletes(0x74) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 IsHierarchy;
+ mapi_SPropValue_array PropertyValues;
+ } SyncImportDeletes_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncImportDeletes_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationUploadStateStreamBegin(0x75) */
+ typedef [v1_enum,flag(NDR_PAHEX)] enum {
+ PidTagIdsetGiven = 0x40170003,
+ PidTagCnsetSeen = 0x67960102,
+ PidTagCnsetSeenFAI = 0x67da0102,
+ PidTagCnsetRead = 0x67d20102
+ } StateProperty;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ StateProperty StateProperty;
+ uint32 TransferBufferSize;
+ } SyncUploadStateStreamBegin_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncUploadStateStreamBegin_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationUploadStateStreamContinue(0x76) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint32 StreamDataSize;
+ /* Current PIDL in wireshark repo does not support inline arrays. */
+ [flag(NDR_BUFFERS), size_is(cb)]uint8 StreamData[]; /* [StreamDataSize] */
+ } SyncUploadStateStreamContinue_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncUploadStateStreamContinue_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationUploadStateStreamEnd(0x77) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } SyncUploadStateStreamEnd_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncUploadStateStreamEnd_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationImportMessageMove(0x78) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint32 SourceFolderIdSize;
+ [size_is(SourceFolderIdSize)] uint8 SourceFolderId[];
+ uint32 SourceMessageIdSize;
+ [size_is(SourceMessageIdSize)] uint8 SourceMessageId[];
+ uint32 PredecessorChangeListSize;
+ [size_is(PredecessorChangeListSize)] uint8 PredecessorChangeList[];
+ uint32 DestinationMessageIdSize;
+ [size_is(DestinationMessageIdSize)] uint8 DestinationMessageId[];
+ uint32 ChangeNumberSize;
+ [size_is(ChangeNumberSize)] uint8 ChangeNumber[];
+ } SyncImportMessageMove_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ hyper MessageId;
+ } SyncImportMessageMove_repl;
+
+ /*************************/
+ /* ROP: RopSetPropertiesNoReplicate(0x79) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ [represent_as(uint16)] mapi_SPropValue_array values;
+ } SetPropertiesNoReplicate_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 PropertyProblemCount;
+ [size_is(PropertyProblemCount)] PropertyProblem PropertyProblem[];
+ } SetPropertiesNoReplicate_repl;
+
+ /*************************/
+ /* ROP: RopDeletePropertiesNoReplicate(0x7a) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ mapi_SPropTagArray PropertyTags;
+ } DeletePropertiesNoReplicate_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 PropertyProblemCount;
+ [size_is(PropertyProblemCount)] PropertyProblem PropertyProblem[];
+ } DeletePropertiesNoReplicate_repl;
+
+ /*************************/
+ /* ROP: RopGetStoreState(0x7b) */
+ typedef [public,bitmap32bit] bitmap {
+ STORE_HAS_SEARCHES = 0x010000000
+ } StoreState;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } GetStoreState_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ StoreState StoreState;
+ } GetStoreState_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationOpenCollector(0x7e) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ boolean8 IsContentsCollector;
+ } SyncOpenCollector_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncOpenCollector_repl;
+
+ /*************************/
+ /* ROP: RopGetLocalReplicaIds(0x7f) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint32 IdCount;
+ } GetLocalReplicaIds_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ GUID ReplGuid;
+ uint8 GlobalCount[6];
+ } GetLocalReplicaIds_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationImportReadStateChanges(0x80) */
+ #if 0
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 MessageSize;
+ uint8 MessageId[MessageSize];
+ boolean8 MarkAsRead;
+ } MessageReadStates;
+ #endif
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ [flag(NDR_REMAINING)] [represent_as(uint16)] DATA_BLOB MessageStates;
+ } SyncImportReadStateChanges_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncImportReadStateChanges_repl;
+
+ /*************************/
+ /* ROP: RopResetTable(0x81) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ } ResetTable_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } ResetTable_repl;
+
+ /*************************/
+ /* ROP: RopSynchronizationGetTransferState(0x82) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ uint8 OutputHandleIndex;
+ } SyncGetTransferState_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SyncGetTransferState_repl;
+
+ /*************************/
+ /* ROP: RopTellVersion(0x86) */
+ /* TODO */
+
+ /*************************/
+ /* ROP: OpenPublicFolderByName(0x87) - NOT DOCUMENTED */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 handle_idx;
+ asclstr name;
+ } OpenPublicFolderByName_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasRules;
+ boolean8 IsGhosted;
+ [switch_is(IsGhosted)] IsGhosted Ghost;
+ } OpenPublicFolderByName_repl;
+
+ /*************************/
+ /* ROP: SetSyncNotificationGuid(0x88) - NOT DOCUMENTED */
+ typedef [flag(NDR_NOALIGN)] struct {
+ GUID NotificationGuid;
+ } SetSyncNotificationGuid_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } SetSyncNotificationGuid_repl;
+
+ /*************************/
+ /* ROP: RopFreeBookmark(0x89) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ SBinary_short bookmark;
+ } FreeBookmark_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ } FreeBookmark_repl;
+
+ /*************************/
+ /* ROP: RopWriteAndCommitStream(0x90) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ [represent_as(uint16), flag(NDR_REMAINING)] DATA_BLOB data;
+ } WriteAndCommitStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 WrittenSize;
+ } WriteAndCommitStream_repl;
+
+ /**************************/
+ /* ROP: RopHardDeleteMessages(0x91) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 WantAsynchronous;
+ boolean8 NotifyNonRead;
+ uint16 MessageIdCount;
+ [size_is(MessageIdCount)] hyper MessageIds[];
+ } HardDeleteMessages_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } HardDeleteMessages_repl;
+
+ /*************************/
+ /* ROP: RopHardDeleteMessagesAndSubfolders(0x92) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 InputHandleIndex;
+ boolean8 WantAsynchronous;
+ boolean8 WantDeleteAssociated;
+ } HardDeleteMessagesAndSubfolders_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 PartialCompletion;
+ } HardDeleteMessagesAndSubfolders_repl;
+
+ /*************************/
+ /* ROP: RopSetLocalReplicaMidsetDeleted(0x93) */
+ /* TODO */
+
+ /*************************/
+ /* ROP: RopBackoff(0xF9) */
+ /* TODO */
+
+ /*************************/
+ /* ROP: RopLogon(0xFE) */
+ typedef [flag(NDR_NOALIGN),public,enum8bit] enum {
+ LogonPrivate = 0x1,
+ UnderCover = 0x2,
+ Ghosted = 0x4,
+ SpIProcess = 0x8
+ } LogonFlags;
+
+ typedef [flag(NDR_NOALIGN),public,bitmap32bit] bitmap {
+ PUBLIC = 0x2,
+ HOME_LOGON = 0x4,
+ TAKE_OWNERSHIP = 0x8,
+ ALTERNATE_SERVER = 0x100,
+ IGNORE_HOME_MDB = 0x200,
+ NO_MAIL = 0x400,
+ USE_PER_MDB_REPLID_MAPPING = 0x010000000
+ } OpenFlags;
+
+ typedef [enum8bit] enum {
+ DayOfWeek_Sunday = 0x0,
+ DayOfWeek_Monday = 0x1,
+ DayOfWeek_Tuesday = 0x2,
+ DayOfWeek_Wednesday = 0x3,
+ DayOfWeek_Thursday = 0x4,
+ DayOfWeek_Friday = 0x5,
+ DayOfWeek_Saturday = 0x6
+ } DayOfWeek;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 Seconds;
+ uint8 Minutes;
+ uint8 Hour;
+ DayOfWeek DayOfWeek;
+ uint8 Day;
+ uint8 Month;
+ uint16 Year;
+ } LogonTime;
+
+ typedef [bitmap8bit] bitmap {
+ ResponseFlags_Reserved = 0x1,
+ ResponseFlags_OwnerRight = 0x2,
+ ResponseFlags_SendAsRight = 0x4,
+ ResponseFlags_OOF = 0x10
+ } ResponseFlags;
+
+ typedef [nopush,flag(NDR_NOALIGN)] struct {
+ uint8 LogonId;
+ uint8 OutputHandleIndex;
+ LogonFlags LogonFlags;
+ OpenFlags OpenFlags;
+ StoreState StoreState;
+ uint16 EssdnSize;
+ astring EssDN;
+ } Logon_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 OutputHandleIndex;
+ uint32 ReturnValue;
+ /* Success - Private Mailboxes */
+ LogonFlags LogonFlags;
+ hyper FolderIds[13];
+ uint8 ResponseFlags;
+ GUID MailboxGuid;
+ uint16 ReplId;
+ GUID ReplGuid;
+ hyper LogonTime; /* TODO */
+ hyper GwartTime;
+ StoreState StoreState;
+ /* Success - Public mailbox */
+ GUID PerUserGuid;
+ /* Success - Redirect */
+ uint8 ServerNameSize;
+ astring ServerName;
+ } Logon_repl;
+
+ /*************************/
+ /* ROP: RopBufferTooSmall(0xFF) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 SizeNeeded;
+ /* [size_is(SizeNeeded)] RequestBuffers; */
+ } RopBufferTooSmall_repl;
+
+ typedef [public, nodiscriminant] union {
+ [case(RopRelease)] Release_req Release;
+ [case(RopOpenFolder)] OpenFolder_req OpenFolder;
+ [case(RopOpenMessage)] OpenMessage_req OpenMessage;
+ [case(RopGetHierarchyTable)] GetHierarchyTable_req GetHierarchyTable;
+ [case(RopGetContentsTable)] GetContentsTable_req GetContentsTable;
+ [case(RopCreateMessage)] CreateMessage_req CreateMessage;
+ [case(RopGetPropertiesSpecific)] GetProps_req GetProps;
+ [case(RopGetPropertiesAll)] GetPropsAll_req GetPropsAll;
+ [case(RopGetPropertiesList)] GetPropList_req GetPropList;
+ [case(RopSetProperties)] SetProps_req SetProps;
+ [case(RopDeleteProperties)] DeleteProps_req DeleteProps;
+ [case(RopSaveChangesMessage)] SaveChangesMessage_req SaveChangesMessage;
+ [case(RopSetMessageReadFlag)] SetMessageReadFlag_req SetMessageReadFlag;
+ [case(RopReloadCachedInformation)] ReloadCachedInformation_req ReloadCachedInformation;
+ [case(RopSetColumns)] SetColumns_req SetColumns;
+ [case(RopSortTable)] SortTable_req SortTable;
+ [case(RopRestrict)] Restrict_req Restrict;
+ [case(RopRemoveAllRecipients)] RemoveAllRecipients_req RemoveAllRecipients;
+ [case(RopModifyRecipients)] ModifyRecipients_req ModifyRecipients;
+ [case(RopReadRecipients)] ReadRecipients_req ReadRecipients;
+ [case(RopQueryRows)] QueryRows_req QueryRows;
+ [case(RopGetStatus)] GetStatus_req GetStatus;
+ [case(RopQueryPosition)] QueryPosition_req QueryPosition;
+ [case(RopSeekRow)] SeekRow_req SeekRow;
+ [case(RopSeekRowBookmark)] SeekRowBookmark_req SeekRowBookmark;
+ [case(RopSeekRowFractional)] SeekRowApprox_req SeekRowApprox;
+ [case(RopCreateBookmark)] CreateBookmark_req CreateBookmark;
+ [case(RopCreateFolder)] CreateFolder_req CreateFolder;
+ [case(RopDeleteFolder)] DeleteFolder_req DeleteFolder;
+ [case(RopDeleteMessages)] DeleteMessages_req DeleteMessages;
+ [case(RopGetMessageStatus)] GetMessageStatus_req GetMessageStatus;
+ [case(RopSetMessageStatus)] SetMessageStatus_req SetMessageStatus;
+ [case(RopGetAttachmentTable)] GetAttachmentTable_req GetAttachmentTable;
+ [case(RopOpenAttachment)] OpenAttach_req OpenAttach;
+ [case(RopCreateAttachment)] CreateAttach_req CreateAttach;
+ [case(RopDeleteAttachment)] DeleteAttach_req DeleteAttach;
+ [case(RopSaveChangesAttachment)] SaveChangesAttachment_req SaveChangesAttachment;
+ [case(RopSetReceiveFolder)] SetReceiveFolder_req SetReceiveFolder;
+ [case(RopGetReceiveFolder)] GetReceiveFolder_req GetReceiveFolder;
+ [case(RopRegisterNotification)] RegisterNotification_req Advise;
+ [case(RopOpenStream)] OpenStream_req OpenStream;
+ [case(RopReadStream)] ReadStream_req ReadStream;
+ [case(RopWriteStream)] WriteStream_req WriteStream;
+ [case(RopSeekStream)] SeekStream_req SeekStream;
+ [case(RopSetStreamSize)] SetStreamSize_req SetStreamSize;
+ [case(RopSetSearchCriteria)] SetSearchCriteria_req SetSearchCriteria;
+ [case(RopGetSearchCriteria)] GetSearchCriteria_req GetSearchCriteria;
+ [case(RopSubmitMessage)] SubmitMessage_req SubmitMessage;
+ [case(RopMoveCopyMessages)] MoveCopyMessages_req MoveCopyMessages;
+ [case(RopAbortSubmit)] AbortSubmit_req AbortSubmit;
+ [case(RopMoveFolder)] MoveFolder_req MoveFolder;
+ [case(RopCopyFolder)] CopyFolder_req CopyFolder;
+ [case(RopQueryColumnsAll)] QueryColumnsAll_req QueryColumnsAll;
+ [case(RopAbort)] Abort_req Abort;
+ [case(RopCopyTo)] CopyTo_req CopyTo;
+ [case(RopCopyToStream)] CopyToStream_req CopyToStream;
+ [case(RopCloneStream)] CloneStream_req CloneStream;
+ [case(RopGetPermissionsTable)] GetPermissionsTable_req GetPermissionsTable;
+ [case(RopGetRulesTable)] GetRulesTable_req GetRulesTable;
+ [case(RopModifyPermissions)] ModifyPermissions_req ModifyPermissions;
+ [case(RopModifyRules)] ModifyRules_req ModifyRules;
+ [case(RopGetOwningServers)] GetOwningServers_req GetOwningServers;
+ [case(RopLongTermIdFromId)] LongTermIdFromId_req LongTermIdFromId;
+ [case(RopIdFromLongTermId)] IdFromLongTermId_req IdFromLongTermId;
+ [case(RopPublicFolderIsGhosted)] PublicFolderIsGhosted_req PublicFolderIsGhosted;
+ [case(RopOpenEmbeddedMessage)] OpenEmbeddedMessage_req OpenEmbeddedMessage;
+ [case(RopSetSpooler)] SetSpooler_req SetSpooler;
+ [case(RopSpoolerLockMessage)] SpoolerLockMessage_req SpoolerLockMessage;
+ [case(RopGetAddressTypes)] AddressTypes_req AddressTypes;
+ [case(RopTransportSend)] TransportSend_req TransportSend;
+ [case(RopFastTransferSourceGetBuffer)] FastTransferSourceGetBuffer_req FastTransferSourceGetBuffer;
+ [case(RopFindRow)] FindRow_req FindRow;
+ [case(RopProgress)] Progress_req Progress;
+ [case(RopTransportNewMail)] TransportNewMail_req TransportNewMail;
+ [case(RopGetValidAttachments)] GetValidAttachments_req GetValidAttachments;
+ [case(RopGetNamesFromPropertyIds)] GetNamesFromIDs_req GetNamesFromIDs;
+ [case(RopGetPropertyIdsFromNames)] GetIDsFromNames_req GetIDsFromNames;
+ [case(RopUpdateDeferredActionMessages)] UpdateDeferredActionMessages_req UpdateDeferredActionMessages;
+ [case(RopEmptyFolder)] EmptyFolder_req EmptyFolder;
+ [case(RopExpandRow)] ExpandRow_req ExpandRow;
+ [case(RopCollapseRow)] CollapseRow_req CollapseRow;
+ [case(RopLockRegionStream)] LockRegionStream_req LockRegionStream;
+ [case(RopUnlockRegionStream)] UnlockRegionStream_req UnlockRegionStream;
+ [case(RopCommitStream)] CommitStream_req CommitStream;
+ [case(RopGetStreamSize)] GetStreamSize_req GetStreamSize;
+ [case(RopQueryNamedProperties)] QueryNamedProperties_req QueryNamedProperties;
+ [case(RopGetPerUserLongTermIds)] GetPerUserLongTermIds_req GetPerUserLongTermIds;
+ [case(RopGetPerUserGuid)] GetPerUserGuid_req GetPerUserGuid;
+ [case(RopReadPerUserInformation)] ReadPerUserInformation_req ReadPerUserInformation;
+ [case(RopSetReadFlags)] SetReadFlags_req SetReadFlags;
+ [case(RopCopyProperties)] CopyProperties_req CopyProperties;
+ [case(RopGetReceiveFolderTable)] GetReceiveFolderTable_req GetReceiveFolderTable;
+ [case(RopGetCollapseState)] GetCollapseState_req GetCollapseState;
+ [case(RopSetCollapseState)] SetCollapseState_req SetCollapseState;
+ [case(RopGetTransportFolder)] GetTransportFolder_req GetTransportFolder;
+ [case(RopOptionsData)] OptionsData_req OptionsData;
+ [case(RopSynchronizationConfigure)] SyncConfigure_req SyncConfigure;
+ [case(RopSynchronizationImportMessageChange)] SyncImportMessageChange_req SyncImportMessageChange;
+ [case(RopSynchronizationImportHierarchyChange)] SyncImportHierarchyChange_req SyncImportHierarchyChange;
+ [case(RopSynchronizationImportDeletes)] SyncImportDeletes_req SyncImportDeletes;
+ [case(RopSynchronizationUploadStateStreamBegin)] SyncUploadStateStreamBegin_req SyncUploadStateStreamBegin;
+ [case(RopSynchronizationUploadStateStreamContinue)] SyncUploadStateStreamContinue_req SyncUploadStateStreamContinue;
+ [case(RopSynchronizationUploadStateStreamEnd)] SyncUploadStateStreamEnd_req SyncUploadStateStreamEnd;
+ [case(RopSynchronizationImportMessageMove)] SyncImportMessageMove_req SyncImportMessageMove;
+ [case(RopSetPropertiesNoReplicate)] SetPropertiesNoReplicate_req SetPropertiesNoReplicate;
+ [case(RopDeletePropertiesNoReplicate)] DeletePropertiesNoReplicate_req DeletePropertiesNoReplicate;
+ [case(RopGetStoreState)] GetStoreState_req GetStoreState;
+ [case(RopSynchronizationOpenCollector)] SyncOpenCollector_req SyncOpenCollector;
+ [case(RopGetLocalReplicaIds)] GetLocalReplicaIds_req GetLocalReplicaIds;
+ [case(RopSynchronizationImportReadStateChanges)] SyncImportReadStateChanges_req SyncImportReadStateChanges;
+ [case(RopResetTable)] ResetTable_req ResetTable;
+ [case(RopSynchronizationGetTransferState)] SyncGetTransferState_req SyncGetTransferState;
+ [case(RopOpenPublicFolderByName)] OpenPublicFolderByName_req OpenPublicFolderByName;
+ [case(RopSetSyncNotificationGuid)] SetSyncNotificationGuid_req SetSyncNotificationGuid;
+ [case(RopFreeBookmark)] FreeBookmark_req FreeBookmark;
+ [case(RopWriteAndCommitStream)] WriteAndCommitStream_req WriteAndCommitStream;
+ [case(RopHardDeleteMessages)] HardDeleteMessages_req HardDeleteMessages;
+ [case(RopHardDeleteMessagesAndSubfolders)] HardDeleteMessagesAndSubfolders_req HardDeleteMessagesAndSubfolders;
+ [case(RopLogon)] Logon_req Logon;
+ [default];
+ } RopRequest;
+
+ typedef [public, nodiscriminant] union {
+ [case(RopRelease)] Release_repl Release;
+ [case(RopOpenFolder)] OpenFolder_repl OpenFolder;
+ [case(RopOpenMessage)] OpenMessage_repl OpenMessage;
+ [case(RopGetHierarchyTable)] GetHierarchyTable_repl GetHierarchyTable;
+ [case(RopGetContentsTable)] GetContentsTable_repl GetContentsTable;
+ [case(RopCreateMessage)] CreateMessage_repl CreateMessage;
+ [case(RopGetPropertiesSpecific)] GetProps_repl GetProps;
+ [case(RopGetPropertiesAll)] GetPropsAll_repl GetPropsAll;
+ [case(RopGetPropertiesList)] GetPropList_repl GetPropList;
+ [case(RopSetProperties)] SetProps_repl SetProps;
+ [case(RopDeleteProperties)] DeleteProps_repl DeleteProps;
+ [case(RopSaveChangesMessage)] SaveChangesMessage_repl SaveChangesMessage;
+ [case(RopRemoveAllRecipients)] RemoveAllRecipients_repl RemoveAllRecipients;
+ [case(RopModifyRecipients)] ModifyRecipients_repl ModifyRecipients;
+ [case(RopReadRecipients)] ReadRecipients_repl ReadRecipients;
+ [case(RopSetMessageReadFlag)] SetMessageReadFlag_repl SetMessageReadFlag;
+ [case(RopReloadCachedInformation)] ReloadCachedInformation_repl ReloadCachedInformation;
+ [case(RopSetColumns)] SetColumns_repl SetColumns;
+ [case(RopSortTable)] SortTable_repl SortTable;
+ [case(RopRestrict)] Restrict_repl Restrict;
+ [case(RopQueryRows)] QueryRows_repl QueryRows;
+ [case(RopGetStatus)] GetStatus_repl GetStatus;
+ [case(RopQueryPosition)] QueryPosition_repl QueryPosition;
+ [case(RopSeekRow)] SeekRow_repl SeekRow;
+ [case(RopSeekRowBookmark)] SeekRowBookmark_repl SeekRowBookmark;
+ [case(RopSeekRowFractional)] SeekRowApprox_repl SeekRowApprox;
+ [case(RopCreateBookmark)] CreateBookmark_repl CreateBookmark;
+ [case(RopCreateFolder)] CreateFolder_repl CreateFolder;
+ [case(RopDeleteFolder)] DeleteFolder_repl DeleteFolder;
+ [case(RopDeleteMessages)] DeleteMessages_repl DeleteMessages;
+ [case(RopSetMessageStatus)] SetMessageStatus_repl SetMessageStatus;
+ [case(RopGetAttachmentTable)] GetAttachmentTable_repl GetAttachmentTable;
+ [case(RopOpenAttachment)] OpenAttach_repl OpenAttach;
+ [case(RopCreateAttachment)] CreateAttach_repl CreateAttach;
+ [case(RopDeleteAttachment)] DeleteAttach_repl DeleteAttach;
+ [case(RopSaveChangesAttachment)] SaveChangesAttachment_repl SaveChangesAttachment;
+ [case(RopSetReceiveFolder)] SetReceiveFolder_repl SetReceiveFolder;
+ [case(RopGetReceiveFolder)] GetReceiveFolder_repl GetReceiveFolder;
+ [case(RopRegisterNotification)] RegisterNotification_repl Advise;
+ [case(RopNotify)] Notify_repl Notify;
+ [case(RopOpenStream)] OpenStream_repl OpenStream;
+ [case(RopReadStream)] ReadStream_repl ReadStream;
+ [case(RopWriteStream)] WriteStream_repl WriteStream;
+ [case(RopSeekStream)] SeekStream_repl SeekStream;
+ [case(RopSetStreamSize)] SetStreamSize_repl SetStreamSize;
+ [case(RopSetSearchCriteria)] SetSearchCriteria_repl SetSearchCriteria;
+ [case(RopGetSearchCriteria)] GetSearchCriteria_repl GetSearchCriteria;
+ [case(RopSubmitMessage)] SubmitMessage_repl SubmitMessage;
+ [case(RopMoveCopyMessages)] MoveCopyMessages_repl MoveCopyMessages;
+ [case(RopAbortSubmit)] AbortSubmit_repl AbortSubmit;
+ [case(RopMoveFolder)] MoveFolder_repl MoveFolder;
+ [case(RopCopyFolder)] CopyFolder_repl CopyFolder;
+ [case(RopQueryColumnsAll)] QueryColumnsAll_repl QueryColumnsAll;
+ [case(RopAbort)] Abort_repl Abort;
+ [case(RopCopyTo)] CopyTo_repl CopyTo;
+ [case(RopCopyToStream)] CopyToStream_repl CopyToStream;
+ [case(RopCloneStream)] CloneStream_repl CloneStream;
+ [case(RopGetPermissionsTable)] GetPermissionsTable_repl GetPermissionsTable;
+ [case(RopGetRulesTable)] GetRulesTable_repl GetRulesTable;
+ [case(RopModifyPermissions)] ModifyPermissions_repl ModifyPermissions;
+ [case(RopModifyRules)] ModifyRules_repl ModifyRules;
+ [case(RopGetOwningServers)] GetOwningServers_repl GetOwningServers;
+ [case(RopLongTermIdFromId)] LongTermIdFromId_repl LongTermIdFromId;
+ [case(RopIdFromLongTermId)] IdFromLongTermId_repl IdFromLongTermId;
+ [case(RopPublicFolderIsGhosted)] PublicFolderIsGhosted_repl PublicFolderIsGhosted;
+ [case(RopOpenEmbeddedMessage)] OpenEmbeddedMessage_repl OpenEmbeddedMessage;
+ [case(RopSetSpooler)] SetSpooler_repl SetSpooler;
+ [case(RopSpoolerLockMessage)] SpoolerLockMessage_repl SpoolerLockMessage;
+ [case(RopGetAddressTypes)] AddressTypes_repl AddressTypes;
+ [case(RopTransportSend)] TransportSend_repl TransportSend;
+ [case(RopFastTransferSourceGetBuffer)] FastTransferSourceGetBuffer_repl FastTransferSourceGetBuffer;
+ [case(RopFindRow)] FindRow_repl FindRow;
+ [case(RopProgress)] Progress_repl Progress;
+ [case(RopTransportNewMail)] TransportNewMail_repl TransportNewMail;
+ [case(RopGetValidAttachments)] GetValidAttachments_repl GetValidAttachments;
+ [case(RopGetNamesFromPropertyIds)] GetNamesFromIDs_repl GetNamesFromIDs;
+ [case(RopGetPropertyIdsFromNames)] GetIDsFromNames_repl GetIDsFromNames;
+ [case(RopUpdateDeferredActionMessages)] UpdateDeferredActionMessages_repl UpdateDeferredActionMessages;
+ [case(RopEmptyFolder)] EmptyFolder_repl EmptyFolder;
+ [case(RopExpandRow)] ExpandRow_repl ExpandRow;
+ [case(RopCollapseRow)] CollapseRow_repl CollapseRow;
+ [case(RopLockRegionStream)] LockRegionStream_repl LockRegionStream;
+ [case(RopUnlockRegionStream)] UnlockRegionStream_repl UnlockRegionStream;
+ [case(RopCommitStream)] CommitStream_repl CommitStream;
+ [case(RopGetStreamSize)] GetStreamSize_repl GetStreamSize;
+ [case(RopQueryNamedProperties)] QueryNamedProperties_repl QueryNamedProperties;
+ [case(RopGetPerUserLongTermIds)] GetPerUserLongTermIds_repl GetPerUserLongTermIds;
+ [case(RopGetPerUserGuid)] GetPerUserGuid_repl GetPerUserGuid;
+ [case(RopReadPerUserInformation)] ReadPerUserInformation_repl ReadPerUserInformation;
+ [case(RopSetReadFlags)] SetReadFlags_repl SetReadFlags;
+ [case(RopCopyProperties)] CopyProperties_repl CopyProperties;
+ [case(RopGetReceiveFolderTable)] GetReceiveFolderTable_repl GetReceiveFolderTable;
+ [case(RopPending)] Pending_repl Pending;
+ [case(RopGetCollapseState)] GetCollapseState_repl GetCollapseState;
+ [case(RopSetCollapseState)] SetCollapseState_repl SetCollapseState;
+ [case(RopGetTransportFolder)] GetTransportFolder_repl GetTransportFolder;
+ [case(RopOptionsData)] OptionsData_repl OptionsData;
+ [case(RopSynchronizationConfigure)] SyncConfigure_repl SyncConfigure;
+ [case(RopSynchronizationImportMessageChange)] SyncImportMessageChange_repl SyncImportMessageChange;
+ [case(RopSynchronizationImportHierarchyChange)] SyncImportHierarchyChange_repl SyncImportHierarchyChange;
+ [case(RopSynchronizationImportDeletes)] SyncImportDeletes_repl SyncImportDeletes;
+ [case(RopSynchronizationUploadStateStreamBegin)] SyncUploadStateStreamBegin_repl SyncUploadStateStreamBegin;
+ [case(RopSynchronizationUploadStateStreamContinue)] SyncUploadStateStreamContinue_repl SyncUploadStateStreamContinue;
+ [case(RopSynchronizationUploadStateStreamEnd)] SyncUploadStateStreamEnd_repl SyncUploadStateStreamEnd;
+ [case(RopSynchronizationImportMessageMove)] SyncImportMessageMove_repl SyncImportMessageMove;
+ [case(RopSetPropertiesNoReplicate)] SetPropertiesNoReplicate_repl SetPropertiesNoReplicate;
+ [case(RopDeletePropertiesNoReplicate)] DeletePropertiesNoReplicate_repl DeletePropertiesNoReplicate;
+ [case(RopGetStoreState)] GetStoreState_repl GetStoreState;
+ [case(RopSynchronizationOpenCollector)] SyncOpenCollector_repl SyncOpenCollector;
+ [case(RopGetLocalReplicaIds)] GetLocalReplicaIds_repl GetLocalReplicaIds;
+ [case(RopSynchronizationImportReadStateChanges)] SyncImportReadStateChanges_repl SyncImportReadStateChanges;
+ [case(RopResetTable)] ResetTable_repl ResetTable;
+ [case(RopSynchronizationGetTransferState)] SyncGetTransferState_repl SyncGetTransferState;
+ [case(RopOpenPublicFolderByName)] OpenPublicFolderByName_repl OpenPublicFolderByName;
+ [case(RopSetSyncNotificationGuid)] SetSyncNotificationGuid_repl SetSyncNotificationGuid;
+ [case(RopFreeBookmark)] FreeBookmark_repl FreeBookmark;
+ [case(RopWriteAndCommitStream)] WriteAndCommitStream_repl WriteAndCommitStream;
+ [case(RopHardDeleteMessages)] HardDeleteMessages_repl HardDeleteMessages;
+ [case(RopHardDeleteMessagesAndSubfolders)] HardDeleteMessagesAndSubfolders_repl HardDeleteMessagesAndSubfolders;
+ [case(RopLogon)] Logon_repl Logon;
+ [case(RopBufferTooSmall)] RopBufferTooSmall_repl RopBufferTooSmall;
+ [default];
+ } RopReply;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ uint8 opnum;
+ [switch_is(opnum)] RopRequest u;
+ } EcDoRpcMapiRequest;
+
+ typedef [public,nopush,nopull,noprint,flag(NDR_NOALIGN)] struct {
+ uint8 opnum;
+ /*uint8 handle_idx;
+ MAPISTATUS error_code;*/
+ [switch_is(opnum)] RopReply u;
+ } EcDoRpcMapiResponse;
+
+ typedef [public,nopull,nopush,noprint] struct {
+ uint32 mapi_len; /* whole mapi_data length */
+ uint16 length; /* obfuscated: content length */
+ EcDoRpcMapiRequest rpcRequest; /* obfuscated */
+ uint32 *handles; /* obfuscated: handles id array */
+ } mapi_request;
+
+ typedef [public,nopull,nopush,noprint] struct {
+ uint32 mapi_len;
+ uint16 length; /* obfuscated: content length */
+ EcDoRpcMapiResponse rpcResponse; /* obfuscated */
+ uint32 *handles; /* obfuscated: handles id array */
+ } mapi_response;
+
+ WERROR mapi_EcDoRpc(
+ [in,out] policy_handle *handle,
+ [in,out] uint32 *size,
+ [in,out] uint32 *offset,
+ [in] [flag(NDR_REMAINING|NDR_NOALIGN)] mapi_request *mapi_request,
+ [out] [flag(NDR_REMAINING|NDR_NOALIGN)] mapi_response *mapi_response,
+ [in,out] uint16 *length,
+ [in] uint16 max_data
+ );
+
+ /******************/
+ /* Function: 0x03 */
+ WERROR mapi_EcGetMoreRpc(
+ [in, out, ref] policy_handle * pcxh,
+ [in][out] [size_is(usSize), length_is(*pusLength)] uint8 *rgb,
+ [in][out] uint16 *pusLength,
+ [in] uint16 usSize
+ );
+
+ /******************/
+ /* Function: 0x04 */
+ WERROR mapi_EcRRegisterPushNotification(
+ [in, out, ref] policy_handle * handle,
+ [in] uint32 iRpc,
+ [in] [size_is(cbContext)] uint8 *rgbContext,
+ [in] uint16 cbContext,
+ [in] uint32 grbitMapiAdviseBits,
+ [in, size_is(cbCallbackAddress)] uint8 *rgbCallbackAddress,
+ [in] uint16 cbCallbackAddress,
+ [out] uint32 *hNotification
+ );
+
+ /******************/
+ /* Function: 0x05 */
+ WERROR mapi_EcRUnregisterPushNotification(
+ [in,out] policy_handle *handle,
+ [in] uint32 iRpc,
+ [in] uint32 hNotification
+ );
+
+ /******************/
+ /* Function: 0x06 */
+ WERROR mapi_EcDummyRpc(
+ );
+
+ /******************/
+ /* Function: 0x07 */
+ WERROR mapi_EcRGetDCName(
+ [in,out] policy_handle *handle,
+ [in][string] uint8* szDomainName,
+ [out] uint8 rgchDomainController[16]
+ );
+
+ /******************/
+ /* Function: 0x08 */
+ WERROR mapi_EcRNetGetDCName(
+ [in][string] uint8* szDomainName,
+ [out] uint8 rgchDomainController[16]
+ );
+
+ /******************/
+ /* Function: 0x09 */
+ WERROR mapi_EcDoRpcExt(
+ [in, out, ref] policy_handle * pcxh,
+ [in, out] RpcExt2Flags *pulFlags,
+ [in, represent_as(4)] RgbIn *rgbIn,
+ [in] uint32 cbIn,
+ [out, length_is(*pcbOut), size_is(*pcbOut)] RgbOut *rgbOut,
+ [in, out] [range(0x0, 0x40000)] uint32 *pcbOut,
+ [in,represent_as(4),flag(NDR_NOALIGN|NDR_REMAINING)] AuxInfo *rgbAuxIn,
+ [in] uint32 cbAuxIn,
+ [out] uint32 *pulTransTime
+ );
+
+ /******************/
+ /* Function: 0x0a */
+ typedef [enum8bit,flag(NDR_PAHEX)] enum {
+ AUX_TYPE_PERF_REQUESTID = 0x01,
+ AUX_TYPE_PERF_CLIENTINFO = 0x02,
+ AUX_TYPE_PERF_SERVERINFO = 0x03,
+ AUX_TYPE_PERF_SESSIONINFO = 0x04,
+ AUX_TYPE_PERF_DEFMDB_SUCCESS = 0x05,
+ AUX_TYPE_PERF_DEFGC_SUCCESS = 0x06,
+ AUX_TYPE_PERF_MDB_SUCCESS = 0x07,
+ AUX_TYPE_PERF_GC_SUCCESS = 0x08,
+ AUX_TYPE_PERF_FAILURE = 0x09,
+ AUX_TYPE_CLIENT_CONTROL = 0x0A,
+ AUX_TYPE_PERF_PROCESSINFO = 0x0B,
+ AUX_TYPE_PERF_BG_DEFMDB_SUCCESS = 0x0C,
+ AUX_TYPE_PERF_BG_DEFGC_SUCCESS = 0x0D,
+ AUX_TYPE_PERF_BG_MDB_SUCCESS = 0x0E,
+ AUX_TYPE_PERF_BG_GC_SUCCESS = 0x0F,
+ AUX_TYPE_PERF_BG_FAILURE = 0x10,
+ AUX_TYPE_PERF_FG_DEFMDB_SUCCESS = 0x11,
+ AUX_TYPE_PERF_FG_DEFGC_SUCCESS = 0x12,
+ AUX_TYPE_PERF_FG_MDB_SUCCESS = 0x13,
+ AUX_TYPE_PERF_FG_GC_SUCCESS = 0x14,
+ AUX_TYPE_PERF_FG_FAILURE = 0x15,
+ AUX_TYPE_OSVERSIONINFO = 0x16,
+ AUX_TYPE_EXORGINFO = 0x17,
+ AUX_TYPE_PERF_ACCOUNTINFO = 0x18,
+ AUX_TYPE_SERVER_CAPABILITIES = 0x46,
+ AUX_TYPE_ENDPOINT_CAPABILITIES = 0x48,
+ AUX_CLIENT_CONNECTION_INFO = 0x4A,
+ AUX_SERVER_SESSION_INFO = 0x4B,
+ AUX_PROTOCOL_DEVICE_IDENTIFICATION = 0x4E
+ } AUX_HEADER_TYPE_1;
+
+ typedef [enum8bit,flag(NDR_PAHEX)] enum {
+ AUX_TYPE_PERF_SESSIONINFO_2 = 0x04,
+ AUX_TYPE_PERF_MDB_SUCCESS_2 = 0x07,
+ AUX_TYPE_PERF_GC_SUCCESS_2 = 0x08,
+ AUX_TYPE_PERF_FAILURE_2 = 0x09,
+ AUX_TYPE_PERF_PROCESSINFO_2 = 0x0B,
+ AUX_TYPE_PERF_BG_MDB_SUCCESS_2 = 0x0E,
+ AUX_TYPE_PERF_BG_GC_SUCCESS_2 = 0x0F,
+ AUX_TYPE_PERF_BG_FAILURE_2 = 0x10,
+ AUX_TYPE_PERF_FG_MDB_SUCCESS_2 = 0x13,
+ AUX_TYPE_PERF_FG_GC_SUCCESS_2 = 0x14,
+ AUX_TYPE_PERF_FG_FAILURE_2 = 0x15
+ } AUX_HEADER_TYPE_2;
+
+ typedef [public,enum8bit,flag(NDR_PAHEX)] enum {
+ AUX_VERSION_1 = 0x1,
+ AUX_VERSION_2 = 0x2
+ } AUX_VERSION;
+
+ typedef [switch_type(uint8)] union {
+ [case(AUX_VERSION_1)] AUX_HEADER_TYPE_1 Type;
+ [case(AUX_VERSION_2)] AUX_HEADER_TYPE_2 Type_2;
+ [default];
+ } AUX_HEADER_TYPE_ENUM;
+
+ /*************************/
+ /* AUX_HEADER case (0x1) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 SessionID;
+ uint16 RequestID;
+ } AUX_PERF_REQUESTID;
+
+ /*************************/
+ /* AUX_HEADER case (0x2) */
+ typedef [public,enum16bit, flag(NDR_PAHEX)] enum {
+ CLIENTMODE_UNKNOWN = 0x0,
+ CLIENTMODE_CLASSIC = 0x1,
+ CLIENTMODE_CACHED = 0x2
+ } ClientMode;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ uint32 AdapterSpeed;
+ uint16 ClientID;
+ uint16 MachineNameOffset;
+ uint16 UserNameOffset;
+ uint16 ClientIPSize;
+ uint16 ClientIPOffset;
+ uint16 ClientIPMaskSize;
+ uint16 ClientIPMaskOffset;
+ uint16 AdapterNameOffset;
+ uint16 MacAddressSize;
+ uint16 MacAddressOffset;
+ ClientMode ClientMode;
+ uint16 Reserved;
+ nstring MachineName;
+ nstring UserName;
+ uint8 ClientIP[0];
+ uint8 ClientIPMask[0];
+ nstring AdapterName;
+ uint8 MacAddress[0];
+ } AUX_PERF_CLIENTINFO;
+
+ /*************************/
+ /* AUX_HEADER case (0x3) */
+ typedef [enum16bit,flag(NDR_PAHEX)] enum {
+ SERVERTYPE_UNKNOWN = 0x0,
+ SERVERTYPE_PRIVATE = 0x1,
+ SERVERTYPE_PUBLIC = 0x2,
+ SERVERTYPE_DIRECTORY = 0x3,
+ SERVERTYPE_REFERRAL = 0x4
+ } SERVERINFO_ServerType;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ServerID;
+ SERVERINFO_ServerType ServerType;
+ uint16 ServerDNOffset;
+ uint16 ServerNameOffset;
+ nstring ServerDN;
+ nstring ServerName;
+ } AUX_PERF_SERVERINFO;
+
+ /*************************/
+ /* AUX_HEADER case (0x4) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 SessionID;
+ uint16 Reserved;
+ GUID SessionGuid;
+ } AUX_PERF_SESSIONINFO;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 SessionID;
+ uint16 Reserved;
+ GUID SessionGuid;
+ uint32 ConnectionID;
+ } AUX_PERF_SESSIONINFO_V2;
+
+ /**************************/
+ /* AUX_HEADER case (0x5) */
+ /* AUX_HEADER case (0xC) */
+ /* AUX_HEADER case (0x11) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 TimeSinceRequest;
+ uint32 TimeToCompleteRequest;
+ uint16 RequestID;
+ uint16 Reserved;
+ } AUX_PERF_DEFMDB_SUCCESS;
+
+ /**************************/
+ /* AUX_HEADER case (0x6) */
+ /* AUX_HEADER case (0xD) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ServerID;
+ uint16 SessionID;
+ uint32 TimeSinceRequest;
+ uint32 TimeToCompleteRequest;
+ uint8 RequestOperation;
+ uint8 Reserved[3];
+ } AUX_PERF_DEFGC_SUCCESS;
+
+ /**************************/
+ /* AUX_HEADER case (0x7) */
+ /* AUX_HEADER case (0xE) */
+
+ /* AUX_HEADER case (0x13) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ClientID;
+ uint16 ServerID;
+ uint16 SessionID;
+ uint16 RequestID;
+ uint32 TimeSinceRequest;
+ uint32 TimeToCompleteRequest;
+ } AUX_PERF_MDB_SUCCESS;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ProcessID;
+ uint16 ClientID;
+ uint16 ServerID;
+ uint16 SessionID;
+ uint16 RequestID;
+ uint16 Reserved;
+ uint32 TimeSinceRequest;
+ uint32 TimeToCompleteRequest;
+ } AUX_PERF_MDB_SUCCESS_V2;
+
+ /**************************/
+ /* AUX_HEADER case (0x8) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ClientID;
+ uint16 ServerID;
+ uint16 SessionID;
+ uint16 Reserved_1;
+ uint32 TimeSinceRequest;
+ uint32 TimeToCompleteRequest;
+ uint8 RequestOperation;
+ uint8 Reserved_2[3];
+ } AUX_PERF_GC_SUCCESS;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ProcessID;
+ uint16 ClientID;
+ uint16 ServerID;
+ uint16 SessionID;
+ uint32 TimeSinceRequest;
+ uint32 TimeToCompleteRequest;
+ uint8 RequestOperation;
+ uint8 Reserved[3];
+ } AUX_PERF_GC_SUCCESS_V2;
+
+ /**************************/
+ /* AUX_HEADER case (0x9) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ClientID;
+ uint16 ServerID;
+ uint16 SessionID;
+ uint16 RequestID;
+ uint32 TimeSinceRequest;
+ uint32 TimeToFailRequest;
+ MAPISTATUS ResultCode;
+ uint8 RequestOperation;
+ uint8 Reserved[3];
+ } AUX_PERF_FAILURE;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ProcessID;
+ uint16 ClientID;
+ uint16 ServerID;
+ uint16 SessionID;
+ uint16 RequestID;
+ uint16 Reserved_1;
+ uint32 TimeSinceRequest;
+ uint32 TimeToFailRequest;
+ MAPISTATUS ResultCode;
+ uint8 RequestOperation;
+ uint8 Reserved_2[3];
+ } AUX_PERF_FAILURE_V2;
+
+ /**************************/
+ /* AUX_HEADER case (0xA) */
+ typedef [bitmap32bit] bitmap {
+ ENABLE_PERF_SENDTOSERVER = 0x00000001,
+ ENABLE_PERF_SENDTOMAILBOX = 0x00000002,
+ ENABLE_COMPRESSION = 0x00000004,
+ ENABLE_HTTP_TUNNELING = 0x00000008,
+ ENABLE_PERF_SENDGCDATA = 0x00000010
+ } CLIENT_CONTROL_EnableFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ CLIENT_CONTROL_EnableFlags EnableFlags;
+ uint32 ExpiryTime;
+ } AUX_CLIENT_CONTROL;
+
+ /*************************/
+ /* AUX_HEADER case (0xB) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ProcessID;
+ uint16 Reserved1;
+ GUID ProcessGuid;
+ uint16 ProcessNameOffset;
+ uint16 Reserved2;
+ nstring ProcessName;
+ } AUX_PERF_PROCESSINFO;
+
+ /**************************/
+ /* AUX_HEADER case (0x16) */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 OSVersionInfoSize;
+ uint32 MajorVersion;
+ uint32 MinorVersion;
+ uint32 BuildNumber;
+ [flag(NDR_NOALIGN|NDR_REMAINING)] DATA_BLOB Reserved_1;
+ uint16 ServicePackMajor;
+ uint16 ServicePackMinor;
+ uint32 Reserved_2;
+ } AUX_OSVERSIONINFO;
+
+ /**************************/
+ /* AUX_HEADER case (0x17) */
+ typedef [bitmap32bit] bitmap {
+ PUBLIC_FOLDERS_ENABLED = 0x00000001
+ } EXORGINFO_OrgFlags;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ EXORGINFO_OrgFlags OrgFlags;
+ } AUX_EXORGINFO;
+
+ typedef [public,nodiscriminant,flag(NDR_NOALIGN)] union {
+ [case(AUX_TYPE_PERF_REQUESTID)] AUX_PERF_REQUESTID AuxiliaryPerfRequestId;
+ [case(AUX_TYPE_PERF_CLIENTINFO)] AUX_PERF_CLIENTINFO AuxiliaryPerfClientInfo;
+ [case(AUX_TYPE_PERF_SERVERINFO)] AUX_PERF_SERVERINFO AuxiliaryPerfServerInfo;
+ [case(AUX_TYPE_PERF_SESSIONINFO)] AUX_PERF_SESSIONINFO AuxiliaryPerfSessionInfo;
+ [case(AUX_TYPE_PERF_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AuxiliaryPerfDefmdbSuccess;
+ [case(AUX_TYPE_PERF_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AuxiliaryPerfDefgcSuccess;
+ [case(AUX_TYPE_PERF_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AuxiliaryPerfMdbSuccess;
+ [case(AUX_TYPE_PERF_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AuxiliaryPerfGcSuccess;
+ [case(AUX_TYPE_PERF_FAILURE)] AUX_PERF_FAILURE AuxiliaryPerfFailure;
+ [case(AUX_TYPE_CLIENT_CONTROL)] AUX_CLIENT_CONTROL AuxiliaryClientControl;
+ [case(AUX_TYPE_PERF_PROCESSINFO)] AUX_PERF_PROCESSINFO AuxiliaryPerfProcessInfo;
+ [case(AUX_TYPE_PERF_BG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AuxiliaryPerfBgDefmdbSuccess;
+ [case(AUX_TYPE_PERF_BG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AuxiliaryPerfBgDefgcSuccess;
+ [case(AUX_TYPE_PERF_BG_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AuxiliaryPerfBgMdbSuccess;
+ [case(AUX_TYPE_PERF_BG_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AuxiliaryPerfBgGcSuccess;
+ [case(AUX_TYPE_PERF_BG_FAILURE)] AUX_PERF_FAILURE AuxiliaryPerfBgFailure;
+ [case(AUX_TYPE_PERF_FG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AuxiliaryPerfFgDefmdbSuccess;
+ [case(AUX_TYPE_PERF_FG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AuxiliaryPerfFgDefgcSuccess;
+ [case(AUX_TYPE_PERF_FG_MDB_SUCCESS)] AUX_PERF_MDB_SUCCESS AuxiliaryPerfFgMdbSuccess;
+ [case(AUX_TYPE_PERF_FG_GC_SUCCESS)] AUX_PERF_GC_SUCCESS AuxiliaryPerFGGCSuccess;
+ [case(AUX_TYPE_PERF_FG_FAILURE)] AUX_PERF_FAILURE AuxiliaryPerfFgFailure;
+ [case(AUX_TYPE_OSVERSIONINFO)] AUX_OSVERSIONINFO AuxiliaryOSVersionInfo;
+ [case(AUX_TYPE_EXORGINFO)] AUX_EXORGINFO AuxiliaryEXOrgInfo;
+ [default][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Payload;
+ } AuxDataVersion1;
+
+ typedef [public,nodiscriminant,flag(NDR_NOALIGN)] union {
+ [case(AUX_TYPE_PERF_REQUESTID)] AUX_PERF_REQUESTID AuxiliaryPerfRequestId;
+ [case(AUX_TYPE_PERF_CLIENTINFO)] AUX_PERF_CLIENTINFO AuxiliaryPerfClientInfo;
+ [case(AUX_TYPE_PERF_SERVERINFO)] AUX_PERF_SERVERINFO AuxiliaryPerfServerInfo;
+ [case(AUX_TYPE_PERF_SESSIONINFO_2)] AUX_PERF_SESSIONINFO_V2 AuxiliaryPerfSessioninfo; /* V2 specific */
+ [case(AUX_TYPE_PERF_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AuxiliaryPerfDefmdbSuccess;
+ [case(AUX_TYPE_PERF_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AuxiliaryPerfDefgcSuccess;
+ [case(AUX_TYPE_PERF_MDB_SUCCESS_2)] AUX_PERF_MDB_SUCCESS_V2 AuxiliaryPerfMdbSuccess; /* V2 specific */
+ [case(AUX_TYPE_PERF_GC_SUCCESS_2)] AUX_PERF_GC_SUCCESS_V2 AuxiliaryPerfGcSuccess; /* V2 specific */
+ [case(AUX_TYPE_PERF_FAILURE_2)] AUX_PERF_FAILURE_V2 AuxiliaryPerfFailure; /* V2 specific*/
+ [case(AUX_TYPE_CLIENT_CONTROL)] AUX_CLIENT_CONTROL AuxiliaryPerf;
+ [case(AUX_TYPE_PERF_PROCESSINFO_2)] AUX_PERF_PROCESSINFO AuxiliaryPerfProcessInfo;
+ [case(AUX_TYPE_PERF_BG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AuxiliaryPerfBgDefmdbSuccess;
+ [case(AUX_TYPE_PERF_BG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AuxiliaryPerfBgDefgcSuccess;
+ [case(AUX_TYPE_PERF_BG_MDB_SUCCESS_2)] AUX_PERF_MDB_SUCCESS_V2 AuxiliaryPerfBgMdbSuccess;
+ [case(AUX_TYPE_PERF_BG_GC_SUCCESS_2)] AUX_PERF_GC_SUCCESS AuxiliaryPerfBgGcSuccess;
+ [case(AUX_TYPE_PERF_BG_FAILURE_2)] AUX_PERF_FAILURE AuxiliaryPerfBgFailure;
+ [case(AUX_TYPE_PERF_FG_DEFMDB_SUCCESS)] AUX_PERF_DEFMDB_SUCCESS AuxiliaryPerfFgDefmdbSuccess;
+ [case(AUX_TYPE_PERF_FG_DEFGC_SUCCESS)] AUX_PERF_DEFGC_SUCCESS AuxiliaryPerfFgDefgcSuccess;
+ [case(AUX_TYPE_PERF_FG_MDB_SUCCESS_2)] AUX_PERF_MDB_SUCCESS AuxiliaryPerfFgMdbSuccess;
+ [case(AUX_TYPE_PERF_FG_GC_SUCCESS_2)] AUX_PERF_GC_SUCCESS AuxiliaryPerFGGCSuccess;
+ [case(AUX_TYPE_PERF_FG_FAILURE_2)] AUX_PERF_FAILURE AuxiliaryPerfFgFailure;
+ [case(AUX_TYPE_OSVERSIONINFO)] AUX_OSVERSIONINFO AuxiliaryOSVersionInfo;
+ [case(AUX_TYPE_EXORGINFO)] AUX_EXORGINFO AuxiliaryEXOrgInfo;
+ [default][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Payload;
+ } AuxDataVersion2;
+
+ typedef [public,switch_type(uint8)] union {
+ [case(AUX_VERSION_1)] AuxDataVersion1 Version1;
+ [case(AUX_VERSION_2)] AuxDataVersion2 Version2;
+ [default];
+ } AUX_DATA;
+
+ typedef [public,nopull,noprint,flag(NDR_NOALIGN)] struct {
+ uint16 Size;
+ AUX_VERSION Version;
+
+ /* Switch based on the version. Not really a union in NDR */
+ [switch_is(Version)] AUX_HEADER_TYPE_ENUM hdrType;
+
+ /* Switch based on the version and header type */
+ AUX_DATA AuxData ;
+ } AUX_HEADER;
+
+ typedef [public,bitmap16bit] bitmap {
+ RHEF_Compressed = 0x0001,
+ RHEF_XorMagic = 0x0002,
+ RHEF_Last = 0x0004
+ } RPC_HEADER_EXT_Flags;
+
+ typedef [public] struct {
+ uint16 Version;
+ RPC_HEADER_EXT_Flags Flags;
+ uint16 Size;
+ uint16 SizeActual;
+ } RPC_HEADER_EXT;
+
+ typedef [public,nopull,noprint] struct {
+ uint32 auxInSize;
+ RPC_HEADER_EXT RpcHeaderExtension;
+ AUX_HEADER auxHeader[0]; /* Plain LZ77 Compressed */
+ } AuxInfo;
+
+ typedef [public,nopull,noprint] struct {
+ RPC_HEADER_EXT RpcHeaderExtension;
+ AUX_HEADER auxHeader[0]; /* Plain LZ77 Compressed */
+ } AuxInfoOut;
+
+ WERROR mapi_EcDoConnectEx(
+ [out] policy_handle *handle,
+ [in,string,charset(DOS)] uint8 szUserDN[],
+ [in] uint32 ulFlags,
+ [in] uint32 ulConMod,
+ [in] uint32 cbLimit,
+ [in] uint32 ulCpid,
+ [in] uint32 ulLcidString,
+ [in] uint32 ulLcidSort,
+ [in] uint32 ulIcxrLink,
+ [in] uint16 usFCanConvertCodePages,
+ [out] uint32 *pcmsPollsMax,
+ [out] uint32 *pcRetry,
+ [out] uint32 *pcmsRetryDelay,
+ [out] uint32 *picxr,
+ [out,unique,ref,string,charset(DOS)]uint8 **szDNPrefix,
+ [out,unique,ref,string,charset(DOS)]uint8 **szDisplayName,
+ [in,string] uint8 rgwClientVersion[6],
+ [out,string] uint8 rgwServerVersion[6],
+ [out,string] uint8 rgwBestVersion[6],
+ [in,out] uint32 *pulTimeStamp,
+ [in,represent_as(4),flag(NDR_NOALIGN|NDR_REMAINING)] AuxInfo *rgbAuxIn,
+ [in] uint32 cbAuxIn,
+ [out,size_is(*pcbAuxOut),length_is(0)] AuxInfoOut *rgbAuxOut,
+ [in,out][range(0,0x1008)] uint32 *pcbAuxOut
+ );
+
+ /******************/
+ /* Function: 0x0b */
+
+ typedef [noprint, bitmap32bit] bitmap {
+ NoCompression = 0x00000001,
+ NoXorMagic = 0x00000002,
+ Chain = 0x00000004
+ } RpcExt2Flags;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ ROP_OPNUM RopId;
+ [switch_is(RopId)] RopRequest u;
+ } RopInput;
+
+ typedef [public,nopull] struct {
+ uint16 ropSize;
+ RopInput rop[0];
+ uint32 objectHandles[0]; /* ServerObjectHandleTable */
+ } ROPInputBuffer;
+
+ typedef [public,nopull] struct {
+ RPC_HEADER_EXT RpcHeaderExtension;
+ [flag(NDR_REMAINING|NDR_NOALIGN)] ROPInputBuffer ropIn;
+ } RgbIn;
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ ROP_OPNUM RopId;
+ [switch_is(RopId)] RopReply u;
+ } RopOutput;
+
+ typedef [public,nopull] struct {
+ uint16 ropSize;
+ RopOutput rop[0];
+ uint32 objectHandles[0]; /* ServerObjectHandleTable */
+ } ROPOutputBuffer;
+
+ typedef [public,nopull] struct {
+ RPC_HEADER_EXT RpcHeaderExtension;
+ [flag(NDR_REMAINING|NDR_NOALIGN)] ROPOutputBuffer ropOut;
+ } RgbOut;
+
+ WERROR mapi_EcDoRpcExt2(
+ [in, out, ref] policy_handle * pcxh,
+ [in, out] RpcExt2Flags *pulFlags,
+ [in, represent_as(4)] RgbIn *rgbIn,
+ [in] uint32 cbIn,
+ [out, length_is(*pcbOut), size_is(*pcbOut)] RgbOut *rgbOut,
+ [in, out] [range(0x0, 0x40000)] uint32 *pcbOut,
+ [in,represent_as(4),flag(NDR_NOALIGN|NDR_REMAINING)] AuxInfo *rgbAuxIn,
+ [in] uint32 cbAuxIn,
+ [out,size_is(*pcbAuxOut),length_is(0)] AuxInfoOut *rgbAuxOut,
+ [in, out] [range(0x0, 0x1008)] uint32 *pcbAuxOut,
+ [out] uint32 *pulTransTime
+ );
+
+ /******************/
+ /* Function: 0x0c */
+ WERROR mapi_EcDoAsyncConnect(
+ [in] policy_handle *cxh,
+ [out, ref] policy_handle * pacxh
+ );
+
+ /******************/
+ /* Function: 0x0d */
+ WERROR mapi_EcDoAsyncWait(
+ [in] policy_handle *cxh,
+ [in] long ulFlagsIn,
+ [out] long *pulFlagsOut
+ );
+
+ /******************/
+ /* Function: 0x0e */
+ WERROR mapi_EcDoAsyncConnectEx(
+ [in] policy_handle *cxh,
+ [out, ref] policy_handle * pacxh
+ );
+} \ No newline at end of file
diff --git a/epan/dissectors/pidl/mapicodes_enum.h b/epan/dissectors/pidl/mapicodes_enum.h
new file mode 100644
index 00000000..ba0d53e7
--- /dev/null
+++ b/epan/dissectors/pidl/mapicodes_enum.h
@@ -0,0 +1,98 @@
+/*
+ MAPI Implementation
+
+ OpenChange Project
+
+ Copyright (C) Julien Kerihuel 2006
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+/* parser auto-generated by mparse */
+
+typedef [public, v1_enum, flag(NDR_PAHEX)] enum {
+ MAPI_E_SUCCESS = 0x00000000,
+ MAPI_E_NO_SUPPORT = 0x80040102,
+ MAPI_E_BAD_CHARWIDTH = 0x80040103,
+ MAPI_E_STRING_TOO_LONG = 0x80040105,
+ MAPI_E_UNKNOWN_FLAGS = 0x80040106,
+ MAPI_E_INVALID_ENTRYID = 0x80040107,
+ MAPI_E_INVALID_OBJECT = 0x80040108,
+ MAPI_E_OBJECT_CHANGED = 0x80040109,
+ MAPI_E_OBJECT_DELETED = 0x8004010A,
+ MAPI_E_BUSY = 0x8004010B,
+ MAPI_E_NOT_ENOUGH_DISK = 0x8004010D,
+ MAPI_E_NOT_ENOUGH_RESOURCES = 0x8004010E,
+ MAPI_E_NOT_FOUND = 0x8004010F,
+ MAPI_E_VERSION = 0x80040110,
+ MAPI_E_LOGON_FAILED = 0x80040111,
+ MAPI_E_SESSION_LIMIT = 0x80040112,
+ MAPI_E_USER_CANCEL = 0x80040113,
+ MAPI_E_UNABLE_TO_ABORT = 0x80040114,
+ MAPI_E_NETWORK_ERROR = 0x80040115,
+ MAPI_E_DISK_ERROR = 0x80040116,
+ MAPI_E_TOO_COMPLEX = 0x80040117,
+ MAPI_E_BAD_COLUMN = 0x80040118,
+ MAPI_E_EXTENDED_ERROR = 0x80040119,
+ MAPI_E_COMPUTED = 0x8004011A,
+ MAPI_E_CORRUPT_DATA = 0x8004011B,
+ MAPI_E_UNCONFIGURED = 0x8004011C,
+ MAPI_E_FAILONEPROVIDER = 0x8004011D,
+ MAPI_E_UNKNOWN_CPID = 0x8004011E,
+ MAPI_E_UNKNOWN_LCID = 0x8004011F,
+ MAPI_E_PASSWORD_CHANGE_REQUIRED = 0x80040120,
+ MAPI_E_PASSWORD_EXPIRED = 0x80040121,
+ MAPI_E_INVALID_WORKSTATION_ACCOUNT = 0x80040122,
+ MAPI_E_INVALID_ACCESS_TIME = 0x80040123,
+ MAPI_E_ACCOUNT_DISABLED = 0x80040124,
+ MAPI_E_END_OF_SESSION = 0x80040200,
+ MAPI_E_UNKNOWN_ENTRYID = 0x80040201,
+ MAPI_E_MISSING_REQUIRED_COLUMN = 0x80040202,
+ MAPI_W_NO_SERVICE = 0x80040203,
+ MAPI_E_BAD_VALUE = 0x80040301,
+ MAPI_E_INVALID_TYPE = 0x80040302,
+ MAPI_E_TYPE_NO_SUPPORT = 0x80040303,
+ MAPI_E_UNEXPECTED_TYPE = 0x80040304,
+ MAPI_E_TOO_BIG = 0x80040305,
+ MAPI_E_DECLINE_COPY = 0x80040306,
+ MAPI_E_UNEXPECTED_ID = 0x80040307,
+ MAPI_W_ERRORS_RETURNED = 0x80040380,
+ MAPI_E_UNABLE_TO_COMPLETE = 0x80040400,
+ MAPI_E_TIMEOUT = 0x80040401,
+ MAPI_E_TABLE_EMPTY = 0x80040402,
+ MAPI_E_TABLE_TOO_BIG = 0x80040403,
+ MAPI_E_INVALID_BOOKMARK = 0x80040405,
+ MAPI_W_POSITION_CHANGED = 0x80040481,
+ MAPI_W_APPROX_COUNT = 0x80040482,
+ MAPI_E_WAIT = 0x80040500,
+ MAPI_E_CANCEL = 0x80040501,
+ MAPI_E_NOT_ME = 0x80040502,
+ MAPI_W_CANCEL_MESSAGE = 0x80040580,
+ MAPI_E_CORRUPT_STORE = 0x80040600,
+ MAPI_E_NOT_IN_QUEUE = 0x80040601,
+ MAPI_E_NO_SUPPRESS = 0x80040602,
+ MAPI_E_COLLISION = 0x80040604,
+ MAPI_E_NOT_INITIALIZED = 0x80040605,
+ MAPI_E_NON_STANDARD = 0x80040606,
+ MAPI_E_NO_RECIPIENTS = 0x80040607,
+ MAPI_E_SUBMITTED = 0x80040608,
+ MAPI_E_HAS_FOLDERS = 0x80040609,
+ MAPI_E_HAS_MESSAGES = 0x8004060A,
+ MAPI_E_FOLDER_CYCLE = 0x8004060B,
+ MAPI_W_PARTIAL_COMPLETION = 0x80040680,
+ MAPI_E_AMBIGUOUS_RECIP = 0x80040700,
+ MAPI_E_RESERVED = 0xFFFFFFFF
+} MAPISTATUS;
+
diff --git a/epan/dissectors/pidl/mapitags_enum.h b/epan/dissectors/pidl/mapitags_enum.h
new file mode 100644
index 00000000..2ca596f1
--- /dev/null
+++ b/epan/dissectors/pidl/mapitags_enum.h
@@ -0,0 +1,3421 @@
+/*
+ MAPI Implementation
+
+ OpenChange Project
+
+ Copyright (C) Julien Kerihuel 2006
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+
+/* parser auto-generated by mparse */
+
+typedef [v1_enum, flag(NDR_PAHEX)] enum {
+ PR_ACKNOWLEDGEMENT_MODE = 0x00010003,
+ PR_ACKNOWLEDGEMENT_MODE_ERROR = 0x0001000a,
+ PR_ALTERNATE_RECIPIENT_ALLOWED = 0x0002000b,
+ PR_ALTERNATE_RECIPIENT_ALLOWED_ERROR = 0x0002000a,
+ PR_AUTHORIZING_USERS = 0x00030102,
+ PR_AUTHORIZING_USERS_ERROR = 0x0003000a,
+ PR_AUTO_FORWARD_COMMENT = 0x0004001e,
+ PR_AUTO_FORWARD_COMMENT_UNICODE = 0x0004001f,
+ PR_AUTO_FORWARD_COMMENT_ERROR = 0x0004000a,
+ PR_AUTO_FORWARDED = 0x0005000b,
+ PR_AUTO_FORWARDED_ERROR = 0x0005000a,
+ PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID = 0x00060102,
+ PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID_ERROR = 0x0006000a,
+ PR_CONTENT_CORRELATOR = 0x00070102,
+ PR_CONTENT_CORRELATOR_ERROR = 0x0007000a,
+ PR_CONTENT_IDENTIFIER = 0x0008001e,
+ PR_CONTENT_IDENTIFIER_UNICODE = 0x0008001f,
+ PR_CONTENT_IDENTIFIER_ERROR = 0x0008000a,
+ PR_CONTENT_LENGTH = 0x00090003,
+ PR_CONTENT_LENGTH_ERROR = 0x0009000a,
+ PR_CONTENT_RETURN_REQUESTED = 0x000a000b,
+ PR_CONTENT_RETURN_REQUESTED_ERROR = 0x000a000a,
+ PR_CONVERSATION_KEY = 0x000b0102,
+ PR_CONVERSATION_KEY_ERROR = 0x000b000a,
+ PR_CONVERSION_EITS = 0x000c0102,
+ PR_CONVERSION_EITS_ERROR = 0x000c000a,
+ PR_CONVERSION_WITH_LOSS_PROHIBITED = 0x000d000b,
+ PR_CONVERSION_WITH_LOSS_PROHIBITED_ERROR = 0x000d000a,
+ PR_CONVERTED_EITS = 0x000e0102,
+ PR_CONVERTED_EITS_ERROR = 0x000e000a,
+ PR_DEFERRED_DELIVERY_TIME = 0x000f0040,
+ PR_DEFERRED_DELIVERY_TIME_ERROR = 0x000f000a,
+ PR_DELIVER_TIME = 0x00100040,
+ PR_DELIVER_TIME_ERROR = 0x0010000a,
+ PR_DISCARD_REASON = 0x00110003,
+ PR_DISCARD_REASON_ERROR = 0x0011000a,
+ PR_DISCLOSURE_OF_RECIPIENTS = 0x0012000b,
+ PR_DISCLOSURE_OF_RECIPIENTS_ERROR = 0x0012000a,
+ PR_DL_EXPANSION_HISTORY = 0x00130102,
+ PR_DL_EXPANSION_HISTORY_ERROR = 0x0013000a,
+ PR_DL_EXPANSION_PROHIBITED = 0x0014000b,
+ PR_DL_EXPANSION_PROHIBITED_ERROR = 0x0014000a,
+ PR_EXPIRY_TIME = 0x00150040,
+ PR_EXPIRY_TIME_ERROR = 0x0015000a,
+ PR_IMPLICIT_CONVERSION_PROHIBITED = 0x0016000b,
+ PR_IMPLICIT_CONVERSION_PROHIBITED_ERROR = 0x0016000a,
+ PR_IMPORTANCE = 0x00170003,
+ PR_IMPORTANCE_ERROR = 0x0017000a,
+ PR_IPM_ID = 0x00180102,
+ PR_IPM_ID_ERROR = 0x0018000a,
+ PR_LATEST_DELIVERY_TIME = 0x00190040,
+ PR_LATEST_DELIVERY_TIME_ERROR = 0x0019000a,
+ PR_MESSAGE_CLASS = 0x001a001e,
+ PR_MESSAGE_CLASS_UNICODE = 0x001a001f,
+ PR_MESSAGE_CLASS_ERROR = 0x001a000a,
+ PR_MESSAGE_DELIVERY_ID = 0x001b0102,
+ PR_MESSAGE_DELIVERY_ID_ERROR = 0x001b000a,
+ PR_MESSAGE_SECURITY_LABEL = 0x001e0102,
+ PR_MESSAGE_SECURITY_LABEL_ERROR = 0x001e000a,
+ PR_OBSOLETED_IPMS = 0x001f0102,
+ PR_OBSOLETED_IPMS_ERROR = 0x001f000a,
+ PR_ORIGINALLY_INTENDED_RECIPIENT_NAME = 0x00200102,
+ PR_ORIGINALLY_INTENDED_RECIPIENT_NAME_ERROR = 0x0020000a,
+ PR_ORIGINAL_EITS = 0x00210102,
+ PR_ORIGINAL_EITS_ERROR = 0x0021000a,
+ PR_ORIGINATOR_CERTIFICATE = 0x00220102,
+ PR_ORIGINATOR_CERTIFICATE_ERROR = 0x0022000a,
+ PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED = 0x0023000b,
+ PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED_ERROR = 0x0023000a,
+ PR_ORIGINATOR_RETURN_ADDRESS = 0x00240102,
+ PR_ORIGINATOR_RETURN_ADDRESS_ERROR = 0x0024000a,
+ PR_PARENT_KEY = 0x00250102,
+ PR_PARENT_KEY_ERROR = 0x0025000a,
+ PR_PRIORITY = 0x00260003,
+ PR_PRIORITY_ERROR = 0x0026000a,
+ PR_ORIGIN_CHECK = 0x00270102,
+ PR_ORIGIN_CHECK_ERROR = 0x0027000a,
+ PR_PROOF_OF_SUBMISSION_REQUESTED = 0x0028000b,
+ PR_PROOF_OF_SUBMISSION_REQUESTED_ERROR = 0x0028000a,
+ PR_READ_RECEIPT_REQUESTED = 0x0029000b,
+ PR_READ_RECEIPT_REQUESTED_ERROR = 0x0029000a,
+ PR_RECEIPT_TIME = 0x002a0040,
+ PR_RECEIPT_TIME_ERROR = 0x002a000a,
+ PR_RECIPIENT_REASSIGNMENT_PROHIBITED = 0x002b000b,
+ PR_RECIPIENT_REASSIGNMENT_PROHIBITED_ERROR = 0x002b000a,
+ PR_REDIRECTION_HISTORY = 0x002c0102,
+ PR_REDIRECTION_HISTORY_ERROR = 0x002c000a,
+ PR_RELATED_IPMS = 0x002d0102,
+ PR_RELATED_IPMS_ERROR = 0x002d000a,
+ PR_ORIGINAL_SENSITIVITY = 0x002e0003,
+ PR_ORIGINAL_SENSITIVITY_ERROR = 0x002e000a,
+ PR_LANGUAGES = 0x002f001e,
+ PR_LANGUAGES_UNICODE = 0x002f001f,
+ PR_LANGUAGES_ERROR = 0x002f000a,
+ PR_REPLY_TIME = 0x00300040,
+ PR_REPLY_TIME_ERROR = 0x0030000a,
+ PR_REPORT_TAG = 0x00310102,
+ PR_REPORT_TAG_ERROR = 0x0031000a,
+ PR_REPORT_TIME = 0x00320040,
+ PR_REPORT_TIME_ERROR = 0x0032000a,
+ PR_RETURNED_IPM = 0x0033000b,
+ PR_RETURNED_IPM_ERROR = 0x0033000a,
+ PR_SECURITY = 0x00340003,
+ PR_SECURITY_ERROR = 0x0034000a,
+ PR_INCOMPLETE_COPY = 0x0035000b,
+ PR_INCOMPLETE_COPY_ERROR = 0x0035000a,
+ PR_SENSITIVITY = 0x00360003,
+ PR_SENSITIVITY_ERROR = 0x0036000a,
+ PR_SUBJECT = 0x0037001e,
+ PR_SUBJECT_UNICODE = 0x0037001f,
+ PR_SUBJECT_ERROR = 0x0037000a,
+ PR_SUBJECT_IPM = 0x00380102,
+ PR_SUBJECT_IPM_ERROR = 0x0038000a,
+ PR_CLIENT_SUBMIT_TIME = 0x00390040,
+ PR_CLIENT_SUBMIT_TIME_ERROR = 0x0039000a,
+ PR_REPORT_NAME = 0x003a001e,
+ PR_REPORT_NAME_UNICODE = 0x003a001f,
+ PR_REPORT_NAME_ERROR = 0x003a000a,
+ PR_SENT_REPRESENTING_SEARCH_KEY = 0x003b0102,
+ PR_SENT_REPRESENTING_SEARCH_KEY_ERROR = 0x003b000a,
+ PR_X400_CONTENT_TYPE = 0x003c0102,
+ PR_X400_CONTENT_TYPE_ERROR = 0x003c000a,
+ PR_SUBJECT_PREFIX = 0x003d001e,
+ PR_SUBJECT_PREFIX_UNICODE = 0x003d001f,
+ PR_SUBJECT_PREFIX_ERROR = 0x003d000a,
+ PR_NON_RECEIPT_REASON = 0x003e0003,
+ PR_NON_RECEIPT_REASON_ERROR = 0x003e000a,
+ PR_RECEIVED_BY_ENTRYID = 0x003f0102,
+ PR_RECEIVED_BY_ENTRYID_ERROR = 0x003f000a,
+ PR_RECEIVED_BY_NAME = 0x0040001e,
+ PR_RECEIVED_BY_NAME_UNICODE = 0x0040001f,
+ PR_RECEIVED_BY_NAME_ERROR = 0x0040000a,
+ PR_SENT_REPRESENTING_ENTRYID = 0x00410102,
+ PR_SENT_REPRESENTING_ENTRYID_ERROR = 0x0041000a,
+ PR_SENT_REPRESENTING_NAME = 0x0042001e,
+ PR_SENT_REPRESENTING_NAME_UNICODE = 0x0042001f,
+ PR_SENT_REPRESENTING_NAME_ERROR = 0x0042000a,
+ PR_RCVD_REPRESENTING_ENTRYID = 0x00430102,
+ PR_RCVD_REPRESENTING_ENTRYID_ERROR = 0x0043000a,
+ PR_RCVD_REPRESENTING_NAME = 0x0044001e,
+ PR_RCVD_REPRESENTING_NAME_UNICODE = 0x0044001f,
+ PR_RCVD_REPRESENTING_NAME_ERROR = 0x0044000a,
+ PR_REPORT_ENTRYID = 0x00450102,
+ PR_REPORT_ENTRYID_ERROR = 0x0045000a,
+ PR_READ_RECEIPT_ENTRYID = 0x00460102,
+ PR_READ_RECEIPT_ENTRYID_ERROR = 0x0046000a,
+ PR_MESSAGE_SUBMISSION_ID = 0x00470102,
+ PR_MESSAGE_SUBMISSION_ID_ERROR = 0x0047000a,
+ PR_PROVIDER_SUBMIT_TIME = 0x00480040,
+ PR_PROVIDER_SUBMIT_TIME_ERROR = 0x0048000a,
+ PR_ORIGINAL_SUBJECT = 0x0049001e,
+ PR_ORIGINAL_SUBJECT_UNICODE = 0x0049001f,
+ PR_ORIGINAL_SUBJECT_ERROR = 0x0049000a,
+ PR_DISC_VAL = 0x004a000b,
+ PR_DISC_VAL_ERROR = 0x004a000a,
+ PR_ORIG_MESSAGE_CLASS = 0x004b001e,
+ PR_ORIG_MESSAGE_CLASS_UNICODE = 0x004b001f,
+ PR_ORIG_MESSAGE_CLASS_ERROR = 0x004b000a,
+ PR_ORIGINAL_AUTHOR_ENTRYID = 0x004c0102,
+ PR_ORIGINAL_AUTHOR_ENTRYID_ERROR = 0x004c000a,
+ PR_ORIGINAL_AUTHOR_NAME = 0x004d001e,
+ PR_ORIGINAL_AUTHOR_NAME_UNICODE = 0x004d001f,
+ PR_ORIGINAL_AUTHOR_NAME_ERROR = 0x004d000a,
+ PR_ORIGINAL_SUBMIT_TIME = 0x004e0040,
+ PR_ORIGINAL_SUBMIT_TIME_ERROR = 0x004e000a,
+ PR_REPLY_RECIPIENT_ENTRIES = 0x004f0102,
+ PR_REPLY_RECIPIENT_ENTRIES_ERROR = 0x004f000a,
+ PR_REPLY_RECIPIENT_NAMES = 0x0050001e,
+ PR_REPLY_RECIPIENT_NAMES_UNICODE = 0x0050001f,
+ PR_REPLY_RECIPIENT_NAMES_ERROR = 0x0050000a,
+ PR_RECEIVED_BY_SEARCH_KEY = 0x00510102,
+ PR_RECEIVED_BY_SEARCH_KEY_ERROR = 0x0051000a,
+ PR_RCVD_REPRESENTING_SEARCH_KEY = 0x00520102,
+ PR_RCVD_REPRESENTING_SEARCH_KEY_ERROR = 0x0052000a,
+ PR_READ_RECEIPT_SEARCH_KEY = 0x00530102,
+ PR_READ_RECEIPT_SEARCH_KEY_ERROR = 0x0053000a,
+ PR_REPORT_SEARCH_KEY = 0x00540102,
+ PR_REPORT_SEARCH_KEY_ERROR = 0x0054000a,
+ PR_ORIGINAL_DELIVERY_TIME = 0x00550040,
+ PR_ORIGINAL_DELIVERY_TIME_ERROR = 0x0055000a,
+ PR_ORIGINAL_AUTHOR_SEARCH_KEY = 0x00560102,
+ PR_ORIGINAL_AUTHOR_SEARCH_KEY_ERROR = 0x0056000a,
+ PR_MESSAGE_TO_ME = 0x0057000b,
+ PR_MESSAGE_TO_ME_ERROR = 0x0057000a,
+ PR_MESSAGE_CC_ME = 0x0058000b,
+ PR_MESSAGE_CC_ME_ERROR = 0x0058000a,
+ PR_MESSAGE_RECIP_ME = 0x0059000b,
+ PR_MESSAGE_RECIP_ME_ERROR = 0x0059000a,
+ PR_ORIGINAL_SENDER_NAME = 0x005a001e,
+ PR_ORIGINAL_SENDER_NAME_UNICODE = 0x005a001f,
+ PR_ORIGINAL_SENDER_NAME_ERROR = 0x005a000a,
+ PR_ORIGINAL_SENDER_ENTRYID = 0x005b0102,
+ PR_ORIGINAL_SENDER_ENTRYID_ERROR = 0x005b000a,
+ PR_ORIGINAL_SENDER_SEARCH_KEY = 0x005c0102,
+ PR_ORIGINAL_SENDER_SEARCH_KEY_ERROR = 0x005c000a,
+ PR_ORIGINAL_SENT_REPRESENTING_NAME = 0x005d001e,
+ PR_ORIGINAL_SENT_REPRESENTING_NAME_UNICODE = 0x005d001f,
+ PR_ORIGINAL_SENT_REPRESENTING_NAME_ERROR = 0x005d000a,
+ PR_ORIGINAL_SENT_REPRESENTING_ENTRYID = 0x005e0102,
+ PR_ORIGINAL_SENT_REPRESENTING_ENTRYID_ERROR = 0x005e000a,
+ PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY = 0x005f0102,
+ PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY_ERROR = 0x005f000a,
+ PR_START_DATE = 0x00600040,
+ PR_START_DATE_ERROR = 0x0060000a,
+ PR_END_DATE = 0x00610040,
+ PR_END_DATE_ERROR = 0x0061000a,
+ PR_OWNER_APPT_ID = 0x00620003,
+ PR_OWNER_APPT_ID_ERROR = 0x0062000a,
+ PR_RESPONSE_REQUESTED = 0x0063000b,
+ PR_RESPONSE_REQUESTED_ERROR = 0x0063000a,
+ PR_SENT_REPRESENTING_ADDRTYPE = 0x0064001e,
+ PR_SENT_REPRESENTING_ADDRTYPE_UNICODE = 0x0064001f,
+ PR_SENT_REPRESENTING_ADDRTYPE_ERROR = 0x0064000a,
+ PR_SENT_REPRESENTING_EMAIL_ADDRESS = 0x0065001e,
+ PR_SENT_REPRESENTING_EMAIL_ADDRESS_UNICODE = 0x0065001f,
+ PR_SENT_REPRESENTING_EMAIL_ADDRESS_ERROR = 0x0065000a,
+ PR_ORIGINAL_SENDER_ADDRTYPE = 0x0066001e,
+ PR_ORIGINAL_SENDER_ADDRTYPE_UNICODE = 0x0066001f,
+ PR_ORIGINAL_SENDER_ADDRTYPE_ERROR = 0x0066000a,
+ PR_ORIGINAL_SENDER_EMAIL_ADDRESS = 0x0067001e,
+ PR_ORIGINAL_SENDER_EMAIL_ADDRESS_UNICODE = 0x0067001f,
+ PR_ORIGINAL_SENDER_EMAIL_ADDRESS_ERROR = 0x0067000a,
+ PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE = 0x0068001e,
+ PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_UNICODE = 0x0068001f,
+ PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_ERROR = 0x0068000a,
+ PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS = 0x0069001e,
+ PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_UNICODE = 0x0069001f,
+ PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_ERROR = 0x0069000a,
+ PR_CONVERSATION_TOPIC = 0x0070001e,
+ PR_CONVERSATION_TOPIC_UNICODE = 0x0070001f,
+ PR_CONVERSATION_TOPIC_ERROR = 0x0070000a,
+ PR_CONVERSATION_INDEX = 0x00710102,
+ PR_CONVERSATION_INDEX_ERROR = 0x0071000a,
+ PR_ORIGINAL_DISPLAY_BCC = 0x0072001e,
+ PR_ORIGINAL_DISPLAY_BCC_UNICODE = 0x0072001f,
+ PR_ORIGINAL_DISPLAY_BCC_ERROR = 0x0072000a,
+ PR_ORIGINAL_DISPLAY_CC = 0x0073001e,
+ PR_ORIGINAL_DISPLAY_CC_UNICODE = 0x0073001f,
+ PR_ORIGINAL_DISPLAY_CC_ERROR = 0x0073000a,
+ PR_ORIGINAL_DISPLAY_TO = 0x0074001e,
+ PR_ORIGINAL_DISPLAY_TO_UNICODE = 0x0074001f,
+ PR_ORIGINAL_DISPLAY_TO_ERROR = 0x0074000a,
+ PR_RECEIVED_BY_ADDRTYPE = 0x0075001e,
+ PR_RECEIVED_BY_ADDRTYPE_UNICODE = 0x0075001f,
+ PR_RECEIVED_BY_ADDRTYPE_ERROR = 0x0075000a,
+ PR_RECEIVED_BY_EMAIL_ADDRESS = 0x0076001e,
+ PR_RECEIVED_BY_EMAIL_ADDRESS_UNICODE = 0x0076001f,
+ PR_RECEIVED_BY_EMAIL_ADDRESS_ERROR = 0x0076000a,
+ PR_RCVD_REPRESENTING_ADDRTYPE = 0x0077001e,
+ PR_RCVD_REPRESENTING_ADDRTYPE_UNICODE = 0x0077001f,
+ PR_RCVD_REPRESENTING_ADDRTYPE_ERROR = 0x0077000a,
+ PR_RCVD_REPRESENTING_EMAIL_ADDRESS = 0x0078001e,
+ PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE = 0x0078001f,
+ PR_RCVD_REPRESENTING_EMAIL_ADDRESS_ERROR = 0x0078000a,
+ PR_ORIGINAL_AUTHOR_ADDRTYPE = 0x0079001e,
+ PR_ORIGINAL_AUTHOR_ADDRTYPE_UNICODE = 0x0079001f,
+ PR_ORIGINAL_AUTHOR_ADDRTYPE_ERROR = 0x0079000a,
+ PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS = 0x007a001e,
+ PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_UNICODE = 0x007a001f,
+ PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_ERROR = 0x007a000a,
+ PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE = 0x007b001e,
+ PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_UNICODE = 0x007b001f,
+ PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_ERROR = 0x007b000a,
+ PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS = 0x007c001e,
+ PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_UNICODE = 0x007c001f,
+ PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_ERROR = 0x007c000a,
+ PR_TRANSPORT_MESSAGE_HEADERS = 0x007d001e,
+ PR_TRANSPORT_MESSAGE_HEADERS_UNICODE = 0x007d001f,
+ PR_TRANSPORT_MESSAGE_HEADERS_ERROR = 0x007d000a,
+ PR_DELEGATION = 0x007e0102,
+ PR_DELEGATION_ERROR = 0x007e000a,
+ PR_TNEF_CORRELATION_KEY = 0x007f0102,
+ PR_TNEF_CORRELATION_KEY_ERROR = 0x007f000a,
+ PR_CONTENT_INTEGRITY_CHECK = 0x0c000102,
+ PR_CONTENT_INTEGRITY_CHECK_ERROR = 0x0c00000a,
+ PR_EXPLICIT_CONVERSION = 0x0c010003,
+ PR_EXPLICIT_CONVERSION_ERROR = 0x0c01000a,
+ PR_IPM_RETURN_REQUESTED = 0x0c02000b,
+ PR_IPM_RETURN_REQUESTED_ERROR = 0x0c02000a,
+ PR_MESSAGE_TOKEN = 0x0c030102,
+ PR_MESSAGE_TOKEN_ERROR = 0x0c03000a,
+ PR_NDR_REASON_CODE = 0x0c040003,
+ PR_NDR_REASON_CODE_ERROR = 0x0c04000a,
+ PR_NDR_DIAG_CODE = 0x0c050003,
+ PR_NDR_DIAG_CODE_ERROR = 0x0c05000a,
+ PR_NON_RECEIPT_NOTIFICATION_REQUESTED = 0x0c06000b,
+ PR_NON_RECEIPT_NOTIFICATION_REQUESTED_ERROR = 0x0c06000a,
+ PR_DELIVERY_POINT = 0x0c070003,
+ PR_DELIVERY_POINT_ERROR = 0x0c07000a,
+ PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED = 0x0c08000b,
+ PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED_ERROR = 0x0c08000a,
+ PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT = 0x0c090102,
+ PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT_ERROR = 0x0c09000a,
+ PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY = 0x0c0a000b,
+ PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY_ERROR = 0x0c0a000a,
+ PR_PHYSICAL_DELIVERY_MODE = 0x0c0b0003,
+ PR_PHYSICAL_DELIVERY_MODE_ERROR = 0x0c0b000a,
+ PR_PHYSICAL_DELIVERY_REPORT_REQUEST = 0x0c0c0003,
+ PR_PHYSICAL_DELIVERY_REPORT_REQUEST_ERROR = 0x0c0c000a,
+ PR_PHYSICAL_FORWARDING_ADDRESS = 0x0c0d0102,
+ PR_PHYSICAL_FORWARDING_ADDRESS_ERROR = 0x0c0d000a,
+ PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED = 0x0c0e000b,
+ PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED_ERROR = 0x0c0e000a,
+ PR_PHYSICAL_FORWARDING_PROHIBITED = 0x0c0f000b,
+ PR_PHYSICAL_FORWARDING_PROHIBITED_ERROR = 0x0c0f000a,
+ PR_PHYSICAL_RENDITION_ATTRIBUTES = 0x0c100102,
+ PR_PHYSICAL_RENDITION_ATTRIBUTES_ERROR = 0x0c10000a,
+ PR_PROOF_OF_DELIVERY = 0x0c110102,
+ PR_PROOF_OF_DELIVERY_ERROR = 0x0c11000a,
+ PR_PROOF_OF_DELIVERY_REQUESTED = 0x0c12000b,
+ PR_PROOF_OF_DELIVERY_REQUESTED_ERROR = 0x0c12000a,
+ PR_RECIPIENT_CERTIFICATE = 0x0c130102,
+ PR_RECIPIENT_CERTIFICATE_ERROR = 0x0c13000a,
+ PR_RECIPIENT_NUMBER_FOR_ADVICE = 0x0c14001e,
+ PR_RECIPIENT_NUMBER_FOR_ADVICE_UNICODE = 0x0c14001f,
+ PR_RECIPIENT_NUMBER_FOR_ADVICE_ERROR = 0x0c14000a,
+ PR_RECIPIENT_TYPE = 0x0c150003,
+ PR_RECIPIENT_TYPE_ERROR = 0x0c15000a,
+ PR_REGISTERED_MAIL_TYPE = 0x0c160003,
+ PR_REGISTERED_MAIL_TYPE_ERROR = 0x0c16000a,
+ PR_REPLY_REQUESTED = 0x0c17000b,
+ PR_REPLY_REQUESTED_ERROR = 0x0c17000a,
+ PR_REQUESTED_DELIVERY_METHOD = 0x0c180003,
+ PR_REQUESTED_DELIVERY_METHOD_ERROR = 0x0c18000a,
+ PR_SENDER_ENTRYID = 0x0c190102,
+ PR_SENDER_ENTRYID_ERROR = 0x0c19000a,
+ PR_SENDER_NAME = 0x0c1a001e,
+ PR_SENDER_NAME_UNICODE = 0x0c1a001f,
+ PR_SENDER_NAME_ERROR = 0x0c1a000a,
+ PR_SUPPLEMENTARY_INFO = 0x0c1b001e,
+ PR_SUPPLEMENTARY_INFO_UNICODE = 0x0c1b001f,
+ PR_SUPPLEMENTARY_INFO_ERROR = 0x0c1b000a,
+ PR_TYPE_OF_MTS_USER = 0x0c1c0003,
+ PR_TYPE_OF_MTS_USER_ERROR = 0x0c1c000a,
+ PR_SENDER_SEARCH_KEY = 0x0c1d0102,
+ PR_SENDER_SEARCH_KEY_ERROR = 0x0c1d000a,
+ PR_SENDER_ADDRTYPE = 0x0c1e001e,
+ PR_SENDER_ADDRTYPE_UNICODE = 0x0c1e001f,
+ PR_SENDER_ADDRTYPE_ERROR = 0x0c1e000a,
+ PR_SENDER_EMAIL_ADDRESS = 0x0c1f001e,
+ PR_SENDER_EMAIL_ADDRESS_UNICODE = 0x0c1f001f,
+ PR_SENDER_EMAIL_ADDRESS_ERROR = 0x0c1f000a,
+ PR_CURRENT_VERSION = 0x0e000014,
+ PR_CURRENT_VERSION_ERROR = 0x0e00000a,
+ PR_DELETE_AFTER_SUBMIT = 0x0e01000b,
+ PR_DELETE_AFTER_SUBMIT_ERROR = 0x0e01000a,
+ PR_DISPLAY_BCC = 0x0e02001e,
+ PR_DISPLAY_BCC_UNICODE = 0x0e02001f,
+ PR_DISPLAY_BCC_ERROR = 0x0e02000a,
+ PR_DISPLAY_CC = 0x0e03001e,
+ PR_DISPLAY_CC_UNICODE = 0x0e03001f,
+ PR_DISPLAY_CC_ERROR = 0x0e03000a,
+ PR_DISPLAY_TO = 0x0e04001e,
+ PR_DISPLAY_TO_UNICODE = 0x0e04001f,
+ PR_DISPLAY_TO_ERROR = 0x0e04000a,
+ PR_PARENT_DISPLAY = 0x0e05001e,
+ PR_PARENT_DISPLAY_UNICODE = 0x0e05001f,
+ PR_PARENT_DISPLAY_ERROR = 0x0e05000a,
+ PR_MESSAGE_DELIVERY_TIME = 0x0e060040,
+ PR_MESSAGE_DELIVERY_TIME_ERROR = 0x0e06000a,
+ PR_MESSAGE_FLAGS = 0x0e070003,
+ PR_MESSAGE_FLAGS_ERROR = 0x0e07000a,
+ PR_MESSAGE_SIZE = 0x0e080003,
+ PR_MESSAGE_SIZE_ERROR = 0x0e08000a,
+ PR_MESSAGE_SIZE_EXTENDED = 0x0e080014,
+ PR_PARENT_ENTRYID = 0x0e090102,
+ PR_PARENT_ENTRYID_ERROR = 0x0e09000a,
+ PR_SENTMAIL_ENTRYID = 0x0e0a0102,
+ PR_SENTMAIL_ENTRYID_ERROR = 0x0e0a000a,
+ PR_CORRELATE = 0x0e0c000b,
+ PR_CORRELATE_ERROR = 0x0e0c000a,
+ PR_CORRELATE_MTSID = 0x0e0d0102,
+ PR_CORRELATE_MTSID_ERROR = 0x0e0d000a,
+ PR_DISCRETE_VALUES = 0x0e0e000b,
+ PR_DISCRETE_VALUES_ERROR = 0x0e0e000a,
+ PR_RESPONSIBILITY = 0x0e0f000b,
+ PR_RESPONSIBILITY_ERROR = 0x0e0f000a,
+ PR_SPOOLER_STATUS = 0x0e100003,
+ PR_SPOOLER_STATUS_ERROR = 0x0e10000a,
+ PR_TRANSPORT_STATUS = 0x0e110003,
+ PR_TRANSPORT_STATUS_ERROR = 0x0e11000a,
+ PR_MESSAGE_RECIPIENTS = 0x0e12000d,
+ PR_MESSAGE_RECIPIENTS_ERROR = 0x0e12000a,
+ PR_MESSAGE_ATTACHMENTS = 0x0e13000d,
+ PR_MESSAGE_ATTACHMENTS_ERROR = 0x0e13000a,
+ PR_SUBMIT_FLAGS = 0x0e140003,
+ PR_SUBMIT_FLAGS_ERROR = 0x0e14000a,
+ PR_RECIPIENT_STATUS = 0x0e150003,
+ PR_RECIPIENT_STATUS_ERROR = 0x0e15000a,
+ PR_TRANSPORT_KEY = 0x0e160003,
+ PR_TRANSPORT_KEY_ERROR = 0x0e16000a,
+ PR_MSG_STATUS = 0x0e170003,
+ PR_MSG_STATUS_ERROR = 0x0e17000a,
+ PR_MESSAGE_DOWNLOAD_TIME = 0x0e180003,
+ PR_MESSAGE_DOWNLOAD_TIME_ERROR = 0x0e18000a,
+ PR_CREATION_VERSION = 0x0e190014,
+ PR_CREATION_VERSION_ERROR = 0x0e19000a,
+ PR_MODIFY_VERSION = 0x0e1a0014,
+ PR_MODIFY_VERSION_ERROR = 0x0e1a000a,
+ PR_HASATTACH = 0x0e1b000b,
+ PR_HASATTACH_ERROR = 0x0e1b000a,
+ PR_BODY_CRC = 0x0e1c0003,
+ PR_BODY_CRC_ERROR = 0x0e1c000a,
+ PR_NORMALIZED_SUBJECT = 0x0e1d001e,
+ PR_NORMALIZED_SUBJECT_UNICODE = 0x0e1d001f,
+ PR_NORMALIZED_SUBJECT_ERROR = 0x0e1d000a,
+ PR_RTF_IN_SYNC = 0x0e1f000b,
+ PR_RTF_IN_SYNC_ERROR = 0x0e1f000a,
+ PR_ATTACH_SIZE = 0x0e200003,
+ PR_ATTACH_SIZE_ERROR = 0x0e20000a,
+ PR_ATTACH_NUM = 0x0e210003,
+ PR_ATTACH_NUM_ERROR = 0x0e21000a,
+ PR_PREPROCESS = 0x0e22000b,
+ PR_PREPROCESS_ERROR = 0x0e22000a,
+ PR_INTERNET_ARTICLE_NUMBER = 0x0e230003,
+ PR_INTERNET_ARTICLE_NUMBER_ERROR = 0x0e23000a,
+ PR_NEWSGROUP_NAME = 0x0e24001e,
+ PR_NEWSGROUP_NAME_UNICODE = 0x0e24001f,
+ PR_NEWSGROUP_NAME_ERROR = 0x0e24000a,
+ PR_ORIGINATING_MTA_CERTIFICATE = 0x0e250102,
+ PR_ORIGINATING_MTA_CERTIFICATE_ERROR = 0x0e25000a,
+ PR_PROOF_OF_SUBMISSION = 0x0e260102,
+ PR_PROOF_OF_SUBMISSION_ERROR = 0x0e26000a,
+ PR_NT_SECURITY_DESCRIPTOR = 0x0e270102,
+ PR_NT_SECURITY_DESCRIPTOR_ERROR = 0x0e27000a,
+ PR_CREATOR_SID = 0x0e580102,
+ PR_CREATOR_SID_ERROR = 0x0e58000a,
+ PR_LAST_MODIFIER_SID = 0x0e590102,
+ PR_LAST_MODIFIER_SID_ERROR = 0x0e59000a,
+ PR_MIME_HANDLER_CLASSIDS = 0x0e5e0048,
+ PR_MIME_HANDLER_CLASSIDS_ERROR = 0x0e5e000a,
+ PR_URL_COMP_NAME_POSTFIX = 0x0e610003,
+ PR_URL_COMP_NAME_POSTFIX_ERROR = 0x0e61000a,
+ PR_URL_COMP_NAME_SET = 0x0e62000b,
+ PR_URL_COMP_NAME_SET_ERROR = 0x0e62000a,
+ PR_SUBFOLDER_CT = 0x0e630003,
+ PR_SUBFOLDER_CT_ERROR = 0x0e63000a,
+ PR_DELETED_SUBFOLDER_CT = 0x0e640003,
+ PR_DELETED_SUBFOLDER_CT_ERROR = 0x0e64000a,
+ PR_DELETE_TIME = 0x0e660040,
+ PR_DELETE_TIME_ERROR = 0x0e66000a,
+ PR_AGE_LIMIT = 0x0e670102,
+ PR_AGE_LIMIT_ERROR = 0x0e67000a,
+ PR_TRUST_SENDER = 0x0e790003,
+ PR_TRUST_SENDER_ERROR = 0x0e79000a,
+ PR_ATTACH_VIRUS_SCAN_INFO = 0x0e960102,
+ PR_ATTACH_VIRUS_SCAN_INFO_ERROR = 0x0e96000a,
+ PR_ACCESS = 0x0ff40003,
+ PR_ACCESS_ERROR = 0x0ff4000a,
+ PR_ROW_TYPE = 0x0ff50003,
+ PR_ROW_TYPE_ERROR = 0x0ff5000a,
+ PR_INSTANCE_KEY = 0x0ff60102,
+ PR_INSTANCE_KEY_ERROR = 0x0ff6000a,
+ PR_ACCESS_LEVEL = 0x0ff70003,
+ PR_ACCESS_LEVEL_ERROR = 0x0ff7000a,
+ PR_MAPPING_SIGNATURE = 0x0ff80102,
+ PR_MAPPING_SIGNATURE_ERROR = 0x0ff8000a,
+ PR_RECORD_KEY = 0x0ff90102,
+ PR_RECORD_KEY_ERROR = 0x0ff9000a,
+ PR_STORE_RECORD_KEY = 0x0ffa0102,
+ PR_STORE_RECORD_KEY_ERROR = 0x0ffa000a,
+ PR_STORE_ENTRYID = 0x0ffb0102,
+ PR_STORE_ENTRYID_ERROR = 0x0ffb000a,
+ PR_MINI_ICON = 0x0ffc0102,
+ PR_MINI_ICON_ERROR = 0x0ffc000a,
+ PR_ICON = 0x0ffd0102,
+ PR_ICON_ERROR = 0x0ffd000a,
+ PR_OBJECT_TYPE = 0x0ffe0003,
+ PR_OBJECT_TYPE_ERROR = 0x0ffe000a,
+ PR_ENTRYID = 0x0fff0102,
+ PR_ENTRYID_ERROR = 0x0fff000a,
+ PR_BODY = 0x1000001e,
+ PR_BODY_UNICODE = 0x1000001f,
+ PR_BODY_ERROR = 0x1000000a,
+ PR_REPORT_TEXT = 0x1001001e,
+ PR_REPORT_TEXT_UNICODE = 0x1001001f,
+ PR_REPORT_TEXT_ERROR = 0x1001000a,
+ PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY = 0x10020102,
+ PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY_ERROR = 0x1002000a,
+ PR_REPORTING_DL_NAME = 0x10030102,
+ PR_REPORTING_DL_NAME_ERROR = 0x1003000a,
+ PR_REPORTING_MTA_CERTIFICATE = 0x10040102,
+ PR_REPORTING_MTA_CERTIFICATE_ERROR = 0x1004000a,
+ PR_RTF_SYNC_BODY_CRC = 0x10060003,
+ PR_RTF_SYNC_BODY_CRC_ERROR = 0x1006000a,
+ PR_RTF_SYNC_BODY_COUNT = 0x10070003,
+ PR_RTF_SYNC_BODY_COUNT_ERROR = 0x1007000a,
+ PR_RTF_SYNC_BODY_TAG = 0x1008001e,
+ PR_RTF_SYNC_BODY_TAG_UNICODE = 0x1008001f,
+ PR_RTF_SYNC_BODY_TAG_ERROR = 0x1008000a,
+ PR_RTF_COMPRESSED = 0x10090102,
+ PR_RTF_COMPRESSED_ERROR = 0x1009000a,
+ PR_RTF_SYNC_PREFIX_COUNT = 0x10100003,
+ PR_RTF_SYNC_PREFIX_COUNT_ERROR = 0x1010000a,
+ PR_RTF_SYNC_TRAILING_COUNT = 0x10110003,
+ PR_RTF_SYNC_TRAILING_COUNT_ERROR = 0x1011000a,
+ PR_ORIGINALLY_INTENDED_RECIP_ENTRYID = 0x10120102,
+ PR_ORIGINALLY_INTENDED_RECIP_ENTRYID_ERROR = 0x1012000a,
+ PR_HTML = 0x10130102,
+ PR_HTML_ERROR = 0x1013000a,
+ PR_INTERNET_APPROVED = 0x1030001e,
+ PR_INTERNET_APPROVED_UNICODE = 0x1030001f,
+ PR_INTERNET_APPROVED_ERROR = 0x1030000a,
+ PR_INTERNET_CONTROL = 0x1031001e,
+ PR_INTERNET_CONTROL_UNICODE = 0x1031001f,
+ PR_INTERNET_CONTROL_ERROR = 0x1031000a,
+ PR_INTERNET_DISTRIBUTION = 0x1032001e,
+ PR_INTERNET_DISTRIBUTION_UNICODE = 0x1032001f,
+ PR_INTERNET_DISTRIBUTION_ERROR = 0x1032000a,
+ PR_INTERNET_FOLLOWUP_TO = 0x1033001e,
+ PR_INTERNET_FOLLOWUP_TO_UNICODE = 0x1033001f,
+ PR_INTERNET_FOLLOWUP_TO_ERROR = 0x1033000a,
+ PR_INTERNET_LINES = 0x10340003,
+ PR_INTERNET_LINES_ERROR = 0x1034000a,
+ PR_INTERNET_MESSAGE_ID = 0x1035001e,
+ PR_INTERNET_MESSAGE_ID_UNICODE = 0x1035001f,
+ PR_INTERNET_MESSAGE_ID_ERROR = 0x1035000a,
+ PR_INTERNET_NEWSGROUPS = 0x1036001e,
+ PR_INTERNET_NEWSGROUPS_UNICODE = 0x1036001f,
+ PR_INTERNET_NEWSGROUPS_ERROR = 0x1036000a,
+ PR_INTERNET_ORGANIZATION = 0x1037001e,
+ PR_INTERNET_ORGANIZATION_UNICODE = 0x1037001f,
+ PR_INTERNET_ORGANIZATION_ERROR = 0x1037000a,
+ PR_INTERNET_NNTP_PATH = 0x1038001e,
+ PR_INTERNET_NNTP_PATH_UNICODE = 0x1038001f,
+ PR_INTERNET_NNTP_PATH_ERROR = 0x1038000a,
+ PR_INTERNET_REFERENCES = 0x1039001e,
+ PR_INTERNET_REFERENCES_UNICODE = 0x1039001f,
+ PR_INTERNET_REFERENCES_ERROR = 0x1039000a,
+ PR_SUPERSEDES = 0x103a001e,
+ PR_SUPERSEDES_UNICODE = 0x103a001f,
+ PR_SUPERSEDES_ERROR = 0x103a000a,
+ PR_POST_FOLDER_ENTRIES = 0x103b0102,
+ PR_POST_FOLDER_ENTRIES_ERROR = 0x103b000a,
+ PR_POST_FOLDER_NAMES = 0x103c001e,
+ PR_POST_FOLDER_NAMES_UNICODE = 0x103c001f,
+ PR_POST_FOLDER_NAMES_ERROR = 0x103c000a,
+ PR_POST_REPLY_FOLDER_ENTRIES = 0x103d0102,
+ PR_POST_REPLY_FOLDER_ENTRIES_ERROR = 0x103d000a,
+ PR_POST_REPLY_FOLDER_NAMES = 0x103e001e,
+ PR_POST_REPLY_FOLDER_NAMES_UNICODE = 0x103e001f,
+ PR_POST_REPLY_FOLDER_NAMES_ERROR = 0x103e000a,
+ PR_POST_REPLY_DENIED = 0x103f0102,
+ PR_POST_REPLY_DENIED_ERROR = 0x103f000a,
+ PR_NNTP_XREF = 0x1040001e,
+ PR_NNTP_XREF_UNICODE = 0x1040001f,
+ PR_NNTP_XREF_ERROR = 0x1040000a,
+ PR_INTERNET_PRECEDENCE = 0x1041001e,
+ PR_INTERNET_PRECEDENCE_UNICODE = 0x1041001f,
+ PR_INTERNET_PRECEDENCE_ERROR = 0x1041000a,
+ PR_IN_REPLY_TO_ID = 0x1042001e,
+ PR_IN_REPLY_TO_ID_UNICODE = 0x1042001f,
+ PR_IN_REPLY_TO_ID_ERROR = 0x1042000a,
+ PR_LIST_HELP = 0x1043001e,
+ PR_LIST_HELP_UNICODE = 0x1043001f,
+ PR_LIST_HELP_ERROR = 0x1043000a,
+ PR_LIST_SUBSCRIBE = 0x1044001e,
+ PR_LIST_SUBSCRIBE_UNICODE = 0x1044001f,
+ PR_LIST_SUBSCRIBE_ERROR = 0x1044000a,
+ PR_LIST_UNSUBSCRIBE = 0x1045001e,
+ PR_LIST_UNSUBSCRIBE_UNICODE = 0x1045001f,
+ PR_LIST_UNSUBSCRIBE_ERROR = 0x1045000a,
+ PR_ACTION = 0x10800003,
+ PR_ACTION_ERROR = 0x1080000a,
+ PR_ACTION_FLAG = 0x10810003,
+ PR_ACTION_FLAG_ERROR = 0x1081000a,
+ PR_ACTION_DATE = 0x10820040,
+ PR_ACTION_DATE_ERROR = 0x1082000a,
+ PR_FLAG_STATUS = 0x10900003,
+ PR_FLAG_STATUS_ERROR = 0x1090000a,
+ PR_FLAG_COMPLETE = 0x10910040,
+ PR_FLAG_COMPLETE_ERROR = 0x1091000a,
+ PR_SMTP_TEMP_TBL_DATA = 0x10c00102,
+ PR_SMTP_TEMP_TBL_DATA_ERROR = 0x10c0000a,
+ PR_SMTP_TEMP_TBL_DATA_2 = 0x10c10003,
+ PR_SMTP_TEMP_TBL_DATA_2_ERROR = 0x10c1000a,
+ PR_SMTP_TEMP_TBL_DATA_3 = 0x10c20102,
+ PR_SMTP_TEMP_TBL_DATA_3_ERROR = 0x10c2000a,
+ PR_CAL_START_TIME = 0x10c30040,
+ PR_CAL_START_TIME_ERROR = 0x10c3000a,
+ PR_CAL_END_TIME = 0x10c40040,
+ PR_CAL_END_TIME_ERROR = 0x10c4000a,
+ PR_CAL_RECURRING_ID = 0x10c50040,
+ PR_CAL_RECURRING_ID_ERROR = 0x10c5000a,
+ PR_DAV_SUBMIT_DATA = 0x10c6001e,
+ PR_DAV_SUBMIT_DATA_UNICODE = 0x10c6001f,
+ PR_DAV_SUBMIT_DATA_ERROR = 0x10c6000a,
+ PR_CDO_EXPANSION_INDEX = 0x10c70003,
+ PR_CDO_EXPANSION_INDEX_ERROR = 0x10c7000a,
+ PR_IFS_INTERNAL_DATA = 0x10c80102,
+ PR_IFS_INTERNAL_DATA_ERROR = 0x10c8000a,
+ PR_CAL_REMINDER_NEXT_TIME = 0x10ca0040,
+ PR_CAL_REMINDER_NEXT_TIME_ERROR = 0x10ca000a,
+ PR_OWA_URL = 0x10f1001e,
+ PR_OWA_URL_UNICODE = 0x10f1001f,
+ PR_OWA_URL_ERROR = 0x10f1000a,
+ PR_DISABLE_FULL_FIDELITY = 0x10f2000b,
+ PR_DISABLE_FULL_FIDELITY_ERROR = 0x10f2000a,
+ PR_URL_COMP_NAME = 0x10f3001e,
+ PR_URL_COMP_NAME_UNICODE = 0x10f3001f,
+ PR_URL_COMP_NAME_ERROR = 0x10f3000a,
+ PR_ATTR_HIDDEN = 0x10f4000b,
+ PR_ATTR_HIDDEN_ERROR = 0x10f4000a,
+ PR_ATTR_SYSTEM = 0x10f5000b,
+ PR_ATTR_SYSTEM_ERROR = 0x10f5000a,
+ PR_ATTR_READONLY = 0x10f6000b,
+ PR_ATTR_READONLY_ERROR = 0x10f6000a,
+ PR_P1_CONTENT = 0x11000102,
+ PR_P1_CONTENT_ERROR = 0x1100000a,
+ PR_P1_CONTENT_TYPE = 0x11010102,
+ PR_P1_CONTENT_TYPE_ERROR = 0x1101000a,
+ PR_ROWID = 0x30000003,
+ PR_ROWID_ERROR = 0x3000000a,
+ PR_DISPLAY_NAME = 0x3001001e,
+ PR_DISPLAY_NAME_UNICODE = 0x3001001f,
+ PR_DISPLAY_NAME_ERROR = 0x3001000a,
+ PR_ADDRTYPE = 0x3002001e,
+ PR_ADDRTYPE_UNICODE = 0x3002001f,
+ PR_ADDRTYPE_ERROR = 0x3002000a,
+ PR_EMAIL_ADDRESS = 0x3003001e,
+ PR_EMAIL_ADDRESS_UNICODE = 0x3003001f,
+ PR_EMAIL_ADDRESS_ERROR = 0x3003000a,
+ PR_COMMENT = 0x3004001e,
+ PR_COMMENT_UNICODE = 0x3004001f,
+ PR_COMMENT_ERROR = 0x3004000a,
+ PR_DEPTH = 0x30050003,
+ PR_DEPTH_ERROR = 0x3005000a,
+ PR_PROVIDER_DISPLAY = 0x3006001e,
+ PR_PROVIDER_DISPLAY_UNICODE = 0x3006001f,
+ PR_PROVIDER_DISPLAY_ERROR = 0x3006000a,
+ PR_CREATION_TIME = 0x30070040,
+ PR_CREATION_TIME_ERROR = 0x3007000a,
+ PR_LAST_MODIFICATION_TIME = 0x30080040,
+ PR_LAST_MODIFICATION_TIME_ERROR = 0x3008000a,
+ PR_RESOURCE_FLAGS = 0x30090003,
+ PR_RESOURCE_FLAGS_ERROR = 0x3009000a,
+ PR_PROVIDER_DLL_NAME = 0x300a001e,
+ PR_PROVIDER_DLL_NAME_UNICODE = 0x300a001f,
+ PR_PROVIDER_DLL_NAME_ERROR = 0x300a000a,
+ PR_SEARCH_KEY = 0x300b0102,
+ PR_SEARCH_KEY_ERROR = 0x300b000a,
+ PR_PROVIDER_UID = 0x300c0102,
+ PR_PROVIDER_UID_ERROR = 0x300c000a,
+ PR_PROVIDER_ORDINAL = 0x300d0003,
+ PR_PROVIDER_ORDINAL_ERROR = 0x300d000a,
+ PR_FORM_VERSION = 0x3301001e,
+ PR_FORM_VERSION_UNICODE = 0x3301001f,
+ PR_FORM_VERSION_ERROR = 0x3301000a,
+ PR_FORM_CLSID = 0x33020048,
+ PR_FORM_CLSID_ERROR = 0x3302000a,
+ PR_FORM_CONTACT_NAME = 0x3303001e,
+ PR_FORM_CONTACT_NAME_UNICODE = 0x3303001f,
+ PR_FORM_CONTACT_NAME_ERROR = 0x3303000a,
+ PR_FORM_CATEGORY = 0x3304001e,
+ PR_FORM_CATEGORY_UNICODE = 0x3304001f,
+ PR_FORM_CATEGORY_ERROR = 0x3304000a,
+ PR_FORM_CATEGORY_SUB = 0x3305001e,
+ PR_FORM_CATEGORY_SUB_UNICODE = 0x3305001f,
+ PR_FORM_CATEGORY_SUB_ERROR = 0x3305000a,
+ PR_FORM_HOST_MAP = 0x33061003,
+ PR_FORM_HOST_MAP_ERROR = 0x3306000a,
+ PR_FORM_HIDDEN = 0x3307000b,
+ PR_FORM_HIDDEN_ERROR = 0x3307000a,
+ PR_FORM_DESIGNER_NAME = 0x3308001e,
+ PR_FORM_DESIGNER_NAME_UNICODE = 0x3308001f,
+ PR_FORM_DESIGNER_NAME_ERROR = 0x3308000a,
+ PR_FORM_DESIGNER_GUID = 0x33090048,
+ PR_FORM_DESIGNER_GUID_ERROR = 0x3309000a,
+ PR_FORM_MESSAGE_BEHAVIOR = 0x330a0003,
+ PR_FORM_MESSAGE_BEHAVIOR_ERROR = 0x330a000a,
+ PR_DEFAULT_STORE = 0x3400000b,
+ PR_DEFAULT_STORE_ERROR = 0x3400000a,
+ PR_STORE_SUPPORT_MASK = 0x340d0003,
+ PR_STORE_SUPPORT_MASK_ERROR = 0x340d000a,
+ PR_STORE_STATE = 0x340e0003,
+ PR_STORE_STATE_ERROR = 0x340e000a,
+ PR_IPM_SUBTREE_SEARCH_KEY = 0x34100102,
+ PR_IPM_SUBTREE_SEARCH_KEY_ERROR = 0x3410000a,
+ PR_IPM_OUTBOX_SEARCH_KEY = 0x34110102,
+ PR_IPM_OUTBOX_SEARCH_KEY_ERROR = 0x3411000a,
+ PR_IPM_WASTEBASKET_SEARCH_KEY = 0x34120102,
+ PR_IPM_WASTEBASKET_SEARCH_KEY_ERROR = 0x3412000a,
+ PR_IPM_SENTMAIL_SEARCH_KEY = 0x34130102,
+ PR_IPM_SENTMAIL_SEARCH_KEY_ERROR = 0x3413000a,
+ PR_MDB_PROVIDER = 0x34140102,
+ PR_MDB_PROVIDER_ERROR = 0x3414000a,
+ PR_RECEIVE_FOLDER_SETTINGS = 0x3415000d,
+ PR_RECEIVE_FOLDER_SETTINGS_ERROR = 0x3415000a,
+ PR_VALID_FOLDER_MASK = 0x35df0003,
+ PR_VALID_FOLDER_MASK_ERROR = 0x35df000a,
+ PR_IPM_SUBTREE_ENTRYID = 0x35e00102,
+ PR_IPM_SUBTREE_ENTRYID_ERROR = 0x35e0000a,
+ PR_IPM_OUTBOX_ENTRYID = 0x35e20102,
+ PR_IPM_OUTBOX_ENTRYID_ERROR = 0x35e2000a,
+ PR_IPM_WASTEBASKET_ENTRYID = 0x35e30102,
+ PR_IPM_WASTEBASKET_ENTRYID_ERROR = 0x35e3000a,
+ PR_IPM_SENTMAIL_ENTRYID = 0x35e40102,
+ PR_IPM_SENTMAIL_ENTRYID_ERROR = 0x35e4000a,
+ PR_VIEWS_ENTRYID = 0x35e50102,
+ PR_VIEWS_ENTRYID_ERROR = 0x35e5000a,
+ PR_COMMON_VIEWS_ENTRYID = 0x35e60102,
+ PR_COMMON_VIEWS_ENTRYID_ERROR = 0x35e6000a,
+ PR_FINDER_ENTRYID = 0x35e70102,
+ PR_FINDER_ENTRYID_ERROR = 0x35e7000a,
+ PR_CONTAINER_FLAGS = 0x36000003,
+ PR_CONTAINER_FLAGS_ERROR = 0x3600000a,
+ PR_FOLDER_TYPE = 0x36010003,
+ PR_FOLDER_TYPE_ERROR = 0x3601000a,
+ PR_CONTENT_COUNT = 0x36020003,
+ PR_CONTENT_COUNT_ERROR = 0x3602000a,
+ PR_CONTENT_UNREAD = 0x36030003,
+ PR_CONTENT_UNREAD_ERROR = 0x3603000a,
+ PR_CREATE_TEMPLATES = 0x3604000d,
+ PR_CREATE_TEMPLATES_ERROR = 0x3604000a,
+ PR_DETAILS_TABLE = 0x3605000d,
+ PR_DETAILS_TABLE_ERROR = 0x3605000a,
+ PR_SEARCH = 0x3607000d,
+ PR_SEARCH_ERROR = 0x3607000a,
+ PR_SELECTABLE = 0x3609000b,
+ PR_SELECTABLE_ERROR = 0x3609000a,
+ PR_SUBFOLDERS = 0x360a000b,
+ PR_SUBFOLDERS_ERROR = 0x360a000a,
+ PR_STATUS = 0x360b0003,
+ PR_STATUS_ERROR = 0x360b000a,
+ PR_ANR = 0x360c001e,
+ PR_ANR_UNICODE = 0x360c001f,
+ PR_ANR_ERROR = 0x360c000a,
+ PR_CONTENTS_SORT_ORDER = 0x360d1003,
+ PR_CONTENTS_SORT_ORDER_ERROR = 0x360d000a,
+ PR_CONTAINER_HIERARCHY = 0x360e000d,
+ PR_CONTAINER_HIERARCHY_ERROR = 0x360e000a,
+ PR_CONTAINER_CONTENTS = 0x360f000d,
+ PR_CONTAINER_CONTENTS_ERROR = 0x360f000a,
+ PR_FOLDER_ASSOCIATED_CONTENTS = 0x3610000d,
+ PR_FOLDER_ASSOCIATED_CONTENTS_ERROR = 0x3610000a,
+ PR_DEF_CREATE_DL = 0x36110102,
+ PR_DEF_CREATE_DL_ERROR = 0x3611000a,
+ PR_DEF_CREATE_MAILUSER = 0x36120102,
+ PR_DEF_CREATE_MAILUSER_ERROR = 0x3612000a,
+ PR_CONTAINER_CLASS = 0x3613001e,
+ PR_CONTAINER_CLASS_UNICODE = 0x3613001f,
+ PR_CONTAINER_CLASS_ERROR = 0x3613000a,
+ PR_CONTAINER_MODIFY_VERSION = 0x36140014,
+ PR_CONTAINER_MODIFY_VERSION_ERROR = 0x3614000a,
+ PR_AB_PROVIDER_ID = 0x36150102,
+ PR_AB_PROVIDER_ID_ERROR = 0x3615000a,
+ PR_DEFAULT_VIEW_ENTRYID = 0x36160102,
+ PR_DEFAULT_VIEW_ENTRYID_ERROR = 0x3616000a,
+ PR_ASSOC_CONTENT_COUNT = 0x36170003,
+ PR_ASSOC_CONTENT_COUNT_ERROR = 0x3617000a,
+ PR_PACKED_NAME_PROPS = 0x361c0102,
+ PR_PACKED_NAME_PROPS_ERROR = 0x361c000a,
+ PR_IPM_APPOINTMENT_ENTRYID = 0x36d00102,
+ PR_IPM_APPOINTMENT_ENTRYID_ERROR = 0x36d0000a,
+ PR_IPM_CONTACT_ENTRYID = 0x36d10102,
+ PR_IPM_CONTACT_ENTRYID_ERROR = 0x36d1000a,
+ PR_IPM_JOURNAL_ENTRYID = 0x36d20102,
+ PR_IPM_JOURNAL_ENTRYID_ERROR = 0x36d2000a,
+ PR_IPM_NOTE_ENTRYID = 0x36d30102,
+ PR_IPM_NOTE_ENTRYID_ERROR = 0x36d3000a,
+ PR_IPM_TASK_ENTRYID = 0x36d40102,
+ PR_IPM_TASK_ENTRYID_ERROR = 0x36d4000a,
+ PR_REMINDERS_ONLINE_ENTRYID = 0x36d50102,
+ PR_REMINDERS_ONLINE_ENTRYID_ERROR = 0x36d5000a,
+ PR_REMINDERS_OFFLINE_ENTRYID = 0x36d60102,
+ PR_REMINDERS_OFFLINE_ENTRYID_ERROR = 0x36d6000a,
+ PR_IPM_DRAFTS_ENTRYID = 0x36d70102,
+ PR_IPM_DRAFTS_ENTRYID_ERROR = 0x36d7000a,
+ PR_OUTLOOK_2003_ENTRYIDS = 0x36d81102,
+ PR_OUTLOOK_2003_ENTRYIDS_ERROR = 0x36d8000a,
+ PR_FOLDER_WEBVIEWINFO = 0x36df0102,
+ PR_FOLDER_WEBVIEWINFO_ERROR = 0x36df000a,
+ PR_FOLDER_XVIEWINFO_E = 0x36e00102,
+ PR_FOLDER_XVIEWINFO_E_ERROR = 0x36e0000a,
+ PR_FOLDER_VIEWS_ONLY = 0x36e10003,
+ PR_FOLDER_VIEWS_ONLY_ERROR = 0x36e1000a,
+ PR_FREEBUSY_ENTRYIDS = 0x36e41102,
+ PR_FREEBUSY_ENTRYIDS_ERROR = 0x36e4000a,
+ PR_DEF_MSG_CLASS = 0x36e5001e,
+ PR_DEF_MSG_CLASS_UNICODE = 0x36e5001f,
+ PR_DEF_MSG_CLASS_ERROR = 0x36e5000a,
+ PR_DEF_FORM_NAME = 0x36e6001e,
+ PR_DEF_FORM_NAME_UNICODE = 0x36e6001f,
+ PR_DEF_FORM_NAME_ERROR = 0x36e6000a,
+ PR_GENERATE_EXCHANGE_VIEWS = 0x36e9000b,
+ PR_GENERATE_EXCHANGE_VIEWS_ERROR = 0x36e9000a,
+ PR_AGING_PERIOD = 0x36ec0003,
+ PR_AGING_PERIOD_ERROR = 0x36ec000a,
+ PR_AGING_GRANULARITY = 0x36ee0003,
+ PR_AGING_GRANULARITY_ERROR = 0x36ee000a,
+ PR_ATTACHMENT_X400_PARAMETERS = 0x37000102,
+ PR_ATTACHMENT_X400_PARAMETERS_ERROR = 0x3700000a,
+ PR_ATTACH_DATA_OBJ = 0x3701000d,
+ PR_ATTACH_DATA_OBJ_ERROR = 0x3701000a,
+ PR_ATTACH_DATA_BIN = 0x37010102,
+ PR_ATTACH_ENCODING = 0x37020102,
+ PR_ATTACH_ENCODING_ERROR = 0x3702000a,
+ PR_ATTACH_EXTENSION = 0x3703001e,
+ PR_ATTACH_EXTENSION_UNICODE = 0x3703001f,
+ PR_ATTACH_EXTENSION_ERROR = 0x3703000a,
+ PR_ATTACH_FILENAME = 0x3704001e,
+ PR_ATTACH_FILENAME_UNICODE = 0x3704001f,
+ PR_ATTACH_FILENAME_ERROR = 0x3704000a,
+ PR_ATTACH_METHOD = 0x37050003,
+ PR_ATTACH_METHOD_ERROR = 0x3705000a,
+ PR_ATTACH_LONG_FILENAME = 0x3707001e,
+ PR_ATTACH_LONG_FILENAME_UNICODE = 0x3707001f,
+ PR_ATTACH_LONG_FILENAME_ERROR = 0x3707000a,
+ PR_ATTACH_PATHNAME = 0x3708001e,
+ PR_ATTACH_PATHNAME_UNICODE = 0x3708001f,
+ PR_ATTACH_PATHNAME_ERROR = 0x3708000a,
+ PR_ATTACH_RENDERING = 0x37090102,
+ PR_ATTACH_RENDERING_ERROR = 0x3709000a,
+ PR_ATTACH_TAG = 0x370a0102,
+ PR_ATTACH_TAG_ERROR = 0x370a000a,
+ PR_RENDERING_POSITION = 0x370b0003,
+ PR_RENDERING_POSITION_ERROR = 0x370b000a,
+ PR_ATTACH_TRANSPORT_NAME = 0x370c001e,
+ PR_ATTACH_TRANSPORT_NAME_UNICODE = 0x370c001f,
+ PR_ATTACH_TRANSPORT_NAME_ERROR = 0x370c000a,
+ PR_ATTACH_LONG_PATHNAME = 0x370d001e,
+ PR_ATTACH_LONG_PATHNAME_UNICODE = 0x370d001f,
+ PR_ATTACH_LONG_PATHNAME_ERROR = 0x370d000a,
+ PR_ATTACH_MIME_TAG = 0x370e001e,
+ PR_ATTACH_MIME_TAG_UNICODE = 0x370e001f,
+ PR_ATTACH_MIME_TAG_ERROR = 0x370e000a,
+ PR_ATTACH_ADDITIONAL_INFO = 0x370f0102,
+ PR_ATTACH_ADDITIONAL_INFO_ERROR = 0x370f000a,
+ PR_ATTACH_CONTENT_ID = 0x3712001e,
+ PR_ATTACH_CONTENT_ID_UNICODE = 0x3712001f,
+ PR_ATTACH_CONTENT_ID_ERROR = 0x3712000a,
+ PR_ATTACH_CONTENT_LOCATION = 0x3713001e,
+ PR_ATTACH_CONTENT_LOCATION_UNICODE = 0x3713001f,
+ PR_ATTACH_CONTENT_LOCATION_ERROR = 0x3713000a,
+ PR_ATTACH_FLAGS = 0x37140003,
+ PR_ATTACH_FLAGS_ERROR = 0x3714000a,
+ PR_ATTACH_CONTENT_DISPOSITION = 0x3716001e,
+ PR_ATTACH_CONTENT_DISPOSITION_UNICODE = 0x3716001f,
+ PR_ATTACH_CONTENT_DISPOSITION_ERROR = 0x3716000a,
+ PR_SYNCEVENT_SUPPRESS_GUID = 0x38800102,
+ PR_SYNCEVENT_SUPPRESS_GUID_ERROR = 0x3880000a,
+ PR_DISPLAY_TYPE = 0x39000003,
+ PR_DISPLAY_TYPE_ERROR = 0x3900000a,
+ PR_TEMPLATEID = 0x39020102,
+ PR_TEMPLATEID_ERROR = 0x3902000a,
+ PR_PRIMARY_CAPABILITY = 0x39040102,
+ PR_PRIMARY_CAPABILITY_ERROR = 0x3904000a,
+ PR_SMTP_ADDRESS = 0x39fe001e,
+ PR_SMTP_ADDRESS_UNICODE = 0x39fe001f,
+ PR_SMTP_ADDRESS_ERROR = 0x39fe000a,
+ PR_7BIT_DISPLAY_NAME = 0x39ff001e,
+ PR_7BIT_DISPLAY_NAME_UNICODE = 0x39ff001f,
+ PR_7BIT_DISPLAY_NAME_ERROR = 0x39ff000a,
+ PR_ACCOUNT = 0x3a00001e,
+ PR_ACCOUNT_UNICODE = 0x3a00001f,
+ PR_ACCOUNT_ERROR = 0x3a00000a,
+ PR_ALTERNATE_RECIPIENT = 0x3a010102,
+ PR_ALTERNATE_RECIPIENT_ERROR = 0x3a01000a,
+ PR_CALLBACK_TELEPHONE_NUMBER = 0x3a02001e,
+ PR_CALLBACK_TELEPHONE_NUMBER_UNICODE = 0x3a02001f,
+ PR_CALLBACK_TELEPHONE_NUMBER_ERROR = 0x3a02000a,
+ PR_CONVERSION_PROHIBITED = 0x3a03000b,
+ PR_CONVERSION_PROHIBITED_ERROR = 0x3a03000a,
+ PR_DISCLOSE_RECIPIENTS = 0x3a04000b,
+ PR_DISCLOSE_RECIPIENTS_ERROR = 0x3a04000a,
+ PR_GENERATION = 0x3a05001e,
+ PR_GENERATION_UNICODE = 0x3a05001f,
+ PR_GENERATION_ERROR = 0x3a05000a,
+ PR_GIVEN_NAME = 0x3a06001e,
+ PR_GIVEN_NAME_UNICODE = 0x3a06001f,
+ PR_GIVEN_NAME_ERROR = 0x3a06000a,
+ PR_GOVERNMENT_ID_NUMBER = 0x3a07001e,
+ PR_GOVERNMENT_ID_NUMBER_UNICODE = 0x3a07001f,
+ PR_GOVERNMENT_ID_NUMBER_ERROR = 0x3a07000a,
+ PR_OFFICE_TELEPHONE_NUMBER = 0x3a08001e,
+ PR_OFFICE_TELEPHONE_NUMBER_UNICODE = 0x3a08001f,
+ PR_OFFICE_TELEPHONE_NUMBER_ERROR = 0x3a08000a,
+ PR_HOME_TELEPHONE_NUMBER = 0x3a09001e,
+ PR_HOME_TELEPHONE_NUMBER_UNICODE = 0x3a09001f,
+ PR_HOME_TELEPHONE_NUMBER_ERROR = 0x3a09000a,
+ PR_INITIALS = 0x3a0a001e,
+ PR_INITIALS_UNICODE = 0x3a0a001f,
+ PR_INITIALS_ERROR = 0x3a0a000a,
+ PR_KEYWORD = 0x3a0b001e,
+ PR_KEYWORD_UNICODE = 0x3a0b001f,
+ PR_KEYWORD_ERROR = 0x3a0b000a,
+ PR_LANGUAGE = 0x3a0c001e,
+ PR_LANGUAGE_UNICODE = 0x3a0c001f,
+ PR_LANGUAGE_ERROR = 0x3a0c000a,
+ PR_LOCATION = 0x3a0d001e,
+ PR_LOCATION_UNICODE = 0x3a0d001f,
+ PR_LOCATION_ERROR = 0x3a0d000a,
+ PR_MAIL_PERMISSION = 0x3a0e000b,
+ PR_MAIL_PERMISSION_ERROR = 0x3a0e000a,
+ PR_MHS_COMMON_NAME = 0x3a0f001e,
+ PR_MHS_COMMON_NAME_UNICODE = 0x3a0f001f,
+ PR_MHS_COMMON_NAME_ERROR = 0x3a0f000a,
+ PR_ORGANIZATIONAL_ID_NUMBER = 0x3a10001e,
+ PR_ORGANIZATIONAL_ID_NUMBER_UNICODE = 0x3a10001f,
+ PR_ORGANIZATIONAL_ID_NUMBER_ERROR = 0x3a10000a,
+ PR_SURNAME = 0x3a11001e,
+ PR_SURNAME_UNICODE = 0x3a11001f,
+ PR_SURNAME_ERROR = 0x3a11000a,
+ PR_ORIGINAL_ENTRYID = 0x3a120102,
+ PR_ORIGINAL_ENTRYID_ERROR = 0x3a12000a,
+ PR_ORIGINAL_DISPLAY_NAME = 0x3a13001e,
+ PR_ORIGINAL_DISPLAY_NAME_UNICODE = 0x3a13001f,
+ PR_ORIGINAL_DISPLAY_NAME_ERROR = 0x3a13000a,
+ PR_ORIGINAL_SEARCH_KEY = 0x3a140102,
+ PR_ORIGINAL_SEARCH_KEY_ERROR = 0x3a14000a,
+ PR_POSTAL_ADDRESS = 0x3a15001e,
+ PR_POSTAL_ADDRESS_UNICODE = 0x3a15001f,
+ PR_POSTAL_ADDRESS_ERROR = 0x3a15000a,
+ PR_COMPANY_NAME = 0x3a16001e,
+ PR_COMPANY_NAME_UNICODE = 0x3a16001f,
+ PR_COMPANY_NAME_ERROR = 0x3a16000a,
+ PR_TITLE = 0x3a17001e,
+ PR_TITLE_UNICODE = 0x3a17001f,
+ PR_TITLE_ERROR = 0x3a17000a,
+ PR_DEPARTMENT_NAME = 0x3a18001e,
+ PR_DEPARTMENT_NAME_UNICODE = 0x3a18001f,
+ PR_DEPARTMENT_NAME_ERROR = 0x3a18000a,
+ PR_OFFICE_LOCATION = 0x3a19001e,
+ PR_OFFICE_LOCATION_UNICODE = 0x3a19001f,
+ PR_OFFICE_LOCATION_ERROR = 0x3a19000a,
+ PR_PRIMARY_TELEPHONE_NUMBER = 0x3a1a001e,
+ PR_PRIMARY_TELEPHONE_NUMBER_UNICODE = 0x3a1a001f,
+ PR_PRIMARY_TELEPHONE_NUMBER_ERROR = 0x3a1a000a,
+ PR_OFFICE2_TELEPHONE_NUMBER = 0x3a1b001e,
+ PR_OFFICE2_TELEPHONE_NUMBER_UNICODE = 0x3a1b001f,
+ PR_OFFICE2_TELEPHONE_NUMBER_ERROR = 0x3a1b000a,
+ PR_MOBILE_TELEPHONE_NUMBER = 0x3a1c001e,
+ PR_MOBILE_TELEPHONE_NUMBER_UNICODE = 0x3a1c001f,
+ PR_MOBILE_TELEPHONE_NUMBER_ERROR = 0x3a1c000a,
+ PR_RADIO_TELEPHONE_NUMBER = 0x3a1d001e,
+ PR_RADIO_TELEPHONE_NUMBER_UNICODE = 0x3a1d001f,
+ PR_RADIO_TELEPHONE_NUMBER_ERROR = 0x3a1d000a,
+ PR_CAR_TELEPHONE_NUMBER = 0x3a1e001e,
+ PR_CAR_TELEPHONE_NUMBER_UNICODE = 0x3a1e001f,
+ PR_CAR_TELEPHONE_NUMBER_ERROR = 0x3a1e000a,
+ PR_OTHER_TELEPHONE_NUMBER = 0x3a1f001e,
+ PR_OTHER_TELEPHONE_NUMBER_UNICODE = 0x3a1f001f,
+ PR_OTHER_TELEPHONE_NUMBER_ERROR = 0x3a1f000a,
+ PR_TRANSMITTABLE_DISPLAY_NAME = 0x3a20001e,
+ PR_TRANSMITTABLE_DISPLAY_NAME_UNICODE = 0x3a20001f,
+ PR_TRANSMITTABLE_DISPLAY_NAME_ERROR = 0x3a20000a,
+ PR_PAGER_TELEPHONE_NUMBER = 0x3a21001e,
+ PR_PAGER_TELEPHONE_NUMBER_UNICODE = 0x3a21001f,
+ PR_PAGER_TELEPHONE_NUMBER_ERROR = 0x3a21000a,
+ PR_USER_CERTIFICATE = 0x3a220102,
+ PR_USER_CERTIFICATE_ERROR = 0x3a22000a,
+ PR_PRIMARY_FAX_NUMBER = 0x3a23001e,
+ PR_PRIMARY_FAX_NUMBER_UNICODE = 0x3a23001f,
+ PR_PRIMARY_FAX_NUMBER_ERROR = 0x3a23000a,
+ PR_HOME_FAX_NUMBER = 0x3a25001e,
+ PR_HOME_FAX_NUMBER_UNICODE = 0x3a25001f,
+ PR_HOME_FAX_NUMBER_ERROR = 0x3a25000a,
+ PR_COUNTRY = 0x3a26001e,
+ PR_COUNTRY_UNICODE = 0x3a26001f,
+ PR_COUNTRY_ERROR = 0x3a26000a,
+ PR_LOCALITY = 0x3a27001e,
+ PR_LOCALITY_UNICODE = 0x3a27001f,
+ PR_LOCALITY_ERROR = 0x3a27000a,
+ PR_STATE_OR_PROVINCE = 0x3a28001e,
+ PR_STATE_OR_PROVINCE_UNICODE = 0x3a28001f,
+ PR_STATE_OR_PROVINCE_ERROR = 0x3a28000a,
+ PR_STREET_ADDRESS = 0x3a29001e,
+ PR_STREET_ADDRESS_UNICODE = 0x3a29001f,
+ PR_STREET_ADDRESS_ERROR = 0x3a29000a,
+ PR_POSTAL_CODE = 0x3a2a001e,
+ PR_POSTAL_CODE_UNICODE = 0x3a2a001f,
+ PR_POSTAL_CODE_ERROR = 0x3a2a000a,
+ PR_POST_OFFICE_BOX = 0x3a2b001e,
+ PR_POST_OFFICE_BOX_UNICODE = 0x3a2b001f,
+ PR_POST_OFFICE_BOX_ERROR = 0x3a2b000a,
+ PR_TELEX_NUMBER = 0x3a2c001e,
+ PR_TELEX_NUMBER_UNICODE = 0x3a2c001f,
+ PR_TELEX_NUMBER_ERROR = 0x3a2c000a,
+ PR_ISDN_NUMBER = 0x3a2d001e,
+ PR_ISDN_NUMBER_UNICODE = 0x3a2d001f,
+ PR_ISDN_NUMBER_ERROR = 0x3a2d000a,
+ PR_ASSISTANT_TELEPHONE_NUMBER = 0x3a2e001e,
+ PR_ASSISTANT_TELEPHONE_NUMBER_UNICODE = 0x3a2e001f,
+ PR_ASSISTANT_TELEPHONE_NUMBER_ERROR = 0x3a2e000a,
+ PR_HOME2_TELEPHONE_NUMBER = 0x3a2f001e,
+ PR_HOME2_TELEPHONE_NUMBER_UNICODE = 0x3a2f001f,
+ PR_HOME2_TELEPHONE_NUMBER_ERROR = 0x3a2f000a,
+ PR_ASSISTANT = 0x3a30001e,
+ PR_ASSISTANT_UNICODE = 0x3a30001f,
+ PR_ASSISTANT_ERROR = 0x3a30000a,
+ PR_SEND_RICH_INFO = 0x3a40000b,
+ PR_SEND_RICH_INFO_ERROR = 0x3a40000a,
+ PR_WEDDING_ANNIVERSARY = 0x3a410040,
+ PR_WEDDING_ANNIVERSARY_ERROR = 0x3a41000a,
+ PR_BIRTHDAY = 0x3a420040,
+ PR_BIRTHDAY_ERROR = 0x3a42000a,
+ PR_HOBBIES = 0x3a43001e,
+ PR_HOBBIES_UNICODE = 0x3a43001f,
+ PR_HOBBIES_ERROR = 0x3a43000a,
+ PR_MIDDLE_NAME = 0x3a44001e,
+ PR_MIDDLE_NAME_UNICODE = 0x3a44001f,
+ PR_MIDDLE_NAME_ERROR = 0x3a44000a,
+ PR_DISPLAY_NAME_PREFIX = 0x3a45001e,
+ PR_DISPLAY_NAME_PREFIX_UNICODE = 0x3a45001f,
+ PR_DISPLAY_NAME_PREFIX_ERROR = 0x3a45000a,
+ PR_PROFESSION = 0x3a46001e,
+ PR_PROFESSION_UNICODE = 0x3a46001f,
+ PR_PROFESSION_ERROR = 0x3a46000a,
+ PR_PREFERRED_BY_NAME = 0x3a47001e,
+ PR_PREFERRED_BY_NAME_UNICODE = 0x3a47001f,
+ PR_PREFERRED_BY_NAME_ERROR = 0x3a47000a,
+ PR_SPOUSE_NAME = 0x3a48001e,
+ PR_SPOUSE_NAME_UNICODE = 0x3a48001f,
+ PR_SPOUSE_NAME_ERROR = 0x3a48000a,
+ PR_COMPUTER_NETWORK_NAME = 0x3a49001e,
+ PR_COMPUTER_NETWORK_NAME_UNICODE = 0x3a49001f,
+ PR_COMPUTER_NETWORK_NAME_ERROR = 0x3a49000a,
+ PR_CUSTOMER_ID = 0x3a4a001e,
+ PR_CUSTOMER_ID_UNICODE = 0x3a4a001f,
+ PR_CUSTOMER_ID_ERROR = 0x3a4a000a,
+ PR_TTYTDD_PHONE_NUMBER = 0x3a4b001e,
+ PR_TTYTDD_PHONE_NUMBER_UNICODE = 0x3a4b001f,
+ PR_TTYTDD_PHONE_NUMBER_ERROR = 0x3a4b000a,
+ PR_FTP_SITE = 0x3a4c001e,
+ PR_FTP_SITE_UNICODE = 0x3a4c001f,
+ PR_FTP_SITE_ERROR = 0x3a4c000a,
+ PR_GENDER = 0x3a4d0002,
+ PR_GENDER_ERROR = 0x3a4d000a,
+ PR_MANAGER_NAME = 0x3a4e001e,
+ PR_MANAGER_NAME_UNICODE = 0x3a4e001f,
+ PR_MANAGER_NAME_ERROR = 0x3a4e000a,
+ PR_NICKNAME = 0x3a4f001e,
+ PR_NICKNAME_UNICODE = 0x3a4f001f,
+ PR_NICKNAME_ERROR = 0x3a4f000a,
+ PR_PERSONAL_HOME_PAGE = 0x3a50001e,
+ PR_PERSONAL_HOME_PAGE_UNICODE = 0x3a50001f,
+ PR_PERSONAL_HOME_PAGE_ERROR = 0x3a50000a,
+ PR_BUSINESS_HOME_PAGE = 0x3a51001e,
+ PR_BUSINESS_HOME_PAGE_UNICODE = 0x3a51001f,
+ PR_BUSINESS_HOME_PAGE_ERROR = 0x3a51000a,
+ PR_CONTACT_VERSION = 0x3a520048,
+ PR_CONTACT_VERSION_ERROR = 0x3a52000a,
+ PR_CONTACT_ENTRYIDS = 0x3a531102,
+ PR_CONTACT_ENTRYIDS_ERROR = 0x3a53000a,
+ PR_CONTACT_ADDRTYPES = 0x3a54101e,
+ PR_CONTACT_ADDRTYPES_UNICODE = 0x3a54101f,
+ PR_CONTACT_ADDRTYPES_ERROR = 0x3a54000a,
+ PR_CONTACT_DEFAULT_ADDRESS_INDEX = 0x3a550003,
+ PR_CONTACT_DEFAULT_ADDRESS_INDEX_ERROR = 0x3a55000a,
+ PR_CONTACT_EMAIL_ADDRESSES = 0x3a56101e,
+ PR_CONTACT_EMAIL_ADDRESSES_UNICODE = 0x3a56101f,
+ PR_CONTACT_EMAIL_ADDRESSES_ERROR = 0x3a56000a,
+ PR_COMPANY_MAIN_PHONE_NUMBER = 0x3a57001e,
+ PR_COMPANY_MAIN_PHONE_NUMBER_UNICODE = 0x3a57001f,
+ PR_COMPANY_MAIN_PHONE_NUMBER_ERROR = 0x3a57000a,
+ PR_CHILDRENS_NAMES = 0x3a58101e,
+ PR_CHILDRENS_NAMES_UNICODE = 0x3a58101f,
+ PR_CHILDRENS_NAMES_ERROR = 0x3a58000a,
+ PR_HOME_ADDRESS_CITY = 0x3a59001e,
+ PR_HOME_ADDRESS_CITY_UNICODE = 0x3a59001f,
+ PR_HOME_ADDRESS_CITY_ERROR = 0x3a59000a,
+ PR_HOME_ADDRESS_COUNTRY = 0x3a5a001e,
+ PR_HOME_ADDRESS_COUNTRY_UNICODE = 0x3a5a001f,
+ PR_HOME_ADDRESS_COUNTRY_ERROR = 0x3a5a000a,
+ PR_HOME_ADDRESS_POSTAL_CODE = 0x3a5b001e,
+ PR_HOME_ADDRESS_POSTAL_CODE_UNICODE = 0x3a5b001f,
+ PR_HOME_ADDRESS_POSTAL_CODE_ERROR = 0x3a5b000a,
+ PR_HOME_ADDRESS_STATE_OR_PROVINCE = 0x3a5c001e,
+ PR_HOME_ADDRESS_STATE_OR_PROVINCE_UNICODE = 0x3a5c001f,
+ PR_HOME_ADDRESS_STATE_OR_PROVINCE_ERROR = 0x3a5c000a,
+ PR_HOME_ADDRESS_STREET = 0x3a5d001e,
+ PR_HOME_ADDRESS_STREET_UNICODE = 0x3a5d001f,
+ PR_HOME_ADDRESS_STREET_ERROR = 0x3a5d000a,
+ PR_HOME_ADDRESS_POST_OFFICE_BOX = 0x3a5e001e,
+ PR_HOME_ADDRESS_POST_OFFICE_BOX_UNICODE = 0x3a5e001f,
+ PR_HOME_ADDRESS_POST_OFFICE_BOX_ERROR = 0x3a5e000a,
+ PR_OTHER_ADDRESS_CITY = 0x3a5f001e,
+ PR_OTHER_ADDRESS_CITY_UNICODE = 0x3a5f001f,
+ PR_OTHER_ADDRESS_CITY_ERROR = 0x3a5f000a,
+ PR_OTHER_ADDRESS_COUNTRY = 0x3a60001e,
+ PR_OTHER_ADDRESS_COUNTRY_UNICODE = 0x3a60001f,
+ PR_OTHER_ADDRESS_COUNTRY_ERROR = 0x3a60000a,
+ PR_OTHER_ADDRESS_POSTAL_CODE = 0x3a61001e,
+ PR_OTHER_ADDRESS_POSTAL_CODE_UNICODE = 0x3a61001f,
+ PR_OTHER_ADDRESS_POSTAL_CODE_ERROR = 0x3a61000a,
+ PR_OTHER_ADDRESS_STATE_OR_PROVINCE = 0x3a62001e,
+ PR_OTHER_ADDRESS_STATE_OR_PROVINCE_UNICODE = 0x3a62001f,
+ PR_OTHER_ADDRESS_STATE_OR_PROVINCE_ERROR = 0x3a62000a,
+ PR_OTHER_ADDRESS_STREET = 0x3a63001e,
+ PR_OTHER_ADDRESS_STREET_UNICODE = 0x3a63001f,
+ PR_OTHER_ADDRESS_STREET_ERROR = 0x3a63000a,
+ PR_OTHER_ADDRESS_POST_OFFICE_BOX = 0x3a64001e,
+ PR_OTHER_ADDRESS_POST_OFFICE_BOX_UNICODE = 0x3a64001f,
+ PR_OTHER_ADDRESS_POST_OFFICE_BOX_ERROR = 0x3a64000a,
+ PR_USER_X509_CERTIFICATE = 0x3a701102,
+ PR_USER_X509_CERTIFICATE_ERROR = 0x3a70000a,
+ PR_SEND_INTERNET_ENCODING = 0x3a710003,
+ PR_SEND_INTERNET_ENCODING_ERROR = 0x3a71000a,
+ PR_STORE_PROVIDERS = 0x3d000102,
+ PR_STORE_PROVIDERS_ERROR = 0x3d00000a,
+ PR_AB_PROVIDERS = 0x3d010102,
+ PR_AB_PROVIDERS_ERROR = 0x3d01000a,
+ PR_TRANSPORT_PROVIDERS = 0x3d020102,
+ PR_TRANSPORT_PROVIDERS_ERROR = 0x3d02000a,
+ PR_DEFAULT_PROFILE = 0x3d04000b,
+ PR_DEFAULT_PROFILE_ERROR = 0x3d04000a,
+ PR_AB_SEARCH_PATH = 0x3d051102,
+ PR_AB_SEARCH_PATH_ERROR = 0x3d05000a,
+ PR_AB_DEFAULT_DIR = 0x3d060102,
+ PR_AB_DEFAULT_DIR_ERROR = 0x3d06000a,
+ PR_AB_DEFAULT_PAB = 0x3d070102,
+ PR_AB_DEFAULT_PAB_ERROR = 0x3d07000a,
+ PR_FILTERING_HOOKS = 0x3d080102,
+ PR_FILTERING_HOOKS_ERROR = 0x3d08000a,
+ PR_SERVICE_NAME = 0x3d09001e,
+ PR_SERVICE_NAME_UNICODE = 0x3d09001f,
+ PR_SERVICE_NAME_ERROR = 0x3d09000a,
+ PR_SERVICE_DLL_NAME = 0x3d0a001e,
+ PR_SERVICE_DLL_NAME_UNICODE = 0x3d0a001f,
+ PR_SERVICE_DLL_NAME_ERROR = 0x3d0a000a,
+ PR_SERVICE_ENTRY_NAME = 0x3d0b001e,
+ PR_SERVICE_ENTRY_NAME_UNICODE = 0x3d0b001f,
+ PR_SERVICE_ENTRY_NAME_ERROR = 0x3d0b000a,
+ PR_SERVICE_UID = 0x3d0c0102,
+ PR_SERVICE_UID_ERROR = 0x3d0c000a,
+ PR_SERVICE_EXTRA_UIDS = 0x3d0d0102,
+ PR_SERVICE_EXTRA_UIDS_ERROR = 0x3d0d000a,
+ PR_SERVICES = 0x3d0e0102,
+ PR_SERVICES_ERROR = 0x3d0e000a,
+ PR_SERVICE_SUPPORT_FILES = 0x3d0f101e,
+ PR_SERVICE_SUPPORT_FILES_UNICODE = 0x3d0f101f,
+ PR_SERVICE_SUPPORT_FILES_ERROR = 0x3d0f000a,
+ PR_SERVICE_DELETE_FILES = 0x3d10101e,
+ PR_SERVICE_DELETE_FILES_UNICODE = 0x3d10101f,
+ PR_SERVICE_DELETE_FILES_ERROR = 0x3d10000a,
+ PR_AB_SEARCH_PATH_UPDATE = 0x3d110102,
+ PR_AB_SEARCH_PATH_UPDATE_ERROR = 0x3d11000a,
+ PR_PROFILE_NAME = 0x3d12001e,
+ PR_PROFILE_NAME_UNICODE = 0x3d12001f,
+ PR_PROFILE_NAME_ERROR = 0x3d12000a,
+ PR_SERVICE_INSTALL_ID = 0x3d13001e,
+ PR_SERVICE_INSTALL_ID_UNICODE = 0x3d13001f,
+ PR_SERVICE_INSTALL_ID_ERROR = 0x3d13000a,
+ PR_ADMIN_SECURITY_DESCRIPTOR = 0x3d210102,
+ PR_ADMIN_SECURITY_DESCRIPTOR_ERROR = 0x3d21000a,
+ PR_IDENTITY_DISPLAY = 0x3e00001e,
+ PR_IDENTITY_DISPLAY_UNICODE = 0x3e00001f,
+ PR_IDENTITY_DISPLAY_ERROR = 0x3e00000a,
+ PR_IDENTITY_ENTRYID = 0x3e010102,
+ PR_IDENTITY_ENTRYID_ERROR = 0x3e01000a,
+ PR_RESOURCE_METHODS = 0x3e020003,
+ PR_RESOURCE_METHODS_ERROR = 0x3e02000a,
+ PR_RESOURCE_TYPE = 0x3e030003,
+ PR_RESOURCE_TYPE_ERROR = 0x3e03000a,
+ PR_STATUS_CODE = 0x3e040003,
+ PR_STATUS_CODE_ERROR = 0x3e04000a,
+ PR_IDENTITY_SEARCH_KEY = 0x3e050102,
+ PR_IDENTITY_SEARCH_KEY_ERROR = 0x3e05000a,
+ PR_OWN_STORE_ENTRYID = 0x3e060102,
+ PR_OWN_STORE_ENTRYID_ERROR = 0x3e06000a,
+ PR_RESOURCE_PATH = 0x3e07001e,
+ PR_RESOURCE_PATH_UNICODE = 0x3e07001f,
+ PR_RESOURCE_PATH_ERROR = 0x3e07000a,
+ PR_STATUS_STRING = 0x3e08001e,
+ PR_STATUS_STRING_UNICODE = 0x3e08001f,
+ PR_STATUS_STRING_ERROR = 0x3e08000a,
+ PR_X400_DEFERRED_DELIVERY_CANCEL = 0x3e09000b,
+ PR_X400_DEFERRED_DELIVERY_CANCEL_ERROR = 0x3e09000a,
+ PR_HEADER_FOLDER_ENTRYID = 0x3e0a0102,
+ PR_HEADER_FOLDER_ENTRYID_ERROR = 0x3e0a000a,
+ PR_REMOTE_PROGRESS = 0x3e0b0003,
+ PR_REMOTE_PROGRESS_ERROR = 0x3e0b000a,
+ PR_REMOTE_PROGRESS_TEXT = 0x3e0c001e,
+ PR_REMOTE_PROGRESS_TEXT_UNICODE = 0x3e0c001f,
+ PR_REMOTE_PROGRESS_TEXT_ERROR = 0x3e0c000a,
+ PR_REMOTE_VALIDATE_OK = 0x3e0d000b,
+ PR_REMOTE_VALIDATE_OK_ERROR = 0x3e0d000a,
+ PR_CONTROL_FLAGS = 0x3f000003,
+ PR_CONTROL_FLAGS_ERROR = 0x3f00000a,
+ PR_CONTROL_STRUCTURE = 0x3f010102,
+ PR_CONTROL_STRUCTURE_ERROR = 0x3f01000a,
+ PR_CONTROL_TYPE = 0x3f020003,
+ PR_CONTROL_TYPE_ERROR = 0x3f02000a,
+ PR_DELTAX = 0x3f030003,
+ PR_DELTAX_ERROR = 0x3f03000a,
+ PR_DELTAY = 0x3f040003,
+ PR_DELTAY_ERROR = 0x3f04000a,
+ PR_XPOS = 0x3f050003,
+ PR_XPOS_ERROR = 0x3f05000a,
+ PR_YPOS = 0x3f060003,
+ PR_YPOS_ERROR = 0x3f06000a,
+ PR_CONTROL_ID = 0x3f070102,
+ PR_CONTROL_ID_ERROR = 0x3f07000a,
+ PR_INITIAL_DETAILS_PANE = 0x3f080003,
+ PR_INITIAL_DETAILS_PANE_ERROR = 0x3f08000a,
+ PR_DID = 0x3f800014,
+ PR_DID_ERROR = 0x3f80000a,
+ PR_SEQID = 0x3f810014,
+ PR_SEQID_ERROR = 0x3f81000a,
+ PR_DRAFTID = 0x3f820014,
+ PR_DRAFTID_ERROR = 0x3f82000a,
+ PR_CHECK_IN_TIME = 0x3f830040,
+ PR_CHECK_IN_TIME_ERROR = 0x3f83000a,
+ PR_CHECK_IN_COMMENT = 0x3f84001e,
+ PR_CHECK_IN_COMMENT_UNICODE = 0x3f84001f,
+ PR_CHECK_IN_COMMENT_ERROR = 0x3f84000a,
+ PR_VERSION_OP_CODE = 0x3f850003,
+ PR_VERSION_OP_CODE_ERROR = 0x3f85000a,
+ PR_VERSION_OP_DATA = 0x3f860102,
+ PR_VERSION_OP_DATA_ERROR = 0x3f86000a,
+ PR_VERSION_SEQUENCE_NUMBER = 0x3f870003,
+ PR_VERSION_SEQUENCE_NUMBER_ERROR = 0x3f87000a,
+ PR_ATTACH_ID = 0x3f880014,
+ PR_ATTACH_ID_ERROR = 0x3f88000a,
+ PR_PKM_DOC_STATUS = 0x3f8d001e,
+ PR_PKM_DOC_STATUS_UNICODE = 0x3f8d001f,
+ PR_PKM_DOC_STATUS_ERROR = 0x3f8d000a,
+ PR_MV_PKM_OPERATION_REQ = 0x3f8e101e,
+ PR_MV_PKM_OPERATION_REQ_UNICODE = 0x3f8e101f,
+ PR_MV_PKM_OPERATION_REQ_ERROR = 0x3f8e000a,
+ PR_PKM_DOC_INTERNAL_STATE = 0x3f8f001e,
+ PR_PKM_DOC_INTERNAL_STATE_UNICODE = 0x3f8f001f,
+ PR_PKM_DOC_INTERNAL_STATE_ERROR = 0x3f8f000a,
+ PR_VERSIONING_FLAGS = 0x3f900002,
+ PR_VERSIONING_FLAGS_ERROR = 0x3f90000a,
+ PR_PKM_LAST_UNAPPROVED_VID = 0x3f910102,
+ PR_PKM_LAST_UNAPPROVED_VID_ERROR = 0x3f91000a,
+ PR_MV_PKM_VERSION_LABELS = 0x3f92101e,
+ PR_MV_PKM_VERSION_LABELS_UNICODE = 0x3f92101f,
+ PR_MV_PKM_VERSION_LABELS_ERROR = 0x3f92000a,
+ PR_MV_PKM_VERSION_STATUS = 0x3f93101e,
+ PR_MV_PKM_VERSION_STATUS_UNICODE = 0x3f93101f,
+ PR_MV_PKM_VERSION_STATUS_ERROR = 0x3f93000a,
+ PR_PKM_INTERNAL_DATA = 0x3f940102,
+ PR_PKM_INTERNAL_DATA_ERROR = 0x3f94000a,
+ PR_LAST_CONFLICT = 0x3fc90102,
+ PR_LAST_CONFLICT_ERROR = 0x3fc9000a,
+ PR_CONFLICT_MSG_KEY = 0x3fca0102,
+ PR_CONFLICT_MSG_KEY_ERROR = 0x3fca000a,
+ PR_REPL_HEADER = 0x3fd00102,
+ PR_REPL_HEADER_ERROR = 0x3fd0000a,
+ PR_REPL_STATUS = 0x3fd10102,
+ PR_REPL_STATUS_ERROR = 0x3fd1000a,
+ PR_REPL_CHANGES = 0x3fd20102,
+ PR_REPL_CHANGES_ERROR = 0x3fd2000a,
+ PR_REPL_RGM = 0x3fd30102,
+ PR_REPL_RGM_ERROR = 0x3fd3000a,
+ PR_RMI = 0x3fd40102,
+ PR_RMI_ERROR = 0x3fd4000a,
+ PR_INTERNAL_POST_REPLY = 0x3fd50102,
+ PR_INTERNAL_POST_REPLY_ERROR = 0x3fd5000a,
+ PR_NTSD_MODIFICATION_TIME = 0x3fd60040,
+ PR_NTSD_MODIFICATION_TIME_ERROR = 0x3fd6000a,
+ PR_PREVIEW_UNREAD = 0x3fd8001e,
+ PR_PREVIEW_UNREAD_UNICODE = 0x3fd8001f,
+ PR_PREVIEW_UNREAD_ERROR = 0x3fd8000a,
+ PR_PREVIEW = 0x3fd9001e,
+ PR_PREVIEW_UNICODE = 0x3fd9001f,
+ PR_PREVIEW_ERROR = 0x3fd9000a,
+ PR_ABSTRACT = 0x3fda001e,
+ PR_ABSTRACT_UNICODE = 0x3fda001f,
+ PR_ABSTRACT_ERROR = 0x3fda000a,
+ PR_DL_REPORT_FLAGS = 0x3fdb0003,
+ PR_DL_REPORT_FLAGS_ERROR = 0x3fdb000a,
+ PR_BILATERAL_INFO = 0x3fdc0102,
+ PR_BILATERAL_INFO_ERROR = 0x3fdc000a,
+ PR_MSG_BODY_ID = 0x3fdd0003,
+ PR_MSG_BODY_ID_ERROR = 0x3fdd000a,
+ PR_INTERNET_CPID = 0x3fde0003,
+ PR_INTERNET_CPID_ERROR = 0x3fde000a,
+ PR_AUTO_RESPONSE_SUPPRESS = 0x3fdf0003,
+ PR_AUTO_RESPONSE_SUPPRESS_ERROR = 0x3fdf000a,
+ PR_ACL_TABLE = 0x3fe0000d,
+ PR_ACL_TABLE_ERROR = 0x3fe0000a,
+ PR_ACL_DATA = 0x3fe00102,
+ PR_RULES_TABLE = 0x3fe1000d,
+ PR_RULES_TABLE_ERROR = 0x3fe1000a,
+ PR_RULES_DATA = 0x3fe10102,
+ PR_FOLDER_DESIGN_FLAGS = 0x3fe20003,
+ PR_FOLDER_DESIGN_FLAGS_ERROR = 0x3fe2000a,
+ PR_DELEGATED_BY_RULE = 0x3fe3000b,
+ PR_DELEGATED_BY_RULE_ERROR = 0x3fe3000a,
+ PR_DESIGN_IN_PROGRESS = 0x3fe4000b,
+ PR_DESIGN_IN_PROGRESS_ERROR = 0x3fe4000a,
+ PR_SECURE_ORIGINATION = 0x3fe5000b,
+ PR_SECURE_ORIGINATION_ERROR = 0x3fe5000a,
+ PR_PUBLISH_IN_ADDRESS_BOOK = 0x3fe6000b,
+ PR_PUBLISH_IN_ADDRESS_BOOK_ERROR = 0x3fe6000a,
+ PR_RESOLVE_METHOD = 0x3fe70003,
+ PR_RESOLVE_METHOD_ERROR = 0x3fe7000a,
+ PR_ADDRESS_BOOK_DISPLAY_NAME = 0x3fe8001e,
+ PR_ADDRESS_BOOK_DISPLAY_NAME_UNICODE = 0x3fe8001f,
+ PR_ADDRESS_BOOK_DISPLAY_NAME_ERROR = 0x3fe8000a,
+ PR_EFORMS_LOCALE_ID = 0x3fe90003,
+ PR_EFORMS_LOCALE_ID_ERROR = 0x3fe9000a,
+ PR_HAS_DAMS = 0x3fea000b,
+ PR_HAS_DAMS_ERROR = 0x3fea000a,
+ PR_DEFERRED_SEND_NUMBER = 0x3feb0003,
+ PR_DEFERRED_SEND_NUMBER_ERROR = 0x3feb000a,
+ PR_DEFERRED_SEND_UNITS = 0x3fec0003,
+ PR_DEFERRED_SEND_UNITS_ERROR = 0x3fec000a,
+ PR_EXPIRY_NUMBER = 0x3fed0003,
+ PR_EXPIRY_NUMBER_ERROR = 0x3fed000a,
+ PR_EXPIRY_UNITS = 0x3fee0003,
+ PR_EXPIRY_UNITS_ERROR = 0x3fee000a,
+ PR_DEFERRED_SEND_TIME = 0x3fef0040,
+ PR_DEFERRED_SEND_TIME_ERROR = 0x3fef000a,
+ PR_CONFLICT_ENTRYID = 0x3ff00102,
+ PR_CONFLICT_ENTRYID_ERROR = 0x3ff0000a,
+ PR_MESSAGE_LOCALE_ID = 0x3ff10003,
+ PR_MESSAGE_LOCALE_ID_ERROR = 0x3ff1000a,
+ PR_RULE_TRIGGER_HISTORY = 0x3ff20102,
+ PR_RULE_TRIGGER_HISTORY_ERROR = 0x3ff2000a,
+ PR_MOVE_TO_STORE_ENTRYID = 0x3ff30102,
+ PR_MOVE_TO_STORE_ENTRYID_ERROR = 0x3ff3000a,
+ PR_MOVE_TO_FOLDER_ENTRYID = 0x3ff40102,
+ PR_MOVE_TO_FOLDER_ENTRYID_ERROR = 0x3ff4000a,
+ PR_STORAGE_QUOTA_LIMIT = 0x3ff50003,
+ PR_STORAGE_QUOTA_LIMIT_ERROR = 0x3ff5000a,
+ PR_EXCESS_STORAGE_USED = 0x3ff60003,
+ PR_EXCESS_STORAGE_USED_ERROR = 0x3ff6000a,
+ PR_SVR_GENERATING_QUOTA_MSG = 0x3ff7001e,
+ PR_SVR_GENERATING_QUOTA_MSG_UNICODE = 0x3ff7001f,
+ PR_SVR_GENERATING_QUOTA_MSG_ERROR = 0x3ff7000a,
+ PR_CREATOR_NAME = 0x3ff8001e,
+ PR_CREATOR_NAME_UNICODE = 0x3ff8001f,
+ PR_CREATOR_NAME_ERROR = 0x3ff8000a,
+ PR_CREATOR_ENTRYID = 0x3ff90102,
+ PR_CREATOR_ENTRYID_ERROR = 0x3ff9000a,
+ PR_LAST_MODIFIER_NAME = 0x3ffa001e,
+ PR_LAST_MODIFIER_NAME_UNICODE = 0x3ffa001f,
+ PR_LAST_MODIFIER_NAME_ERROR = 0x3ffa000a,
+ PR_LAST_MODIFIER_ENTRYID = 0x3ffb0102,
+ PR_LAST_MODIFIER_ENTRYID_ERROR = 0x3ffb000a,
+ PR_REPLY_RECIPIENT_SMTP_PROXIES = 0x3ffc001e,
+ PR_REPLY_RECIPIENT_SMTP_PROXIES_UNICODE = 0x3ffc001f,
+ PR_REPLY_RECIPIENT_SMTP_PROXIES_ERROR = 0x3ffc000a,
+ PR_MESSAGE_CODEPAGE = 0x3ffd0003,
+ PR_MESSAGE_CODEPAGE_ERROR = 0x3ffd000a,
+ PR_EXTENDED_ACL_DATA = 0x3ffe0102,
+ PR_EXTENDED_ACL_DATA_ERROR = 0x3ffe000a,
+ PR_FROM_I_HAVE = 0x3fff000b,
+ PR_FROM_I_HAVE_ERROR = 0x3fff000a,
+ PR_NEW_ATTACH = 0x40000003,
+ PR_NEW_ATTACH_ERROR = 0x4000000a,
+ PR_START_EMBED = 0x40010003,
+ PR_START_EMBED_ERROR = 0x4001000a,
+ PR_END_EMBED = 0x40020003,
+ PR_END_EMBED_ERROR = 0x4002000a,
+ PR_START_RECIP = 0x40030003,
+ PR_START_RECIP_ERROR = 0x4003000a,
+ PR_END_RECIP = 0x40040003,
+ PR_END_RECIP_ERROR = 0x4004000a,
+ PR_END_CC_RECIP = 0x40050003,
+ PR_END_CC_RECIP_ERROR = 0x4005000a,
+ PR_END_BCC_RECIP = 0x40060003,
+ PR_END_BCC_RECIP_ERROR = 0x4006000a,
+ PR_END_P1_RECIP = 0x40070003,
+ PR_END_P1_RECIP_ERROR = 0x4007000a,
+ PR_START_TOP_FLD = 0x40090003,
+ PR_START_TOP_FLD_ERROR = 0x4009000a,
+ PR_START_SUB_FLD = 0x400a0003,
+ PR_START_SUB_FLD_ERROR = 0x400a000a,
+ PR_END_FOLDER = 0x400b0003,
+ PR_END_FOLDER_ERROR = 0x400b000a,
+ PR_START_MESSAGE = 0x400c0003,
+ PR_START_MESSAGE_ERROR = 0x400c000a,
+ PR_END_MESSAGE = 0x400d0003,
+ PR_END_MESSAGE_ERROR = 0x400d000a,
+ PR_END_ATTACH = 0x400e0003,
+ PR_END_ATTACH_ERROR = 0x400e000a,
+ PR_EC_WARNING = 0x400f0003,
+ PR_EC_WARNING_ERROR = 0x400f000a,
+ PR_START_FAI_MSG = 0x40100003,
+ PR_START_FAI_MSG_ERROR = 0x4010000a,
+ PR_NEW_FX_FOLDER = 0x40110102,
+ PR_NEW_FX_FOLDER_ERROR = 0x4011000a,
+ PR_INCR_SYNC_CHG = 0x40120003,
+ PR_INCR_SYNC_CHG_ERROR = 0x4012000a,
+ PR_INCR_SYNC_DEL = 0x40130003,
+ PR_INCR_SYNC_DEL_ERROR = 0x4013000a,
+ PR_INCR_SYNC_END = 0x40140003,
+ PR_INCR_SYNC_END_ERROR = 0x4014000a,
+ PR_INCR_SYNC_MSG = 0x40150003,
+ PR_INCR_SYNC_MSG_ERROR = 0x4015000a,
+ PR_FX_DEL_PROP = 0x40160003,
+ PR_FX_DEL_PROP_ERROR = 0x4016000a,
+ PR_IDSET_GIVEN = 0x40170003,
+ PR_IDSET_GIVEN_ERROR = 0x4017000a,
+ PR_SENDER_FLAGS = 0x40190003,
+ PR_SENDER_FLAGS_ERROR = 0x4019000a,
+ PR_SENT_REPRESENTING_FLAGS = 0x401a0003,
+ PR_SENT_REPRESENTING_FLAGS_ERROR = 0x401a000a,
+ PR_RCVD_BY_FLAGS = 0x401b0003,
+ PR_RCVD_BY_FLAGS_ERROR = 0x401b000a,
+ PR_RCVD_REPRESENTING_FLAGS = 0x401c0003,
+ PR_RCVD_REPRESENTING_FLAGS_ERROR = 0x401c000a,
+ PR_ORIGINAL_SENDER_FLAGS = 0x401d0003,
+ PR_ORIGINAL_SENDER_FLAGS_ERROR = 0x401d000a,
+ PR_ORIGINAL_SENT_REPRESENTING_FLAGS = 0x401e0003,
+ PR_ORIGINAL_SENT_REPRESENTING_FLAGS_ERROR = 0x401e000a,
+ PR_REPORT_FLAGS = 0x401f0003,
+ PR_REPORT_FLAGS_ERROR = 0x401f000a,
+ PR_READ_RECEIPT_FLAGS = 0x40200003,
+ PR_READ_RECEIPT_FLAGS_ERROR = 0x4020000a,
+ PR_SOFT_DELETES = 0x4021000b,
+ PR_SOFT_DELETES_ERROR = 0x4021000a,
+ PR_MESSAGE_SUBMISSION_ID_FROM_CLIENT = 0x402c0102,
+ PR_MESSAGE_SUBMISSION_ID_FROM_CLIENT_ERROR = 0x402c000a,
+ PR_SENDER_SIMPLE_DISP_NAME = 0x4030001e,
+ PR_SENDER_SIMPLE_DISP_NAME_UNICODE = 0x4030001f,
+ PR_SENDER_SIMPLE_DISP_NAME_ERROR = 0x4030000a,
+ PR_SENT_REPRESENTING_SIMPLE_DISP_NAME = 0x4031001e,
+ PR_SENT_REPRESENTING_SIMPLE_DISP_NAME_UNICODE = 0x4031001f,
+ PR_SENT_REPRESENTING_SIMPLE_DISP_NAME_ERROR = 0x4031000a,
+ PR_CREATOR_SIMPLE_DISP_NAME = 0x4038001e,
+ PR_CREATOR_SIMPLE_DISP_NAME_UNICODE = 0x4038001f,
+ PR_CREATOR_SIMPLE_DISP_NAME_ERROR = 0x4038000a,
+ PR_ORG_ADDR_TYPE = 0x403d001e,
+ PR_ORG_ADDR_TYPE_UNICODE = 0x403d001f,
+ PR_ORG_ADDR_TYPE_ERROR = 0x403d000a,
+ PR_ORG_EMAIL_ADDR = 0x403e001e,
+ PR_ORG_EMAIL_ADDR_UNICODE = 0x403e001f,
+ PR_ORG_EMAIL_ADDR_ERROR = 0x403e000a,
+ PR_CREATOR_FLAGS = 0x40590003,
+ PR_CREATOR_FLAGS_ERROR = 0x4059000a,
+ PR_MODIFIER_FLAGS = 0x405a0003,
+ PR_MODIFIER_FLAGS_ERROR = 0x405a000a,
+ PR_ORIGINATOR_FLAGS = 0x405b0003,
+ PR_ORIGINATOR_FLAGS_ERROR = 0x405b000a,
+ PR_REPORT_DESTINATION_FLAGS = 0x405c0003,
+ PR_REPORT_DESTINATION_FLAGS_ERROR = 0x405c000a,
+ PR_ORIGINAL_AUTHOR_FLAGS = 0x405d0003,
+ PR_ORIGINAL_AUTHOR_FLAGS_ERROR = 0x405d000a,
+ PR_ORIGINATOR_SEARCH_KEY = 0x40610102,
+ PR_ORIGINATOR_SEARCH_KEY_ERROR = 0x4061000a,
+ PR_REPORT_DESTINATION_SEARCH_KEY = 0x40640102,
+ PR_REPORT_DESTINATION_SEARCH_KEY_ERROR = 0x4064000a,
+ PR_ER_FLAG = 0x40650003,
+ PR_ER_FLAG_ERROR = 0x4065000a,
+ PR_INTERNET_SUBJECT = 0x40680102,
+ PR_INTERNET_SUBJECT_ERROR = 0x4068000a,
+ PR_INTERNET_SENT_REPRESENTING_NAME = 0x40690102,
+ PR_INTERNET_SENT_REPRESENTING_NAME_ERROR = 0x4069000a,
+ PR_INET_MAIL_OVERRIDE_FORMAT = 0x59020003,
+ PR_INET_MAIL_OVERRIDE_FORMAT_ERROR = 0x5902000a,
+ PR_MSG_EDITOR_FORMAT = 0x59090003,
+ PR_MSG_EDITOR_FORMAT_ERROR = 0x5909000a,
+ PR_DOTSTUFF_STATE = 0x60010003,
+ PR_DOTSTUFF_STATE_ERROR = 0x6001000a,
+ PR_RULE_SERVER_RULE_ID = 0x65a00014,
+ PR_RULE_SERVER_RULE_ID_ERROR = 0x65a0000a,
+ PR_REPLY_TEMPLATE_ID = 0x65c20102,
+ PR_REPLY_TEMPLATE_ID_ERROR = 0x65c2000a,
+ PR_SOURCE_KEY = 0x65e00102,
+ PR_SOURCE_KEY_ERROR = 0x65e0000a,
+ PR_PARENT_SOURCE_KEY = 0x65e10102,
+ PR_PARENT_SOURCE_KEY_ERROR = 0x65e1000a,
+ PR_CHANGE_KEY = 0x65e20102,
+ PR_CHANGE_KEY_ERROR = 0x65e2000a,
+ PR_PREDECESSOR_CHANGE_LIST = 0x65e30102,
+ PR_PREDECESSOR_CHANGE_LIST_ERROR = 0x65e3000a,
+ PR_SYNCHRONIZE_FLAGS = 0x65e40003,
+ PR_SYNCHRONIZE_FLAGS_ERROR = 0x65e4000a,
+ PR_AUTO_ADD_NEW_SUBS = 0x65e5000b,
+ PR_AUTO_ADD_NEW_SUBS_ERROR = 0x65e5000a,
+ PR_NEW_SUBS_GET_AUTO_ADD = 0x65e6000b,
+ PR_NEW_SUBS_GET_AUTO_ADD_ERROR = 0x65e6000a,
+ PR_MESSAGE_SITE_NAME = 0x65e7001e,
+ PR_MESSAGE_SITE_NAME_UNICODE = 0x65e7001f,
+ PR_MESSAGE_SITE_NAME_ERROR = 0x65e7000a,
+ PR_MESSAGE_PROCESSED = 0x65e8000b,
+ PR_MESSAGE_PROCESSED_ERROR = 0x65e8000a,
+ PR_RULE_MSG_STATE = 0x65e90003,
+ PR_RULE_MSG_STATE_ERROR = 0x65e9000a,
+ PR_RULE_MSG_USER_FLAGS = 0x65ea0003,
+ PR_RULE_MSG_USER_FLAGS_ERROR = 0x65ea000a,
+ PR_RULE_MSG_PROVIDER = 0x65eb001e,
+ PR_RULE_MSG_PROVIDER_UNICODE = 0x65eb001f,
+ PR_RULE_MSG_PROVIDER_ERROR = 0x65eb000a,
+ PR_RULE_MSG_NAME = 0x65ec001e,
+ PR_RULE_MSG_NAME_UNICODE = 0x65ec001f,
+ PR_RULE_MSG_NAME_ERROR = 0x65ec000a,
+ PR_RULE_MSG_LEVEL = 0x65ed0003,
+ PR_RULE_MSG_LEVEL_ERROR = 0x65ed000a,
+ PR_RULE_MSG_PROVIDER_DATA = 0x65ee0102,
+ PR_RULE_MSG_PROVIDER_DATA_ERROR = 0x65ee000a,
+ PR_RULE_MSG_ACTIONS = 0x65ef0102,
+ PR_RULE_MSG_ACTIONS_ERROR = 0x65ef000a,
+ PR_RULE_MSG_CONDITION = 0x65f00102,
+ PR_RULE_MSG_CONDITION_ERROR = 0x65f0000a,
+ PR_RULE_MSG_CONDITION_LCID = 0x65f10003,
+ PR_RULE_MSG_CONDITION_LCID_ERROR = 0x65f1000a,
+ PR_RULE_MSG_VERSION = 0x65f20002,
+ PR_RULE_MSG_VERSION_ERROR = 0x65f2000a,
+ PR_RULE_MSG_SEQUENCE = 0x65f30003,
+ PR_RULE_MSG_SEQUENCE_ERROR = 0x65f3000a,
+ PR_PREVENT_MSG_CREATE = 0x65f4000b,
+ PR_PREVENT_MSG_CREATE_ERROR = 0x65f4000a,
+ PR_IMAP_INTERNAL_DATE = 0x65f50040,
+ PR_IMAP_INTERNAL_DATE_ERROR = 0x65f5000a,
+ PR_PROFILE_VERSION = 0x66000003,
+ PR_PROFILE_VERSION_ERROR = 0x6600000a,
+ PR_PROFILE_CONFIG_FLAGS = 0x66010003,
+ PR_PROFILE_CONFIG_FLAGS_ERROR = 0x6601000a,
+ PR_PROFILE_HOME_SERVER = 0x6602001e,
+ PR_PROFILE_HOME_SERVER_UNICODE = 0x6602001f,
+ PR_PROFILE_HOME_SERVER_ERROR = 0x6602000a,
+ PR_PROFILE_USER = 0x6603001e,
+ PR_PROFILE_USER_UNICODE = 0x6603001f,
+ PR_PROFILE_USER_ERROR = 0x6603000a,
+ PR_PROFILE_CONNECT_FLAGS = 0x66040003,
+ PR_PROFILE_CONNECT_FLAGS_ERROR = 0x6604000a,
+ PR_PROFILE_TRANSPORT_FLAGS = 0x66050003,
+ PR_PROFILE_TRANSPORT_FLAGS_ERROR = 0x6605000a,
+ PR_PROFILE_UI_STATE = 0x66060003,
+ PR_PROFILE_UI_STATE_ERROR = 0x6606000a,
+ PR_PROFILE_UNRESOLVED_NAME = 0x6607001e,
+ PR_PROFILE_UNRESOLVED_NAME_UNICODE = 0x6607001f,
+ PR_PROFILE_UNRESOLVED_NAME_ERROR = 0x6607000a,
+ PR_PROFILE_UNRESOLVED_SERVER = 0x6608001e,
+ PR_PROFILE_UNRESOLVED_SERVER_UNICODE = 0x6608001f,
+ PR_PROFILE_UNRESOLVED_SERVER_ERROR = 0x6608000a,
+ PR_PROFILE_OPEN_FLAGS = 0x66090003,
+ PR_PROFILE_OPEN_FLAGS_ERROR = 0x6609000a,
+ PR_PROFILE_BINDING_ORDER = 0x6609001e,
+ PR_PROFILE_BINDING_ORDER_UNICODE = 0x6609001f,
+ PR_PROFILE_TYPE = 0x660a0003,
+ PR_PROFILE_TYPE_ERROR = 0x660a000a,
+ PR_PROFILE_MAILBOX = 0x660b001e,
+ PR_PROFILE_MAILBOX_UNICODE = 0x660b001f,
+ PR_PROFILE_MAILBOX_ERROR = 0x660b000a,
+ PR_PROFILE_SERVER = 0x660c001e,
+ PR_PROFILE_SERVER_UNICODE = 0x660c001f,
+ PR_PROFILE_SERVER_ERROR = 0x660c000a,
+ PR_PROFILE_MAX_RESTRICT = 0x660d0003,
+ PR_PROFILE_MAX_RESTRICT_ERROR = 0x660d000a,
+ PR_PROFILE_AB_FILES_PATH = 0x660e001e,
+ PR_PROFILE_AB_FILES_PATH_UNICODE = 0x660e001f,
+ PR_PROFILE_AB_FILES_PATH_ERROR = 0x660e000a,
+ PR_PROFILE_FAVFLD_DISPLAY_NAME = 0x660f001e,
+ PR_PROFILE_FAVFLD_DISPLAY_NAME_UNICODE = 0x660f001f,
+ PR_PROFILE_FAVFLD_DISPLAY_NAME_ERROR = 0x660f000a,
+ PR_PROFILE_OFFLINE_STORE_PATH = 0x6610001e,
+ PR_PROFILE_OFFLINE_STORE_PATH_UNICODE = 0x6610001f,
+ PR_PROFILE_OFFLINE_STORE_PATH_ERROR = 0x6610000a,
+ PR_PROFILE_OFFLINE_INFO = 0x66110102,
+ PR_PROFILE_OFFLINE_INFO_ERROR = 0x6611000a,
+ PR_PROFILE_HOME_SERVER_DN = 0x6612001e,
+ PR_PROFILE_HOME_SERVER_DN_UNICODE = 0x6612001f,
+ PR_PROFILE_HOME_SERVER_DN_ERROR = 0x6612000a,
+ PR_PROFILE_HOME_SERVER_ADDRS = 0x6613101e,
+ PR_PROFILE_HOME_SERVER_ADDRS_UNICODE = 0x6613101f,
+ PR_PROFILE_HOME_SERVER_ADDRS_ERROR = 0x6613000a,
+ PR_PROFILE_SERVER_DN = 0x6614001e,
+ PR_PROFILE_SERVER_DN_UNICODE = 0x6614001f,
+ PR_PROFILE_SERVER_DN_ERROR = 0x6614000a,
+ PR_PROFILE_FAVFLD_COMMENT = 0x6615001e,
+ PR_PROFILE_FAVFLD_COMMENT_UNICODE = 0x6615001f,
+ PR_PROFILE_FAVFLD_COMMENT_ERROR = 0x6615000a,
+ PR_PROFILE_ALLPUB_DISPLAY_NAME = 0x6616001e,
+ PR_PROFILE_ALLPUB_DISPLAY_NAME_UNICODE = 0x6616001f,
+ PR_PROFILE_ALLPUB_DISPLAY_NAME_ERROR = 0x6616000a,
+ PR_PROFILE_ALLPUB_COMMENT = 0x6617001e,
+ PR_PROFILE_ALLPUB_COMMENT_UNICODE = 0x6617001f,
+ PR_PROFILE_ALLPUB_COMMENT_ERROR = 0x6617000a,
+ PR_DISABLE_WINSOCK = 0x66180003,
+ PR_DISABLE_WINSOCK_ERROR = 0x6618000a,
+ PR_IN_TRANSIT = 0x6618000b,
+ PR_PROFILE_AUTH_PACKAGE = 0x66190003,
+ PR_PROFILE_AUTH_PACKAGE_ERROR = 0x6619000a,
+ PR_USER_ENTRYID = 0x66190102,
+ PR_USER_NAME = 0x661a001e,
+ PR_USER_NAME_UNICODE = 0x661a001f,
+ PR_USER_NAME_ERROR = 0x661a000a,
+ PR_MAILBOX_OWNER_ENTRYID = 0x661b0102,
+ PR_MAILBOX_OWNER_ENTRYID_ERROR = 0x661b000a,
+ PR_MAILBOX_OWNER_NAME = 0x661c001e,
+ PR_MAILBOX_OWNER_NAME_UNICODE = 0x661c001f,
+ PR_MAILBOX_OWNER_NAME_ERROR = 0x661c000a,
+ PR_OOF_STATE = 0x661d000b,
+ PR_OOF_STATE_ERROR = 0x661d000a,
+ PR_SCHEDULE_FOLDER_ENTRYID = 0x661e0102,
+ PR_SCHEDULE_FOLDER_ENTRYID_ERROR = 0x661e000a,
+ PR_IPM_DAF_ENTRYID = 0x661f0102,
+ PR_IPM_DAF_ENTRYID_ERROR = 0x661f000a,
+ PR_NON_IPM_SUBTREE_ENTRYID = 0x66200102,
+ PR_NON_IPM_SUBTREE_ENTRYID_ERROR = 0x6620000a,
+ PR_EFORMS_REGISTRY_ENTRYID = 0x66210102,
+ PR_EFORMS_REGISTRY_ENTRYID_ERROR = 0x6621000a,
+ PR_SPLUS_FREE_BUSY_ENTRYID = 0x66220102,
+ PR_SPLUS_FREE_BUSY_ENTRYID_ERROR = 0x6622000a,
+ PR_HIERARCHY_SERVER = 0x6623001e,
+ PR_HIERARCHY_SERVER_UNICODE = 0x6623001f,
+ PR_HIERARCHY_SERVER_ERROR = 0x6623000a,
+ PR_OFFLINE_ADDRBOOK_ENTRYID = 0x66230102,
+ PR_EFORMS_FOR_LOCALE_ENTRYID = 0x66240102,
+ PR_EFORMS_FOR_LOCALE_ENTRYID_ERROR = 0x6624000a,
+ PR_FREE_BUSY_FOR_LOCAL_SITE_ENTRYID = 0x66250102,
+ PR_FREE_BUSY_FOR_LOCAL_SITE_ENTRYID_ERROR = 0x6625000a,
+ PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID = 0x66260102,
+ PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID_ERROR = 0x6626000a,
+ PR_OFFLINE_MESSAGE_ENTRYID = 0x66270102,
+ PR_OFFLINE_MESSAGE_ENTRYID_ERROR = 0x6627000a,
+ PR_GW_MTSIN_ENTRYID = 0x66280102,
+ PR_GW_MTSIN_ENTRYID_ERROR = 0x6628000a,
+ PR_GW_MTSOUT_ENTRYID = 0x66290102,
+ PR_GW_MTSOUT_ENTRYID_ERROR = 0x6629000a,
+ PR_TRANSFER_ENABLED = 0x662a000b,
+ PR_TRANSFER_ENABLED_ERROR = 0x662a000a,
+ PR_TEST_LINE_SPEED = 0x662b0102,
+ PR_TEST_LINE_SPEED_ERROR = 0x662b000a,
+ PR_HIERARCHY_SYNCHRONIZER = 0x662c000d,
+ PR_HIERARCHY_SYNCHRONIZER_ERROR = 0x662c000a,
+ PR_CONTENTS_SYNCHRONIZER = 0x662d000d,
+ PR_CONTENTS_SYNCHRONIZER_ERROR = 0x662d000a,
+ PR_COLLECTOR = 0x662e000d,
+ PR_COLLECTOR_ERROR = 0x662e000a,
+ PR_FAST_TRANSFER = 0x662f000d,
+ PR_FAST_TRANSFER_ERROR = 0x662f000a,
+ PR_IPM_FAVORITES_ENTRYID = 0x66300102,
+ PR_IPM_FAVORITES_ENTRYID_ERROR = 0x6630000a,
+ PR_IPM_PUBLIC_FOLDERS_ENTRYID = 0x66310102,
+ PR_IPM_PUBLIC_FOLDERS_ENTRYID_ERROR = 0x6631000a,
+ PR_STORE_OFFLINE = 0x6632000b,
+ PR_STORE_OFFLINE_ERROR = 0x6632000a,
+ PR_CHANGE_ADVISOR = 0x6634000d,
+ PR_CHANGE_ADVISOR_ERROR = 0x6634000a,
+ PR_FAVORITES_DEFAULT_NAME = 0x6635001e,
+ PR_FAVORITES_DEFAULT_NAME_UNICODE = 0x6635001f,
+ PR_FAVORITES_DEFAULT_NAME_ERROR = 0x6635000a,
+ PR_SYS_CONFIG_FOLDER_ENTRYID = 0x66360102,
+ PR_SYS_CONFIG_FOLDER_ENTRYID_ERROR = 0x6636000a,
+ PR_CHANGE_NOTIFICATION_GUID = 0x66370048,
+ PR_CHANGE_NOTIFICATION_GUID_ERROR = 0x6637000a,
+ PR_FOLDER_CHILD_COUNT = 0x66380003,
+ PR_FOLDER_CHILD_COUNT_ERROR = 0x6638000a,
+ PR_RIGHTS = 0x66390003,
+ PR_RIGHTS_ERROR = 0x6639000a,
+ PR_HAS_RULES = 0x663a000b,
+ PR_HAS_RULES_ERROR = 0x663a000a,
+ PR_ADDRESS_BOOK_ENTRYID = 0x663b0102,
+ PR_ADDRESS_BOOK_ENTRYID_ERROR = 0x663b000a,
+ PR_PUBLIC_FOLDER_ENTRYID = 0x663c0102,
+ PR_PUBLIC_FOLDER_ENTRYID_ERROR = 0x663c000a,
+ PR_OFFLINE_FLAGS = 0x663d0003,
+ PR_OFFLINE_FLAGS_ERROR = 0x663d000a,
+ PR_HIERARCHY_CHANGE_NUM = 0x663e0003,
+ PR_HIERARCHY_CHANGE_NUM_ERROR = 0x663e000a,
+ PR_HAS_MODERATOR_RULES = 0x663f000b,
+ PR_HAS_MODERATOR_RULES_ERROR = 0x663f000a,
+ PR_DELETED_MSG_COUNT = 0x66400003,
+ PR_DELETED_MSG_COUNT_ERROR = 0x6640000a,
+ PR_DELETED_FOLDER_COUNT = 0x66410003,
+ PR_DELETED_FOLDER_COUNT_ERROR = 0x6641000a,
+ PR_OLDEST_DELETED_ON = 0x66420040,
+ PR_OLDEST_DELETED_ON_ERROR = 0x6642000a,
+ PR_DELETED_ASSOC_MSG_COUNT = 0x66430003,
+ PR_DELETED_ASSOC_MSG_COUNT_ERROR = 0x6643000a,
+ PR_REPLICA_SERVER = 0x6644001e,
+ PR_REPLICA_SERVER_UNICODE = 0x6644001f,
+ PR_REPLICA_SERVER_ERROR = 0x6644000a,
+ PR_CLIENT_ACTIONS = 0x66450102,
+ PR_CLIENT_ACTIONS_ERROR = 0x6645000a,
+ PR_DAM_ORIGINAL_ENTRYID = 0x66460102,
+ PR_DAM_ORIGINAL_ENTRYID_ERROR = 0x6646000a,
+ PR_DAM_BACK_PATCHED = 0x6647000b,
+ PR_DAM_BACK_PATCHED_ERROR = 0x6647000a,
+ PR_RULE_ERROR = 0x66480003,
+ PR_RULE_ERROR_ERROR = 0x6648000a,
+ PR_RULE_ACTION_TYPE = 0x66490003,
+ PR_RULE_ACTION_TYPE_ERROR = 0x6649000a,
+ PR_HAS_NAMED_PROPERTIES = 0x664a000b,
+ PR_HAS_NAMED_PROPERTIES_ERROR = 0x664a000a,
+ PR_REPLICA_VERSION = 0x664b0014,
+ PR_REPLICA_VERSION_ERROR = 0x664b000a,
+ PR_RULE_ACTION_NUMBER = 0x66500003,
+ PR_RULE_ACTION_NUMBER_ERROR = 0x6650000a,
+ PR_RULE_FOLDER_ENTRYID = 0x66510102,
+ PR_RULE_FOLDER_ENTRYID_ERROR = 0x6651000a,
+ PR_ACTIVE_USER_ENTRYID = 0x66520102,
+ PR_ACTIVE_USER_ENTRYID_ERROR = 0x6652000a,
+ PR_0X400_ENVELOPE_TYPE = 0x66530003,
+ PR_0X400_ENVELOPE_TYPE_ERROR = 0x6653000a,
+ PR_MSG_FOLD_TIME = 0x66540040,
+ PR_MSG_FOLD_TIME_ERROR = 0x6654000a,
+ PR_ICS_CHANGE_KEY = 0x66550102,
+ PR_ICS_CHANGE_KEY_ERROR = 0x6655000a,
+ PR_GW_ADMIN_OPERATIONS = 0x66580003,
+ PR_GW_ADMIN_OPERATIONS_ERROR = 0x6658000a,
+ PR_INTERNET_CONTENT = 0x66590102,
+ PR_INTERNET_CONTENT_ERROR = 0x6659000a,
+ PR_HAS_ATTACH_FROM_IMAIL = 0x665a000b,
+ PR_HAS_ATTACH_FROM_IMAIL_ERROR = 0x665a000a,
+ PR_ORIGINATOR_NAME = 0x665b001e,
+ PR_ORIGINATOR_NAME_UNICODE = 0x665b001f,
+ PR_ORIGINATOR_NAME_ERROR = 0x665b000a,
+ PR_ORIGINATOR_ADDR = 0x665c001e,
+ PR_ORIGINATOR_ADDR_UNICODE = 0x665c001f,
+ PR_ORIGINATOR_ADDR_ERROR = 0x665c000a,
+ PR_ORIGINATOR_ADDRTYPE = 0x665d001e,
+ PR_ORIGINATOR_ADDRTYPE_UNICODE = 0x665d001f,
+ PR_ORIGINATOR_ADDRTYPE_ERROR = 0x665d000a,
+ PR_ORIGINATOR_ENTRYID = 0x665e0102,
+ PR_ORIGINATOR_ENTRYID_ERROR = 0x665e000a,
+ PR_ARRIVAL_TIME = 0x665f0040,
+ PR_ARRIVAL_TIME_ERROR = 0x665f000a,
+ PR_TRACE_INFO = 0x66600102,
+ PR_TRACE_INFO_ERROR = 0x6660000a,
+ PR_SUBJECT_TRACE_INFO = 0x66610102,
+ PR_SUBJECT_TRACE_INFO_ERROR = 0x6661000a,
+ PR_RECIPIENT_NUMBER = 0x66620003,
+ PR_RECIPIENT_NUMBER_ERROR = 0x6662000a,
+ PR_MTS_SUBJECT_ID = 0x66630102,
+ PR_MTS_SUBJECT_ID_ERROR = 0x6663000a,
+ PR_REPORT_DESTINATION_NAME = 0x6664001e,
+ PR_REPORT_DESTINATION_NAME_UNICODE = 0x6664001f,
+ PR_REPORT_DESTINATION_NAME_ERROR = 0x6664000a,
+ PR_REPORT_DESTINATION_ENTRYID = 0x66650102,
+ PR_REPORT_DESTINATION_ENTRYID_ERROR = 0x6665000a,
+ PR_CONTENT_SEARCH_KEY = 0x66660102,
+ PR_CONTENT_SEARCH_KEY_ERROR = 0x6666000a,
+ PR_FOREIGN_ID = 0x66670102,
+ PR_FOREIGN_ID_ERROR = 0x6667000a,
+ PR_FOREIGN_REPORT_ID = 0x66680102,
+ PR_FOREIGN_REPORT_ID_ERROR = 0x6668000a,
+ PR_FOREIGN_SUBJECT_ID = 0x66690102,
+ PR_FOREIGN_SUBJECT_ID_ERROR = 0x6669000a,
+ PR_INTERNAL_TRACE_INFO = 0x666a0102,
+ PR_INTERNAL_TRACE_INFO_ERROR = 0x666a000a,
+ PR_IN_CONFLICT = 0x666c000b,
+ PR_IN_CONFLICT_ERROR = 0x666c000a,
+ PR_LONGTERM_ENTRYID_FROM_TABLE = 0x66700102,
+ PR_LONGTERM_ENTRYID_FROM_TABLE_ERROR = 0x6670000a,
+ PR_MEMBER_ID = 0x66710014,
+ PR_MEMBER_ID_ERROR = 0x6671000a,
+ PR_MEMBER_NAME = 0x6672001e,
+ PR_MEMBER_NAME_UNICODE = 0x6672001f,
+ PR_MEMBER_NAME_ERROR = 0x6672000a,
+ PR_MEMBER_RIGHTS = 0x66730003,
+ PR_MEMBER_RIGHTS_ERROR = 0x6673000a,
+ PR_RULE_ID = 0x66740014,
+ PR_RULE_ID_ERROR = 0x6674000a,
+ PR_RULE_IDS = 0x66750102,
+ PR_RULE_IDS_ERROR = 0x6675000a,
+ PR_RULE_SEQUENCE = 0x66760003,
+ PR_RULE_SEQUENCE_ERROR = 0x6676000a,
+ PR_RULE_STATE = 0x66770003,
+ PR_RULE_STATE_ERROR = 0x6677000a,
+ PR_RULE_USER_FLAGS = 0x66780003,
+ PR_RULE_USER_FLAGS_ERROR = 0x6678000a,
+ PR_RULE_CONDITION = 0x667900fd,
+ PR_RULE_CONDITION_ERROR = 0x6679000a,
+ PR_PROFILE_MOAB = 0x667b001e,
+ PR_PROFILE_MOAB_UNICODE = 0x667b001f,
+ PR_PROFILE_MOAB_ERROR = 0x667b000a,
+ PR_PROFILE_MOAB_GUID = 0x667c001e,
+ PR_PROFILE_MOAB_GUID_UNICODE = 0x667c001f,
+ PR_PROFILE_MOAB_GUID_ERROR = 0x667c000a,
+ PR_PROFILE_MOAB_SEQ = 0x667d0003,
+ PR_PROFILE_MOAB_SEQ_ERROR = 0x667d000a,
+ PR_IMPLIED_RESTRICTIONS = 0x667f1102,
+ PR_IMPLIED_RESTRICTIONS_ERROR = 0x667f000a,
+ PR_RULE_ACTIONS = 0x668000fe,
+ PR_RULE_ACTIONS_ERROR = 0x6680000a,
+ PR_RULE_PROVIDER = 0x6681001e,
+ PR_RULE_PROVIDER_UNICODE = 0x6681001f,
+ PR_RULE_PROVIDER_ERROR = 0x6681000a,
+ PR_RULE_NAME = 0x6682001e,
+ PR_RULE_NAME_UNICODE = 0x6682001f,
+ PR_RULE_NAME_ERROR = 0x6682000a,
+ PR_RULE_LEVEL = 0x66830003,
+ PR_RULE_LEVEL_ERROR = 0x6683000a,
+ PR_RULE_PROVIDER_DATA = 0x66840102,
+ PR_RULE_PROVIDER_DATA_ERROR = 0x6684000a,
+ PR_LAST_FULL_BACKUP = 0x66850040,
+ PR_LAST_FULL_BACKUP_ERROR = 0x6685000a,
+ PR_PROFILE_ADDR_INFO = 0x66870102,
+ PR_PROFILE_ADDR_INFO_ERROR = 0x6687000a,
+ PR_PROFILE_OPTIONS_DATA = 0x66890102,
+ PR_PROFILE_OPTIONS_DATA_ERROR = 0x6689000a,
+ PR_EVENTS_ROOT_FOLDER_ENTRYID = 0x668a0102,
+ PR_EVENTS_ROOT_FOLDER_ENTRYID_ERROR = 0x668a000a,
+ PR_INBOUND_NEWSFEED_DN = 0x668d001e,
+ PR_INBOUND_NEWSFEED_DN_UNICODE = 0x668d001f,
+ PR_INBOUND_NEWSFEED_DN_ERROR = 0x668d000a,
+ PR_OUTBOUND_NEWSFEED_DN = 0x668e001e,
+ PR_OUTBOUND_NEWSFEED_DN_UNICODE = 0x668e001f,
+ PR_OUTBOUND_NEWSFEED_DN_ERROR = 0x668e000a,
+ PR_DELETED_ON = 0x668f0040,
+ PR_DELETED_ON_ERROR = 0x668f000a,
+ PR_REPLICATION_STYLE = 0x66900003,
+ PR_REPLICATION_STYLE_ERROR = 0x6690000a,
+ PR_REPLICATION_SCHEDULE = 0x66910102,
+ PR_REPLICATION_SCHEDULE_ERROR = 0x6691000a,
+ PR_REPLICATION_MESSAGE_PRIORITY = 0x66920003,
+ PR_REPLICATION_MESSAGE_PRIORITY_ERROR = 0x6692000a,
+ PR_OVERALL_MSG_AGE_LIMIT = 0x66930003,
+ PR_OVERALL_MSG_AGE_LIMIT_ERROR = 0x6693000a,
+ PR_REPLICATION_ALWAYS_INTERVAL = 0x66940003,
+ PR_REPLICATION_ALWAYS_INTERVAL_ERROR = 0x6694000a,
+ PR_REPLICATION_MSG_SIZE = 0x66950003,
+ PR_REPLICATION_MSG_SIZE_ERROR = 0x6695000a,
+ PR_IS_NEWSGROUP_ANCHOR = 0x6696000b,
+ PR_IS_NEWSGROUP_ANCHOR_ERROR = 0x6696000a,
+ PR_IS_NEWSGROUP = 0x6697000b,
+ PR_IS_NEWSGROUP_ERROR = 0x6697000a,
+ PR_REPLICA_LIST = 0x66980102,
+ PR_REPLICA_LIST_ERROR = 0x6698000a,
+ PR_OVERALL_AGE_LIMIT = 0x66990003,
+ PR_OVERALL_AGE_LIMIT_ERROR = 0x6699000a,
+ PR_INTERNET_CHARSET = 0x669a001e,
+ PR_INTERNET_CHARSET_UNICODE = 0x669a001f,
+ PR_INTERNET_CHARSET_ERROR = 0x669a000a,
+ PR_DELETED_MESSAGE_SIZE_EXTENDED = 0x669b0014,
+ PR_DELETED_MESSAGE_SIZE_EXTENDED_ERROR = 0x669b000a,
+ PR_DELETED_NORMAL_MESSAGE_SIZE_EXTENDED = 0x669c0014,
+ PR_DELETED_NORMAL_MESSAGE_SIZE_EXTENDED_ERROR = 0x669c000a,
+ PR_DELETED_ASSOC_MESSAGE_SIZE_EXTENDED = 0x669d0014,
+ PR_DELETED_ASSOC_MESSAGE_SIZE_EXTENDED_ERROR = 0x669d000a,
+ PR_SECURE_IN_SITE = 0x669e000b,
+ PR_SECURE_IN_SITE_ERROR = 0x669e000a,
+ PR_NT_USER_NAME = 0x66a0001e,
+ PR_NT_USER_NAME_UNICODE = 0x66a0001f,
+ PR_NT_USER_NAME_ERROR = 0x66a0000a,
+ PR_LOCALE_ID = 0x66a10003,
+ PR_LOCALE_ID_ERROR = 0x66a1000a,
+ PR_LAST_LOGON_TIME = 0x66a20040,
+ PR_LAST_LOGON_TIME_ERROR = 0x66a2000a,
+ PR_LAST_LOGOFF_TIME = 0x66a30040,
+ PR_LAST_LOGOFF_TIME_ERROR = 0x66a3000a,
+ PR_STORAGE_LIMIT_INFORMATION = 0x66a40003,
+ PR_STORAGE_LIMIT_INFORMATION_ERROR = 0x66a4000a,
+ PR_NEWSGROUP_COMPONENT = 0x66a5001e,
+ PR_NEWSGROUP_COMPONENT_UNICODE = 0x66a5001f,
+ PR_NEWSGROUP_COMPONENT_ERROR = 0x66a5000a,
+ PR_NEWSFEED_INFO = 0x66a60102,
+ PR_NEWSFEED_INFO_ERROR = 0x66a6000a,
+ PR_INTERNET_NEWSGROUP_NAME = 0x66a7001e,
+ PR_INTERNET_NEWSGROUP_NAME_UNICODE = 0x66a7001f,
+ PR_INTERNET_NEWSGROUP_NAME_ERROR = 0x66a7000a,
+ PR_FOLDER_FLAGS = 0x66a80003,
+ PR_FOLDER_FLAGS_ERROR = 0x66a8000a,
+ PR_LAST_ACCESS_TIME = 0x66a90040,
+ PR_LAST_ACCESS_TIME_ERROR = 0x66a9000a,
+ PR_RESTRICTION_COUNT = 0x66aa0003,
+ PR_RESTRICTION_COUNT_ERROR = 0x66aa000a,
+ PR_CATEG_COUNT = 0x66ab0003,
+ PR_CATEG_COUNT_ERROR = 0x66ab000a,
+ PR_CACHED_COLUMN_COUNT = 0x66ac0003,
+ PR_CACHED_COLUMN_COUNT_ERROR = 0x66ac000a,
+ PR_NORMAL_MSG_W_ATTACH_COUNT = 0x66ad0003,
+ PR_NORMAL_MSG_W_ATTACH_COUNT_ERROR = 0x66ad000a,
+ PR_ASSOC_MSG_W_ATTACH_COUNT = 0x66ae0003,
+ PR_ASSOC_MSG_W_ATTACH_COUNT_ERROR = 0x66ae000a,
+ PR_RECIPIENT_ON_NORMAL_MSG_COUNT = 0x66af0003,
+ PR_RECIPIENT_ON_NORMAL_MSG_COUNT_ERROR = 0x66af000a,
+ PR_RECIPIENT_ON_ASSOC_MSG_COUNT = 0x66b00003,
+ PR_RECIPIENT_ON_ASSOC_MSG_COUNT_ERROR = 0x66b0000a,
+ PR_ATTACH_ON_NORMAL_MSG_COUNT = 0x66b10003,
+ PR_ATTACH_ON_NORMAL_MSG_COUNT_ERROR = 0x66b1000a,
+ PR_ATTACH_ON_ASSOC_MSG_COUNT = 0x66b20003,
+ PR_ATTACH_ON_ASSOC_MSG_COUNT_ERROR = 0x66b2000a,
+ PR_NORMAL_MESSAGE_SIZE = 0x66b30003,
+ PR_NORMAL_MESSAGE_SIZE_ERROR = 0x66b3000a,
+ PR_NORMAL_MESSAGE_SIZE_EXTENDED = 0x66b30014,
+ PR_ASSOC_MESSAGE_SIZE = 0x66b40003,
+ PR_ASSOC_MESSAGE_SIZE_ERROR = 0x66b4000a,
+ PR_ASSOC_MESSAGE_SIZE_EXTENDED = 0x66b40014,
+ PR_FOLDER_PATHNAME = 0x66b5001e,
+ PR_FOLDER_PATHNAME_UNICODE = 0x66b5001f,
+ PR_FOLDER_PATHNAME_ERROR = 0x66b5000a,
+ PR_OWNER_COUNT = 0x66b60003,
+ PR_OWNER_COUNT_ERROR = 0x66b6000a,
+ PR_CONTACT_COUNT = 0x66b70003,
+ PR_CONTACT_COUNT_ERROR = 0x66b7000a,
+ PR_CODE_PAGE_ID = 0x66c30003,
+ PR_CODE_PAGE_ID_ERROR = 0x66c3000a,
+ PR_RETENTION_AGE_LIMIT = 0x66c40003,
+ PR_RETENTION_AGE_LIMIT_ERROR = 0x66c4000a,
+ PR_DISABLE_PERUSER_READ = 0x66c5000b,
+ PR_DISABLE_PERUSER_READ_ERROR = 0x66c5000a,
+ PR_INTERNET_PARSE_STATE = 0x66c60102,
+ PR_INTERNET_PARSE_STATE_ERROR = 0x66c6000a,
+ PR_INTERNET_MESSAGE_INFO = 0x66c70102,
+ PR_INTERNET_MESSAGE_INFO_ERROR = 0x66c7000a,
+ PR_PST_PATH = 0x6700001e,
+ PR_PST_PATH_UNICODE = 0x6700001f,
+ PR_PST_PATH_ERROR = 0x6700000a,
+ PR_PST_REMEMBER_PW = 0x6701000b,
+ PR_PST_REMEMBER_PW_ERROR = 0x6701000a,
+ PR_OST_ENCRYPTION = 0x67020003,
+ PR_OST_ENCRYPTION_ERROR = 0x6702000a,
+ PR_PST_PW_SZ_OLD = 0x6703001e,
+ PR_PST_PW_SZ_OLD_UNICODE = 0x6703001f,
+ PR_PST_PW_SZ_OLD_ERROR = 0x6703000a,
+ PR_PST_PW_SZ_NEW = 0x6704001e,
+ PR_PST_PW_SZ_NEW_UNICODE = 0x6704001f,
+ PR_PST_PW_SZ_NEW_ERROR = 0x6704000a,
+ PR_SORT_LOCALE_ID = 0x67050003,
+ PR_SORT_LOCALE_ID_ERROR = 0x6705000a,
+ PR_URL_NAME = 0x6707001e,
+ PR_URL_NAME_UNICODE = 0x6707001f,
+ PR_URL_NAME_ERROR = 0x6707000a,
+ PR_LOCAL_COMMIT_TIME = 0x67090040,
+ PR_LOCAL_COMMIT_TIME_ERROR = 0x6709000a,
+ PR_LOCAL_COMMIT_TIME_MAX = 0x670a0040,
+ PR_LOCAL_COMMIT_TIME_MAX_ERROR = 0x670a000a,
+ PR_DELETED_COUNT_TOTAL = 0x670b0003,
+ PR_DELETED_COUNT_TOTAL_ERROR = 0x670b000a,
+ PR_AUTO_RESET = 0x670c0048,
+ PR_AUTO_RESET_ERROR = 0x670c000a,
+ PR_URL_COMP_NAME_HASH = 0x67100003,
+ PR_URL_COMP_NAME_HASH_ERROR = 0x6710000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_2 = 0x67110003,
+ PR_MSG_FOLDER_TEMPLATE_RES_2_ERROR = 0x6711000a,
+ PR_RANK = 0x67120003,
+ PR_RANK_ERROR = 0x6712000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_4 = 0x6713000b,
+ PR_MSG_FOLDER_TEMPLATE_RES_4_ERROR = 0x6713000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_5 = 0x6714000b,
+ PR_MSG_FOLDER_TEMPLATE_RES_5_ERROR = 0x6714000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_6 = 0x6715000b,
+ PR_MSG_FOLDER_TEMPLATE_RES_6_ERROR = 0x6715000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_7 = 0x67160102,
+ PR_MSG_FOLDER_TEMPLATE_RES_7_ERROR = 0x6716000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_8 = 0x67170102,
+ PR_MSG_FOLDER_TEMPLATE_RES_8_ERROR = 0x6717000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_9 = 0x67180102,
+ PR_MSG_FOLDER_TEMPLATE_RES_9_ERROR = 0x6718000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_10 = 0x6719001e,
+ PR_MSG_FOLDER_TEMPLATE_RES_10_UNICODE = 0x6719001f,
+ PR_MSG_FOLDER_TEMPLATE_RES_10_ERROR = 0x6719000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_11 = 0x671a001e,
+ PR_MSG_FOLDER_TEMPLATE_RES_11_UNICODE = 0x671a001f,
+ PR_MSG_FOLDER_TEMPLATE_RES_11_ERROR = 0x671a000a,
+ PR_MSG_FOLDER_TEMPLATE_RES_12 = 0x671b001e,
+ PR_MSG_FOLDER_TEMPLATE_RES_12_UNICODE = 0x671b001f,
+ PR_MSG_FOLDER_TEMPLATE_RES_12_ERROR = 0x671b000a,
+ PR_PF_PLATINUM_HOME_MDB = 0x671e000b,
+ PR_PF_PLATINUM_HOME_MDB_ERROR = 0x671e000a,
+ PR_PF_PROXY_REQUIRED = 0x671f000b,
+ PR_PF_PROXY_REQUIRED_ERROR = 0x671f000a,
+ PR_INTERNET_FREE_DOC_INFO = 0x67200102,
+ PR_INTERNET_FREE_DOC_INFO_ERROR = 0x6720000a,
+ PR_PF_OVER_HARD_QUOTA_LIMIT = 0x67210003,
+ PR_PF_OVER_HARD_QUOTA_LIMIT_ERROR = 0x6721000a,
+ PR_PF_MSG_SIZE_LIMIT = 0x67220003,
+ PR_PF_MSG_SIZE_LIMIT_ERROR = 0x6722000a,
+ PR_CONNECTION_MODULUS = 0x67430003,
+ PR_CONNECTION_MODULUS_ERROR = 0x6743000a,
+ PR_DELIVER_TO_DN = 0x6744001e,
+ PR_DELIVER_TO_DN_UNICODE = 0x6744001f,
+ PR_DELIVER_TO_DN_ERROR = 0x6744000a,
+ PR_MIME_SIZE = 0x67460003,
+ PR_MIME_SIZE_ERROR = 0x6746000a,
+ PR_FILE_SIZE_EXTENDED = 0x67470014,
+ PR_FILE_SIZE_EXTENDED_ERROR = 0x6747000a,
+ PR_FID = 0x67480014,
+ PR_FID_ERROR = 0x6748000a,
+ PR_PARENT_FID = 0x67490014,
+ PR_PARENT_FID_ERROR = 0x6749000a,
+ PR_MID = 0x674a0014,
+ PR_MID_ERROR = 0x674a000a,
+ PR_CATEG_ID = 0x674b0014,
+ PR_CATEG_ID_ERROR = 0x674b000a,
+ PR_PARENT_CATEG_ID = 0x674c0014,
+ PR_PARENT_CATEG_ID_ERROR = 0x674c000a,
+ PR_INST_ID = 0x674d0014,
+ PR_INST_ID_ERROR = 0x674d000a,
+ PR_INSTANCE_NUM = 0x674e0003,
+ PR_INSTANCE_NUM_ERROR = 0x674e000a,
+ PR_ADDRBOOK_MID = 0x674f0014,
+ PR_ADDRBOOK_MID_ERROR = 0x674f000a,
+ PR_ICS_NOTIF = 0x67500003,
+ PR_ICS_NOTIF_ERROR = 0x6750000a,
+ PR_ARTICLE_NUM_NEXT = 0x67510003,
+ PR_ARTICLE_NUM_NEXT_ERROR = 0x6751000a,
+ PR_IMAP_LAST_ARTICLE_ID = 0x67520003,
+ PR_IMAP_LAST_ARTICLE_ID_ERROR = 0x6752000a,
+ PR_NOT_822_RENDERABLE = 0x6753000b,
+ PR_NOT_822_RENDERABLE_ERROR = 0x6753000a,
+ PR_LTID = 0x67580102,
+ PR_LTID_ERROR = 0x6758000a,
+ PR_CN_EXPORT = 0x67590102,
+ PR_CN_EXPORT_ERROR = 0x6759000a,
+ PR_PCL_EXPORT = 0x675a0102,
+ PR_PCL_EXPORT_ERROR = 0x675a000a,
+ PR_CN_MV_EXPORT = 0x675b1102,
+ PR_CN_MV_EXPORT_ERROR = 0x675b000a,
+ PR_PF_QUOTA_STYLE = 0x67790003,
+ PR_PF_QUOTA_STYLE_ERROR = 0x6779000a,
+ PR_PF_STORAGE_QUOTA = 0x677b0003,
+ PR_PF_STORAGE_QUOTA_ERROR = 0x677b000a,
+ PR_SEARCH_FLAGS = 0x67830003,
+ PR_SEARCH_FLAGS_ERROR = 0x6783000a,
+ PR_ASSOCIATED = 0x67aa000b,
+ PR_ASSOCIATED_ERROR = 0x67aa000a,
+ PR_PROFILE_SECURE_MAILBOX = 0x67f00102,
+ PR_PROFILE_SECURE_MAILBOX_ERROR = 0x67f0000a,
+ PR_MAILBEAT_BOUNCE_SERVER = 0x6800001e,
+ PR_MAILBEAT_BOUNCE_SERVER_UNICODE = 0x6800001f,
+ PR_MAILBEAT_BOUNCE_SERVER_ERROR = 0x6800000a,
+ PR_MAILBEAT_REQUEST_SENT = 0x68010040,
+ PR_MAILBEAT_REQUEST_SENT_ERROR = 0x6801000a,
+ PR_USENET_SITE_NAME = 0x6802001e,
+ PR_USENET_SITE_NAME_UNICODE = 0x6802001f,
+ PR_USENET_SITE_NAME_ERROR = 0x6802000a,
+ PR_MAILBEAT_REQUEST_RECEIVED = 0x68030040,
+ PR_MAILBEAT_REQUEST_RECEIVED_ERROR = 0x6803000a,
+ PR_MAILBEAT_REQUEST_PROCESSED = 0x68040040,
+ PR_MAILBEAT_REQUEST_PROCESSED_ERROR = 0x6804000a,
+ PR_MAILBEAT_REPLY_SENT = 0x68060040,
+ PR_MAILBEAT_REPLY_SENT_ERROR = 0x6806000a,
+ PR_MAILBEAT_REPLY_SUBMIT = 0x68070040,
+ PR_MAILBEAT_REPLY_SUBMIT_ERROR = 0x6807000a,
+ PR_MAILBEAT_REPLY_RECEIVED = 0x68080040,
+ PR_MAILBEAT_REPLY_RECEIVED_ERROR = 0x6808000a,
+ PR_MAILBEAT_REPLY_PROCESSED = 0x68090040,
+ PR_MAILBEAT_REPLY_PROCESSED_ERROR = 0x6809000a,
+ PR_DELEGATES_DISPLAY_NAMES = 0x6844101e,
+ PR_DELEGATES_DISPLAY_NAMES_UNICODE = 0x6844101f,
+ PR_DELEGATES_DISPLAY_NAMES_ERROR = 0x6844000a,
+ PR_DELEGATES_ENTRYIDS = 0x68451102,
+ PR_DELEGATES_ENTRYIDS_ERROR = 0x6845000a,
+ PR_FREEBUSY_START_RANGE = 0x68470003,
+ PR_FREEBUSY_START_RANGE_ERROR = 0x6847000a,
+ PR_FREEBUSY_END_RANGE = 0x68480003,
+ PR_FREEBUSY_END_RANGE_ERROR = 0x6848000a,
+ PR_FREEBUSY_EMAIL_ADDRESS = 0x6849001e,
+ PR_FREEBUSY_EMAIL_ADDRESS_UNICODE = 0x6849001f,
+ PR_FREEBUSY_EMAIL_ADDRESS_ERROR = 0x6849000a,
+ PR_FREEBUSY_ALL_MONTHS = 0x684f1003,
+ PR_FREEBUSY_ALL_MONTHS_ERROR = 0x684f000a,
+ PR_FREEBUSY_ALL_EVENTS = 0x68501102,
+ PR_FREEBUSY_ALL_EVENTS_ERROR = 0x6850000a,
+ PR_FREEBUSY_TENTATIVE_MONTHS = 0x68511003,
+ PR_FREEBUSY_TENTATIVE_MONTHS_ERROR = 0x6851000a,
+ PR_FREEBUSY_TENTATIVE_EVENTS = 0x68521102,
+ PR_FREEBUSY_TENTATIVE_EVENTS_ERROR = 0x6852000a,
+ PR_FREEBUSY_BUSY_MONTHS = 0x68531003,
+ PR_FREEBUSY_BUSY_MONTHS_ERROR = 0x6853000a,
+ PR_FREEBUSY_BUSY_EVENTS = 0x68541102,
+ PR_FREEBUSY_BUSY_EVENTS_ERROR = 0x6854000a,
+ PR_FREEBUSY_OOF_MONTHS = 0x68551003,
+ PR_FREEBUSY_OOF_MONTHS_ERROR = 0x6855000a,
+ PR_FREEBUSY_OOF_EVENTS = 0x68561102,
+ PR_FREEBUSY_OOF_EVENTS_ERROR = 0x6856000a,
+ PR_FREEBUSY_LAST_MODIFIED = 0x68680040,
+ PR_FREEBUSY_LAST_MODIFIED_ERROR = 0x6868000a,
+ PR_FREEBUSY_NUM_MONTHS = 0x68690003,
+ PR_FREEBUSY_NUM_MONTHS_ERROR = 0x6869000a,
+ PR_DELEGATES_SEE_PRIVATE = 0x686b1003,
+ PR_DELEGATES_SEE_PRIVATE_ERROR = 0x686b000a,
+ PR_PERSONAL_FREEBUSY = 0x686c0102,
+ PR_PERSONAL_FREEBUSY_ERROR = 0x686c000a,
+ PR_PROCESS_MEETING_REQUESTS = 0x686d000b,
+ PR_PROCESS_MEETING_REQUESTS_ERROR = 0x686d000a,
+ PR_DECLINE_RECURRING_MEETING_REQUESTS = 0x686e000b,
+ PR_DECLINE_RECURRING_MEETING_REQUESTS_ERROR = 0x686e000a,
+ PR_DECLINE_CONFLICTING_MEETING_REQUESTS = 0x686f000b,
+ PR_DECLINE_CONFLICTING_MEETING_REQUESTS_ERROR = 0x686f000a,
+ PR_VD_BINARY = 0x70010102,
+ PR_VD_BINARY_ERROR = 0x7001000a,
+ PR_VD_STRINGS = 0x7002001e,
+ PR_VD_STRINGS_UNICODE = 0x7002001f,
+ PR_VD_STRINGS_ERROR = 0x7002000a,
+ PR_VD_FLAGS = 0x70030003,
+ PR_VD_FLAGS_ERROR = 0x7003000a,
+ PR_VD_LINK_TO = 0x70040102,
+ PR_VD_LINK_TO_ERROR = 0x7004000a,
+ PR_VD_VIEW_FOLDER = 0x70050102,
+ PR_VD_VIEW_FOLDER_ERROR = 0x7005000a,
+ PR_VD_NAME = 0x7006001e,
+ PR_VD_NAME_UNICODE = 0x7006001f,
+ PR_VD_NAME_ERROR = 0x7006000a,
+ PR_VD_VERSION = 0x70070003,
+ PR_VD_VERSION_ERROR = 0x7007000a,
+ PR_FAV_DISPLAY_NAME_A = 0x7c00001e,
+ PR_FAV_DISPLAY_NAME_A_UNICODE = 0x7c00001f,
+ PR_FAV_DISPLAY_NAME_A_ERROR = 0x7c00000a,
+ PR_FAV_PUBLIC_SOURCE_KEY = 0x7c020102,
+ PR_FAV_PUBLIC_SOURCE_KEY_ERROR = 0x7c02000a,
+ PR_OST_OSTID = 0x7c040102,
+ PR_OST_OSTID_ERROR = 0x7c04000a,
+ PR_STORE_SLOWLINK = 0x7c0a000b,
+ PR_STORE_SLOWLINK_ERROR = 0x7c0a000a,
+ PR_FAV_AUTOSUBFOLDERS = 0x7d010003,
+ PR_FAV_AUTOSUBFOLDERS_ERROR = 0x7d01000a,
+ PR_FAV_PARENT_SOURCE_KEY = 0x7d020102,
+ PR_FAV_PARENT_SOURCE_KEY_ERROR = 0x7d02000a,
+ PR_FAV_LEVEL_MASK = 0x7d030003,
+ PR_FAV_LEVEL_MASK_ERROR = 0x7d03000a,
+ PR_FAV_INHERIT_AUTO = 0x7d070003,
+ PR_FAV_INHERIT_AUTO_ERROR = 0x7d07000a,
+ PR_FAV_DEL_SUBS = 0x7d080102,
+ PR_FAV_DEL_SUBS_ERROR = 0x7d08000a,
+ PR_ATTACHMENT_LINKID = 0x7ffa0003,
+ PR_ATTACHMENT_LINKID_ERROR = 0x7ffa000a,
+ PR_EXCEPTION_STARTTIME = 0x7ffb0040,
+ PR_EXCEPTION_STARTTIME_ERROR = 0x7ffb000a,
+ PR_EXCEPTION_ENDTIME = 0x7ffc0040,
+ PR_EXCEPTION_ENDTIME_ERROR = 0x7ffc000a,
+ PR_ATTACHMENT_FLAGS = 0x7ffd0003,
+ PR_ATTACHMENT_FLAGS_ERROR = 0x7ffd000a,
+ PR_ATTACHMENT_HIDDEN = 0x7ffe000b,
+ PR_ATTACHMENT_HIDDEN_ERROR = 0x7ffe000a,
+ PR_EMS_AB_DISPLAY_NAME_OVERRIDE = 0x8001000b,
+ PR_EMS_AB_DISPLAY_NAME_OVERRIDE_ERROR = 0x8001000a,
+ PR_EMS_AB_CA_CERTIFICATE = 0x80031102,
+ PR_EMS_AB_CA_CERTIFICATE_ERROR = 0x8003000a,
+ PR_EMS_AB_FOLDER_PATHNAME = 0x8004001e,
+ PR_EMS_AB_FOLDER_PATHNAME_UNICODE = 0x8004001f,
+ PR_EMS_AB_FOLDER_PATHNAME_ERROR = 0x8004000a,
+ PR_EMS_AB_MANAGER = 0x8005000d,
+ PR_EMS_AB_MANAGER_ERROR = 0x8005000a,
+ PR_EMS_AB_MANAGER_T = 0x8005001e,
+ PR_EMS_AB_MANAGER_T_UNICODE = 0x8005001f,
+ PR_EMS_AB_HOME_MDB_O = 0x8006000d,
+ PR_EMS_AB_HOME_MDB_O_ERROR = 0x8006000a,
+ PR_EMS_AB_HOME_MDB = 0x8006001e,
+ PR_EMS_AB_HOME_MDB_UNICODE = 0x8006001f,
+ PR_EMS_AB_HOME_MTA_O = 0x8007000d,
+ PR_EMS_AB_HOME_MTA_O_ERROR = 0x8007000a,
+ PR_EMS_AB_HOME_MTA = 0x8007001e,
+ PR_EMS_AB_HOME_MTA_UNICODE = 0x8007001f,
+ PR_EMS_AB_IS_MEMBER_OF_DL = 0x8008000d,
+ PR_EMS_AB_IS_MEMBER_OF_DL_ERROR = 0x8008000a,
+ PR_EMS_AB_IS_MEMBER_OF_DL_T = 0x8008001e,
+ PR_EMS_AB_IS_MEMBER_OF_DL_T_UNICODE = 0x8008001f,
+ PR_EMS_AB_MEMBER = 0x8009000d,
+ PR_EMS_AB_MEMBER_ERROR = 0x8009000a,
+ PR_EMS_AB_MEMBER_T = 0x8009001e,
+ PR_EMS_AB_MEMBER_T_UNICODE = 0x8009001f,
+ PR_EMS_AB_AUTOREPLY_MESSAGE = 0x800a001e,
+ PR_EMS_AB_AUTOREPLY_MESSAGE_UNICODE = 0x800a001f,
+ PR_EMS_AB_AUTOREPLY_MESSAGE_ERROR = 0x800a000a,
+ PR_EMS_AB_AUTOREPLY = 0x800b000b,
+ PR_EMS_AB_AUTOREPLY_ERROR = 0x800b000a,
+ PR_EMS_AB_OWNER_O = 0x800c000d,
+ PR_EMS_AB_OWNER_O_ERROR = 0x800c000a,
+ PR_EMS_AB_OWNER = 0x800c001e,
+ PR_EMS_AB_OWNER_UNICODE = 0x800c001f,
+ PR_EMS_AB_KM_SERVER_O = 0x800d000d,
+ PR_EMS_AB_KM_SERVER_O_ERROR = 0x800d000a,
+ PR_EMS_AB_KM_SERVER = 0x800d001e,
+ PR_EMS_AB_KM_SERVER_UNICODE = 0x800d001f,
+ PR_EMS_AB_REPORTS = 0x800e000d,
+ PR_EMS_AB_REPORTS_ERROR = 0x800e000a,
+ PR_EMS_AB_PROXY_ADDRESSES = 0x800f101e,
+ PR_EMS_AB_PROXY_ADDRESSES_UNICODE = 0x800f101f,
+ PR_EMS_AB_PROXY_ADDRESSES_ERROR = 0x800f000a,
+ PR_EMS_AB_HELP_DATA32 = 0x80100102,
+ PR_EMS_AB_HELP_DATA32_ERROR = 0x8010000a,
+ PR_EMS_AB_TARGET_ADDRESS = 0x8011001e,
+ PR_EMS_AB_TARGET_ADDRESS_UNICODE = 0x8011001f,
+ PR_EMS_AB_TARGET_ADDRESS_ERROR = 0x8011000a,
+ PR_EMS_AB_TELEPHONE_NUMBER = 0x8012101e,
+ PR_EMS_AB_TELEPHONE_NUMBER_UNICODE = 0x8012101f,
+ PR_EMS_AB_TELEPHONE_NUMBER_ERROR = 0x8012000a,
+ PR_EMS_AB_NT_SECURITY_DESCRIPTOR = 0x80130102,
+ PR_EMS_AB_NT_SECURITY_DESCRIPTOR_ERROR = 0x8013000a,
+ PR_EMS_AB_HOME_MDB_BL_O = 0x8014000d,
+ PR_EMS_AB_HOME_MDB_BL_O_ERROR = 0x8014000a,
+ PR_EMS_AB_HOME_MDB_BL = 0x8014101e,
+ PR_EMS_AB_HOME_MDB_BL_UNICODE = 0x8014101f,
+ PR_EMS_AB_PUBLIC_DELEGATES = 0x8015000d,
+ PR_EMS_AB_PUBLIC_DELEGATES_ERROR = 0x8015000a,
+ PR_EMS_AB_PUBLIC_DELEGATES_T = 0x8015001e,
+ PR_EMS_AB_PUBLIC_DELEGATES_T_UNICODE = 0x8015001f,
+ PR_EMS_AB_CERTIFICATE_REVOCATION_LIST = 0x80160102,
+ PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_ERROR = 0x8016000a,
+ PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE = 0x80170102,
+ PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE_ERROR = 0x8017000a,
+ PR_EMS_AB_ADDRESS_SYNTAX = 0x80180102,
+ PR_EMS_AB_ADDRESS_SYNTAX_ERROR = 0x8018000a,
+ PR_EMS_AB_BUSINESS_ROLES = 0x80230102,
+ PR_EMS_AB_BUSINESS_ROLES_ERROR = 0x8023000a,
+ PR_EMS_AB_OWNER_BL_O = 0x8024000d,
+ PR_EMS_AB_OWNER_BL_O_ERROR = 0x8024000a,
+ PR_EMS_AB_OWNER_BL = 0x8024101e,
+ PR_EMS_AB_OWNER_BL_UNICODE = 0x8024101f,
+ PR_EMS_AB_CROSS_CERTIFICATE_PAIR = 0x80251102,
+ PR_EMS_AB_CROSS_CERTIFICATE_PAIR_ERROR = 0x8025000a,
+ PR_EMS_AB_AUTHORITY_REVOCATION_LIST = 0x80261102,
+ PR_EMS_AB_AUTHORITY_REVOCATION_LIST_ERROR = 0x8026000a,
+ PR_EMS_AB_ASSOC_NT_ACCOUNT = 0x80270102,
+ PR_EMS_AB_ASSOC_NT_ACCOUNT_ERROR = 0x8027000a,
+ PR_EMS_AB_EXPIRATION_TIME = 0x80280040,
+ PR_EMS_AB_EXPIRATION_TIME_ERROR = 0x8028000a,
+ PR_EMS_AB_USN_CHANGED = 0x80290003,
+ PR_EMS_AB_USN_CHANGED_ERROR = 0x8029000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_1 = 0x802d001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_1_UNICODE = 0x802d001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_1_ERROR = 0x802d000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_2 = 0x802e001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_2_UNICODE = 0x802e001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_2_ERROR = 0x802e000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_3 = 0x802f001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_3_UNICODE = 0x802f001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_3_ERROR = 0x802f000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_4 = 0x8030001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_4_UNICODE = 0x8030001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_4_ERROR = 0x8030000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_5 = 0x8031001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_5_UNICODE = 0x8031001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_5_ERROR = 0x8031000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_6 = 0x8032001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_6_UNICODE = 0x8032001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_6_ERROR = 0x8032000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_7 = 0x8033001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_7_UNICODE = 0x8033001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_7_ERROR = 0x8033000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_8 = 0x8034001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_8_UNICODE = 0x8034001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_8_ERROR = 0x8034000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_9 = 0x8035001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_9_UNICODE = 0x8035001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_9_ERROR = 0x8035000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_10 = 0x8036001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_10_UNICODE = 0x8036001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_10_ERROR = 0x8036000a,
+ PR_EMS_AB_SECURITY_PROTOCOL = 0x80371102,
+ PR_EMS_AB_SECURITY_PROTOCOL_ERROR = 0x8037000a,
+ PR_EMS_AB_PF_CONTACTS_O = 0x8038000d,
+ PR_EMS_AB_PF_CONTACTS_O_ERROR = 0x8038000a,
+ PR_EMS_AB_PF_CONTACTS = 0x8038101e,
+ PR_EMS_AB_PF_CONTACTS_UNICODE = 0x8038101f,
+ PR_EMS_AB_HELP_DATA16 = 0x803a0102,
+ PR_EMS_AB_HELP_DATA16_ERROR = 0x803a000a,
+ PR_EMS_AB_HELP_FILE_NAME = 0x803b001e,
+ PR_EMS_AB_HELP_FILE_NAME_UNICODE = 0x803b001f,
+ PR_EMS_AB_HELP_FILE_NAME_ERROR = 0x803b000a,
+ PR_EMS_AB_OBJ_DIST_NAME_O = 0x803c000d,
+ PR_EMS_AB_OBJ_DIST_NAME_O_ERROR = 0x803c000a,
+ PR_EMS_AB_OBJ_DIST_NAME = 0x803c001e,
+ PR_EMS_AB_OBJ_DIST_NAME_UNICODE = 0x803c001f,
+ PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER = 0x803d001e,
+ PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER_UNICODE = 0x803d001f,
+ PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER_ERROR = 0x803d000a,
+ PR_EMS_AB_AUTOREPLY_SUBJECT = 0x803e001e,
+ PR_EMS_AB_AUTOREPLY_SUBJECT_UNICODE = 0x803e001f,
+ PR_EMS_AB_AUTOREPLY_SUBJECT_ERROR = 0x803e000a,
+ PR_EMS_AB_HOME_PUBLIC_SERVER_O = 0x803f000d,
+ PR_EMS_AB_HOME_PUBLIC_SERVER_O_ERROR = 0x803f000a,
+ PR_EMS_AB_HOME_PUBLIC_SERVER = 0x803f001e,
+ PR_EMS_AB_HOME_PUBLIC_SERVER_UNICODE = 0x803f001f,
+ PR_EMS_AB_ENCRYPT_ALG_LIST_NA = 0x8040101e,
+ PR_EMS_AB_ENCRYPT_ALG_LIST_NA_UNICODE = 0x8040101f,
+ PR_EMS_AB_ENCRYPT_ALG_LIST_NA_ERROR = 0x8040000a,
+ PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER = 0x8041101e,
+ PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER_UNICODE = 0x8041101f,
+ PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER_ERROR = 0x8041000a,
+ PR_EMS_AB_IMPORTED_FROM = 0x8042001e,
+ PR_EMS_AB_IMPORTED_FROM_UNICODE = 0x8042001f,
+ PR_EMS_AB_IMPORTED_FROM_ERROR = 0x8042000a,
+ PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA = 0x8043001e,
+ PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA_UNICODE = 0x8043001f,
+ PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA_ERROR = 0x8043000a,
+ PR_EMS_AB_ACCESS_CATEGORY = 0x80440003,
+ PR_EMS_AB_ACCESS_CATEGORY_ERROR = 0x8044000a,
+ PR_EMS_AB_ACTIVATION_SCHEDULE = 0x80450102,
+ PR_EMS_AB_ACTIVATION_SCHEDULE_ERROR = 0x8045000a,
+ PR_EMS_AB_ACTIVATION_STYLE = 0x80460003,
+ PR_EMS_AB_ACTIVATION_STYLE_ERROR = 0x8046000a,
+ PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE_MSDOS = 0x80470102,
+ PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE_MSDOS_ERROR = 0x8047000a,
+ PR_EMS_AB_ADDRESS_TYPE = 0x8048001e,
+ PR_EMS_AB_ADDRESS_TYPE_UNICODE = 0x8048001f,
+ PR_EMS_AB_ADDRESS_TYPE_ERROR = 0x8048000a,
+ PR_EMS_AB_ADMD = 0x8049001e,
+ PR_EMS_AB_ADMD_UNICODE = 0x8049001f,
+ PR_EMS_AB_ADMD_ERROR = 0x8049000a,
+ PR_EMS_AB_ADMIN_DESCRIPTION = 0x804a001e,
+ PR_EMS_AB_ADMIN_DESCRIPTION_UNICODE = 0x804a001f,
+ PR_EMS_AB_ADMIN_DESCRIPTION_ERROR = 0x804a000a,
+ PR_EMS_AB_ADMIN_DISPLAY_NAME = 0x804b001e,
+ PR_EMS_AB_ADMIN_DISPLAY_NAME_UNICODE = 0x804b001f,
+ PR_EMS_AB_ADMIN_DISPLAY_NAME_ERROR = 0x804b000a,
+ PR_EMS_AB_ADMIN_EXTENSION_DLL = 0x804c001e,
+ PR_EMS_AB_ADMIN_EXTENSION_DLL_UNICODE = 0x804c001f,
+ PR_EMS_AB_ADMIN_EXTENSION_DLL_ERROR = 0x804c000a,
+ PR_EMS_AB_ALIASED_OBJECT_NAME_O = 0x804d000d,
+ PR_EMS_AB_ALIASED_OBJECT_NAME_O_ERROR = 0x804d000a,
+ PR_EMS_AB_ALIASED_OBJECT_NAME = 0x804d001e,
+ PR_EMS_AB_ALIASED_OBJECT_NAME_UNICODE = 0x804d001f,
+ PR_EMS_AB_ALT_RECIPIENT_O = 0x804e000d,
+ PR_EMS_AB_ALT_RECIPIENT_O_ERROR = 0x804e000a,
+ PR_EMS_AB_ALT_RECIPIENT = 0x804e001e,
+ PR_EMS_AB_ALT_RECIPIENT_UNICODE = 0x804e001f,
+ PR_EMS_AB_ALT_RECIPIENT_BL_O = 0x804f000d,
+ PR_EMS_AB_ALT_RECIPIENT_BL_O_ERROR = 0x804f000a,
+ PR_EMS_AB_ALT_RECIPIENT_BL = 0x804f101e,
+ PR_EMS_AB_ALT_RECIPIENT_BL_UNICODE = 0x804f101f,
+ PR_EMS_AB_ANCESTOR_ID = 0x80500102,
+ PR_EMS_AB_ANCESTOR_ID_ERROR = 0x8050000a,
+ PR_EMS_AB_ASSOC_REMOTE_DXA_O = 0x8051000d,
+ PR_EMS_AB_ASSOC_REMOTE_DXA_O_ERROR = 0x8051000a,
+ PR_EMS_AB_ASSOC_REMOTE_DXA = 0x8051101e,
+ PR_EMS_AB_ASSOC_REMOTE_DXA_UNICODE = 0x8051101f,
+ PR_EMS_AB_ASSOCIATION_LIFETIME = 0x80520003,
+ PR_EMS_AB_ASSOCIATION_LIFETIME_ERROR = 0x8052000a,
+ PR_EMS_AB_AUTH_ORIG_BL_O = 0x8053000d,
+ PR_EMS_AB_AUTH_ORIG_BL_O_ERROR = 0x8053000a,
+ PR_EMS_AB_AUTH_ORIG_BL = 0x8053101e,
+ PR_EMS_AB_AUTH_ORIG_BL_UNICODE = 0x8053101f,
+ PR_EMS_AB_AUTHORIZED_DOMAIN = 0x8054001e,
+ PR_EMS_AB_AUTHORIZED_DOMAIN_UNICODE = 0x8054001f,
+ PR_EMS_AB_AUTHORIZED_DOMAIN_ERROR = 0x8054000a,
+ PR_EMS_AB_AUTHORIZED_PASSWORD = 0x80550102,
+ PR_EMS_AB_AUTHORIZED_PASSWORD_ERROR = 0x8055000a,
+ PR_EMS_AB_AUTHORIZED_USER = 0x8056001e,
+ PR_EMS_AB_AUTHORIZED_USER_UNICODE = 0x8056001f,
+ PR_EMS_AB_AUTHORIZED_USER_ERROR = 0x8056000a,
+ PR_EMS_AB_BUSINESS_CATEGORY = 0x8057101e,
+ PR_EMS_AB_BUSINESS_CATEGORY_UNICODE = 0x8057101f,
+ PR_EMS_AB_BUSINESS_CATEGORY_ERROR = 0x8057000a,
+ PR_EMS_AB_CAN_CREATE_PF_O = 0x8058000d,
+ PR_EMS_AB_CAN_CREATE_PF_O_ERROR = 0x8058000a,
+ PR_EMS_AB_CAN_CREATE_PF = 0x8058101e,
+ PR_EMS_AB_CAN_CREATE_PF_UNICODE = 0x8058101f,
+ PR_EMS_AB_CAN_CREATE_PF_BL_O = 0x8059000d,
+ PR_EMS_AB_CAN_CREATE_PF_BL_O_ERROR = 0x8059000a,
+ PR_EMS_AB_CAN_CREATE_PF_BL = 0x8059101e,
+ PR_EMS_AB_CAN_CREATE_PF_BL_UNICODE = 0x8059101f,
+ PR_EMS_AB_CAN_CREATE_PF_DL_O = 0x805a000d,
+ PR_EMS_AB_CAN_CREATE_PF_DL_O_ERROR = 0x805a000a,
+ PR_EMS_AB_CAN_CREATE_PF_DL = 0x805a101e,
+ PR_EMS_AB_CAN_CREATE_PF_DL_UNICODE = 0x805a101f,
+ PR_EMS_AB_CAN_CREATE_PF_DL_BL_O = 0x805b000d,
+ PR_EMS_AB_CAN_CREATE_PF_DL_BL_O_ERROR = 0x805b000a,
+ PR_EMS_AB_CAN_CREATE_PF_DL_BL = 0x805b101e,
+ PR_EMS_AB_CAN_CREATE_PF_DL_BL_UNICODE = 0x805b101f,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_O = 0x805c000d,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_O_ERROR = 0x805c000a,
+ PR_EMS_AB_CAN_NOT_CREATE_PF = 0x805c101e,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_UNICODE = 0x805c101f,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_BL_O = 0x805d000d,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_BL_O_ERROR = 0x805d000a,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_BL = 0x805d101e,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_BL_UNICODE = 0x805d101f,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL_O = 0x805e000d,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL_O_ERROR = 0x805e000a,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL = 0x805e101e,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL_UNICODE = 0x805e101f,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_O = 0x805f000d,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_O_ERROR = 0x805f000a,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL = 0x805f101e,
+ PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_UNICODE = 0x805f101f,
+ PR_EMS_AB_CAN_PRESERVE_DNS = 0x8060000b,
+ PR_EMS_AB_CAN_PRESERVE_DNS_ERROR = 0x8060000a,
+ PR_EMS_AB_CLOCK_ALERT_OFFSET = 0x80610003,
+ PR_EMS_AB_CLOCK_ALERT_OFFSET_ERROR = 0x8061000a,
+ PR_EMS_AB_CLOCK_ALERT_REPAIR = 0x8062000b,
+ PR_EMS_AB_CLOCK_ALERT_REPAIR_ERROR = 0x8062000a,
+ PR_EMS_AB_CLOCK_WARNING_OFFSET = 0x80630003,
+ PR_EMS_AB_CLOCK_WARNING_OFFSET_ERROR = 0x8063000a,
+ PR_EMS_AB_CLOCK_WARNING_REPAIR = 0x8064000b,
+ PR_EMS_AB_CLOCK_WARNING_REPAIR_ERROR = 0x8064000a,
+ PR_EMS_AB_COMPUTER_NAME = 0x8065001e,
+ PR_EMS_AB_COMPUTER_NAME_UNICODE = 0x8065001f,
+ PR_EMS_AB_COMPUTER_NAME_ERROR = 0x8065000a,
+ PR_EMS_AB_CONNECTED_DOMAINS = 0x8066101e,
+ PR_EMS_AB_CONNECTED_DOMAINS_UNICODE = 0x8066101f,
+ PR_EMS_AB_CONNECTED_DOMAINS_ERROR = 0x8066000a,
+ PR_EMS_AB_CONTAINER_INFO = 0x80670003,
+ PR_EMS_AB_CONTAINER_INFO_ERROR = 0x8067000a,
+ PR_EMS_AB_COST = 0x80680003,
+ PR_EMS_AB_COST_ERROR = 0x8068000a,
+ PR_EMS_AB_COUNTRY_NAME = 0x8069001e,
+ PR_EMS_AB_COUNTRY_NAME_UNICODE = 0x8069001f,
+ PR_EMS_AB_COUNTRY_NAME_ERROR = 0x8069000a,
+ PR_EMS_AB_DELIV_CONT_LENGTH = 0x806a0003,
+ PR_EMS_AB_DELIV_CONT_LENGTH_ERROR = 0x806a000a,
+ PR_EMS_AB_DELIV_EITS = 0x806b1102,
+ PR_EMS_AB_DELIV_EITS_ERROR = 0x806b000a,
+ PR_EMS_AB_DELIV_EXT_CONT_TYPES = 0x806c1102,
+ PR_EMS_AB_DELIV_EXT_CONT_TYPES_ERROR = 0x806c000a,
+ PR_EMS_AB_DELIVER_AND_REDIRECT = 0x806d000b,
+ PR_EMS_AB_DELIVER_AND_REDIRECT_ERROR = 0x806d000a,
+ PR_EMS_AB_DELIVERY_MECHANISM = 0x806e0003,
+ PR_EMS_AB_DELIVERY_MECHANISM_ERROR = 0x806e000a,
+ PR_EMS_AB_DESCRIPTION = 0x806f101e,
+ PR_EMS_AB_DESCRIPTION_UNICODE = 0x806f101f,
+ PR_EMS_AB_DESCRIPTION_ERROR = 0x806f000a,
+ PR_EMS_AB_DESTINATION_INDICATOR = 0x8070101e,
+ PR_EMS_AB_DESTINATION_INDICATOR_UNICODE = 0x8070101f,
+ PR_EMS_AB_DESTINATION_INDICATOR_ERROR = 0x8070000a,
+ PR_EMS_AB_DIAGNOSTIC_REG_KEY = 0x8071001e,
+ PR_EMS_AB_DIAGNOSTIC_REG_KEY_UNICODE = 0x8071001f,
+ PR_EMS_AB_DIAGNOSTIC_REG_KEY_ERROR = 0x8071000a,
+ PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_O = 0x8072000d,
+ PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_O_ERROR = 0x8072000a,
+ PR_EMS_AB_DL_MEM_REJECT_PERMS_BL = 0x8072101e,
+ PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_UNICODE = 0x8072101f,
+ PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_O = 0x8073000d,
+ PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_O_ERROR = 0x8073000a,
+ PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL = 0x8073101e,
+ PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_UNICODE = 0x8073101f,
+ PR_EMS_AB_DL_MEMBER_RULE = 0x80741102,
+ PR_EMS_AB_DL_MEMBER_RULE_ERROR = 0x8074000a,
+ PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_O = 0x8075000d,
+ PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_O_ERROR = 0x8075000a,
+ PR_EMS_AB_DOMAIN_DEF_ALT_RECIP = 0x8075001e,
+ PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_UNICODE = 0x8075001f,
+ PR_EMS_AB_DOMAIN_NAME = 0x8076001e,
+ PR_EMS_AB_DOMAIN_NAME_UNICODE = 0x8076001f,
+ PR_EMS_AB_DOMAIN_NAME_ERROR = 0x8076000a,
+ PR_EMS_AB_DSA_SIGNATURE = 0x80770102,
+ PR_EMS_AB_DSA_SIGNATURE_ERROR = 0x8077000a,
+ PR_EMS_AB_DXA_ADMIN_COPY = 0x8078000b,
+ PR_EMS_AB_DXA_ADMIN_COPY_ERROR = 0x8078000a,
+ PR_EMS_AB_DXA_ADMIN_FORWARD = 0x8079000b,
+ PR_EMS_AB_DXA_ADMIN_FORWARD_ERROR = 0x8079000a,
+ PR_EMS_AB_DXA_ADMIN_UPDATE = 0x807a0003,
+ PR_EMS_AB_DXA_ADMIN_UPDATE_ERROR = 0x807a000a,
+ PR_EMS_AB_DXA_APPEND_REQCN = 0x807b000b,
+ PR_EMS_AB_DXA_APPEND_REQCN_ERROR = 0x807b000a,
+ PR_EMS_AB_DXA_CONF_CONTAINER_LIST_O = 0x807c000d,
+ PR_EMS_AB_DXA_CONF_CONTAINER_LIST_O_ERROR = 0x807c000a,
+ PR_EMS_AB_DXA_CONF_CONTAINER_LIST = 0x807c101e,
+ PR_EMS_AB_DXA_CONF_CONTAINER_LIST_UNICODE = 0x807c101f,
+ PR_EMS_AB_DXA_CONF_REQ_TIME = 0x807d0040,
+ PR_EMS_AB_DXA_CONF_REQ_TIME_ERROR = 0x807d000a,
+ PR_EMS_AB_DXA_CONF_SEQ = 0x807e001e,
+ PR_EMS_AB_DXA_CONF_SEQ_UNICODE = 0x807e001f,
+ PR_EMS_AB_DXA_CONF_SEQ_ERROR = 0x807e000a,
+ PR_EMS_AB_DXA_CONF_SEQ_USN = 0x807f0003,
+ PR_EMS_AB_DXA_CONF_SEQ_USN_ERROR = 0x807f000a,
+ PR_EMS_AB_DXA_EXCHANGE_OPTIONS = 0x80800003,
+ PR_EMS_AB_DXA_EXCHANGE_OPTIONS_ERROR = 0x8080000a,
+ PR_EMS_AB_DXA_EXPORT_NOW = 0x8081000b,
+ PR_EMS_AB_DXA_EXPORT_NOW_ERROR = 0x8081000a,
+ PR_EMS_AB_DXA_FLAGS = 0x80820003,
+ PR_EMS_AB_DXA_FLAGS_ERROR = 0x8082000a,
+ PR_EMS_AB_DXA_IMP_SEQ = 0x8083001e,
+ PR_EMS_AB_DXA_IMP_SEQ_UNICODE = 0x8083001f,
+ PR_EMS_AB_DXA_IMP_SEQ_ERROR = 0x8083000a,
+ PR_EMS_AB_DXA_IMP_SEQ_TIME = 0x80840040,
+ PR_EMS_AB_DXA_IMP_SEQ_TIME_ERROR = 0x8084000a,
+ PR_EMS_AB_DXA_IMP_SEQ_USN = 0x80850003,
+ PR_EMS_AB_DXA_IMP_SEQ_USN_ERROR = 0x8085000a,
+ PR_EMS_AB_DXA_IMPORT_NOW = 0x8086000b,
+ PR_EMS_AB_DXA_IMPORT_NOW_ERROR = 0x8086000a,
+ PR_EMS_AB_DXA_IN_TEMPLATE_MAP = 0x8087101e,
+ PR_EMS_AB_DXA_IN_TEMPLATE_MAP_UNICODE = 0x8087101f,
+ PR_EMS_AB_DXA_IN_TEMPLATE_MAP_ERROR = 0x8087000a,
+ PR_EMS_AB_DXA_LOCAL_ADMIN_O = 0x8088000d,
+ PR_EMS_AB_DXA_LOCAL_ADMIN_O_ERROR = 0x8088000a,
+ PR_EMS_AB_DXA_LOCAL_ADMIN = 0x8088001e,
+ PR_EMS_AB_DXA_LOCAL_ADMIN_UNICODE = 0x8088001f,
+ PR_EMS_AB_DXA_LOGGING_LEVEL = 0x80890003,
+ PR_EMS_AB_DXA_LOGGING_LEVEL_ERROR = 0x8089000a,
+ PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE = 0x808a001e,
+ PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE_UNICODE = 0x808a001f,
+ PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE_ERROR = 0x808a000a,
+ PR_EMS_AB_DXA_OUT_TEMPLATE_MAP = 0x808b101e,
+ PR_EMS_AB_DXA_OUT_TEMPLATE_MAP_UNICODE = 0x808b101f,
+ PR_EMS_AB_DXA_OUT_TEMPLATE_MAP_ERROR = 0x808b000a,
+ PR_EMS_AB_DXA_PASSWORD = 0x808c001e,
+ PR_EMS_AB_DXA_PASSWORD_UNICODE = 0x808c001f,
+ PR_EMS_AB_DXA_PASSWORD_ERROR = 0x808c000a,
+ PR_EMS_AB_DXA_PREV_EXCHANGE_OPTIONS = 0x808d0003,
+ PR_EMS_AB_DXA_PREV_EXCHANGE_OPTIONS_ERROR = 0x808d000a,
+ PR_EMS_AB_DXA_PREV_EXPORT_NATIVE_ONLY = 0x808e000b,
+ PR_EMS_AB_DXA_PREV_EXPORT_NATIVE_ONLY_ERROR = 0x808e000a,
+ PR_EMS_AB_DXA_PREV_IN_EXCHANGE_SENSITIVITY = 0x808f0003,
+ PR_EMS_AB_DXA_PREV_IN_EXCHANGE_SENSITIVITY_ERROR = 0x808f000a,
+ PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_O = 0x8090000d,
+ PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_O_ERROR = 0x8090000a,
+ PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES = 0x8090001e,
+ PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_UNICODE = 0x8090001f,
+ PR_EMS_AB_DXA_PREV_REPLICATION_SENSITIVITY = 0x80910003,
+ PR_EMS_AB_DXA_PREV_REPLICATION_SENSITIVITY_ERROR = 0x8091000a,
+ PR_EMS_AB_DXA_PREV_TEMPLATE_OPTIONS = 0x80920003,
+ PR_EMS_AB_DXA_PREV_TEMPLATE_OPTIONS_ERROR = 0x8092000a,
+ PR_EMS_AB_DXA_PREV_TYPES = 0x80930003,
+ PR_EMS_AB_DXA_PREV_TYPES_ERROR = 0x8093000a,
+ PR_EMS_AB_DXA_RECIPIENT_CP = 0x8094001e,
+ PR_EMS_AB_DXA_RECIPIENT_CP_UNICODE = 0x8094001f,
+ PR_EMS_AB_DXA_RECIPIENT_CP_ERROR = 0x8094000a,
+ PR_EMS_AB_DXA_REMOTE_CLIENT_O = 0x8095000d,
+ PR_EMS_AB_DXA_REMOTE_CLIENT_O_ERROR = 0x8095000a,
+ PR_EMS_AB_DXA_REMOTE_CLIENT = 0x8095001e,
+ PR_EMS_AB_DXA_REMOTE_CLIENT_UNICODE = 0x8095001f,
+ PR_EMS_AB_DXA_REQ_SEQ = 0x8096001e,
+ PR_EMS_AB_DXA_REQ_SEQ_UNICODE = 0x8096001f,
+ PR_EMS_AB_DXA_REQ_SEQ_ERROR = 0x8096000a,
+ PR_EMS_AB_DXA_REQ_SEQ_TIME = 0x80970040,
+ PR_EMS_AB_DXA_REQ_SEQ_TIME_ERROR = 0x8097000a,
+ PR_EMS_AB_DXA_REQ_SEQ_USN = 0x80980003,
+ PR_EMS_AB_DXA_REQ_SEQ_USN_ERROR = 0x8098000a,
+ PR_EMS_AB_DXA_REQNAME = 0x8099001e,
+ PR_EMS_AB_DXA_REQNAME_UNICODE = 0x8099001f,
+ PR_EMS_AB_DXA_REQNAME_ERROR = 0x8099000a,
+ PR_EMS_AB_DXA_SVR_SEQ = 0x809a001e,
+ PR_EMS_AB_DXA_SVR_SEQ_UNICODE = 0x809a001f,
+ PR_EMS_AB_DXA_SVR_SEQ_ERROR = 0x809a000a,
+ PR_EMS_AB_DXA_SVR_SEQ_TIME = 0x809b0040,
+ PR_EMS_AB_DXA_SVR_SEQ_TIME_ERROR = 0x809b000a,
+ PR_EMS_AB_DXA_SVR_SEQ_USN = 0x809c0003,
+ PR_EMS_AB_DXA_SVR_SEQ_USN_ERROR = 0x809c000a,
+ PR_EMS_AB_DXA_TASK = 0x809d0003,
+ PR_EMS_AB_DXA_TASK_ERROR = 0x809d000a,
+ PR_EMS_AB_DXA_TEMPLATE_OPTIONS = 0x809e0003,
+ PR_EMS_AB_DXA_TEMPLATE_OPTIONS_ERROR = 0x809e000a,
+ PR_EMS_AB_DXA_TEMPLATE_TIMESTAMP = 0x809f0040,
+ PR_EMS_AB_DXA_TEMPLATE_TIMESTAMP_ERROR = 0x809f000a,
+ PR_EMS_AB_DXA_TYPES = 0x80a00003,
+ PR_EMS_AB_DXA_TYPES_ERROR = 0x80a0000a,
+ PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_O = 0x80a1000d,
+ PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_O_ERROR = 0x80a1000a,
+ PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST = 0x80a1101e,
+ PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_UNICODE = 0x80a1101f,
+ PR_EMS_AB_ENCAPSULATION_METHOD = 0x80a20003,
+ PR_EMS_AB_ENCAPSULATION_METHOD_ERROR = 0x80a2000a,
+ PR_EMS_AB_ENCRYPT = 0x80a3000b,
+ PR_EMS_AB_ENCRYPT_ERROR = 0x80a3000a,
+ PR_EMS_AB_EXPAND_DLS_LOCALLY = 0x80a4000b,
+ PR_EMS_AB_EXPAND_DLS_LOCALLY_ERROR = 0x80a4000a,
+ PR_EMS_AB_EXPORT_CONTAINERS_O = 0x80a5000d,
+ PR_EMS_AB_EXPORT_CONTAINERS_O_ERROR = 0x80a5000a,
+ PR_EMS_AB_EXPORT_CONTAINERS = 0x80a5101e,
+ PR_EMS_AB_EXPORT_CONTAINERS_UNICODE = 0x80a5101f,
+ PR_EMS_AB_EXPORT_CUSTOM_RECIPIENTS = 0x80a6000b,
+ PR_EMS_AB_EXPORT_CUSTOM_RECIPIENTS_ERROR = 0x80a6000a,
+ PR_EMS_AB_EXTENDED_CHARS_ALLOWED = 0x80a7000b,
+ PR_EMS_AB_EXTENDED_CHARS_ALLOWED_ERROR = 0x80a7000a,
+ PR_EMS_AB_EXTENSION_DATA = 0x80a81102,
+ PR_EMS_AB_EXTENSION_DATA_ERROR = 0x80a8000a,
+ PR_EMS_AB_EXTENSION_NAME = 0x80a9101e,
+ PR_EMS_AB_EXTENSION_NAME_UNICODE = 0x80a9101f,
+ PR_EMS_AB_EXTENSION_NAME_ERROR = 0x80a9000a,
+ PR_EMS_AB_EXTENSION_NAME_INHERITED = 0x80aa101e,
+ PR_EMS_AB_EXTENSION_NAME_INHERITED_UNICODE = 0x80aa101f,
+ PR_EMS_AB_EXTENSION_NAME_INHERITED_ERROR = 0x80aa000a,
+ PR_EMS_AB_FACSIMILE_TELEPHONE_NUMBER = 0x80ab1102,
+ PR_EMS_AB_FACSIMILE_TELEPHONE_NUMBER_ERROR = 0x80ab000a,
+ PR_EMS_AB_FILE_VERSION = 0x80ac0102,
+ PR_EMS_AB_FILE_VERSION_ERROR = 0x80ac000a,
+ PR_EMS_AB_FILTER_LOCAL_ADDRESSES = 0x80ad000b,
+ PR_EMS_AB_FILTER_LOCAL_ADDRESSES_ERROR = 0x80ad000a,
+ PR_EMS_AB_FOLDERS_CONTAINER_O = 0x80ae000d,
+ PR_EMS_AB_FOLDERS_CONTAINER_O_ERROR = 0x80ae000a,
+ PR_EMS_AB_FOLDERS_CONTAINER = 0x80ae001e,
+ PR_EMS_AB_FOLDERS_CONTAINER_UNICODE = 0x80ae001f,
+ PR_EMS_AB_GARBAGE_COLL_PERIOD = 0x80af0003,
+ PR_EMS_AB_GARBAGE_COLL_PERIOD_ERROR = 0x80af000a,
+ PR_EMS_AB_GATEWAY_LOCAL_CRED = 0x80b0001e,
+ PR_EMS_AB_GATEWAY_LOCAL_CRED_UNICODE = 0x80b0001f,
+ PR_EMS_AB_GATEWAY_LOCAL_CRED_ERROR = 0x80b0000a,
+ PR_EMS_AB_GATEWAY_LOCAL_DESIG = 0x80b1001e,
+ PR_EMS_AB_GATEWAY_LOCAL_DESIG_UNICODE = 0x80b1001f,
+ PR_EMS_AB_GATEWAY_LOCAL_DESIG_ERROR = 0x80b1000a,
+ PR_EMS_AB_GATEWAY_PROXY = 0x80b2101e,
+ PR_EMS_AB_GATEWAY_PROXY_UNICODE = 0x80b2101f,
+ PR_EMS_AB_GATEWAY_PROXY_ERROR = 0x80b2000a,
+ PR_EMS_AB_GATEWAY_ROUTING_TREE = 0x80b30102,
+ PR_EMS_AB_GATEWAY_ROUTING_TREE_ERROR = 0x80b3000a,
+ PR_EMS_AB_GWART_LAST_MODIFIED = 0x80b40040,
+ PR_EMS_AB_GWART_LAST_MODIFIED_ERROR = 0x80b4000a,
+ PR_EMS_AB_HAS_FULL_REPLICA_NCS_O = 0x80b5000d,
+ PR_EMS_AB_HAS_FULL_REPLICA_NCS_O_ERROR = 0x80b5000a,
+ PR_EMS_AB_HAS_FULL_REPLICA_NCS = 0x80b5101e,
+ PR_EMS_AB_HAS_FULL_REPLICA_NCS_UNICODE = 0x80b5101f,
+ PR_EMS_AB_HAS_MASTER_NCS_O = 0x80b6000d,
+ PR_EMS_AB_HAS_MASTER_NCS_O_ERROR = 0x80b6000a,
+ PR_EMS_AB_HAS_MASTER_NCS = 0x80b6101e,
+ PR_EMS_AB_HAS_MASTER_NCS_UNICODE = 0x80b6101f,
+ PR_EMS_AB_HEURISTICS = 0x80b70003,
+ PR_EMS_AB_HEURISTICS_ERROR = 0x80b7000a,
+ PR_EMS_AB_HIDE_DL_MEMBERSHIP = 0x80b8000b,
+ PR_EMS_AB_HIDE_DL_MEMBERSHIP_ERROR = 0x80b8000a,
+ PR_EMS_AB_HIDE_FROM_ADDRESS_BOOK = 0x80b9000b,
+ PR_EMS_AB_HIDE_FROM_ADDRESS_BOOK_ERROR = 0x80b9000a,
+ PR_EMS_AB_IMPORT_CONTAINER_O = 0x80ba000d,
+ PR_EMS_AB_IMPORT_CONTAINER_O_ERROR = 0x80ba000a,
+ PR_EMS_AB_IMPORT_CONTAINER = 0x80ba001e,
+ PR_EMS_AB_IMPORT_CONTAINER_UNICODE = 0x80ba001f,
+ PR_EMS_AB_IMPORT_SENSITIVITY = 0x80bb0003,
+ PR_EMS_AB_IMPORT_SENSITIVITY_ERROR = 0x80bb000a,
+ PR_EMS_AB_INBOUND_SITES_O = 0x80bc000d,
+ PR_EMS_AB_INBOUND_SITES_O_ERROR = 0x80bc000a,
+ PR_EMS_AB_INBOUND_SITES = 0x80bc101e,
+ PR_EMS_AB_INBOUND_SITES_UNICODE = 0x80bc101f,
+ PR_EMS_AB_INSTANCE_TYPE = 0x80bd0003,
+ PR_EMS_AB_INSTANCE_TYPE_ERROR = 0x80bd000a,
+ PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER = 0x80be101e,
+ PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER_UNICODE = 0x80be101f,
+ PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER_ERROR = 0x80be000a,
+ PR_EMS_AB_INVOCATION_ID = 0x80bf0102,
+ PR_EMS_AB_INVOCATION_ID_ERROR = 0x80bf000a,
+ PR_EMS_AB_IS_DELETED = 0x80c0000b,
+ PR_EMS_AB_IS_DELETED_ERROR = 0x80c0000a,
+ PR_EMS_AB_IS_SINGLE_VALUED = 0x80c1000b,
+ PR_EMS_AB_IS_SINGLE_VALUED_ERROR = 0x80c1000a,
+ PR_EMS_AB_KCC_STATUS = 0x80c21102,
+ PR_EMS_AB_KCC_STATUS_ERROR = 0x80c2000a,
+ PR_EMS_AB_KNOWLEDGE_INFORMATION = 0x80c3101e,
+ PR_EMS_AB_KNOWLEDGE_INFORMATION_UNICODE = 0x80c3101f,
+ PR_EMS_AB_KNOWLEDGE_INFORMATION_ERROR = 0x80c3000a,
+ PR_EMS_AB_LINE_WRAP = 0x80c40003,
+ PR_EMS_AB_LINE_WRAP_ERROR = 0x80c4000a,
+ PR_EMS_AB_LINK_ID = 0x80c50003,
+ PR_EMS_AB_LINK_ID_ERROR = 0x80c5000a,
+ PR_EMS_AB_LOCAL_BRIDGE_HEAD = 0x80c6001e,
+ PR_EMS_AB_LOCAL_BRIDGE_HEAD_UNICODE = 0x80c6001f,
+ PR_EMS_AB_LOCAL_BRIDGE_HEAD_ERROR = 0x80c6000a,
+ PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS = 0x80c7001e,
+ PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS_UNICODE = 0x80c7001f,
+ PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS_ERROR = 0x80c7000a,
+ PR_EMS_AB_LOCAL_INITIAL_TURN = 0x80c8000b,
+ PR_EMS_AB_LOCAL_INITIAL_TURN_ERROR = 0x80c8000a,
+ PR_EMS_AB_LOCAL_SCOPE_O = 0x80c9000d,
+ PR_EMS_AB_LOCAL_SCOPE_O_ERROR = 0x80c9000a,
+ PR_EMS_AB_LOCAL_SCOPE = 0x80c9101e,
+ PR_EMS_AB_LOCAL_SCOPE_UNICODE = 0x80c9101f,
+ PR_EMS_AB_LOG_FILENAME = 0x80ca001e,
+ PR_EMS_AB_LOG_FILENAME_UNICODE = 0x80ca001f,
+ PR_EMS_AB_LOG_FILENAME_ERROR = 0x80ca000a,
+ PR_EMS_AB_LOG_ROLLOVER_INTERVAL = 0x80cb0003,
+ PR_EMS_AB_LOG_ROLLOVER_INTERVAL_ERROR = 0x80cb000a,
+ PR_EMS_AB_MAINTAIN_AUTOREPLY_HISTORY = 0x80cc000b,
+ PR_EMS_AB_MAINTAIN_AUTOREPLY_HISTORY_ERROR = 0x80cc000a,
+ PR_EMS_AB_MAPI_DISPLAY_TYPE = 0x80cd0003,
+ PR_EMS_AB_MAPI_DISPLAY_TYPE_ERROR = 0x80cd000a,
+ PR_EMS_AB_MAPI_ID = 0x80ce0003,
+ PR_EMS_AB_MAPI_ID_ERROR = 0x80ce000a,
+ PR_EMS_AB_MDB_BACKOFF_INTERVAL = 0x80cf0003,
+ PR_EMS_AB_MDB_BACKOFF_INTERVAL_ERROR = 0x80cf000a,
+ PR_EMS_AB_MDB_MSG_TIME_OUT_PERIOD = 0x80d00003,
+ PR_EMS_AB_MDB_MSG_TIME_OUT_PERIOD_ERROR = 0x80d0000a,
+ PR_EMS_AB_MDB_OVER_QUOTA_LIMIT = 0x80d10003,
+ PR_EMS_AB_MDB_OVER_QUOTA_LIMIT_ERROR = 0x80d1000a,
+ PR_EMS_AB_MDB_STORAGE_QUOTA = 0x80d20003,
+ PR_EMS_AB_MDB_STORAGE_QUOTA_ERROR = 0x80d2000a,
+ PR_EMS_AB_MDB_UNREAD_LIMIT = 0x80d30003,
+ PR_EMS_AB_MDB_UNREAD_LIMIT_ERROR = 0x80d3000a,
+ PR_EMS_AB_MDB_USE_DEFAULTS = 0x80d4000b,
+ PR_EMS_AB_MDB_USE_DEFAULTS_ERROR = 0x80d4000a,
+ PR_EMS_AB_MESSAGE_TRACKING_ENABLED = 0x80d5000b,
+ PR_EMS_AB_MESSAGE_TRACKING_ENABLED_ERROR = 0x80d5000a,
+ PR_EMS_AB_MONITOR_CLOCK = 0x80d6000b,
+ PR_EMS_AB_MONITOR_CLOCK_ERROR = 0x80d6000a,
+ PR_EMS_AB_MONITOR_SERVERS = 0x80d7000b,
+ PR_EMS_AB_MONITOR_SERVERS_ERROR = 0x80d7000a,
+ PR_EMS_AB_MONITOR_SERVICES = 0x80d8000b,
+ PR_EMS_AB_MONITOR_SERVICES_ERROR = 0x80d8000a,
+ PR_EMS_AB_MONITORED_CONFIGURATIONS_O = 0x80d9000d,
+ PR_EMS_AB_MONITORED_CONFIGURATIONS_O_ERROR = 0x80d9000a,
+ PR_EMS_AB_MONITORED_CONFIGURATIONS = 0x80d9101e,
+ PR_EMS_AB_MONITORED_CONFIGURATIONS_UNICODE = 0x80d9101f,
+ PR_EMS_AB_MONITORED_SERVERS_O = 0x80da000d,
+ PR_EMS_AB_MONITORED_SERVERS_O_ERROR = 0x80da000a,
+ PR_EMS_AB_MONITORED_SERVERS = 0x80da101e,
+ PR_EMS_AB_MONITORED_SERVERS_UNICODE = 0x80da101f,
+ PR_EMS_AB_MONITORED_SERVICES = 0x80db101e,
+ PR_EMS_AB_MONITORED_SERVICES_UNICODE = 0x80db101f,
+ PR_EMS_AB_MONITORED_SERVICES_ERROR = 0x80db000a,
+ PR_EMS_AB_MONITORING_ALERT_DELAY = 0x80dc0003,
+ PR_EMS_AB_MONITORING_ALERT_DELAY_ERROR = 0x80dc000a,
+ PR_EMS_AB_MONITORING_ALERT_UNITS = 0x80dd0003,
+ PR_EMS_AB_MONITORING_ALERT_UNITS_ERROR = 0x80dd000a,
+ PR_EMS_AB_MONITORING_AVAILABILITY_STYLE = 0x80de0003,
+ PR_EMS_AB_MONITORING_AVAILABILITY_STYLE_ERROR = 0x80de000a,
+ PR_EMS_AB_MONITORING_AVAILABILITY_WINDOW = 0x80df0102,
+ PR_EMS_AB_MONITORING_AVAILABILITY_WINDOW_ERROR = 0x80df000a,
+ PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_O = 0x80e0000d,
+ PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_O_ERROR = 0x80e0000a,
+ PR_EMS_AB_MONITORING_CACHED_VIA_MAIL = 0x80e0101e,
+ PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_UNICODE = 0x80e0101f,
+ PR_EMS_AB_MONITORING_CACHED_VIA_RPC_O = 0x80e1000d,
+ PR_EMS_AB_MONITORING_CACHED_VIA_RPC_O_ERROR = 0x80e1000a,
+ PR_EMS_AB_MONITORING_CACHED_VIA_RPC = 0x80e1101e,
+ PR_EMS_AB_MONITORING_CACHED_VIA_RPC_UNICODE = 0x80e1101f,
+ PR_EMS_AB_MONITORING_ESCALATION_PROCEDURE = 0x80e21102,
+ PR_EMS_AB_MONITORING_ESCALATION_PROCEDURE_ERROR = 0x80e2000a,
+ PR_EMS_AB_MONITORING_HOTSITE_POLL_INTERVAL = 0x80e30003,
+ PR_EMS_AB_MONITORING_HOTSITE_POLL_INTERVAL_ERROR = 0x80e3000a,
+ PR_EMS_AB_MONITORING_HOTSITE_POLL_UNITS = 0x80e40003,
+ PR_EMS_AB_MONITORING_HOTSITE_POLL_UNITS_ERROR = 0x80e4000a,
+ PR_EMS_AB_MONITORING_MAIL_UPDATE_INTERVAL = 0x80e50003,
+ PR_EMS_AB_MONITORING_MAIL_UPDATE_INTERVAL_ERROR = 0x80e5000a,
+ PR_EMS_AB_MONITORING_MAIL_UPDATE_UNITS = 0x80e60003,
+ PR_EMS_AB_MONITORING_MAIL_UPDATE_UNITS_ERROR = 0x80e6000a,
+ PR_EMS_AB_MONITORING_NORMAL_POLL_INTERVAL = 0x80e70003,
+ PR_EMS_AB_MONITORING_NORMAL_POLL_INTERVAL_ERROR = 0x80e7000a,
+ PR_EMS_AB_MONITORING_NORMAL_POLL_UNITS = 0x80e80003,
+ PR_EMS_AB_MONITORING_NORMAL_POLL_UNITS_ERROR = 0x80e8000a,
+ PR_EMS_AB_MONITORING_RECIPIENTS_O = 0x80e9000d,
+ PR_EMS_AB_MONITORING_RECIPIENTS_O_ERROR = 0x80e9000a,
+ PR_EMS_AB_MONITORING_RECIPIENTS = 0x80e9101e,
+ PR_EMS_AB_MONITORING_RECIPIENTS_UNICODE = 0x80e9101f,
+ PR_EMS_AB_MONITORING_RECIPIENTS_NDR_O = 0x80ea000d,
+ PR_EMS_AB_MONITORING_RECIPIENTS_NDR_O_ERROR = 0x80ea000a,
+ PR_EMS_AB_MONITORING_RECIPIENTS_NDR = 0x80ea101e,
+ PR_EMS_AB_MONITORING_RECIPIENTS_NDR_UNICODE = 0x80ea101f,
+ PR_EMS_AB_MONITORING_RPC_UPDATE_INTERVAL = 0x80eb0003,
+ PR_EMS_AB_MONITORING_RPC_UPDATE_INTERVAL_ERROR = 0x80eb000a,
+ PR_EMS_AB_MONITORING_RPC_UPDATE_UNITS = 0x80ec0003,
+ PR_EMS_AB_MONITORING_RPC_UPDATE_UNITS_ERROR = 0x80ec000a,
+ PR_EMS_AB_MONITORING_WARNING_DELAY = 0x80ed0003,
+ PR_EMS_AB_MONITORING_WARNING_DELAY_ERROR = 0x80ed000a,
+ PR_EMS_AB_MONITORING_WARNING_UNITS = 0x80ee0003,
+ PR_EMS_AB_MONITORING_WARNING_UNITS_ERROR = 0x80ee000a,
+ PR_EMS_AB_MTA_LOCAL_CRED = 0x80ef001e,
+ PR_EMS_AB_MTA_LOCAL_CRED_UNICODE = 0x80ef001f,
+ PR_EMS_AB_MTA_LOCAL_CRED_ERROR = 0x80ef000a,
+ PR_EMS_AB_MTA_LOCAL_DESIG = 0x80f0001e,
+ PR_EMS_AB_MTA_LOCAL_DESIG_UNICODE = 0x80f0001f,
+ PR_EMS_AB_MTA_LOCAL_DESIG_ERROR = 0x80f0000a,
+ PR_EMS_AB_N_ADDRESS = 0x80f10102,
+ PR_EMS_AB_N_ADDRESS_ERROR = 0x80f1000a,
+ PR_EMS_AB_N_ADDRESS_TYPE = 0x80f20003,
+ PR_EMS_AB_N_ADDRESS_TYPE_ERROR = 0x80f2000a,
+ PR_EMS_AB_NT_MACHINE_NAME = 0x80f3001e,
+ PR_EMS_AB_NT_MACHINE_NAME_UNICODE = 0x80f3001f,
+ PR_EMS_AB_NT_MACHINE_NAME_ERROR = 0x80f3000a,
+ PR_EMS_AB_NUM_OF_OPEN_RETRIES = 0x80f40003,
+ PR_EMS_AB_NUM_OF_OPEN_RETRIES_ERROR = 0x80f4000a,
+ PR_EMS_AB_NUM_OF_TRANSFER_RETRIES = 0x80f50003,
+ PR_EMS_AB_NUM_OF_TRANSFER_RETRIES_ERROR = 0x80f5000a,
+ PR_EMS_AB_OBJECT_CLASS_CATEGORY = 0x80f60003,
+ PR_EMS_AB_OBJECT_CLASS_CATEGORY_ERROR = 0x80f6000a,
+ PR_EMS_AB_OBJECT_VERSION = 0x80f70003,
+ PR_EMS_AB_OBJECT_VERSION_ERROR = 0x80f7000a,
+ PR_EMS_AB_OFF_LINE_AB_CONTAINERS_O = 0x80f8000d,
+ PR_EMS_AB_OFF_LINE_AB_CONTAINERS_O_ERROR = 0x80f8000a,
+ PR_EMS_AB_OFF_LINE_AB_CONTAINERS = 0x80f8101e,
+ PR_EMS_AB_OFF_LINE_AB_CONTAINERS_UNICODE = 0x80f8101f,
+ PR_EMS_AB_OFF_LINE_AB_SCHEDULE = 0x80f90102,
+ PR_EMS_AB_OFF_LINE_AB_SCHEDULE_ERROR = 0x80f9000a,
+ PR_EMS_AB_OFF_LINE_AB_SERVER_O = 0x80fa000d,
+ PR_EMS_AB_OFF_LINE_AB_SERVER_O_ERROR = 0x80fa000a,
+ PR_EMS_AB_OFF_LINE_AB_SERVER = 0x80fa001e,
+ PR_EMS_AB_OFF_LINE_AB_SERVER_UNICODE = 0x80fa001f,
+ PR_EMS_AB_OFF_LINE_AB_STYLE = 0x80fb0003,
+ PR_EMS_AB_OFF_LINE_AB_STYLE_ERROR = 0x80fb000a,
+ PR_EMS_AB_OID_TYPE = 0x80fc0003,
+ PR_EMS_AB_OID_TYPE_ERROR = 0x80fc000a,
+ PR_EMS_AB_OM_OBJECT_CLASS = 0x80fd0102,
+ PR_EMS_AB_OM_OBJECT_CLASS_ERROR = 0x80fd000a,
+ PR_EMS_AB_OM_SYNTAX = 0x80fe0003,
+ PR_EMS_AB_OM_SYNTAX_ERROR = 0x80fe000a,
+ PR_EMS_AB_OOF_REPLY_TO_ORIGINATOR = 0x80ff000b,
+ PR_EMS_AB_OOF_REPLY_TO_ORIGINATOR_ERROR = 0x80ff000a,
+ PR_EMS_AB_OPEN_RETRY_INTERVAL = 0x81000003,
+ PR_EMS_AB_OPEN_RETRY_INTERVAL_ERROR = 0x8100000a,
+ PR_EMS_AB_ORGANIZATION_NAME = 0x8101101e,
+ PR_EMS_AB_ORGANIZATION_NAME_UNICODE = 0x8101101f,
+ PR_EMS_AB_ORGANIZATION_NAME_ERROR = 0x8101000a,
+ PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME = 0x8102101e,
+ PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME_UNICODE = 0x8102101f,
+ PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME_ERROR = 0x8102000a,
+ PR_EMS_AB_ORIGINAL_DISPLAY_TABLE = 0x81030102,
+ PR_EMS_AB_ORIGINAL_DISPLAY_TABLE_ERROR = 0x8103000a,
+ PR_EMS_AB_ORIGINAL_DISPLAY_TABLE_MSDOS = 0x81040102,
+ PR_EMS_AB_ORIGINAL_DISPLAY_TABLE_MSDOS_ERROR = 0x8104000a,
+ PR_EMS_AB_OUTBOUND_SITES_O = 0x8105000d,
+ PR_EMS_AB_OUTBOUND_SITES_O_ERROR = 0x8105000a,
+ PR_EMS_AB_OUTBOUND_SITES = 0x8105101e,
+ PR_EMS_AB_OUTBOUND_SITES_UNICODE = 0x8105101f,
+ PR_EMS_AB_P_SELECTOR = 0x81060102,
+ PR_EMS_AB_P_SELECTOR_ERROR = 0x8106000a,
+ PR_EMS_AB_P_SELECTOR_INBOUND = 0x81070102,
+ PR_EMS_AB_P_SELECTOR_INBOUND_ERROR = 0x8107000a,
+ PR_EMS_AB_PER_MSG_DIALOG_DISPLAY_TABLE = 0x81080102,
+ PR_EMS_AB_PER_MSG_DIALOG_DISPLAY_TABLE_ERROR = 0x8108000a,
+ PR_EMS_AB_PER_RECIP_DIALOG_DISPLAY_TABLE = 0x81090102,
+ PR_EMS_AB_PER_RECIP_DIALOG_DISPLAY_TABLE_ERROR = 0x8109000a,
+ PR_EMS_AB_PERIOD_REP_SYNC_TIMES = 0x810a0102,
+ PR_EMS_AB_PERIOD_REP_SYNC_TIMES_ERROR = 0x810a000a,
+ PR_EMS_AB_PERIOD_REPL_STAGGER = 0x810b0003,
+ PR_EMS_AB_PERIOD_REPL_STAGGER_ERROR = 0x810b000a,
+ PR_EMS_AB_POSTAL_ADDRESS = 0x810c1102,
+ PR_EMS_AB_POSTAL_ADDRESS_ERROR = 0x810c000a,
+ PR_EMS_AB_PREFERRED_DELIVERY_METHOD = 0x810d1003,
+ PR_EMS_AB_PREFERRED_DELIVERY_METHOD_ERROR = 0x810d000a,
+ PR_EMS_AB_PRMD = 0x810e001e,
+ PR_EMS_AB_PRMD_UNICODE = 0x810e001f,
+ PR_EMS_AB_PRMD_ERROR = 0x810e000a,
+ PR_EMS_AB_PROXY_GENERATOR_DLL = 0x810f001e,
+ PR_EMS_AB_PROXY_GENERATOR_DLL_UNICODE = 0x810f001f,
+ PR_EMS_AB_PROXY_GENERATOR_DLL_ERROR = 0x810f000a,
+ PR_EMS_AB_PUBLIC_DELEGATES_BL_O = 0x8110000d,
+ PR_EMS_AB_PUBLIC_DELEGATES_BL_O_ERROR = 0x8110000a,
+ PR_EMS_AB_PUBLIC_DELEGATES_BL = 0x8110101e,
+ PR_EMS_AB_PUBLIC_DELEGATES_BL_UNICODE = 0x8110101f,
+ PR_EMS_AB_QUOTA_NOTIFICATION_SCHEDULE = 0x81110102,
+ PR_EMS_AB_QUOTA_NOTIFICATION_SCHEDULE_ERROR = 0x8111000a,
+ PR_EMS_AB_QUOTA_NOTIFICATION_STYLE = 0x81120003,
+ PR_EMS_AB_QUOTA_NOTIFICATION_STYLE_ERROR = 0x8112000a,
+ PR_EMS_AB_RANGE_LOWER = 0x81130003,
+ PR_EMS_AB_RANGE_LOWER_ERROR = 0x8113000a,
+ PR_EMS_AB_RANGE_UPPER = 0x81140003,
+ PR_EMS_AB_RANGE_UPPER_ERROR = 0x8114000a,
+ PR_EMS_AB_RAS_CALLBACK_NUMBER = 0x8115001e,
+ PR_EMS_AB_RAS_CALLBACK_NUMBER_UNICODE = 0x8115001f,
+ PR_EMS_AB_RAS_CALLBACK_NUMBER_ERROR = 0x8115000a,
+ PR_EMS_AB_RAS_PHONE_NUMBER = 0x8116001e,
+ PR_EMS_AB_RAS_PHONE_NUMBER_UNICODE = 0x8116001f,
+ PR_EMS_AB_RAS_PHONE_NUMBER_ERROR = 0x8116000a,
+ PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME = 0x8117001e,
+ PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME_UNICODE = 0x8117001f,
+ PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME_ERROR = 0x8117000a,
+ PR_EMS_AB_RAS_REMOTE_SRVR_NAME = 0x8118001e,
+ PR_EMS_AB_RAS_REMOTE_SRVR_NAME_UNICODE = 0x8118001f,
+ PR_EMS_AB_RAS_REMOTE_SRVR_NAME_ERROR = 0x8118000a,
+ PR_EMS_AB_REGISTERED_ADDRESS = 0x81191102,
+ PR_EMS_AB_REGISTERED_ADDRESS_ERROR = 0x8119000a,
+ PR_EMS_AB_REMOTE_BRIDGE_HEAD = 0x811a001e,
+ PR_EMS_AB_REMOTE_BRIDGE_HEAD_UNICODE = 0x811a001f,
+ PR_EMS_AB_REMOTE_BRIDGE_HEAD_ERROR = 0x811a000a,
+ PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS = 0x811b001e,
+ PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS_UNICODE = 0x811b001f,
+ PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS_ERROR = 0x811b000a,
+ PR_EMS_AB_REMOTE_OUT_BH_SERVER_O = 0x811c000d,
+ PR_EMS_AB_REMOTE_OUT_BH_SERVER_O_ERROR = 0x811c000a,
+ PR_EMS_AB_REMOTE_OUT_BH_SERVER = 0x811c001e,
+ PR_EMS_AB_REMOTE_OUT_BH_SERVER_UNICODE = 0x811c001f,
+ PR_EMS_AB_REMOTE_SITE_O = 0x811d000d,
+ PR_EMS_AB_REMOTE_SITE_O_ERROR = 0x811d000a,
+ PR_EMS_AB_REMOTE_SITE = 0x811d001e,
+ PR_EMS_AB_REMOTE_SITE_UNICODE = 0x811d001f,
+ PR_EMS_AB_REPLICATION_SENSITIVITY = 0x811e0003,
+ PR_EMS_AB_REPLICATION_SENSITIVITY_ERROR = 0x811e000a,
+ PR_EMS_AB_REPLICATION_STAGGER = 0x811f0003,
+ PR_EMS_AB_REPLICATION_STAGGER_ERROR = 0x811f000a,
+ PR_EMS_AB_REPORT_TO_ORIGINATOR = 0x8120000b,
+ PR_EMS_AB_REPORT_TO_ORIGINATOR_ERROR = 0x8120000a,
+ PR_EMS_AB_REPORT_TO_OWNER = 0x8121000b,
+ PR_EMS_AB_REPORT_TO_OWNER_ERROR = 0x8121000a,
+ PR_EMS_AB_REQ_SEQ = 0x81220003,
+ PR_EMS_AB_REQ_SEQ_ERROR = 0x8122000a,
+ PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_O = 0x8123000d,
+ PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_O_ERROR = 0x8123000a,
+ PR_EMS_AB_RESPONSIBLE_LOCAL_DXA = 0x8123001e,
+ PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_UNICODE = 0x8123001f,
+ PR_EMS_AB_RID_SERVER_O = 0x8124000d,
+ PR_EMS_AB_RID_SERVER_O_ERROR = 0x8124000a,
+ PR_EMS_AB_RID_SERVER = 0x8124001e,
+ PR_EMS_AB_RID_SERVER_UNICODE = 0x8124001f,
+ PR_EMS_AB_ROLE_OCCUPANT_O = 0x8125000d,
+ PR_EMS_AB_ROLE_OCCUPANT_O_ERROR = 0x8125000a,
+ PR_EMS_AB_ROLE_OCCUPANT = 0x8125101e,
+ PR_EMS_AB_ROLE_OCCUPANT_UNICODE = 0x8125101f,
+ PR_EMS_AB_ROUTING_LIST = 0x8126101e,
+ PR_EMS_AB_ROUTING_LIST_UNICODE = 0x8126101f,
+ PR_EMS_AB_ROUTING_LIST_ERROR = 0x8126000a,
+ PR_EMS_AB_RTS_CHECKPOINT_SIZE = 0x81270003,
+ PR_EMS_AB_RTS_CHECKPOINT_SIZE_ERROR = 0x8127000a,
+ PR_EMS_AB_RTS_RECOVERY_TIMEOUT = 0x81280003,
+ PR_EMS_AB_RTS_RECOVERY_TIMEOUT_ERROR = 0x8128000a,
+ PR_EMS_AB_RTS_WINDOW_SIZE = 0x81290003,
+ PR_EMS_AB_RTS_WINDOW_SIZE_ERROR = 0x8129000a,
+ PR_EMS_AB_RUNS_ON_O = 0x812a000d,
+ PR_EMS_AB_RUNS_ON_O_ERROR = 0x812a000a,
+ PR_EMS_AB_RUNS_ON = 0x812a101e,
+ PR_EMS_AB_RUNS_ON_UNICODE = 0x812a101f,
+ PR_EMS_AB_S_SELECTOR = 0x812b0102,
+ PR_EMS_AB_S_SELECTOR_ERROR = 0x812b000a,
+ PR_EMS_AB_S_SELECTOR_INBOUND = 0x812c0102,
+ PR_EMS_AB_S_SELECTOR_INBOUND_ERROR = 0x812c000a,
+ PR_EMS_AB_SEARCH_FLAGS = 0x812d0003,
+ PR_EMS_AB_SEARCH_FLAGS_ERROR = 0x812d000a,
+ PR_EMS_AB_SEARCH_GUIDE = 0x812e1102,
+ PR_EMS_AB_SEARCH_GUIDE_ERROR = 0x812e000a,
+ PR_EMS_AB_SEE_ALSO_O = 0x812f000d,
+ PR_EMS_AB_SEE_ALSO_O_ERROR = 0x812f000a,
+ PR_EMS_AB_SEE_ALSO = 0x812f101e,
+ PR_EMS_AB_SEE_ALSO_UNICODE = 0x812f101f,
+ PR_EMS_AB_SERIAL_NUMBER = 0x8130101e,
+ PR_EMS_AB_SERIAL_NUMBER_UNICODE = 0x8130101f,
+ PR_EMS_AB_SERIAL_NUMBER_ERROR = 0x8130000a,
+ PR_EMS_AB_SERVICE_ACTION_FIRST = 0x81310003,
+ PR_EMS_AB_SERVICE_ACTION_FIRST_ERROR = 0x8131000a,
+ PR_EMS_AB_SERVICE_ACTION_OTHER = 0x81320003,
+ PR_EMS_AB_SERVICE_ACTION_OTHER_ERROR = 0x8132000a,
+ PR_EMS_AB_SERVICE_ACTION_SECOND = 0x81330003,
+ PR_EMS_AB_SERVICE_ACTION_SECOND_ERROR = 0x8133000a,
+ PR_EMS_AB_SERVICE_RESTART_DELAY = 0x81340003,
+ PR_EMS_AB_SERVICE_RESTART_DELAY_ERROR = 0x8134000a,
+ PR_EMS_AB_SERVICE_RESTART_MESSAGE = 0x8135001e,
+ PR_EMS_AB_SERVICE_RESTART_MESSAGE_UNICODE = 0x8135001f,
+ PR_EMS_AB_SERVICE_RESTART_MESSAGE_ERROR = 0x8135000a,
+ PR_EMS_AB_SESSION_DISCONNECT_TIMER = 0x81360003,
+ PR_EMS_AB_SESSION_DISCONNECT_TIMER_ERROR = 0x8136000a,
+ PR_EMS_AB_SITE_AFFINITY = 0x8137101e,
+ PR_EMS_AB_SITE_AFFINITY_UNICODE = 0x8137101f,
+ PR_EMS_AB_SITE_AFFINITY_ERROR = 0x8137000a,
+ PR_EMS_AB_SITE_PROXY_SPACE = 0x8138101e,
+ PR_EMS_AB_SITE_PROXY_SPACE_UNICODE = 0x8138101f,
+ PR_EMS_AB_SITE_PROXY_SPACE_ERROR = 0x8138000a,
+ PR_EMS_AB_SPACE_LAST_COMPUTED = 0x81390040,
+ PR_EMS_AB_SPACE_LAST_COMPUTED_ERROR = 0x8139000a,
+ PR_EMS_AB_STREET_ADDRESS = 0x813a001e,
+ PR_EMS_AB_STREET_ADDRESS_UNICODE = 0x813a001f,
+ PR_EMS_AB_STREET_ADDRESS_ERROR = 0x813a000a,
+ PR_EMS_AB_SUB_REFS_O = 0x813b000d,
+ PR_EMS_AB_SUB_REFS_O_ERROR = 0x813b000a,
+ PR_EMS_AB_SUB_REFS = 0x813b101e,
+ PR_EMS_AB_SUB_REFS_UNICODE = 0x813b101f,
+ PR_EMS_AB_SUBMISSION_CONT_LENGTH = 0x813c0003,
+ PR_EMS_AB_SUBMISSION_CONT_LENGTH_ERROR = 0x813c000a,
+ PR_EMS_AB_SUPPORTED_APPLICATION_CONTEXT = 0x813d1102,
+ PR_EMS_AB_SUPPORTED_APPLICATION_CONTEXT_ERROR = 0x813d000a,
+ PR_EMS_AB_SUPPORTING_STACK_O = 0x813e000d,
+ PR_EMS_AB_SUPPORTING_STACK_O_ERROR = 0x813e000a,
+ PR_EMS_AB_SUPPORTING_STACK = 0x813e101e,
+ PR_EMS_AB_SUPPORTING_STACK_UNICODE = 0x813e101f,
+ PR_EMS_AB_SUPPORTING_STACK_BL_O = 0x813f000d,
+ PR_EMS_AB_SUPPORTING_STACK_BL_O_ERROR = 0x813f000a,
+ PR_EMS_AB_SUPPORTING_STACK_BL = 0x813f101e,
+ PR_EMS_AB_SUPPORTING_STACK_BL_UNICODE = 0x813f101f,
+ PR_EMS_AB_T_SELECTOR = 0x81400102,
+ PR_EMS_AB_T_SELECTOR_ERROR = 0x8140000a,
+ PR_EMS_AB_T_SELECTOR_INBOUND = 0x81410102,
+ PR_EMS_AB_T_SELECTOR_INBOUND_ERROR = 0x8141000a,
+ PR_EMS_AB_TARGET_MTAS = 0x8142101e,
+ PR_EMS_AB_TARGET_MTAS_UNICODE = 0x8142101f,
+ PR_EMS_AB_TARGET_MTAS_ERROR = 0x8142000a,
+ PR_EMS_AB_TELETEX_TERMINAL_IDENTIFIER = 0x81431102,
+ PR_EMS_AB_TELETEX_TERMINAL_IDENTIFIER_ERROR = 0x8143000a,
+ PR_EMS_AB_TEMP_ASSOC_THRESHOLD = 0x81440003,
+ PR_EMS_AB_TEMP_ASSOC_THRESHOLD_ERROR = 0x8144000a,
+ PR_EMS_AB_TOMBSTONE_LIFETIME = 0x81450003,
+ PR_EMS_AB_TOMBSTONE_LIFETIME_ERROR = 0x8145000a,
+ PR_EMS_AB_TRACKING_LOG_PATH_NAME = 0x8146001e,
+ PR_EMS_AB_TRACKING_LOG_PATH_NAME_UNICODE = 0x8146001f,
+ PR_EMS_AB_TRACKING_LOG_PATH_NAME_ERROR = 0x8146000a,
+ PR_EMS_AB_TRANS_RETRY_MINS = 0x81470003,
+ PR_EMS_AB_TRANS_RETRY_MINS_ERROR = 0x8147000a,
+ PR_EMS_AB_TRANS_TIMEOUT_MINS = 0x81480003,
+ PR_EMS_AB_TRANS_TIMEOUT_MINS_ERROR = 0x8148000a,
+ PR_EMS_AB_TRANSFER_RETRY_INTERVAL = 0x81490003,
+ PR_EMS_AB_TRANSFER_RETRY_INTERVAL_ERROR = 0x8149000a,
+ PR_EMS_AB_TRANSFER_TIMEOUT_NON_URGENT = 0x814a0003,
+ PR_EMS_AB_TRANSFER_TIMEOUT_NON_URGENT_ERROR = 0x814a000a,
+ PR_EMS_AB_TRANSFER_TIMEOUT_NORMAL = 0x814b0003,
+ PR_EMS_AB_TRANSFER_TIMEOUT_NORMAL_ERROR = 0x814b000a,
+ PR_EMS_AB_TRANSFER_TIMEOUT_URGENT = 0x814c0003,
+ PR_EMS_AB_TRANSFER_TIMEOUT_URGENT_ERROR = 0x814c000a,
+ PR_EMS_AB_TRANSLATION_TABLE_USED = 0x814d0003,
+ PR_EMS_AB_TRANSLATION_TABLE_USED_ERROR = 0x814d000a,
+ PR_EMS_AB_TRANSPORT_EXPEDITED_DATA = 0x814e000b,
+ PR_EMS_AB_TRANSPORT_EXPEDITED_DATA_ERROR = 0x814e000a,
+ PR_EMS_AB_TRUST_LEVEL = 0x814f0003,
+ PR_EMS_AB_TRUST_LEVEL_ERROR = 0x814f000a,
+ PR_EMS_AB_TURN_REQUEST_THRESHOLD = 0x81500003,
+ PR_EMS_AB_TURN_REQUEST_THRESHOLD_ERROR = 0x8150000a,
+ PR_EMS_AB_TWO_WAY_ALTERNATE_FACILITY = 0x8151000b,
+ PR_EMS_AB_TWO_WAY_ALTERNATE_FACILITY_ERROR = 0x8151000a,
+ PR_EMS_AB_UNAUTH_ORIG_BL_O = 0x8152000d,
+ PR_EMS_AB_UNAUTH_ORIG_BL_O_ERROR = 0x8152000a,
+ PR_EMS_AB_UNAUTH_ORIG_BL = 0x8152101e,
+ PR_EMS_AB_UNAUTH_ORIG_BL_UNICODE = 0x8152101f,
+ PR_EMS_AB_USER_PASSWORD = 0x81531102,
+ PR_EMS_AB_USER_PASSWORD_ERROR = 0x8153000a,
+ PR_EMS_AB_USN_CREATED = 0x81540003,
+ PR_EMS_AB_USN_CREATED_ERROR = 0x8154000a,
+ PR_EMS_AB_USN_DSA_LAST_OBJ_REMOVED = 0x81550003,
+ PR_EMS_AB_USN_DSA_LAST_OBJ_REMOVED_ERROR = 0x8155000a,
+ PR_EMS_AB_USN_LAST_OBJ_REM = 0x81560003,
+ PR_EMS_AB_USN_LAST_OBJ_REM_ERROR = 0x8156000a,
+ PR_EMS_AB_USN_SOURCE = 0x81570003,
+ PR_EMS_AB_USN_SOURCE_ERROR = 0x8157000a,
+ PR_EMS_AB_X121_ADDRESS = 0x8158101e,
+ PR_EMS_AB_X121_ADDRESS_UNICODE = 0x8158101f,
+ PR_EMS_AB_X121_ADDRESS_ERROR = 0x8158000a,
+ PR_EMS_AB_X25_CALL_USER_DATA_INCOMING = 0x81590102,
+ PR_EMS_AB_X25_CALL_USER_DATA_INCOMING_ERROR = 0x8159000a,
+ PR_EMS_AB_X25_CALL_USER_DATA_OUTGOING = 0x815a0102,
+ PR_EMS_AB_X25_CALL_USER_DATA_OUTGOING_ERROR = 0x815a000a,
+ PR_EMS_AB_X25_FACILITIES_DATA_INCOMING = 0x815b0102,
+ PR_EMS_AB_X25_FACILITIES_DATA_INCOMING_ERROR = 0x815b000a,
+ PR_EMS_AB_X25_FACILITIES_DATA_OUTGOING = 0x815c0102,
+ PR_EMS_AB_X25_FACILITIES_DATA_OUTGOING_ERROR = 0x815c000a,
+ PR_EMS_AB_X25_LEASED_LINE_PORT = 0x815d0102,
+ PR_EMS_AB_X25_LEASED_LINE_PORT_ERROR = 0x815d000a,
+ PR_EMS_AB_X25_LEASED_OR_SWITCHED = 0x815e000b,
+ PR_EMS_AB_X25_LEASED_OR_SWITCHED_ERROR = 0x815e000a,
+ PR_EMS_AB_X25_REMOTE_MTA_PHONE = 0x815f001e,
+ PR_EMS_AB_X25_REMOTE_MTA_PHONE_UNICODE = 0x815f001f,
+ PR_EMS_AB_X25_REMOTE_MTA_PHONE_ERROR = 0x815f000a,
+ PR_EMS_AB_X400_ATTACHMENT_TYPE = 0x81600102,
+ PR_EMS_AB_X400_ATTACHMENT_TYPE_ERROR = 0x8160000a,
+ PR_EMS_AB_X400_SELECTOR_SYNTAX = 0x81610003,
+ PR_EMS_AB_X400_SELECTOR_SYNTAX_ERROR = 0x8161000a,
+ PR_EMS_AB_X500_ACCESS_CONTROL_LIST = 0x81620102,
+ PR_EMS_AB_X500_ACCESS_CONTROL_LIST_ERROR = 0x8162000a,
+ PR_EMS_AB_XMIT_TIMEOUT_NON_URGENT = 0x81630003,
+ PR_EMS_AB_XMIT_TIMEOUT_NON_URGENT_ERROR = 0x8163000a,
+ PR_EMS_AB_XMIT_TIMEOUT_NORMAL = 0x81640003,
+ PR_EMS_AB_XMIT_TIMEOUT_NORMAL_ERROR = 0x8164000a,
+ PR_EMS_AB_XMIT_TIMEOUT_URGENT = 0x81650003,
+ PR_EMS_AB_XMIT_TIMEOUT_URGENT_ERROR = 0x8165000a,
+ PR_EMS_AB_SITE_FOLDER_GUID = 0x81660102,
+ PR_EMS_AB_SITE_FOLDER_GUID_ERROR = 0x8166000a,
+ PR_EMS_AB_SITE_FOLDER_SERVER_O = 0x8167000d,
+ PR_EMS_AB_SITE_FOLDER_SERVER_O_ERROR = 0x8167000a,
+ PR_EMS_AB_SITE_FOLDER_SERVER = 0x8167001e,
+ PR_EMS_AB_SITE_FOLDER_SERVER_UNICODE = 0x8167001f,
+ PR_EMS_AB_REPLICATION_MAIL_MSG_SIZE = 0x81680003,
+ PR_EMS_AB_REPLICATION_MAIL_MSG_SIZE_ERROR = 0x8168000a,
+ PR_EMS_AB_MAXIMUM_OBJECT_ID = 0x81690102,
+ PR_EMS_AB_MAXIMUM_OBJECT_ID_ERROR = 0x8169000a,
+ PR_EMS_AB_NETWORK_ADDRESS = 0x8170101e,
+ PR_EMS_AB_NETWORK_ADDRESS_UNICODE = 0x8170101f,
+ PR_EMS_AB_NETWORK_ADDRESS_ERROR = 0x8170000a,
+ PR_EMS_AB_LDAP_DISPLAY_NAME = 0x8171101e,
+ PR_EMS_AB_LDAP_DISPLAY_NAME_UNICODE = 0x8171101f,
+ PR_EMS_AB_LDAP_DISPLAY_NAME_ERROR = 0x8171000a,
+ PR_EMS_AB_SCHEMA_FLAGS = 0x81730003,
+ PR_EMS_AB_SCHEMA_FLAGS_ERROR = 0x8173000a,
+ PR_EMS_AB_BRIDGEHEAD_SERVERS_O = 0x8174000d,
+ PR_EMS_AB_BRIDGEHEAD_SERVERS_O_ERROR = 0x8174000a,
+ PR_EMS_AB_BRIDGEHEAD_SERVERS = 0x8174101e,
+ PR_EMS_AB_BRIDGEHEAD_SERVERS_UNICODE = 0x8174101f,
+ PR_EMS_AB_WWW_HOME_PAGE = 0x8175001e,
+ PR_EMS_AB_WWW_HOME_PAGE_UNICODE = 0x8175001f,
+ PR_EMS_AB_WWW_HOME_PAGE_ERROR = 0x8175000a,
+ PR_EMS_AB_NNTP_CONTENT_FORMAT = 0x8176001e,
+ PR_EMS_AB_NNTP_CONTENT_FORMAT_UNICODE = 0x8176001f,
+ PR_EMS_AB_NNTP_CONTENT_FORMAT_ERROR = 0x8176000a,
+ PR_EMS_AB_POP_CONTENT_FORMAT = 0x8177001e,
+ PR_EMS_AB_POP_CONTENT_FORMAT_UNICODE = 0x8177001f,
+ PR_EMS_AB_POP_CONTENT_FORMAT_ERROR = 0x8177000a,
+ PR_EMS_AB_LANGUAGE = 0x81780003,
+ PR_EMS_AB_LANGUAGE_ERROR = 0x8178000a,
+ PR_EMS_AB_POP_CHARACTER_SET = 0x8179001e,
+ PR_EMS_AB_POP_CHARACTER_SET_UNICODE = 0x8179001f,
+ PR_EMS_AB_POP_CHARACTER_SET_ERROR = 0x8179000a,
+ PR_EMS_AB_USN_INTERSITE = 0x817a0003,
+ PR_EMS_AB_USN_INTERSITE_ERROR = 0x817a000a,
+ PR_EMS_AB_SUB_SITE = 0x817b001e,
+ PR_EMS_AB_SUB_SITE_UNICODE = 0x817b001f,
+ PR_EMS_AB_SUB_SITE_ERROR = 0x817b000a,
+ PR_EMS_AB_SCHEMA_VERSION = 0x817c1003,
+ PR_EMS_AB_SCHEMA_VERSION_ERROR = 0x817c000a,
+ PR_EMS_AB_NNTP_CHARACTER_SET = 0x817d001e,
+ PR_EMS_AB_NNTP_CHARACTER_SET_UNICODE = 0x817d001f,
+ PR_EMS_AB_NNTP_CHARACTER_SET_ERROR = 0x817d000a,
+ PR_EMS_AB_USE_SERVER_VALUES = 0x817e000b,
+ PR_EMS_AB_USE_SERVER_VALUES_ERROR = 0x817e000a,
+ PR_EMS_AB_ENABLED_PROTOCOLS = 0x817f0003,
+ PR_EMS_AB_ENABLED_PROTOCOLS_ERROR = 0x817f000a,
+ PR_EMS_AB_CONNECTION_LIST_FILTER = 0x81800102,
+ PR_EMS_AB_CONNECTION_LIST_FILTER_ERROR = 0x8180000a,
+ PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES = 0x8181101e,
+ PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES_UNICODE = 0x8181101f,
+ PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES_ERROR = 0x8181000a,
+ PR_EMS_AB_CHARACTER_SET_LIST = 0x8182101e,
+ PR_EMS_AB_CHARACTER_SET_LIST_UNICODE = 0x8182101f,
+ PR_EMS_AB_CHARACTER_SET_LIST_ERROR = 0x8182000a,
+ PR_EMS_AB_USE_SITE_VALUES = 0x8183000b,
+ PR_EMS_AB_USE_SITE_VALUES_ERROR = 0x8183000a,
+ PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES = 0x8184101e,
+ PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES_UNICODE = 0x8184101f,
+ PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES_ERROR = 0x8184000a,
+ PR_EMS_AB_CHARACTER_SET = 0x8185001e,
+ PR_EMS_AB_CHARACTER_SET_UNICODE = 0x8185001f,
+ PR_EMS_AB_CHARACTER_SET_ERROR = 0x8185000a,
+ PR_EMS_AB_CONTENT_TYPE = 0x81860003,
+ PR_EMS_AB_CONTENT_TYPE_ERROR = 0x8186000a,
+ PR_EMS_AB_ANONYMOUS_ACCESS = 0x8187000b,
+ PR_EMS_AB_ANONYMOUS_ACCESS_ERROR = 0x8187000a,
+ PR_EMS_AB_CONTROL_MSG_FOLDER_ID = 0x81880102,
+ PR_EMS_AB_CONTROL_MSG_FOLDER_ID_ERROR = 0x8188000a,
+ PR_EMS_AB_USENET_SITE_NAME = 0x8189001e,
+ PR_EMS_AB_USENET_SITE_NAME_UNICODE = 0x8189001f,
+ PR_EMS_AB_USENET_SITE_NAME_ERROR = 0x8189000a,
+ PR_EMS_AB_CONTROL_MSG_RULES = 0x818a0102,
+ PR_EMS_AB_CONTROL_MSG_RULES_ERROR = 0x818a000a,
+ PR_EMS_AB_AVAILABLE_DISTRIBUTIONS = 0x818b001e,
+ PR_EMS_AB_AVAILABLE_DISTRIBUTIONS_UNICODE = 0x818b001f,
+ PR_EMS_AB_AVAILABLE_DISTRIBUTIONS_ERROR = 0x818b000a,
+ PR_EMS_AB_OUTBOUND_HOST = 0x818d0102,
+ PR_EMS_AB_OUTBOUND_HOST_ERROR = 0x818d000a,
+ PR_EMS_AB_INBOUND_HOST = 0x818e101e,
+ PR_EMS_AB_INBOUND_HOST_UNICODE = 0x818e101f,
+ PR_EMS_AB_INBOUND_HOST_ERROR = 0x818e000a,
+ PR_EMS_AB_OUTGOING_MSG_SIZE_LIMIT = 0x818f0003,
+ PR_EMS_AB_OUTGOING_MSG_SIZE_LIMIT_ERROR = 0x818f000a,
+ PR_EMS_AB_INCOMING_MSG_SIZE_LIMIT = 0x81900003,
+ PR_EMS_AB_INCOMING_MSG_SIZE_LIMIT_ERROR = 0x8190000a,
+ PR_EMS_AB_SEND_TNEF = 0x8191000b,
+ PR_EMS_AB_SEND_TNEF_ERROR = 0x8191000a,
+ PR_EMS_AB_AUTHORIZED_PASSWORD_CONFIRM = 0x81920102,
+ PR_EMS_AB_AUTHORIZED_PASSWORD_CONFIRM_ERROR = 0x8192000a,
+ PR_EMS_AB_INBOUND_NEWSFEED = 0x8193001e,
+ PR_EMS_AB_INBOUND_NEWSFEED_UNICODE = 0x8193001f,
+ PR_EMS_AB_INBOUND_NEWSFEED_ERROR = 0x8193000a,
+ PR_EMS_AB_NEWSFEED_TYPE = 0x81940003,
+ PR_EMS_AB_NEWSFEED_TYPE_ERROR = 0x8194000a,
+ PR_EMS_AB_OUTBOUND_NEWSFEED = 0x8195001e,
+ PR_EMS_AB_OUTBOUND_NEWSFEED_UNICODE = 0x8195001f,
+ PR_EMS_AB_OUTBOUND_NEWSFEED_ERROR = 0x8195000a,
+ PR_EMS_AB_NEWSGROUP_LIST = 0x81960102,
+ PR_EMS_AB_NEWSGROUP_LIST_ERROR = 0x8196000a,
+ PR_EMS_AB_NNTP_DISTRIBUTIONS = 0x8197101e,
+ PR_EMS_AB_NNTP_DISTRIBUTIONS_UNICODE = 0x8197101f,
+ PR_EMS_AB_NNTP_DISTRIBUTIONS_ERROR = 0x8197000a,
+ PR_EMS_AB_NEWSGROUP = 0x8198001e,
+ PR_EMS_AB_NEWSGROUP_UNICODE = 0x8198001f,
+ PR_EMS_AB_NEWSGROUP_ERROR = 0x8198000a,
+ PR_EMS_AB_MODERATOR = 0x8199001e,
+ PR_EMS_AB_MODERATOR_UNICODE = 0x8199001f,
+ PR_EMS_AB_MODERATOR_ERROR = 0x8199000a,
+ PR_EMS_AB_AUTHENTICATION_TO_USE = 0x819a001e,
+ PR_EMS_AB_AUTHENTICATION_TO_USE_UNICODE = 0x819a001f,
+ PR_EMS_AB_AUTHENTICATION_TO_USE_ERROR = 0x819a000a,
+ PR_EMS_AB_HTTP_PUB_GAL = 0x819b000b,
+ PR_EMS_AB_HTTP_PUB_GAL_ERROR = 0x819b000a,
+ PR_EMS_AB_HTTP_PUB_GAL_LIMIT = 0x819c0003,
+ PR_EMS_AB_HTTP_PUB_GAL_LIMIT_ERROR = 0x819c000a,
+ PR_EMS_AB_HTTP_PUB_PF = 0x819e1102,
+ PR_EMS_AB_HTTP_PUB_PF_ERROR = 0x819e000a,
+ PR_EMS_AB_X500_RDN = 0x81a1001e,
+ PR_EMS_AB_X500_RDN_UNICODE = 0x81a1001f,
+ PR_EMS_AB_X500_RDN_ERROR = 0x81a1000a,
+ PR_EMS_AB_X500_NC = 0x81a2001e,
+ PR_EMS_AB_X500_NC_UNICODE = 0x81a2001f,
+ PR_EMS_AB_X500_NC_ERROR = 0x81a2000a,
+ PR_EMS_AB_REFERRAL_LIST = 0x81a3101e,
+ PR_EMS_AB_REFERRAL_LIST_UNICODE = 0x81a3101f,
+ PR_EMS_AB_REFERRAL_LIST_ERROR = 0x81a3000a,
+ PR_EMS_AB_NNTP_DISTRIBUTIONS_FLAG = 0x81a4000b,
+ PR_EMS_AB_NNTP_DISTRIBUTIONS_FLAG_ERROR = 0x81a4000a,
+ PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_O = 0x81a5000d,
+ PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_O_ERROR = 0x81a5000a,
+ PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP = 0x81a5001e,
+ PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_UNICODE = 0x81a5001f,
+ PR_EMS_AB_NNTP_NEWSFEEDS_O = 0x81a6000d,
+ PR_EMS_AB_NNTP_NEWSFEEDS_O_ERROR = 0x81a6000a,
+ PR_EMS_AB_NNTP_NEWSFEEDS = 0x81a6101e,
+ PR_EMS_AB_NNTP_NEWSFEEDS_UNICODE = 0x81a6101f,
+ PR_EMS_AB_ENABLED_PROTOCOL_CFG = 0x81a8000b,
+ PR_EMS_AB_ENABLED_PROTOCOL_CFG_ERROR = 0x81a8000a,
+ PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES = 0x81a9101e,
+ PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES_UNICODE = 0x81a9101f,
+ PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES_ERROR = 0x81a9000a,
+ PR_EMS_AB_HTTP_SERVERS = 0x81ab101e,
+ PR_EMS_AB_HTTP_SERVERS_UNICODE = 0x81ab101f,
+ PR_EMS_AB_HTTP_SERVERS_ERROR = 0x81ab000a,
+ PR_EMS_AB_MODERATED = 0x81ac000b,
+ PR_EMS_AB_MODERATED_ERROR = 0x81ac000a,
+ PR_EMS_AB_RAS_ACCOUNT = 0x81ad001e,
+ PR_EMS_AB_RAS_ACCOUNT_UNICODE = 0x81ad001f,
+ PR_EMS_AB_RAS_ACCOUNT_ERROR = 0x81ad000a,
+ PR_EMS_AB_RAS_PASSWORD = 0x81ae0102,
+ PR_EMS_AB_RAS_PASSWORD_ERROR = 0x81ae000a,
+ PR_EMS_AB_INCOMING_PASSWORD = 0x81af0102,
+ PR_EMS_AB_INCOMING_PASSWORD_ERROR = 0x81af000a,
+ PR_EMS_AB_OUTBOUND_HOST_TYPE = 0x81b0000b,
+ PR_EMS_AB_OUTBOUND_HOST_TYPE_ERROR = 0x81b0000a,
+ PR_EMS_AB_PROXY_GENERATION_ENABLED = 0x81b1000b,
+ PR_EMS_AB_PROXY_GENERATION_ENABLED_ERROR = 0x81b1000a,
+ PR_EMS_AB_ROOT_NEWSGROUPS_FOLDER_ID = 0x81b20102,
+ PR_EMS_AB_ROOT_NEWSGROUPS_FOLDER_ID_ERROR = 0x81b2000a,
+ PR_EMS_AB_CONNECTION_TYPE = 0x81b3000b,
+ PR_EMS_AB_CONNECTION_TYPE_ERROR = 0x81b3000a,
+ PR_EMS_AB_CONNECTION_LIST_FILTER_TYPE = 0x81b40003,
+ PR_EMS_AB_CONNECTION_LIST_FILTER_TYPE_ERROR = 0x81b4000a,
+ PR_EMS_AB_PORT_NUMBER = 0x81b50003,
+ PR_EMS_AB_PORT_NUMBER_ERROR = 0x81b5000a,
+ PR_EMS_AB_PROTOCOL_SETTINGS = 0x81b6101e,
+ PR_EMS_AB_PROTOCOL_SETTINGS_UNICODE = 0x81b6101f,
+ PR_EMS_AB_PROTOCOL_SETTINGS_ERROR = 0x81b6000a,
+ PR_EMS_AB_GROUP_BY_ATTR_1 = 0x81b7001e,
+ PR_EMS_AB_GROUP_BY_ATTR_1_UNICODE = 0x81b7001f,
+ PR_EMS_AB_GROUP_BY_ATTR_1_ERROR = 0x81b7000a,
+ PR_EMS_AB_GROUP_BY_ATTR_2 = 0x81b8001e,
+ PR_EMS_AB_GROUP_BY_ATTR_2_UNICODE = 0x81b8001f,
+ PR_EMS_AB_GROUP_BY_ATTR_2_ERROR = 0x81b8000a,
+ PR_EMS_AB_GROUP_BY_ATTR_3 = 0x81b9001e,
+ PR_EMS_AB_GROUP_BY_ATTR_3_UNICODE = 0x81b9001f,
+ PR_EMS_AB_GROUP_BY_ATTR_3_ERROR = 0x81b9000a,
+ PR_EMS_AB_GROUP_BY_ATTR_4 = 0x81ba001e,
+ PR_EMS_AB_GROUP_BY_ATTR_4_UNICODE = 0x81ba001f,
+ PR_EMS_AB_GROUP_BY_ATTR_4_ERROR = 0x81ba000a,
+ PR_EMS_AB_VIEW_SITE = 0x81be001e,
+ PR_EMS_AB_VIEW_SITE_UNICODE = 0x81be001f,
+ PR_EMS_AB_VIEW_SITE_ERROR = 0x81be000a,
+ PR_EMS_AB_VIEW_CONTAINER_1 = 0x81bf001e,
+ PR_EMS_AB_VIEW_CONTAINER_1_UNICODE = 0x81bf001f,
+ PR_EMS_AB_VIEW_CONTAINER_1_ERROR = 0x81bf000a,
+ PR_EMS_AB_VIEW_CONTAINER_2 = 0x81c0001e,
+ PR_EMS_AB_VIEW_CONTAINER_2_UNICODE = 0x81c0001f,
+ PR_EMS_AB_VIEW_CONTAINER_2_ERROR = 0x81c0000a,
+ PR_EMS_AB_VIEW_CONTAINER_3 = 0x81c1001e,
+ PR_EMS_AB_VIEW_CONTAINER_3_UNICODE = 0x81c1001f,
+ PR_EMS_AB_VIEW_CONTAINER_3_ERROR = 0x81c1000a,
+ PR_EMS_AB_PROMO_EXPIRATION = 0x81c20040,
+ PR_EMS_AB_PROMO_EXPIRATION_ERROR = 0x81c2000a,
+ PR_EMS_AB_DISABLED_GATEWAY_PROXY = 0x81c3101e,
+ PR_EMS_AB_DISABLED_GATEWAY_PROXY_UNICODE = 0x81c3101f,
+ PR_EMS_AB_DISABLED_GATEWAY_PROXY_ERROR = 0x81c3000a,
+ PR_EMS_AB_COMPROMISED_KEY_LIST = 0x81c40102,
+ PR_EMS_AB_COMPROMISED_KEY_LIST_ERROR = 0x81c4000a,
+ PR_EMS_AB_INSADMIN_O = 0x81c5000d,
+ PR_EMS_AB_INSADMIN_O_ERROR = 0x81c5000a,
+ PR_EMS_AB_INSADMIN = 0x81c5001e,
+ PR_EMS_AB_INSADMIN_UNICODE = 0x81c5001f,
+ PR_EMS_AB_OVERRIDE_NNTP_CONTENT_FORMAT = 0x81c6000b,
+ PR_EMS_AB_OVERRIDE_NNTP_CONTENT_FORMAT_ERROR = 0x81c6000a,
+ PR_EMS_AB_OBJ_VIEW_CONTAINERS_O = 0x81c7000d,
+ PR_EMS_AB_OBJ_VIEW_CONTAINERS_O_ERROR = 0x81c7000a,
+ PR_EMS_AB_OBJ_VIEW_CONTAINERS = 0x81c7101e,
+ PR_EMS_AB_OBJ_VIEW_CONTAINERS_UNICODE = 0x81c7101f,
+ PR_EMS_AB_VIEW_FLAGS = 0x8c180003,
+ PR_EMS_AB_VIEW_FLAGS_ERROR = 0x8c18000a,
+ PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR = 0x8c19001e,
+ PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR_UNICODE = 0x8c19001f,
+ PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR_ERROR = 0x8c19000a,
+ PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_O = 0x8c1a000d,
+ PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_O_ERROR = 0x8c1a000a,
+ PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN = 0x8c1a001e,
+ PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_UNICODE = 0x8c1a001f,
+ PR_EMS_AB_VIEW_DEFINITION = 0x8c1b1102,
+ PR_EMS_AB_VIEW_DEFINITION_ERROR = 0x8c1b000a,
+ PR_EMS_AB_MIME_TYPES = 0x8c1c0102,
+ PR_EMS_AB_MIME_TYPES_ERROR = 0x8c1c000a,
+ PR_EMS_AB_LDAP_SEARCH_CFG = 0x8c1d0003,
+ PR_EMS_AB_LDAP_SEARCH_CFG_ERROR = 0x8c1d000a,
+ PR_EMS_AB_INBOUND_DN_O = 0x8c1e000d,
+ PR_EMS_AB_INBOUND_DN_O_ERROR = 0x8c1e000a,
+ PR_EMS_AB_INBOUND_DN = 0x8c1e001e,
+ PR_EMS_AB_INBOUND_DN_UNICODE = 0x8c1e001f,
+ PR_EMS_AB_INBOUND_NEWSFEED_TYPE = 0x8c1f000b,
+ PR_EMS_AB_INBOUND_NEWSFEED_TYPE_ERROR = 0x8c1f000a,
+ PR_EMS_AB_INBOUND_ACCEPT_ALL = 0x8c20000b,
+ PR_EMS_AB_INBOUND_ACCEPT_ALL_ERROR = 0x8c20000a,
+ PR_EMS_AB_ENABLED = 0x8c21000b,
+ PR_EMS_AB_ENABLED_ERROR = 0x8c21000a,
+ PR_EMS_AB_PRESERVE_INTERNET_CONTENT = 0x8c22000b,
+ PR_EMS_AB_PRESERVE_INTERNET_CONTENT_ERROR = 0x8c22000a,
+ PR_EMS_AB_DISABLE_DEFERRED_COMMIT = 0x8c23000b,
+ PR_EMS_AB_DISABLE_DEFERRED_COMMIT_ERROR = 0x8c23000a,
+ PR_EMS_AB_CLIENT_ACCESS_ENABLED = 0x8c24000b,
+ PR_EMS_AB_CLIENT_ACCESS_ENABLED_ERROR = 0x8c24000a,
+ PR_EMS_AB_REQUIRE_SSL = 0x8c25000b,
+ PR_EMS_AB_REQUIRE_SSL_ERROR = 0x8c25000a,
+ PR_EMS_AB_ANONYMOUS_ACCOUNT = 0x8c26001e,
+ PR_EMS_AB_ANONYMOUS_ACCOUNT_UNICODE = 0x8c26001f,
+ PR_EMS_AB_ANONYMOUS_ACCOUNT_ERROR = 0x8c26000a,
+ PR_EMS_AB_CERTIFICATE_CHAIN_V3 = 0x8c270102,
+ PR_EMS_AB_CERTIFICATE_CHAIN_V3_ERROR = 0x8c27000a,
+ PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V3 = 0x8c280102,
+ PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V3_ERROR = 0x8c28000a,
+ PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V1 = 0x8c290102,
+ PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V1_ERROR = 0x8c29000a,
+ PR_EMS_AB_CROSS_CERTIFICATE_CRL = 0x8c301102,
+ PR_EMS_AB_CROSS_CERTIFICATE_CRL_ERROR = 0x8c30000a,
+ PR_EMS_AB_SEND_EMAIL_MESSAGE = 0x8c31000b,
+ PR_EMS_AB_SEND_EMAIL_MESSAGE_ERROR = 0x8c31000a,
+ PR_EMS_AB_ENABLE_COMPATIBILITY = 0x8c32000b,
+ PR_EMS_AB_ENABLE_COMPATIBILITY_ERROR = 0x8c32000a,
+ PR_EMS_AB_SMIME_ALG_LIST_NA = 0x8c33101e,
+ PR_EMS_AB_SMIME_ALG_LIST_NA_UNICODE = 0x8c33101f,
+ PR_EMS_AB_SMIME_ALG_LIST_NA_ERROR = 0x8c33000a,
+ PR_EMS_AB_SMIME_ALG_LIST_OTHER = 0x8c34101e,
+ PR_EMS_AB_SMIME_ALG_LIST_OTHER_UNICODE = 0x8c34101f,
+ PR_EMS_AB_SMIME_ALG_LIST_OTHER_ERROR = 0x8c34000a,
+ PR_EMS_AB_SMIME_ALG_SELECTED_NA = 0x8c35001e,
+ PR_EMS_AB_SMIME_ALG_SELECTED_NA_UNICODE = 0x8c35001f,
+ PR_EMS_AB_SMIME_ALG_SELECTED_NA_ERROR = 0x8c35000a,
+ PR_EMS_AB_SMIME_ALG_SELECTED_OTHER = 0x8c36001e,
+ PR_EMS_AB_SMIME_ALG_SELECTED_OTHER_UNICODE = 0x8c36001f,
+ PR_EMS_AB_SMIME_ALG_SELECTED_OTHER_ERROR = 0x8c36000a,
+ PR_EMS_AB_DEFAULT_MESSAGE_FORMAT = 0x8c37000b,
+ PR_EMS_AB_DEFAULT_MESSAGE_FORMAT_ERROR = 0x8c37000a,
+ PR_EMS_AB_TYPE = 0x8c38001e,
+ PR_EMS_AB_TYPE_UNICODE = 0x8c38001f,
+ PR_EMS_AB_TYPE_ERROR = 0x8c38000a,
+ PR_EMS_AB_DO_OAB_VERSION = 0x8c3a0003,
+ PR_EMS_AB_DO_OAB_VERSION_ERROR = 0x8c3a000a,
+ PR_EMS_AB_VOICE_MAIL_SYSTEM_GUID = 0x8c3b0102,
+ PR_EMS_AB_VOICE_MAIL_SYSTEM_GUID_ERROR = 0x8c3b000a,
+ PR_EMS_AB_VOICE_MAIL_USER_ID = 0x8c3c001e,
+ PR_EMS_AB_VOICE_MAIL_USER_ID_UNICODE = 0x8c3c001f,
+ PR_EMS_AB_VOICE_MAIL_USER_ID_ERROR = 0x8c3c000a,
+ PR_EMS_AB_VOICE_MAIL_PASSWORD = 0x8c3d001e,
+ PR_EMS_AB_VOICE_MAIL_PASSWORD_UNICODE = 0x8c3d001f,
+ PR_EMS_AB_VOICE_MAIL_PASSWORD_ERROR = 0x8c3d000a,
+ PR_EMS_AB_VOICE_MAIL_RECORDED_NAME = 0x8c3e0102,
+ PR_EMS_AB_VOICE_MAIL_RECORDED_NAME_ERROR = 0x8c3e000a,
+ PR_EMS_AB_VOICE_MAIL_GREETINGS = 0x8c3f101e,
+ PR_EMS_AB_VOICE_MAIL_GREETINGS_UNICODE = 0x8c3f101f,
+ PR_EMS_AB_VOICE_MAIL_GREETINGS_ERROR = 0x8c3f000a,
+ PR_EMS_AB_VOICE_MAIL_FLAGS = 0x8c401102,
+ PR_EMS_AB_VOICE_MAIL_FLAGS_ERROR = 0x8c40000a,
+ PR_EMS_AB_VOICE_MAIL_VOLUME = 0x8c410003,
+ PR_EMS_AB_VOICE_MAIL_VOLUME_ERROR = 0x8c41000a,
+ PR_EMS_AB_VOICE_MAIL_SPEED = 0x8c420003,
+ PR_EMS_AB_VOICE_MAIL_SPEED_ERROR = 0x8c42000a,
+ PR_EMS_AB_VOICE_MAIL_RECORDING_LENGTH = 0x8c431003,
+ PR_EMS_AB_VOICE_MAIL_RECORDING_LENGTH_ERROR = 0x8c43000a,
+ PR_EMS_AB_DISPLAY_NAME_SUFFIX = 0x8c44001e,
+ PR_EMS_AB_DISPLAY_NAME_SUFFIX_UNICODE = 0x8c44001f,
+ PR_EMS_AB_DISPLAY_NAME_SUFFIX_ERROR = 0x8c44000a,
+ PR_EMS_AB_ATTRIBUTE_CERTIFICATE = 0x8c451102,
+ PR_EMS_AB_ATTRIBUTE_CERTIFICATE_ERROR = 0x8c45000a,
+ PR_EMS_AB_DELTA_REVOCATION_LIST = 0x8c461102,
+ PR_EMS_AB_DELTA_REVOCATION_LIST_ERROR = 0x8c46000a,
+ PR_EMS_AB_SECURITY_POLICY = 0x8c471102,
+ PR_EMS_AB_SECURITY_POLICY_ERROR = 0x8c47000a,
+ PR_EMS_AB_SUPPORT_SMIME_SIGNATURES = 0x8c48000b,
+ PR_EMS_AB_SUPPORT_SMIME_SIGNATURES_ERROR = 0x8c48000a,
+ PR_EMS_AB_DELEGATE_USER = 0x8c49000b,
+ PR_EMS_AB_DELEGATE_USER_ERROR = 0x8c49000a,
+ PR_EMS_AB_LIST_PUBLIC_FOLDERS = 0x8c50000b,
+ PR_EMS_AB_LIST_PUBLIC_FOLDERS_ERROR = 0x8c50000a,
+ PR_EMS_AB_LABELEDURI = 0x8c51001e,
+ PR_EMS_AB_LABELEDURI_UNICODE = 0x8c51001f,
+ PR_EMS_AB_LABELEDURI_ERROR = 0x8c51000a,
+ PR_EMS_AB_RETURN_EXACT_MSG_SIZE = 0x8c52000b,
+ PR_EMS_AB_RETURN_EXACT_MSG_SIZE_ERROR = 0x8c52000a,
+ PR_EMS_AB_GENERATION_QUALIFIER = 0x8c53001e,
+ PR_EMS_AB_GENERATION_QUALIFIER_UNICODE = 0x8c53001f,
+ PR_EMS_AB_GENERATION_QUALIFIER_ERROR = 0x8c53000a,
+ PR_EMS_AB_HOUSE_IDENTIFIER = 0x8c54001e,
+ PR_EMS_AB_HOUSE_IDENTIFIER_UNICODE = 0x8c54001f,
+ PR_EMS_AB_HOUSE_IDENTIFIER_ERROR = 0x8c54000a,
+ PR_EMS_AB_SUPPORTED_ALGORITHMS = 0x8c550102,
+ PR_EMS_AB_SUPPORTED_ALGORITHMS_ERROR = 0x8c55000a,
+ PR_EMS_AB_DMD_NAME = 0x8c56001e,
+ PR_EMS_AB_DMD_NAME_UNICODE = 0x8c56001f,
+ PR_EMS_AB_DMD_NAME_ERROR = 0x8c56000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_11 = 0x8c57001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_11_UNICODE = 0x8c57001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_11_ERROR = 0x8c57000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_12 = 0x8c58001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_12_UNICODE = 0x8c58001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_12_ERROR = 0x8c58000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_13 = 0x8c59001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_13_UNICODE = 0x8c59001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_13_ERROR = 0x8c59000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_14 = 0x8c60001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_14_UNICODE = 0x8c60001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_14_ERROR = 0x8c60000a,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_15 = 0x8c61001e,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_15_UNICODE = 0x8c61001f,
+ PR_EMS_AB_EXTENSION_ATTRIBUTE_15_ERROR = 0x8c61000a,
+ PR_EMS_AB_REPLICATED_OBJECT_VERSION = 0x8c620003,
+ PR_EMS_AB_REPLICATED_OBJECT_VERSION_ERROR = 0x8c62000a,
+ PR_EMS_AB_MAIL_DROP = 0x8c63001e,
+ PR_EMS_AB_MAIL_DROP_UNICODE = 0x8c63001f,
+ PR_EMS_AB_MAIL_DROP_ERROR = 0x8c63000a,
+ PR_EMS_AB_FORWARDING_ADDRESS = 0x8c64001e,
+ PR_EMS_AB_FORWARDING_ADDRESS_UNICODE = 0x8c64001f,
+ PR_EMS_AB_FORWARDING_ADDRESS_ERROR = 0x8c64000a,
+ PR_EMS_AB_FORM_DATA = 0x8c650102,
+ PR_EMS_AB_FORM_DATA_ERROR = 0x8c65000a,
+ PR_EMS_AB_OWA_SERVER = 0x8c66001e,
+ PR_EMS_AB_OWA_SERVER_UNICODE = 0x8c66001f,
+ PR_EMS_AB_OWA_SERVER_ERROR = 0x8c66000a,
+ PR_EMS_AB_EMPLOYEE_NUMBER = 0x8c67001e,
+ PR_EMS_AB_EMPLOYEE_NUMBER_UNICODE = 0x8c67001f,
+ PR_EMS_AB_EMPLOYEE_NUMBER_ERROR = 0x8c67000a,
+ PR_EMS_AB_TELEPHONE_PERSONAL_PAGER = 0x8c68001e,
+ PR_EMS_AB_TELEPHONE_PERSONAL_PAGER_UNICODE = 0x8c68001f,
+ PR_EMS_AB_TELEPHONE_PERSONAL_PAGER_ERROR = 0x8c68000a,
+ PR_EMS_AB_EMPLOYEE_TYPE = 0x8c69001e,
+ PR_EMS_AB_EMPLOYEE_TYPE_UNICODE = 0x8c69001f,
+ PR_EMS_AB_EMPLOYEE_TYPE_ERROR = 0x8c69000a,
+ PR_EMS_AB_TAGGED_X509_CERT = 0x8c6a1102,
+ PR_EMS_AB_TAGGED_X509_CERT_ERROR = 0x8c6a000a,
+ PR_EMS_AB_PERSONAL_TITLE = 0x8c6b001e,
+ PR_EMS_AB_PERSONAL_TITLE_UNICODE = 0x8c6b001f,
+ PR_EMS_AB_PERSONAL_TITLE_ERROR = 0x8c6b000a,
+ PR_EMS_AB_LANGUAGE_ISO639 = 0x8c6c001e,
+ PR_EMS_AB_LANGUAGE_ISO639_UNICODE = 0x8c6c001f,
+ PR_EMS_AB_LANGUAGE_ISO639_ERROR = 0x8c6c000a,
+ PR_EMS_AB_OTHER_RECIPS = 0xf000000d,
+ PR_EMS_AB_OTHER_RECIPS_ERROR = 0xf000000a,
+ PR_EMS_AB_CHILD_RDNS = 0xfff8101e,
+ PR_EMS_AB_CHILD_RDNS_UNICODE = 0xfff8101f,
+ PR_EMS_AB_CHILD_RDNS_ERROR = 0xfff8000a,
+ PR_EMS_AB_HIERARCHY_PATH = 0xfff9001e,
+ PR_EMS_AB_HIERARCHY_PATH_UNICODE = 0xfff9001f,
+ PR_EMS_AB_HIERARCHY_PATH_ERROR = 0xfff9000a,
+ PR_EMS_AB_OBJECT_OID = 0xfffa0102,
+ PR_EMS_AB_OBJECT_OID_ERROR = 0xfffa000a,
+ PR_EMS_AB_IS_MASTER = 0xfffb000b,
+ PR_EMS_AB_IS_MASTER_ERROR = 0xfffb000a,
+ PR_EMS_AB_PARENT_ENTRYID = 0xfffc0102,
+ PR_EMS_AB_PARENT_ENTRYID_ERROR = 0xfffc000a,
+ PR_EMS_AB_CONTAINERID = 0xfffd0003,
+ PR_EMS_AB_CONTAINERID_ERROR = 0xfffd000a,
+ PR_EMS_AB_SERVER = 0xfffe001e,
+ PR_EMS_AB_SERVER_UNICODE = 0xfffe001f,
+ PR_EMS_AB_SERVER_ERROR = 0xfffe000a,
+ MAPI_PROP_RESERVED = 0xFFFFFFFF
+} MAPITAGS;
+
diff --git a/epan/dissectors/pidl/mdssvc/mdssvc.cnf b/epan/dissectors/pidl/mdssvc/mdssvc.cnf
new file mode 100644
index 00000000..d041f747
--- /dev/null
+++ b/epan/dissectors/pidl/mdssvc/mdssvc.cnf
@@ -0,0 +1,25 @@
+MANUAL mdssvc_dissect_element_blob_spotlight_blob
+
+NOEMIT mdssvc_dissect_element_blob_spotlight_blob_
+
+CODE START
+static int
+mdssvc_dissect_element_blob_spotlight_blob(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep _U_)
+{
+ tvbuff_t *spotlight_tvb;
+ dissector_handle_t spotlight_handle;
+
+ if (di->conformant_run) {
+ return offset;
+ }
+
+ spotlight_handle = find_dissector("afp_spotlight");
+ if (spotlight_handle)
+ {
+ spotlight_tvb = tvb_new_subset_remaining(tvb, offset + 16);
+ return (offset + 16 + call_dissector(spotlight_handle, spotlight_tvb, pinfo, tree));
+ }
+
+ return offset;
+}
+CODE END
diff --git a/epan/dissectors/pidl/mdssvc/mdssvc.idl b/epan/dissectors/pidl/mdssvc/mdssvc.idl
new file mode 100644
index 00000000..3f63e7cd
--- /dev/null
+++ b/epan/dissectors/pidl/mdssvc/mdssvc.idl
@@ -0,0 +1,68 @@
+import "misc/misc.idl";
+[
+ uuid("885d85fb-c754-4062-a0e7-6872ce0064f4"),
+ endpoint("ncacn_np:[\\pipe\\mdssvc]", "ncacn_ip_tcp:", "ncalrpc:"),
+ version(2.0),
+ helpstring("Spotlight metadata search service")
+]
+interface mdssvc
+{
+ void mdssvc_open(
+ [in,out,ref] uint32 *device_id,
+ [in,out,ref] uint32 *unkn2, /* always 0x17 ? */
+ [in,out,ref] uint32 *unkn3, /* always 0 ? */
+ [in][string,charset(UTF8),size_is(1025)] uint8 share_mount_path[],
+ [in][string,charset(UTF8),size_is(1025)] uint8 share_name[],
+ [out,string,charset(UTF8),size_is(1025)] uint8 share_path[],
+ [out,ref] policy_handle *handle
+ );
+
+ void mdssvc_unknown1(
+ [in] policy_handle *handle,
+ [in] uint32 unkn1, /* always 0, some status ? */
+ [in] uint32 device_id,
+ [in] uint32 unkn3, /* = mdssvc_open.unkn2 ? */
+ [in] uint32 unkn4, /* always 0, some status ? */
+ [in] uint32 uid,
+ [in] uint32 gid,
+ [out,ref] uint32 *status,
+ [out,ref] uint32 *flags, /* always 0x6b000001 ? */
+ [out,ref] uint32 *unkn7 /* always 0 ? */
+ );
+
+ typedef [public] struct {
+ uint32 length;
+ uint32 size;
+ [size_is(size),length_is(length)] uint8 *spotlight_blob;
+ } mdssvc_blob;
+
+ void mdssvc_cmd(
+ [in] policy_handle *handle,
+ [in] uint32 unkn1, /* always 0, status ? */
+ [in] uint32 device_id,
+ [in] uint32 unkn3, /* = mdssvc_open.unkn2 ? */
+ [in] uint32 unkn4, /* always 0 ? */
+ [in] uint32 flags, /* always 0x6b000001 ? */
+ [in] mdssvc_blob request_blob,
+ [in] uint32 unkn5, /* always 0 ? */
+ [in] uint32 max_fragment_size1,
+ [in] uint32 unkn6, /* always 1 ? */
+ /* always max_fragment_size1 = max_fragment_size2 ? */
+ [in] uint32 max_fragment_size2,
+ [in] uint32 unkn7, /* always 0 ? */
+ [in] uint32 unkn8, /* always 0 ? */
+ [out,ref] uint32 *fragment,
+ [out,ref] mdssvc_blob *response_blob,
+ [out,ref] uint32 *unkn9 /* always 0 ? */
+ );
+
+ void mdssvc_close(
+ [in] policy_handle *in_handle,
+ [in] uint32 unkn1, /* always 0, some status ? */
+ [in] uint32 device_id,
+ [in] uint32 unkn2, /* = mdssvc_open.unkn2 ? */
+ [in] uint32 unkn3, /* always 0, some status ? */
+ [out,ref] policy_handle *out_handle,
+ [out,ref] uint32 *status
+ );
+}
diff --git a/epan/dissectors/pidl/misc/misc.cnf b/epan/dissectors/pidl/misc/misc.cnf
new file mode 100644
index 00000000..f210c385
--- /dev/null
+++ b/epan/dissectors/pidl/misc/misc.cnf
@@ -0,0 +1 @@
+NOEMIT winreg_Data
diff --git a/epan/dissectors/pidl/misc/misc.idl b/epan/dissectors/pidl/misc/misc.idl
new file mode 100644
index 00000000..c306f359
--- /dev/null
+++ b/epan/dissectors/pidl/misc/misc.idl
@@ -0,0 +1,80 @@
+#include "idl_types.h"
+
+/*
+ miscellaneous IDL structures
+*/
+
+[
+ uuid("12345678-1234-1234-1234-abcdef123456"),
+ version(1.0),
+ pointer_default(unique)
+]
+interface misc
+{
+ typedef [public,noprint,gensize] struct {
+ uint32 time_low;
+ uint16 time_mid;
+ uint16 time_hi_and_version;
+ uint8 clock_seq[2];
+ uint8 node[6];
+ } GUID;
+
+ typedef [public] struct {
+ GUID uuid;
+ /* The major version is encoded in the 16 least significant bits,
+ the minor in the 16 most significant bits.
+ http://www.opengroup.org/onlinepubs/9629399/chap12.htm */
+ uint32 if_version;
+ } ndr_syntax_id;
+
+ typedef [public] struct {
+ uint32 handle_type;
+ GUID uuid;
+ } policy_handle;
+
+ /* secure channel types */
+ /* Only SEC_CHAN_WKSTA can forward requests to other domains. */
+
+ typedef [public] enum {
+ SEC_CHAN_NULL = 0,
+ SEC_CHAN_LOCAL = 1,
+ SEC_CHAN_WKSTA = 2,
+ SEC_CHAN_DNS_DOMAIN = 3,
+ SEC_CHAN_DOMAIN = 4,
+ SEC_CHAN_LANMAN = 5,
+ SEC_CHAN_BDC = 6,
+ SEC_CHAN_RODC = 7
+ } netr_SchannelType;
+
+ typedef [public] struct {
+ NTSTATUS ntstatus;
+ uint32 unknown1;
+ uint32 unknown2; /* 0x00000001 */
+ } KRB5_EDATA_NTSTATUS;
+
+ typedef [public,v1_enum] enum {
+ REG_NONE = 0,
+ REG_SZ = 1,
+ REG_EXPAND_SZ = 2,
+ REG_BINARY = 3,
+ REG_DWORD = 4,
+ REG_DWORD_BIG_ENDIAN = 5,
+ REG_LINK = 6,
+ REG_MULTI_SZ = 7,
+ REG_RESOURCE_LIST = 8,
+ REG_FULL_RESOURCE_DESCRIPTOR = 9,
+ REG_RESOURCE_REQUIREMENTS_LIST = 10,
+ REG_QWORD = 11
+ } winreg_Type;
+
+ typedef [nodiscriminant,public,flag(NDR_LITTLE_ENDIAN)] union {
+ [case(REG_NONE)];
+ [case(REG_SZ)] nstring string;
+ [case(REG_EXPAND_SZ)] nstring string;
+ [case(REG_BINARY),flag(NDR_REMAINING)] DATA_BLOB binary;
+ [case(REG_DWORD)] uint32 value;
+ [case(REG_DWORD_BIG_ENDIAN),flag(NDR_BIG_ENDIAN)] uint32 value;
+ [case(REG_MULTI_SZ)] nstring_array string_array;
+ [default,flag(NDR_REMAINING)] DATA_BLOB data;
+ } winreg_Data;
+}
diff --git a/epan/dissectors/pidl/nspi/README b/epan/dissectors/pidl/nspi/README
new file mode 100644
index 00000000..6cf79950
--- /dev/null
+++ b/epan/dissectors/pidl/nspi/README
@@ -0,0 +1,62 @@
+OpenChange Wireshark dissector
+------------------------------
+
+Author: Julien Kerihuel <j.kerihuel@openchange.org>, November 2006
+
+0x0 Content
+-----------
+ 0x1 Installation
+ 0x2 Overview
+ 0x3 Developers installation
+ 0x4 Limitations
+ 0x5 Links
+
+0x1 Installation
+----------------
+
+Copy packet-dcerpc-nspi.c and packet-dcerpc-nspi.h in the dissector
+wireshark directory (e.g.: wireshark/epan/dissectors) and compile.
+
+That's all ;)
+
+0x2 Overview
+-------------
+
+The NSPI dissector implements the following IDL functions:
+(0x1) NspiBind
+(0x2) NspiUnbind
+(0x3) NspiQueryRows
+(0x5) NspiGetMatches
+(0x7) NspiDNToEph
+(0x9) NspiGetProps
+(0xc) NspiGetHierarchyInfo
+
+0x3 Developers installation
+---------------------------
+
+The ws-parser directory includes the file used to generate the nspi
+dissector. In order to create the dissector, you need to follow this
+procedure below:
+
+1. Install Samba PIDL (>= rev 19559 if installed from samba4 sources)
+3. Copy idl_types.h in the current directory
+4. run "pidl --ws-parser -- nspi.idl"
+
+
+0x4 Limitations
+---------------
+
+- We have only implemented the SRestriction_CTR cases we found during
+our tests:
+ * RES_AND
+ * RES_PROPERTY
+
+- The current dissector implements the NSPI functions used by
+Microsoft Exchange Server 2000/2003 but some functions used by older
+versions of Exchange such as NspiUpdateStat may miss.
+
+0x5 Links
+-----------
+
+* http://www.openchange.org
+* http://wiki.openchange.org
diff --git a/epan/dissectors/pidl/nspi/README.ws b/epan/dissectors/pidl/nspi/README.ws
new file mode 100644
index 00000000..5df05687
--- /dev/null
+++ b/epan/dissectors/pidl/nspi/README.ws
@@ -0,0 +1,2 @@
+This directory is a copy of the files from:
+svn://kb.openchange.org/openchange/tools/dissector
diff --git a/epan/dissectors/pidl/nspi/nspi.cnf b/epan/dissectors/pidl/nspi/nspi.cnf
new file mode 100644
index 00000000..2f5346c3
--- /dev/null
+++ b/epan/dissectors/pidl/nspi/nspi.cnf
@@ -0,0 +1,26 @@
+HF_FIELD hf_nspi_handle "Handle" "nspi.handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+
+HF_RENAME hf_nspi_NspiBind_handle hf_nspi_handle
+HF_RENAME hf_nspi_NspiUnbind_handle hf_nspi_handle
+HF_RENAME hf_nspi_NspiQueryRows_handle hf_nspi_handle
+HF_RENAME hf_nspi_NspiGetMatches_handle hf_nspi_handle
+HF_RENAME hf_nspi_NspiDNToEph_handle hf_nspi_handle
+HF_RENAME hf_nspi_NspiGetProps_handle hf_nspi_handle
+HF_RENAME hf_nspi_NspiGetHierarchyInfo_handle hf_nspi_handle
+
+HF_FIELD hf_nspi_property_type "Value" "nspi.SPropValue.value" FT_UINT32 BASE_HEX VALS(nspi_property_types_vals) 0 "" ""
+HF_FIELD hf_nspi_SRestriction_PTTYPE "Restriction Type" "nspi.property_type" FT_UINT32 BASE_HEX VALS(nspi_nspi_RestrictionType_vals) 0 "" ""
+HF_RENAME hf_nspi_SPropValue_value hf_nspi_property_type
+HF_RENAME hf_nspi_SRestriction_res hf_nspi_SRestriction_PTTYPE
+HF_RENAME hf_nspi_SRestriction_rt hf_nspi_SRestriction_PTTYPE
+
+#
+# policyhandle tracking
+# This block is to specify where a policyhandle is opened and where it is
+# closed so that policyhandles when dissected contain nice info such as
+# [opened in xxx] [closed in yyy]
+#
+# Policyhandles are opened in these functions (open==0x0001)
+PARAM_VALUE nspi_dissect_element_NspiBind_handle_ 0x0001
+# Policyhandles are closed in these functions (close==0x0002)
+PARAM_VALUE nspi_dissect_element_NspiUnbind_handle_ 0x0002
diff --git a/epan/dissectors/pidl/nspi/nspi.idl b/epan/dissectors/pidl/nspi/nspi.idl
new file mode 100644
index 00000000..5c893770
--- /dev/null
+++ b/epan/dissectors/pidl/nspi/nspi.idl
@@ -0,0 +1,377 @@
+/*
+ NSPI Implementation
+
+ OpenChange Project
+
+ Copyright (C) Julien Kerihuel 2006
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+
+#include "idl_types.h"
+
+[
+ uuid("f5cc5a18-4264-101a-8c59-08002b2f8426"),
+ endpoint("ncacn_np:[\\pipe\\exchange_nsp]", "ncacn_ip_tcp:"),
+ pointer_default(unique),
+ version(56.0),
+ helpstring("Exchange 5.5 Name Service Provider"),
+ helper("ndr_mapi.h")
+] interface nspi
+{
+
+#include "mapitags_enum.h"
+#include "mapicodes_enum.h"
+
+ /*****************/
+ /* Function 0x00 */
+
+ /*
+ ** MAPIUID explanation:
+ ** http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mapi/html/c42065c2-b1f5-4930-84a6-6ef90c6162d0.asp
+ */
+
+ typedef struct _MAPIUID{
+ uint8 ab[16];
+ } MAPIUID;
+
+ /*
+ ** input locale combination:
+ ** http://www.microsoft.com/globaldev/reference/win2k/setup/lcid.mspx
+ */
+
+ typedef struct {
+ uint32 language;
+ uint32 method;
+ } input_locale;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 handle;
+ uint32 flag;
+ MAPIUID service_provider;
+ uint32 codepage; /* CPID */
+ input_locale input_locale; /* LCID */
+ } MAPI_SETTINGS;
+
+ typedef struct {
+ [unique, length_is(cValues - 1), size_is(cValues - 1)] MAPITAGS *aulPropTag;
+ uint32 cValues;
+ } SPropTagArray;
+
+ typedef struct {
+ [length_is(cValues - 1), size_is(cValues - 1)] uint32 *value;
+ uint32 cValues;
+ } instance_key;
+
+
+
+ /*****************/
+ /* Function 0x00 */
+ MAPISTATUS NspiBind(
+ [in] uint32 unknown,
+ [in] MAPI_SETTINGS *settings,
+ [in,out,unique] GUID *mapiuid,
+ [out] policy_handle *handle
+ );
+
+ /*****************/
+ /* Function 0x01 */
+ MAPISTATUS NspiUnbind(
+ [in, out] policy_handle *handle,
+ [in] uint32 status
+ );
+
+
+ void NspiUpdateStat();
+
+ /*****************/
+ /* Function 0x03 */
+ MAPISTATUS NspiQueryRows(
+ [in] policy_handle *handle,
+ [in] uint32 flag,
+ [in,out] MAPI_SETTINGS *settings,
+ [in] uint32 lRows,
+ [in][size_is(lRows)][unique] uint32 *instance_key,
+ [in] uint32 unknown,
+ [in] SPropTagArray *REQ_properties,
+ [out] SRowSet **RowSet
+ );
+
+ void NspiSeekEntries();
+
+ /*****************/
+ /* Function 0x05 */
+
+
+
+ typedef struct {
+ [unique] MAPIUID *lpguid;
+ uint32 ulKind;
+ uint32 lID; /* this is actually a union in mapidefs.h */
+ } MAPINAMEID;
+
+ /* Restriction types */
+ typedef [v1_enum] enum {
+ RES_AND = 0,
+ RES_OR = 1,
+ RES_NOT = 2,
+ RES_CONTENT = 3,
+ RES_PROPERTY = 4,
+ RES_COMPAREPROPS = 5,
+ RES_BITMASK = 6,
+ RES_SIZE = 7,
+ RES_EXIST = 8,
+ RES_SUBRESTRICTION = 9,
+ RES_COMMENT = 10
+ } nspi_RestrictionType;
+
+ typedef struct {
+ uint32 relop;
+ MAPITAGS ulPropTag;
+ SPropValue *lpProp;
+ } SPropertyRestriction;
+
+ typedef struct {
+ uint32 cRes;
+ [size_is(cRes)][unique]SRestriction *lpRes;
+ } SAndRestriction;
+
+ typedef [switch_type(nspi_RestrictionType)] union {
+ [case(RES_AND) ] SAndRestriction resAnd;
+// [case(RES_OR) ] SOrRestriction resOr;
+// [case(RES_NOT) ] SNotRestriction resNot;
+// [case(RES_CONTENT) ] SContentRestriction resContent;
+ [case(RES_PROPERTY) ] SPropertyRestriction resProperty;
+// [case(RES_COMPAREPROPS) ] SComparePropsRestriction resCompareProps;
+// [case(RES_BITMASK) ] SBitMaskRestriction resBitMask;
+// [case(RES_SUBRESTRICTION)] SSubRestriction resSub;
+// [case(RES_SIZE) ] SSizeRestriction resSize;
+// [case(RES_EXIST) ] SExistRestriction resExist;
+ } SRestriction_CTR;
+
+ typedef [public] struct _SRestriction{
+ nspi_RestrictionType rt;
+ [switch_is(rt)] SRestriction_CTR res;
+ } SRestriction;
+
+/* Sort type */
+#define TABLE_SORT_ASCEND 0
+#define TABLE_SORT_DESCEND 0
+
+ typedef [public] struct _SSortOrder{
+ uint32 ulPropTag;
+ uint32 ulOrder;
+ } SSortOrder;
+
+ typedef [public] struct _SSortOrderSet{
+ uint32 cSorts;
+ uint32 cCategories;
+ uint32 cExpanded;
+ [size_is(cSorts)][unique]SSortOrder *aSort;
+ } SSortOrderSet;
+
+ MAPISTATUS NspiGetMatches(
+ [in] policy_handle *handle,
+ [in] uint32 unknown1,
+ [in,out] MAPI_SETTINGS *settings,
+ [in][unique] SPropTagArray *PropTagArray,
+ [in] uint32 unknown2,
+ [in][unique] SRestriction *restrictions,
+ [in] uint32 unknown3,
+ [out] instance_key *instance_key,
+ [in][unique] SPropTagArray *REQ_properties,
+ [out] SRowSet **RowSet
+ );
+
+
+ void NspiResortRestriction();
+
+ /*****************/
+ /* Function 0x07 */
+
+ typedef struct {
+ [string, charset(DOS)] uint8 *str;
+ } NAME_STRING;
+
+ MAPISTATUS NspiDNToEph(
+ [in] policy_handle *handle,
+ [in] uint32 flag,
+ [in] uint32 size,
+ [in,ref][size_is(size)] NAME_STRING *server_dn,
+ [out] instance_key *instance_key
+ );
+
+ void NspiGetPropList();
+
+ /*****************/
+ /* Function 0x09 */
+ MAPISTATUS NspiGetProps(
+ [in] policy_handle *handle,
+ [in] uint32 flag,
+ [in] MAPI_SETTINGS *settings,
+ [in] SPropTagArray *REQ_properties,
+ [out] SRow **REPL_values
+ );
+
+
+ void NspiCompareDNTs();
+ void NspiModProps();
+
+ typedef [v1_enum] enum {
+ PT_UNSPECIFIED = 0x0000,
+ PT_NULL = 0x0001,
+ PT_I2 = 0x0002,
+ PT_LONG = 0x0003,
+ PT_R4 = 0x0004,
+ PT_DOUBLE = 0x0005,
+ PT_CURRENCY = 0x0006,
+ PT_APPTIME = 0x0007,
+ PT_ERROR = 0x000a, /* means the given attr contains no value */
+ PT_BOOLEAN = 0x000b,
+ PT_OBJECT = 0x000d,
+ PT_I8 = 0x0014,
+ PT_STRING8 = 0x001e,
+ PT_UNICODE = 0x001f,
+ PT_SYSTIME = 0x0040,
+ PT_CLSID = 0x0048,
+ PT_BINARY = 0x0102,
+
+ /* Multi-valued properties */
+
+ PT_MV_I2 = 0x1002,
+ PT_MV_LONG = 0x1003,
+ PT_MV_R4 = 0x1004,
+ PT_MV_DOUBLE = 0x1005,
+ PT_MV_CURRENCY = 0x1006,
+ PT_MV_APPTIME = 0x1007,
+ PT_MV_I8 = 0x1014,
+ PT_MV_STRING8 = 0x101e,
+// PT_MV_TSTRING = 0x101e,
+ PT_MV_UNICODE = 0x101f,
+ PT_MV_SYSTIME = 0x1040,
+ PT_MV_CLSID = 0x1048,
+ PT_MV_BINARY = 0x1102
+ } property_types;
+
+
+ /*****************/
+ /* Function 0x0c */
+
+ typedef struct {
+ uint32 cb;
+ [size_is(cb)][unique] uint8 *lpb;
+ } SBinary;
+
+ typedef struct {
+ uint32 dwLowDateTime;
+ uint32 dwHighDateTime;
+ } FILETIME;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] uint16 *lpi;
+ } SShortArray;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] uint32 *lpl;
+ } MV_LONG_STRUCT;
+
+ typedef struct {
+ ascstr_noterm lppszA;
+ } LPSTR;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] LPSTR **strings;
+ } SLPSTRArray;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] SBinary *lpbin;
+ } SBinaryArray;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 cValues;
+ [size_is(cValues)] uint32 *lpguid;
+ } SGuidArray;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] uint32 *lpi;
+ } MV_UNICODE_STRUCT;
+
+ typedef struct {
+ uint32 cValues;
+ [size_is(cValues)] FILETIME *lpft;
+ } SDateTimeArray;
+
+ typedef [switch_type(property_types)] union {
+ [case(PT_I2)] uint16 i;
+ [case(PT_LONG)] uint32 l;
+ [case(PT_BOOLEAN)] uint16 b;
+ [case(PT_STRING8)][unique][string,charset(DOS)] uint8 *lpszA;
+ [case(PT_BINARY)] SBinary bin;
+ [case(PT_UNICODE)] [string,charset(UTF16)] uint16 *lpszW;
+ [case(PT_CLSID)] MAPIUID *lpguid;
+ [case(PT_SYSTIME)] FILETIME ft;
+ [case(PT_ERROR)] MAPISTATUS err;
+ [case(PT_MV_I2)] SShortArray MVi;
+ [case(PT_MV_LONG)] MV_LONG_STRUCT MVl;
+ [case(PT_MV_STRING8)] SLPSTRArray MVszA;
+ [case(PT_MV_BINARY)] SBinaryArray MVbin;
+ [case(PT_MV_CLSID)] SGuidArray MVguid;
+ [case(PT_MV_UNICODE)] MV_UNICODE_STRUCT MVszW;
+ [case(PT_MV_SYSTIME)] SDateTimeArray MVft;
+ [case(PT_NULL)] uint32 null;
+ [case(PT_OBJECT)] uint32 object;
+ } SPropValue_CTR;
+
+ typedef [public]struct {
+ MAPITAGS ulPropTag;
+ uint32 dwAlignPad;
+ [switch_is(ulPropTag & 0xFFFF)] SPropValue_CTR value;
+ } SPropValue;
+
+ typedef struct {
+ uint32 ulAdrEntryPad;
+ uint32 cValues;
+ [size_is(cValues)][unique] SPropValue *lpProps;
+ } SRow;
+
+
+ typedef [public] struct {
+ uint32 cRows;
+ [size_is(cRows)] SRow aRow[*];
+ } SRowSet;
+
+ MAPISTATUS NspiGetHierarchyInfo(
+ [in] policy_handle *handle,
+ [in] uint32 unknown1,
+ [in] MAPI_SETTINGS *settings,
+ [in,out] uint32 *unknown2,
+ [out] SRowSet **RowSet
+ );
+
+ void NspiGetTemplateInfo();
+ void NspiModLInkAtt();
+ void NspiDeleteEntries();
+ void NspiQueryColumns();
+ void NspiGetNamesFromIDs();
+ void NspiGetIDsFromNames();
+ void NspiResolveNames();
+ void NspiResolveNamesW();
+}
diff --git a/epan/dissectors/pidl/rfr/rfr.cnf b/epan/dissectors/pidl/rfr/rfr.cnf
new file mode 100644
index 00000000..07dbd738
--- /dev/null
+++ b/epan/dissectors/pidl/rfr/rfr.cnf
@@ -0,0 +1 @@
+# Conformance file for RFR
diff --git a/epan/dissectors/pidl/rfr/rfr.idl b/epan/dissectors/pidl/rfr/rfr.idl
new file mode 100644
index 00000000..da2ec2bd
--- /dev/null
+++ b/epan/dissectors/pidl/rfr/rfr.idl
@@ -0,0 +1,53 @@
+/*
+ RFR Implementation
+
+ OpenChange Project
+
+ Copyright (C) Julien Kerihuel 2008.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program 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. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "idl_types.h"
+
+[
+ uuid("1544f5e0-613c-11d1-93df-00c04fd7bd09"),
+ endpoint("ncacn_np:[\\pipe\\lsass]","ncacn_np:[\\pipe\\protected_storage]","ncacn_ip_tcp:[]"),
+ pointer_default(unique),
+ version(1.0),
+ helpstring("Exchange 2003 Directory Request For Response")
+] interface rfr
+{
+
+#include "mapicodes_enum.h"
+
+ /*****************/
+ /* Function 0x00 */
+ MAPISTATUS RfrGetNewDSA(
+ [in] uint32 ulFlags,
+ [in,string,charset(DOS)] uint8 *pUserDN,
+ [in,out,unique,string,charset(DOS)] uint8 **ppszUnused,
+ [in,out,unique,string,charset(DOS)] uint8 **ppszServer
+ );
+
+ /*****************/
+ /* Function 0x01 */
+ MAPISTATUS RfrGetFQDNFromLegacyDN(
+ [in] uint32 ulFlags,
+ [in,range(10,1024)] uint32 cbMailboxServerDN,
+ [in,string,charset(DOS),size_is(cbMailboxServerDN)] uint8 *szMailboxServerDN,
+ [out,ref,string,charset(DOS)] uint8 **ppszServerFQDN
+ );
+}
diff --git a/epan/dissectors/pidl/samr/samr.cnf b/epan/dissectors/pidl/samr/samr.cnf
new file mode 100644
index 00000000..07ca73de
--- /dev/null
+++ b/epan/dissectors/pidl/samr/samr.cnf
@@ -0,0 +1,501 @@
+#
+# policyhandle tracking
+# This block is to specify where a policyhandle is opened and where it is
+# closed so that policyhandles when dissected contain nice info such as
+# [opened in xxx] [closed in yyy]
+#
+# Policyhandles are opened in these functions
+PARAM_VALUE samr_dissect_element_Connect_connect_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT
+PARAM_VALUE samr_dissect_element_OpenDomain_domain_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_DOMAIN
+PARAM_VALUE samr_dissect_element_CreateDomainGroup_group_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_GROUP
+PARAM_VALUE samr_dissect_element_CreateUser_user_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_USER
+PARAM_VALUE samr_dissect_element_CreateDomAlias_alias_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_ALIAS
+PARAM_VALUE samr_dissect_element_OpenGroup_group_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_GROUP
+PARAM_VALUE samr_dissect_element_OpenAlias_alias_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_ALIAS
+PARAM_VALUE samr_dissect_element_OpenUser_user_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_USER
+PARAM_VALUE samr_dissect_element_CreateUser2_user_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_USER
+PARAM_VALUE samr_dissect_element_Connect2_connect_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT
+PARAM_VALUE samr_dissect_element_Connect3_connect_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT
+PARAM_VALUE samr_dissect_element_Connect4_connect_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT
+PARAM_VALUE samr_dissect_element_Connect5_connect_handle_ PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT
+# Policyhandles are closed in these functions
+PARAM_VALUE samr_dissect_element_Close_handle_ PIDL_POLHND_CLOSE
+PARAM_VALUE samr_dissect_element_Shutdown_connect_handle_ PIDL_POLHND_CLOSE
+PARAM_VALUE samr_dissect_element_DeleteDomainGroup_group_handle_ PIDL_POLHND_CLOSE
+PARAM_VALUE samr_dissect_element_DeleteDomAlias_alias_handle_ PIDL_POLHND_CLOSE
+PARAM_VALUE samr_dissect_element_DeleteUser_user_handle_ PIDL_POLHND_CLOSE
+
+
+
+#
+# make sure all policy handles of the same type use the same filter name
+#
+HF_FIELD hf_samr_handle "Handle" "samr.handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_Close_handle hf_samr_handle
+HF_RENAME hf_samr_samr_SetSecurity_handle hf_samr_handle
+HF_RENAME hf_samr_samr_QuerySecurity_handle hf_samr_handle
+
+HF_FIELD hf_samr_connect_handle "Connect Handle" "samr.connect_handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_Connect_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_LookupDomain_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_EnumDomain_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_OpenDomain_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_Shutdown_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_Connect2_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_SetBootKeyInformation_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_GetBootKeyInformation_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_Connect3_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_Connect4_connect_handle hf_samr_connect_handle
+HF_RENAME hf_samr_samr_Connect5_connect_handle hf_samr_connect_handle
+
+HF_FIELD hf_samr_domain_handle "Domain Handle" "samr.domain_handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_OpenDomain_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_QueryDomainInfo_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_SetDomainInfo_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_CreateDomainGroup_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_EnumDomainGroups_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_CreateUser_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_EnumDomainUsers_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_CreateDomAlias_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_EnumDomainAliases_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_GetAliasMembership_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_LookupNames_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_LookupRids_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_OpenGroup_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_OpenAlias_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_OpenUser_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_QueryDisplayInfo_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_GetDisplayEnumerationIndex_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_TestPrivateFunctionsDomain_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_RemoveMemberFromForeignDomain_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_QueryDomainInfo2_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_QueryDisplayInfo2_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_GetDisplayEnumerationIndex2_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_CreateUser2_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_QueryDisplayInfo3_domain_handle hf_samr_domain_handle
+HF_RENAME hf_samr_samr_RidToSid_domain_handle hf_samr_domain_handle
+
+HF_FIELD hf_samr_group_handle "Group Handle" "samr.group_handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_CreateDomainGroup_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_OpenGroup_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_QueryGroupInfo_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_SetGroupInfo_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_AddGroupMember_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_DeleteDomainGroup_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_DeleteGroupMember_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_QueryGroupMember_group_handle hf_samr_group_handle
+HF_RENAME hf_samr_samr_SetMemberAttributesOfGroup_group_handle hf_samr_group_handle
+
+HF_FIELD hf_samr_user_handle "User Handle" "samr.user_handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_CreateUser_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_OpenUser_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_DeleteUser_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_QueryUserInfo_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_SetUserInfo_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_ChangePasswordUser_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_GetGroupsForUser_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_TestPrivateFunctionsUser_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_GetUserPwInfo_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_QueryUserInfo2_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_CreateUser2_user_handle hf_samr_user_handle
+HF_RENAME hf_samr_samr_SetUserInfo2_user_handle hf_samr_user_handle
+
+HF_FIELD hf_samr_alias_handle "Alias Handle" "samr.alias_handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_CreateDomAlias_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_OpenAlias_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_QueryAliasInfo_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_SetAliasInfo_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_DeleteDomAlias_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_AddAliasMember_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_DeleteAliasMember_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_GetMembersInAlias_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_AddMultipleMembersToAlias_alias_handle hf_samr_alias_handle
+HF_RENAME hf_samr_samr_RemoveMultipleMembersFromAlias_alias_handle hf_samr_alias_handle
+
+
+
+#
+# make all rids use the same hf field
+#
+HF_FIELD hf_samr_rid "RID" "samr.rid" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_CreateDomainGroup_rid hf_samr_rid
+HF_RENAME hf_samr_samr_CreateUser_rid hf_samr_rid
+HF_RENAME hf_samr_samr_CreateDomAlias_rid hf_samr_rid
+HF_RENAME hf_samr_samr_Ids_ids hf_samr_rid
+HF_RENAME hf_samr_samr_LookupRids_rids hf_samr_rid
+HF_RENAME hf_samr_samr_OpenGroup_rid hf_samr_rid
+HF_RENAME hf_samr_samr_AddGroupMember_rid hf_samr_rid
+HF_RENAME hf_samr_samr_DeleteGroupMember_rid hf_samr_rid
+HF_RENAME hf_samr_samr_RidTypeArray_rids hf_samr_rid
+HF_RENAME hf_samr_samr_OpenAlias_rid hf_samr_rid
+HF_RENAME hf_samr_samr_OpenUser_rid hf_samr_rid
+HF_RENAME hf_samr_samr_UserInfo3_rid hf_samr_rid
+HF_RENAME hf_samr_samr_UserInfo5_rid hf_samr_rid
+HF_RENAME hf_samr_samr_UserInfo21_rid hf_samr_rid
+HF_RENAME hf_samr_samr_RidWithAttribute_rid hf_samr_rid
+HF_RENAME hf_samr_samr_DispEntryGeneral_rid hf_samr_rid
+HF_RENAME hf_samr_samr_DispEntryFull_rid hf_samr_rid
+HF_RENAME hf_samr_samr_DispEntryFullGroup_rid hf_samr_rid
+HF_RENAME hf_samr_samr_CreateUser2_rid hf_samr_rid
+HF_RENAME hf_samr_samr_RidToSid_rid hf_samr_rid
+
+
+
+#
+# Prettification the summary line and the dissection tree
+#
+PARAM_VALUE samr_dissect_element_SamArray_entries__ 3|PIDL_SET_COL_INFO
+PARAM_VALUE samr_dissect_element_LookupDomain_domain_name_ 3|PIDL_SET_COL_INFO
+PARAM_VALUE samr_dissect_element_GetDomPwInfo_domain_name_ 3|PIDL_SET_COL_INFO
+PARAM_VALUE samr_dissect_element_CreateUser_account_name_ 3|PIDL_SET_COL_INFO|PIDL_STR_SAVE
+PARAM_VALUE samr_dissect_element_CreateUser2_account_name_ 3|PIDL_SET_COL_INFO|PIDL_STR_SAVE
+
+TYPE lsa_String "offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_STRING BASE_NONE 0 NULL 5
+TYPE lsa_AsciiString "offset=cnf_dissect_lsa_AsciiString(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_STRING BASE_NONE 0 NULL 5
+TYPE lsa_StringLarge "offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_STRING BASE_NONE 0 NULL 5
+TYPE lsa_AsciiStringLarge "offset=cnf_dissect_lsa_AsciiString(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_STRING BASE_NONE 0 NULL 5
+TYPE hyper "offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_UINT64 BASE_DEC 0 NULL 8
+
+
+TYPE sec_desc_buf "offset=cnf_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL 4
+HF_FIELD hf_samr_sec_desc_buf_len "Sec Desc Buf Len" "samr.sec_desc_buf_len" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+
+TYPE dom_sid2 "offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL 4
+
+TYPE lsa_SidArray "offset=cnf_dissect_lsa_SidArray(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL 4
+
+TYPE security_secinfo "offset=cnf_dissect_samr_security_secinfo(tvb, offset, pinfo, tree, drep);" FT_NONE BASE_NONE 0 NULL 4
+
+#
+# ConnectX access masks
+#
+MANUAL samr_dissect_bitmap_ConnectAccessMask
+HF_FIELD hf_samr_connect_access_mask "Access Mask" "samr.connect.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_Connect_access_mask hf_samr_connect_access_mask
+HF_RENAME hf_samr_samr_Connect2_access_mask hf_samr_connect_access_mask
+HF_RENAME hf_samr_samr_Connect3_access_mask hf_samr_connect_access_mask
+HF_RENAME hf_samr_samr_Connect4_access_mask hf_samr_connect_access_mask
+HF_RENAME hf_samr_samr_Connect5_access_mask hf_samr_connect_access_mask
+#
+# User access masks
+#
+MANUAL samr_dissect_bitmap_UserAccessMask
+HF_FIELD hf_samr_user_access_mask "Access Mask" "samr.user.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_CreateUser_access_mask hf_samr_user_access_mask
+HF_RENAME hf_samr_samr_OpenUser_access_mask hf_samr_user_access_mask
+HF_RENAME hf_samr_samr_CreateUser2_access_mask hf_samr_user_access_mask
+#
+# Domain access masks
+#
+MANUAL samr_dissect_bitmap_DomainAccessMask
+HF_FIELD hf_samr_domain_access_mask "Access Mask" "samr.domain.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_OpenDomain_access_mask hf_samr_domain_access_mask
+#
+# Group access masks
+#
+MANUAL samr_dissect_bitmap_GroupAccessMask
+HF_FIELD hf_samr_group_access_mask "Access Mask" "samr.group.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_CreateDomainGroup_access_mask hf_samr_group_access_mask
+HF_RENAME hf_samr_samr_OpenGroup_access_mask hf_samr_group_access_mask
+#
+# Alias access masks
+#
+MANUAL samr_dissect_bitmap_AliasAccessMask
+HF_FIELD hf_samr_alias_access_mask "Access Mask" "samr.alias.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_RENAME hf_samr_samr_CreateDomAlias_access_mask hf_samr_alias_access_mask
+HF_RENAME hf_samr_samr_OpenAlias_access_mask hf_samr_alias_access_mask
+
+
+CODE START
+
+static void
+samr_connect_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN,
+ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS,
+ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN,
+ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER,
+ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER,
+ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+struct access_mask_info samr_connect_access_mask_info = {
+ "SAMR Connect", /* Name of specific rights */
+ samr_connect_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+int
+samr_dissect_bitmap_ConnectAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_samr_connect_access_mask,
+ &samr_connect_access_mask_info, NULL);
+ return offset;
+}
+
+
+static void
+samr_alias_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER,
+ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER,
+ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_GET_MEMBERS,
+ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_LOOKUP_INFO,
+ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_SET_INFO,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+struct access_mask_info samr_alias_access_mask_info = {
+ "SAMR Alias", /* Name of specific rights */
+ samr_alias_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+int
+samr_dissect_bitmap_AliasAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_samr_alias_access_mask,
+ &samr_alias_access_mask_info, NULL);
+ return offset;
+}
+
+
+static void
+samr_group_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_GET_MEMBERS,
+ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER,
+ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_ADD_MEMBER,
+ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_SET_INFO,
+ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_LOOKUP_INFO,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+struct access_mask_info samr_group_access_mask_info = {
+ "SAMR Group", /* Name of specific rights */
+ samr_group_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+int
+samr_dissect_bitmap_GroupAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_samr_group_access_mask,
+ &samr_group_access_mask_info, NULL);
+ return offset;
+}
+
+
+static void
+samr_domain_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_1,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_2,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_USER,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_GROUP,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_ALIAS,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
+ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_3,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+struct access_mask_info samr_domain_access_mask_info = {
+ "SAMR Domain", /* Name of specific rights */
+ samr_domain_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+int
+samr_dissect_bitmap_DomainAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_samr_domain_access_mask,
+ &samr_domain_access_mask_info, NULL);
+ return offset;
+}
+
+
+static void
+samr_user_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUPS,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_PASSWORD,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_ATTRIBUTES,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_ATTRIBUTES,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOGONINFO,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_LOC_COM,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOCALE,
+ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+struct access_mask_info samr_user_access_mask_info = {
+ "SAMR User", /* Name of specific rights */
+ samr_user_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+int
+samr_dissect_bitmap_UserAccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_samr_user_access_mask,
+ &samr_user_access_mask_info, NULL);
+ return offset;
+}
+
+
+static int
+cnf_dissect_lsa_AsciiString(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, guint32 param _U_, int hfindex)
+{
+ offset = dissect_ndr_counted_ascii_string(tvb, offset, pinfo, tree, di, drep,
+ hfindex, 0);
+
+ return offset;
+}
+
+static int
+cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, guint32 param _U_, int hfindex)
+{
+ offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hfindex, NULL);
+
+ return offset;
+}
+
+
+
+
+static int
+cnf_dissect_sec_desc_buf_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ guint64 len;
+ e_ctx_hnd *polhnd = NULL;
+ dcerpc_call_value *dcv = NULL;
+ guint32 type=0;
+ struct access_mask_info *ami=NULL;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, di, drep,
+ hf_samr_sec_desc_buf_len, &len);
+
+ dcv = (dcerpc_call_value *)di->call_data;
+ if(dcv){
+ polhnd = dcv->pol;
+ }
+ if(polhnd){
+ dcerpc_fetch_polhnd_data(polhnd, NULL, &type, NULL, NULL,
+ pinfo->num);
+ }
+ switch(type){
+ case PIDL_POLHND_TYPE_SAMR_USER:
+ ami=&samr_user_access_mask_info;
+ break;
+ case PIDL_POLHND_TYPE_SAMR_CONNECT:
+ ami=&samr_connect_access_mask_info;
+ break;
+ case PIDL_POLHND_TYPE_SAMR_DOMAIN:
+ ami=&samr_domain_access_mask_info;
+ break;
+ case PIDL_POLHND_TYPE_SAMR_GROUP:
+ ami=&samr_group_access_mask_info;
+ break;
+ case PIDL_POLHND_TYPE_SAMR_ALIAS:
+ ami=&samr_alias_access_mask_info;
+ break;
+ }
+
+ dissect_nt_sec_desc(tvb, offset, pinfo, tree, drep, TRUE, (int)len, ami);
+
+ offset += (int)len;
+
+ return offset;
+}
+
+static int
+cnf_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ guint64 len;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, di, drep,
+ hf_samr_sec_desc_buf_len, &len);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep,
+ cnf_dissect_sec_desc_buf_, NDR_POINTER_UNIQUE,
+ "SAM SECURITY DESCRIPTOR data:", -1);
+
+ return offset;
+}
+
+
+
+static int
+cnf_dissect_dom_sid2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ offset = dissect_ndr_nt_SID(tvb, offset, pinfo, tree, di, drep);
+
+ return offset;
+}
+
+static int
+cnf_dissect_lsa_SidArray(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ offset = dissect_ndr_nt_PSID_ARRAY(tvb, offset, pinfo, tree, di, drep);
+
+ return offset;
+}
+
+
+static int
+cnf_dissect_samr_security_secinfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint8 *drep _U_)
+{
+ offset = dissect_nt_security_information(tvb, offset, tree);
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/samr/samr.idl b/epan/dissectors/pidl/samr/samr.idl
new file mode 100644
index 00000000..18e3d601
--- /dev/null
+++ b/epan/dissectors/pidl/samr/samr.idl
@@ -0,0 +1,1542 @@
+#include "idl_types.h"
+
+/*
+ samr interface definition
+*/
+/* import "misc.idl", "lsa.idl", "security.idl";*/
+
+/*
+ Thanks to Todd Sabin for some information from his samr.idl in acltools
+*/
+
+[ uuid("12345778-1234-abcd-ef00-0123456789ac"),
+ version(1.0),
+ endpoint("ncacn_np:[\\pipe\\samr]","ncacn_ip_tcp:", "ncalrpc:"),
+ pointer_default(unique)
+] interface samr
+{
+
+ typedef [public] struct {
+ uint32 count;
+ [size_is(count)] lsa_String *names;
+ } lsa_Strings;
+
+
+ typedef [v1_enum] enum {
+ SID_NAME_USE_NONE = 0,/* NOTUSED */
+ SID_NAME_USER = 1, /* user */
+ SID_NAME_DOM_GRP = 2, /* domain group */
+ SID_NAME_DOMAIN = 3, /* domain: don't know what this is */
+ SID_NAME_ALIAS = 4, /* local group */
+ SID_NAME_WKN_GRP = 5, /* well-known group */
+ SID_NAME_DELETED = 6, /* deleted account: needed for c2 rating */
+ SID_NAME_INVALID = 7, /* invalid account */
+ SID_NAME_UNKNOWN = 8, /* oops. */
+ SID_NAME_COMPUTER = 9 /* machine */
+ } lsa_SidType;
+
+ typedef [public,v1_enum] enum {
+ SAMR_REJECT_OTHER = 0,
+ SAMR_REJECT_TOO_SHORT = 1,
+ SAMR_REJECT_IN_HISTORY = 2,
+ SAMR_REJECT_COMPLEXITY = 5
+ } samr_RejectReason;
+
+
+
+ /* account control (acct_flags) bits */
+ typedef [public,bitmap32bit] bitmap {
+ ACB_DISABLED = 0x00000001, /* 1 = User account disabled */
+ ACB_HOMDIRREQ = 0x00000002, /* 1 = Home directory required */
+ ACB_PWNOTREQ = 0x00000004, /* 1 = User password not required */
+ ACB_TEMPDUP = 0x00000008, /* 1 = Temporary duplicate account */
+ ACB_NORMAL = 0x00000010, /* 1 = Normal user account */
+ ACB_MNS = 0x00000020, /* 1 = MNS logon user account */
+ ACB_DOMTRUST = 0x00000040, /* 1 = Interdomain trust account */
+ ACB_WSTRUST = 0x00000080, /* 1 = Workstation trust account */
+ ACB_SVRTRUST = 0x00000100, /* 1 = Server trust account */
+ ACB_PWNOEXP = 0x00000200, /* 1 = User password does not expire */
+ ACB_AUTOLOCK = 0x00000400, /* 1 = Account auto locked */
+ ACB_ENC_TXT_PWD_ALLOWED = 0x00000800, /* 1 = Encryped text password is allowed */
+ ACB_SMARTCARD_REQUIRED = 0x00001000, /* 1 = Smart Card required */
+ ACB_TRUSTED_FOR_DELEGATION = 0x00002000, /* 1 = Trusted for Delegation */
+ ACB_NOT_DELEGATED = 0x00004000, /* 1 = Not delegated */
+ ACB_USE_DES_KEY_ONLY = 0x00008000, /* 1 = Use DES key only */
+ ACB_DONT_REQUIRE_PREAUTH = 0x00010000, /* 1 = Preauth not required */
+ ACB_PW_EXPIRED = 0x00020000, /* 1 = Password Expired */
+ ACB_TRUST_AUTH_DELEGAT = 0x00040000, /* 1 = Trusted to authenticate for delegation */
+ ACB_NO_AUTH_DATA_REQD = 0x00080000 /* 1 = No authorization data required */
+ } samr_AcctFlags;
+
+ /* SAM server specific access rights */
+
+ typedef [bitmap32bit] bitmap {
+ SAMR_ACCESS_CONNECT_TO_SERVER = 0x00000001,
+ SAMR_ACCESS_SHUTDOWN_SERVER = 0x00000002,
+ SAMR_ACCESS_INITIALIZE_SERVER = 0x00000004,
+ SAMR_ACCESS_CREATE_DOMAIN = 0x00000008,
+ SAMR_ACCESS_ENUM_DOMAINS = 0x00000010,
+ SAMR_ACCESS_LOOKUP_DOMAIN = 0x00000020
+ } samr_ConnectAccessMask;
+
+ const int SAMR_ACCESS_ALL_ACCESS = 0x0000003F;
+
+ const int GENERIC_RIGHTS_SAM_ALL_ACCESS =
+ (STANDARD_RIGHTS_REQUIRED_ACCESS |
+ SAMR_ACCESS_ALL_ACCESS);
+
+ const int GENERIC_RIGHTS_SAM_READ =
+ (STANDARD_RIGHTS_READ_ACCESS |
+ SAMR_ACCESS_ENUM_DOMAINS);
+
+ const int GENERIC_RIGHTS_SAM_WRITE =
+ (STANDARD_RIGHTS_WRITE_ACCESS |
+ SAMR_ACCESS_CREATE_DOMAIN |
+ SAMR_ACCESS_INITIALIZE_SERVER |
+ SAMR_ACCESS_SHUTDOWN_SERVER);
+
+ const int GENERIC_RIGHTS_SAM_EXECUTE =
+ (STANDARD_RIGHTS_EXECUTE_ACCESS |
+ SAMR_ACCESS_LOOKUP_DOMAIN |
+ SAMR_ACCESS_CONNECT_TO_SERVER);
+
+ /* User Object specific access rights */
+
+ typedef [bitmap32bit] bitmap {
+ SAMR_USER_ACCESS_GET_NAME_ETC = 0x00000001,
+ SAMR_USER_ACCESS_GET_LOCALE = 0x00000002,
+ SAMR_USER_ACCESS_SET_LOC_COM = 0x00000004,
+ SAMR_USER_ACCESS_GET_LOGONINFO = 0x00000008,
+ SAMR_USER_ACCESS_GET_ATTRIBUTES = 0x00000010,
+ SAMR_USER_ACCESS_SET_ATTRIBUTES = 0x00000020,
+ SAMR_USER_ACCESS_CHANGE_PASSWORD = 0x00000040,
+ SAMR_USER_ACCESS_SET_PASSWORD = 0x00000080,
+ SAMR_USER_ACCESS_GET_GROUPS = 0x00000100,
+ SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP = 0x00000200,
+ SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP = 0x00000400
+ } samr_UserAccessMask;
+
+ typedef [bitmap32bit] bitmap {
+ SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 = 0x00000001,
+ SAMR_DOMAIN_ACCESS_SET_INFO_1 = 0x00000002,
+ SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 = 0x00000004,
+ SAMR_DOMAIN_ACCESS_SET_INFO_2 = 0x00000008,
+ SAMR_DOMAIN_ACCESS_CREATE_USER = 0x00000010,
+ SAMR_DOMAIN_ACCESS_CREATE_GROUP = 0x00000020,
+ SAMR_DOMAIN_ACCESS_CREATE_ALIAS = 0x00000040,
+ SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS = 0x00000080,
+ SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS = 0x00000100,
+ SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT = 0x00000200,
+ SAMR_DOMAIN_ACCESS_SET_INFO_3 = 0x00000400
+ } samr_DomainAccessMask;
+
+ typedef [bitmap32bit] bitmap {
+ SAMR_GROUP_ACCESS_LOOKUP_INFO = 0x00000001,
+ SAMR_GROUP_ACCESS_SET_INFO = 0x00000002,
+ SAMR_GROUP_ACCESS_ADD_MEMBER = 0x00000004,
+ SAMR_GROUP_ACCESS_REMOVE_MEMBER = 0x00000008,
+ SAMR_GROUP_ACCESS_GET_MEMBERS = 0x00000010
+ } samr_GroupAccessMask;
+ /* these bits are invalid and return ACCESS_DENIED */
+ const int SAMR_GROUP_ACCESS_MASK_INVALID = 0x0000ffe0;
+ /* generic access */
+ const int SAMR_GROUP_ACCESS_ALL_ACCESS = 0x000f001f;
+ const int SAMR_GROUP_ACCESS_ALL_READ = 0x00020010;
+ const int SAMR_GROUP_ACCESS_ALL_WRITE = 0x0002000e;
+ const int SAMR_GROUP_ACCESS_ALL_EXECUTE = 0x00020001;
+
+ typedef [bitmap32bit] bitmap {
+ SAMR_ALIAS_ACCESS_ADD_MEMBER = 0x00000001,
+ SAMR_ALIAS_ACCESS_REMOVE_MEMBER = 0x00000002,
+ SAMR_ALIAS_ACCESS_GET_MEMBERS = 0x00000004,
+ SAMR_ALIAS_ACCESS_LOOKUP_INFO = 0x00000008,
+ SAMR_ALIAS_ACCESS_SET_INFO = 0x00000010
+ } samr_AliasAccessMask;
+
+ /******************/
+ /* Function: 0x00 */
+ NTSTATUS samr_Connect (
+ /* notice the lack of [string] */
+ [in,unique] uint16 *system_name,
+ [in] samr_ConnectAccessMask access_mask,
+ [out,ref] policy_handle *connect_handle
+ );
+
+
+ /******************/
+ /* Function: 0x01 */
+ [public] NTSTATUS samr_Close (
+ [in,out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x02 */
+
+ NTSTATUS samr_SetSecurity (
+ [in,ref] policy_handle *handle,
+ [in] security_secinfo sec_info,
+ [in,ref] sec_desc_buf *sdbuf
+ );
+
+ /******************/
+ /* Function: 0x03 */
+
+ NTSTATUS samr_QuerySecurity (
+ [in,ref] policy_handle *handle,
+ [in] security_secinfo sec_info,
+ [out,ref] sec_desc_buf **sdbuf
+ );
+
+ /******************/
+ /* Function: 0x04 */
+
+ /*
+ shutdown the SAM - once you call this the SAM will be dead
+ */
+ NTSTATUS samr_Shutdown (
+ [in,ref] policy_handle *connect_handle
+ );
+
+ /******************/
+ /* Function: 0x05 */
+ NTSTATUS samr_LookupDomain (
+ [in,ref] policy_handle *connect_handle,
+ [in,ref] lsa_String *domain_name,
+ [out,ref] dom_sid2 **sid
+ );
+
+
+ /******************/
+ /* Function: 0x06 */
+
+ typedef struct {
+ uint32 idx;
+ lsa_String name;
+ } samr_SamEntry;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] samr_SamEntry *entries;
+ } samr_SamArray;
+
+ NTSTATUS samr_EnumDomains (
+ [in,ref] policy_handle *connect_handle,
+ [in,out,ref] uint32 *resume_handle,
+ [out,ref] samr_SamArray **sam,
+ [in] uint32 buf_size,
+ [out,ref] uint32 *num_entries
+ );
+
+
+ /************************/
+ /* Function 0x07 */
+ [public] NTSTATUS samr_OpenDomain(
+ [in,ref] policy_handle *connect_handle,
+ [in] samr_DomainAccessMask access_mask,
+ [in,ref] dom_sid2 *sid,
+ [out,ref] policy_handle *domain_handle
+ );
+
+ /************************/
+ /* Function 0x08 */
+
+ typedef enum {
+ DomainPasswordInformation = 1,
+ DomainGeneralInformation = 2,
+ DomainLogoffInformation = 3,
+ DomainOemInformation = 4,
+ DomainNameInformation = 5,
+ DomainReplicationInformation = 6,
+ DomainServerRoleInformation = 7,
+ DomainModifiedInformation = 8,
+ DomainStateInformation = 9,
+ DomainUasInformation = 10,
+ DomainGeneralInformation2 = 11,
+ DomainLockoutInformation = 12,
+ DomainModifiedInformation2 = 13
+ } samr_DomainInfoClass;
+
+ /* server roles */
+ typedef [v1_enum] enum {
+ SAMR_ROLE_STANDALONE = 0,
+ SAMR_ROLE_DOMAIN_MEMBER = 1,
+ SAMR_ROLE_DOMAIN_BDC = 2,
+ SAMR_ROLE_DOMAIN_PDC = 3
+ } samr_Role;
+
+ /* password properties flags */
+ typedef [public,bitmap32bit] bitmap {
+ DOMAIN_PASSWORD_COMPLEX = 0x00000001,
+ DOMAIN_PASSWORD_NO_ANON_CHANGE = 0x00000002,
+ DOMAIN_PASSWORD_NO_CLEAR_CHANGE = 0x00000004,
+ DOMAIN_PASSWORD_LOCKOUT_ADMINS = 0x00000008,
+ DOMAIN_PASSWORD_STORE_CLEARTEXT = 0x00000010,
+ DOMAIN_REFUSE_PASSWORD_CHANGE = 0x00000020
+ } samr_PasswordProperties;
+
+ typedef [v1_enum] enum {
+ DOMAIN_SERVER_ENABLED = 1,
+ DOMAIN_SERVER_DISABLED = 2
+ } samr_DomainServerState;
+
+ typedef struct {
+ uint16 min_password_length;
+ uint16 password_history_length;
+ samr_PasswordProperties password_properties;
+ /* yes, these are signed. They are in negative 100ns */
+ dlong max_password_age;
+ dlong min_password_age;
+ } samr_DomInfo1;
+
+ typedef struct {
+ NTTIME force_logoff_time;
+ lsa_String oem_information; /* comment */
+ lsa_String domain_name;
+ lsa_String primary; /* PDC name if this is a BDC */
+ udlong sequence_num;
+ samr_DomainServerState domain_server_state;
+ samr_Role role;
+ uint32 unknown3;
+ uint32 num_users;
+ uint32 num_groups;
+ uint32 num_aliases;
+ } samr_DomGeneralInformation;
+
+ typedef struct {
+ NTTIME force_logoff_time;
+ } samr_DomInfo3;
+
+ typedef struct {
+ lsa_String oem_information; /* comment */
+ } samr_DomOEMInformation;
+
+ typedef struct {
+ lsa_String domain_name;
+ } samr_DomInfo5;
+
+ typedef struct {
+ lsa_String primary;
+ } samr_DomInfo6;
+
+ typedef struct {
+ samr_Role role;
+ } samr_DomInfo7;
+
+ typedef struct {
+ hyper sequence_num;
+ NTTIME domain_create_time;
+ } samr_DomInfo8;
+
+ typedef struct {
+ samr_DomainServerState domain_server_state;
+ } samr_DomInfo9;
+
+ typedef struct {
+ samr_DomGeneralInformation general;
+ hyper lockout_duration;
+ hyper lockout_window;
+ uint16 lockout_threshold;
+ } samr_DomGeneralInformation2;
+
+ typedef struct {
+ hyper lockout_duration;
+ hyper lockout_window;
+ uint16 lockout_threshold;
+ } samr_DomInfo12;
+
+ typedef struct {
+ hyper sequence_num;
+ NTTIME domain_create_time;
+ hyper modified_count_at_last_promotion;
+ } samr_DomInfo13;
+
+ typedef [switch_type(uint16)] union {
+ [case(1)] samr_DomInfo1 info1;
+ [case(2)] samr_DomGeneralInformation general;
+ [case(3)] samr_DomInfo3 info3;
+ [case(4)] samr_DomOEMInformation oem;
+ [case(5)] samr_DomInfo5 info5;
+ [case(6)] samr_DomInfo6 info6;
+ [case(7)] samr_DomInfo7 info7;
+ [case(8)] samr_DomInfo8 info8;
+ [case(9)] samr_DomInfo9 info9;
+ [case(11)] samr_DomGeneralInformation2 general2;
+ [case(12)] samr_DomInfo12 info12;
+ [case(13)] samr_DomInfo13 info13;
+ } samr_DomainInfo;
+
+ NTSTATUS samr_QueryDomainInfo(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_DomainInfoClass level,
+ [out,ref,switch_is(level)] samr_DomainInfo **info
+ );
+
+ /************************/
+ /* Function 0x09 */
+ /*
+ only levels 1, 3, 4, 6, 7, 9, 12 are valid for this
+ call in w2k3
+ */
+ NTSTATUS samr_SetDomainInfo(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_DomainInfoClass level,
+ [in,switch_is(level),ref] samr_DomainInfo *info
+ );
+
+
+ /************************/
+ /* Function 0x0a */
+ NTSTATUS samr_CreateDomainGroup(
+ [in,ref] policy_handle *domain_handle,
+ [in,ref] lsa_String *name,
+ [in] samr_GroupAccessMask access_mask,
+ [out,ref] policy_handle *group_handle,
+ [out,ref] uint32 *rid
+ );
+
+
+ /************************/
+ /* Function 0x0b */
+ NTSTATUS samr_EnumDomainGroups(
+ [in] policy_handle *domain_handle,
+ [in,out,ref] uint32 *resume_handle,
+ [out,ref] samr_SamArray **sam,
+ [in] uint32 max_size,
+ [out,ref] uint32 *num_entries
+ );
+
+ /************************/
+ /* Function 0x0c */
+ NTSTATUS samr_CreateUser(
+ [in,ref] policy_handle *domain_handle,
+ [in,ref] lsa_String *account_name,
+ [in] samr_UserAccessMask access_mask,
+ [out,ref] policy_handle *user_handle,
+ [out,ref] uint32 *rid
+ );
+
+ /************************/
+ /* Function 0x0d */
+
+
+ /* w2k3 treats max_size as max_users*54 and sets the
+ resume_handle as the rid of the last user sent
+ */
+ const int SAMR_ENUM_USERS_MULTIPLIER = 54;
+
+ NTSTATUS samr_EnumDomainUsers(
+ [in] policy_handle *domain_handle,
+ [in,out,ref] uint32 *resume_handle,
+ [in] samr_AcctFlags acct_flags,
+ [out,ref] samr_SamArray **sam,
+ [in] uint32 max_size,
+ [out,ref] uint32 *num_entries
+ );
+
+ /************************/
+ /* Function 0x0e */
+ NTSTATUS samr_CreateDomAlias(
+ [in,ref] policy_handle *domain_handle,
+ [in,ref] lsa_String *alias_name,
+ [in] samr_AliasAccessMask access_mask,
+ [out,ref] policy_handle *alias_handle,
+ [out,ref] uint32 *rid
+ );
+
+ /************************/
+ /* Function 0x0f */
+ NTSTATUS samr_EnumDomainAliases(
+ [in] policy_handle *domain_handle,
+ [in,out,ref] uint32 *resume_handle,
+ [out,ref] samr_SamArray **sam,
+ [in] uint32 max_size,
+ [out,ref] uint32 *num_entries
+ );
+
+ /************************/
+ /* Function 0x10 */
+
+ typedef struct {
+ [range(0,1024)] uint32 count;
+ [size_is(count)] uint32 *ids;
+ } samr_Ids;
+
+ NTSTATUS samr_GetAliasMembership(
+ [in,ref] policy_handle *domain_handle,
+ [in,ref] lsa_SidArray *sids,
+ [out,ref] samr_Ids *rids
+ );
+
+ /************************/
+ /* Function 0x11 */
+
+ [public] NTSTATUS samr_LookupNames(
+ [in,ref] policy_handle *domain_handle,
+ [in,range(0,1000)] uint32 num_names,
+ [in,size_is(1000),length_is(num_names),ref] lsa_String *names,
+ [out,ref] samr_Ids *rids,
+ [out,ref] samr_Ids *types
+ );
+
+
+ /************************/
+ /* Function 0x12 */
+ NTSTATUS samr_LookupRids(
+ [in,ref] policy_handle *domain_handle,
+ [in,range(0,1000)] uint32 num_rids,
+ [in,size_is(1000),length_is(num_rids)] uint32 *rids,
+ [out,ref] lsa_Strings *names,
+ [out,ref] samr_Ids *types
+ );
+
+ /************************/
+ /* Function 0x13 */
+ NTSTATUS samr_OpenGroup(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_GroupAccessMask access_mask,
+ [in] uint32 rid,
+ [out,ref] policy_handle *group_handle
+ );
+
+ /* Group attributes */
+ typedef [public,bitmap32bit] bitmap {
+ SE_GROUP_MANDATORY = 0x00000001,
+ SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002,
+ SE_GROUP_ENABLED = 0x00000004,
+ SE_GROUP_OWNER = 0x00000008,
+ SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010,
+ SE_GROUP_RESOURCE = 0x20000000,
+ SE_GROUP_LOGON_ID = 0xC0000000
+ } samr_GroupAttrs;
+
+ /************************/
+ /* Function 0x14 */
+
+ typedef struct {
+ lsa_String name;
+ samr_GroupAttrs attributes;
+ uint32 num_members;
+ lsa_String description;
+ } samr_GroupInfoAll;
+
+ typedef struct {
+ samr_GroupAttrs attributes;
+ } samr_GroupInfoAttributes;
+
+ typedef struct {
+ lsa_String description;
+ } samr_GroupInfoDescription;
+
+ typedef enum {
+ GROUPINFOALL = 1,
+ GROUPINFONAME = 2,
+ GROUPINFOATTRIBUTES = 3,
+ GROUPINFODESCRIPTION = 4,
+ GROUPINFOALL2 = 5
+ } samr_GroupInfoEnum;
+
+ typedef [switch_type(samr_GroupInfoEnum)] union {
+ [case(GROUPINFOALL)] samr_GroupInfoAll all;
+ [case(GROUPINFONAME)] lsa_String name;
+ [case(GROUPINFOATTRIBUTES)] samr_GroupInfoAttributes attributes;
+ [case(GROUPINFODESCRIPTION)] lsa_String description;
+ [case(GROUPINFOALL2)] samr_GroupInfoAll all2;
+ } samr_GroupInfo;
+
+ NTSTATUS samr_QueryGroupInfo(
+ [in,ref] policy_handle *group_handle,
+ [in] samr_GroupInfoEnum level,
+ [out,ref,switch_is(level)] samr_GroupInfo **info
+ );
+
+ /************************/
+ /* Function 0x15 */
+ NTSTATUS samr_SetGroupInfo(
+ [in,ref] policy_handle *group_handle,
+ [in] samr_GroupInfoEnum level,
+ [in,switch_is(level),ref] samr_GroupInfo *info
+ );
+
+ /************************/
+ /* Function 0x16 */
+ NTSTATUS samr_AddGroupMember(
+ [in,ref] policy_handle *group_handle,
+ [in] uint32 rid,
+ [in] uint32 flags
+ );
+
+ /************************/
+ /* Function 0x17 */
+ NTSTATUS samr_DeleteDomainGroup(
+ [in,out,ref] policy_handle *group_handle
+ );
+
+ /************************/
+ /* Function 0x18 */
+ NTSTATUS samr_DeleteGroupMember(
+ [in,ref] policy_handle *group_handle,
+ [in] uint32 rid
+ );
+
+
+ /************************/
+ /* Function 0x19 */
+ typedef struct {
+ uint32 count;
+ [size_is(count)] uint32 *rids;
+ [size_is(count)] uint32 *types;
+ } samr_RidTypeArray;
+
+ NTSTATUS samr_QueryGroupMember(
+ [in,ref] policy_handle *group_handle,
+ [out,ref] samr_RidTypeArray **rids
+ );
+
+
+ /************************/
+ /* Function 0x1a */
+
+ /*
+ win2003 seems to accept any data at all for the two integers
+ below, and doesn't seem to do anything with them that I can
+ see. Weird. I really expected the first integer to be a rid
+ and the second to be the attributes for that rid member.
+ */
+ NTSTATUS samr_SetMemberAttributesOfGroup(
+ [in,ref] policy_handle *group_handle,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2
+ );
+
+
+ /************************/
+ /* Function 0x1b */
+ NTSTATUS samr_OpenAlias (
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_AliasAccessMask access_mask,
+ [in] uint32 rid,
+ [out,ref] policy_handle *alias_handle
+ );
+
+
+ /************************/
+ /* Function 0x1c */
+
+ typedef struct {
+ lsa_String name;
+ uint32 num_members;
+ lsa_String description;
+ } samr_AliasInfoAll;
+
+ typedef enum {
+ ALIASINFOALL = 1,
+ ALIASINFONAME = 2,
+ ALIASINFODESCRIPTION = 3
+ } samr_AliasInfoEnum;
+
+ typedef [switch_type(samr_AliasInfoEnum)] union {
+ [case(ALIASINFOALL)] samr_AliasInfoAll all;
+ [case(ALIASINFONAME)] lsa_String name;
+ [case(ALIASINFODESCRIPTION)] lsa_String description;
+ } samr_AliasInfo;
+
+ NTSTATUS samr_QueryAliasInfo(
+ [in,ref] policy_handle *alias_handle,
+ [in] samr_AliasInfoEnum level,
+ [out,ref,switch_is(level)] samr_AliasInfo **info
+ );
+
+ /************************/
+ /* Function 0x1d */
+ NTSTATUS samr_SetAliasInfo(
+ [in,ref] policy_handle *alias_handle,
+ [in] samr_AliasInfoEnum level,
+ [in,switch_is(level),ref] samr_AliasInfo *info
+ );
+
+ /************************/
+ /* Function 0x1e */
+ NTSTATUS samr_DeleteDomAlias(
+ [in,out,ref] policy_handle *alias_handle
+ );
+
+ /************************/
+ /* Function 0x1f */
+ NTSTATUS samr_AddAliasMember(
+ [in,ref] policy_handle *alias_handle,
+ [in,ref] dom_sid2 *sid
+ );
+
+ /************************/
+ /* Function 0x20 */
+ NTSTATUS samr_DeleteAliasMember(
+ [in,ref] policy_handle *alias_handle,
+ [in,ref] dom_sid2 *sid
+ );
+
+ /************************/
+ /* Function 0x21 */
+ NTSTATUS samr_GetMembersInAlias(
+ [in,ref] policy_handle *alias_handle,
+ [out,ref] lsa_SidArray *sids
+ );
+
+ /************************/
+ /* Function 0x22 */
+ [public] NTSTATUS samr_OpenUser(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_UserAccessMask access_mask,
+ [in] uint32 rid,
+ [out,ref] policy_handle *user_handle
+ );
+
+ /************************/
+ /* Function 0x23 */
+ NTSTATUS samr_DeleteUser(
+ [in,out,ref] policy_handle *user_handle
+ );
+
+ /************************/
+ /* Function 0x24 */
+
+ typedef enum {
+ UserGeneralInformation = 1,
+ UserPreferencesInformation = 2,
+ UserLogonInformation = 3,
+ UserLogonHoursInformation = 4,
+ UserAccountInformation = 5,
+ UserNameInformation = 6,
+ UserAccountNameInformation = 7,
+ UserFullNameInformation = 8,
+ UserPrimaryGroupInformation = 9,
+ UserHomeInformation = 10,
+ UserScriptInformation = 11,
+ UserProfileInformation = 12,
+ UserAdminCommentInformation = 13,
+ UserWorkStationsInformation = 14,
+ UserControlInformation = 16,
+ UserExpiresInformation = 17,
+ UserInternal1Information = 18,
+ UserParametersInformation = 20,
+ UserAllInformation = 21,
+ UserInternal4Information = 23,
+ UserInternal5Information = 24,
+ UserInternal4InformationNew = 25,
+ UserInternal5InformationNew = 26
+ } samr_UserInfoLevel;
+
+ typedef struct {
+ lsa_String account_name;
+ lsa_String full_name;
+ uint32 primary_gid;
+ lsa_String description;
+ lsa_String comment;
+ } samr_UserInfo1;
+
+ typedef struct {
+ lsa_String comment;
+ lsa_String unknown; /* settable, but doesn't stick. probably obsolete */
+ uint16 country_code;
+ uint16 code_page;
+ } samr_UserInfo2;
+
+ /* this is also used in samr and netlogon */
+ typedef [public, flag(NDR_PAHEX)] struct {
+ uint16 units_per_week;
+ [size_is(1260), length_is(units_per_week/8)] uint8 *bits;
+ } samr_LogonHours;
+
+ typedef struct {
+ lsa_String account_name;
+ lsa_String full_name;
+ uint32 rid;
+ uint32 primary_gid;
+ lsa_String home_directory;
+ lsa_String home_drive;
+ lsa_String logon_script;
+ lsa_String profile_path;
+ lsa_String workstations;
+ NTTIME last_logon;
+ NTTIME last_logoff;
+ NTTIME last_password_change;
+ NTTIME allow_password_change;
+ NTTIME force_password_change;
+ samr_LogonHours logon_hours;
+ uint16 bad_password_count;
+ uint16 logon_count;
+ samr_AcctFlags acct_flags;
+ } samr_UserInfo3;
+
+ typedef struct {
+ samr_LogonHours logon_hours;
+ } samr_UserInfo4;
+
+ typedef struct {
+ lsa_String account_name;
+ lsa_String full_name;
+ uint32 rid;
+ uint32 primary_gid;
+ lsa_String home_directory;
+ lsa_String home_drive;
+ lsa_String logon_script;
+ lsa_String profile_path;
+ lsa_String description;
+ lsa_String workstations;
+ NTTIME last_logon;
+ NTTIME last_logoff;
+ samr_LogonHours logon_hours;
+ uint16 bad_password_count;
+ uint16 logon_count;
+ NTTIME last_password_change;
+ NTTIME acct_expiry;
+ samr_AcctFlags acct_flags;
+ } samr_UserInfo5;
+
+ typedef struct {
+ lsa_String account_name;
+ lsa_String full_name;
+ } samr_UserInfo6;
+
+ typedef struct {
+ lsa_String account_name;
+ } samr_UserInfo7;
+
+ typedef struct {
+ lsa_String full_name;
+ } samr_UserInfo8;
+
+ typedef struct {
+ uint32 primary_gid;
+ } samr_UserInfo9;
+
+ typedef struct {
+ lsa_String home_directory;
+ lsa_String home_drive;
+ } samr_UserInfo10;
+
+ typedef struct {
+ lsa_String logon_script;
+ } samr_UserInfo11;
+
+ typedef struct {
+ lsa_String profile_path;
+ } samr_UserInfo12;
+
+ typedef struct {
+ lsa_String description;
+ } samr_UserInfo13;
+
+ typedef struct {
+ lsa_String workstations;
+ } samr_UserInfo14;
+
+ typedef struct {
+ samr_AcctFlags acct_flags;
+ } samr_UserInfo16;
+
+ typedef struct {
+ NTTIME acct_expiry;
+ } samr_UserInfo17;
+
+ typedef [public, flag(NDR_PAHEX)] struct {
+ uint8 hash[16];
+ } samr_Password;
+
+ typedef struct {
+ samr_Password nt_pwd;
+ samr_Password lm_pwd;
+ boolean8 nt_pwd_active;
+ boolean8 lm_pwd_active;
+ uint8 password_expired;
+ } samr_UserInfo18;
+
+ typedef struct {
+ lsa_String parameters;
+ } samr_UserInfo20;
+
+ /* this defines the bits used for fields_present in info21 */
+ typedef [bitmap32bit] bitmap {
+ SAMR_FIELD_ACCOUNT_NAME = 0x00000001,
+ SAMR_FIELD_FULL_NAME = 0x00000002,
+ SAMR_FIELD_RID = 0x00000004,
+ SAMR_FIELD_PRIMARY_GID = 0x00000008,
+ SAMR_FIELD_DESCRIPTION = 0x00000010,
+ SAMR_FIELD_COMMENT = 0x00000020,
+ SAMR_FIELD_HOME_DIRECTORY = 0x00000040,
+ SAMR_FIELD_HOME_DRIVE = 0x00000080,
+ SAMR_FIELD_LOGON_SCRIPT = 0x00000100,
+ SAMR_FIELD_PROFILE_PATH = 0x00000200,
+ SAMR_FIELD_WORKSTATIONS = 0x00000400,
+ SAMR_FIELD_LAST_LOGON = 0x00000800,
+ SAMR_FIELD_LAST_LOGOFF = 0x00001000,
+ SAMR_FIELD_LOGON_HOURS = 0x00002000,
+ SAMR_FIELD_BAD_PWD_COUNT = 0x00004000,
+ SAMR_FIELD_NUM_LOGONS = 0x00008000,
+ SAMR_FIELD_ALLOW_PWD_CHANGE = 0x00010000,
+ SAMR_FIELD_FORCE_PWD_CHANGE = 0x00020000,
+ SAMR_FIELD_LAST_PWD_CHANGE = 0x00040000,
+ SAMR_FIELD_ACCT_EXPIRY = 0x00080000,
+ SAMR_FIELD_ACCT_FLAGS = 0x00100000,
+ SAMR_FIELD_PARAMETERS = 0x00200000,
+ SAMR_FIELD_COUNTRY_CODE = 0x00400000,
+ SAMR_FIELD_CODE_PAGE = 0x00800000,
+ SAMR_FIELD_NT_PASSWORD_PRESENT = 0x01000000, /* either of these */
+ SAMR_FIELD_LM_PASSWORD_PRESENT = 0x02000000, /* two bits seems to work */
+ SAMR_FIELD_PRIVATE_DATA = 0x04000000,
+ SAMR_FIELD_EXPIRED_FLAG = 0x08000000,
+ SAMR_FIELD_SEC_DESC = 0x10000000,
+ SAMR_FIELD_OWF_PWD = 0x20000000
+ } samr_FieldsPresent;
+
+ /* used for 'password_expired' in samr_UserInfo21 */
+ const int PASS_MUST_CHANGE_AT_NEXT_LOGON = 0x01;
+ const int PASS_DONT_CHANGE_AT_NEXT_LOGON = 0x00;
+
+ typedef struct {
+ NTTIME last_logon;
+ NTTIME last_logoff;
+ NTTIME last_password_change;
+ NTTIME acct_expiry;
+ NTTIME allow_password_change;
+ NTTIME force_password_change;
+ lsa_String account_name;
+ lsa_String full_name;
+ lsa_String home_directory;
+ lsa_String home_drive;
+ lsa_String logon_script;
+ lsa_String profile_path;
+ lsa_String description;
+ lsa_String workstations;
+ lsa_String comment;
+ lsa_String parameters;
+ lsa_String lm_password;
+ lsa_String nt_password;
+ lsa_String private;
+ uint32 buf_count;
+ [size_is(buf_count)] uint8 *buffer;
+ uint32 rid;
+ uint32 primary_gid;
+ samr_AcctFlags acct_flags;
+ samr_FieldsPresent fields_present;
+ samr_LogonHours logon_hours;
+ uint16 bad_password_count;
+ uint16 logon_count;
+ uint16 country_code;
+ uint16 code_page;
+ uint8 lm_password_set;
+ uint8 nt_password_set;
+ uint8 password_expired;
+ uint8 unknown4;
+ } samr_UserInfo21;
+
+ typedef [public, flag(NDR_PAHEX)] struct {
+ uint8 data[516];
+ } samr_CryptPassword;
+
+ typedef struct {
+ samr_UserInfo21 info;
+ samr_CryptPassword password;
+ } samr_UserInfo23;
+
+ typedef struct {
+ samr_CryptPassword password;
+ uint8 password_expired;
+ } samr_UserInfo24;
+
+ typedef [flag(NDR_PAHEX)] struct {
+ uint8 data[532];
+ } samr_CryptPasswordEx;
+
+ typedef struct {
+ samr_UserInfo21 info;
+ samr_CryptPasswordEx password;
+ } samr_UserInfo25;
+
+ typedef struct {
+ samr_CryptPasswordEx password;
+ uint8 password_expired;
+ } samr_UserInfo26;
+
+ typedef [switch_type(uint16)] union {
+ [case(1)] samr_UserInfo1 info1;
+ [case(2)] samr_UserInfo2 info2;
+ [case(3)] samr_UserInfo3 info3;
+ [case(4)] samr_UserInfo4 info4;
+ [case(5)] samr_UserInfo5 info5;
+ [case(6)] samr_UserInfo6 info6;
+ [case(7)] samr_UserInfo7 info7;
+ [case(8)] samr_UserInfo8 info8;
+ [case(9)] samr_UserInfo9 info9;
+ [case(10)] samr_UserInfo10 info10;
+ [case(11)] samr_UserInfo11 info11;
+ [case(12)] samr_UserInfo12 info12;
+ [case(13)] samr_UserInfo13 info13;
+ [case(14)] samr_UserInfo14 info14;
+ [case(16)] samr_UserInfo16 info16;
+ [case(17)] samr_UserInfo17 info17;
+ [case(18)] samr_UserInfo18 info18;
+ [case(20)] samr_UserInfo20 info20;
+ [case(21)] samr_UserInfo21 info21;
+ [case(23)] samr_UserInfo23 info23;
+ [case(24)] samr_UserInfo24 info24;
+ [case(25)] samr_UserInfo25 info25;
+ [case(26)] samr_UserInfo26 info26;
+ } samr_UserInfo;
+
+ [public] NTSTATUS samr_QueryUserInfo(
+ [in,ref] policy_handle *user_handle,
+ [in] samr_UserInfoLevel level,
+ [out,ref,switch_is(level)] samr_UserInfo **info
+ );
+
+
+ /************************/
+ /* Function 0x25 */
+ [public] NTSTATUS samr_SetUserInfo(
+ [in,ref] policy_handle *user_handle,
+ [in] samr_UserInfoLevel level,
+ [in,ref,switch_is(level)] samr_UserInfo *info
+ );
+
+ /************************/
+ /* Function 0x26 */
+ /*
+ this is a password change interface that doesn't give
+ the server the plaintext password. Depricated.
+ */
+ NTSTATUS samr_ChangePasswordUser(
+ [in,ref] policy_handle *user_handle,
+ [in] boolean8 lm_present,
+ [in,unique] samr_Password *old_lm_crypted,
+ [in,unique] samr_Password *new_lm_crypted,
+ [in] boolean8 nt_present,
+ [in,unique] samr_Password *old_nt_crypted,
+ [in,unique] samr_Password *new_nt_crypted,
+ [in] boolean8 cross1_present,
+ [in,unique] samr_Password *nt_cross,
+ [in] boolean8 cross2_present,
+ [in,unique] samr_Password *lm_cross
+ );
+
+ /************************/
+ /* Function 0x27 */
+
+ typedef [public] struct {
+ uint32 rid;
+ samr_GroupAttrs attributes;
+ } samr_RidWithAttribute;
+
+ typedef [public] struct {
+ uint32 count;
+ [size_is(count)] samr_RidWithAttribute *rids;
+ } samr_RidWithAttributeArray;
+
+ NTSTATUS samr_GetGroupsForUser(
+ [in,ref] policy_handle *user_handle,
+ [out,ref] samr_RidWithAttributeArray **rids
+ );
+
+ /************************/
+ /* Function 0x28 */
+
+ typedef struct {
+ uint32 idx;
+ uint32 rid;
+ samr_AcctFlags acct_flags;
+ lsa_String account_name;
+ lsa_String description;
+ lsa_String full_name;
+ } samr_DispEntryGeneral;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] samr_DispEntryGeneral *entries;
+ } samr_DispInfoGeneral;
+
+ typedef struct {
+ uint32 idx;
+ uint32 rid;
+ samr_AcctFlags acct_flags;
+ lsa_String account_name;
+ lsa_String description;
+ } samr_DispEntryFull;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] samr_DispEntryFull *entries;
+ } samr_DispInfoFull;
+
+ typedef struct {
+ uint32 idx;
+ uint32 rid;
+ samr_GroupAttrs acct_flags;
+ lsa_String account_name;
+ lsa_String description;
+ } samr_DispEntryFullGroup;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] samr_DispEntryFullGroup *entries;
+ } samr_DispInfoFullGroups;
+
+ typedef struct {
+ uint32 idx;
+ lsa_AsciiStringLarge account_name;
+ } samr_DispEntryAscii;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] samr_DispEntryAscii *entries;
+ } samr_DispInfoAscii;
+
+ typedef enum {
+ SAMR_DOMAIN_DISPLAY_USER = 1,
+ SAMR_DOMAIN_DISPLAY_MACHINE = 2,
+ SAMR_DOMAIN_DISPLAY_GROUP = 3,
+ SAMR_DOMAIN_DISPLAY_OEM_USER = 4,
+ SAMR_DOMAIN_DISPLAY_OEM_GROUP = 5
+ } samr_DomainDisplayInformation;
+
+ typedef [switch_type(uint16)] union {
+ [case(SAMR_DOMAIN_DISPLAY_USER)] samr_DispInfoGeneral info1;/* users */
+ [case(SAMR_DOMAIN_DISPLAY_MACHINE)] samr_DispInfoFull info2; /* trust accounts? */
+ [case(SAMR_DOMAIN_DISPLAY_GROUP)] samr_DispInfoFullGroups info3; /* groups */
+ [case(SAMR_DOMAIN_DISPLAY_OEM_USER)] samr_DispInfoAscii info4; /* users */
+ [case(SAMR_DOMAIN_DISPLAY_OEM_GROUP)] samr_DispInfoAscii info5; /* groups */
+ } samr_DispInfo;
+
+ NTSTATUS samr_QueryDisplayInfo(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_DomainDisplayInformation level,
+ [in] uint32 start_idx,
+ [in] uint32 max_entries,
+ [in] uint32 buf_size,
+ [out,ref] uint32 *total_size,
+ [out,ref] uint32 *returned_size,
+ [out,ref,switch_is(level)] samr_DispInfo *info
+ );
+
+
+ /************************/
+ /* Function 0x29 */
+
+ /*
+ this seems to be an alphabetic search function. The returned index
+ is the index for samr_QueryDisplayInfo needed to get names occurring
+ after the specified name. The supplied name does not need to exist
+ in the database (for example you can supply just a first letter for
+ searching starting at that letter)
+
+ The level corresponds to the samr_QueryDisplayInfo level
+ */
+ NTSTATUS samr_GetDisplayEnumerationIndex(
+ [in,ref] policy_handle *domain_handle,
+ [in] uint16 level,
+ [in,ref] lsa_String *name,
+ [out,ref] uint32 *idx
+ );
+
+
+
+ /************************/
+ /* Function 0x2a */
+
+ /*
+ w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this
+ */
+ NTSTATUS samr_TestPrivateFunctionsDomain(
+ [in,ref] policy_handle *domain_handle
+ );
+
+
+ /************************/
+ /* Function 0x2b */
+
+ /*
+ w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this
+ */
+ NTSTATUS samr_TestPrivateFunctionsUser(
+ [in,ref] policy_handle *user_handle
+ );
+
+
+ /************************/
+ /* Function 0x2c */
+
+ typedef struct {
+ uint16 min_password_length;
+ samr_PasswordProperties password_properties;
+ } samr_PwInfo;
+
+ [public] NTSTATUS samr_GetUserPwInfo(
+ [in,ref] policy_handle *user_handle,
+ [out,ref] samr_PwInfo *info
+ );
+
+ /************************/
+ /* Function 0x2d */
+ NTSTATUS samr_RemoveMemberFromForeignDomain(
+ [in,ref] policy_handle *domain_handle,
+ [in,ref] dom_sid2 *sid
+ );
+
+ /************************/
+ /* Function 0x2e */
+
+ /*
+ how is this different from QueryDomainInfo ??
+ */
+ NTSTATUS samr_QueryDomainInfo2(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_DomainInfoClass level,
+ [out,ref,switch_is(level)] samr_DomainInfo **info
+ );
+
+ /************************/
+ /* Function 0x2f */
+
+ /*
+ how is this different from QueryUserInfo ??
+ */
+ NTSTATUS samr_QueryUserInfo2(
+ [in,ref] policy_handle *user_handle,
+ [in] samr_UserInfoLevel level,
+ [out,ref,switch_is(level)] samr_UserInfo **info
+ );
+
+ /************************/
+ /* Function 0x30 */
+
+ /*
+ how is this different from QueryDisplayInfo??
+ */
+ NTSTATUS samr_QueryDisplayInfo2(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_DomainDisplayInformation level,
+ [in] uint32 start_idx,
+ [in] uint32 max_entries,
+ [in] uint32 buf_size,
+ [out,ref] uint32 *total_size,
+ [out,ref] uint32 *returned_size,
+ [out,ref,switch_is(level)] samr_DispInfo *info
+ );
+
+ /************************/
+ /* Function 0x31 */
+
+ /*
+ how is this different from GetDisplayEnumerationIndex ??
+ */
+ NTSTATUS samr_GetDisplayEnumerationIndex2(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_DomainDisplayInformation level,
+ [in,ref] lsa_String *name,
+ [out,ref] uint32 *idx
+ );
+
+
+ /************************/
+ /* Function 0x32 */
+ NTSTATUS samr_CreateUser2(
+ [in,ref] policy_handle *domain_handle,
+ [in,ref] lsa_String *account_name,
+ [in] samr_AcctFlags acct_flags,
+ [in] samr_UserAccessMask access_mask,
+ [out,ref] policy_handle *user_handle,
+ [out,ref] uint32 *access_granted,
+ [out,ref] uint32 *rid
+ );
+
+
+ /************************/
+ /* Function 0x33 */
+
+ /*
+ another duplicate. There must be a reason ....
+ */
+ NTSTATUS samr_QueryDisplayInfo3(
+ [in,ref] policy_handle *domain_handle,
+ [in] samr_DomainDisplayInformation level,
+ [in] uint32 start_idx,
+ [in] uint32 max_entries,
+ [in] uint32 buf_size,
+ [out,ref] uint32 *total_size,
+ [out,ref] uint32 *returned_size,
+ [out,ref,switch_is(level)] samr_DispInfo *info
+ );
+
+ /************************/
+ /* Function 0x34 */
+ NTSTATUS samr_AddMultipleMembersToAlias(
+ [in,ref] policy_handle *alias_handle,
+ [in,ref] lsa_SidArray *sids
+ );
+
+ /************************/
+ /* Function 0x35 */
+ NTSTATUS samr_RemoveMultipleMembersFromAlias(
+ [in,ref] policy_handle *alias_handle,
+ [in,ref] lsa_SidArray *sids
+ );
+
+ /************************/
+ /* Function 0x36 */
+
+ NTSTATUS samr_OemChangePasswordUser2(
+ [in,unique] lsa_AsciiString *server,
+ [in,ref] lsa_AsciiString *account,
+ [in,unique] samr_CryptPassword *password,
+ [in,unique] samr_Password *hash
+ );
+
+ /************************/
+ /* Function 0x37 */
+ NTSTATUS samr_ChangePasswordUser2(
+ [in,unique] lsa_String *server,
+ [in,ref] lsa_String *account,
+ [in,unique] samr_CryptPassword *nt_password,
+ [in,unique] samr_Password *nt_verifier,
+ [in] boolean8 lm_change,
+ [in,unique] samr_CryptPassword *lm_password,
+ [in,unique] samr_Password *lm_verifier
+ );
+
+ /************************/
+ /* Function 0x38 */
+ NTSTATUS samr_GetDomPwInfo(
+ [in,unique] lsa_String *domain_name,
+ [out,ref] samr_PwInfo *info
+ );
+
+ /************************/
+ /* Function 0x39 */
+ NTSTATUS samr_Connect2(
+ [in,unique,string,charset(UTF16)] uint16 *system_name,
+ [in] samr_ConnectAccessMask access_mask,
+ [out,ref] policy_handle *connect_handle
+ );
+
+ /************************/
+ /* Function 0x3a */
+ /*
+ seems to be an exact alias for samr_SetUserInfo()
+ */
+ [public] NTSTATUS samr_SetUserInfo2(
+ [in,ref] policy_handle *user_handle,
+ [in] samr_UserInfoLevel level,
+ [in,ref,switch_is(level)] samr_UserInfo *info
+ );
+
+ /************************/
+ /* Function 0x3b */
+ /*
+ this one is mysterious. I have a few guesses, but nothing working yet
+ */
+ NTSTATUS samr_SetBootKeyInformation(
+ [in,ref] policy_handle *connect_handle,
+ [in] uint32 unknown1,
+ [in] uint32 unknown2,
+ [in] uint32 unknown3
+ );
+
+ /************************/
+ /* Function 0x3c */
+ NTSTATUS samr_GetBootKeyInformation(
+ [in,ref] policy_handle *domain_handle,
+ [out,ref] uint32 *unknown
+ );
+
+ /************************/
+ /* Function 0x3d */
+ NTSTATUS samr_Connect3(
+ [in,unique,string,charset(UTF16)] uint16 *system_name,
+ /* this unknown value seems to be completely ignored by w2k3 */
+ [in] uint32 unknown,
+ [in] samr_ConnectAccessMask access_mask,
+ [out,ref] policy_handle *connect_handle
+ );
+
+ /************************/
+ /* Function 0x3e */
+
+ typedef [v1_enum] enum {
+ SAMR_CONNECT_PRE_W2K = 1,
+ SAMR_CONNECT_W2K = 2,
+ SAMR_CONNECT_AFTER_W2K = 3
+ } samr_ConnectVersion;
+
+ NTSTATUS samr_Connect4(
+ [in,unique,string,charset(UTF16)] uint16 *system_name,
+ [in] samr_ConnectVersion client_version,
+ [in] samr_ConnectAccessMask access_mask,
+ [out,ref] policy_handle *connect_handle
+ );
+
+ /************************/
+ /* Function 0x3f */
+
+ typedef struct {
+ samr_RejectReason reason;
+ uint32 unknown1;
+ uint32 unknown2;
+ } samr_ChangeReject;
+
+ NTSTATUS samr_ChangePasswordUser3(
+ [in,unique] lsa_String *server,
+ [in,ref] lsa_String *account,
+ [in,unique] samr_CryptPassword *nt_password,
+ [in,unique] samr_Password *nt_verifier,
+ [in] boolean8 lm_change,
+ [in,unique] samr_CryptPassword *lm_password,
+ [in,unique] samr_Password *lm_verifier,
+ [in,unique] samr_CryptPassword *password3,
+ [out,ref] samr_DomInfo1 **dominfo,
+ [out,ref] samr_ChangeReject **reject
+ );
+
+ /************************/
+ /* Function 0x40 */
+
+ typedef struct {
+ samr_ConnectVersion client_version; /* w2k3 gives 3 */
+ uint32 unknown2; /* w2k3 gives 0 */
+ } samr_ConnectInfo1;
+
+ typedef union {
+ [case(1)] samr_ConnectInfo1 info1;
+ } samr_ConnectInfo;
+
+ [public] NTSTATUS samr_Connect5(
+ [in,unique,string,charset(UTF16)] uint16 *system_name,
+ [in] samr_ConnectAccessMask access_mask,
+ [in] uint32 level_in,
+ [in,ref,switch_is(level_in)] samr_ConnectInfo *info_in,
+ [out,ref] uint32 *level_out,
+ [out,ref,switch_is(*level_out)] samr_ConnectInfo *info_out,
+ [out,ref] policy_handle *connect_handle
+ );
+
+ /************************/
+ /* Function 0x41 */
+ NTSTATUS samr_RidToSid(
+ [in,ref] policy_handle *domain_handle,
+ [in] uint32 rid,
+ [out,ref] dom_sid2 **sid
+ );
+
+ /************************/
+ /* Function 0x42 */
+
+ /*
+ this should set the DSRM password for the server, which is used
+ when booting into Directory Services Recovery Mode on a DC. Win2003
+ gives me NT_STATUS_NOT_SUPPORTED
+ */
+
+ NTSTATUS samr_SetDsrmPassword(
+ [in,unique] lsa_String *name,
+ [in] uint32 unknown,
+ [in,unique] samr_Password *hash
+ );
+
+
+ /************************/
+ /* Function 0x43 */
+ /************************/
+ typedef [bitmap32bit] bitmap {
+ SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET = 0x00000001,
+ SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME = 0x00000002,
+ SAMR_VALIDATE_FIELD_LOCKOUT_TIME = 0x00000004,
+ SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT = 0x00000008,
+ SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH = 0x00000010,
+ SAMR_VALIDATE_FIELD_PASSWORD_HISTORY = 0x00000020
+ } samr_ValidateFieldsPresent;
+
+ typedef enum {
+ NetValidateAuthentication = 1,
+ NetValidatePasswordChange= 2,
+ NetValidatePasswordReset = 3
+ } samr_ValidatePasswordLevel;
+
+ /* NetApi maps samr_ValidationStatus errors to WERRORs. Haven't
+ * identified the mapping of
+ * - NERR_PasswordFilterError
+ * - NERR_PasswordExpired and
+ * - NERR_PasswordCantChange
+ * yet - Guenther
+ */
+
+ typedef enum {
+ SAMR_VALIDATION_STATUS_SUCCESS = 0,
+ SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE = 1,
+ SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT = 2,
+ SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED = 3,
+ SAMR_VALIDATION_STATUS_BAD_PASSWORD = 4,
+ SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT = 5,
+ SAMR_VALIDATION_STATUS_PWD_TOO_SHORT = 6,
+ SAMR_VALIDATION_STATUS_PWD_TOO_LONG = 7,
+ SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH = 8,
+ SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT = 9,
+ SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR = 10
+ } samr_ValidationStatus;
+
+ typedef struct {
+ uint32 length;
+ [size_is(length)] uint8 *data;
+ } samr_ValidationBlob;
+
+ typedef struct {
+ samr_ValidateFieldsPresent fields_present;
+ NTTIME_hyper last_password_change;
+ NTTIME_hyper bad_password_time;
+ NTTIME_hyper lockout_time;
+ uint32 bad_pwd_count;
+ uint32 pwd_history_len;
+ [size_is(pwd_history_len)] samr_ValidationBlob *pwd_history;
+ } samr_ValidatePasswordInfo;
+
+ typedef struct {
+ samr_ValidatePasswordInfo info;
+ samr_ValidationStatus status;
+ } samr_ValidatePasswordRepCtr;
+
+ typedef [switch_type(uint16)] union {
+ [case(1)] samr_ValidatePasswordRepCtr ctr1;
+ [case(2)] samr_ValidatePasswordRepCtr ctr2;
+ [case(3)] samr_ValidatePasswordRepCtr ctr3;
+ } samr_ValidatePasswordRep;
+
+ typedef struct {
+ samr_ValidatePasswordInfo info;
+ lsa_StringLarge password;
+ lsa_StringLarge account;
+ samr_ValidationBlob hash;
+ boolean8 pwd_must_change_at_next_logon;
+ boolean8 clear_lockout;
+ } samr_ValidatePasswordReq3;
+
+ typedef struct {
+ samr_ValidatePasswordInfo info;
+ lsa_StringLarge password;
+ lsa_StringLarge account;
+ samr_ValidationBlob hash;
+ boolean8 password_matched;
+ } samr_ValidatePasswordReq2;
+
+ typedef struct {
+ samr_ValidatePasswordInfo info;
+ boolean8 password_matched;
+ } samr_ValidatePasswordReq1;
+
+ typedef [switch_type(uint16)] union {
+ [case(1)] samr_ValidatePasswordReq1 req1;
+ [case(2)] samr_ValidatePasswordReq2 req2;
+ [case(3)] samr_ValidatePasswordReq3 req3;
+ } samr_ValidatePasswordReq;
+
+ NTSTATUS samr_ValidatePassword(
+ [in] samr_ValidatePasswordLevel level,
+ [in,switch_is(level)] samr_ValidatePasswordReq *req,
+ [out,ref,switch_is(level)] samr_ValidatePasswordRep **rep
+ );
+}
diff --git a/epan/dissectors/pidl/srvsvc/srvsvc.cnf b/epan/dissectors/pidl/srvsvc/srvsvc.cnf
new file mode 100644
index 00000000..0b0333d4
--- /dev/null
+++ b/epan/dissectors/pidl/srvsvc/srvsvc.cnf
@@ -0,0 +1,151 @@
+# conformance file for SRVSVC
+#
+
+MANUAL srvsvc_dissect_element_NetShareInfo_info1501_
+MANUAL srvsvc_dissect_element_NetGetFileSecurity_sd_buf_
+MANUAL srvsvc_dissect_element_NetSetFileSecurity_sd_buf
+MANUAL srvsvc_dissect_element_NetShareCtr1501_array__
+MANUAL srvsvc_dissect_element_NetShareInfo502_sd_
+NOEMIT srvsvc_dissect_element_NetShareInfo502_sd__
+# we wont need to manually define servertype once svcctl is autogenerated
+MANUAL srvsvc_dissect_element_NetSrvInfo101_server_type
+MANUAL srvsvc_dissect_element_NetSrvInfo102_server_type
+# until we get secinfo
+MANUAL srvsvc_dissect_element_NetGetFileSecurity_securityinformation
+MANUAL srvsvc_dissect_element_NetSetFileSecurity_securityinformation
+MANUAL srvsvc_dissect_element_NetShareInfo502_sd_buf
+MANUAL srvsvc_dissect_element_NetShareInfoCtr_ctr
+NOEMIT srvsvc_dissect_element_NetGetFileSecurity_sd_buf__
+NOEMIT srvsvc_dissect_element_NetSetFileSecurity_sd_buf_
+
+HF_FIELD hf_srvsvc_sec_desc_buf_len "Sec Desc Buf Len" "srvsvc.sec_desc_buf_len" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+
+#
+#
+# Prettifications
+PARAM_VALUE srvsvc_dissect_element_NetCharDevEnum_server_unc_ 1|PIDL_SET_COL_INFO
+PARAM_VALUE srvsvc_dissect_element_NetCharDevEnum_level_ PIDL_SET_COL_INFO
+
+PARAM_VALUE srvsvc_dissect_element_NetCharDevQEnum_server_unc_ 1|PIDL_SET_COL_INFO
+PARAM_VALUE srvsvc_dissect_element_NetCharDevQEnum_user_ 1|PIDL_SET_COL_INFO
+PARAM_VALUE srvsvc_dissect_element_NetCharDevQEnum_level_ PIDL_SET_COL_INFO
+
+PARAM_VALUE srvsvc_dissect_element_NetConnEnum_server_unc_ 1|PIDL_SET_COL_INFO
+PARAM_VALUE srvsvc_dissect_element_NetConnEnum_path_ 1|PIDL_SET_COL_INFO
+PARAM_VALUE srvsvc_dissect_element_NetConnEnum_level_ PIDL_SET_COL_INFO
+
+PARAM_VALUE srvsvc_dissect_element_NetFileEnum_server_unc_ 1|PIDL_SET_COL_INFO
+PARAM_VALUE srvsvc_dissect_element_NetFileEnum_level_ PIDL_SET_COL_INFO
+
+
+CODE START
+ #include "packet-smb.h"
+ #include "packet-smb-browse.h"
+
+static int
+srvsvc_dissect_NetShareCtr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+static int
+srvsvc_dissect_element_NetShareInfoCtr_ctr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, guint32 *level)
+{
+ ALIGN_TO_5_BYTES
+ offset = srvsvc_dissect_NetShareCtr(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareInfoCtr_ctr, *level);
+
+ return offset;
+}
+
+
+static int
+srvsvc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index);
+static int
+srvsvc_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_)
+{
+ guint32 len;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
+ hf_srvsvc_sec_desc_buf_len, &len);
+
+ dissect_nt_sec_desc(tvb, offset, pinfo, tree, drep, TRUE, len,
+ NULL);
+
+ offset += len;
+
+ return offset;
+}
+static int
+srvsvc_dissect_element_NetShareInfo_info1501_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareInfo_info1501);
+}
+static int
+srvsvc_dissect_element_NetGetFileSecurity_sd_buf_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetGetFileSecurity_sd_buf);
+}
+static int
+srvsvc_dissect_element_NetSetFileSecurity_sd_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetSetFileSecurity_sd_buf);
+}
+static int
+srvsvc_dissect_element_NetShareCtr1501_array__(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetShareCtr1501_array);
+}
+static int
+srvsvc_dissect_element_NetShareInfo502_sd_buf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ return srvsvc_dissect_sec_desc_buf(tvb,offset,pinfo,tree,di,drep, hf_srvsvc_srvsvc_NetShareInfo502_sd_buf);
+}
+static int
+srvsvc_dissect_ServerType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset=dissect_smb_server_type_flags(tvb, offset, pinfo, tree, drep, 0);
+
+ return offset;
+}
+static int
+srvsvc_dissect_element_NetSrvInfo101_server_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_ServerType(tvb, offset, pinfo, tree, di, drep);
+}
+
+static int
+srvsvc_dissect_element_NetSrvInfo102_server_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_ServerType(tvb, offset, pinfo, tree, di, drep);
+}
+static int
+srvsvc_dissect_secinfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, dcerpc_info* di, guint8 *drep _U_, int hf_index _U_)
+{
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset=dissect_security_information_mask(tvb, tree, offset);
+
+ return offset;
+}
+static int
+srvsvc_dissect_element_NetGetFileSecurity_securityinformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_secinfo(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetGetFileSecurity_securityinformation);
+}
+static int
+srvsvc_dissect_element_NetSetFileSecurity_securityinformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ return srvsvc_dissect_secinfo(tvb, offset, pinfo, tree, di, drep, hf_srvsvc_srvsvc_NetSetFileSecurity_securityinformation);
+}
+
+CODE END
+
diff --git a/epan/dissectors/pidl/srvsvc/srvsvc.idl b/epan/dissectors/pidl/srvsvc/srvsvc.idl
new file mode 100644
index 00000000..93282d07
--- /dev/null
+++ b/epan/dissectors/pidl/srvsvc/srvsvc.idl
@@ -0,0 +1,1567 @@
+#include "idl_types.h"
+
+/*
+ srvsvc interface definitions
+*/
+/* import "misc.idl", "security.idl", "svcctl.idl"; */
+
+[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"),
+ version(3.0),
+ endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"),
+ pointer_default(unique),
+ helpstring("Server Service")
+] interface srvsvc
+{
+ typedef bitmap svcctl_ServerType svcctl_ServerType;
+ typedef bitmap security_secinfo security_secinfo;
+
+/**************************/
+/* srvsvc_NetCharDev */
+/**************************/
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ } srvsvc_NetCharDevInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevInfo0 *array;
+ } srvsvc_NetCharDevCtr0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ uint32 status;
+ [string,charset(UTF16)] uint16 *user;
+ uint32 time;
+ } srvsvc_NetCharDevInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevInfo1 *array;
+ } srvsvc_NetCharDevCtr1;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevInfo0 *info0;
+ [case(1)] srvsvc_NetCharDevInfo1 *info1;
+ [default] ;
+ } srvsvc_NetCharDevInfo;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevCtr0 *ctr0;
+ [case(1)] srvsvc_NetCharDevCtr1 *ctr1;
+ [default] ;
+ } srvsvc_NetCharDevCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetCharDevCtr ctr;
+ } srvsvc_NetCharDevInfoCtr;
+
+ /******************/
+ /* Function: 0x00 */
+ WERROR srvsvc_NetCharDevEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out,ref] srvsvc_NetCharDevInfoCtr *info_ctr,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x01 */
+ WERROR srvsvc_NetCharDevGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 device_name[],
+ [in] uint32 level,
+ [out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info
+ );
+
+ /******************/
+ /* Function: 0x02 */
+ WERROR srvsvc_NetCharDevControl(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 device_name[],
+ [in] uint32 opcode
+ );
+
+/**************************/
+/* srvsvc_NetCharDevQ */
+/**************************/
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ } srvsvc_NetCharDevQInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevQInfo0 *array;
+ } srvsvc_NetCharDevQCtr0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *device;
+ uint32 priority;
+ [string,charset(UTF16)] uint16 *devices;
+ uint32 users;
+ uint32 num_ahead;
+ } srvsvc_NetCharDevQInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetCharDevQInfo1 *array;
+ } srvsvc_NetCharDevQCtr1;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevQInfo0 *info0;
+ [case(1)] srvsvc_NetCharDevQInfo1 *info1;
+ [default] ;
+ } srvsvc_NetCharDevQInfo;
+
+ typedef union {
+ [case(0)] srvsvc_NetCharDevQCtr0 *ctr0;
+ [case(1)] srvsvc_NetCharDevQCtr1 *ctr1;
+ [default] ;
+ } srvsvc_NetCharDevQCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetCharDevQCtr ctr;
+ } srvsvc_NetCharDevQInfoCtr;
+
+ /******************/
+ /* Function: 0x03 */
+ WERROR srvsvc_NetCharDevQEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *user,
+ [in,out,ref] srvsvc_NetCharDevQInfoCtr *info_ctr,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x04 */
+ WERROR srvsvc_NetCharDevQGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[],
+ [in] [string,charset(UTF16)] uint16 user[],
+ [in] uint32 level,
+ [out,switch_is(level),ref] srvsvc_NetCharDevQInfo *info
+ );
+
+ /******************/
+ /* Function: 0x05 */
+ WERROR srvsvc_NetCharDevQSetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[],
+ [in] uint32 level,
+ [in,switch_is(level)] srvsvc_NetCharDevQInfo info,
+ [in,out,unique] uint32 *parm_error
+ );
+
+ /******************/
+ /* Function: 0x06 */
+ WERROR srvsvc_NetCharDevQPurge(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[]
+ );
+
+ /******************/
+ /* Function: 0x07 */
+ WERROR srvsvc_NetCharDevQPurgeSelf(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 queue_name[],
+ [in] [string,charset(UTF16)] uint16 computer_name[]
+ );
+
+/**************************/
+/* srvsvc_NetConn */
+/**************************/
+ typedef struct {
+ uint32 conn_id;
+ } srvsvc_NetConnInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetConnInfo0 *array;
+ } srvsvc_NetConnCtr0;
+
+ typedef struct {
+ uint32 conn_id;
+ uint32 conn_type;
+ uint32 num_open;
+ uint32 num_users;
+ uint32 conn_time;
+ [string,charset(UTF16)] uint16 *user;
+ [string,charset(UTF16)] uint16 *share;
+ } srvsvc_NetConnInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetConnInfo1 *array;
+ } srvsvc_NetConnCtr1;
+
+ typedef union {
+ [case(0)] srvsvc_NetConnCtr0 *ctr0;
+ [case(1)] srvsvc_NetConnCtr1 *ctr1;
+ [default] ;
+ } srvsvc_NetConnCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetConnCtr ctr;
+ } srvsvc_NetConnInfoCtr;
+
+ /******************/
+ /* Function: 0x08 */
+ WERROR srvsvc_NetConnEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *path,
+ [in,out,ref] srvsvc_NetConnInfoCtr *info_ctr,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+/**************************/
+/* srvsvc_NetFile */
+/**************************/
+ typedef struct {
+ uint32 fid;
+ } srvsvc_NetFileInfo2;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetFileInfo2 *array;
+ } srvsvc_NetFileCtr2;
+
+ typedef struct {
+ uint32 fid;
+ uint32 permissions;
+ uint32 num_locks;
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *user;
+ } srvsvc_NetFileInfo3;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetFileInfo3 *array;
+ } srvsvc_NetFileCtr3;
+
+ typedef union {
+ [case(2)] srvsvc_NetFileInfo2 *info2;
+ [case(3)] srvsvc_NetFileInfo3 *info3;
+ [default] ;
+ } srvsvc_NetFileInfo;
+
+ typedef union {
+ [case(2)] srvsvc_NetFileCtr2 *ctr2;
+ [case(3)] srvsvc_NetFileCtr3 *ctr3;
+ [default] ;
+ } srvsvc_NetFileCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetFileCtr ctr;
+ } srvsvc_NetFileInfoCtr;
+
+ /******************/
+ /* Function: 0x09 */
+ WERROR srvsvc_NetFileEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *path,
+ [in,unique] [string,charset(UTF16)] uint16 *user,
+ [in,out,ref] srvsvc_NetFileInfoCtr *info_ctr,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x0a */
+ WERROR srvsvc_NetFileGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 fid,
+ [in] uint32 level,
+ [out,switch_is(level),ref] srvsvc_NetFileInfo *info
+ );
+
+ /******************/
+ /* Function: 0x0b */
+ WERROR srvsvc_NetFileClose(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 fid
+ );
+
+/**************************/
+/* srvsvc_NetSess */
+/**************************/
+ typedef struct {
+ [string,charset(UTF16)] uint16 *client;
+ } srvsvc_NetSessInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetSessInfo0 *array;
+ } srvsvc_NetSessCtr0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
+ uint32 num_open;
+ uint32 time;
+ uint32 idle_time;
+ uint32 user_flags;
+ } srvsvc_NetSessInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetSessInfo1 *array;
+ } srvsvc_NetSessCtr1;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
+ uint32 num_open;
+ uint32 time;
+ uint32 idle_time;
+ uint32 user_flags;
+ [string,charset(UTF16)] uint16 *client_type;
+ } srvsvc_NetSessInfo2;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetSessInfo2 *array;
+ } srvsvc_NetSessCtr2;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
+ uint32 time;
+ uint32 idle_time;
+ } srvsvc_NetSessInfo10;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetSessInfo10 *array;
+ } srvsvc_NetSessCtr10;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *client;
+ [string,charset(UTF16)] uint16 *user;
+ uint32 num_open;
+ uint32 time;
+ uint32 idle_time;
+ uint32 user_flags;
+ [string,charset(UTF16)] uint16 *client_type;
+ [string,charset(UTF16)] uint16 *transport;
+ } srvsvc_NetSessInfo502;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetSessInfo502 *array;
+ } srvsvc_NetSessCtr502;
+
+ typedef enum {
+ SESSION_INFO_0_CONTAINER = 0,
+ SESSION_INFO_1_CONTAINER = 1,
+ SESSION_INFO_2_CONTAINER = 2,
+ SESSION_INFO_10_CONTAINER = 10,
+ SESSION_INFO_502_CONTAINER = 502
+ } SESSION_INFO_LEVEL;
+
+ typedef [switch_type(SESSION_INFO_LEVEL)] union {
+ [case(0)] srvsvc_NetSessCtr0 *ctr0;
+ [case(1)] srvsvc_NetSessCtr1 *ctr1;
+ [case(2)] srvsvc_NetSessCtr2 *ctr2;
+ [case(10)] srvsvc_NetSessCtr10 *ctr10;
+ [case(502)] srvsvc_NetSessCtr502 *ctr502;
+ } srvsvc_NetSessCtr;
+
+ /******************/
+ /* Function: 0x0c */
+
+ typedef struct {
+ SESSION_INFO_LEVEL level;
+ [flag(LIBNDR_FLAG_ALIGN5)][switch_is(level)] srvsvc_NetSessCtr ctr;
+ } srvsvc_NetSessInfoCtr;
+
+ WERROR srvsvc_NetSessEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *client,
+ [in,unique] [string,charset(UTF16)] uint16 *user,
+ [in,out] srvsvc_NetSessInfoCtr *info_ctr,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x0d */
+ WERROR srvsvc_NetSessDel(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *client,
+ [in,unique] [string,charset(UTF16)] uint16 *user
+ );
+
+/**************************/
+/* srvsvc_NetShare */
+/**************************/
+
+ /* share types */
+ const uint32 STYPE_TEMPORARY = 0x40000000; /* share is a temporary one */
+ const uint32 STYPE_HIDDEN = 0x80000000; /* share is a hidden one */
+
+ typedef [v1_enum, flag(NDR_PAHEX)] enum {
+ STYPE_DISKTREE = 0,
+ STYPE_DISKTREE_TEMPORARY = STYPE_DISKTREE|STYPE_TEMPORARY,
+ STYPE_DISKTREE_HIDDEN = STYPE_DISKTREE|STYPE_HIDDEN,
+ STYPE_PRINTQ = 1,
+ STYPE_PRINTQ_TEMPORARY = STYPE_PRINTQ|STYPE_TEMPORARY,
+ STYPE_PRINTQ_HIDDEN = STYPE_PRINTQ|STYPE_HIDDEN,
+ STYPE_DEVICE = 2, /* Serial device */
+ STYPE_DEVICE_TEMPORARY = STYPE_DEVICE|STYPE_TEMPORARY,
+ STYPE_DEVICE_HIDDEN = STYPE_DEVICE|STYPE_HIDDEN,
+ STYPE_IPC = 3, /* Interprocess communication (IPC) */
+ STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY,
+ STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN,
+ STYPE_CLUSTER_FS = 0x02000000, /* A cluster share */
+ STYPE_CLUSTER_FS_TEMPORARY = STYPE_CLUSTER_FS|STYPE_TEMPORARY,
+ STYPE_CLUSTER_FS_HIDDEN = STYPE_CLUSTER_FS|STYPE_HIDDEN,
+ STYPE_CLUSTER_SOFS = 0x04000000, /* A Scale-Out cluster share */
+ STYPE_CLUSTER_SOFS_TEMPORARY = STYPE_CLUSTER_SOFS|STYPE_TEMPORARY,
+ STYPE_CLUSTER_SOFS_HIDDEN = STYPE_CLUSTER_SOFS|STYPE_HIDDEN,
+ STYPE_CLUSTER_DFS = 0x08000000, /* A DFS share in a cluster */
+ STYPE_CLUSTER_DFS_TEMPORARY = STYPE_CLUSTER_DFS|STYPE_TEMPORARY,
+ STYPE_CLUSTER_DFS_HIDDEN = STYPE_CLUSTER_DFS|STYPE_HIDDEN
+ } srvsvc_ShareType;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *name;
+ } srvsvc_NetShareInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo0 *array;
+ } srvsvc_NetShareCtr0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetShareInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1 *array;
+ } srvsvc_NetShareCtr1;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
+ uint32 permissions;
+ uint32 max_users;
+ uint32 current_users;
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *password;
+ } srvsvc_NetShareInfo2;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo2 *array;
+ } srvsvc_NetShareCtr2;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
+ uint32 csc_policy;
+ } srvsvc_NetShareInfo501;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo501 *array;
+ } srvsvc_NetShareCtr501;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *name;
+ srvsvc_ShareType type;
+ [string,charset(UTF16)] uint16 *comment;
+ uint32 permissions;
+ uint32 max_users;
+ uint32 current_users;
+ [string,charset(UTF16)] uint16 *path;
+ [string,charset(UTF16)] uint16 *password;
+ sec_desc_buf sd_buf;
+ } srvsvc_NetShareInfo502;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo502 *array;
+ } srvsvc_NetShareCtr502;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetShareInfo1004;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1004 *array;
+ } srvsvc_NetShareCtr1004;
+
+ const uint32 SHARE_1005_CSC_CACHE_MANUAL_REINT = 0x00000000;
+
+ typedef bitmap {
+ SHARE_1005_IN_DFS = 0x00000001,
+ SHARE_1005_DFS_ROOT = 0x00000002,
+ SHARE_1005_CSC_CACHE_AUTO_REINT = 0x00000010,
+ SHARE_1005_CSC_CACHE_VDO = 0x00000020,
+ SHARE_1005_CSC_CACHE_NONE = 0x00000030,
+ SHARE_1005_RESTRICT_EXCLUSIVE_OPENS = 0x00000100,
+ SHARE_1005_FORCE_SHARED_DELETE = 0x00000200,
+ SHARE_1005_ALLOW_NAMESPACE_CACHING = 0x00000400,
+ SHARE_1005_ACCESS_BASED_DIRECTORY_ENUM = 0x00000800,
+ SHARE_1005_FORCE_LEVELII_OPLOCK = 0x00001000,
+ SHARE_1005_ENABLE_HASH = 0x00002000,
+ SHARE_1005_ENABLE_CA = 0x00004000,
+ SHARE_1005_ENCRYPT_DATA = 0x00008000
+ } NetShareInfo1005Flags;
+
+ const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030;
+ const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4;
+
+ typedef struct {
+ NetShareInfo1005Flags dfs_flags;
+ } srvsvc_NetShareInfo1005;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1005 *array;
+ } srvsvc_NetShareCtr1005;
+
+ typedef struct {
+ uint32 max_users;
+ } srvsvc_NetShareInfo1006;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1006 *array;
+ } srvsvc_NetShareCtr1006;
+
+ typedef struct {
+ uint32 flags;
+ [string,charset(UTF16)] uint16 *alternate_directory_name;
+ } srvsvc_NetShareInfo1007;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetShareInfo1007 *array;
+ } srvsvc_NetShareCtr1007;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] sec_desc_buf *array;
+ } srvsvc_NetShareCtr1501;
+
+ typedef union {
+ [case(0)] srvsvc_NetShareInfo0 *info0;
+ [case(1)] srvsvc_NetShareInfo1 *info1;
+ [case(2)] srvsvc_NetShareInfo2 *info2;
+ [case(501)] srvsvc_NetShareInfo501 *info501;
+ [case(502)] srvsvc_NetShareInfo502 *info502;
+ [case(1004)] srvsvc_NetShareInfo1004 *info1004;
+ [case(1005)] srvsvc_NetShareInfo1005 *info1005;
+ [case(1006)] srvsvc_NetShareInfo1006 *info1006;
+ [case(1007)] srvsvc_NetShareInfo1007 *info1007;
+ [case(1501)] sec_desc_buf *info1501;
+ [default] ;
+ } srvsvc_NetShareInfo;
+
+ typedef union {
+ [case(0)] srvsvc_NetShareCtr0 *ctr0;
+ [case(1)] srvsvc_NetShareCtr1 *ctr1;
+ [case(2)] srvsvc_NetShareCtr2 *ctr2;
+ [case(501)] srvsvc_NetShareCtr501 *ctr501;
+ [case(502)] srvsvc_NetShareCtr502 *ctr502;
+ [case(1004)] srvsvc_NetShareCtr1004 *ctr1004;
+ [case(1005)] srvsvc_NetShareCtr1005 *ctr1005;
+ [case(1006)] srvsvc_NetShareCtr1006 *ctr1006;
+ [case(1007)] srvsvc_NetShareCtr1007 *ctr1007;
+ [case(1501)] srvsvc_NetShareCtr1501 *ctr1501;
+ [default] ;
+ } srvsvc_NetShareCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetShareCtr ctr;
+ } srvsvc_NetShareInfoCtr;
+
+ /******************/
+ /* Function: 0x0e */
+ WERROR srvsvc_NetShareAdd(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
+ [in,out,unique] uint32 *parm_error
+ );
+
+ /******************/
+ /* Function: 0x0f */
+ WERROR srvsvc_NetShareEnumAll (
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x10 */
+ WERROR srvsvc_NetShareGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 level,
+ [out,ref,switch_is(level)] srvsvc_NetShareInfo *info
+ );
+
+ /******************/
+ /* Function: 0x11 */
+ WERROR srvsvc_NetShareSetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 level,
+ [in,ref,switch_is(level)] srvsvc_NetShareInfo *info,
+ [in,out,unique] uint32 *parm_error
+ );
+
+ /******************/
+ /* Function: 0x12 */
+ WERROR srvsvc_NetShareDel(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 reserved
+ );
+
+ /******************/
+ /* Function: 0x13 */
+ WERROR srvsvc_NetShareDelSticky(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 share_name[],
+ [in] uint32 reserved
+ );
+
+ /******************/
+ /* Function: 0x14 */
+ WERROR srvsvc_NetShareCheck(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 device_name[],
+ [out,ref] srvsvc_ShareType *type
+ );
+
+/**************************/
+/* srvsvc_NetSrv */
+/**************************/
+ typedef [public,v1_enum] enum {
+ PLATFORM_ID_DOS = 300,
+ PLATFORM_ID_OS2 = 400,
+ PLATFORM_ID_NT = 500,
+ PLATFORM_ID_OSF = 600,
+ PLATFORM_ID_VMS = 700
+ } srvsvc_PlatformId;
+
+ typedef [public] struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ } srvsvc_NetSrvInfo100;
+
+ typedef [public] struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ uint32 version_major;
+ uint32 version_minor;
+ svcctl_ServerType server_type;
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetSrvInfo101;
+
+ typedef struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ uint32 version_major;
+ uint32 version_minor;
+ svcctl_ServerType server_type;
+ [string,charset(UTF16)] uint16 *comment;
+ uint32 users;
+ uint32 disc;
+ uint32 hidden;
+ uint32 announce;
+ uint32 anndelta;
+ uint32 licenses;
+ [string,charset(UTF16)] uint16 *userpath;
+ } srvsvc_NetSrvInfo102;
+
+ typedef struct {
+ uint32 ulist_mtime;
+ uint32 glist_mtime;
+ uint32 alist_mtime;
+ [string,charset(UTF16)] uint16 *alerts;
+ uint32 security;
+ uint32 numadmin;
+ uint32 lanmask;
+ [string,charset(UTF16)] uint16 *guestaccount;
+ uint32 chdevs;
+ uint32 chdevqs;
+ uint32 chdevjobs;
+ uint32 connections;
+ uint32 shares;
+ uint32 openfiles;
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 sessreqs;
+ uint32 opensearch;
+ uint32 activelocks;
+ uint32 numreqbufs;
+ uint32 sizereqbufs;
+ uint32 numbigbufs;
+ uint32 numfiletasks;
+ uint32 alertsched;
+ uint32 erroralert;
+ uint32 logonalert;
+ uint32 accessalert;
+ uint32 diskalert;
+ uint32 netioalert;
+ uint32 maxaudits;
+ [string,charset(UTF16)] uint16 *srvheuristics;
+ } srvsvc_NetSrvInfo402;
+
+ typedef struct {
+ uint32 ulist_mtime;
+ uint32 glist_mtime;
+ uint32 alist_mtime;
+ [string,charset(UTF16)] uint16 *alerts;
+ uint32 security;
+ uint32 numadmin;
+ uint32 lanmask;
+ [string,charset(UTF16)] uint16 *guestaccount;
+ uint32 chdevs;
+ uint32 chdevqs;
+ uint32 chdevjobs;
+ uint32 connections;
+ uint32 shares;
+ uint32 openfiles;
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 sessreqs;
+ uint32 opensearch;
+ uint32 activelocks;
+ uint32 numreqbufs;
+ uint32 sizereqbufs;
+ uint32 numbigbufs;
+ uint32 numfiletasks;
+ uint32 alertsched;
+ uint32 erroralert;
+ uint32 logonalert;
+ uint32 accessalert;
+ uint32 diskalert;
+ uint32 netioalert;
+ uint32 maxaudits;
+ [string,charset(UTF16)] uint16 *srvheuristics;
+ uint32 auditedevents;
+ uint32 auditprofile;
+ [string,charset(UTF16)] uint16 *autopath;
+ } srvsvc_NetSrvInfo403;
+
+ typedef struct {
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 opensearch;
+ uint32 sizereqbufs;
+ uint32 initworkitems;
+ uint32 maxworkitems;
+ uint32 rawworkitems;
+ uint32 irpstacksize;
+ uint32 maxrawbuflen;
+ uint32 sessusers;
+ uint32 sessconns;
+ uint32 maxpagedmemoryusage;
+ uint32 maxnonpagedmemoryusage;
+ uint32 enablesoftcompat;
+ uint32 enableforcedlogoff;
+ uint32 timesource;
+ uint32 acceptdownlevelapis;
+ uint32 lmannounce;
+ } srvsvc_NetSrvInfo502;
+
+ typedef struct{
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 opensearch;
+ uint32 sizereqbufs;
+ uint32 initworkitems;
+ uint32 maxworkitems;
+ uint32 rawworkitems;
+ uint32 irpstacksize;
+ uint32 maxrawbuflen;
+ uint32 sessusers;
+ uint32 sessconns;
+ uint32 maxpagedmemoryusage;
+ uint32 maxnonpagedmemoryusage;
+ uint32 enablesoftcompat;
+ uint32 enableforcedlogoff;
+ uint32 timesource;
+ uint32 acceptdownlevelapis;
+ uint32 lmannounce;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 maxcopyreadlen;
+ uint32 maxcopywritelen;
+ uint32 minkeepsearch;
+ uint32 maxkeepsearch;
+ uint32 minkeepcomplsearch;
+ uint32 maxkeepcomplsearch;
+ uint32 threadcountadd;
+ uint32 numlockthreads;
+ uint32 scavtimeout;
+ uint32 minrcvqueue;
+ uint32 minfreeworkitems;
+ uint32 xactmemsize;
+ uint32 threadpriority;
+ uint32 maxmpxct;
+ uint32 oplockbreakwait;
+ uint32 oplockbreakresponsewait;
+ uint32 enableoplocks;
+ uint32 enableoplockforceclose;
+ uint32 enablefcbopens;
+ uint32 enableraw;
+ uint32 enablesharednetdrives;
+ uint32 minfreeconnections;
+ uint32 maxfreeconnections;
+ } srvsvc_NetSrvInfo503;
+
+ typedef struct{
+ uint32 sessopen;
+ uint32 sesssvc;
+ uint32 opensearch;
+ uint32 sizereqbufs;
+ uint32 initworkitems;
+ uint32 maxworkitems;
+ uint32 rawworkitems;
+ uint32 irpstacksize;
+ uint32 maxrawbuflen;
+ uint32 sessusers;
+ uint32 sessconns;
+ uint32 maxpagedmemoryusage;
+ uint32 maxnonpagedmemoryusage;
+ uint32 enablesoftcompat;
+ uint32 enableforcedlogoff;
+ uint32 timesource;
+ uint32 acceptdownlevelapis;
+ uint32 lmannounce;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 maxcopyreadlen;
+ uint32 maxcopywritelen;
+ uint32 minkeepsearch;
+ uint32 minkeepcomplsearch;
+ uint32 maxkeepcomplsearch;
+ uint32 threadcountadd;
+ uint32 numlockthreads;
+ uint32 scavtimeout;
+ uint32 minrcvqueue;
+ uint32 minfreeworkitems;
+ uint32 xactmemsize;
+ uint32 threadpriority;
+ uint32 maxmpxct;
+ uint32 oplockbreakwait;
+ uint32 oplockbreakresponsewait;
+ uint32 enableoplocks;
+ uint32 enableoplockforceclose;
+ uint32 enablefcbopens;
+ uint32 enableraw;
+ uint32 enablesharednetdrives;
+ uint32 minfreeconnections;
+ uint32 maxfreeconnections;
+ uint32 initsesstable;
+ uint32 initconntable;
+ uint32 initfiletable;
+ uint32 initsearchtable;
+ uint32 alertsched;
+ uint32 errortreshold;
+ uint32 networkerrortreshold;
+ uint32 diskspacetreshold;
+ uint32 reserved;
+ uint32 maxlinkdelay;
+ uint32 minlinkthroughput;
+ uint32 linkinfovalidtime;
+ uint32 scavqosinfoupdatetime;
+ uint32 maxworkitemidletime;
+ } srvsvc_NetSrvInfo599;
+
+ typedef struct{
+ [string,charset(UTF16)] uint16 *comment;
+ } srvsvc_NetSrvInfo1005;
+
+ typedef struct{
+ uint32 disc;
+ } srvsvc_NetSrvInfo1010;
+
+ typedef struct{
+ uint32 hidden;
+ } srvsvc_NetSrvInfo1016;
+
+ typedef struct{
+ uint32 announce;
+ } srvsvc_NetSrvInfo1017;
+
+ typedef struct{
+ uint32 anndelta;
+ } srvsvc_NetSrvInfo1018;
+
+ typedef struct{
+ uint32 users;
+ } srvsvc_NetSrvInfo1107;
+
+ typedef struct{
+ uint32 sessopens;
+ } srvsvc_NetSrvInfo1501;
+
+ typedef struct{
+ uint32 sessvcs;
+ } srvsvc_NetSrvInfo1502;
+
+ typedef struct{
+ uint32 opensearch;
+ } srvsvc_NetSrvInfo1503;
+
+ typedef struct{
+ uint32 maxworkitems;
+ } srvsvc_NetSrvInfo1506;
+
+ typedef struct{
+ uint32 maxrawbuflen;
+ } srvsvc_NetSrvInfo1509;
+
+ typedef struct{
+ uint32 sessusers;
+ } srvsvc_NetSrvInfo1510;
+
+ typedef struct{
+ uint32 sesscons;
+ } srvsvc_NetSrvInfo1511;
+
+ typedef struct{
+ uint32 maxnonpagedmemoryusage;
+ } srvsvc_NetSrvInfo1512;
+
+ typedef struct{
+ uint32 maxpagedmemoryusage;
+ } srvsvc_NetSrvInfo1513;
+
+ typedef struct{
+ uint32 enablesoftcompat;
+ } srvsvc_NetSrvInfo1514;
+
+ typedef struct{
+ uint32 enableforcedlogoff;
+ } srvsvc_NetSrvInfo1515;
+
+ typedef struct{
+ uint32 timesource;
+ } srvsvc_NetSrvInfo1516;
+
+ typedef struct{
+ uint32 lmannounce;
+ } srvsvc_NetSrvInfo1518;
+
+ typedef struct{
+ uint32 maxcopyreadlen;
+ } srvsvc_NetSrvInfo1520;
+
+ typedef struct{
+ uint32 maxcopywritelen;
+ } srvsvc_NetSrvInfo1521;
+
+ typedef struct{
+ uint32 minkeepsearch;
+ } srvsvc_NetSrvInfo1522;
+
+ typedef struct{
+ uint32 maxkeepsearch;
+ } srvsvc_NetSrvInfo1523;
+
+ typedef struct{
+ uint32 minkeepcomplsearch;
+ } srvsvc_NetSrvInfo1524;
+
+ typedef struct{
+ uint32 maxkeepcomplsearch;
+ } srvsvc_NetSrvInfo1525;
+
+ typedef struct{
+ uint32 scavtimeout;
+ } srvsvc_NetSrvInfo1528;
+
+ typedef struct{
+ uint32 minrcvqueue;
+ } srvsvc_NetSrvInfo1529;
+
+ typedef struct{
+ uint32 minfreeworkitems;
+ } srvsvc_NetSrvInfo1530;
+
+ typedef struct{
+ uint32 maxmpxct;
+ } srvsvc_NetSrvInfo1533;
+
+ typedef struct{
+ uint32 oplockbreakwait;
+ } srvsvc_NetSrvInfo1534;
+
+ typedef struct{
+ uint32 oplockbreakresponsewait;
+ } srvsvc_NetSrvInfo1535;
+
+ typedef struct{
+ uint32 enableoplocks;
+ } srvsvc_NetSrvInfo1536;
+
+ typedef struct{
+ uint32 enableoplockforceclose;
+ } srvsvc_NetSrvInfo1537;
+
+ typedef struct{
+ uint32 enablefcbopens;
+ } srvsvc_NetSrvInfo1538;
+
+ typedef struct{
+ uint32 enableraw;
+ } srvsvc_NetSrvInfo1539;
+
+ typedef struct{
+ uint32 enablesharednetdrives;
+ } srvsvc_NetSrvInfo1540;
+
+ typedef struct{
+ uint32 minfreeconnections;
+ } srvsvc_NetSrvInfo1541;
+
+ typedef struct{
+ uint32 maxfreeconnections;
+ } srvsvc_NetSrvInfo1542;
+
+ typedef struct{
+ uint32 initsesstable;
+ } srvsvc_NetSrvInfo1543;
+
+ typedef struct{
+ uint32 initconntable;
+ } srvsvc_NetSrvInfo1544;
+
+ typedef struct{
+ uint32 initfiletable;
+ } srvsvc_NetSrvInfo1545;
+
+ typedef struct{
+ uint32 initsearchtable;
+ } srvsvc_NetSrvInfo1546;
+
+ typedef struct{
+ uint32 alertsched;
+ } srvsvc_NetSrvInfo1547;
+
+ typedef struct{
+ uint32 errortreshold;
+ } srvsvc_NetSrvInfo1548;
+
+ typedef struct{
+ uint32 networkerrortreshold;
+ } srvsvc_NetSrvInfo1549;
+
+ typedef struct{
+ uint32 diskspacetreshold;
+ } srvsvc_NetSrvInfo1550;
+
+ typedef struct{
+ uint32 maxlinkdelay;
+ } srvsvc_NetSrvInfo1552;
+
+ typedef struct{
+ uint32 minlinkthroughput;
+ } srvsvc_NetSrvInfo1553;
+
+ typedef struct{
+ uint32 linkinfovalidtime;
+ } srvsvc_NetSrvInfo1554;
+
+ typedef struct{
+ uint32 scavqosinfoupdatetime;
+ } srvsvc_NetSrvInfo1555;
+
+ typedef struct{
+ uint32 maxworkitemidletime;
+ } srvsvc_NetSrvInfo1556;
+
+
+ typedef union{
+ [case(100)] srvsvc_NetSrvInfo100 *info100;
+ [case(101)] srvsvc_NetSrvInfo101 *info101;
+ [case(102)] srvsvc_NetSrvInfo102 *info102;
+ [case(402)] srvsvc_NetSrvInfo402 *info402;
+ [case(403)] srvsvc_NetSrvInfo403 *info403;
+ [case(502)] srvsvc_NetSrvInfo502 *info502;
+ [case(503)] srvsvc_NetSrvInfo503 *info503;
+ [case(599)] srvsvc_NetSrvInfo599 *info599;
+ [case(1005)] srvsvc_NetSrvInfo1005 *info1005;
+ [case(1010)] srvsvc_NetSrvInfo1010 *info1010;
+ [case(1016)] srvsvc_NetSrvInfo1016 *info1016;
+ [case(1017)] srvsvc_NetSrvInfo1017 *info1017;
+ [case(1018)] srvsvc_NetSrvInfo1018 *info1018;
+ [case(1107)] srvsvc_NetSrvInfo1107 *info1107;
+ [case(1501)] srvsvc_NetSrvInfo1501 *info1501;
+ [case(1502)] srvsvc_NetSrvInfo1502 *info1502;
+ [case(1503)] srvsvc_NetSrvInfo1503 *info1503;
+ [case(1506)] srvsvc_NetSrvInfo1506 *info1506;
+ [case(1509)] srvsvc_NetSrvInfo1509 *info1509;
+ [case(1510)] srvsvc_NetSrvInfo1510 *info1510;
+ [case(1511)] srvsvc_NetSrvInfo1511 *info1511;
+ [case(1512)] srvsvc_NetSrvInfo1512 *info1512;
+ [case(1513)] srvsvc_NetSrvInfo1513 *info1513;
+ [case(1514)] srvsvc_NetSrvInfo1514 *info1514;
+ [case(1515)] srvsvc_NetSrvInfo1515 *info1515;
+ [case(1516)] srvsvc_NetSrvInfo1516 *info1516;
+ [case(1518)] srvsvc_NetSrvInfo1518 *info1518;
+ [case(1520)] srvsvc_NetSrvInfo1520 *info1520;
+ [case(1521)] srvsvc_NetSrvInfo1521 *info1521;
+ [case(1522)] srvsvc_NetSrvInfo1522 *info1522;
+ [case(1523)] srvsvc_NetSrvInfo1523 *info1523;
+ [case(1524)] srvsvc_NetSrvInfo1524 *info1524;
+ [case(1525)] srvsvc_NetSrvInfo1525 *info1525;
+ [case(1528)] srvsvc_NetSrvInfo1528 *info1528;
+ [case(1529)] srvsvc_NetSrvInfo1529 *info1529;
+ [case(1530)] srvsvc_NetSrvInfo1530 *info1530;
+ [case(1533)] srvsvc_NetSrvInfo1533 *info1533;
+ [case(1534)] srvsvc_NetSrvInfo1534 *info1534;
+ [case(1535)] srvsvc_NetSrvInfo1535 *info1535;
+ [case(1536)] srvsvc_NetSrvInfo1536 *info1536;
+ [case(1537)] srvsvc_NetSrvInfo1537 *info1537;
+ [case(1538)] srvsvc_NetSrvInfo1538 *info1538;
+ [case(1539)] srvsvc_NetSrvInfo1539 *info1539;
+ [case(1540)] srvsvc_NetSrvInfo1540 *info1540;
+ [case(1541)] srvsvc_NetSrvInfo1541 *info1541;
+ [case(1542)] srvsvc_NetSrvInfo1542 *info1542;
+ [case(1543)] srvsvc_NetSrvInfo1543 *info1543;
+ [case(1544)] srvsvc_NetSrvInfo1544 *info1544;
+ [case(1545)] srvsvc_NetSrvInfo1545 *info1545;
+ [case(1546)] srvsvc_NetSrvInfo1546 *info1546;
+ [case(1547)] srvsvc_NetSrvInfo1547 *info1547;
+ [case(1548)] srvsvc_NetSrvInfo1548 *info1548;
+ [case(1549)] srvsvc_NetSrvInfo1549 *info1549;
+ [case(1550)] srvsvc_NetSrvInfo1550 *info1550;
+ [case(1552)] srvsvc_NetSrvInfo1552 *info1552;
+ [case(1553)] srvsvc_NetSrvInfo1553 *info1553;
+ [case(1554)] srvsvc_NetSrvInfo1554 *info1554;
+ [case(1555)] srvsvc_NetSrvInfo1555 *info1555;
+ [case(1556)] srvsvc_NetSrvInfo1556 *info1556;
+ [default];
+ } srvsvc_NetSrvInfo;
+
+ /******************/
+ /* Function: 0x15 */
+ WERROR srvsvc_NetSrvGetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info
+ );
+
+ /******************/
+ /* Function: 0x16 */
+ WERROR srvsvc_NetSrvSetInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,ref,switch_is(level)] srvsvc_NetSrvInfo *info,
+ [in,out,unique] uint32 *parm_error
+ );
+
+/**************************/
+/* srvsvc_NetDisk */
+/**************************/
+ typedef struct {
+ [charset(UTF16),string] uint16 disk[3];
+ } srvsvc_NetDiskInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks;
+ } srvsvc_NetDiskInfo;
+
+ /******************/
+ /* Function: 0x17 */
+ WERROR srvsvc_NetDiskEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,out,ref] srvsvc_NetDiskInfo *info,
+ [in] uint32 maxlen,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+/**************************/
+/* srvsvc_NetStatistics */
+/**************************/
+ typedef struct {
+ uint32 start;
+ uint32 fopens;
+ uint32 devopens;
+ uint32 jobsqueued;
+ uint32 sopens;
+ uint32 stimeouts;
+ uint32 serrorout;
+ uint32 pwerrors;
+ uint32 permerrors;
+ uint32 syserrors;
+ uint32 bytessent_low;
+ uint32 bytessent_high;
+ uint32 bytesrcvd_low;
+ uint32 bytesrcvd_high;
+ uint32 avresponse;
+ uint32 reqbufneed;
+ uint32 bigbufneed;
+ } srvsvc_Statistics;
+
+ /******************/
+ /* Function: 0x18 */
+ WERROR srvsvc_NetServerStatisticsGet(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *service,
+ [in] uint32 level,
+ [in] uint32 options,
+ [out,ref] srvsvc_Statistics **stats
+ );
+
+/**************************/
+/* srvsvc_NetTransport */
+/**************************/
+ typedef struct {
+ uint32 vcs;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
+ uint32 addr_len;
+ [string,charset(UTF16)] uint16 *net_addr;
+ } srvsvc_NetTransportInfo0;
+
+ /******************/
+ /* Function: 0x19 */
+ WERROR srvsvc_NetTransportAdd(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,switch_is(level)] srvsvc_NetTransportInfo info
+ );
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetTransportInfo0 *array;
+ } srvsvc_NetTransportCtr0;
+
+ typedef struct {
+ uint32 vcs;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
+ uint32 addr_len;
+ [string,charset(UTF16)] uint16 *net_addr;
+ [string,charset(UTF16)] uint16 *domain;
+ } srvsvc_NetTransportInfo1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetTransportInfo1 *array;
+ } srvsvc_NetTransportCtr1;
+
+ typedef struct {
+ uint32 vcs;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
+ uint32 addr_len;
+ [string,charset(UTF16)] uint16 *net_addr;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 unknown;
+ } srvsvc_NetTransportInfo2;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetTransportInfo2 *array;
+ } srvsvc_NetTransportCtr2;
+
+ typedef struct {
+ uint32 vcs;
+ [string,charset(UTF16)] uint16 *name;
+ [size_is(addr_len)] uint8 *addr;
+ uint32 addr_len;
+ [string,charset(UTF16)] uint16 *net_addr;
+ [string,charset(UTF16)] uint16 *domain;
+ uint32 unknown1;
+ uint32 unknown2;
+ uint8 unknown3[256];
+ } srvsvc_NetTransportInfo3;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] srvsvc_NetTransportInfo3 *array;
+ } srvsvc_NetTransportCtr3;
+
+ typedef union {
+ [case(0)] srvsvc_NetTransportCtr0 *ctr0;
+ [case(1)] srvsvc_NetTransportCtr1 *ctr1;
+ [case(2)] srvsvc_NetTransportCtr2 *ctr2;
+ [case(3)] srvsvc_NetTransportCtr3 *ctr3;
+ [default];
+ } srvsvc_NetTransportCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetTransportCtr ctr;
+ } srvsvc_NetTransportInfoCtr;
+
+ /******************/
+ /* Function: 0x1a */
+ WERROR srvsvc_NetTransportEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out,ref] srvsvc_NetTransportInfoCtr *transports,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x1b */
+ WERROR srvsvc_NetTransportDel(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in] srvsvc_NetTransportInfo0 *info0
+ );
+
+/**************************/
+/* srvsvc_NetRemoteTOD */
+/**************************/
+ typedef struct {
+ uint32 elapsed; /* time(NULL) */
+ uint32 msecs; /* milliseconds till system reboot (uptime) */
+ uint32 hours;
+ uint32 mins;
+ uint32 secs;
+ uint32 hunds;
+ int32 timezone; /* in minutes */
+ uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */
+ uint32 day;
+ uint32 month;
+ uint32 year;
+ uint32 weekday;
+ } srvsvc_NetRemoteTODInfo;
+
+ /******************/
+ /* Function: 0x1c */
+ WERROR srvsvc_NetRemoteTOD(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [out,ref] srvsvc_NetRemoteTODInfo **info
+ );
+
+/**************************/
+/* srvsvc_NetServiceBits */
+/**************************/
+ /******************/
+ /* Function: 0x1d */
+ WERROR srvsvc_NetSetServiceBits(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *transport,
+ [in] uint32 servicebits,
+ [in] uint32 updateimmediately
+ );
+
+/**************************/
+/* srvsvc_NetPath */
+/**************************/
+ /******************/
+ /* Function: 0x1e */
+ WERROR srvsvc_NetPathType(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 path[],
+ [in] uint32 pathflags,
+ [out,ref] uint32 *pathtype
+ );
+
+ /******************/
+ /* Function: 0x1f */
+ WERROR srvsvc_NetPathCanonicalize(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 path[],
+ [out] [size_is(maxbuf)] uint8 can_path[],
+ [in] uint32 maxbuf,
+ [in] [string,charset(UTF16)] uint16 prefix[],
+ [in,out,ref] uint32 *pathtype,
+ [in] uint32 pathflags
+ );
+
+ /******************/
+ /* Function: 0x20 */
+ WERROR srvsvc_NetPathCompare(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 path1[],
+ [in] [string,charset(UTF16)] uint16 path2[],
+ [in] uint32 pathtype,
+ [in] uint32 pathflags
+ );
+
+/**************************/
+/* srvsvc_NetName */
+/**************************/
+ /******************/
+ /* Function: 0x21 */
+ WERROR srvsvc_NetNameValidate(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 name[],
+ [in] uint32 name_type,
+ [in] uint32 flags
+ );
+
+ /******************/
+ /* Function: 0x22 */
+ WERROR srvsvc_NETRPRNAMECANONICALIZE(
+ );
+
+ /******************/
+ /* Function: 0x23 */
+ WERROR srvsvc_NetPRNameCompare(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] [string,charset(UTF16)] uint16 name1[],
+ [in] [string,charset(UTF16)] uint16 name2[],
+ [in] uint32 name_type,
+ [in] uint32 flags
+ );
+
+/**************************/
+/* srvsvc_NetShare ... */
+/**************************/
+ /******************/
+ /* Function: 0x24 */
+ /* Note, there must be some way to return entries read vs
+ total entries ... */
+ WERROR srvsvc_NetShareEnum(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *totalentries,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /******************/
+ /* Function: 0x25 */
+ WERROR srvsvc_NetShareDelStart(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *share,
+ [in] uint32 reserved,
+ [out,ref] policy_handle *hnd
+ );
+
+ /******************/
+ /* Function: 0x26 */
+ WERROR srvsvc_NetShareDelCommit(
+ [in, out,unique] policy_handle *hnd
+ );
+
+ /******************/
+ /* Function: 0x27 */
+ WERROR srvsvc_NetGetFileSecurity(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *share,
+ [in] [string,charset(UTF16)] uint16 file[],
+ [in] security_secinfo securityinformation,
+ [out,ref] sec_desc_buf **sd_buf
+ );
+
+ /******************/
+ /* Function: 0x28 */
+ WERROR srvsvc_NetSetFileSecurity(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *share,
+ [in] [string,charset(UTF16)] uint16 file[],
+ [in] security_secinfo securityinformation,
+ [in,ref] sec_desc_buf *sd_buf
+ );
+
+
+
+ typedef [switch_type(uint32)] union {
+ [case(0)] srvsvc_NetTransportInfo0 info0;
+ [case(1)] srvsvc_NetTransportInfo1 info1;
+ [case(2)] srvsvc_NetTransportInfo2 info2;
+ [case(3)] srvsvc_NetTransportInfo3 info3;
+ } srvsvc_NetTransportInfo;
+
+ /******************/
+ /* Function: 0x29 */
+ WERROR srvsvc_NetServerTransportAddEx(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in] uint32 level,
+ [in,switch_is(level)] srvsvc_NetTransportInfo info
+ );
+
+ /******************/
+ /* Function: 0x2a */
+ WERROR srvsvc_NetServerSetServiceBitsEx(
+ [in,unique] [string,charset(UTF16)] uint16 *server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *emulated_server_unc,
+ [in,unique] [string,charset(UTF16)] uint16 *transport,
+ [in] uint32 servicebitsofinterest,
+ [in] uint32 servicebits,
+ [in] uint32 updateimmediately
+ );
+
+ /******************/
+ /* Function: 0x2b */
+ WERROR srvsvc_NETRDFSGETVERSION(
+ );
+
+ /******************/
+ /* Function: 0x2c */
+ WERROR srvsvc_NETRDFSCREATELOCALPARTITION(
+ );
+
+ /******************/
+ /* Function: 0x2d */
+ WERROR srvsvc_NETRDFSDELETELOCALPARTITION(
+ );
+
+ /******************/
+ /* Function: 0x2e */
+ WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(
+ );
+
+ /******************/
+ /* Function: 0x2f */
+ WERROR srvsvc_NETRDFSSETSERVERINFO(
+ );
+
+ /******************/
+ /* Function: 0x30 */
+ WERROR srvsvc_NETRDFSCREATEEXITPOINT(
+ );
+
+ /******************/
+ /* Function: 0x31 */
+ WERROR srvsvc_NETRDFSDELETEEXITPOINT(
+ );
+
+ /******************/
+ /* Function: 0x32 */
+ WERROR srvsvc_NETRDFSMODIFYPREFIX(
+ );
+
+ /******************/
+ /* Function: 0x33 */
+ WERROR srvsvc_NETRDFSFIXLOCALVOLUME(
+ );
+
+ /******************/
+ /* Function: 0x34 */
+ WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(
+ );
+
+ /******************/
+ /* Function: 0x35 */
+ WERROR srvsvc_NETRSERVERTRANSPORTDELEX(
+ );
+}
diff --git a/epan/dissectors/pidl/svcctl/svcctl.cnf b/epan/dissectors/pidl/svcctl/svcctl.cnf
new file mode 100644
index 00000000..ce624d55
--- /dev/null
+++ b/epan/dissectors/pidl/svcctl/svcctl.cnf
@@ -0,0 +1,127 @@
+# Conformance file for svcctl
+
+HF_FIELD hf_svcctl_service_buffer_size "Buffer Size" "svcctl.services.buffer_size" FT_UINT32 BASE_DEC NULL 0 NULL HFILL
+HF_FIELD hf_svcctl_service_referent_id "Referent ID(offset)" "svcctl.ENUM_SERVICE_STATUSW.referent_id" FT_UINT32 BASE_DEC NULL 0 NULL HFILL
+
+MANUAL svcctl_dissect_EnumServicesStatusW_response
+
+ETT_FIELD ett_svcctl_service
+ETT_FIELD ett_svcctl_service_name
+ETT_FIELD ett_svcctl_display_name
+
+NOEMIT svcctl_dissect_element_EnumServicesStatusW_services
+NOEMIT svcctl_dissect_element_EnumServicesStatusW_bytes_needed
+NOEMIT svcctl_dissect_element_EnumServicesStatusW_services_returned
+
+CODE START
+
+/* ENUM_SERVICE_STATUSW Caveats
+ https://github.com/fortra/impacket/blob/4888172ce638910104da4bda2c3301c24e17564c/impacket/dcerpc/v5/scmr.py#L1274
+*/
+static int
+svcctl_dissect_struct_ENUM_SERVICE_STATUSW_ptr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, int hf_index, gint starting_offset);
+static int
+svcctl_dissect_struct_ENUM_SERVICE_STATUSW_ptr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, int hf_index, gint starting_offset)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ proto_tree *tr = NULL;
+ int old_offset;
+ guint32 _referent_id = 0;
+
+ ALIGN_TO_5_BYTES;
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_svcctl_ENUM_SERVICE_STATUSW);
+ }
+
+ // Service Name
+ tr = proto_tree_add_subtree(tree, tvb, offset, 4, ett_svcctl_service_name, NULL, "Pointer to Service Name");
+ offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_referent_id, 0, &_referent_id);
+ dissect_null_term_wstring(tvb, starting_offset + _referent_id, pinfo, tr, drep, hf_svcctl_ENUM_SERVICE_STATUSW_service_name , 0);
+
+ // Display Name
+ tr = proto_tree_add_subtree(tree, tvb, offset, 4, ett_svcctl_display_name, NULL, "Pointer to Display Name");
+ offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_referent_id, 0, &_referent_id);
+ dissect_null_term_wstring(tvb, starting_offset + _referent_id, pinfo, tr, drep, hf_svcctl_ENUM_SERVICE_STATUSW_display_name , 0);
+
+ // Status
+ offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_status(tvb, offset, pinfo, tree, di, drep);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_5_BYTES;
+ }
+
+ return offset;
+}
+
+/* REnumServicesStatusW
+ https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-scmr/22b4ff3d-29c6-481f-b598-8ce66a46944a
+*/
+static int
+svcctl_dissect_EnumServicesStatusW_response(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ guint32 status;
+ guint32 services_returned= 0;
+ proto_item *item;
+ proto_tree *tr = NULL;
+ gint services_buffer_offset;
+ gint payload_starting_offset = offset;
+ guint64 buffer_size = 0;
+
+ ALIGN_TO_5_BYTES
+
+ di->dcerpc_procedure_name="EnumServicesStatusW";
+
+ tr = proto_tree_add_subtree(tree, tvb, offset, 0, ett_svcctl_service, &item, "Pointer to Services Status");
+
+ // Services Buffer Size
+ offset = dissect_ndr_uint3264(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_buffer_size, &buffer_size);
+ services_buffer_offset = offset;
+
+ offset += (int)buffer_size;
+
+ proto_item_set_len(item, offset-payload_starting_offset);
+
+ ALIGN_TO_4_BYTES
+
+ // Bytes Needed
+ offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_bytes_needed, 0);
+
+ // Services Returned
+ offset = PIDL_dissect_uint32_val( tvb, offset, pinfo, tree, di, drep
+ , hf_svcctl_svcctl_EnumServicesStatusW_services_returned
+ , 0, &services_returned);
+
+ // Services
+ if (services_returned > 0){
+ payload_starting_offset = services_buffer_offset;
+ for(unsigned idx = 0; idx < services_returned ; ++idx){
+ services_buffer_offset = svcctl_dissect_struct_ENUM_SERVICE_STATUSW_ptr( tvb, services_buffer_offset
+ , pinfo, tr, di, drep
+ , hf_svcctl_svcctl_EnumDependentServicesW_service_status
+ , payload_starting_offset);
+ }
+ dissect_deferred_pointers(pinfo, tvb, services_buffer_offset, di, drep);
+ }
+
+ // Resume Index
+ offset = svcctl_dissect_element_EnumServicesStatusW_resume_index(tvb, offset, pinfo, tree, di, drep);
+
+ offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
+
+ // Return status
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
+
+ if (status != 0)
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str(status, WERR_errors, "Unknown DOS error 0x%08x"));
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/svcctl/svcctl.idl b/epan/dissectors/pidl/svcctl/svcctl.idl
new file mode 100644
index 00000000..b6d2118d
--- /dev/null
+++ b/epan/dissectors/pidl/svcctl/svcctl.idl
@@ -0,0 +1,868 @@
+#include "idl_types.h"
+
+/*
+ svcctl interface definitions
+*/
+[ uuid("367abb81-9844-35f1-ad32-98f038001003"),
+ version(2.0),
+ pointer_default(unique),
+ endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"),
+ helpstring("Service Control")
+]
+interface svcctl
+{
+ typedef bitmap security_secinfo security_secinfo;
+
+ const int MAX_SERVICE_NAME_LENGTH = 256;
+ const short SC_MAX_DEPEND_SIZE = 4 * 1024;
+ const short SC_MAX_NAME_LENGTH = MAX_SERVICE_NAME_LENGTH + 1;
+ const short SC_MAX_PATH_LENGTH = 32 * 1024;
+ const short SC_MAX_PWD_SIZE = 514;
+ const short SC_MAX_COMPUTER_NAME_LENGTH = 1024;
+ const short SC_MAX_ACCOUNT_NAME_LENGTH = 2 * 1024;
+ const short SC_MAX_COMMENT_LENGTH = 128;
+ const short SC_MAX_ARGUMENT_LENGTH = 1024;
+ const short SC_MAX_ARGUMENTS = 1024;
+
+ typedef struct {
+ uint32 is_locked;
+ [string,charset(UTF16)] uint16 *lock_owner;
+ uint32 lock_duration;
+ } SERVICE_LOCK_STATUS;
+
+ typedef [v1_enum] enum {
+ SVCCTL_STOPPED = 0x00000001,
+ SVCCTL_START_PENDING = 0x00000002,
+ SVCCTL_STOP_PENDING = 0x00000003,
+ SVCCTL_RUNNING = 0x00000004,
+ SVCCTL_CONTINUE_PENDING = 0x00000005,
+ SVCCTL_PAUSE_PENDING = 0x00000006,
+ SVCCTL_PAUSED = 0x00000007
+ } svcctl_ServiceStatus;
+
+ typedef [v1_enum] enum {
+ SERVICE_TYPE_KERNEL_DRIVER = 0x00000001,
+ SERVICE_TYPE_FS_DRIVER = 0x00000002,
+ SERVICE_TYPE_ADAPTER = 0x00000004,
+ SERVICE_TYPE_RECOGNIZER_DRIVER = 0x00000008,
+ SERVICE_TYPE_DRIVER=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER,
+ SERVICE_TYPE_WIN32_OWN_PROCESS = 0x00000010,
+ SERVICE_TYPE_WIN32_SHARE_PROCESS = 0x00000020,
+ SERVICE_TYPE_USER_OWN_PROCESS = 0x00000050,
+ SERVICE_TYPE_USER_SHARE_PROCESS = 0x00000060,
+ SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS,
+ SERVICE_TYPE_INTERACTIVE_PROCESS = 0x00000100
+ } svcctl_ServiceType;
+
+ const int SVCCTL_ACCEPT_NONE = 0x00000000;
+
+ typedef [bitmap32bit] bitmap {
+ SERVICE_ACCEPT_STOP = 0x00000001,
+ SERVICE_ACCEPT_PAUSE_CONTINUE = 0x00000002,
+ SERVICE_ACCEPT_SHUTDOWN = 0x00000004,
+ SERVICE_ACCEPT_PARAMCHANGE = 0x00000008,
+ SERVICE_ACCEPT_NETBINDCHANGE = 0x00000010,
+ SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x00000020,
+ SERVICE_ACCEPT_POWEREVENT = 0x00000040,
+ SERVICE_ACCEPT_SESSIONCHANGE = 0x00000080,
+ SERVICE_ACCEPT_PRESHUTDOWN = 0x00000100,
+ SERVICE_ACCEPT_TIMECHANGE = 0x00000200,
+ SERVICE_ACCEPT_TRIGGEREVENT = 0x00000400,
+ SERVICE_ACCEPT_USERMODEREBOOT = 0x00000800
+ } svcctl_ControlsAccepted;
+
+ typedef struct {
+ svcctl_ServiceType type;
+ svcctl_ServiceStatus state;
+ svcctl_ControlsAccepted controls_accepted;
+ WERROR win32_exit_code;
+ uint32 service_exit_code;
+ uint32 check_point;
+ uint32 wait_hint;
+ } SERVICE_STATUS;
+
+ typedef [v1_enum] enum {
+ SERVICE_RUNS_IN_NONSYSTEM_ORNOTRUNNING = 0x00000000,
+ SERVICE_RUNS_IN_SYSTEM_PROCESS = 0x00000001
+ } svcctl_ServiceFlags;
+
+ typedef [public] struct {
+ svcctl_ServiceType type;
+ svcctl_ServiceStatus state;
+ svcctl_ControlsAccepted controls_accepted;
+ WERROR win32_exit_code;
+ uint32 service_exit_code;
+ uint32 check_point;
+ uint32 wait_hint;
+ uint32 process_id;
+ svcctl_ServiceFlags service_flags;
+ } SERVICE_STATUS_PROCESS;
+
+ /* ENUM_SERVICE_STATUSW
+ https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-scmr/79f17326-c138-4fbc-8170-5c11c4b3ca79
+ */
+ typedef [public,gensize] struct {
+ nstring *service_name;
+ nstring *display_name;
+ SERVICE_STATUS status;
+ } ENUM_SERVICE_STATUSW;
+
+ typedef [public,gensize] struct {
+ astring *service_name;
+ astring *display_name;
+ SERVICE_STATUS status;
+ } ENUM_SERVICE_STATUSA;
+
+ /* Service Controls
+ https://learn.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-controlservice
+ Range 128 to 255 - User-defined control code
+ */
+ typedef [v1_enum] enum {
+ SVCCTL_CONTROL_STOP = 0x00000001,
+ SVCCTL_CONTROL_PAUSE = 0x00000002,
+ SVCCTL_CONTROL_CONTINUE = 0x00000003,
+ SVCCTL_CONTROL_INTERROGATE = 0x00000004,
+ SVCCTL_CONTROL_SHUTDOWN = 0x00000005,
+ SERVICE_CONTROL_PARAMCHANGE = 0x00000006,
+ SERVICE_CONTROL_NETBINDADD = 0x00000007,
+ SERVICE_CONTROL_NETBINDREMOVE = 0x00000008,
+ SERVICE_CONTROL_NETBINDENABLE = 0x00000009,
+ SERVICE_CONTROL_NETBINDDISABLE = 0x0000000A
+ } SERVICE_CONTROL;
+
+ typedef [v1_enum] enum {
+ SVCCTL_SVC_ERROR_IGNORE = 0x00000000,
+ SVCCTL_SVC_ERROR_NORMAL = 0x00000001,
+ SVCCTL_SVC_ERROR_CRITICAL = 0x00000002,
+ SVCCTL_SVC_ERROR_SEVERE = 0x00000003
+ } svcctl_ErrorControl;
+
+ typedef [v1_enum] enum {
+ SVCCTL_BOOT_START = 0x00000000,
+ SVCCTL_SYSTEM_START = 0x00000001,
+ SVCCTL_AUTO_START = 0x00000002,
+ SVCCTL_DEMAND_START = 0x00000003,
+ SVCCTL_DISABLED = 0x00000004
+ } svcctl_StartType;
+
+ typedef [v1_enum] enum {
+ SERVICE_STATE_ACTIVE = 0x00000001,
+ SERVICE_STATE_INACTIVE = 0x00000002,
+ SERVICE_STATE_ALL = ( SERVICE_STATE_ACTIVE | SERVICE_STATE_INACTIVE )
+ } svcctl_ServiceState;
+
+ /* Service Control Manager Bits */
+ typedef [bitmap32bit] bitmap {
+ SC_RIGHT_MGR_CONNECT = 0x00000001,
+ SC_RIGHT_MGR_CREATE_SERVICE = 0x00000002,
+ SC_RIGHT_MGR_ENUMERATE_SERVICE = 0x00000004,
+ SC_RIGHT_MGR_LOCK = 0x00000008,
+ SC_RIGHT_MGR_QUERY_LOCK_STATUS = 0x00000010,
+ SC_RIGHT_MGR_MODIFY_BOOT_CONFIG = 0x00000020,
+ SC_RIGHT_MGR_ALL_ACCESS = 0x000F003F
+ } svcctl_MgrAccessMask;
+
+ const int SC_MANAGER_READ_ACCESS =
+ (SEC_STD_READ_CONTROL |
+ SC_RIGHT_MGR_CONNECT |
+ SC_RIGHT_MGR_ENUMERATE_SERVICE |
+ SC_RIGHT_MGR_QUERY_LOCK_STATUS);
+
+ const int SC_MANAGER_EXECUTE_ACCESS = SC_MANAGER_READ_ACCESS;
+
+ const int SC_MANAGER_WRITE_ACCESS =
+ (SEC_STD_REQUIRED |
+ SC_MANAGER_READ_ACCESS |
+ SC_RIGHT_MGR_CREATE_SERVICE |
+ SC_RIGHT_MGR_LOCK |
+ SC_RIGHT_MGR_MODIFY_BOOT_CONFIG);
+
+ const int SC_MANAGER_ALL_ACCESS = SC_MANAGER_WRITE_ACCESS;
+
+
+ /* Service Object Bits */
+ typedef [bitmap32bit] bitmap {
+ SC_RIGHT_SVC_QUERY_CONFIG = 0x00000001,
+ SC_RIGHT_SVC_CHANGE_CONFIG = 0x00000002,
+ SC_RIGHT_SVC_QUERY_STATUS = 0x00000004,
+ SC_RIGHT_SVC_ENUMERATE_DEPENDENTS = 0x00000008,
+ SC_RIGHT_SVC_START = 0x00000010,
+ SC_RIGHT_SVC_STOP = 0x00000020,
+ SC_RIGHT_SVC_PAUSE_CONTINUE = 0x00000040,
+ SC_RIGHT_SVC_INTERROGATE = 0x00000080,
+ SC_RIGHT_SVC_USER_DEFINED_CONTROL = 0x00000100
+ } svcctl_ServiceAccessMask;
+
+ const int SERVICE_READ_ACCESS =
+ (SEC_STD_READ_CONTROL |
+ SC_RIGHT_SVC_ENUMERATE_DEPENDENTS |
+ SC_RIGHT_SVC_INTERROGATE |
+ SC_RIGHT_SVC_QUERY_CONFIG |
+ SC_RIGHT_SVC_QUERY_STATUS |
+ SC_RIGHT_SVC_USER_DEFINED_CONTROL);
+
+ const int SERVICE_EXECUTE_ACCESS =
+ (SERVICE_READ_ACCESS |
+ SC_RIGHT_SVC_START |
+ SC_RIGHT_SVC_STOP |
+ SC_RIGHT_SVC_PAUSE_CONTINUE);
+
+ const int SERVICE_WRITE_ACCESS =
+ (SEC_STD_REQUIRED |
+ SERVICE_READ_ACCESS |
+ SERVICE_EXECUTE_ACCESS |
+ SC_RIGHT_SVC_CHANGE_CONFIG);
+
+ const int SERVICE_ALL_ACCESS = SERVICE_WRITE_ACCESS;
+
+ typedef [public,gensize] struct {
+ svcctl_ServiceType service_type;
+ svcctl_StartType start_type;
+ svcctl_ErrorControl error_control;
+ [string,charset(UTF16),range(0,8192)] uint16 *executablepath;
+ [string,charset(UTF16),range(0,8192)] uint16 *loadordergroup;
+ uint32 tag_id;
+ [string,charset(UTF16),range(0,8192)] uint16 *dependencies;
+ [string,charset(UTF16),range(0,8192)] uint16 *startname;
+ [string,charset(UTF16),range(0,8192)] uint16 *displayname;
+ } QUERY_SERVICE_CONFIG;
+
+ const int SC_MAX_ARGUMENT_LENGTH = 1024;
+ const int SC_MAX_ARGUMENTS = 1024;
+
+ typedef struct {
+ [string,charset(UTF16),range(0,SC_MAX_ARGUMENT_LENGTH)] uint16 *string;
+ } svcctl_ArgumentString;
+
+ typedef struct {
+ [string,charset(ASCII),range(0,SC_MAX_ARGUMENT_LENGTH)] uint8 *string;
+ } svcctl_ArgumentStringA;
+
+ typedef [v1_enum] enum {
+ SERVICE_CONFIG_DESCRIPTION = 0x00000001,
+ SERVICE_CONFIG_FAILURE_ACTIONS = 0x00000002
+ } svcctl_ConfigLevel;
+
+ typedef [v1_enum] enum {
+ SVC_STATUS_PROCESS_INFO = 0x00000000
+ } svcctl_StatusLevel;
+
+ /*****************/
+ /* Function 0x00 */
+ WERROR svcctl_CloseServiceHandle(
+ [in,out,ref] policy_handle *object_handle
+ );
+
+ /*****************/
+ /* Function 0x01 */
+ WERROR svcctl_ControlService(
+ [in,ref] policy_handle *service_handle,
+ [in] SERVICE_CONTROL control,
+ [out,ref] SERVICE_STATUS *service_status
+ );
+
+ /*****************/
+ /* Function 0x02 */
+ WERROR svcctl_DeleteService(
+ [in,ref] policy_handle *service_handle
+ );
+
+ /*****************/
+ /* Function 0x03 */
+ WERROR svcctl_LockServiceDatabase(
+ [in,ref] policy_handle *scm_handle,
+ [out,ref] policy_handle *lock_handle
+ );
+
+ /*****************/
+ /* Function 0x04 */
+ WERROR svcctl_QueryServiceObjectSecurity(
+ [in] policy_handle *service_handle,
+ [in] security_secinfo security_flags,
+ [out,ref,size_is(offered)] uint8 *security_descriptor,
+ [in,range(0,0x40000)] uint32 offered,
+ [out,ref,range(0,0x40000)] uint32 *bytes_needed
+ );
+
+ /*****************/
+ /* Function 0x05 */
+ WERROR svcctl_SetServiceObjectSecurity(
+ [in] policy_handle *service_handle,
+ [in] security_secinfo security_flags,
+ [in,ref,size_is(offered)] uint8 *security_descriptor,
+ [in] uint32 offered
+ );
+
+ /*****************/
+ /* Function 0x06 */
+ WERROR svcctl_QueryServiceStatus(
+ [in,ref] policy_handle *service_handle,
+ [out,ref] SERVICE_STATUS *service_status
+ );
+
+ /*****************/
+ /* Function 0x07 */
+ WERROR svcctl_SetServiceStatus(
+ [in,ref] policy_handle *service_handle,
+ [in,ref] SERVICE_STATUS *service_status
+ );
+
+ /*****************/
+ /* Function 0x08 */
+ WERROR svcctl_UnlockServiceDatabase(
+ [in,out,ref] policy_handle *lock_handle
+ );
+
+ /*****************/
+ /* Function 0x09 */
+ WERROR svcctl_NotifyBootConfigStatus(
+ [in, string, unique, charset(UTF16)] uint16 *machine_name,
+ [in] boolean32 boot_acceptable
+ );
+
+ /*****************/
+ /* Internal Function 0x0a */
+ WERROR svcctl_SCSetServiceBitsW(
+ [in,ref] policy_handle *service_handle,
+ [in] uint32 service_bits,
+ [in] boolean32 set_bits_on,
+ [in] boolean32 update_immediately,
+ [in, string, unique, charset(UTF16)] uint16 *lpString
+ );
+
+ /*****************/
+ /* Function 0x0b */
+ WERROR svcctl_ChangeServiceConfigW(
+ [in,ref] policy_handle *service_handle,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_StartType start_type,
+ [in] svcctl_ErrorControl error_control,
+ [in,unique,string,charset(UTF16)] uint16 *binary_path,
+ [in,unique,string,charset(UTF16)] uint16 *load_order_group,
+ [in,out,unique] uint32 *tag_id,
+ [in,unique,size_is(dwDependSize),string,charset(UTF16)] uint16 *dependencies,
+ [in,range(0, SC_MAX_DEPEND_SIZE)] uint32 dwDependSize,
+ [in,unique,range(0, SC_MAX_ACCOUNT_NAME_LENGTH),string,charset(UTF16)] uint16 *service_start_name,
+ [in,unique,size_is(dwPwSize),string,charset(UTF16)] uint16 *password,
+ [in,range(0, SC_MAX_PWD_SIZE)] uint32 dwPwSize,
+ [in,unique,range(0, SC_MAX_NAME_LENGTH),string,charset(UTF16)] uint16 *display_name
+ );
+
+ /*****************/
+ /* Function 0x0c */
+ WERROR svcctl_CreateServiceW(
+ [in,ref] policy_handle *scm_handle,
+ [in,string,charset(UTF16)] uint16 ServiceName[],
+ [in,unique,string,charset(UTF16)] uint16 *DisplayName,
+ [in] uint32 desired_access,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_StartType start_type,
+ [in] svcctl_ErrorControl error_control,
+ [in,string,charset(UTF16)] uint16 binary_path[],
+ [in,unique,string,charset(UTF16)] uint16 *LoadOrderGroup,
+ [in,out,unique] uint32 *tag_id,
+ [in,unique,size_is(dependencies_size)] uint8 *dependencies,
+ [in] uint32 dependencies_size,
+ [in,unique,string,charset(UTF16)] uint16 *service_start_name,
+ [in,unique,size_is(password_size)] uint8 *password,
+ [in] uint32 password_size,
+ [out,ref] policy_handle *service_handle
+ );
+
+ /*****************/
+ /* Function 0x0d */
+ WERROR svcctl_EnumDependentServicesW(
+ [in,ref] policy_handle *service_handle,
+ [in] svcctl_ServiceState service_state,
+ [out,ref,size_is(offered)] ENUM_SERVICE_STATUSW *service_status,
+ [in,range(0,0x40000)] uint32 offered,
+ [out,ref,range(0,0x40000)] uint32 *bytesneeded,
+ [out,ref,range(0,0x40000)] uint32 *services_returned
+ );
+
+ /*****************/
+ /* Function 0x0e */
+ WERROR svcctl_EnumServicesStatusW(
+ [in,ref] policy_handle *scm_handle,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_ServiceState service_state,
+ [out,ref,size_is(offered)] uint8 *services,
+ [in,range(0,0x40000)] uint32 offered,
+ [out,ref,range(0,0x40000)] uint32 *bytes_needed,
+ [out,ref,range(0,0x40000)] uint32 *services_returned,
+ [in,out,unique] uint32 *resume_index
+ );
+
+ /*****************/
+ /* Function 0x0f */
+ WERROR svcctl_OpenSCManagerW(
+ [in,unique,string,charset(UTF16)] uint16 *MachineName,
+ [in,unique,string,charset(UTF16)] uint16 *DatabaseName,
+ [in] svcctl_MgrAccessMask access_mask,
+ [out,ref] policy_handle *scm_handle
+ );
+
+ /*****************/
+ /* Function 0x10 */
+ WERROR svcctl_OpenServiceW(
+ [in,ref] policy_handle *scm_handle,
+ [in,string,charset(UTF16)] uint16 ServiceName[],
+ [in] svcctl_ServiceAccessMask access_mask,
+ [out,ref] policy_handle *service_handle
+ );
+
+ /*****************/
+ /* Function 0x11 */
+ WERROR svcctl_QueryServiceConfigW(
+ [in,ref] policy_handle *service_handle,
+ [out] QUERY_SERVICE_CONFIG *service_config,
+ [in,range(0,8192)] uint32 offered,
+ [out,ref,range(0,8192)] uint32 *needed
+ );
+
+ /*****************/
+ /* Function 0x12 */
+ WERROR svcctl_QueryServiceLockStatusW(
+ [in,ref] policy_handle *scm_handle,
+ [out,ref] SERVICE_LOCK_STATUS *lock_status,
+ [in] uint32 offered,
+ [out,ref] uint32 *needed
+ );
+
+ /*****************/
+ /* Function 0x13 */
+ WERROR svcctl_StartServiceW(
+ [in,ref] policy_handle *service_handle,
+ [in,range(0,SC_MAX_ARGUMENTS)] uint32 NumArgs,
+ [in,unique,size_is(NumArgs)] svcctl_ArgumentString *Arguments
+ );
+
+ /*****************/
+ /* Function 0x14 */
+ WERROR svcctl_GetServiceDisplayNameW(
+ [in,ref] policy_handle *scm_handle,
+ [in,unique,string,charset(UTF16)] uint16 *service_name,
+ [out,ref,string,charset(UTF16)] uint16 **display_name,
+ [in,out,unique] uint32 *display_name_length
+ );
+
+ /*****************/
+ /* Function 0x15 */
+ WERROR svcctl_GetServiceKeyNameW(
+ [in,ref] policy_handle *scm_handle,
+ [in,unique,string,charset(UTF16)] uint16 *display_name,
+ [out,ref,string,charset(UTF16)] uint16 **service_name,
+ [in,out,unique] uint32 *service_name_length
+ );
+
+ /*****************/
+ /* Function 0x16 */
+ WERROR svcctl_SCSetServiceBitsA(
+ [in,ref] policy_handle *handle,
+ [in] uint32 service_bits,
+ [in] boolean32 set_bits_on,
+ [in] boolean32 update_immediately,
+ [in, string, unique, charset(UTF16)] uint16 *lpString
+ );
+
+ /*****************/
+ /* Function 0x17 */
+ WERROR svcctl_ChangeServiceConfigA(
+ [in,ref] policy_handle *service_handle,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_StartType start_type,
+ [in] svcctl_ErrorControl error_control,
+ [in,unique] astring *binary_path,
+ [in,unique] astring *load_order_group,
+ [in,out,unique] uint32 *tag_id,
+ [in,unique] astring *dependencies,
+ [in,unique] astring *service_start_name,
+ [in,unique] astring *password,
+ [in,unique] astring *display_name
+ );
+
+ /*****************/
+ /* Function 0x18 */
+ WERROR svcctl_CreateServiceA(
+ [in,ref] policy_handle *scm_handle,
+ [in,string,charset(ASCII)] uint8 ServiceName[],
+ [in,unique,string,charset(ASCII)] uint8 *DisplayName,
+ [in] uint32 desired_access,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_StartType start_type,
+ [in] svcctl_ErrorControl error_control,
+ [in,string,charset(ASCII)] uint8 binary_path[],
+ [in,unique,string,charset(ASCII)] uint8 *LoadOrderGroupKey,
+ [in,out,unique] uint32 *tag_id,
+ [in,unique,size_is(dependencies_size)] astring *dependencies,
+ [in] uint32 dependencies_size,
+ [in,string,unique,charset(ASCII)] uint8 *service_start_name,
+ [in,unique,size_is(password_size)] uint8 *password,
+ [in] uint32 password_size,
+ [out,ref] policy_handle *service_handle
+ );
+
+ /*****************/
+ /* Function 0x19 */
+ WERROR svcctl_EnumDependentServicesA(
+ [in,ref] policy_handle *service_handle,
+ [in] svcctl_ServiceState state,
+ [out,ref] ENUM_SERVICE_STATUSA *service_status,
+ [in] uint32 offered,
+ [out,ref] uint32 *needed,
+ [out,ref] uint32 *services_returned
+ );
+
+ /*****************/
+ /* Function 0x1a */
+ WERROR svcctl_EnumServicesStatusA(
+ [in,ref] policy_handle *scm_handle,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_ServiceState service_state,
+ [in] uint32 offered,
+ [out,size_is(offered)] uint8 service[*],
+ [out,ref] uint32 *needed,
+ [out,ref] uint32 *services_returned,
+ [in,out,unique] uint32 *resume_handle
+ );
+
+ /*****************/
+ /* Function 0x1b */
+ WERROR svcctl_OpenSCManagerA(
+ [in,unique,string,charset(ASCII)] uint8 *MachineName,
+ [in,unique,string,charset(ASCII)] uint8 *DatabaseName,
+ [in] svcctl_MgrAccessMask access_mask,
+ [out,ref] policy_handle *scm_handle
+ );
+
+ /*****************/
+ /* Function 0x1c */
+ WERROR svcctl_OpenServiceA(
+ [in,ref] policy_handle *scm_handle,
+ [in,string,charset(ASCII)] uint8 ServiceName[],
+ [in] svcctl_MgrAccessMask access_mask,
+ [out,ref] policy_handle *service_handle
+ );
+
+ /*****************/
+ /* Function 0x1d */
+ WERROR svcctl_QueryServiceConfigA(
+ [in,ref] policy_handle *service_handle,
+ [out, size_is(cbBufSize)] uint8 query[], /* TODO: QUERYU_SERVICE_CONFIG */
+ [in] uint32 offered,
+ [out,ref] uint32 *needed
+ );
+
+ /*****************/
+ /* Function 0x1e */
+ WERROR svcctl_QueryServiceLockStatusA(
+ [in,ref] policy_handle *scm_handle,
+ [out,ref] SERVICE_LOCK_STATUS *lock_status,
+ [in] uint32 offered,
+ [out,ref] uint32 *needed
+ );
+
+ /*****************/
+ /* Function 0x1f */
+ WERROR svcctl_StartServiceA(
+ [in,ref] policy_handle *service_handle,
+ [in] uint32 NumArgs,
+ [in,unique,size_is(NumArgs)] svcctl_ArgumentStringA *Arguments
+ );
+
+ /*****************/
+ /* Function 0x20 */
+ WERROR svcctl_GetServiceDisplayNameA(
+ [in,ref] policy_handle *handle,
+ [in,unique] astring *service_name,
+ [out,ref,string,charset(ASCII)] uint8 **display_name,
+ [in,out,unique] uint32 *display_name_length
+ );
+
+ /*****************/
+ /* Function 0x21 */
+ WERROR svcctl_GetServiceKeyNameA(
+ [in,ref] policy_handle *scm_handle,
+ [in,unique] astring *service_name,
+ [out,ref,string,charset(ASCII)] uint8 **key_name,
+ [in,out,unique] uint32 *display_name_length
+ );
+
+ /*****************/
+ /* Function 0x22 */
+ WERROR svcctl_GetCurrentGroupeStateW(
+ [in,ref] policy_handle *handle,
+ [in, string, unique, charset(UTF16)] uint16 *lpLoadOrderGroup,
+ [out,ref] uint32 *state
+ );
+
+ /*****************/
+ /* Function 0x23 */
+ WERROR svcctl_EnumServiceGroupW(
+ [in] policy_handle *scm_handle,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_ServiceState service_state,
+ [out, size_is(cbBufSize)] uint8 lpBuffer[],
+ [in, range(0, 1024 * 256)] uint32 cbBufSize,
+ [out,range(0, 1024 * 256)] uint32 *pcbBytesNeeded,
+ [out,range(0, 1024 * 256)] uint32 *lpServicesReturned,
+ [in,out,unique] uint32 *ResumeIndex,
+ [in,string,unique,range(0, SC_MAX_NAME_LENGTH),charset(UTF16)] uint16 *pszGroupName
+ );
+
+ /*****************/
+ /* Function 0x24 */
+ WERROR svcctl_ChangeServiceConfig2A(
+ [in,ref] policy_handle *service_handle,
+ [in] uint32 info_level,
+ [in,unique] uint8 *info /* TODO */
+ );
+
+ /*****************/
+ /* Function 0x25 */
+ WERROR svcctl_ChangeServiceConfig2W(
+ [in,ref] policy_handle *handle,
+ [in] uint32 info_level,
+ [in,unique] uint8 *info /* TODO */
+ );
+
+ /*****************/
+ /* Function 0x26 */
+ WERROR svcctl_QueryServiceConfig2A(
+ [in,ref] policy_handle *handle,
+ [in] svcctl_ConfigLevel info_level,
+ [out, size_is(offered)] uint8 buffer[], /* TODO */
+ [in] uint32 offered,
+ [out,ref] uint32 *needed
+ );
+
+ /*****************/
+ /* Function 0x27 */
+ WERROR svcctl_QueryServiceConfig2W(
+ [in,ref] policy_handle *handle,
+ [in] svcctl_ConfigLevel info_level,
+ [out,ref,size_is(offered)] uint8 *buffer, /* TODO */
+ [in,range(0,8192)] uint32 offered,
+ [out,ref,range(0,8192)] uint32 *needed
+ );
+
+ /*****************/
+ /* Function 0x28 */
+ WERROR svcctl_QueryServiceStatusEx(
+ [in,ref] policy_handle *handle,
+ [in] svcctl_StatusLevel info_level,
+ [out,ref,size_is(offered)] uint8 *buffer, /* TODO */
+ [in,range(0,8192)] uint32 offered,
+ [out,ref,range(0,8192)] uint32 *needed
+ );
+
+ /*****************/
+ /* Function 0x29 */
+ WERROR EnumServicesStatusExA(
+ [in,ref] policy_handle *scm_handle,
+ [in] uint32 info_level, /* TODO */
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_ServiceState state,
+ [out, size_is(offered)] uint8 services[],
+ [in] uint32 offered,
+ [out,ref] uint32 *needed,
+ [out,ref] uint32 *service_returned,
+ [in,out,unique] uint32 *resume_handle,
+ [out,ref,string,charset(UTF16)] uint16 **group_name
+ );
+
+ /*****************/
+ /* Function 0x2a */
+ WERROR EnumServicesStatusExW(
+ [in,ref] policy_handle *scmanager,
+ [in] uint32 info_level, /* TODO */
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_ServiceState state,
+ [out,ref,size_is(offered)] uint8 *services,
+ [in,range(0,0x40000)] uint32 offered,
+ [out,ref,range(0,0x40000)] uint32 *needed,
+ [out,ref,range(0,0x40000)] uint32 *service_returned,
+ [in,out,unique,range(0,0x40000)] uint32 *resume_handle,
+ [in,unique,string,charset(UTF16)] uint16 *group_name
+ );
+
+ /*****************/
+ /* Function 0x2b */
+ [todo] WERROR svcctl_ScBroadcastServiceControlMessage(
+ );
+
+ /*****************/
+ /* Function 0x2c */
+ WERROR svcctl_CreateServiceWOW64A(
+ [in,ref] policy_handle *scm_handle,
+ [in,string,charset(ASCII)] uint8 ServiceName[],
+ [in,unique,string,charset(ASCII)] uint8 *DisplayName,
+ [in] uint32 desired_access,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_StartType start_type,
+ [in] svcctl_ErrorControl error_control,
+ [in,string,charset(ASCII)] uint8 binary_path[],
+ [in,unique,string,charset(ASCII)] uint8 *LoadOrderGroupKey,
+ [in,out,unique] uint32 *tag_id,
+ [in,unique,size_is(dependencies_size)] astring *dependencies,
+ [in] uint32 dependencies_size,
+ [in,unique,string,charset(ASCII)] uint8 *service_start_name,
+ [in,unique,size_is(password_size)] uint8 *password,
+ [in] uint32 password_size,
+ [out,ref] policy_handle *handle
+ );
+
+ /*****************/
+ /* Function 0x2d */
+ WERROR svcctl_CreateServiceWOW64W(
+ [in,ref] policy_handle *scm_handle,
+ [in,string,charset(UTF16)] uint16 ServiceName[],
+ [in,unique,string,charset(UTF16)] uint16 *DisplayName,
+ [in] uint32 desired_access,
+ [in] svcctl_ServiceType service_type,
+ [in] svcctl_StartType start_type,
+ [in] svcctl_ErrorControl error_control,
+ [in,string,charset(UTF16)] uint16 binary_path[],
+ [in,unique,string,charset(UTF16)] uint16 *LoadOrderGroupKey,
+ [in,out,unique] uint32 *tag_id,
+ [in,unique,size_is(dependencies_size)] uint8 *dependencies,
+ [in] uint32 dependencies_size,
+ [in,unique,string,charset(UTF16)] uint16 *service_start_name,
+ [in,unique,size_is(password_size)] uint8 *password,
+ [in] uint32 password_size,
+ [out,ref] policy_handle *handle
+ );
+
+ /*****************/
+ /* Function 0x2e */
+ [todo] WERROR svcctl_ScQueryServiceTagInfo(
+ );
+
+ /*****************/
+ /* Function 0x2f */
+ [todo] WERROR svcctl_NotifyServiceStatusChange(
+ );
+
+ /*****************/
+ /* Function 0x30 */
+ [todo] WERROR svcctl_GetNotifyResults(
+ );
+
+ /*****************/
+ /* Function 0x31 */
+ [todo] WERROR svcctl_CloseNotifyHandle(
+ );
+
+ /*****************/
+ /* Function 0x32 */
+ [todo] WERROR svcctl_ControlServiceExA(
+ );
+
+ /*****************/
+ /* Function 0x33 */
+ [todo] WERROR svcctl_ControlServiceExW(
+ );
+
+ /*****************/
+ /* Function 0x34 */
+ [todo] WERROR svcctl_ScSendPnPMessage(
+ );
+
+ /*****************/
+ /* Function 0x35 */
+ [todo] WERROR svcctl_ScValidatePnPService(
+ );
+
+ /*****************/
+ /* Function 0x36 */
+ [todo] WERROR svcctl_ScOpenServiceStatusHandle(
+ );
+
+ /*****************/
+ /* Function 0x37 */
+ [todo] WERROR svcctl_ScQueryServiceConfig(
+ );
+
+ /*****************/
+ /* Function 0x38 */
+ WERROR svcctl_QueryServiceConfigEx(
+ [in,ref] policy_handle *service_handle,
+ [in] uint32 info_level
+ /*[out] SC_RPC_CONFIG_INFOW *pInfo - TODO */
+ );
+
+ /*****************/
+ /* Function 0x39 */
+ [todo] WERROR svcctl_ScRegisterPreshutdownRestart(
+ );
+
+ /*****************/
+ /* Function 0x3a */
+ [todo] WERROR svcctl_ScReparseServiceDatabase(
+ );
+
+ /*****************/
+ /* Function 0x3b */
+ [todo] WERROR svcctl_QueryUserServiceName(
+ );
+
+ /*****************/
+ /* Function 0x3c */
+ WERROR svcctl_CreateWowService(
+ [in,ref] policy_handle *scm_handle,
+ [in,string,charset(UTF16)] uint16 ServiceName[],
+ [in,unique,string,charset(UTF16)] uint16 *DisplayName,
+ [in] uint32 desired_access,
+ [in] uint32 service_type,
+ [in] svcctl_StartType start_type,
+ [in] svcctl_ErrorControl error_control,
+ [in,string,charset(UTF16)] uint16 binary_path[],
+ [in,unique,string,charset(UTF16)] uint16 *LoadOrderGroupKey,
+ [in,out,unique] uint32 *tag_id,
+ [in,unique,size_is(dependencies_size)] uint8 *dependencies,
+ [in] uint32 dependencies_size,
+ [in,unique,string,charset(UTF16)] uint16 *service_start_name,
+ [in,unique,size_is(password_size)] uint8 *password,
+ [in] uint32 password_size,
+ [in] uint16 service_wow_type,
+ [out,ref] policy_handle *handle
+ );
+
+ /*****************/
+ /* Function 0x3d */
+ [todo] WERROR svcctl_GetServiceRegistryStateKey(
+ );
+
+ /*****************/
+ /* Function 0x3e */
+ [todo] WERROR svcctl_GetServiceDirectory(
+ );
+
+ /*****************/
+ /* Function 0x3f */
+ [todo] WERROR svcctl_GetServiceProcessToken(
+ );
+
+ /*****************/
+ /* Function 0x40 */
+
+ /* https://learn.microsoft.com/en-us/windows/win32/midl/handle-t
+ * Parameters of type handle_t (primitive handle parameters) are not transmitted on the network.
+ */
+ WERROR svcctl_OpenSCManager2(
+ /*[in,ref] handle_t *binding_handle,*/
+ [in,string,unique,charset(UTF16)] uint16 *database_name,
+ [in] uint32 desired_access,
+ [out,ref] policy_handle *handle
+ );
+
+ /*****************/
+ /* Function 0x41 */
+ [todo] WERROR svcctl_GetSharedServiceRegistryStateKey(
+ );
+
+ /*****************/
+ /* Function 0x42 */
+ [todo] WERROR svcctl_GetSharedServiceDirectory(
+ );
+}
diff --git a/epan/dissectors/pidl/winreg/winreg.cnf b/epan/dissectors/pidl/winreg/winreg.cnf
new file mode 100644
index 00000000..1a0fa396
--- /dev/null
+++ b/epan/dissectors/pidl/winreg/winreg.cnf
@@ -0,0 +1,234 @@
+TYPE lsa_StringLarge "offset=lsarpc_dissect_struct_lsa_StringLarge(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE winreg_Type "offset=misc_dissect_enum_winreg_Type(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_NONE BASE_NONE 0 NULL NULL
+IMPORT security_secinfo offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_GetKeySecurity_sec_info, NULL);
+
+#
+# Make all instances of an access mask use the same hf field display filter
+# name
+#
+HF_FIELD hf_winreg_access_mask "Access Mask" "winreg.access_mask" FT_UINT32 BASE_HEX NULL 0 "" "" ""
+HF_RENAME hf_winreg_winreg_OpenHKCR_access_mask hf_winreg_access_mask
+HF_RENAME hf_winreg_winreg_OpenHKLM_access_mask hf_winreg_access_mask
+HF_RENAME hf_winreg_winreg_OpenHKU_access_mask hf_winreg_access_mask
+HF_RENAME hf_winreg_winreg_CreateKey_access_mask hf_winreg_access_mask
+HF_RENAME hf_winreg_winreg_OpenHKCC_access_mask hf_winreg_access_mask
+HF_RENAME hf_winreg_winreg_OpenHKDD_access_mask hf_winreg_access_mask
+HF_RENAME hf_winreg_winreg_OpenHKPT_access_mask hf_winreg_access_mask
+HF_RENAME hf_winreg_winreg_OpenHKPN_access_mask hf_winreg_access_mask
+
+
+#
+# Make all instances of a system name use the same hf display filter name
+#
+HF_FIELD hf_winreg_system_name "System Name" "winreg.system_name" FT_UINT16 BASE_DEC NULL 0 "" "" ""
+HF_RENAME hf_winreg_winreg_OpenHKCR_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKCU_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKLM_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKPD_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKU_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKCC_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKDD_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKPT_system_name hf_winreg_system_name
+HF_RENAME hf_winreg_winreg_OpenHKPN_system_name hf_winreg_system_name
+
+
+#
+# make all policyhandles use the same hf display filter name
+#
+HF_FIELD hf_winreg_handle "Handle" "winreg.handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_winreg_winreg_OpenHKCR_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKCU_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKLM_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKPD_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKU_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_CloseKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_CreateKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_DeleteKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_DeleteValue_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_EnumKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_EnumValue_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_FlushKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_GetKeySecurity_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_LoadKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_NotifyChangeKeyValue_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_QueryInfoKey_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_QueryValue_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_SetKeySecurity_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_SetValue_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_GetVersion_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKCC_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKDD_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKPT_handle hf_winreg_handle
+HF_RENAME hf_winreg_winreg_OpenHKPN_handle hf_winreg_handle
+
+
+
+#
+# Make both instances of KeySecurityData resolve to the same
+# hf display filter field.
+#
+HF_FIELD hf_winreg_sd "KeySecurityData" "winreg.sd" FT_NONE BASE_NONE NULL 0 "" "" ""
+HF_RENAME hf_winreg_winreg_GetKeySecurity_sd hf_winreg_sd
+HF_RENAME hf_winreg_winreg_SetKeySecurity_sd hf_winreg_sd
+
+
+
+#
+# policyhandle tracking
+# This block is to specify where a policyhandle is opened and where it is
+# closed so that policyhandles when dissected contain nice info such as
+# [opened in xxx] [closed in yyy]
+#
+# Policyhandles are opened in these functions
+PARAM_VALUE winreg_dissect_element_OpenHKCR_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKCU_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKLM_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKPD_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKU_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKCC_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKDD_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKPT_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenHKPN_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_CreateKey_new_handle_ PIDL_POLHND_OPEN
+PARAM_VALUE winreg_dissect_element_OpenKey_handle_ PIDL_POLHND_OPEN
+# Policyhandles are closed in these functions
+PARAM_VALUE winreg_dissect_element_CloseKey_handle_ PIDL_POLHND_CLOSE
+
+
+# winreg_String
+#
+# Create a new type to handle winreg_String so that we can get nice and
+# pretty dissection of the strings contained within winreg
+TYPE winreg_String "offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_STRING BASE_NONE 0 NULL 4
+#
+#
+#
+PARAM_VALUE winreg_dissect_element_CreateKey_name 2|PIDL_SET_COL_INFO
+PARAM_VALUE winreg_dissect_element_DeleteKey_key 2|PIDL_SET_COL_INFO
+PARAM_VALUE winreg_dissect_element_LoadKey_keyname 2|PIDL_SET_COL_INFO
+PARAM_VALUE winreg_dissect_element_OpenKey_keyname 2|PIDL_SET_COL_INFO|PIDL_STR_SAVE
+PARAM_VALUE winreg_dissect_element_QueryValue_value_name 2|PIDL_SET_COL_INFO
+PARAM_VALUE winreg_dissect_element_SaveKey_filename 2|PIDL_SET_COL_INFO
+PARAM_VALUE winreg_dissect_element_SetValue_name 2|PIDL_SET_COL_INFO
+
+#
+# Override the generation of dissectors of the security descriptor and the
+# access mask.
+# The security descriptor is just an array of bytes in the idl file
+# so we override generation of it and calls the proper wireshark dissector
+# after manually eating the 12 bytes of conformance data.
+#
+# Same for the access mask dissector since the idl would only define those
+# flag bits that are specific to WINREG therefore we set up the appropriate
+# structures and then call the wireshark accessmask dissector instead.
+#
+#
+HF_FIELD hf_winreg_sd_max_size "Max Size" "winreg.sd.max_size" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+HF_FIELD hf_winreg_sd_offset "Offset" "winreg.sd.offset" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+HF_FIELD hf_winreg_sd_actual_size "Actual Size" "winreg.sd.actual_size" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+NOEMIT winreg_dissect_element_KeySecurityData_data__
+MANUAL winreg_dissect_element_KeySecurityData_data_
+MANUAL winreg_dissect_bitmap_AccessMask
+
+
+
+CODE START
+ #include "packet-dcerpc-lsa.h"
+static void
+winreg_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access)
+{
+ static int* const access_flags[] = {
+ &hf_winreg_winreg_AccessMask_KEY_WOW64_32KEY,
+ &hf_winreg_winreg_AccessMask_KEY_WOW64_64KEY,
+ &hf_winreg_winreg_AccessMask_KEY_CREATE_LINK,
+ &hf_winreg_winreg_AccessMask_KEY_NOTIFY,
+ &hf_winreg_winreg_AccessMask_KEY_ENUMERATE_SUB_KEYS,
+ &hf_winreg_winreg_AccessMask_KEY_CREATE_SUB_KEY,
+ &hf_winreg_winreg_AccessMask_KEY_SET_VALUE,
+ &hf_winreg_winreg_AccessMask_KEY_QUERY_VALUE,
+ NULL
+ };
+
+ proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
+}
+
+struct access_mask_info winreg_access_mask_info = {
+ "WINREG", /* Name of specific rights */
+ winreg_specific_rights, /* Dissection function */
+ NULL, /* Generic mapping table */
+ NULL /* Standard mapping table */
+};
+
+static int
+winreg_dissect_element_KeySecurityData_data_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ guint32 len;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ /* this is a varying and conformant array */
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_winreg_sd_max_size, NULL);
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_winreg_sd_offset, NULL);
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_winreg_sd_actual_size, &len);
+
+ dissect_nt_sec_desc(tvb, offset, pinfo, tree, drep, TRUE, len,
+ &winreg_access_mask_info);
+
+ offset += len;
+
+ return offset;
+}
+
+int
+winreg_dissect_bitmap_AccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, int hf_index _U_, guint32 param _U_)
+{
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask,
+ &winreg_access_mask_info, NULL);
+ return offset;
+}
+
+/* winreg_String :
+ * typedef [public,noejs] struct {
+ * [value(strlen_m_term(name)*2)] uint16 name_len;
+ * [value(strlen_m_term(name)*2)] uint16 name_size;
+ * [string,charset(UTF16)] uint16 *name;
+ * } winreg_String;
+ */
+static int
+cnf_dissect_winreg_String(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, guint32 param, int hfindex)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ header_field_info *hf_info;
+
+ ALIGN_TO_4_BYTES;
+
+ old_offset = offset;
+ hf_info=proto_registrar_get_nth(hfindex);
+
+ if (parent_tree) {
+ tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, 0, ett_winreg_winreg_String, &item, "%s: ", hf_info->name);
+ }
+
+ offset = winreg_dissect_element_String_name_len(tvb, offset, pinfo, tree, di, drep);
+
+ offset = winreg_dissect_element_String_name_size(tvb, offset, pinfo, tree, di, drep);
+
+ offset = dissect_ndr_pointer_cb(
+ tvb, offset, pinfo, tree, di, drep,
+ dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
+ hf_info->name, hfindex, cb_wstr_postprocess,
+ GINT_TO_POINTER(param));
+
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/winreg/winreg.idl b/epan/dissectors/pidl/winreg/winreg.idl
new file mode 100644
index 00000000..1fd40848
--- /dev/null
+++ b/epan/dissectors/pidl/winreg/winreg.idl
@@ -0,0 +1,460 @@
+/*
+ winreg interface definition
+*/
+
+/*import "lsa.idl", "security.idl",*/
+import "misc/misc.idl";
+
+[
+ uuid("338cd001-2244-31f1-aaaa-900038001003"),
+ version(1.0),
+ endpoint("ncacn_np:[\\pipe\\winreg]","ncacn_ip_tcp:","ncalrpc:"),
+ pointer_default(unique),
+ helpstring("Remote Registry Service")
+] interface winreg
+{
+ typedef bitmap security_secinfo security_secinfo;
+
+ /*
+ * Access Bits for registry ACLS
+ */
+
+ typedef [bitmap32bit] bitmap {
+ KEY_QUERY_VALUE = 0x00001,
+ KEY_SET_VALUE = 0x00002,
+ KEY_CREATE_SUB_KEY = 0x00004,
+ KEY_ENUMERATE_SUB_KEYS = 0x00008,
+ KEY_NOTIFY = 0x00010,
+ KEY_CREATE_LINK = 0x00020,
+ KEY_WOW64_64KEY = 0x00100,
+ KEY_WOW64_32KEY = 0x00200
+ } winreg_AccessMask;
+
+ const int REG_KEY_READ = ( STANDARD_RIGHTS_READ_ACCESS |
+ KEY_QUERY_VALUE |
+ KEY_ENUMERATE_SUB_KEYS |
+ KEY_NOTIFY);
+
+ const int REG_KEY_EXECUTE = REG_KEY_READ;
+
+ const int REG_KEY_WRITE = ( STANDARD_RIGHTS_WRITE_ACCESS |
+ KEY_SET_VALUE |
+ KEY_CREATE_SUB_KEY);
+
+ const int REG_KEY_ALL = ( STANDARD_RIGHTS_REQUIRED_ACCESS |
+ REG_KEY_READ |
+ REG_KEY_WRITE |
+ KEY_CREATE_LINK);
+
+ typedef [public] struct {
+ [value(strlen_m_term(name)*2)] uint16 name_len;
+ [value(strlen_m_term(name)*2)] uint16 name_size;
+ [string,charset(UTF16)] uint16 *name;
+ } winreg_String;
+
+ /******************/
+ /* Function: 0x00 */
+ WERROR winreg_OpenHKCR(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x01 */
+ WERROR winreg_OpenHKCU(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x02 */
+ [public] WERROR winreg_OpenHKLM(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x03 */
+ WERROR winreg_OpenHKPD(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x04 */
+ WERROR winreg_OpenHKU(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x05 */
+ [public] WERROR winreg_CloseKey(
+ [in,out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x06 */
+
+ typedef struct {
+ [size_is(size),length_is(len)] uint8 *data;
+ uint32 size;
+ uint32 len;
+ } KeySecurityData;
+
+ typedef struct {
+ uint32 length;
+ KeySecurityData sd;
+ boolean8 inherit;
+ } winreg_SecBuf;
+
+ const int REG_OPTION_NON_VOLATILE = 0x00000000;
+
+ typedef [bitmap32bit] bitmap {
+ REG_OPTION_VOLATILE = 0x00000001,
+ REG_OPTION_CREATE_LINK = 0x00000002,
+ REG_OPTION_BACKUP_RESTORE = 0x00000004,
+ REG_OPTION_OPEN_LINK = 0x00000008
+ } winreg_KeyOptions;
+
+ typedef [v1_enum] enum {
+ REG_ACTION_NONE = 0, /* used by caller */
+ REG_CREATED_NEW_KEY = 1,
+ REG_OPENED_EXISTING_KEY = 2
+ } winreg_CreateAction;
+
+ [public] WERROR winreg_CreateKey(
+ [in,ref] policy_handle *handle,
+ [in] winreg_String name,
+ [in] winreg_String keyclass,
+ [in] winreg_KeyOptions options,
+ [in] winreg_AccessMask access_mask,
+ [in,unique] winreg_SecBuf *secdesc,
+ [out,ref] policy_handle *new_handle,
+ [in,out,unique] winreg_CreateAction *action_taken
+ );
+
+ /******************/
+ /* Function: 0x07 */
+ [public] WERROR winreg_DeleteKey(
+ [in,ref] policy_handle *handle,
+ [in] winreg_String key
+ );
+
+ /******************/
+ /* Function: 0x08 */
+ WERROR winreg_DeleteValue(
+ [in,ref] policy_handle *handle,
+ [in] winreg_String value
+ );
+
+ typedef struct {
+ [value(strlen_m_term_null(name)*2)] uint16 length;
+ /* size cannot be auto-set by value() as it is the
+ amount of space the server is allowed to use for this
+ string in the reply, not its current size */
+ uint16 size;
+ [size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
+ } winreg_StringBuf;
+
+ /******************/
+ /* Function: 0x09 */
+ [public] WERROR winreg_EnumKey(
+ [in,ref] policy_handle *handle,
+ [in] uint32 enum_index,
+ [in,out,ref] winreg_StringBuf *name,
+ [in,out,unique] winreg_StringBuf *keyclass,
+ [in,out,unique] NTTIME *last_changed_time
+ );
+
+ typedef struct {
+ [value(strlen_m_term(name)*2)] uint16 length;
+ /* size cannot be auto-set by value() as it is the
+ amount of space the server is allowed to use for this
+ string in the reply, not its current size */
+ uint16 size;
+ [size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
+ } winreg_ValNameBuf;
+
+ /******************/
+ /* Function: 0x0a */
+
+ [public] WERROR winreg_EnumValue(
+ [in,ref] policy_handle *handle,
+ [in] uint32 enum_index,
+ [in,out,ref] winreg_ValNameBuf *name,
+ [in,out,unique] winreg_Type *type,
+ [in,out,unique,size_is(size ? *size : 0),length_is(length ? *length : 0),range(0,0x4000000)] uint8 *value,
+ [in,out,unique] uint32 *size,
+ [in,out,unique] uint32 *length
+ );
+
+ /******************/
+ /* Function: 0x0b */
+ [public] WERROR winreg_FlushKey(
+ [in,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x0c */
+ [public] WERROR winreg_GetKeySecurity(
+ [in,ref] policy_handle *handle,
+ [in] security_secinfo sec_info,
+ [in,out,ref] KeySecurityData *sd
+ );
+
+ /******************/
+ /* Function: 0x0d */
+ WERROR winreg_LoadKey(
+ [in,ref] policy_handle *handle,
+ [in,unique] winreg_String *keyname,
+ [in,unique] winreg_String *filename
+ );
+
+ /******************/
+ /* Function: 0x0e */
+ typedef [public,bitmap32bit] bitmap {
+ REG_NOTIFY_CHANGE_NAME = 0x00000001,
+ REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002,
+ REG_NOTIFY_CHANGE_LAST_SET = 0x00000004,
+ REG_NOTIFY_CHANGE_SECURITY = 0x00000008
+ } winreg_NotifyChangeType;
+
+ [public] WERROR winreg_NotifyChangeKeyValue(
+ [in,ref] policy_handle *handle,
+ [in] boolean8 watch_subtree,
+ [in] winreg_NotifyChangeType notify_filter,
+ [in] uint32 unknown,
+ [in] winreg_String string1,
+ [in] winreg_String string2,
+ [in] uint32 unknown2
+ );
+
+ /******************/
+ /* Function: 0x0f */
+ [public] WERROR winreg_OpenKey(
+ [in,ref] policy_handle *parent_handle,
+ [in] winreg_String keyname,
+ [in] winreg_KeyOptions options,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x10 */
+ [public] WERROR winreg_QueryInfoKey(
+ [in,ref] policy_handle *handle,
+ [in,out,ref] winreg_String *classname,
+ [out,ref] uint32 *num_subkeys,
+ [out,ref] uint32 *max_subkeylen,
+ [out,ref] uint32 *max_classlen,
+ [out,ref] uint32 *num_values,
+ [out,ref] uint32 *max_valnamelen,
+ [out,ref] uint32 *max_valbufsize,
+ [out,ref] uint32 *secdescsize,
+ [out,ref] NTTIME *last_changed_time
+ );
+
+ /******************/
+ /* Function: 0x11 */
+ [public] WERROR winreg_QueryValue(
+ [in,ref] policy_handle *handle,
+ [in,ref] winreg_String *value_name,
+ [in,out,unique] winreg_Type *type,
+ [in,out,unique,size_is(data_size ? *data_size : 0),length_is(data_length ? *data_length : 0),range(0,0x4000000)] uint8 *data,
+ [in,out,unique] uint32 *data_size,
+ [in,out,unique] uint32 *data_length
+ );
+
+ /******************/
+ /* Function: 0x12 */
+ WERROR winreg_ReplaceKey(
+ [in,ref] policy_handle *handle,
+ [in,ref] winreg_String *subkey,
+ [in,ref] winreg_String *new_file,
+ [in,ref] winreg_String *old_file
+ );
+
+ /******************/
+ /* Function: 0x13 */
+
+ typedef [public,bitmap32bit] bitmap {
+ REG_WHOLE_HIVE_VOLATILE = 0x00000001,
+ REG_REFRESH_HIVE = 0x00000002,
+ REG_NO_LAZY_FLUSH = 0x00000004,
+ REG_FORCE_RESTORE = 0x00000008
+ } winreg_RestoreKeyFlags;
+
+ WERROR winreg_RestoreKey(
+ [in,ref] policy_handle *handle,
+ [in,ref] winreg_String *filename,
+ [in] winreg_RestoreKeyFlags flags
+ );
+
+ /******************/
+ /* Function: 0x14 */
+
+ typedef struct {
+ uint32 data_size;
+ KeySecurityData sec_data;
+ uint8 inherit;
+ } KeySecurityAttribute;
+
+ WERROR winreg_SaveKey(
+ [in,ref] policy_handle *handle,
+ [in,ref] winreg_String *filename,
+ [in,unique] KeySecurityAttribute *sec_attrib
+ );
+
+ /******************/
+ /* Function: 0x15 */
+ WERROR winreg_SetKeySecurity(
+ [in,ref] policy_handle *handle,
+ [in] security_secinfo sec_info,
+ [in,ref] KeySecurityData *sd
+ );
+
+ /******************/
+ /* Function: 0x16 */
+ WERROR winreg_SetValue(
+ [in,ref] policy_handle *handle,
+ [in] winreg_String name,
+ [in] winreg_Type type,
+ [in,size_is(size),ref] uint8 *data,
+ [in] uint32 size
+ );
+
+ /******************/
+ /* Function: 0x17 */
+ WERROR winreg_UnLoadKey(
+ [in,ref] policy_handle *handle,
+ [in,ref] winreg_String *subkey
+ );
+
+ /******************/
+ /* Function: 0x18 */
+ WERROR winreg_InitiateSystemShutdown(
+ [in,unique] uint16 *hostname,
+ /*
+ * Note: lsa_String and winreg_String both result
+ * in WERR_INVALID_PARAM
+ */
+ [in,unique] lsa_StringLarge *message,
+ [in] uint32 timeout,
+ [in] uint8 force_apps,
+ [in] uint8 do_reboot
+ );
+
+ /******************/
+ /* Function: 0x19 */
+ WERROR winreg_AbortSystemShutdown(
+ [in,unique] uint16 *server
+ );
+
+ /******************/
+ /* Function: 0x1a */
+ [public] WERROR winreg_GetVersion(
+ [in,ref] policy_handle *handle,
+ [out,ref] uint32 *version
+ );
+
+ /******************/
+ /* Function: 0x1b */
+ WERROR winreg_OpenHKCC(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x1c */
+ WERROR winreg_OpenHKDD(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ typedef struct {
+ winreg_ValNameBuf *ve_valuename;
+ uint32 ve_valuelen;
+ uint32 ve_valueptr;
+ winreg_Type ve_type;
+ } QueryMultipleValue;
+
+ /******************/
+ /* Function: 0x1d */
+ [public] WERROR winreg_QueryMultipleValues(
+ [in,ref] policy_handle *key_handle,
+ [in,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values_in,
+ [out,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values_out,
+ [in] uint32 num_values,
+ [in,out,unique,size_is(*buffer_size),length_is(*buffer_size)] uint8 *buffer,
+ [in,out,ref] uint32 *buffer_size
+ );
+
+ /******************/
+ /* Function: 0x1e */
+ WERROR winreg_InitiateSystemShutdownEx(
+ [in,unique] uint16 *hostname,
+ /*
+ * Note: lsa_String and winreg_String both result
+ * in WERR_INVALID_PARAM
+ */
+ [in,unique] lsa_StringLarge *message,
+ [in] uint32 timeout,
+ [in] uint8 force_apps,
+ [in] uint8 do_reboot,
+ [in] uint32 reason
+ );
+
+ /******************/
+ /* Function: 0x1f */
+ WERROR winreg_SaveKeyEx(
+ [in,ref] policy_handle *handle,
+ [in,ref] winreg_String *filename,
+ [in,unique] KeySecurityAttribute *sec_attrib,
+ [in] uint32 flags
+ );
+
+ /******************/
+ /* Function: 0x20 */
+ WERROR winreg_OpenHKPT(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x21 */
+ WERROR winreg_OpenHKPN(
+ [in,unique] uint16 *system_name,
+ [in] winreg_AccessMask access_mask,
+ [out,ref] policy_handle *handle
+ );
+
+ /******************/
+ /* Function: 0x22 */
+ [public] WERROR winreg_QueryMultipleValues2(
+ [in,ref] policy_handle *key_handle,
+ [in,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values_in,
+ [out,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values_out,
+ [in] uint32 num_values,
+ [in,out,unique,size_is(*offered),length_is(*offered)] uint8 *buffer,
+ [in,ref] uint32 *offered,
+ [out,ref] uint32 *needed
+ );
+
+ /******************/
+ /* Function: 0x23 */
+ WERROR winreg_DeleteKeyEx(
+ [in,ref] policy_handle *handle,
+ [in,ref] winreg_String *key,
+ [in] winreg_AccessMask access_mask,
+ [in] uint32 reserved
+ );
+}
diff --git a/epan/dissectors/pidl/winspool/winspool.cnf b/epan/dissectors/pidl/winspool/winspool.cnf
new file mode 100644
index 00000000..9a2fdd6c
--- /dev/null
+++ b/epan/dissectors/pidl/winspool/winspool.cnf
@@ -0,0 +1,58 @@
+# Conformance file for winspool
+
+#iremotewinspool_dissect_struct_sec_desc_buf
+HF_FIELD hf_iremotewinspool_sec_desc_buf_len "Sec Desc Buf Len" "iremotewinspool.sec_desc_buf_len" FT_UINT32 BASE_DEC NULL 0 "" "" ""
+
+#TYPE winreg_AccessMask "offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, @HF@, @PARAM@);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE sec_desc_buf "offset = iremotewinspool_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_UserLevelCtr "offset = dissect_USER_LEVEL_CTR(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_NotifyInfo "offset = dissect_NOTIFY_INFO(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_NotifyOption "offset = dissect_NOTIFY_OPTIONS_ARRAY_CTR(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_DevmodeContainer "offset = dissect_DEVMODE_CTR(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_SetPrinterInfoCtr "offset = dissect_SPOOL_PRINTER_INFO(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_DocumentInfoCtr "offset = dissect_spoolss_doc_info_ctr(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_AddFormInfoCtr "offset = dissect_FORM_CTR(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+
+# these are all TODO!
+TYPE spoolss_TimeCtr "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_JobInfoContainer "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE RPC_BIDI_REQUEST_CONTAINER "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE RPC_BIDI_RESPONSE_CONTAINER "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_AddDriverInfoCtr "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_SetPortInfoContainer "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_PortVarContainer "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_MonitorContainer "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_CorePrinterDriver "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_PrintPropertyValue "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_PrintNamedProperty "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+TYPE spoolss_BranchOfficeJobDataContainer "offset = dissect_ndr_byte_array(tvb, offset, pinfo, tree, di, drep);" FT_NONE BASE_NONE 0 NULL NULL
+
+CODE START
+ #include "packet-smb.h"
+ #include "packet-smb-browse.h"
+
+extern struct access_mask_info spoolss_printer_access_mask_info;
+
+static int
+iremotewinspool_dissect_sec_desc_buf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep)
+{
+ guint32 len;
+
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
+ hf_iremotewinspool_sec_desc_buf_len, &len);
+
+ dissect_nt_sec_desc(
+ tvb, offset, pinfo, tree, drep, TRUE, len,
+ &spoolss_printer_access_mask_info);
+
+ offset += len;
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/winspool/winspool.idl b/epan/dissectors/pidl/winspool/winspool.idl
new file mode 100644
index 00000000..09d6506a
--- /dev/null
+++ b/epan/dissectors/pidl/winspool/winspool.idl
@@ -0,0 +1,878 @@
+#include "idl_types.h"
+
+/*
+ * IRemoteWinspool interface definitions
+ *
+ * This IDL defines the "Print System Asynchronous Remote Protocol" MS-PAR
+ * interface.
+ *
+ * Currently only eight functions in this interface have no matching functions
+ * in the "spoolss" interface. All other functions have a 1-to-1 match but
+ * different opcodes than the spoolss interface.
+ *
+ * Every request on this interface requires a object uuid of
+ * "9940CA8E-512F-4C58-88A9-61098D6896BD" to be sent along with the DCE/RPC
+ * header.
+ *
+ * On Windows, this interface uses [ncacn_ip_tcp] transport and requires
+ * DCERPC_AUTH_TYPE_SPNEGO and at least DCERPC_AUTH_LEVEL_PACKET authentication.
+ *
+ *
+ */
+
+import "misc.idl", "winreg.idl", "spoolss.idl";
+
+[
+ uuid("76f03f96-cdfd-44fc-a22c-64950A001209"),
+ version(1.0),
+ endpoint("ncacn_ip_tcp:"),
+ pointer_default(unique),
+ helpstring("IRemoteWinspool SubSystem")
+]
+ interface iremotewinspool
+{
+#if 0
+ /*
+ * pidl does not yet have a real [context_handle] implementation, so we
+ * just use some defines here.
+ */
+
+ typedef [context_handle] void *GDI_HANDLE;
+ typedef [context_handle] void *PRINTER_HANDLE;
+ typedef [context_handle] void *RMTNTFY_HANDLE;
+#else
+#define GDI_HANDLE policy_handle
+#define PRINTER_HANDLE policy_handle
+#define RMTNTFY_HANDLE policy_handle
+#endif
+
+ const string IREMOTEWINSPOOL_OBJECT_GUID = "9940CA8E-512F-4C58-88A9-61098D6896BD";
+
+ /******************/
+ /* Function: 0x00 */
+
+ typedef struct {
+ spoolss_NotifyInfo *pInfo;
+ } winspool_NOTIFY_REPLY_CONTAINER;
+
+ typedef struct {
+ spoolss_NotifyOption *pOptions;
+ } winspool_NOTIFY_OPTIONS_CONTAINER;
+
+ [public] WERROR winspool_AsyncOpenPrinter(
+ [in,unique] [string,charset(UTF16)] uint16 *pPrinterName,
+ [out] PRINTER_HANDLE *pHandle,
+ [in,unique] [string,charset(UTF16)] uint16 *pDatatype,
+ [in] spoolss_DevmodeContainer *pDevModeContainer,
+ [in] uint32 AccessRequired,
+ [in] spoolss_UserLevelCtr *pClientInfo
+ );
+
+ /******************/
+ /* Function: 0x01 */
+
+ WERROR winspool_AsyncAddPrinter(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] spoolss_SetPrinterInfoCtr *pPrinterContainer,
+ [in] spoolss_DevmodeContainer *pDevModeContainer,
+ [in] sec_desc_buf *pSecurityContainer,
+ [in] spoolss_UserLevelCtr *pClientInfo,
+ [out] PRINTER_HANDLE *pHandle
+ );
+
+ /******************/
+ /* Function: 0x02 */
+
+ WERROR winspool_AsyncSetJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in, unique] spoolss_JobInfoContainer *pJobContainer,
+ [in] uint32 Command
+ );
+
+ /******************/
+ /* Function: 0x03 */
+
+ WERROR winspool_AsyncGetJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pJob,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x04 */
+
+ WERROR winspool_AsyncEnumJobs(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 FirstJob,
+ [in] uint32 NoJobs,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pJob,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x05 */
+
+ WERROR winspool_AsyncAddJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pAddJob,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x06 */
+
+ WERROR winspool_AsyncScheduleJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId
+ );
+
+ /******************/
+ /* Function: 0x07 */
+
+ WERROR winspool_AsyncDeletePrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x08 */
+
+ [public] WERROR winspool_AsyncSetPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] spoolss_SetPrinterInfoCtr *pPrinterContainer,
+ [in] spoolss_DevmodeContainer *pDevModeContainer,
+ [in] sec_desc_buf *pSecurityContainer,
+ [in] uint32 Command
+ );
+
+ /******************/
+ /* Function: 0x09 */
+
+ [public] WERROR winspool_AsyncGetPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrinter,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x0a */
+
+ WERROR winspool_AsyncStartDocPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] spoolss_DocumentInfoCtr *pDocInfoContainer,
+ [out] uint32 *pJobId
+ );
+
+ /******************/
+ /* Function: 0x0b */
+
+ WERROR winspool_AsyncStartPagePrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x0c */
+
+ WERROR winspool_AsyncWritePrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in, size_is(cbBuf)] uint8 *pBuf,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcWritten
+ );
+
+ /******************/
+ /* Function: 0x0d */
+
+ WERROR winspool_AsyncEndPagePrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x0e */
+
+ WERROR winspool_AsyncEndDocPrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x0f */
+
+ WERROR winspool_AsyncAbortPrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x10 */
+
+ [public] WERROR winspool_AsyncGetPrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [out] uint32 *pType,
+ [out, size_is(nSize)] uint8 *pData,
+ [in] uint32 nSize,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x11 */
+
+ WERROR winspool_AsyncGetPrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [out] uint32 *pType,
+ [out, size_is(nSize)] uint8 *pData,
+ [in] uint32 nSize,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x12 */
+
+ WERROR winspool_AsyncSetPrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [in] uint32 Type,
+ [in, size_is(cbData)] uint8 *pData,
+ [in] uint32 cbData
+ );
+
+ /******************/
+ /* Function: 0x13 */
+
+ WERROR winspool_AsyncSetPrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [in] uint32 Type,
+ [in, size_is(cbData)] uint8 *pData,
+ [in] uint32 cbData
+ );
+
+ /******************/
+ /* Function: 0x14 */
+
+ [public] WERROR winspool_AsyncClosePrinter(
+ [in, out] PRINTER_HANDLE *phPrinter
+ );
+
+ /******************/
+ /* Function: 0x15 */
+
+ WERROR winspool_AsyncAddForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] spoolss_AddFormInfoCtr *pFormInfoContainer
+ );
+
+ /******************/
+ /* Function: 0x16 */
+
+ WERROR winspool_AsyncDeleteForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pFormName
+ );
+
+ /******************/
+ /* Function: 0x17 */
+
+ WERROR winspool_AsyncGetForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pFormName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pForm,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x18 */
+
+ WERROR winspool_AsyncSetForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pFormName,
+ [in] spoolss_AddFormInfoCtr *pFormInfoContainer
+ );
+
+ /******************/
+ /* Function: 0x19 */
+
+ [public] WERROR winspool_AsyncEnumForms(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pForm,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x1a */
+
+ [public] WERROR winspool_AsyncGetPrinterDriver(
+ [in] PRINTER_HANDLE hPrinter,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDriver,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [in] uint32 dwClientMajorVersion,
+ [in] uint32 dwClientMinorVersion,
+ [out] uint32 *pdwServerMaxVersion,
+ [out] uint32 *pdwServerMinVersion
+ );
+
+ /******************/
+ /* Function: 0x1b */
+
+ WERROR winspool_AsyncEnumPrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 dwIndex,
+ [out, size_is(cbValueName/2)] uint16 *pValueName,
+ [in] uint32 cbValueName,
+ [out] uint32 *pcbValueName,
+ [out] uint32 *pType,
+ [out, size_is(cbData)] uint8 *pData,
+ [in] uint32 cbData,
+ [out] uint32 *pcbData
+ );
+
+ /******************/
+ /* Function: 0x1c */
+
+ [public] WERROR winspool_AsyncEnumPrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [out, size_is(cbEnumValues)] uint8 *pEnumValues,
+ [in] uint32 cbEnumValues,
+ [out] uint32 *pcbEnumValues,
+ [out] uint32 *pnEnumValues
+ );
+
+ /******************/
+ /* Function: 0x1d */
+
+ [public] WERROR winspool_AsyncEnumPrinterKey(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [out, size_is(cbSubkey/2)] uint16 *pSubkey,
+ [in] uint32 cbSubkey,
+ [out] uint32 *pcbSubkey
+ );
+
+ /******************/
+ /* Function: 0x1e */
+
+ WERROR winspool_AsyncDeletePrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pValueName
+ );
+
+ /******************/
+ /* Function: 0x1f */
+
+ WERROR winspool_AsyncDeletePrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [in] [string,charset(UTF16)] uint16 *pValueName
+ );
+
+ /******************/
+ /* Function: 0x20 */
+
+ WERROR winspool_AsyncDeletePrinterKey(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName
+ );
+
+ /******************/
+ /* Function: 0x21 */
+
+ WERROR winspool_AsyncXcvData(
+ [in] PRINTER_HANDLE hXcv,
+ [in] [string,charset(UTF16)] uint16 *pszDataName,
+ [in, size_is(cbInputData)] uint8 *pInputData,
+ [in] uint32 cbInputData,
+ [out, size_is(cbOutputData)] uint8 *pOutputData,
+ [in] uint32 cbOutputData,
+ [out] uint32 *pcbOutputNeeded,
+ [in, out] uint32 *pdwStatus
+ );
+
+ /******************/
+ /* Function: 0x22 */
+
+ WERROR winspool_AsyncSendRecvBidiData (
+ [in] PRINTER_HANDLE hPrinter,
+ [in,unique] [string,charset(UTF16)] uint16 *pAction,
+ [in] RPC_BIDI_REQUEST_CONTAINER* pReqData,
+ [out] RPC_BIDI_RESPONSE_CONTAINER** ppRespData
+ );
+
+ /******************/
+ /* Function: 0x23 */
+
+ WERROR winspool_AsyncCreatePrinterIC(
+ [in] PRINTER_HANDLE hPrinter,
+ [out] GDI_HANDLE *pHandle,
+ [in] spoolss_DevmodeContainer *pDevModeContainer
+ );
+
+ /******************/
+ /* Function: 0x24 */
+
+ WERROR winspool_AsyncPlayGdiScriptOnPrinterIC(
+ [in] GDI_HANDLE hPrinterIC,
+ [in, size_is(cIn)] uint8 *pIn,
+ [in] uint32 cIn,
+ [out, size_is(cOut)] uint8 *pOut,
+ [in] uint32 cOut,
+ [in] uint32 ul
+ );
+
+ /******************/
+ /* Function: 0x25 */
+
+ WERROR winspool_AsyncDeletePrinterIC(
+ [in, out] GDI_HANDLE *phPrinterIC
+ );
+
+ /******************/
+ /* Function: 0x26 */
+
+ WERROR winspool_AsyncEnumPrinters(
+ [in] uint32 Flags,
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrinterEnum,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x27 */
+
+ [public] WERROR winspool_AsyncAddPrinterDriver(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] spoolss_AddDriverInfoCtr *pDriverContainer,
+ [in] uint32 dwFileCopyFlags
+ );
+
+ /******************/
+ /* Function: 0x28 */
+
+ WERROR winspool_AsyncEnumPrinterDrivers(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDrivers,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x29 */
+
+ [public] WERROR winspool_AsyncGetPrinterDriverDirectory(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDriverDirectory,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x2a */
+
+ WERROR winspool_AsyncDeletePrinterDriver(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pDriverName
+ );
+
+ /******************/
+ /* Function: 0x2b */
+
+ WERROR winspool_AsyncDeletePrinterDriverEx(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pDriverName,
+ [in] uint32 dwDeleteFlag,
+ [in] uint32 dwVersionNum
+ );
+
+ /******************/
+ /* Function: 0x2c */
+
+ WERROR winspool_AsyncAddPrintProcessor(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pPathName,
+ [in] [string,charset(UTF16)] uint16 *pPrintProcessorName
+ );
+
+ /******************/
+ /* Function: 0x2d */
+
+ WERROR winspool_AsyncEnumPrintProcessors(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrintProcessorInfo,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x2e */
+
+ WERROR winspool_AsyncGetPrintProcessorDirectory(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrintProcessorDirectory,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x2f */
+
+ WERROR winspool_AsyncEnumPorts(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPort,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x30 */
+
+ WERROR winspool_AsyncEnumMonitors(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pMonitor,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x31 */
+
+ WERROR winspool_AsyncAddPort(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] spoolss_SetPortInfoContainer *pPortContainer,
+ [in] spoolss_PortVarContainer *pPortVarContainer,
+ [in] [string,charset(UTF16)] uint16 *pMonitorName
+ );
+
+ /******************/
+ /* Function: 0x32 */
+
+ WERROR winspool_AsyncSetPort(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pPortName,
+ [in] spoolss_SetPortInfoContainer *pPortContainer
+ );
+
+ /******************/
+ /* Function: 0x33 */
+
+ WERROR winspool_AsyncAddMonitor(
+ [in,unique] [string,charset(UTF16)] uint16 *Name,
+ [in] spoolss_MonitorContainer *pMonitorContainer
+ );
+
+ /******************/
+ /* Function: 0x34 */
+
+ WERROR winspool_AsyncDeleteMonitor(
+ [in,unique] [string,charset(UTF16)] uint16 *Name,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pMonitorName
+ );
+
+ /******************/
+ /* Function: 0x35 */
+
+ WERROR winspool_AsyncDeletePrintProcessor(
+ [in,unique] [string,charset(UTF16)] uint16 *Name,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pPrintProcessorName
+ );
+
+ /******************/
+ /* Function: 0x36 */
+
+ WERROR winspool_AsyncEnumPrintProcessorDatatypes(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pPrintProcessorName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDatatypes,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x37 */
+
+ WERROR winspool_AsyncAddPerMachineConnection(
+ [in,unique] [string,charset(UTF16)] uint16 *pServer,
+ [in] [string,charset(UTF16)] uint16 *pPrinterName,
+ [in] [string,charset(UTF16)] uint16 *pPrintServer,
+ [in] [string,charset(UTF16)] uint16 *pProvider
+ );
+
+ /******************/
+ /* Function: 0x38 */
+
+ WERROR winspool_AsyncDeletePerMachineConnection(
+ [in,unique] [string,charset(UTF16)] uint16 *pServer,
+ [in] [string,charset(UTF16)] uint16 *pPrinterName
+ );
+
+ /******************/
+ /* Function: 0x39 */
+
+ WERROR winspool_AsyncEnumPerMachineConnections(
+ [in,unique] [string,charset(UTF16)] uint16 *pServer,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrinterEnum,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x3a */
+
+ typedef enum {
+ winspool_PropertyTypeString = 1,
+ winspool_PropertyTypeInt32 = 2,
+ winspool_PropertyTypeInt64 = 3,
+ winspool_PropertyTypeByte = 4,
+ winspool_PropertyTypeTime = 5,
+ winspool_PropertyTypeDevMode = 6,
+ winspool_PropertyTypeSD = 7,
+ winspool_PropertyTypeNotificationReply = 8,
+ winspool_PropertyTypeNotificationOptions = 9
+ } winspool_PrintPropertyType;
+
+ typedef [ms_union,switch_type(winspool_PrintPropertyType)] union {
+ [case(winspool_PropertyTypeString)] [string,charset(UTF16)] uint16 *propertyString;
+ [case(winspool_PropertyTypeInt32)] uint32 propertyInt32;
+ [case(winspool_PropertyTypeInt64)] hyper propertyInt64;
+ [case(winspool_PropertyTypeByte)] uint8 propertyByte;
+ [case(winspool_PropertyTypeTime)] spoolss_TimeCtr propertyTimeContainer;
+ [case(winspool_PropertyTypeDevMode)] spoolss_DevmodeContainer propertyDevModeContainer;
+ [case(winspool_PropertyTypeSD)] sec_desc_buf propertySDContainer;
+ [case(winspool_PropertyTypeNotificationReply)] winspool_NOTIFY_REPLY_CONTAINER propertyReplyContainer;
+ [case(winspool_PropertyTypeNotificationOptions)] winspool_NOTIFY_OPTIONS_CONTAINER propertyOptionsContainer;
+ } winspool_PrintPropertyValueUnion;
+
+ typedef struct {
+ winspool_PrintPropertyType PropertyType;
+ [switch_is(PropertyType)] winspool_PrintPropertyValueUnion value;
+ } winspool_PrintPropertyValue;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *propertyName;
+ winspool_PrintPropertyValue propertyValue;
+ } winspool_PrintNamedProperty;
+
+ typedef struct {
+ [range(0,50)] uint32 numberOfProperties;
+ [size_is(numberOfProperties), unique] winspool_PrintNamedProperty *propertiesCollection;
+ } winspool_PrintPropertiesCollection;
+
+ [public] HRESULT winspool_SyncRegisterForRemoteNotifications(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] winspool_PrintPropertiesCollection *pNotifyFilter,
+ [out] RMTNTFY_HANDLE *phRpcHandle
+ );
+
+ /******************/
+ /* Function: 0x3b */
+
+ HRESULT winspool_SyncUnRegisterForRemoteNotifications(
+ [in, out] RMTNTFY_HANDLE *phRpcHandle
+ );
+
+ /******************/
+ /* Function: 0x3c */
+
+ HRESULT winspool_SyncRefreshRemoteNotifications(
+ [in] RMTNTFY_HANDLE hRpcHandle,
+ [in] winspool_PrintPropertiesCollection *pNotifyFilter,
+ [out] winspool_PrintPropertiesCollection **ppNotifyData
+ );
+
+ /******************/
+ /* Function: 0x3d */
+
+ HRESULT winspool_AsyncGetRemoteNotifications(
+ [in] RMTNTFY_HANDLE hRpcHandle,
+ [out] winspool_PrintPropertiesCollection **ppNotifyData
+ );
+
+ /******************/
+ /* Function: 0x3e */
+
+ typedef [bitmap32bit] bitmap {
+ IPDFP_FLAG_NONE = 0x00000000,
+ IPDFP_COPY_ALL_FILES = 0x00000001
+ } winspool_InstallPrinterDriverFromPackageFlags;
+
+ HRESULT winspool_AsyncInstallPrinterDriverFromPackage(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in,unique] [string,charset(UTF16)] uint16 *pszInfPath,
+ [in] [string,charset(UTF16)] uint16 *pszDriverName,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] winspool_InstallPrinterDriverFromPackageFlags dwFlags
+ );
+
+ /******************/
+ /* Function: 0x3f */
+
+ typedef [bitmap32bit] bitmap {
+ UPDP_FLAG_NONE = 0x00000000,
+ UPDP_UPLOAD_ALWAYS = 0x00000002,
+ UPDP_CHECK_DRIVERSTORE = 0x00000004
+ } winspool_UploadPrinterDriverPackageFlags;
+
+ HRESULT winspool_AsyncUploadPrinterDriverPackage(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszInfPath,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] winspool_UploadPrinterDriverPackageFlags dwFlags,
+ [in, out, unique, size_is(*pcchDestInfPath)] [charset(UTF16)] uint16 *pszDestInfPath,
+ [in, out] uint32 *pcchDestInfPath
+ );
+
+ /******************/
+ /* Function: 0x40 */
+
+ [public] HRESULT winspool_AsyncGetCorePrinterDrivers(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] uint32 cchCoreDrivers,
+ [in, size_is(cchCoreDrivers)] uint16 *pszzCoreDriverDependencies,
+ [in] uint32 cCorePrinterDrivers,
+ [out, size_is(cCorePrinterDrivers)] spoolss_CorePrinterDriver *pCorePrinterDrivers
+ );
+
+ /******************/
+ /* Function: 0x41 */
+
+ HRESULT winspool_AsyncCorePrinterDriverInstalled(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] GUID CoreDriverGUID,
+ [in] NTTIME ftDriverDate,
+ [in] hyper dwlDriverVersion,
+ [out] int *pbDriverInstalled
+ );
+
+ /******************/
+ /* Function: 0x42 */
+
+ HRESULT winspool_AsyncGetPrinterDriverPackagePath(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in,unique] [string,charset(UTF16)] uint16 *pszLanguage,
+ [in] [string,charset(UTF16)] uint16 *pszPackageID,
+ [in, out, unique, size_is(cchDriverPackageCab)] uint16 *pszDriverPackageCab,
+ [in] uint32 cchDriverPackageCab,
+ [out] uint32 *pcchRequiredSize
+ );
+
+ /******************/
+ /* Function: 0x43 */
+
+ HRESULT winspool_AsyncDeletePrinterDriverPackage(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszInfPath,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment
+ );
+
+ /******************/
+ /* Function: 0x44 */
+
+ WERROR winspool_AsyncReadPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [out, size_is(cbBuf)] uint8 *pBuf,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcNoBytesRead
+ );
+
+ /******************/
+ /* Function: 0x45 */
+
+ WERROR winspool_AsyncResetPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in,unique] [string,charset(UTF16)] uint16 *pDatatype,
+ [in] spoolss_DevmodeContainer *pDevModeContainer
+ );
+
+ /******************/
+ /* Function: 0x46 */
+
+ WERROR winspool_AsyncGetJobNamedPropertyValue(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] [string,charset(UTF16)] uint16 *pszName,
+ [out] spoolss_PrintPropertyValue *pValue
+ );
+
+ /******************/
+ /* Function: 0x47 */
+
+ [public] WERROR winspool_AsyncSetJobNamedProperty(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] spoolss_PrintNamedProperty *pProperty
+ );
+
+ /******************/
+ /* Function: 0x48 */
+
+ WERROR winspool_AsyncDeleteJobNamedProperty(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] [string,charset(UTF16)] uint16 *pszName
+ );
+
+ /******************/
+ /* Function: 0x49 */
+
+ WERROR winspool_AsyncEnumJobNamedProperties(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [out] uint32 *pcProperties,
+ [out, size_is(,*pcProperties)] spoolss_PrintNamedProperty **ppProperties
+ );
+
+ /******************/
+ /* Function: 0x4a */
+
+ WERROR winspool_AsyncLogJobInfoForBranchOffice(
+ [in] PRINTER_HANDLE hPrinter,
+ [in,ref] spoolss_BranchOfficeJobDataContainer *pBranchOfficeJobDataContainer
+ );
+}
diff --git a/epan/dissectors/pidl/witness/witness.cnf b/epan/dissectors/pidl/witness/witness.cnf
new file mode 100644
index 00000000..76d255e4
--- /dev/null
+++ b/epan/dissectors/pidl/witness/witness.cnf
@@ -0,0 +1,240 @@
+MANUAL witness_dissect_element_interfaceInfo_group_name
+NOEMIT witness_dissect_element_interfaceInfo_group_name
+MANUAL witness_dissect_struct_notifyResponse
+MANUAL witness_dissect_element_notifyResponse_messages
+NOEMIT witness_dissect_element_notifyResponse_messages
+MANUAL witness_dissect_struct_IPaddrInfoList
+NOEMIT witness_dissect_struct_IPaddrInfoList
+NOEMIT witness_dissect_element_IPaddrInfoList_addr
+
+HF_FIELD hf_witness_witness_notifyResponse_messages_ "Messages" "witness.witness_notifyResponse.messages_" FT_NONE BASE_NONE NULL 0 "" "" ""
+
+TYPE ipv4address "offset=PIDL_dissect_ipv4address(tvb, offset, pinfo, tree, di, drep, @HF@, PIDL_SET_COL_INFO);" FT_IPv4 BASE_NONE 0 NULL 4
+
+TYPE ipv6address "offset=PIDL_dissect_ipv6address(tvb, offset, pinfo, tree, di, drep, @HF@, PIDL_SET_COL_INFO);" FT_IPv6 BASE_NONE 0 NULL 2
+
+CODE START
+
+ #include "to_str.h"
+
+static int
+witness_dissect_notifyResponse_message(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
+
+static int
+witness_dissect_notifyResponse_message_(tvbuff_t *tvb, int offset, int length _U_, packet_info *pinfo,
+ proto_tree *tree, dcerpc_info *di, guint8 *drep _U_)
+{
+ guint32 *type = (guint32 *)di->private_data;
+ guint8 le_drep[4] = { DREP_LITTLE_ENDIAN, };
+ return witness_dissect_notifyResponse_message(tvb, offset, pinfo, tree, di, le_drep,
+ hf_witness_witness_notifyResponse_messages_, *type);
+}
+
+static int
+witness_dissect_element_notifyResponse_messages(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info *di _U_, guint8 *drep _U_)
+{
+ offset = dissect_ndr_ucarray_block(tvb, offset, pinfo, tree, di, drep,
+ witness_dissect_notifyResponse_message_);
+ return offset;
+}
+
+int
+witness_dissect_struct_notifyResponse(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ guint32 *type = NULL;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+
+ ALIGN_TO_4_BYTES;
+
+ ALIGN_TO_4_BYTES;
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_witness_witness_notifyResponse);
+ }
+
+ type = wmem_new0(pinfo->pool, guint32);
+
+ offset = witness_dissect_element_notifyResponse_type(tvb, offset, pinfo, tree, di, drep, type);
+
+ offset = witness_dissect_element_notifyResponse_length(tvb, offset, pinfo, tree, di, drep);
+
+ offset = witness_dissect_element_notifyResponse_num(tvb, offset, pinfo, tree, di, drep);
+
+ di->private_data = type;
+ offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep,
+ witness_dissect_element_notifyResponse_messages,
+ NDR_POINTER_UNIQUE, "Pointer to Message Buffer (uint8)",
+ hf_witness_witness_notifyResponse_messages);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ if (di->call_data->flags & DCERPC_IS_NDR64) {
+ ALIGN_TO_4_BYTES;
+ }
+
+ return offset;
+}
+
+static int
+witness_dissect_element_IPaddrInfoList_addr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, guint8 *drep _U_)
+{
+ offset = witness_dissect_struct_IPaddrInfo(tvb,offset,pinfo,tree,di,drep,hf_witness_witness_IPaddrInfoList_addr,0);
+
+ return offset;
+}
+
+int
+witness_dissect_struct_IPaddrInfoList(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ gboolean oldalign = di->no_align;
+ int old_offset;
+ guint32 i, num;
+
+ di->no_align = TRUE;
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_witness_witness_IPaddrInfoList);
+ }
+
+ offset = witness_dissect_element_IPaddrInfoList_length(tvb, offset, pinfo, tree, di, drep);
+
+ offset = witness_dissect_element_IPaddrInfoList_reserved(tvb, offset, pinfo, tree, di, drep);
+
+ num = tvb_get_letohl(tvb, offset);
+
+ offset = witness_dissect_element_IPaddrInfoList_num(tvb, offset, pinfo, tree, di, drep);
+
+ for (i = 0; i < num; i++) {
+ offset = witness_dissect_element_IPaddrInfoList_addr(tvb, offset, pinfo, tree, di, drep);
+ }
+
+ proto_item_set_len(item, offset-old_offset);
+
+ di->no_align = oldalign;
+
+ return offset;
+}
+
+static int
+witness_dissect_element_interfaceInfo_group_name(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *parent_tree, dcerpc_info *di _U_, guint8 *drep _U_)
+{
+ int totlen, stringlen;
+ char *str;
+ proto_item *pi;
+
+ /*
+ * XXX - this is described as
+ *
+ * [charset(UTF16),to_null] uint16 group_name[260];
+ *
+ * I haven't found any documentation for what "to_null" means
+ * in PIDL; is this a null-padded 260*2-byte array, so that
+ * strings can be up to 260 16-bit units in length, or is
+ * it a null-*terminated* string, so that it can be up to 259
+ * 16-bit units in length?
+ *
+ * We assume it's null-padded, for now, and scan for a 2-byte
+ * null terminator within the 260 2-byte units, and use
+ * that as the length, with the length being 2*260 if there
+ * isn't one.
+ *
+ * This will result in totlen being the total length, in
+ * bytes, of the string, including the null terminator, if
+ * present, and stringlen being the total length, in bytes.
+ * not counting any null terminator.
+ */
+ totlen = 0;
+ stringlen = 0;
+ while (totlen < 2*260) {
+ /*
+ * These 2 bytes are either part of the string
+ * or part of the null terminator, so count
+ * them.
+ */
+ totlen += 2;
+ if (tvb_get_letohs(tvb, offset + stringlen) == 0)
+ break;
+ /*
+ * Those 2 bytes are part of the string, so
+ * count them.
+ */
+ stringlen += 2;
+ }
+ pi = proto_tree_add_item_ret_display_string(parent_tree,
+ hf_witness_witness_interfaceInfo_group_name, tvb, offset, stringlen,
+ ENC_UTF_16|ENC_LITTLE_ENDIAN,
+ pinfo->pool, &str);
+ proto_item_append_text(pi, " [%d]", totlen);
+ proto_item_append_text(parent_tree, ": %s", str);
+
+ /*
+ * All 260 16-bit units are part of the field, as they're always
+ * there even if they don't need to be.
+ */
+ return offset + 2*260;
+}
+
+static int
+PIDL_dissect_ipv4address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep _U_, int hfindex, guint32 param)
+{
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
+ }
+
+
+ if (!di->no_align && (offset % 4)) {
+ offset += 4 - (offset % 4);
+ }
+
+ proto_tree_add_item(tree, hfindex, tvb, offset, 4, ENC_BIG_ENDIAN);
+
+ if (param & PIDL_SET_COL_INFO) {
+ const char *ip = tvb_ip_to_str(pinfo->pool, tvb, offset);
+ header_field_info *hf_info = proto_registrar_get_nth(hfindex);
+
+ proto_item_append_text(proto_tree_get_parent(tree), " %s:%s", hf_info->name, ip);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO," %s:%s", hf_info->name, ip);
+ }
+ return offset + 4;
+}
+
+static int
+PIDL_dissect_ipv6address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep _U_, int hfindex, guint32 param)
+{
+ if (di->conformant_run) {
+ /* just a run to handle conformant arrays, no scalars to dissect */
+ return offset;
+ }
+
+
+ if (!di->no_align && (offset % 2)) {
+ offset += 2 - (offset % 2);
+ }
+
+ proto_tree_add_item(tree, hfindex, tvb, offset, 16, ENC_BIG_ENDIAN);
+
+ if (param & PIDL_SET_COL_INFO) {
+ const char *ip = tvb_ip6_to_str(pinfo->pool, tvb, offset);
+ header_field_info *hf_info = proto_registrar_get_nth(hfindex);
+
+ proto_item_append_text(proto_tree_get_parent(tree), " %s:%s", hf_info->name, ip);
+
+ col_append_fstr(pinfo->cinfo, COL_INFO," %s:%s", hf_info->name, ip);
+ }
+
+ return offset + 16;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/witness/witness.idl b/epan/dissectors/pidl/witness/witness.idl
new file mode 100644
index 00000000..ecfa1af8
--- /dev/null
+++ b/epan/dissectors/pidl/witness/witness.idl
@@ -0,0 +1,152 @@
+#include "idl_types.h"
+
+import "misc/misc.idl";
+
+[
+ uuid("ccd8c074-d0e5-4a40-92b4-d074faa6ba28"),
+ version(1.1),
+ pointer_default(unique),
+ helpstring("SMB Witness Service"),
+ helper("../librpc/ndr/ndr_witness.h"),
+ endpoint("ncacn_ip_tcp:")
+]
+interface witness
+{
+ typedef [v1_enum] enum {
+ WITNESS_V1 = 0x00010001,
+ WITNESS_V2 = 0x00020000,
+ WITNESS_UNSPECIFIED_VERSION = 0xFFFFFFFF
+ } witness_version;
+
+ /*****************/
+ /* Function 0x00 */
+
+ typedef [enum16bit] enum {
+ WITNESS_STATE_UNKNOWN = 0x00,
+ WITNESS_STATE_AVAILABLE = 0x01,
+ WITNESS_STATE_UNAVAILABLE = 0xff
+ } witness_interfaceInfo_state;
+
+ typedef [bitmap32bit] bitmap {
+ WITNESS_INFO_IPv4_VALID = 0x01,
+ WITNESS_INFO_IPv6_VALID = 0x02,
+ WITNESS_INFO_WITNESS_IF = 0x04
+ } witness_interfaceInfo_flags;
+
+ typedef struct {
+ [charset(UTF16),to_null] uint16 group_name[260];
+ witness_version version;
+ witness_interfaceInfo_state state;
+ [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
+ [flag(NDR_BIG_ENDIAN)] ipv6address ipv6;
+ witness_interfaceInfo_flags flags;
+ } witness_interfaceInfo;
+
+ typedef struct {
+ uint32 num_interfaces;
+ [size_is(num_interfaces)] witness_interfaceInfo *interfaces;
+ } witness_interfaceList;
+
+ [public] WERROR witness_GetInterfaceList(
+ [out] witness_interfaceList **interface_list
+ );
+
+ /*****************/
+ /* Function 0x01 */
+
+ [public] WERROR witness_Register(
+ [out,ref] policy_handle *context_handle,
+ [in] witness_version version,
+ [in,unique,string,charset(UTF16)] uint16 *net_name,
+ [in,unique,string,charset(UTF16)] uint16 *ip_address,
+ [in,unique,string,charset(UTF16)] uint16 *client_computer_name
+ );
+
+ /*****************/
+ /* Function 0x02 */
+
+ [public] WERROR witness_UnRegister(
+ [in] policy_handle context_handle
+ );
+
+ /*****************/
+ /* Function 0x03 */
+
+ typedef [v1_enum,public] enum {
+ WITNESS_NOTIFY_RESOURCE_CHANGE = 1,
+ WITNESS_NOTIFY_CLIENT_MOVE = 2,
+ WITNESS_NOTIFY_SHARE_MOVE = 3,
+ WITNESS_NOTIFY_IP_CHANGE = 4
+ } witness_notifyResponse_type;
+
+ typedef [v1_enum] enum {
+ WITNESS_RESOURCE_STATE_UNKNOWN = 0x00,
+ WITNESS_RESOURCE_STATE_AVAILABLE = 0x01,
+ WITNESS_RESOURCE_STATE_UNAVAILABLE = 0xff
+ } witness_ResourceChange_type;
+
+ typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize,public] struct {
+ [value(ndr_size_witness_ResourceChange(r,ndr->flags))] uint32 length;
+ witness_ResourceChange_type type;
+ nstring name;
+ } witness_ResourceChange;
+
+ typedef [bitmap32bit] bitmap {
+ WITNESS_IPADDR_V4 = 0x01,
+ WITNESS_IPADDR_V6 = 0x02,
+ WITNESS_IPADDR_ONLINE = 0x08,
+ WITNESS_IPADDR_OFFLINE = 0x10
+ } witness_IPaddrInfo_flags;
+
+ typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize] struct {
+ witness_IPaddrInfo_flags flags;
+ ipv4address ipv4;
+ ipv6address ipv6;
+ } witness_IPaddrInfo;
+
+ typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
+ [value(r->num*ndr_size_witness_IPaddrInfo(r->addr, ndr->flags))] uint32 length;
+ [value(0)] uint32 reserved;
+ uint32 num;
+ witness_IPaddrInfo addr[num];
+ } witness_IPaddrInfoList;
+
+ typedef [public,switch_type(witness_notifyResponse_type),nodiscriminant, flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] union {
+ [case(WITNESS_NOTIFY_RESOURCE_CHANGE)] witness_ResourceChange resource_change;
+ [case(WITNESS_NOTIFY_CLIENT_MOVE)] witness_IPaddrInfoList client_move;
+ [case(WITNESS_NOTIFY_SHARE_MOVE)] witness_IPaddrInfoList share_move;
+ [case(WITNESS_NOTIFY_IP_CHANGE)] witness_IPaddrInfoList ip_change;
+ [default,flag(NDR_REMAINING)] DATA_BLOB data;
+ } witness_notifyResponse_message;
+
+ typedef [flag(NDR_PAHEX),gensize,public,nopush,nopull] struct {
+ witness_notifyResponse_type type;
+ [value(ndr_size_witness_notifyResponse(r, ndr->flags)-20)] uint32 length;
+ uint32 num;
+ [subcontext(4), subcontext_size(length), flag(NDR_REMAINING), switch_is(type)] witness_notifyResponse_message messages[num];
+ } witness_notifyResponse;
+
+ [public] WERROR witness_AsyncNotify(
+ [in] policy_handle context_handle,
+ [out] witness_notifyResponse **response
+ );
+
+ /*****************/
+ /* Function 0x04 */
+
+ typedef [bitmap32bit] bitmap {
+ WITNESS_REGISTER_NONE = 0x00,
+ WITNESS_REGISTER_IP_NOTIFICATION = 0x01
+ } witness_RegisterEx_flags;
+
+ WERROR witness_RegisterEx(
+ [out,ref] policy_handle *context_handle,
+ [in] witness_version version,
+ [in,unique,string,charset(UTF16)] uint16 *net_name,
+ [in,unique,string,charset(UTF16)] uint16 *share_name,
+ [in,unique,string,charset(UTF16)] uint16 *ip_address,
+ [in,unique,string,charset(UTF16)] uint16 *client_computer_name,
+ [in] witness_RegisterEx_flags flags,
+ [in] uint32 timeout
+ );
+}
diff --git a/epan/dissectors/pidl/wkssvc/wkssvc.cnf b/epan/dissectors/pidl/wkssvc/wkssvc.cnf
new file mode 100644
index 00000000..ba15ffaa
--- /dev/null
+++ b/epan/dissectors/pidl/wkssvc/wkssvc.cnf
@@ -0,0 +1,79 @@
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DEFER_SPN "Defer setting of servicePrincipalName and dNSHostName attributes on the computer object until a rename operation" "Set servicePrincipalName and dNSHostName attributes on the computer object"
+
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED "Set the machine password after domain join to passed password" "Do not set the machine password after domain join to passed password"
+
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_UNSECURE "Performs an unsecured join" "Perform a secured join"
+
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED "Allow a join to a new domain even if the computer is already joined to a domain" "Do not allow join to a new domain if the computer is already joined to a domain"
+
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE "The join operation is occurring as part of an upgrade of Windows 9x" "The join operation is not part of a Windows 9x upgrade"
+
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE "Delete the account when a domain is left" "Do not delete the account when a domain is left"
+
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE "Create the account on the domain" "Do not create the account"
+
+TFS hf_wkssvc_wkssvc_joinflags_WKSSVC_JOIN_FLAGS_JOIN_TYPE "Join the computer to a domain" "Join the computer to a workgroup"
+
+
+HF_FIELD hf_wkssvc_platform_id "Platform Id" "wkssvc.platform_id" FT_UINT32 BASE_DEC VALS(srvsvc_srvsvc_PlatformId_vals) 0 "" "" ""
+
+#
+#
+# Prettifications
+PARAM_VALUE wkssvc_dissect_element_NetWkstaGetInfo_server_name_ 1|PIDL_SET_COL_INFO
+PARAM_VALUE wkssvc_dissect_element_NetWkstaGetInfo_level PIDL_SET_COL_INFO
+PARAM_VALUE wkssvc_dissect_element_NetWkstaInfo100_server_name_ 5|PIDL_SET_COL_INFO
+PARAM_VALUE wkssvc_dissect_element_NetWkstaInfo100_domain_name_ 5
+PARAM_VALUE wkssvc_dissect_element_NetWkstaInfo101_server_name_ 5|PIDL_SET_COL_INFO
+PARAM_VALUE wkssvc_dissect_element_NetWkstaInfo101_domain_name_ 5
+PARAM_VALUE wkssvc_dissect_element_NetWkstaInfo102_server_name_ 5|PIDL_SET_COL_INFO
+PARAM_VALUE wkssvc_dissect_element_NetWkstaInfo102_domain_name_ 5
+
+PARAM_VALUE wkssvc_dissect_element_NetWkstaTransportEnum_server_name_ 1|PIDL_SET_COL_INFO
+
+
+TYPE lsa_String "offset=cnf_dissect_lsa_String(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_STRING BASE_NONE 0 NULL 4
+TYPE hyper "offset=cnf_dissect_hyper(tvb, offset, pinfo, tree, di, drep, @PARAM@, @HF@);" FT_UINT64 BASE_DEC 0 NULL 8
+
+CODE START
+
+static int
+cnf_dissect_lsa_String(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, guint8 *drep, guint32 param, int hfindex)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ header_field_info *hf_info;
+
+ ALIGN_TO_4_BYTES;
+
+ old_offset = offset;
+ hf_info=proto_registrar_get_nth(hfindex);
+
+ if (parent_tree) {
+ tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, 0, ett_wkssvc_lsa_String, &item, "%s: ", hf_info->name);
+ }
+
+ offset = wkssvc_dissect_element_lsa_String_name_len(tvb, offset, pinfo, tree, di, drep);
+ offset = wkssvc_dissect_element_lsa_String_name_size(tvb, offset, pinfo, tree, di, drep);
+
+ offset = dissect_ndr_pointer_cb(
+ tvb, offset, pinfo, tree, di, drep,
+ dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
+ hf_info->name, hfindex, cb_wstr_postprocess,
+ GINT_TO_POINTER(param));
+
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
+
+static int
+cnf_dissect_hyper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, guint8 *drep, guint32 param _U_, int hfindex)
+{
+ offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hfindex, NULL);
+
+ return offset;
+}
+
+CODE END
diff --git a/epan/dissectors/pidl/wkssvc/wkssvc.idl b/epan/dissectors/pidl/wkssvc/wkssvc.idl
new file mode 100644
index 00000000..3f283e5e
--- /dev/null
+++ b/epan/dissectors/pidl/wkssvc/wkssvc.idl
@@ -0,0 +1,793 @@
+#include "idl_types.h"
+
+/*
+ wkssvc interface definitions
+*/
+
+import "srvsvc.idl", "lsa.idl";
+
+[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
+ version(1.0),
+ pointer_default(unique),
+ helpstring("Workstation Service"),
+ endpoint("ncacn_np:[\\pipe\\wkssvc]","ncacn_ip_tcp:","ncalrpc:")
+] interface wkssvc
+{
+ typedef [v1_enum] enum srvsvc_PlatformId srvsvc_PlatformId;
+
+#define BOOL uint32
+
+ typedef [public] struct {
+ [value(strlen_m_term(name)*2)] uint16 name_len;
+ [value(strlen_m_term(name)*2)] uint16 name_size;
+ [string,charset(UTF16)] uint16 *name;
+ } lsa_String;
+
+ /******************/
+ /* Function: 0x00 */
+
+ typedef struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ [string,charset(UTF16)] uint16 *domain_name;
+ uint32 version_major;
+ uint32 version_minor;
+ } wkssvc_NetWkstaInfo100;
+
+ typedef struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ [string,charset(UTF16)] uint16 *domain_name;
+ uint32 version_major;
+ uint32 version_minor;
+ [string,charset(UTF16)] uint16 *lan_root;
+ } wkssvc_NetWkstaInfo101;
+
+ typedef struct {
+ srvsvc_PlatformId platform_id;
+ [string,charset(UTF16)] uint16 *server_name;
+ [string,charset(UTF16)] uint16 *domain_name;
+ uint32 version_major;
+ uint32 version_minor;
+ [string,charset(UTF16)] uint16 *lan_root;
+ uint32 logged_on_users;
+ } wkssvc_NetWkstaInfo102;
+
+ /* FIXME: 302, 402 */
+
+ typedef struct {
+ uint32 char_wait;
+ uint32 collection_time;
+ uint32 maximum_collection_count;
+ uint32 keep_connection;
+ uint32 max_commands;
+ uint32 session_timeout;
+ uint32 size_char_buf;
+ uint32 max_threads;
+ uint32 lock_quota;
+ uint32 lock_increment;
+ uint32 lock_maximum;
+ uint32 pipe_increment;
+ uint32 pipe_maximum;
+ uint32 cache_file_timeout;
+ uint32 dormant_file_limit;
+ uint32 read_ahead_throughput;
+ uint32 num_mailslot_buffers;
+ uint32 num_srv_announce_buffers;
+ uint32 max_illegal_dgram_events;
+ uint32 dgram_event_reset_freq;
+ BOOL log_election_packets;
+ BOOL use_opportunistic_locking;
+ BOOL use_unlock_behind;
+ BOOL use_close_behind;
+ BOOL buf_named_pipes;
+ BOOL use_lock_read_unlock;
+ BOOL utilize_nt_caching;
+ BOOL use_raw_read;
+ BOOL use_raw_write;
+ BOOL use_write_raw_data;
+ BOOL use_encryption;
+ BOOL buf_files_deny_write;
+ BOOL buf_read_only_files;
+ BOOL force_core_create_mode;
+ BOOL use_512_byte_max_transfer;
+ } wkssvc_NetWkstaInfo502;
+
+ typedef struct {
+ uint32 char_wait;
+ } wkssvc_NetWkstaInfo1010;
+
+ typedef struct {
+ uint32 collection_time;
+ } wkssvc_NetWkstaInfo1011;
+
+ typedef struct {
+ uint32 maximum_collection_count;
+ } wkssvc_NetWkstaInfo1012;
+
+ typedef struct {
+ uint32 keep_connection;
+ } wkssvc_NetWkstaInfo1013;
+
+ typedef struct {
+ uint32 session_timeout;
+ } wkssvc_NetWkstaInfo1018;
+
+ typedef struct {
+ uint32 size_char_buf;
+ } wkssvc_NetWkstaInfo1023;
+
+ typedef struct {
+ uint32 errorlog_sz;
+ } wkssvc_NetWkstaInfo1027;
+
+ /* downlevel */
+ typedef struct {
+ uint32 print_buf_time;
+ } wkssvc_NetWkstaInfo1028;
+
+ /* downlevel */
+ typedef struct {
+ uint32 wrk_heuristics;
+ } wkssvc_NetWkstaInfo1032;
+
+ typedef struct {
+ uint32 max_threads;
+ } wkssvc_NetWkstaInfo1033;
+
+ typedef struct {
+ uint32 lock_quota;
+ } wkssvc_NetWkstaInfo1041;
+
+ typedef struct {
+ uint32 lock_increment;
+ } wkssvc_NetWkstaInfo1042;
+
+ typedef struct {
+ uint32 lock_maximum;
+ } wkssvc_NetWkstaInfo1043;
+
+ typedef struct {
+ uint32 pipe_increment;
+ } wkssvc_NetWkstaInfo1044;
+
+ typedef struct {
+ uint32 pipe_maximum;
+ } wkssvc_NetWkstaInfo1045;
+
+ typedef struct {
+ uint32 dormant_file_limit;
+ } wkssvc_NetWkstaInfo1046;
+
+ typedef struct {
+ uint32 cache_file_timeout;
+ } wkssvc_NetWkstaInfo1047;
+
+ typedef struct {
+ uint32 use_opportunistic_locking;
+ } wkssvc_NetWkstaInfo1048;
+
+ typedef struct {
+ uint32 use_unlock_behind;
+ } wkssvc_NetWkstaInfo1049;
+
+ typedef struct {
+ uint32 use_close_behind;
+ } wkssvc_NetWkstaInfo1050;
+
+ typedef struct {
+ uint32 buf_named_pipes;
+ } wkssvc_NetWkstaInfo1051;
+
+ typedef struct {
+ uint32 use_lock_read_unlock;
+ } wkssvc_NetWkstaInfo1052;
+
+ typedef struct {
+ uint32 utilize_nt_caching;
+ } wkssvc_NetWkstaInfo1053;
+
+ typedef struct {
+ uint32 use_raw_read;
+ } wkssvc_NetWkstaInfo1054;
+
+ typedef struct {
+ uint32 use_raw_write;
+ } wkssvc_NetWkstaInfo1055;
+
+ typedef struct {
+ uint32 use_write_raw_data;
+ } wkssvc_NetWkstaInfo1056;
+
+ typedef struct {
+ uint32 use_encryption;
+ } wkssvc_NetWkstaInfo1057;
+
+ typedef struct {
+ uint32 buf_files_deny_write;
+ } wkssvc_NetWkstaInfo1058;
+
+ typedef struct {
+ uint32 buf_read_only_files;
+ } wkssvc_NetWkstaInfo1059;
+
+ typedef struct {
+ uint32 force_core_create_mode;
+ } wkssvc_NetWkstaInfo1060;
+
+ typedef struct {
+ uint32 use_512_byte_max_transfer;
+ } wkssvc_NetWkstaInfo1061;
+
+ typedef struct {
+ uint32 read_ahead_throughput;
+ } wkssvc_NetWkstaInfo1062;
+
+ typedef union {
+ [case(100)] wkssvc_NetWkstaInfo100 *info100;
+ [case(101)] wkssvc_NetWkstaInfo101 *info101;
+ [case(102)] wkssvc_NetWkstaInfo102 *info102;
+ [case(502)] wkssvc_NetWkstaInfo502 *info502;
+ [case(1010)] wkssvc_NetWkstaInfo1010 *info1010;
+ [case(1011)] wkssvc_NetWkstaInfo1011 *info1011;
+ [case(1012)] wkssvc_NetWkstaInfo1012 *info1012;
+ [case(1013)] wkssvc_NetWkstaInfo1013 *info1013;
+ [case(1018)] wkssvc_NetWkstaInfo1018 *info1018;
+ [case(1023)] wkssvc_NetWkstaInfo1023 *info1023;
+ [case(1027)] wkssvc_NetWkstaInfo1027 *info1027;
+ [case(1028)] wkssvc_NetWkstaInfo1028 *info1028;
+ [case(1032)] wkssvc_NetWkstaInfo1032 *info1032;
+ [case(1033)] wkssvc_NetWkstaInfo1033 *info1033;
+ [case(1041)] wkssvc_NetWkstaInfo1041 *info1041;
+ [case(1042)] wkssvc_NetWkstaInfo1042 *info1042;
+ [case(1043)] wkssvc_NetWkstaInfo1043 *info1043;
+ [case(1044)] wkssvc_NetWkstaInfo1044 *info1044;
+ [case(1045)] wkssvc_NetWkstaInfo1045 *info1045;
+ [case(1046)] wkssvc_NetWkstaInfo1046 *info1046;
+ [case(1047)] wkssvc_NetWkstaInfo1047 *info1047;
+ [case(1048)] wkssvc_NetWkstaInfo1048 *info1048;
+ [case(1049)] wkssvc_NetWkstaInfo1049 *info1049;
+ [case(1050)] wkssvc_NetWkstaInfo1050 *info1050;
+ [case(1051)] wkssvc_NetWkstaInfo1051 *info1051;
+ [case(1052)] wkssvc_NetWkstaInfo1052 *info1052;
+ [case(1053)] wkssvc_NetWkstaInfo1053 *info1053;
+ [case(1054)] wkssvc_NetWkstaInfo1054 *info1054;
+ [case(1055)] wkssvc_NetWkstaInfo1055 *info1055;
+ [case(1056)] wkssvc_NetWkstaInfo1056 *info1056;
+ [case(1057)] wkssvc_NetWkstaInfo1057 *info1057;
+ [case(1058)] wkssvc_NetWkstaInfo1058 *info1058;
+ [case(1059)] wkssvc_NetWkstaInfo1059 *info1059;
+ [case(1060)] wkssvc_NetWkstaInfo1060 *info1060;
+ [case(1061)] wkssvc_NetWkstaInfo1061 *info1061;
+ [case(1062)] wkssvc_NetWkstaInfo1062 *info1062;
+ [default] ;
+ } wkssvc_NetWkstaInfo;
+
+ WERROR wkssvc_NetWkstaGetInfo(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] uint32 level,
+ [out,switch_is(level),ref] wkssvc_NetWkstaInfo *info
+ );
+
+
+ /******************/
+ /* Function: 0x01 */
+ WERROR wkssvc_NetWkstaSetInfo(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] uint32 level,
+ [in,switch_is(level),ref] wkssvc_NetWkstaInfo *info,
+ [in,out,ref] uint32 *parm_error
+ );
+
+
+ /*****************************/
+ /* Function 0x02 */
+ typedef struct {
+ [string,charset(UTF16)] uint16 *user_name;
+ } wkssvc_NetrWkstaUserInfo0;
+
+ typedef struct {
+ uint32 entries_read;
+ [size_is(entries_read)] wkssvc_NetrWkstaUserInfo0 *user0;
+ } wkssvc_NetWkstaEnumUsersCtr0;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *user_name;
+ [string,charset(UTF16)] uint16 *logon_domain;
+ [string,charset(UTF16)] uint16 *other_domains;
+ [string,charset(UTF16)] uint16 *logon_server;
+ } wkssvc_NetrWkstaUserInfo1;
+
+ typedef struct {
+ uint32 entries_read;
+ [size_is(entries_read)] wkssvc_NetrWkstaUserInfo1 *user1;
+ } wkssvc_NetWkstaEnumUsersCtr1;
+
+ typedef [switch_type(uint32)] union {
+ [case(0)] wkssvc_NetWkstaEnumUsersCtr0 *user0;
+ [case(1)] wkssvc_NetWkstaEnumUsersCtr1 *user1;
+ } wkssvc_NetWkstaEnumUsersCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level), flag(LIBNDR_FLAG_ALIGN5)] wkssvc_NetWkstaEnumUsersCtr ctr;
+ } wkssvc_NetWkstaEnumUsersInfo;
+
+ WERROR wkssvc_NetWkstaEnumUsers(
+ [in] [unique,string,charset(UTF16)] uint16 *server_name,
+ [in,out,ref] wkssvc_NetWkstaEnumUsersInfo *info,
+ [in] uint32 prefmaxlen,
+ [out,ref] uint32 *entries_read,
+ [in,out, unique] uint32 *resume_handle
+ );
+
+ /*****************************/
+ /* Function 0x03 */
+ typedef struct {
+ [string,charset(UTF16)] uint16 *other_domains;
+ } wkssvc_NetrWkstaUserInfo1101;
+
+ typedef [switch_type(uint32)] union {
+ [case(0)] wkssvc_NetrWkstaUserInfo0 *info0;
+ [case(1)] wkssvc_NetrWkstaUserInfo1 *info1;
+ [case(1101)] wkssvc_NetrWkstaUserInfo1101 *info1101;
+ } wkssvc_NetrWkstaUserInfo;
+
+ WERROR wkssvc_NetrWkstaUserGetInfo(
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in] uint32 level,
+ [out,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info
+ );
+
+ /*****************************/
+ /* Function 0x04 */
+ WERROR wkssvc_NetrWkstaUserSetInfo(
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] wkssvc_NetrWkstaUserInfo *info,
+ [in,out] uint32 *parm_err
+ );
+
+ /*****************************/
+ /* Function 0x05 */
+
+ typedef struct {
+ uint32 quality_of_service;
+ uint32 vc_count;
+ [string,charset(UTF16)] uint16 *name;
+ [string,charset(UTF16)] uint16 *address;
+ uint32 wan_link;
+ } wkssvc_NetWkstaTransportInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] wkssvc_NetWkstaTransportInfo0 *array;
+ } wkssvc_NetWkstaTransportCtr0;
+
+ typedef union {
+ [case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
+ } wkssvc_NetWkstaTransportCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] wkssvc_NetWkstaTransportCtr ctr;
+ } wkssvc_NetWkstaTransportInfo;
+
+ WERROR wkssvc_NetWkstaTransportEnum (
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,out,ref] wkssvc_NetWkstaTransportInfo *info,
+ [in] uint32 max_buffer,
+ [out,ref] uint32 *total_entries,
+ [in,out] uint32 *resume_handle
+ );
+
+ /*****************************/
+ /* Function 0x06 */
+ /* only supported on NT */
+ WERROR wkssvc_NetrWkstaTransportAdd(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] uint32 level, /* must be 0 */
+ [in,ref] wkssvc_NetWkstaTransportInfo0 *info0,
+ [in,out] uint32 *parm_err
+ );
+
+ /*****************************/
+ /* Function 0x07 */
+ /* only supported on NT */
+ WERROR wkssvc_NetrWkstaTransportDel(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *transport_name,
+ [in] uint32 unknown3
+ );
+
+ /*****************************/
+ /* Function 0x08 */
+ typedef struct {
+ [string,charset(UTF16)] uint16 *unknown1;
+ [string,charset(UTF16)] uint16 *unknown2;
+ } wkssvc_NetrUseInfo3;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *local;
+ [string,charset(UTF16)] uint16 *remote;
+ [string,charset(UTF16)] uint16 *password;
+ uint32 status;
+ uint32 asg_type;
+ uint32 ref_count;
+ uint32 use_count;
+ [string,charset(UTF16)] uint16 *user_name;
+ [string,charset(UTF16)] uint16 *domain_name;
+ } wkssvc_NetrUseInfo2;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *local;
+ [string,charset(UTF16)] uint16 *remote;
+ [string,charset(UTF16)] uint16 *password;
+ uint32 status;
+ uint32 asg_type;
+ uint32 ref_count;
+ uint32 use_count;
+ } wkssvc_NetrUseInfo1;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *local;
+ [string,charset(UTF16)] uint16 *remote;
+ } wkssvc_NetrUseInfo0;
+
+ typedef [switch_type(uint32)] union {
+ [case(0)] wkssvc_NetrUseInfo0 *info0;
+ [case(1)] wkssvc_NetrUseInfo1 *info1;
+ [case(2)] wkssvc_NetrUseInfo2 *info2;
+ [case(3)] wkssvc_NetrUseInfo3 *info3;
+ } wkssvc_NetrUseGetInfoCtr;
+
+ WERROR wkssvc_NetrUseAdd(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] uint32 level,
+ [in,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr,
+ [in,out] uint32 *parm_err
+ );
+
+ /*****************************/
+ /* Function 0x09 */
+ WERROR wkssvc_NetrUseGetInfo(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *use_name,
+ [in] uint32 level,
+ [out,ref] [switch_is(level)] wkssvc_NetrUseGetInfoCtr *ctr
+ );
+
+ /*****************************/
+ /* Function 0x0a */
+ WERROR wkssvc_NetrUseDel(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *use_name,
+ [in] uint32 force_cond
+ );
+
+ /*****************************/
+ /* Function 0x0b */
+ typedef struct {
+ uint32 count;
+ [size_is(count)] wkssvc_NetrUseInfo2 *array;
+ } wkssvc_NetrUseEnumCtr2;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] wkssvc_NetrUseInfo1 *array;
+ } wkssvc_NetrUseEnumCtr1;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] wkssvc_NetrUseInfo0 *array;
+ } wkssvc_NetrUseEnumCtr0;
+
+ typedef [switch_type(uint32)] union {
+ [case(0)] wkssvc_NetrUseEnumCtr0 *ctr0;
+ [case(1)] wkssvc_NetrUseEnumCtr1 *ctr1;
+ [case(2)] wkssvc_NetrUseEnumCtr2 *ctr2;
+ } wkssvc_NetrUseEnumCtr;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] wkssvc_NetrUseEnumCtr ctr;
+ } wkssvc_NetrUseEnumInfo;
+
+ WERROR wkssvc_NetrUseEnum(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,out,ref] wkssvc_NetrUseEnumInfo *info,
+ [in] uint32 prefmaxlen,
+ [out,ref] uint32 *entries_read,
+ [in,out] uint32 *resume_handle
+ );
+
+ /*****************************/
+ /* Function 0x0c */
+ WERROR wkssvc_NetrMessageBufferSend(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *message_name,
+ [in] [string,charset(UTF16)] uint16 *message_sender_name,
+ [in,ref] [size_is(message_size)] uint8 *message_buffer,
+ [in] uint32 message_size
+ );
+
+ /*****************************/
+ /* Function 0x0d */
+ typedef struct {
+ hyper unknown1;
+ hyper unknown2;
+ hyper unknown3;
+ hyper unknown4;
+ hyper unknown5;
+ hyper unknown6;
+ hyper unknown7;
+ hyper unknown8;
+ hyper unknown9;
+ hyper unknown10;
+ hyper unknown11;
+ hyper unknown12;
+ hyper unknown13;
+ uint32 unknown14;
+ uint32 unknown15;
+ uint32 unknown16;
+ uint32 unknown17;
+ uint32 unknown18;
+ uint32 unknown19;
+ uint32 unknown20;
+ uint32 unknown21;
+ uint32 unknown22;
+ uint32 unknown23;
+ uint32 unknown24;
+ uint32 unknown25;
+ uint32 unknown26;
+ uint32 unknown27;
+ uint32 unknown28;
+ uint32 unknown29;
+ uint32 unknown30;
+ uint32 unknown31;
+ uint32 unknown32;
+ uint32 unknown33;
+ uint32 unknown34;
+ uint32 unknown35;
+ uint32 unknown36;
+ uint32 unknown37;
+ uint32 unknown38;
+ uint32 unknown39;
+ uint32 unknown40;
+ } wkssvc_NetrWorkstationStatistics;
+
+ WERROR wkssvc_NetrWorkstationStatisticsGet(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *unknown2,
+ [in] uint32 unknown3,
+ [in] uint32 unknown4,
+ [out,ref] wkssvc_NetrWorkstationStatistics **info
+ );
+
+ /*****************************/
+ /* Function 0x0e */
+ WERROR wkssvc_NetrLogonDomainNameAdd(
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name
+ );
+
+ /*****************************/
+ /* Function 0x0f */
+ WERROR wkssvc_NetrLogonDomainNameDel(
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name
+ );
+
+ /*****************************/
+ /* Function 0x10 */
+ WERROR wkssvc_NetrJoinDomain(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
+ [in] [string,charset(UTF16)] uint16 *account_ou,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in] wkssvc_joinflags join_flags
+ );
+
+ /*****************************/
+ /* Function 0x11 */
+ WERROR wkssvc_NetrUnjoinDomain(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *password,
+ [in] wkssvc_joinflags unjoin_flags
+ );
+
+ /*****************************/
+ /* Function 0x12 */
+ typedef [bitmap32bit] bitmap {
+ /* TRUE: create the account in the domain */
+ WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
+ } wkssvc_renameflags;
+
+ WERROR wkssvc_NetrRenameMachineInDomain(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *NewMachineName,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *password,
+ [in] wkssvc_renameflags RenameOptions
+ );
+
+ /*****************************/
+ /* Function 0x13 */
+ typedef enum {
+ NetSetupUnknown = 0,
+ NetSetupMachine = 1,
+ NetSetupWorkgroup = 2,
+ NetSetupDomain = 3,
+ NetSetupNonExistentDomain = 4,
+ NetSetupDnsMachine = 5
+ } wkssvc_NetValidateNameType;
+
+ WERROR wkssvc_NetrValidateName(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *Password,
+ [in] wkssvc_NetValidateNameType name_type
+ );
+
+ /*****************************/
+ /* Function 0x14 */
+ typedef enum {
+ NetSetupUnknownStatus = 0,
+ NetSetupUnjoined = 1,
+ NetSetupWorkgroupName = 2,
+ NetSetupDomainName = 3
+ } wkssvc_NetJoinStatus;
+
+ WERROR wkssvc_NetrGetJoinInformation(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,out,ref] [string,charset(UTF16)] uint16 **name_buffer,
+ [out,ref] wkssvc_NetJoinStatus *name_type
+ );
+
+ /*****************************/
+ /* Function 0x15 */
+ WERROR wkssvc_NetrGetJoinableOus(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] [string,charset(UTF16)] uint16 *unknown,
+ [in,out,ref] uint32 *num_ous,
+ [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
+ );
+
+ typedef [flag(NDR_PAHEX)] struct {
+ uint8 data[524];
+ } wkssvc_PasswordBuffer;
+
+ typedef [bitmap32bit] bitmap {
+ WKSSVC_JOIN_FLAGS_JOIN_WITH_NEW_NAME = 0x00000400,
+ WKSSVC_JOIN_FLAGS_JOIN_DC_ACCOUNT = 0x00000200,
+ /* TRUE: defer setting the SPN and dNSHostName until a rename operation */
+ WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100,
+
+ /* TRUE: set the machine password to the provided one after the join completes */
+ WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080,
+
+ /* TRUE: perform an unsecured join */
+ WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040,
+
+ /* TRUE: allow the join to complete even if the account already exists */
+ WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
+
+ /* TRUE: this join is part of a w9x upgrade */
+ WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
+
+ /* TRUE: delete the account when the domain is left */
+ WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004,
+
+ /* TRUE: create the account in the domain */
+ WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002,
+
+ /* TRUE: join domain FALSE: join workgroup */
+ WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
+
+ } wkssvc_joinflags;
+
+ /*****************************/
+ /* Function 0x16 */
+ WERROR wkssvc_NetrJoinDomain2 (
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
+ [in] [string,charset(UTF16)] uint16 *account_name,
+ [in] [string,charset(UTF16)] uint16 *admin_account,
+ [in] wkssvc_PasswordBuffer *encrypted_password,
+ [in] wkssvc_joinflags join_flags
+ );
+
+ /*****************************/
+ /* Function 0x17 */
+ WERROR wkssvc_NetrUnjoinDomain2 (
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *account,
+ [in] wkssvc_PasswordBuffer *encrypted_password,
+ [in] wkssvc_joinflags unjoin_flags
+ );
+
+ /*****************************/
+ /* Function 0x18 */
+ WERROR wkssvc_NetrRenameMachineInDomain2(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *NewMachineName,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in] wkssvc_renameflags RenameOptions
+ );
+
+ /*****************************/
+ /* Function 0x19 */
+ WERROR wkssvc_NetrValidateName2(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in] wkssvc_NetValidateNameType name_type
+ );
+
+ /*****************************/
+ /* Function 0x1a */
+ WERROR wkssvc_NetrGetJoinableOus2(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *domain_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in,out,ref] uint32 *num_ous,
+ [out,ref] [size_is(*num_ous)] [string,charset(UTF16)] uint16 ***ous
+ );
+
+ /*****************************/
+ /* Function 0x1b */
+ WERROR wkssvc_NetrAddAlternateComputerName(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in] uint32 Reserved
+ );
+
+ /*****************************/
+ /* Function 0x1c */
+ WERROR wkssvc_NetrRemoveAlternateComputerName(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in] uint32 Reserved
+ );
+
+ /*****************************/
+ /* Function 0x1d */
+ WERROR wkssvc_NetrSetPrimaryComputername(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] [string,charset(UTF16)] uint16 *primary_name,
+ [in] [string,charset(UTF16)] uint16 *Account,
+ [in] wkssvc_PasswordBuffer *EncryptedPassword,
+ [in] uint32 Reserved
+ );
+
+ /*****************************/
+ /* Function 0x1e */
+ typedef enum {
+ NetPrimaryComputerName = 0,
+ NetAlternateComputerNames = 1,
+ NetAllComputerNames = 2,
+ NetComputerNameTypeMax = 3
+ } wkssvc_ComputerNameType;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] lsa_String *computer_name;
+ } wkssvc_ComputerNamesCtr;
+
+ WERROR wkssvc_NetrEnumerateComputerNames(
+ [in] [string,charset(UTF16)] uint16 *server_name,
+ [in] wkssvc_ComputerNameType name_type,
+ [in] uint32 Reserved,
+ [out,ref] wkssvc_ComputerNamesCtr **ctr
+ );
+}
diff --git a/epan/dissectors/pidl/wzcsvc/wzcsvc.cnf b/epan/dissectors/pidl/wzcsvc/wzcsvc.cnf
new file mode 100644
index 00000000..3187c6b5
--- /dev/null
+++ b/epan/dissectors/pidl/wzcsvc/wzcsvc.cnf
@@ -0,0 +1,2 @@
+# Conformance file
+
diff --git a/epan/dissectors/pidl/wzcsvc/wzcsvc.idl b/epan/dissectors/pidl/wzcsvc/wzcsvc.idl
new file mode 100644
index 00000000..b403c079
--- /dev/null
+++ b/epan/dissectors/pidl/wzcsvc/wzcsvc.idl
@@ -0,0 +1,31 @@
+/*
+ wireless configuration service
+*/
+
+[
+ uuid("621dff68-3c39-4c6c-aae3-e68e2c6503ad"),
+ version(1.0),
+ helpstring("Wireless Configuration Service")
+]
+interface wzcsvc
+{
+
+ void wzcsvc_EnumInterfaces();
+ void wzcsvc_QueryInterface();
+ void wzcsvc_SetInterface();
+ void wzcsvc_RefreshInterface();
+ void wzcsvc_QueryContext();
+ void wzcsvc_SetContext();
+ void wzcsvc_EapolUIResponse();
+ void wzcsvc_EapolGetCustomAuthData();
+ void wzcsvc_EapolSetCustomAuthData();
+ void wzcsvc_EapolGetInterfaceParams();
+ void wzcsvc_EapolSetInterfaceParams();
+ void wzcsvc_EapolReAuthenticateInterface();
+ void wzcsvc_EapolQueryInterfaceState();
+ void wzcsvc_OpenWZCDbLogSession();
+ void wzcsvc_CloseWZCDbLogSession();
+ void wzcsvc_EnumWZCDbLogRecords();
+ void wzcsvc_FlushWZCdbLog();
+ void wzcsvc_GetWZCDbLogRecord();
+}