From ca7a6cd10d7184da6a1f36f45456f98e58cfb5be Mon Sep 17 00:00:00 2001 From: errollw Date: Tue, 25 Mar 2014 15:39:07 -0400 Subject: [PATCH] Updated SP2 version, started work on readme --- .gitignore | 7 +- EyeTab.sln | 45 + EyeTab/gaze_geometry.cpp | 46 +- EyeTab/gaze_geometry.h | 2 +- EyeTab/gaze_smoothing.cpp | 2 + EyeTab/gaze_system.cpp | 22 +- EyeTab/stdafx.cpp | 8 + EyeTab/stdafx.h | 15 + EyeTab/targetver.h | 8 + EyeTab_SP2/EyeTab_SP2.cpp | 702 +----- EyeTab_SP2/GetGUID.h | 4397 ----------------------------------- EyeTab_SP2/ReadMe.txt | 40 - EyeTab_SP2/comet/array.h | 150 -- EyeTab_SP2/comet/assert.h | 68 - EyeTab_SP2/comet/atl_module.h | 121 - EyeTab_SP2/comet/auto_buffer.h | 99 - EyeTab_SP2/comet/bstr.h | 948 -------- EyeTab_SP2/comet/calllog.h | 628 ----- EyeTab_SP2/comet/cmd_line_parser.h | 101 - EyeTab_SP2/comet/comet.h | 776 ------- EyeTab_SP2/comet/common.h | 316 --- EyeTab_SP2/comet/config.h | 243 -- EyeTab_SP2/comet/cp.h | 436 ---- EyeTab_SP2/comet/cptraits.h | 118 - EyeTab_SP2/comet/currency.h | 474 ---- EyeTab_SP2/comet/date.h | 396 ---- EyeTab_SP2/comet/datetime.h | 1943 ---------------- EyeTab_SP2/comet/dispatch.h | 675 ------ EyeTab_SP2/comet/enum.h | 29 - EyeTab_SP2/comet/enum_common.h | 187 -- EyeTab_SP2/comet/enum_iterator.h | 179 -- EyeTab_SP2/comet/error.h | 429 ---- EyeTab_SP2/comet/error_fwd.h | 119 - EyeTab_SP2/comet/exe_server.h | 292 --- EyeTab_SP2/comet/functor.h | 1341 ----------- EyeTab_SP2/comet/git.h | 95 - EyeTab_SP2/comet/handle.h | 363 --- EyeTab_SP2/comet/handle_except.h | 363 --- EyeTab_SP2/comet/impqi.h | 546 ----- EyeTab_SP2/comet/interface.h | 256 -- EyeTab_SP2/comet/invariant_lock.h | 126 - EyeTab_SP2/comet/lw_lock.h | 228 -- EyeTab_SP2/comet/module.h | 274 --- EyeTab_SP2/comet/oleidl_comtypes.h | 72 - EyeTab_SP2/comet/ptr.h | 1261 ---------- EyeTab_SP2/comet/reference_count.h | 100 - EyeTab_SP2/comet/registry.h | 1302 ----------- EyeTab_SP2/comet/regkey.h | 65 - EyeTab_SP2/comet/safearray.h | 1498 ------------ EyeTab_SP2/comet/scope_guard.h | 363 --- EyeTab_SP2/comet/server.h | 1588 ------------- EyeTab_SP2/comet/smart_enum.h | 139 -- EyeTab_SP2/comet/static_assert.h | 54 - EyeTab_SP2/comet/stl.h | 69 - EyeTab_SP2/comet/stl_enum.h | 188 -- EyeTab_SP2/comet/stream.h | 1566 ------------- EyeTab_SP2/comet/threading.h | 228 -- EyeTab_SP2/comet/tlbinfo.h | 451 ---- EyeTab_SP2/comet/tstring.h | 124 - EyeTab_SP2/comet/type_traits.h | 262 --- EyeTab_SP2/comet/typelist.h | 450 ---- EyeTab_SP2/comet/unittest.h | 86 - EyeTab_SP2/comet/util.h | 125 - EyeTab_SP2/comet/uuid.h | 88 - EyeTab_SP2/comet/uuid_fwd.h | 441 ---- EyeTab_SP2/comet/variant.h | 1054 --------- EyeTab_SP2/comet/variant_iterator.h | 149 -- EyeTab_SP2/comet_task_ptr.h | 78 - EyeTab_SP2/format.cc | 733 ------ EyeTab_SP2/format.h | 1500 ------------ EyeTab_SP2/stdafx.cpp | 8 + EyeTab_SP2/stdafx.h | 15 + EyeTab_SP2/targetver.h | 8 + EyeTab_SP2/videoInput.h | 194 ++ EyeTab_SP2/videoInput.lib | Bin 0 -> 5829386 bytes README.md | 34 +- 76 files changed, 474 insertions(+), 31432 deletions(-) create mode 100644 EyeTab.sln create mode 100644 EyeTab/stdafx.cpp create mode 100644 EyeTab/stdafx.h create mode 100644 EyeTab/targetver.h delete mode 100644 EyeTab_SP2/GetGUID.h delete mode 100644 EyeTab_SP2/ReadMe.txt delete mode 100644 EyeTab_SP2/comet/array.h delete mode 100644 EyeTab_SP2/comet/assert.h delete mode 100644 EyeTab_SP2/comet/atl_module.h delete mode 100644 EyeTab_SP2/comet/auto_buffer.h delete mode 100644 EyeTab_SP2/comet/bstr.h delete mode 100644 EyeTab_SP2/comet/calllog.h delete mode 100644 EyeTab_SP2/comet/cmd_line_parser.h delete mode 100644 EyeTab_SP2/comet/comet.h delete mode 100644 EyeTab_SP2/comet/common.h delete mode 100644 EyeTab_SP2/comet/config.h delete mode 100644 EyeTab_SP2/comet/cp.h delete mode 100644 EyeTab_SP2/comet/cptraits.h delete mode 100644 EyeTab_SP2/comet/currency.h delete mode 100644 EyeTab_SP2/comet/date.h delete mode 100644 EyeTab_SP2/comet/datetime.h delete mode 100644 EyeTab_SP2/comet/dispatch.h delete mode 100644 EyeTab_SP2/comet/enum.h delete mode 100644 EyeTab_SP2/comet/enum_common.h delete mode 100644 EyeTab_SP2/comet/enum_iterator.h delete mode 100644 EyeTab_SP2/comet/error.h delete mode 100644 EyeTab_SP2/comet/error_fwd.h delete mode 100644 EyeTab_SP2/comet/exe_server.h delete mode 100644 EyeTab_SP2/comet/functor.h delete mode 100644 EyeTab_SP2/comet/git.h delete mode 100644 EyeTab_SP2/comet/handle.h delete mode 100644 EyeTab_SP2/comet/handle_except.h delete mode 100644 EyeTab_SP2/comet/impqi.h delete mode 100644 EyeTab_SP2/comet/interface.h delete mode 100644 EyeTab_SP2/comet/invariant_lock.h delete mode 100644 EyeTab_SP2/comet/lw_lock.h delete mode 100644 EyeTab_SP2/comet/module.h delete mode 100644 EyeTab_SP2/comet/oleidl_comtypes.h delete mode 100644 EyeTab_SP2/comet/ptr.h delete mode 100644 EyeTab_SP2/comet/reference_count.h delete mode 100644 EyeTab_SP2/comet/registry.h delete mode 100644 EyeTab_SP2/comet/regkey.h delete mode 100644 EyeTab_SP2/comet/safearray.h delete mode 100644 EyeTab_SP2/comet/scope_guard.h delete mode 100644 EyeTab_SP2/comet/server.h delete mode 100644 EyeTab_SP2/comet/smart_enum.h delete mode 100644 EyeTab_SP2/comet/static_assert.h delete mode 100644 EyeTab_SP2/comet/stl.h delete mode 100644 EyeTab_SP2/comet/stl_enum.h delete mode 100644 EyeTab_SP2/comet/stream.h delete mode 100644 EyeTab_SP2/comet/threading.h delete mode 100644 EyeTab_SP2/comet/tlbinfo.h delete mode 100644 EyeTab_SP2/comet/tstring.h delete mode 100644 EyeTab_SP2/comet/type_traits.h delete mode 100644 EyeTab_SP2/comet/typelist.h delete mode 100644 EyeTab_SP2/comet/unittest.h delete mode 100644 EyeTab_SP2/comet/util.h delete mode 100644 EyeTab_SP2/comet/uuid.h delete mode 100644 EyeTab_SP2/comet/uuid_fwd.h delete mode 100644 EyeTab_SP2/comet/variant.h delete mode 100644 EyeTab_SP2/comet/variant_iterator.h delete mode 100644 EyeTab_SP2/comet_task_ptr.h delete mode 100644 EyeTab_SP2/format.cc delete mode 100644 EyeTab_SP2/format.h create mode 100644 EyeTab_SP2/stdafx.cpp create mode 100644 EyeTab_SP2/stdafx.h create mode 100644 EyeTab_SP2/targetver.h create mode 100644 EyeTab_SP2/videoInput.h create mode 100644 EyeTab_SP2/videoInput.lib diff --git a/.gitignore b/.gitignore index c3a2bf2..e11c713 100644 --- a/.gitignore +++ b/.gitignore @@ -17,8 +17,6 @@ *.user *.sln.docstates -*.sln - # Build results [Dd]ebug/ [Dd]ebugPublic/ @@ -199,7 +197,4 @@ $RECYCLE.BIN/ # ========================= -stdafx.* - -opencv_libs.txt -targetver.h \ No newline at end of file +opencv_libs.txt \ No newline at end of file diff --git a/EyeTab.sln b/EyeTab.sln new file mode 100644 index 0000000..98b9ae8 --- /dev/null +++ b/EyeTab.sln @@ -0,0 +1,45 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EyeTab", "EyeTab\EyeTab.vcxproj", "{6AA5343B-047B-48E2-A839-03D6BDC9D19F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EyeTab_SP2", "EyeTab_SP2\EyeTab_SP2.vcxproj", "{2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Debug|Win32.ActiveCfg = Debug|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Debug|Win32.Build.0 = Debug|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Debug|x64.ActiveCfg = Debug|x64 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Debug|x64.Build.0 = Debug|x64 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Release|Mixed Platforms.Build.0 = Release|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Release|Win32.ActiveCfg = Release|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Release|Win32.Build.0 = Release|Win32 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Release|x64.ActiveCfg = Release|x64 + {6AA5343B-047B-48E2-A839-03D6BDC9D19F}.Release|x64.Build.0 = Release|x64 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Debug|Win32.ActiveCfg = Debug|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Debug|Win32.Build.0 = Debug|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Debug|x64.ActiveCfg = Debug|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Release|Mixed Platforms.Build.0 = Release|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Release|Win32.ActiveCfg = Release|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Release|Win32.Build.0 = Release|Win32 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Release|x64.ActiveCfg = Release|x64 + {2FAAF1F5-56A3-4132-AE61-7FAEB2F1669D}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/EyeTab/gaze_geometry.cpp b/EyeTab/gaze_geometry.cpp index 5d51767..1b54d4c 100644 --- a/EyeTab/gaze_geometry.cpp +++ b/EyeTab/gaze_geometry.cpp @@ -24,7 +24,7 @@ const double FOCAL_LEN_Y_PX = 960.154605354; const double FOCAL_LEN_Z_PX = (FOCAL_LEN_X_PX + FOCAL_LEN_Y_PX) / 2; const cv::Point2d PRIN_POINT(634.799023712, 367.91715841); -vector ellipse_to_limbus(cv::RotatedRect ellipse){ +vector ellipse_to_limbus(cv::RotatedRect ellipse, bool limbus_switch=true){ vector limbus_to_return; @@ -40,19 +40,12 @@ vector ellipse_to_limbus(cv::RotatedRect ellipse){ Vector3d limbus_center(iris_x_mm, iris_y_mm, iris_z_mm); double psi = CV_PI / 180.0 * (ellipse.angle+90); // z-axis rotation (radians) - double tht_1 = acos(min_axis_px / maj_axis_px); // y-axis rotation (radians) - double tht_2 = -tht_1; // as acos has 2 ambiguous solutions + double tht = acos(min_axis_px / maj_axis_px); // y-axis rotation (radians) - //Vector3d limb_normal = Vector3d(limbus_center) * -1; - //limb_normal.normalize(); + if (limbus_switch) tht = -tht; // ambiguous acos, so sometimes switch limbus - //AngleAxisd rot1(psi, Vector3d(0,0,1)); - //AngleAxisd rot2(-tht_1, Vector3d(0,1,0)); - //limb_normal = rot1 * limb_normal; - //limb_normal = rot2 * limb_normal; - - // Ignore other possible normal - wrong in general as will point the wrong direction - Vector3d limb_normal(sin(tht_1) * cos(psi), -sin(tht_1) * sin(psi), -cos(tht_1)); + // Get limbus normal for chosen theta + Vector3d limb_normal(sin(tht) * cos(psi), -sin(tht) * sin(psi), -cos(tht)); // Now correct for weak perspective by modifying angle by offset between camera axis and limbus double x_correction = -atan2(iris_y_mm, iris_z_mm); @@ -78,16 +71,28 @@ Point2d get_gaze_point_mm(Vector3d limb_center, Vector3d limb_normal){ Point2d get_gaze_pt_mm(RotatedRect& ellipse){ - vector limbus = ellipse_to_limbus(ellipse); - Point2d p = get_gaze_point_mm(limbus[0], limbus[1]); + // get two possible limbus centres and normals because of ambiguous trig + vector limbus_a = ellipse_to_limbus(ellipse, true); + vector limbus_b = ellipse_to_limbus(ellipse, false); + + // calculate gaze points for each possible limbus + Point2d gp_mm_a = get_gaze_point_mm(limbus_a[0], limbus_a[1]); + Point2d gp_mm_b = get_gaze_point_mm(limbus_b[0], limbus_b[1]); + + // calculate distance from centre of screen for each possible gaze point + int dist_a = std::abs(gp_mm_a.x) + std::abs(gp_mm_a.y); + int dist_b = std::abs(gp_mm_b.x) + std::abs(gp_mm_b.y); - return p; + // return gaze point closest to screen centre + return (dist_a < dist_b) ? gp_mm_a : gp_mm_b; } + const Size SCREEN_SIZE_MM(236, 134); const Size SCREEN_SIZE_PX(1920, 1080); // screen size in pixels const Point2i CAMERA_OFFSET_MM(120, 140); // vector from top left of screen to camera + Point2i convert_gaze_pt_mm_to_px(Point2d gaze_pt_mm){ int gp_px_x = (gaze_pt_mm.x + CAMERA_OFFSET_MM.x) / SCREEN_SIZE_MM.width * SCREEN_SIZE_PX.width; @@ -99,12 +104,15 @@ Point2i convert_gaze_pt_mm_to_px(Point2d gaze_pt_mm){ float scale = 720 / float(SCREEN_SIZE_PX.height); -// Draws the gaze-point on-screen -void show_gaze(Mat& img, vector gaze_pt_px_s, vector colors){ +// draws the gaze-points on-screen as circles and crosses +void show_gaze(Mat& img, vector gaze_pt_raw_s, vector colors_raw, Point2i gaze_pt_smoothed, Scalar color_smoothed){ Mat screen(SCREEN_SIZE_PX.height, SCREEN_SIZE_PX.width, CV_8UC3); screen.setTo(YELLOW); - for (int i=0; i gaze_pt_px_s, vector colors); +void show_gaze(Mat& img, vector gaze_pt_raw_s, vector colors_raw, Point2i gaze_pt_smoothed, Scalar color_smoothed); diff --git a/EyeTab/gaze_smoothing.cpp b/EyeTab/gaze_smoothing.cpp index 4007f2a..e9febeb 100644 --- a/EyeTab/gaze_smoothing.cpp +++ b/EyeTab/gaze_smoothing.cpp @@ -18,6 +18,7 @@ vector point_history; vector weights; float weight_sum = 0; +// create and initialize weights and history vectors void gaze_smoothing_init(){ for (float i = 1; i < SMOOTHING_WINDOW_SIZE; i++){ weights.push_back(i); @@ -26,6 +27,7 @@ void gaze_smoothing_init(){ } } +// very simple smoothing low-pass filter Point2d smooth_gaze(Point2d gaze_point){ Point2d point_to_return(0,0); diff --git a/EyeTab/gaze_system.cpp b/EyeTab/gaze_system.cpp index 497c3eb..eb3952d 100644 --- a/EyeTab/gaze_system.cpp +++ b/EyeTab/gaze_system.cpp @@ -120,30 +120,28 @@ void track_gaze(Mat& frame_bgr, Mat& frame_gray) { ellipse0 = RotatedRect(Point2i(ellipse0.center) + eye0_roi_ref.tl(), ellipse0.size, ellipse0.angle); ellipse1 = RotatedRect(Point2i(ellipse1.center) + eye1_roi_ref.tl(), ellipse1.size, ellipse1.angle); - /*Point2d gaze_pt_mm = (get_gaze_pt_mm(ellipse0) + get_gaze_pt_mm(ellipse1)) * 0.5; + // smooth gaze point + Point2d gaze_pt_mm = (get_gaze_pt_mm(ellipse0) + get_gaze_pt_mm(ellipse1)) * 0.5; gaze_pt_mm = smooth_gaze(gaze_pt_mm); Point gaze_pt_px = convert_gaze_pt_mm_to_px(gaze_pt_mm); - cout << "GAZE PT MM " << gaze_pt_mm.x << " " << gaze_pt_mm.y << endl; - cout << "GAZE PT PX " << gaze_pt_px.x << " " << gaze_pt_px.y << endl;*/ + // get raw gaze points also Point2d gaze_pt_mm_0 = get_gaze_pt_mm(ellipse0); Point2d gaze_pt_mm_1 = get_gaze_pt_mm(ellipse1); Point2i gaze_pt_px_0 = convert_gaze_pt_mm_to_px(gaze_pt_mm_0); Point2i gaze_pt_px_1 = convert_gaze_pt_mm_to_px(gaze_pt_mm_1); - cout << "GAZE PT 1 " << gaze_pt_mm_0 << " " << gaze_pt_px_0 << endl; - cout << "GAZE PT 2 " << gaze_pt_mm_1 << " " << gaze_pt_px_1 << endl; + // *** DEBUG DRAWING *** + // draw raw and smoothed gaze points vector gp_px_s; gp_px_s.push_back(gaze_pt_px_0); gp_px_s.push_back(gaze_pt_px_1); - vector colors; - colors.push_back(RED); - colors.push_back(BLUE); - - show_gaze(frame_bgr, gp_px_s, colors); - - // *** DEBUG DRAWING *** + gp_px_s.push_back(gaze_pt_px); + vector colors_raw; + colors_raw.push_back(RED); + colors_raw.push_back(BLUE); + show_gaze(frame_bgr, gp_px_s, colors_raw, gaze_pt_px, YELLOW); // DEBUG DRAWING - coarse ROIs rectangle(frame_bgr, eye0_roi, GREEN); diff --git a/EyeTab/stdafx.cpp b/EyeTab/stdafx.cpp new file mode 100644 index 0000000..aaa7670 --- /dev/null +++ b/EyeTab/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// EyeTab.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/EyeTab/stdafx.h b/EyeTab/stdafx.h new file mode 100644 index 0000000..b005a83 --- /dev/null +++ b/EyeTab/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/EyeTab/targetver.h b/EyeTab/targetver.h new file mode 100644 index 0000000..87c0086 --- /dev/null +++ b/EyeTab/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/EyeTab_SP2/EyeTab_SP2.cpp b/EyeTab_SP2/EyeTab_SP2.cpp index dd69b3f..28f9c60 100644 --- a/EyeTab_SP2/EyeTab_SP2.cpp +++ b/EyeTab_SP2/EyeTab_SP2.cpp @@ -1,608 +1,106 @@ #include "stdafx.h" +#include "videoInput.h" -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include +#include #include - -#include - -#include "GetGUID.h" - -namespace comet { - -#define MAKE_COMET_COMTYPE(T, BASE) \ - template<> struct comtype< ::T > \ - { \ - static const IID& uuid() { return IID_ ## T; } \ - typedef ::BASE base; \ - } - - MAKE_COMET_COMTYPE(IMF2DBuffer, IUnknown); - MAKE_COMET_COMTYPE(IAMVideoProcAmp, IUnknown); - MAKE_COMET_COMTYPE(IAMCameraControl, IUnknown); +#include + +#include +#include +#include +#include + +#include "eye_center.h" +#include "erase_specular.h" +#include "get_poss_limb_pts.h" +#include "fit_ellipse.h" +#include "utils.h" +#include "get_eyelids.h" +#include "gaze_system.h" +#include "gaze_smoothing.h" + + +void StopEvent(int deviceID, void *userData) { + videoInput vidInput = videoInput::getInstance(); + vidInput.closeDevice(deviceID); } + + +int main(int argc, const char** argv) { + + // initialize modules + lin_polar_init(); + gaze_system_init(); + gaze_smoothing_init(); + + // intialize camera API + videoInput vidInput = videoInput::getInstance(); + int num_devices = vidInput.listDevices(); + int cam_id = 0; + + // check we actually have attached devices, if not exit + if (num_devices == 0){ + return -1; + } + + // if we fail to setup a camera, exit + if(!vidInput.setupDevice(cam_id, 1280, 720, 60)) { + return -1; + } + + // extract camera parameters, and set a default brightness + CamParametrs CP = vidInput.getParametrs(cam_id); + CP.Brightness.CurrentValue = 180; + CP.Brightness.Flag = 0; + vidInput.setParametrs(cam_id, CP); + + // sets callback function for emergency stop, e.g. pulling out camera + vidInput.setEmergencyStopEvent(cam_id, NULL, StopEvent); + + // setup image files used in the capture process + Mat captureFrame, grayscaleFrame, smallFrame; + + // create a window to present the results + namedWindow("output", 1); + CvSize size = cvSize(vidInput.getWidth(cam_id), vidInput.getHeight(cam_id)); + + // VideoInput library uses IplImage + IplImage* frame; + frame = cvCreateImage(size, 8, 3); + + // main loop + while(true) { + + if(vidInput.isFrameNew(cam_id)) { + vidInput.getPixels(cam_id, (unsigned char *)frame->imageData); + + cv::Mat image(frame); + cv::imshow("output", image); + } + + char c = cv::waitKey(5); + + if(c == 27) { + break; + } else if(c == 49) { + CP.Brightness.CurrentValue = 50; + CP.Brightness.Flag = 1; + vidInput.setParametrs(cam_id, CP); + }else if(c == 50) { + CP.Brightness.CurrentValue = 0; + CP.Brightness.Flag = 2; + vidInput.setParametrs(cam_id, CP); + } + + if(!vidInput.isDeviceSetup(cam_id)) { + break; + } + } + + // tidy up on exit + vidInput.closeDevice(cam_id); + cv::destroyAllWindows(); -namespace comet { - template - class com_ptr_array { - public: - com_ptr_array() : _ptr(nullptr), _count(0) {} - ~com_ptr_array() { - clear(); - } - - - TInf** in() { - return _ptr.in(); - } - - TInf*** inout() { - return _ptr.inout(); - } - - TInf*** out() { - clear(); - return _ptr.out(); - } - - TCount count() { - return _count; - } - - TCount* inout_count() { - return &_count; - } - - TCount* out_count() { - clear(); - return &_count; - } - - com_ptr operator[](size_t i) { - return com_ptr(_ptr[i]); - } - - - - private: - void clear() { - if (_ptr) { - for (DWORD i = 0; i < _count; i++) { - _ptr[i]->Release(); - } - _count = 0; - _ptr.free(); - } - } - - task_ptr _ptr; - TCount _count; - }; -} - -namespace comet -{ - struct auto_mf - { - auto_mf(DWORD dwFlags = MFSTARTUP_FULL) - { - MFStartup(MF_VERSION) | comet::raise_exception; - } - ~auto_mf() - { - MFShutdown(); - } - }; -} - - - -float OffsetToFloat(const MFOffset& offset) -{ - return offset.value + (static_cast(offset.fract) / 65536.0f); -} - -void PrintAttributes( comet::com_ptr attr ) -{ - UINT32 count = 0; - attr->GetCount(&count) | comet::raise_exception; - if (count == 0) { - std::cout << "Empty media type." << std::endl; - } - - for (UINT32 j = 0; j < count; j++) { - GUID guid; - PROPVARIANT var; - PropVariantInit(&var); - attr->GetItemByIndex(j, &guid, &var); - - std::cout << GetGUIDName(guid) << " : "; - - if ((guid == MF_MT_FRAME_SIZE) || (guid == MF_MT_PIXEL_ASPECT_RATIO)) - { - UINT32 uHigh = 0, uLow = 0; - Unpack2UINT32AsUINT64(var.uhVal.QuadPart, &uHigh, &uLow); - std::cout << uHigh << " x " << uLow; - } - else if ((guid == MF_MT_FRAME_RATE) || (guid == MF_MT_FRAME_RATE_RANGE_MAX) || - (guid == MF_MT_FRAME_RATE_RANGE_MIN)) - { - UINT32 uHigh = 0, uLow = 0; - Unpack2UINT32AsUINT64(var.uhVal.QuadPart, &uHigh, &uLow); - std::cout << ((double)uHigh)/uLow; - } - else if ((guid == MF_MT_GEOMETRIC_APERTURE) || - (guid == MF_MT_MINIMUM_DISPLAY_APERTURE) || - (guid == MF_MT_PAN_SCAN_APERTURE)) - { - MFVideoArea *pArea = reinterpret_cast(var.caub.pElems); - std::cout << "(" << OffsetToFloat(pArea->OffsetX) << ", " << OffsetToFloat(pArea->OffsetY) << ") "; - std::cout << "(" << pArea->Area.cx << ", " << pArea->Area.cy << ")"; - } - else { - switch (var.vt) - { - case VT_UI4: - std::cout << var.ulVal; - break; - case VT_UI8: - std::cout << var.uhVal.QuadPart; - break; - case VT_R8: - std::cout << var.dblVal; - break; - case VT_CLSID: - std::cout << GetGUIDName(*var.puuid); - break; - case VT_LPWSTR: - std::cout << comet::bstr_t(var.pwszVal).s_str(); - break; - case VT_VECTOR | VT_UI1: - std::cout << "<>"; - break; - case VT_UNKNOWN: - std::cout << "IUnknown"; - break; - default: - std::cout << "Unexpected attribute type (vt = " << var.vt << ")"; - break; - } - } - PropVariantClear(&var); - std::cout << std::endl; - } -} - - -struct cam_prop_range -{ - long min; - long max; - long step; - long defaultValue; - long flags; -}; -std::ostream& operator<<(std::ostream& os, const cam_prop_range& val) { - os << "[" << val.min << ":" << val.step << ":" << val.max << "], " << val.defaultValue << ", " << val.flags; - return os; -} - -struct cam_prop_value -{ - long value; - bool isAuto; - - cam_prop_value() : value(0), isAuto(true) { - } - cam_prop_value(long value) : value(value), isAuto(false) { - } - operator long() const { - return value; - } -}; -std::ostream& operator<<(std::ostream& os, const cam_prop_value& val) { - os << val.value; - os << " ("; - if (val.isAuto) - os << "auto"; - else - os << "manual"; - os << ")"; - return os; -} - -class media_type -{ -public: - media_type() : _ptr(NULL) { - } - media_type(IMFMediaType* ptr) : _ptr(ptr) { - } - media_type(comet::com_ptr ptr) : _ptr(ptr) { - } - - cv::Size resolution() const - { - UINT32 width, height; - MFGetAttributeSize(_ptr.in(), MF_MT_FRAME_SIZE, &width, &height) | comet::raise_exception; - return cv::Size(width, height); - } - double framerate() const - { - UINT32 num, denom; - MFGetAttributeRatio(_ptr.in(), MF_MT_FRAME_RATE, &num, &denom) | comet::raise_exception; - return static_cast(num)/denom; - } - GUID subtype() const - { - GUID subtype; - _ptr->GetGUID(MF_MT_SUBTYPE, &subtype) | comet::raise_exception; - return subtype; - } - - typedef media_type _Myt; - _TYPEDEF_BOOL_TYPE; - _OPERATOR_BOOL() const _NOEXCEPT - { // test for non-null pointer - return (_ptr != 0 ? _CONVERTIBLE_TO_TRUE : 0); - } - - comet::com_ptr _ptr; -}; - - -class camera { -public: - camera(IMFActivate* ptr) : activate_ptr(ptr) { - } - camera(comet::com_ptr ptr) : activate_ptr(ptr) { - } - - bool is_active() const { - return !source_ptr.is_null(); - } - void activate() { - activate_ptr->ActivateObject(IID_IMFMediaSource, reinterpret_cast(source_ptr.out())); - reader_ptr = NULL; - } - void shutdown() { - activate_ptr->ShutdownObject(); - source_ptr = NULL; - reader_ptr = NULL; - } - - cv::Mat read_frame(int streamIndex = MF_SOURCE_READER_FIRST_VIDEO_STREAM, int bufferIndex = 0) - { - if (!reader_ptr) { - comet::com_ptr pAttributes; - MFCreateAttributes(pAttributes.out(), 1) | comet::raise_exception; - pAttributes->SetUINT32(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING, TRUE) | comet::raise_exception; - - MFCreateSourceReaderFromMediaSource(source_ptr.in(), pAttributes.in(), reader_ptr.out()) | comet::raise_exception; - } - - comet::com_ptr sample; - DWORD actualStreamIndex, flags; - LONGLONG timestamp; - do { - reader_ptr->ReadSample( - streamIndex, // Stream index. - 0, // Flags. - &actualStreamIndex, // Receives the actual stream index. - &flags, // Receives status flags. - ×tamp, // Receives the time stamp. - sample.out() // Receives the sample or NULL. - ) | comet::raise_exception; - } while (sample == NULL && (flags & MF_SOURCE_READERF_STREAMTICK)); - - media_type cur_media_type; - reader_ptr->GetCurrentMediaType(actualStreamIndex, cur_media_type._ptr.out()); - - cv::Mat ret(cur_media_type.resolution(), CV_8UC3); - - DWORD bufCount; - sample->GetBufferCount(&bufCount) | comet::raise_exception; - - DWORD bufIndex = bufferIndex >= 0 ? bufferIndex : bufCount - bufferIndex; - - if (bufCount > bufIndex) { - comet::com_ptr buffer; - sample->GetBufferByIndex(bufferIndex, buffer.out()) | comet::raise_exception; - - comet::com_ptr buf2d = try_cast(buffer); - - DWORD pcbLength; - buf2d->GetContiguousLength(&pcbLength) | comet::raise_exception; - - COMET_ASSERT(ret.dataend - ret.datastart == pcbLength); - - struct buf_lock - { - comet::com_ptr& buf2d; - buf_lock(comet::com_ptr& buf2d, BYTE*& scanline0, LONG& pitch) : buf2d(buf2d) { - buf2d->Lock2D(&scanline0, &pitch) | comet::raise_exception; - } - ~buf_lock() { - buf2d->Unlock2D() | comet::raise_exception; - } - }; - - BYTE *scanline0; - LONG pitch; - buf_lock buf_lock_token(buf2d, scanline0, pitch); - - buf2d->ContiguousCopyTo(ret.data, DWORD(ret.dataend - ret.datastart)) | comet::raise_exception; - } - - return ret; - } - - std::string name() const { - return get_attr_str(MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME); - } - std::string symlink() const { - return get_attr_str(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK); - } - -#define MAKE_CAMERA_PROPERTY(NAME, INTERFACE, PROPGUID) \ - bool has_ ## NAME() const \ - { \ - comet::com_ptr pInterface = comet::com_cast(source_ptr); \ - if (!pInterface) return false; \ - long value, flags; \ - HRESULT hr = pInterface->Get(INTERFACE ## _ ## PROPGUID, &value, &flags); \ - return SUCCEEDED(hr); \ - } \ - cam_prop_range get_ ## NAME ## _range() const \ - { \ - comet::com_ptr pInterface = comet::try_cast(source_ptr); \ - cam_prop_range range; \ - pInterface->GetRange(INTERFACE ## _ ## PROPGUID, &range.min, &range.max, &range.step, &range.defaultValue, &range.flags) | comet::raise_exception; \ - return range; \ - } \ - cam_prop_value get_ ## NAME() const \ - { \ - comet::com_ptr pInterface = comet::try_cast(source_ptr); \ - cam_prop_value value; \ - long flags; \ - pInterface->Get(INTERFACE ## _ ## PROPGUID, &value.value, &flags) | comet::raise_exception; \ - value.isAuto = (flags & INTERFACE ## _Flags_Auto) != 0 || (flags & INTERFACE ## _Flags_Manual) == 0; \ - return value; \ - } \ - void set_ ## NAME(const cam_prop_value& value) const \ - { \ - comet::com_ptr pInterface = comet::try_cast(source_ptr); \ - long flags = value.isAuto ? INTERFACE ## _Flags_Auto : INTERFACE ## _Flags_Manual; \ - pInterface->Set(INTERFACE ## _ ## PROPGUID, value.value, flags) | comet::raise_exception; \ - } - - MAKE_CAMERA_PROPERTY(exposure, CameraControl, Exposure) - MAKE_CAMERA_PROPERTY(focus, CameraControl, Focus) - MAKE_CAMERA_PROPERTY(zoom, CameraControl, Zoom) - MAKE_CAMERA_PROPERTY(pan, CameraControl, Pan) - MAKE_CAMERA_PROPERTY(tilt, CameraControl, Tilt) - MAKE_CAMERA_PROPERTY(roll, CameraControl, Roll) - MAKE_CAMERA_PROPERTY(iris, CameraControl, Iris) - - MAKE_CAMERA_PROPERTY(brightness, VideoProcAmp, Brightness) - MAKE_CAMERA_PROPERTY(contrast, VideoProcAmp, Contrast) - MAKE_CAMERA_PROPERTY(hue, VideoProcAmp, Hue) - MAKE_CAMERA_PROPERTY(saturation, VideoProcAmp, Saturation) - MAKE_CAMERA_PROPERTY(sharpness, VideoProcAmp, Sharpness) - MAKE_CAMERA_PROPERTY(gamma, VideoProcAmp, Gamma) - MAKE_CAMERA_PROPERTY(color_enable, VideoProcAmp, ColorEnable) - MAKE_CAMERA_PROPERTY(white_balance, VideoProcAmp, WhiteBalance) - MAKE_CAMERA_PROPERTY(backlight_compensation, VideoProcAmp, BacklightCompensation) - MAKE_CAMERA_PROPERTY(gain, VideoProcAmp, Gain) - - std::vector media_types(int streamIndex = 0) const { - auto pHandler = getMediaTypeHandler(streamIndex); - - DWORD cTypes = 0; - pHandler->GetMediaTypeCount(&cTypes) | comet::raise_exception; - - std::vector ret; - for (DWORD i = 0; i < cTypes; i++) { - comet::com_ptr pType; - pHandler->GetMediaTypeByIndex(i, pType.out()) | comet::raise_exception; - ret.emplace_back(pType); - } - - return ret; - } - media_type get_media_type(int streamIndex = 0) { - media_type ret; - getMediaTypeHandler(streamIndex)->GetCurrentMediaType(ret._ptr.out()); - return ret; - } - void set_media_type(const media_type& type, int streamIndex = 0) { - getMediaTypeHandler(streamIndex)->SetCurrentMediaType(type._ptr.in()); - } - -private: - std::string get_attr_str(REFGUID guid) const { - comet::task_ptr pStr; - UINT32 strLen; - activate_ptr->GetAllocatedString(guid, pStr.out(), &strLen) | comet::raise_exception; - return comet::bstr_t(pStr.in(), strLen).s_str(); - } - - comet::com_ptr getMediaTypeHandler(int streamIndex = 0) const - { - comet::com_ptr pPD; - source_ptr->CreatePresentationDescriptor(pPD.out()) | comet::raise_exception; - - BOOL fSelected; - comet::com_ptr pSD; - pPD->GetStreamDescriptorByIndex(streamIndex, &fSelected, pSD.out()) | comet::raise_exception; - - comet::com_ptr pHandler; - pSD->GetMediaTypeHandler(pHandler.out()) | comet::raise_exception; - - return pHandler; - } - - comet::com_ptr activate_ptr; - comet::com_ptr source_ptr; - comet::com_ptr reader_ptr; -}; - -class camera_helper -{ -public: - static std::vector get_all_cameras() - { - comet::com_ptr config; - MFCreateAttributes(config.out(), 1) | comet::raise_exception; - - config->SetGUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID) | comet::raise_exception; - - comet::com_ptr_array com_ptr_array; - MFEnumDeviceSources(config.in(), com_ptr_array.out(), com_ptr_array.out_count()) | comet::raise_exception; - - std::vector ret; - for (size_t i = 0; i < com_ptr_array.count(); ++i) { - ret.emplace_back(com_ptr_array[i]); - } - return ret; - } - static camera get_camera_by_symlink(const std::string& symlink) - { - // This is how you should do it, but for some reason it gives an activate pointer with no friendly name - -// comet::com_ptr config; -// MFCreateAttributes(config.out(), 1) | comet::raise_exception; -// -// config->SetGUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID) | comet::raise_exception; -// comet::bstr_t symlink_bstr(symlink); -// config->SetString(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, symlink_bstr.c_str()) | comet::raise_exception; -// -// comet::com_ptr activate_ptr; -// MFCreateDeviceSourceActivate(config.in(), activate_ptr.out()) | comet::raise_exception; -// -// return camera(activate_ptr); - - for(auto&& camera : get_all_cameras()) - { - if (camera.symlink() == symlink) - return camera; - } - std::stringstream ss; - ss << "No camera with symlink: " << symlink; - throw std::runtime_error(ss.str()); - } -}; - - -int _tmain(int argc, _TCHAR* argv[]) -{ - comet::auto_coinit auto_coinit(COINIT_MULTITHREADED); - comet::auto_mf auto_mf; - //camera cam = camera_helper::get_camera_by_symlink("\\\\?\\usb#vid_046d&pid_082d&mi_00#7&f415157&0&0000#{e5323777-f976-4f5b-9b55-b94699c46e44}\\{bbefb6c7-2fc4-4139-bb8b-a58bba724083}"); - for (auto&& cam : camera_helper::get_all_cameras()) - { - std::cout << cam.name() << std::endl; - std::cout << cam.symlink() << std::endl; - - cam.activate(); - -#define MAP_OVER_PROPERTIES(FUNC) \ - FUNC(exposure) \ - FUNC(focus) \ - FUNC(zoom) \ - FUNC(pan) \ - FUNC(tilt) \ - FUNC(roll) \ - FUNC(iris) \ - FUNC(brightness) \ - FUNC(contrast) \ - FUNC(hue) \ - FUNC(saturation) \ - FUNC(sharpness) \ - FUNC(gamma) \ - FUNC(color_enable) \ - FUNC(white_balance) \ - FUNC(backlight_compensation) \ - FUNC(gain) - -#define INIT_PROPERTY(PROPERTY) \ - bool has_ ## PROPERTY = cam.has_ ## PROPERTY(); \ - cam_prop_range PROPERTY ## _range; \ - if (has_ ## PROPERTY) { \ - PROPERTY ## _range = cam.get_ ## PROPERTY ## _range(); \ - std::cout << #PROPERTY " range: " << PROPERTY ## _range << std::endl; \ - } - - MAP_OVER_PROPERTIES(INIT_PROPERTY) - - media_type bestType; - - for (auto&& media_type : cam.media_types()) { - if (media_type.subtype() == MFVideoFormat_RGB24) { - double framerate = media_type.framerate(); - cv::Size resolution = media_type.resolution(); - - std::cout << resolution << " " << framerate << std::endl; - - if (!bestType || - ( - (framerate > bestType.framerate())|| - (framerate == bestType.framerate() && resolution.area() > bestType.resolution().area()) - ) && resolution.height < 800 - ) { - bestType = media_type; - } - } - } - - cam.set_media_type(bestType); - PrintAttributes(cam.get_media_type()._ptr); - - cv::namedWindow("m"); - -#define INIT_PROPERTYSLIDER(PROPERTY) \ - int PROPERTY ## _slider; \ - if (has_ ## PROPERTY) { \ - cv::createTrackbar(#PROPERTY, "m", &PROPERTY ## _slider, (PROPERTY ## _range.max - PROPERTY ## _range.min) / PROPERTY ## _range.step); \ - PROPERTY ## _slider = (PROPERTY ## _range.defaultValue - PROPERTY ## _range.min) / PROPERTY ## _range.step; \ - cv::setTrackbarPos(#PROPERTY, "m", PROPERTY ## _slider); \ - } - - MAP_OVER_PROPERTIES(INIT_PROPERTYSLIDER) - - while(true) { - #define USE_PROPERTYSLIDER(PROPERTY) \ - try { \ - if (has_ ## PROPERTY) { \ - cam.set_ ## PROPERTY(PROPERTY ## _slider * PROPERTY ## _range.step + PROPERTY ## _range.min); \ - } \ - } catch (comet::com_error& e) { \ - std::cerr << "Error setting " #PROPERTY ": " << e.what() << std::endl; \ - } - - MAP_OVER_PROPERTIES(USE_PROPERTYSLIDER) - - cv::Mat m = cam.read_frame(); - cv::imshow("m", m); - if (cv::waitKey(1) != -1){ - break; - } - } - } - - return 0; -} - + return 0; +} \ No newline at end of file diff --git a/EyeTab_SP2/GetGUID.h b/EyeTab_SP2/GetGUID.h deleted file mode 100644 index 465ad81..0000000 --- a/EyeTab_SP2/GetGUID.h +++ /dev/null @@ -1,4397 +0,0 @@ -#pragma once - -#include -#include -#include - -#include -#include - -#define IF_GUID_EQUAL_RETURN(guid, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, name) \ - if (guid.Data1 == (l) && \ - guid.Data2 == (w1) && guid.Data3 == (w2) && \ - guid.Data4[0] == (b1) && guid.Data4[1] == (b2) && guid.Data4[2] == (b3) && guid.Data4[3] == (b4) && \ - guid.Data4[4] == (b5) && guid.Data4[5] == (b6) && guid.Data4[6] == (b7) && guid.Data4[7] == (b8) \ - ) { if (!ret.empty()) ret += "/" name; else ret = name; } - -std::string GetGUIDNameConst(const GUID& guid) { - std::string ret; - IF_GUID_EQUAL_RETURN(guid,0x68A1E95E,0x13EA,0x41E1,0x80,0x11,0x0C,0x49,0x6C,0xA4,0x90,0xB0,"ALL_POWERSCHEMES_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9b00f101,0x1567,0x11d1,0xb3,0xf1,0x0,0xaa,0x0,0x37,0x61,0xc5,"AMPROPSETID_Pin"); - IF_GUID_EQUAL_RETURN(guid,0x1A8766A0L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00,"AM_INTERFACESETID_Standard"); - IF_GUID_EQUAL_RETURN(guid,0x6994AD04L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96,"AM_KSCATEGORY_AUDIO"); - IF_GUID_EQUAL_RETURN(guid,0x65E8773DL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96,"AM_KSCATEGORY_CAPTURE"); - IF_GUID_EQUAL_RETURN(guid,0xa799a801L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4,"AM_KSCATEGORY_CROSSBAR"); - IF_GUID_EQUAL_RETURN(guid,0x1E84C900L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00,"AM_KSCATEGORY_DATACOMPRESSOR"); - IF_GUID_EQUAL_RETURN(guid,0x65E8773EL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96,"AM_KSCATEGORY_RENDER"); - IF_GUID_EQUAL_RETURN(guid,0x0A4252A0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00,"AM_KSCATEGORY_SPLITTER"); - IF_GUID_EQUAL_RETURN(guid,0xa799a802L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4,"AM_KSCATEGORY_TVAUDIO"); - IF_GUID_EQUAL_RETURN(guid,0xa799a800L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4,"AM_KSCATEGORY_TVTUNER"); - IF_GUID_EQUAL_RETURN(guid,0x07dad660L,0x22f1,0x11d1,0xa9,0xf4,0x00,0xc0,0x4f,0xbb,0xde,0x8f,"AM_KSCATEGORY_VBICODEC"); - IF_GUID_EQUAL_RETURN(guid,0x9c24a977,0x951,0x451a,0x80,0x6,0xe,0x49,0xbd,0x28,0xcd,0x5f,"AM_KSCATEGORY_VBICODEC_MI"); - IF_GUID_EQUAL_RETURN(guid,0x6994AD05L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96,"AM_KSCATEGORY_VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0xBFABE720,0x6E1F,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00,"AM_KSPROPSETID_AC3"); - IF_GUID_EQUAL_RETURN(guid,0x0E8A0A40,0x6AEF,0x11D0,0x9E,0xD0,0x00,0xA0,0x24,0xCA,0x19,0xB3,"AM_KSPROPSETID_CopyProt"); - IF_GUID_EQUAL_RETURN(guid,0x3577eb09,0x9582,0x477f,0xb2,0x9c,0xb0,0xc4,0x52,0xa4,0xff,0x9a,"AM_KSPROPSETID_DVD_RateChange"); - IF_GUID_EQUAL_RETURN(guid,0xae4720ae,0xaa71,0x42d8,0xb8,0x2a,0xff,0xfd,0xf5,0x8b,0x76,0xfd,"AM_KSPROPSETID_DvdKaraoke"); - IF_GUID_EQUAL_RETURN(guid,0xac390460,0x43af,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9,"AM_KSPROPSETID_DvdSubPic"); - IF_GUID_EQUAL_RETURN(guid,0xc830acbd,0xab07,0x492f,0x88,0x52,0x45,0xb6,0x98,0x7c,0x29,0x79,"AM_KSPROPSETID_FrameStep"); - IF_GUID_EQUAL_RETURN(guid,0xff6c4bfa,0x7a9,0x4c7b,0xa2,0x37,0x67,0x2f,0x9d,0x68,0x6,0x5f,"AM_KSPROPSETID_MPEG4_MediaType_Attributes"); - IF_GUID_EQUAL_RETURN(guid,0xa503c5c0,0x1d1d,0x11d1,0xad,0x80,0x44,0x45,0x53,0x54,0x0,0x0,"AM_KSPROPSETID_TSRateChange"); - IF_GUID_EQUAL_RETURN(guid,0xe2e42ad2,0x132c,0x491e,0xa2,0x68,0x3c,0x7c,0x2d,0xca,0x18,0x1f,"AM_MEDIA_TYPE_REPRESENTATION"); - IF_GUID_EQUAL_RETURN(guid,0x514865df,0x2557,0x4cb9,0xae,0xed,0x6c,0xed,0x08,0x4c,0xe5,0x2c,"AcceleratorKey_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x06827b12,0xa7f9,0x4a15,0x91,0x7c,0xff,0xa5,0xad,0x3e,0xb0,0xa7,"AccessKey_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x20ae484f,0x69ef,0x4c48,0x8f,0x5b,0xc4,0x93,0x8b,0x20,0x6a,0xc7,"Annotation_AnnotationTypeId_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9b818892,0x5ac9,0x4af9,0xaa,0x96,0xf5,0x8a,0x77,0xb0,0x58,0xe3,"Annotation_AnnotationTypeName_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7a528462,0x9c5c,0x4a03,0xa9,0x74,0x8b,0x30,0x7a,0x99,0x37,0xf2,"Annotation_Author_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x99b5ca5d,0x1acf,0x414b,0xa4,0xd0,0x6b,0x35,0x0b,0x04,0x75,0x78,"Annotation_DateTime_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf6c72ad7,0x356c,0x4850,0x92,0x91,0x31,0x6f,0x60,0x8a,0x8c,0x84,"Annotation_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb71b302d,0x2104,0x44ad,0x9c,0x5c,0x09,0x2b,0x49,0x07,0xd7,0x0f,"Annotation_Target_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4213678c,0xe025,0x4922,0xbe,0xb5,0xe4,0x3b,0xa0,0x8e,0x62,0x21,"AriaProperties_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdd207b95,0xbe4a,0x4e0d,0xb7,0x27,0x63,0xac,0xe9,0x4b,0x69,0x16,"AriaRole_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5fdee11c,0xd2fa,0x4fb9,0x90,0x4e,0x5c,0xbe,0xe8,0x94,0xd5,0xef,"AsyncContentLoaded_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb68a1f17,0xf60d,0x41a7,0xa3,0xcc,0xb0,0x52,0x92,0x15,0x5f,0xe0,"AutomationFocusChanged_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc82c0500,0xb60e,0x4310,0xa2,0x67,0x30,0x3c,0x53,0x1f,0x8e,0xe5,"AutomationId_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2527fba1,0x8d7a,0x4630,0xa4,0xcc,0xe6,0x63,0x15,0x94,0x2f,0x52,"AutomationPropertyChanged_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xbea9ef17,0x82f1,0x4f60,0x92,0x84,0x4f,0x8d,0xb7,0x5c,0x3b,0xe9,"BHID_AssociationArray"); - IF_GUID_EQUAL_RETURN(guid,0xb8c0bd9f,0xed24,0x455c,0x83,0xe6,0xd5,0x39,0xc,0x4f,0xe8,0xc4,"BHID_DataObject"); - IF_GUID_EQUAL_RETURN(guid,0xb8ab0b9c,0xc2ec,0x4f7a,0x91,0x8d,0x31,0x49,0x00,0xe6,0x28,0x0a,"BHID_EnumAssocHandlers"); - IF_GUID_EQUAL_RETURN(guid,0x94f60519,0x2850,0x4924,0xaa,0x5a,0xd1,0x5e,0x84,0x86,0x80,0x39,"BHID_EnumItems"); - IF_GUID_EQUAL_RETURN(guid,0x38d08778,0xf557,0x4690,0x9e,0xbf,0xba,0x54,0x70,0x6a,0xd8,0xf7,"BHID_Filter"); - IF_GUID_EQUAL_RETURN(guid,0x3981e228,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5,"BHID_LinkTargetItem"); - IF_GUID_EQUAL_RETURN(guid,0x0384e1a4,0x1523,0x439c,0xa4,0xc8,0xab,0x91,0x10,0x52,0xf5,0x86,"BHID_PropertyStore"); - IF_GUID_EQUAL_RETURN(guid,0xf16fc93b,0x77ae,0x4cfe,0xbd,0xa7,0xa8,0x66,0xee,0xa6,0x87,0x8d,"BHID_RandomAccessStream"); - IF_GUID_EQUAL_RETURN(guid,0x3981e224,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5,"BHID_SFObject"); - IF_GUID_EQUAL_RETURN(guid,0x3981e225,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5,"BHID_SFUIObject"); - IF_GUID_EQUAL_RETURN(guid,0x3981e226,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5,"BHID_SFViewObject"); - IF_GUID_EQUAL_RETURN(guid,0x3981e227,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5,"BHID_Storage"); - IF_GUID_EQUAL_RETURN(guid,0x4621a4e3,0xf0d6,0x4773,0x8a,0x9c,0x46,0xe7,0x7b,0x17,0x48,0x40,"BHID_StorageEnum"); - IF_GUID_EQUAL_RETURN(guid,0x1cebb3ab,0x7c10,0x499a,0xa4,0x17,0x92,0xca,0x16,0xc4,0xcb,0x83,"BHID_Stream"); - IF_GUID_EQUAL_RETURN(guid,0x7b2e650a,0x8e20,0x4f4a,0xb0,0x9e,0x65,0x97,0xaf,0xc7,0x2f,0xb0,"BHID_ThumbnailHandler"); - IF_GUID_EQUAL_RETURN(guid,0xd5e346a1,0xf753,0x4932,0xb4,0x3,0x45,0x74,0x80,0xe,0x24,0x98,"BHID_Transfer"); - IF_GUID_EQUAL_RETURN(guid,0x7bbfe8b2,0x3bfc,0x48dd,0xb7,0x29,0xc7,0x94,0xb8,0x46,0xe9,0xa1,"BoundingRectangle_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5a78e369,0xc6a1,0x4f33,0xa9,0xd7,0x79,0xf2,0x0d,0x0c,0x78,0x8e,"Button_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3ed9cb31,0xfd10,0x4ade,0xbc,0xcc,0xfb,0x91,0x5,0xd2,0xf3,0xef,"CAPTION_FORMAT_ATSC"); - IF_GUID_EQUAL_RETURN(guid,0xe9ca1ce7,0x915e,0x47be,0x9b,0xb9,0xbf,0x1d,0x8a,0x13,0xa5,0xec,"CAPTION_FORMAT_DIRECTV"); - IF_GUID_EQUAL_RETURN(guid,0x12230db4,0xff2a,0x447e,0xbb,0x88,0x68,0x41,0xc4,0x16,0xd0,0x68,"CAPTION_FORMAT_DVB"); - IF_GUID_EQUAL_RETURN(guid,0xebb1a262,0x1158,0x4b99,0xae,0x80,0x92,0xac,0x77,0x69,0x52,0xc4,"CAPTION_FORMAT_ECHOSTAR"); - IF_GUID_EQUAL_RETURN(guid,0xf0b7a1a1,0x9847,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"CATID_ActiveScript"); - IF_GUID_EQUAL_RETURN(guid,0xaee2a92,0xbcbb,0x11d0,0x8c,0x72,0x0,0xc0,0x4f,0xc2,0xb0,0x85,"CATID_ActiveScriptAuthor"); - IF_GUID_EQUAL_RETURN(guid,0xf0b7a1a3,0x9847,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"CATID_ActiveScriptEncode"); - IF_GUID_EQUAL_RETURN(guid,0xf0b7a1a2,0x9847,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"CATID_ActiveScriptParse"); - IF_GUID_EQUAL_RETURN(guid,0x31caf6e4,0xd6aa,0x4090,0xa0,0x50,0xa5,0xac,0x89,0x72,0xe9,0xef,"CATID_DeleteBrowsingHistory"); - IF_GUID_EQUAL_RETURN(guid,0x965c4d51,0x8b76,0x4e57,0x80,0xb7,0x56,0x4d,0x2e,0xa4,0xb5,0x5e,"CATID_LocationFactory"); - IF_GUID_EQUAL_RETURN(guid,0x1b3ca474,0x2614,0x414b,0xb8,0x13,0x1a,0xce,0xca,0x3e,0x3d,0xd8,"CATID_LocationProvider"); - IF_GUID_EQUAL_RETURN(guid,0xe081e1d6,0x2389,0x43cb,0xb6,0x6f,0x60,0x9f,0x82,0x3d,0x9f,0x9c,"CATID_MSIME_IImePadApplet1000"); - IF_GUID_EQUAL_RETURN(guid,0xa47fb5fc,0x7d15,0x4223,0xa7,0x89,0xb7,0x81,0xbf,0x9a,0xe6,0x67,"CATID_MSIME_IImePadApplet1200"); - IF_GUID_EQUAL_RETURN(guid,0xfaae51bf,0x5e5b,0x4a1d,0x8d,0xe1,0x17,0xc1,0xd9,0xe1,0x72,0x8d,"CATID_MSIME_IImePadApplet900"); - IF_GUID_EQUAL_RETURN(guid,0x7566cad1,0x4ec9,0x4478,0x9f,0xe9,0x8e,0xd7,0x66,0x61,0x9e,0xdf,"CATID_MSIME_IImePadApplet"); - IF_GUID_EQUAL_RETURN(guid,0x4a0f8e31,0xc3ee,0x11d1,0xaf,0xef,0x0,0x80,0x5f,0xc,0x8b,0x6d,"CATID_MSIME_IImePadApplet_VER7"); - IF_GUID_EQUAL_RETURN(guid,0x56f7a792,0xfef1,0x11d3,0x84,0x63,0x0,0xc0,0x4f,0x7a,0x6,0xe5,"CATID_MSIME_IImePadApplet_VER80"); - IF_GUID_EQUAL_RETURN(guid,0x656520b0,0xbb88,0x11d4,0x84,0xc0,0x0,0xc0,0x4f,0x7a,0x6,0xe5,"CATID_MSIME_IImePadApplet_VER81"); - IF_GUID_EQUAL_RETURN(guid,0x366c292a,0xd9b3,0x4dbf,0xbb,0x70,0xe6,0x2e,0xc3,0xd0,0xbb,0xbf,"CATID_SearchableApplication"); - IF_GUID_EQUAL_RETURN(guid,0x7ed96837,0x96f0,0x4812,0xb2,0x11,0xf1,0x3c,0x24,0x11,0x7e,0xd3,"CATID_WICBitmapDecoders"); - IF_GUID_EQUAL_RETURN(guid,0xac757296,0x3522,0x4e11,0x98,0x62,0xc1,0x7b,0xe5,0xa1,0x76,0x7e,"CATID_WICBitmapEncoders"); - IF_GUID_EQUAL_RETURN(guid,0x7835eae8,0xbf14,0x49d1,0x93,0xce,0x53,0x3a,0x40,0x7b,0x22,0x48,"CATID_WICFormatConverters"); - IF_GUID_EQUAL_RETURN(guid,0x05af94d8,0x7174,0x4cd2,0xbe,0x4a,0x41,0x24,0xb8,0x0e,0xe4,0xb8,"CATID_WICMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xabe3b9a4,0x257d,0x4b97,0xbd,0x1a,0x29,0x4a,0xf4,0x96,0x22,0x2e,"CATID_WICMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x2b46e70f,0xcda7,0x473e,0x89,0xf6,0xdc,0x96,0x30,0xa2,0x39,0x0b,"CATID_WICPixelFormats"); - IF_GUID_EQUAL_RETURN(guid,0xf38bc242,0xb950,0x11d1,0x89,0x18,0x00,0xc0,0x4f,0xc2,0xc8,0x36,"CGID_DocHostCommandHandler"); - IF_GUID_EQUAL_RETURN(guid,0x3050f4b6,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b,"CGID_EditStateCommands"); - IF_GUID_EQUAL_RETURN(guid,0x5c9f0a12,0x959e,0x11d0,0xa3,0xa4,0x0,0xa0,0xc9,0x8,0x26,0x36,"CGID_MENUDESKBAR"); - IF_GUID_EQUAL_RETURN(guid,0x93a68750,0x951a,0x11d1,0x94,0x6f,0x0,0x0,0x0,0x0,0x0,0x0,"CGID_ShortCut"); - IF_GUID_EQUAL_RETURN(guid,0x6935db93,0x21e8,0x4ccc,0xbe,0xb9,0x9f,0xe3,0xc7,0x7a,0x29,0x7a,"CLSID_ACLCustomMRU"); - IF_GUID_EQUAL_RETURN(guid,0x00BB2764L,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62,"CLSID_ACLHistory"); - IF_GUID_EQUAL_RETURN(guid,0x6756a641L,0xde71,0x11d0,0x83,0x1b,0x0,0xaa,0x0,0x5b,0x43,0x83,"CLSID_ACLMRU"); - IF_GUID_EQUAL_RETURN(guid,0x00BB2765L,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62,"CLSID_ACLMulti"); - IF_GUID_EQUAL_RETURN(guid,0x03C036F1L,0xA186,0x11D0,0x82,0x4A,0x00,0xAA,0x00,0x5B,0x43,0x83,"CLSID_ACListISF"); - IF_GUID_EQUAL_RETURN(guid,0x6a08cf80,0x0e18,0x11cf,0xa2,0x4d,0x0,0x20,0xaf,0xd7,0x97,0x67,"CLSID_ACMWrapper"); - IF_GUID_EQUAL_RETURN(guid,0xf2468580,0xaf8a,0x11d0,0x82,0x12,0x00,0xc0,0x4f,0xc3,0x2c,0x45,"CLSID_AMAudioData"); - IF_GUID_EQUAL_RETURN(guid,0x8496e040,0xaf4c,0x11d0,0x82,0x12,0x00,0xc0,0x4f,0xc3,0x2c,0x45,"CLSID_AMAudioStream"); - IF_GUID_EQUAL_RETURN(guid,0x49c47ce4,0x9ba4,0x11d0,0x82,0x12,0x00,0xc0,0x4f,0xc3,0x2c,0x45,"CLSID_AMDirectDrawStream"); - IF_GUID_EQUAL_RETURN(guid,0xcf0f2f7c,0xf7bf,0x11d0,0x90,0xd,0x0,0xc0,0x4f,0xd9,0x18,0x9d,"CLSID_AMMediaTypeStream"); - IF_GUID_EQUAL_RETURN(guid,0x49c47ce5,0x9ba4,0x11d0,0x82,0x12,0x00,0xc0,0x4f,0xc3,0x2c,0x45,"CLSID_AMMultiMediaStream"); - IF_GUID_EQUAL_RETURN(guid,0xe3444d16,0x5ac4,0x4386,0x88,0xdf,0x13,0xfd,0x23,0x0e,0x1d,0xda,"CLSID_ATSCNetworkPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x0dad2fdd,0x5fd7,0x11d3,0x8f,0x50,0x00,0xc0,0x4f,0x79,0x71,0xe2,"CLSID_ATSCNetworkProvider"); - IF_GUID_EQUAL_RETURN(guid,0xd76e2820,0x1563,0x11cf,0xac,0x98,0x0,0xaa,0x0,0x4c,0xf,0xa9,"CLSID_AVICo"); - IF_GUID_EQUAL_RETURN(guid,0xcf49d4e0,0x1115,0x11ce,0xb0,0x3a,0x0,0x20,0xaf,0xb,0xa7,0x70,"CLSID_AVIDec"); - IF_GUID_EQUAL_RETURN(guid,0xd3588ab0,0x0781,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0xb,0xa7,0x70,"CLSID_AVIDoc"); - IF_GUID_EQUAL_RETURN(guid,0xa888df60,0x1e90,0x11cf,0xac,0x98,0x0,0xaa,0x0,0x4c,0xf,0xa9,"CLSID_AVIDraw"); - IF_GUID_EQUAL_RETURN(guid,0x00020000,0,0,0xC0,0,0,0,0,0,0,0x46,"CLSID_AVIFile"); - IF_GUID_EQUAL_RETURN(guid,0x07b65360,0xc445,0x11ce,0xaf,0xde,0x00,0xaa,0x00,0x6c,0x14,0xf4,"CLSID_AVIMIDIRender"); - IF_GUID_EQUAL_RETURN(guid,0x00020009,0,0,0xC0,0,0,0,0,0,0,0x46,"CLSID_AVISimpleUnMarshal"); - IF_GUID_EQUAL_RETURN(guid,0xFC48CC30,0x4F3E,0x4fa1,0x80,0x3B,0xAD,0x0E,0x19,0x6A,0x83,0xB1,"CLSID_AccClientDocMgr"); - IF_GUID_EQUAL_RETURN(guid,0x6572EE16,0x5FE5,0x4331,0xBB,0x6D,0x76,0xA4,0x9C,0x56,0xE4,0x23,"CLSID_AccDictionary"); - IF_GUID_EQUAL_RETURN(guid,0xb5f8350b,0x0548,0x48b1,0xa6,0xee,0x88,0xbd,0x00,0xb4,0xa5,0xe7,"CLSID_AccPropServices"); - IF_GUID_EQUAL_RETURN(guid,0x6089A37E,0xEB8A,0x482D,0xBD,0x6F,0xF9,0xF4,0x69,0x04,0xD1,0x6D,"CLSID_AccServerDocMgr"); - IF_GUID_EQUAL_RETURN(guid,0x5440837F,0x4BFF,0x4AE5,0xA1,0xB1,0x77,0x22,0xEC,0xC6,0x33,0x2A,"CLSID_AccStore"); - IF_GUID_EQUAL_RETURN(guid,0x75048700L,0xEF1F,0x11D0,0x98,0x88,0x00,0x60,0x97,0xDE,0xAC,0xF9,"CLSID_ActiveDesktop"); - IF_GUID_EQUAL_RETURN(guid,0xda4e3da0,0xd07d,0x11d0,0xbd,0x50,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_ActiveMovieCategories"); - IF_GUID_EQUAL_RETURN(guid,0x99d54f63,0x1a69,0x41ae,0xaa,0x4d,0xc9,0x76,0xeb,0x3f,0x07,0x13,"CLSID_AllocPresenter"); - IF_GUID_EQUAL_RETURN(guid,0x4444ac9e,0x242e,0x471b,0xa3,0xc7,0x45,0xdc,0xd4,0x63,0x52,0xbc,"CLSID_AllocPresenterDDXclMode"); - IF_GUID_EQUAL_RETURN(guid,0x71f96466,0x78f3,0x11d0,0xa1,0x8c,0x0,0xa0,0xc9,0x11,0x89,0x56,"CLSID_AnalogVideoDecoderPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0xe49741e9,0x93a8,0x4ab1,0x8e,0x96,0xbf,0x44,0x82,0x28,0x2e,0x9c,"CLSID_AppearPropPage"); - IF_GUID_EQUAL_RETURN(guid,0x7C3BAF00,0x25DE,0x11D0,0xA5,0x5F,0x00,0xA0,0xC9,0x0C,0x20,0x91,"CLSID_Application"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb5,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_AsyncReader"); - IF_GUID_EQUAL_RETURN(guid,0x33d9a761,0x90c8,0x11d0,0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_AudioCompressorCategory"); - IF_GUID_EQUAL_RETURN(guid,0x33d9a762,0x90c8,0x11d0,0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_AudioInputDeviceCategory"); - IF_GUID_EQUAL_RETURN(guid,0x2ca8ca52,0x3c3f,0x11d2,0xb7,0x3d,0x0,0xc0,0x4f,0xb6,0xbd,0x3d,"CLSID_AudioInputMixerProperties"); - IF_GUID_EQUAL_RETURN(guid,0x05589faf,0xc356,0x11ce,0xbf,0x01,0x0,0xaa,0x0,0x55,0x59,0x5a,"CLSID_AudioProperties"); - IF_GUID_EQUAL_RETURN(guid,0xe30629d2,0x27e5,0x11ce,0x87,0x5d,0x0,0x60,0x8c,0xb7,0x80,0x66,"CLSID_AudioRecord"); - IF_GUID_EQUAL_RETURN(guid,0xe30629d1,0x27e5,0x11ce,0x87,0x5d,0x0,0x60,0x8c,0xb7,0x80,0x66,"CLSID_AudioRender"); - IF_GUID_EQUAL_RETURN(guid,0x37e92a92,0xd9aa,0x11d2,0xbf,0x84,0x8e,0xf2,0xb1,0x55,0x5a,0xed,"CLSID_AudioRendererAdvancedProperties"); - IF_GUID_EQUAL_RETURN(guid,0xe0f158e1,0xcb04,0x11d0,0xbd,0x4e,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_AudioRendererCategory"); - IF_GUID_EQUAL_RETURN(guid,0x00BB2763L,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62,"CLSID_AutoComplete"); - IF_GUID_EQUAL_RETURN(guid,0xBFE18E9C,0x6D87,0x4450,0xB3,0x7C,0xE0,0x2F,0x0B,0x37,0x38,0x03,"CLSID_AutomaticUpdates"); - IF_GUID_EQUAL_RETURN(guid,0xe2510970,0xf137,0x11ce,0x8b,0x67,0x0,0xaa,0x0,0xa3,0xf1,0xa6,"CLSID_AviDest"); - IF_GUID_EQUAL_RETURN(guid,0xa9ae910,0x85c0,0x11d0,0xbd,0x42,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_AviMuxProptyPage1"); - IF_GUID_EQUAL_RETURN(guid,0xc647b5c0,0x157c,0x11d0,0xbd,0x23,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_AviMuxProptyPage"); - IF_GUID_EQUAL_RETURN(guid,0x1b544c21,0xfd0b,0x11ce,0x8c,0x63,0x0,0xaa,0x00,0x44,0xb5,0x1e,"CLSID_AviReader"); - IF_GUID_EQUAL_RETURN(guid,0x1b544c20,0xfd0b,0x11ce,0x8c,0x63,0x0,0xaa,0x00,0x44,0xb5,0x1e,"CLSID_AviSplitter"); - IF_GUID_EQUAL_RETURN(guid,0xb2bcff59,0xa757,0x4b0b,0xa1,0xbc,0xea,0x69,0x98,0x1d,0xa6,0x9e,"CLSID_AzAuthorizationStore"); - IF_GUID_EQUAL_RETURN(guid,0x5c2dc96f,0x8d51,0x434b,0xb3,0x3c,0x37,0x9b,0xcc,0xae,0x77,0xc3,"CLSID_AzBizRuleContext"); - IF_GUID_EQUAL_RETURN(guid,0x483afb5d,0x70df,0x4e16,0xab,0xdc,0xa1,0xde,0x4d,0x01,0x5a,0x3e,"CLSID_AzPrincipalLocator"); - IF_GUID_EQUAL_RETURN(guid,0x33d9a761,0x90c8,0x11d0,0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_CAcmCoClassManager"); - IF_GUID_EQUAL_RETURN(guid,0x3050f3BB,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b,"CLSID_CAnchorBrowsePropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x9B77C0F2,0x8735,0x46c5,0xB9,0x0F,0x5F,0x0B,0x30,0x3E,0xF6,0xAB,"CLSID_CAsfTocParser"); - IF_GUID_EQUAL_RETURN(guid,0x3ADCE5CC,0x13C8,0x4573,0xB3,0x28,0xED,0x43,0x8E,0xB6,0x94,0xF9,"CLSID_CAviTocParser"); - IF_GUID_EQUAL_RETURN(guid,0x3d07a539,0x35ca,0x447c,0x9b,0x5,0x8d,0x85,0xce,0x92,0x4f,0x9e,"CLSID_CCAFilter"); - IF_GUID_EQUAL_RETURN(guid,0x47354492,0x827E,0x4b8a,0xB3,0x18,0xC8,0x0E,0xBA,0x13,0x81,0xF0,"CLSID_CClusterDetectorEx"); - IF_GUID_EQUAL_RETURN(guid,0x4315D437,0x5B8C,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86,"CLSID_CDeviceMoniker"); - IF_GUID_EQUAL_RETURN(guid,0x3050f3B4,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b,"CLSID_CDocBrowsePropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0xBFCCD195,0x1244,0x4840,0xAB,0x44,0x48,0x09,0x75,0xC4,0xFF,0xE4,"CLSID_CFileClient"); - IF_GUID_EQUAL_RETURN(guid,0x11993195,0x1244,0x4840,0xAB,0x44,0x48,0x09,0x75,0xC4,0xFF,0xE4,"CLSID_CFileIo"); - IF_GUID_EQUAL_RETURN(guid,0x33d9a760,0x90c8,0x11d0,0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_CIcmCoClassManager"); - IF_GUID_EQUAL_RETURN(guid,0x3050f3B3,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b,"CLSID_CImageBrowsePropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0xbacc578d,0xfbdd,0x48a4,0x96,0x9f,0x2,0xd9,0x32,0xb7,0x46,0x34,"CLSID_CLRDebugging"); - IF_GUID_EQUAL_RETURN(guid,0xDF8395B5,0xA4BA,0x450b,0xA7,0x7C,0xA9,0xA4,0x77,0x62,0xC5,0x20,"CLSID_CLRDebuggingLegacy"); - IF_GUID_EQUAL_RETURN(guid,0x9280188d,0xe8e,0x4867,0xb3,0xc,0x7f,0xa8,0x38,0x84,0xe8,0xde,"CLSID_CLRMetaHost"); - IF_GUID_EQUAL_RETURN(guid,0x2ebcd49a,0x1b47,0x4a61,0xb1,0x3a,0x4a,0x3,0x70,0x1e,0x59,0x4b,"CLSID_CLRMetaHostPolicy"); - IF_GUID_EQUAL_RETURN(guid,0xbd097ed8,0x733e,0x43fe,0x8e,0xd7,0xa9,0x5f,0xf9,0xa8,0x44,0x8c,"CLSID_CLRProfiling"); - IF_GUID_EQUAL_RETURN(guid,0x90F1A06E,0x7712,0x4762,0x86,0xB5,0x7A,0x5E,0xBA,0x6B,0xDB,0x02,"CLSID_CLRRuntimeHost"); - IF_GUID_EQUAL_RETURN(guid,0xB79B0ACD,0xF5CD,0x409b,0xB5,0xA5,0xA1,0x62,0x44,0x61,0x0B,0x92,"CLSID_CLRStrongName"); - IF_GUID_EQUAL_RETURN(guid,0x005023ca,0x72b1,0x11d3,0x9f,0xc4,0x0,0xc0,0x4f,0x79,0xa0,0xa3,"CLSID_CLR_v1_MetaData"); - IF_GUID_EQUAL_RETURN(guid,0xefea471a,0x44fd,0x4862,0x92,0x92,0xc,0x58,0xd4,0x6e,0x1f,0x3a,"CLSID_CLR_v2_MetaData"); - IF_GUID_EQUAL_RETURN(guid,0x4EfE2452,0x168A,0x11d1,0xBC,0x76,0x0,0xc0,0x4F,0xB9,0x45,0x3B,"CLSID_CMidiOutClassManager"); - IF_GUID_EQUAL_RETURN(guid,0x4a2286e0,0x7bef,0x11ce,0x9b,0xd9,0x0,0x0,0xe2,0x2,0x59,0x9c,"CLSID_CMpegAudioCodec"); - IF_GUID_EQUAL_RETURN(guid,0xfeb50740,0x7bef,0x11ce,0x9b,0xd9,0x0,0x0,0xe2,0x2,0x59,0x9c,"CLSID_CMpegVideoCodec"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4FC,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"CLSID_CPCAFiltersCategory"); - IF_GUID_EQUAL_RETURN(guid,0x083863F1,0x70DE,0x11d0,0xBD,0x40,0x00,0xA0,0xC9,0x11,0xCE,0x86,"CLSID_CQzFilterClassManager"); - IF_GUID_EQUAL_RETURN(guid,0x148BD520,0xA2AB,0x11CE,0xB1,0x1F,0x00,0xAA,0x00,0x53,0x05,0x03,"CLSID_CTask"); - IF_GUID_EQUAL_RETURN(guid,0x148BD52A,0xA2AB,0x11CE,0xB1,0x1F,0x00,0xAA,0x00,0x53,0x05,0x03,"CLSID_CTaskScheduler"); - IF_GUID_EQUAL_RETURN(guid,0x4FE24495,0x28CE,0x4920,0xA4,0xC4,0xE5,0x56,0xE1,0xF0,0xDF,0x2A,"CLSID_CToc"); - IF_GUID_EQUAL_RETURN(guid,0x5058292D,0xA244,0x4840,0xAB,0x44,0x48,0x09,0x75,0xC4,0xFF,0xE4,"CLSID_CTocCollection"); - IF_GUID_EQUAL_RETURN(guid,0xF22F5E05,0x585C,0x4def,0x85,0x23,0x65,0x55,0xCF,0xBC,0x0C,0xB3,"CLSID_CTocEntry"); - IF_GUID_EQUAL_RETURN(guid,0x3A8CCCBC,0x0EFD,0x43a3,0xB8,0x38,0xF3,0x8A,0x55,0x2B,0xA2,0x37,"CLSID_CTocEntryList"); - IF_GUID_EQUAL_RETURN(guid,0x499EAEEA,0x2737,0x4849,0x8B,0xB6,0x47,0xF1,0x07,0xEA,0xF3,0x58,"CLSID_CTocParser"); - IF_GUID_EQUAL_RETURN(guid,0xCFBFAE00L,0x17A6,0x11D0,0x99,0xCB,0x00,0xC0,0x4F,0xD6,0x44,0x97,"CLSID_CURLSearchHook"); - IF_GUID_EQUAL_RETURN(guid,0x3C374A40L,0xBAE4,0x11CF,0xBF,0x7D,0x00,0xAA,0x00,0x69,0x46,0xEE,"CLSID_CUrlHistory"); - IF_GUID_EQUAL_RETURN(guid,0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86,"CLSID_CVidCapClassManager"); - IF_GUID_EQUAL_RETURN(guid,0xe0f158e1,0xcb04,0x11d0,0xbd,0x4e,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_CWaveOutClassManager"); - IF_GUID_EQUAL_RETURN(guid,0x33d9a762,0x90c8,0x11d0,0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_CWaveinClassManager"); - IF_GUID_EQUAL_RETURN(guid,0x71f96465,0x78f3,0x11d0,0xa1,0x8c,0x0,0xa0,0xc9,0x11,0x89,0x56,"CLSID_CameraControlPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x2F7EE4B6,0x6FF5,0x4EB4,0xB2,0x4A,0x2B,0xFC,0x41,0x11,0x71,0x71,"CLSID_CaptionsFilter"); - IF_GUID_EQUAL_RETURN(guid,0xBF87B6E1,0x8C27,0x11d0,0xB3,0xF0,0x0,0xAA,0x00,0x37,0x61,0xC5,"CLSID_CaptureGraphBuilder2"); - IF_GUID_EQUAL_RETURN(guid,0xBF87B6E0,0x8C27,0x11d0,0xB3,0xF0,0x0,0xAA,0x00,0x37,0x61,0xC5,"CLSID_CaptureGraphBuilder"); - IF_GUID_EQUAL_RETURN(guid,0x1B544c22,0xFD0B,0x11ce,0x8C,0x63,0x00,0xAA,0x00,0x44,0xB5,0x1F,"CLSID_CaptureProperties"); - IF_GUID_EQUAL_RETURN(guid,0xCD12A3CE,0x9C42,0x11D2,0xBE,0xED,0x00,0x60,0x08,0x2F,0x20,0x54,"CLSID_ClientNetManager"); - IF_GUID_EQUAL_RETURN(guid,0x1643e180,0x90f5,0x11ce,0x97,0xd5,0x00,0xaa,0x00,0x55,0x59,0x5a,"CLSID_Colour"); - IF_GUID_EQUAL_RETURN(guid,0x3F281000,0xE95A,0x11d2,0x88,0x6B,0x00,0xC0,0x4F,0x86,0x9F,0x04,"CLSID_ComCallUnmarshal"); - IF_GUID_EQUAL_RETURN(guid,0x45fb4600,0xe6e8,0x4928,0xb2,0x5e,0x50,0x47,0x6f,0xf7,0x94,0x25,"CLSID_ComCallUnmarshalV4"); - IF_GUID_EQUAL_RETURN(guid,0xbee00010,0xee77,0x11d0,0xa0,0x15,0x00,0xc0,0x4f,0xbb,0xb8,0x84,"CLSID_Cor"); - IF_GUID_EQUAL_RETURN(guid,0xe5cb7a31,0x7512,0x11d2,0x89,0xce,0x0,0x80,0xc7,0x92,0xe5,0xd8,"CLSID_CorMetaDataDispenser"); - IF_GUID_EQUAL_RETURN(guid,0x435755ff,0x7397,0x11d2,0x97,0x71,0x0,0xa0,0xc9,0xb4,0xd5,0xc,"CLSID_CorMetaDataDispenserReg"); - IF_GUID_EQUAL_RETURN(guid,0x1ec2de53,0x75cc,0x11d2,0x97,0x75,0x0,0xa0,0xc9,0xb4,0xd5,0xc,"CLSID_CorMetaDataDispenserRuntime"); - IF_GUID_EQUAL_RETURN(guid,0x87f3a1f5,0x7397,0x11d2,0x97,0x71,0x0,0xa0,0xc9,0xb4,0xd5,0xc,"CLSID_CorMetaDataReg"); - IF_GUID_EQUAL_RETURN(guid,0xcb2f6723,0xab3a,0x11d2,0x9c,0x40,0x00,0xc0,0x4f,0xa3,0x0a,0x3e,"CLSID_CorRuntimeHost"); - IF_GUID_EQUAL_RETURN(guid,0x43196c62,0xc31f,0x4ce3,0xa0,0x2e,0x79,0xef,0xe0,0xf6,0xa5,0x25,"CLSID_CounterItem2"); - IF_GUID_EQUAL_RETURN(guid,0xC4D2D8E0,0xD1DD,0x11ce,0x94,0x0F,0x00,0x80,0x29,0x00,0x43,0x48,"CLSID_CounterItem"); - IF_GUID_EQUAL_RETURN(guid,0xCF948561,0xEDE8,0x11CE,0x94,0x1E,0x00,0x80,0x29,0x00,0x43,0x47,"CLSID_CounterPropPage"); - IF_GUID_EQUAL_RETURN(guid,0xB2B066D2,0x2AAC,0x11cf,0x94,0x2F,0x00,0x80,0x29,0x00,0x43,0x47,"CLSID_Counters"); - IF_GUID_EQUAL_RETURN(guid,0xef65a54d,0x0788,0x45b8,0x8b,0x14,0xbc,0x0f,0x6a,0x6b,0x51,0x37,"CLSID_CreateMediaExtensionObject"); - IF_GUID_EQUAL_RETURN(guid,0x71f96461,0x78f3,0x11d0,0xa1,0x8c,0x0,0xa0,0xc9,0x11,0x89,0x56,"CLSID_CrossbarFilterPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x6AA97485,0x6354,0x4cfc,0x90,0x8C,0xE4,0xA7,0x4F,0x62,0xC9,0x6C,"CLSID_D2D12DAffineTransform"); - IF_GUID_EQUAL_RETURN(guid,0xC2844D0B,0x3D86,0x46e7,0x85,0xBA,0x52,0x6C,0x92,0x40,0xF3,0xFB,"CLSID_D2D13DPerspectiveTransform"); - IF_GUID_EQUAL_RETURN(guid,0xe8467b04,0xec61,0x4b8a,0xb5,0xde,0xd4,0xd7,0x3d,0xeb,0xea,0x5a,"CLSID_D2D13DTransform"); - IF_GUID_EQUAL_RETURN(guid,0xfc151437,0x049a,0x4784,0xa2,0x4a,0xf1,0xc4,0xda,0xf2,0x09,0x87,"CLSID_D2D1ArithmeticComposite"); - IF_GUID_EQUAL_RETURN(guid,0x913e2be4,0xfdcf,0x4fe2,0xa5,0xf0,0x24,0x54,0xf1,0x4f,0xf4,0x8,"CLSID_D2D1Atlas"); - IF_GUID_EQUAL_RETURN(guid,0x5fb6c24d,0xc6dd,0x4231,0x94,0x4,0x50,0xf4,0xd5,0xc3,0x25,0x2d,"CLSID_D2D1BitmapSource"); - IF_GUID_EQUAL_RETURN(guid,0x81c5b77b,0x13f8,0x4cdd,0xad,0x20,0xc8,0x90,0x54,0x7a,0xc6,0x5d,"CLSID_D2D1Blend"); - IF_GUID_EQUAL_RETURN(guid,0x2A2D49C0,0x4ACF,0x43c7,0x8C,0x6A,0x7C,0x4A,0x27,0x87,0x4D,0x27,"CLSID_D2D1Border"); - IF_GUID_EQUAL_RETURN(guid,0x8cea8d1e,0x77b0,0x4986,0xb3,0xb9,0x2f,0x0c,0x0e,0xae,0x78,0x87,"CLSID_D2D1Brightness"); - IF_GUID_EQUAL_RETURN(guid,0x1A28524C,0xFDD6,0x4AA4,0xAE,0x8F,0x83,0x7E,0xB8,0x26,0x7B,0x37,"CLSID_D2D1ColorManagement"); - IF_GUID_EQUAL_RETURN(guid,0x921F03D6,0x641C,0x47DF,0x85,0x2D,0xB4,0xBB,0x61,0x53,0xAE,0x11,"CLSID_D2D1ColorMatrix"); - IF_GUID_EQUAL_RETURN(guid,0x48fc9f51,0xf6ac,0x48f1,0x8b,0x58,0x3b,0x28,0xac,0x46,0xf7,0x6d,"CLSID_D2D1Composite"); - IF_GUID_EQUAL_RETURN(guid,0x407f8c08,0x5533,0x4331,0xa3,0x41,0x23,0xcc,0x38,0x77,0x84,0x3e,"CLSID_D2D1ConvolveMatrix"); - IF_GUID_EQUAL_RETURN(guid,0xE23F7110,0x0E9A,0x4324,0xAF,0x47,0x6A,0x2C,0x0C,0x46,0xF3,0x5B,"CLSID_D2D1Crop"); - IF_GUID_EQUAL_RETURN(guid,0x174319a6,0x58e9,0x49b2,0xbb,0x63,0xca,0xf2,0xc8,0x11,0xa3,0xdb,"CLSID_D2D1DirectionalBlur"); - IF_GUID_EQUAL_RETURN(guid,0x90866fcd,0x488e,0x454b,0xaf,0x06,0xe5,0x04,0x1b,0x66,0xc3,0x6c,"CLSID_D2D1DiscreteTransfer"); - IF_GUID_EQUAL_RETURN(guid,0xedc48364,0x417,0x4111,0x94,0x50,0x43,0x84,0x5f,0xa9,0xf8,0x90,"CLSID_D2D1DisplacementMap"); - IF_GUID_EQUAL_RETURN(guid,0x3e7efd62,0xa32d,0x46d4,0xa8,0x3c,0x52,0x78,0x88,0x9a,0xc9,0x54,"CLSID_D2D1DistantDiffuse"); - IF_GUID_EQUAL_RETURN(guid,0x428c1ee5,0x77b8,0x4450,0x8a,0xb5,0x72,0x21,0x9c,0x21,0xab,0xda,"CLSID_D2D1DistantSpecular"); - IF_GUID_EQUAL_RETURN(guid,0x6c26c5c7,0x34e0,0x46fc,0x9c,0xfd,0xe5,0x82,0x37,0x6,0xe2,0x28,"CLSID_D2D1DpiCompensation"); - IF_GUID_EQUAL_RETURN(guid,0x61c23c20,0xae69,0x4d8e,0x94,0xcf,0x50,0x07,0x8d,0xf6,0x38,0xf2,"CLSID_D2D1Flood"); - IF_GUID_EQUAL_RETURN(guid,0x409444c4,0xc419,0x41a0,0xb0,0xc1,0x8c,0xd0,0xc0,0xa1,0x8e,0x42,"CLSID_D2D1GammaTransfer"); - IF_GUID_EQUAL_RETURN(guid,0x1feb6d69,0x2fe6,0x4ac9,0x8c,0x58,0x1d,0x7f,0x93,0xe7,0xa6,0xa5,"CLSID_D2D1GaussianBlur"); - IF_GUID_EQUAL_RETURN(guid,0x881db7d0,0xf7ee,0x4d4d,0xa6,0xd2,0x46,0x97,0xac,0xc6,0x6e,0xe8,"CLSID_D2D1Histogram"); - IF_GUID_EQUAL_RETURN(guid,0x0f4458ec,0x4b32,0x491b,0x9e,0x85,0xbd,0x73,0xf4,0x4d,0x3e,0xb6,"CLSID_D2D1HueRotation"); - IF_GUID_EQUAL_RETURN(guid,0xad47c8fd,0x63ef,0x4acc,0x9b,0x51,0x67,0x97,0x9c,0x03,0x6c,0x06,"CLSID_D2D1LinearTransfer"); - IF_GUID_EQUAL_RETURN(guid,0x41251ab7,0x0beb,0x46f8,0x9d,0xa7,0x59,0xe9,0x3f,0xcc,0xe5,0xde,"CLSID_D2D1LuminanceToAlpha"); - IF_GUID_EQUAL_RETURN(guid,0xeae6c40d,0x626a,0x4c2d,0xbf,0xcb,0x39,0x10,0x01,0xab,0xe2,0x02,"CLSID_D2D1Morphology"); - IF_GUID_EQUAL_RETURN(guid,0x6c53006a,0x4450,0x4199,0xaa,0x5b,0xad,0x16,0x56,0xfe,0xce,0x5e,"CLSID_D2D1OpacityMetadata"); - IF_GUID_EQUAL_RETURN(guid,0xb9e303c3,0xc08c,0x4f91,0x8b,0x7b,0x38,0x65,0x6b,0xc4,0x8c,0x20,"CLSID_D2D1PointDiffuse"); - IF_GUID_EQUAL_RETURN(guid,0x09c3ca26,0x3ae2,0x4f09,0x9e,0xbc,0xed,0x38,0x65,0xd5,0x3f,0x22,"CLSID_D2D1PointSpecular"); - IF_GUID_EQUAL_RETURN(guid,0x06eab419,0xdeed,0x4018,0x80,0xd2,0x3e,0x1d,0x47,0x1a,0xde,0xb2,"CLSID_D2D1Premultiply"); - IF_GUID_EQUAL_RETURN(guid,0x5cb2d9cf,0x327d,0x459f,0xa0,0xce,0x40,0xc0,0xb2,0x08,0x6b,0xf7,"CLSID_D2D1Saturation"); - IF_GUID_EQUAL_RETURN(guid,0x9daf9369,0x3846,0x4d0e,0xa4,0x4e,0xc,0x60,0x79,0x34,0xa5,0xd7,"CLSID_D2D1Scale"); - IF_GUID_EQUAL_RETURN(guid,0xC67EA361,0x1863,0x4e69,0x89,0xDB,0x69,0x5D,0x3E,0x9A,0x5B,0x6B,"CLSID_D2D1Shadow"); - IF_GUID_EQUAL_RETURN(guid,0x818a1105,0x7932,0x44f4,0xaa,0x86,0x08,0xae,0x7b,0x2f,0x2c,0x93,"CLSID_D2D1SpotDiffuse"); - IF_GUID_EQUAL_RETURN(guid,0xedae421e,0x7654,0x4a37,0x9d,0xb8,0x71,0xac,0xc1,0xbe,0xb3,0xc1,"CLSID_D2D1SpotSpecular"); - IF_GUID_EQUAL_RETURN(guid,0x5bf818c3,0x5e43,0x48cb,0xb6,0x31,0x86,0x83,0x96,0xd6,0xa1,0xd4,"CLSID_D2D1TableTransfer"); - IF_GUID_EQUAL_RETURN(guid,0xB0784138,0x3B76,0x4bc5,0xB1,0x3B,0x0F,0xA2,0xAD,0x02,0x65,0x9F,"CLSID_D2D1Tile"); - IF_GUID_EQUAL_RETURN(guid,0xCF2BB6AE,0x889A,0x4ad7,0xBA,0x29,0xA2,0xFD,0x73,0x2C,0x9F,0xC9,"CLSID_D2D1Turbulence"); - IF_GUID_EQUAL_RETURN(guid,0xfb9ac489,0xad8d,0x41ed,0x99,0x99,0xbb,0x63,0x47,0xd1,0x10,0xf7,"CLSID_D2D1UnPremultiply"); - IF_GUID_EQUAL_RETURN(guid,0xbcd5796c,0xbd52,0x4d30,0xab,0x76,0x70,0xf9,0x75,0xb8,0x91,0x99,"CLSID_DMOFilterCategory"); - IF_GUID_EQUAL_RETURN(guid,0x94297043,0xbd82,0x4dfd,0xb0,0xde,0x81,0x77,0x73,0x9c,0x6d,0x20,"CLSID_DMOWrapperFilter"); - IF_GUID_EQUAL_RETURN(guid,0x05500280,0xFAA5,0x4DF9,0x82,0x46,0xBF,0xC2,0x3A,0xC5,0xCE,0xA8,"CLSID_DShowTVEFilter"); - IF_GUID_EQUAL_RETURN(guid,0x79376820,0x07D0,0x11CF,0xA2,0x4D,0x0,0x20,0xAF,0xD7,0x97,0x67,"CLSID_DSoundRender"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C482,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"CLSID_DTFilterEncProperties"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C492,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"CLSID_DTFilterTagProperties"); - IF_GUID_EQUAL_RETURN(guid,0xdc0c0fe7,0x485,0x4266,0xb9,0x3f,0x68,0xfb,0xf8,0xe,0xd8,0x34,"CLSID_DVBCNetworkProvider"); - IF_GUID_EQUAL_RETURN(guid,0xfa4b375a,0x45b4,0x4d45,0x84,0x40,0x26,0x39,0x57,0xb1,0x16,0x23,"CLSID_DVBSNetworkProvider"); - IF_GUID_EQUAL_RETURN(guid,0x216c62df,0x6d7f,0x4e9a,0x85,0x71,0x5,0xf1,0x4e,0xdb,0x76,0x6a,"CLSID_DVBTNetworkProvider"); - IF_GUID_EQUAL_RETURN(guid,0x2721AE20,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00,"CLSID_DVDHWDecodersCategory"); - IF_GUID_EQUAL_RETURN(guid,0x9b8c4620,0x2c1a,0x11d0,0x84,0x93,0x0,0xa0,0x24,0x38,0xad,0x48,"CLSID_DVDNavigator"); - IF_GUID_EQUAL_RETURN(guid,0xf963c5cf,0xa659,0x4a93,0x96,0x38,0xca,0xf3,0xcd,0x27,0x7d,0x13,"CLSID_DVDState"); - IF_GUID_EQUAL_RETURN(guid,0x101193c0,0xbfe,0x11d0,0xaf,0x91,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_DVDecPropertiesPage"); - IF_GUID_EQUAL_RETURN(guid,0x4150f050,0xbb6f,0x11d0,0xaf,0xb9,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_DVEncPropertiesPage"); - IF_GUID_EQUAL_RETURN(guid,0x129d7e40,0xc10d,0x11d0,0xaf,0xb9,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_DVMux"); - IF_GUID_EQUAL_RETURN(guid,0x4db880e0,0xc10d,0x11d0,0xaf,0xb9,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_DVMuxPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x4eb31670,0x9fc6,0x11cf,0xaf,0x6e,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_DVSplitter"); - IF_GUID_EQUAL_RETURN(guid,0xb1b77c00,0xc3e4,0x11cf,0xaf,0x79,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_DVVideoCodec"); - IF_GUID_EQUAL_RETURN(guid,0x13aa3650,0xbb6f,0x11d0,0xaf,0xb9,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_DVVideoEnc"); - IF_GUID_EQUAL_RETURN(guid,0xCFCCC7A0L,0xA282,0x11D1,0x90,0x82,0x00,0x60,0x08,0x05,0x93,0x82,"CLSID_DarwinAppPublisher"); - IF_GUID_EQUAL_RETURN(guid,0x3449a1c8,0xc56c,0x11d0,0xad,0x72,0,0xc0,0x4f,0xc2,0x98,0x63,"CLSID_DataShapeProvider"); - IF_GUID_EQUAL_RETURN(guid,0xcc7bfb46,0xf175,0x11d1,0xa3,0x92,0x0,0xe0,0x29,0x1f,0x39,0x59,"CLSID_DeviceControlCategory"); - IF_GUID_EQUAL_RETURN(guid,0x12d3e372,0x874b,0x457d,0x9f,0xdf,0x73,0x97,0x77,0x78,0x68,0x6c,"CLSID_DeviceIoControl"); - IF_GUID_EQUAL_RETURN(guid,0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5,"CLSID_DirectDraw7"); - IF_GUID_EQUAL_RETURN(guid,0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35,"CLSID_DirectDraw"); - IF_GUID_EQUAL_RETURN(guid,0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56,"CLSID_DirectDrawClipper"); - IF_GUID_EQUAL_RETURN(guid,0x944d4c00,0xdd52,0x11ce,0xbf,0x0e,0x00,0xaa,0x00,0x55,0x59,0x5a,"CLSID_DirectDrawProperties"); - IF_GUID_EQUAL_RETURN(guid,0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"CLSID_DirectInput8"); - IF_GUID_EQUAL_RETURN(guid,0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"CLSID_DirectInput"); - IF_GUID_EQUAL_RETURN(guid,0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"CLSID_DirectInputDevice8"); - IF_GUID_EQUAL_RETURN(guid,0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"CLSID_DirectInputDevice"); - IF_GUID_EQUAL_RETURN(guid,0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21,"CLSID_DirectMusic"); - IF_GUID_EQUAL_RETURN(guid,0x480ff4b0,0x28b2,0x11d1,0xbe,0xf7,0x0,0xc0,0x4f,0xbf,0x8f,0xef,"CLSID_DirectMusicCollection"); - IF_GUID_EQUAL_RETURN(guid,0x58C2B4D0,0x46E7,0x11D1,0x89,0xAC,0x00,0xA0,0xC9,0x05,0x41,0x29,"CLSID_DirectMusicSynth"); - IF_GUID_EQUAL_RETURN(guid,0x8670c736,0xf614,0x427b,0x8a,0xda,0xbb,0xad,0xc5,0x87,0x19,0x4b,"CLSID_DirectShowPluginControl"); - IF_GUID_EQUAL_RETURN(guid,0x3901cc3f,0x84b5,0x4fa4,0xba,0x35,0xaa,0x81,0x72,0xb8,0xa0,0x9b,"CLSID_DirectSound8"); - IF_GUID_EQUAL_RETURN(guid,0x47d4d946,0x62e8,0x11cf,0x93,0xbc,0x44,0x45,0x53,0x54,0x0,0x0,"CLSID_DirectSound"); - IF_GUID_EQUAL_RETURN(guid,0xe4bcac13,0x7f99,0x4908,0x9a,0x8e,0x74,0xe3,0xbf,0x24,0xb6,0xe1,"CLSID_DirectSoundCapture8"); - IF_GUID_EQUAL_RETURN(guid,0xb0210780,0x89cd,0x11d0,0xaf,0x8,0x0,0xa0,0xc9,0x25,0xcd,0x16,"CLSID_DirectSoundCapture"); - IF_GUID_EQUAL_RETURN(guid,0xfea4300c,0x7959,0x4147,0xb2,0x6a,0x23,0x77,0xb9,0xe7,0xa9,0x1d,"CLSID_DirectSoundFullDuplex"); - IF_GUID_EQUAL_RETURN(guid,0x7988b571,0xec89,0x11cf,0x9c,0x0,0x0,0xaa,0x0,0xa1,0x4f,0x56,"CLSID_DiskQuotaControl"); - IF_GUID_EQUAL_RETURN(guid,0x1da08500,0x9edc,0x11cf,0xbc,0x10,0x00,0xaa,0x00,0xac,0x74,0xf6,"CLSID_Dither"); - IF_GUID_EQUAL_RETURN(guid,0x7057e952,0xbd1b,0x11d1,0x89,0x19,0x0,0xc0,0x4f,0xc2,0xc8,0x36,"CLSID_DocHostUIHandler"); - IF_GUID_EQUAL_RETURN(guid,0xBF426F7E,0x7A5E,0x44D6,0x83,0x0C,0xA3,0x90,0xEA,0x94,0x62,0xA3,"CLSID_DocWrap"); - IF_GUID_EQUAL_RETURN(guid,0x4657278a,0x411b,0x11d2,0x83,0x9a,0x0,0xc0,0x4f,0xd9,0x18,0xd0,"CLSID_DragDropHelper"); - IF_GUID_EQUAL_RETURN(guid,0x17d6ccd8,0x3b7b,0x11d2,0xb9,0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7,"CLSID_DsObjectPicker"); - IF_GUID_EQUAL_RETURN(guid,0xfb056ba0,0x2502,0x45b9,0x8e,0x86,0x2b,0x40,0xde,0x84,0xad,0x29,"CLSID_DtvCcFilter"); - IF_GUID_EQUAL_RETURN(guid,0xFCC152B7,0xF372,0x11d0,0x8E,0x00,0x00,0xC0,0x4F,0xD7,0xC0,0x8B,"CLSID_DvdGraphBuilder"); - IF_GUID_EQUAL_RETURN(guid,0xA65B8071,0x3BFE,0x4213,0x9A,0x5B,0x49,0x1D,0xA4,0x46,0x1C,0xA7,"CLSID_DxDiagProvider"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C481,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"CLSID_ETFilterEncProperties"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C491,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"CLSID_ETFilterTagProperties"); - IF_GUID_EQUAL_RETURN(guid,0x62079164,0x233b,0x41f8,0xa8,0x0f,0xf0,0x17,0x05,0xf5,0x14,0xa8,"CLSID_EVRPlaybackPipelineOptimizer"); - IF_GUID_EQUAL_RETURN(guid,0xa0a7a57b,0x59b2,0x4919,0xa6,0x94,0xad,0xd0,0xa5,0x26,0xc3,0x73,"CLSID_EVRTearlessWindowPresenter9"); - IF_GUID_EQUAL_RETURN(guid,0xfa10746c,0x9b63,0x4b6c,0xbc,0x49,0xfc,0x30,0xe,0xa5,0xf2,0x56,"CLSID_EnhancedVideoRenderer"); - IF_GUID_EQUAL_RETURN(guid,0x6e5e1910,0x8053,0x4660,0xb7,0x95,0x6b,0x61,0x2e,0x29,0xbc,0x58,"CLSID_EvalCom2"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb4,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_FGControl"); - IF_GUID_EQUAL_RETURN(guid,0x701722e0,0x8ae3,0x11ce,0xa8,0x5c,0x00,0xaa,0x00,0x2f,0xea,0xb5,"CLSID_FileSource"); - IF_GUID_EQUAL_RETURN(guid,0xB091E540,0x83E3,0x11CF,0xA7,0x13,0x00,0x20,0xAF,0xD7,0x97,0x62,"CLSID_FileTypes"); - IF_GUID_EQUAL_RETURN(guid,0x8596e5f0,0xda5,0x11d0,0xbd,0x21,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_FileWriter"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb3,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_FilgraphManager"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb3,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_FilterGraph"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb8,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_FilterGraphNoThread"); - IF_GUID_EQUAL_RETURN(guid,0xa3ecbc41,0x581a,0x4476,0xb6,0x93,0xa6,0x33,0x40,0x46,0x2d,0x8b,"CLSID_FilterGraphPrivateThread"); - IF_GUID_EQUAL_RETURN(guid,0xcda42200,0xbd88,0x11d0,0xbd,0x4e,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_FilterMapper2"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb2,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_FilterMapper"); - IF_GUID_EQUAL_RETURN(guid,0xfef10fa2,0x355e,0x4e06,0x93,0x81,0x9b,0x24,0xd7,0xf7,0xcc,0x88,"CLSID_FolderItem"); - IF_GUID_EQUAL_RETURN(guid,0x53c74826,0xab99,0x4d33,0xac,0xa4,0x31,0x17,0xf5,0x1d,0x37,0x88,"CLSID_FolderItemsMultiLevel"); - IF_GUID_EQUAL_RETURN(guid,0x3ff292b6,0xb204,0x11cf,0x8d,0x23,0,0xaa,0,0x5f,0xfe,0x58,"CLSID_FoxRowset"); - IF_GUID_EQUAL_RETURN(guid,0xC3E5D3D2,0x1A03,0x11CF,0x94,0x2D,0x00,0x80,0x29,0x00,0x43,0x47,"CLSID_GeneralPropPage"); - IF_GUID_EQUAL_RETURN(guid,0xC3E5D3D3,0x1A03,0x11CF,0x94,0x2D,0x00,0x80,0x29,0x00,0x43,0x47,"CLSID_GraphPropPage"); - IF_GUID_EQUAL_RETURN(guid,0xffb8655f,0x81b9,0x4fce,0xb8,0x9c,0x9a,0x6b,0xa7,0x6d,0x13,0xe7,"CLSID_HWShellExecute"); - IF_GUID_EQUAL_RETURN(guid,0xe7d18cf5,0x3ec7,0x44d5,0xa7,0x6b,0x37,0x70,0xf3,0xcf,0x90,0x3d,"CLSID_HorizontalIndicatorContent"); - IF_GUID_EQUAL_RETURN(guid,0x44cb442b,0x9da9,0x49df,0xb3,0xfd,0x2,0x37,0x77,0xb1,0x6e,0x50,"CLSID_HttpSchemePlugin"); - IF_GUID_EQUAL_RETURN(guid,0x7ff0997a,0x1999,0x4286,0xa7,0x3c,0x62,0x2b,0x88,0x14,0xe7,0xeb,"CLSID_ICodecAPIProxy"); - IF_GUID_EQUAL_RETURN(guid,0xD82BE2B0L,0x5764,0x11D0,0xA9,0x6E,0x00,0xC0,0x4F,0xD7,0x05,0xA2,"CLSID_ISFBand"); - IF_GUID_EQUAL_RETURN(guid,0xb05dabd9,0x56e5,0x4fdc,0xaf,0xa4,0x8a,0x47,0xe9,0x1f,0x1c,0x9c,"CLSID_IVideoEncoderCodecAPIProxy"); - IF_GUID_EQUAL_RETURN(guid,0xb43c4eec,0x8c32,0x4791,0x91,0x2,0x50,0x8a,0xda,0x5e,0xe8,0xe7,"CLSID_IVideoEncoderProxy"); - IF_GUID_EQUAL_RETURN(guid,0xE8FB8621,0x588F,0x11d2,0x9d,0x61,0x0,0xc0,0x4f,0x79,0xc5,0xfe,"CLSID_IisServiceControl"); - IF_GUID_EQUAL_RETURN(guid,0x7bf0129b,0x5bef,0x4de4,0x9b,0x0b,0x5e,0xdb,0x66,0xac,0x2f,0xa6,"CLSID_ImePlugInDictDictionaryList_CHS"); - IF_GUID_EQUAL_RETURN(guid,0x4fe2776b,0xb0f9,0x4396,0xb5,0xfc,0xe9,0xd4,0xcf,0x1e,0xc1,0x95,"CLSID_ImePlugInDictDictionaryList_JPN"); - IF_GUID_EQUAL_RETURN(guid,0xf8388a40,0xd5bb,0x11d0,0xbe,0x5a,0x0,0x80,0xc7,0x6,0x56,0x8e,"CLSID_InfTee"); - IF_GUID_EQUAL_RETURN(guid,0x317E92FC,0x1679,0x46FD,0xA0,0xB5,0xF0,0x89,0x14,0xDD,0x86,0x23,"CLSID_InstallationAgent"); - IF_GUID_EQUAL_RETURN(guid,0x1E796980L,0x9CC5,0x11D1,0xA8,0x3F,0x00,0xC0,0x4F,0xC9,0x9D,0x61,"CLSID_InternetButtons"); - IF_GUID_EQUAL_RETURN(guid,0x083863F1,0x70DE,0x11d0,0xBD,0x40,0x00,0xA0,0xC9,0x11,0xCE,0x86,"CLSID_LegacyAmFilterCategory"); - IF_GUID_EQUAL_RETURN(guid,0xe4206432,0x01a1,0x4bee,0xb3,0xe1,0x37,0x02,0xc8,0xed,0xc5,0x74,"CLSID_Line21Decoder2"); - IF_GUID_EQUAL_RETURN(guid,0x6e8d4a20,0x310c,0x11d0,0xb7,0x9a,0x0,0xaa,0x0,0x37,0x67,0xa7,"CLSID_Line21Decoder"); - IF_GUID_EQUAL_RETURN(guid,0x24f14f02,0x7b1c,0x11d1,0x83,0x8f,0x0,0x0,0xf8,0x4,0x61,0xcf,"CLSID_LinkColumnProvider"); - IF_GUID_EQUAL_RETURN(guid,0x16EC5BE8,0xDF93,0x4237,0x94,0xE4,0x9E,0xE9,0x18,0x11,0x1D,0x71,"CLSID_LogFileItem"); - IF_GUID_EQUAL_RETURN(guid,0x2735D9FD,0xF6B9,0x4f19,0xA5,0xD9,0xE2,0xD0,0x68,0x58,0x4B,0xC5,"CLSID_LogFiles"); - IF_GUID_EQUAL_RETURN(guid,0x770e8e77,0x4916,0x441c,0xa9,0xa7,0xb3,0x42,0xd0,0xee,0xbc,0x71,"CLSID_MFByteStreamProxyClassFactory"); - IF_GUID_EQUAL_RETURN(guid,0xefce38d3,0x8914,0x4674,0xa7,0xdf,0xae,0x1b,0x3d,0x65,0x4b,0x8a,"CLSID_MFCaptureEngine"); - IF_GUID_EQUAL_RETURN(guid,0xefce38d3,0x8914,0x4674,0xa7,0xdf,0xae,0x1b,0x3d,0x65,0x4b,0x8a,"CLSID_MFCaptureEngineClassFactory"); - IF_GUID_EQUAL_RETURN(guid,0xb22c3339,0x87f3,0x4059,0xa0,0xc5,0x3,0x7a,0xa9,0x70,0x7e,0xaf,"CLSID_MFImageSharingEngineClassFactory"); - IF_GUID_EQUAL_RETURN(guid,0xb44392da,0x499b,0x446b,0xa4,0xcb,0x0,0x5f,0xea,0xd0,0xe6,0xd5,"CLSID_MFMediaEngineClassFactory"); - IF_GUID_EQUAL_RETURN(guid,0xf8e307fb,0x6d45,0x4ad3,0x99,0x93,0x66,0xcd,0x5a,0x52,0x96,0x59,"CLSID_MFMediaSharingEngineClassFactory"); - IF_GUID_EQUAL_RETURN(guid,0x48e2ed0f,0x98c2,0x4a37,0xbe,0xd5,0x16,0x63,0x12,0xdd,0xd8,0x3f,"CLSID_MFReadWriteClassFactory"); - IF_GUID_EQUAL_RETURN(guid,0xa3bbfb17,0x8273,0x4e52,0x9e,0x0e,0x97,0x39,0xdc,0x88,0x79,0x90,"CLSID_MFSinkWriter"); - IF_GUID_EQUAL_RETURN(guid,0x1777133c,0x0881,0x411b,0xa5,0x77,0xad,0x54,0x5f,0x07,0x14,0xc4,"CLSID_MFSourceReader"); - IF_GUID_EQUAL_RETURN(guid,0x90eab60f,0xe43a,0x4188,0xbc,0xc4,0xe4,0x7f,0xdf,0x04,0x86,0x8c,"CLSID_MFSourceResolver"); - IF_GUID_EQUAL_RETURN(guid,0xE474E05A,0xAB65,0x4f6a,0x82,0x7C,0x21,0x8B,0x1B,0xAA,0xF3,0x1F,"CLSID_MFVideoMixer9"); - IF_GUID_EQUAL_RETURN(guid,0x98455561,0x5136,0x4d28,0xab,0x8,0x4c,0xee,0x40,0xea,0x27,0x81,"CLSID_MFVideoPresenter9"); - IF_GUID_EQUAL_RETURN(guid,0xfd361dbe,0x6c9b,0x4de0,0x82,0x90,0xf6,0x40,0xc,0x27,0x37,0xed,"CLSID_MILBitmapEffectBevel"); - IF_GUID_EQUAL_RETURN(guid,0xa924df87,0x225d,0x4373,0x8f,0x5b,0xb9,0xe,0xc8,0x5a,0xe3,0xde,"CLSID_MILBitmapEffectBlur"); - IF_GUID_EQUAL_RETURN(guid,0x459a3fbe,0xd8ac,0x4692,0x87,0x4b,0x7a,0x26,0x57,0x15,0xaa,0x16,"CLSID_MILBitmapEffectDropShadow"); - IF_GUID_EQUAL_RETURN(guid,0xcd299846,0x824f,0x47ec,0xa0,0x07,0x12,0xaa,0x76,0x7f,0x28,0x16,"CLSID_MILBitmapEffectEmboss"); - IF_GUID_EQUAL_RETURN(guid,0xac9c1a9a,0x7e18,0x4f64,0xac,0x7e,0x47,0xcf,0x7f,0x05,0x1e,0x95,"CLSID_MILBitmapEffectGroup"); - IF_GUID_EQUAL_RETURN(guid,0xe2161bdd,0x7eb6,0x4725,0x9c,0x0b,0x8a,0x2a,0x1b,0x4f,0x06,0x67,"CLSID_MILBitmapEffectOuterGlow"); - IF_GUID_EQUAL_RETURN(guid,0xb80ab0a0,0x7416,0x11d2,0x9e,0xeb,0x0,0x60,0x8,0x3,0x9e,0x37,"CLSID_MJPGEnc"); - IF_GUID_EQUAL_RETURN(guid,0x3ae86b20,0x7be8,0x11d1,0xab,0xe6,0x00,0xa0,0xc9,0x05,0xf3,0x75,"CLSID_MMSPLITTER"); - IF_GUID_EQUAL_RETURN(guid,0x44584800,0xf8ee,0x11ce,0xb2,0xd4,0x00,0xdd,0x1,0x10,0x1b,0x85,"CLSID_MOVReader"); - IF_GUID_EQUAL_RETURN(guid,0xe4bbd160,0x4269,0x11ce,0x83,0x8d,0x0,0xaa,0x0,0x55,0x59,0x5a,"CLSID_MPEG1Doc"); - IF_GUID_EQUAL_RETURN(guid,0x26c25940,0x4ca9,0x11ce,0xa8,0x28,0x0,0xaa,0x0,0x2f,0xea,0xb5,"CLSID_MPEG1PacketPlayer"); - IF_GUID_EQUAL_RETURN(guid,0x336475d0,0x942a,0x11ce,0xa8,0x70,0x00,0xaa,0x00,0x2f,0xea,0xb5,"CLSID_MPEG1Splitter"); - IF_GUID_EQUAL_RETURN(guid,0x40871c59,0xab40,0x471f,0x8d,0xc3,0x1f,0x25,0x9d,0x86,0x24,0x79,"CLSID_MPEG2ByteStreamPlugin"); - IF_GUID_EQUAL_RETURN(guid,0xfa5fe7c5,0x6a1d,0x4b11,0xb4,0x1f,0xf9,0x59,0xd6,0xc7,0x65,0x00,"CLSID_MPEG2DLNASink"); - IF_GUID_EQUAL_RETURN(guid,0xafb6c280,0x2c41,0x11d3,0x8a,0x60,0x00,0x00,0xf8,0x1e,0x0e,0x4a,"CLSID_MPEG2Demultiplexer"); - IF_GUID_EQUAL_RETURN(guid,0x687d3367,0x3644,0x467a,0xad,0xfe,0x6c,0xd7,0xa8,0x5c,0x4a,0x2c,"CLSID_MPEG2Demultiplexer_NoClock"); - IF_GUID_EQUAL_RETURN(guid,0x08cd963f,0x7a3e,0x4f5c,0x9b,0xd8,0xd6,0x92,0xbb,0x04,0x3c,0x5b,"CLSID_MSAAControl"); - IF_GUID_EQUAL_RETURN(guid,0xa9e69610,0xb80d,0x11d0,0xb9,0xb9,0x00,0xa0,0xc9,0x22,0xe7,0x50,"CLSID_MSAdminBase_W"); - IF_GUID_EQUAL_RETURN(guid,0xC8B522CBL,0x5CF3,0x11CE,0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D,"CLSID_MSDASQL"); - IF_GUID_EQUAL_RETURN(guid,0xC8B522CDL,0x5CF3,0x11CE,0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D,"CLSID_MSDASQL_ENUMERATOR"); - IF_GUID_EQUAL_RETURN(guid,0x178f34b8,0xa282,0x11d2,0x86,0xc5,0x0,0xc0,0x4f,0x8e,0xea,0x99,"CLSID_MSOButtons"); - IF_GUID_EQUAL_RETURN(guid,0x7D22E920,0x5CA9,0x4787,0x8C,0x2B,0xA6,0x77,0x9B,0xD1,0x17,0x81,"CLSID_MediaEncoderCategory"); - IF_GUID_EQUAL_RETURN(guid,0x236C9559,0xADCE,0x4736,0xBF,0x72,0xBA,0xB3,0x4E,0x39,0x21,0x96,"CLSID_MediaMultiplexerCategory"); - IF_GUID_EQUAL_RETURN(guid,0xcdbd8d00,0xc193,0x11d0,0xbd,0x4e,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_MediaPropertyBag"); - IF_GUID_EQUAL_RETURN(guid,0x1e651cc0,0xb199,0x11d0,0x82,0x12,0x00,0xc0,0x4f,0xc3,0x2c,0x45,"CLSID_MemoryAllocator"); - IF_GUID_EQUAL_RETURN(guid,0xe13ef4e4,0xd2f2,0x11d0,0x98,0x16,0x0,0xc0,0x4f,0xd9,0x19,0x72,"CLSID_MenuBandSite"); - IF_GUID_EQUAL_RETURN(guid,0x40b96610,0xb522,0x11d1,0xb3,0xb4,0x0,0xaa,0x0,0x6e,0xfd,0xe7,"CLSID_MenuToolbarBase"); - IF_GUID_EQUAL_RETURN(guid,0x4EfE2452,0x168A,0x11d1,0xBC,0x76,0x0,0xc0,0x4F,0xB9,0x45,0x3B,"CLSID_MidiRendererCategory"); - IF_GUID_EQUAL_RETURN(guid,0x301056d0,0x6dff,0x11d2,0x9e,0xeb,0x0,0x60,0x8,0x3,0x9e,0x37,"CLSID_MjpegDec"); - IF_GUID_EQUAL_RETURN(guid,0x0618aa30,0x6bc4,0x11cf,0xbf,0x36,0x00,0xaa,0x00,0x55,0x59,0x5a,"CLSID_ModexProperties"); - IF_GUID_EQUAL_RETURN(guid,0x7167665,0x5011,0x11cf,0xbf,0x33,0x0,0xaa,0x0,0x55,0x59,0x5a,"CLSID_ModexRenderer"); - IF_GUID_EQUAL_RETURN(guid,0x752845f1,0x758f,0x4c83,0xa0,0x43,0x42,0x70,0xc5,0x93,0x30,0x8e,"CLSID_Mpeg2TableFilter"); - IF_GUID_EQUAL_RETURN(guid,0x6cfad761,0x735d,0x4aa5,0x8a,0xfc,0xaf,0x91,0xa7,0xd6,0x1e,0xba,"CLSID_Mpeg2VideoStreamAnalyzer"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA830,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"CLSID_MsmMerge"); - IF_GUID_EQUAL_RETURN(guid,0xe9f4ebab,0xd97b,0x463e,0xa2,0xb1,0xc5,0x4e,0xe3,0xf9,0x41,0x4d,"CLSID_NetSchemePlugin"); - IF_GUID_EQUAL_RETURN(guid,0xb2f3a67c,0x29da,0x4c78,0x88,0x31,0x9,0x1e,0xd5,0x9,0xa4,0x75,"CLSID_NetworkProvider"); - IF_GUID_EQUAL_RETURN(guid,0xd969a300,0xe7ff,0x11d0,0xa9,0x3b,0x0,0xa0,0xc9,0xf,0x27,0x19,"CLSID_NewMenu"); - IF_GUID_EQUAL_RETURN(guid,0xcd8743a1,0x3736,0x11d0,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"CLSID_OverlayMixer"); - IF_GUID_EQUAL_RETURN(guid,0xfd456373,0x3323,0x4090,0xad,0xca,0x8e,0xd4,0x5f,0x55,0xcf,0x10,"CLSID_PBDA_AUX_DATA_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x728fd6bc,0x5546,0x4716,0xb1,0x03,0xf8,0x99,0xf5,0xa1,0xfa,0x68,"CLSID_PBDA_Encoder_DATA_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0xe7dbf9a0,0x22ab,0x4047,0x8e,0x67,0xef,0x9a,0xd5,0x4,0xe7,0x29,"CLSID_PBDA_FDC_DATA_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0xC80C0DF3,0x6052,0x4c16,0x9F,0x56,0xC4,0x4C,0x21,0xF7,0x3C,0x45,"CLSID_PBDA_GDDS_DATA_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x9cd31617,0xb303,0x4f96,0x83,0x30,0x2e,0xb1,0x73,0xea,0x4d,0xc6,"CLSID_PTFilter"); - IF_GUID_EQUAL_RETURN(guid,0x59ce6880,0xacf8,0x11cf,0xb5,0x6e,0x00,0x80,0xc7,0xc4,0xb6,0x8a,"CLSID_PerformanceProperties"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb7,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_PersistMonikerPID"); - IF_GUID_EQUAL_RETURN(guid,0xDA17539A,0x3DC3,0x42C1,0xA7,0x49,0xA1,0x83,0xB5,0x1F,0x08,0x5E,"CLSID_PlayToSourceClassFactory"); - IF_GUID_EQUAL_RETURN(guid,0xf8383852,0xfcd3,0x11d1,0xa6,0xb9,0x0,0x60,0x97,0xdf,0x5b,0xd4,"CLSID_ProgressDialog"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb0,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_ProtoFilterGraph"); - IF_GUID_EQUAL_RETURN(guid,0xfdfe9681,0x74a3,0x11d0,0xaf,0xa7,0x0,0xaa,0x0,0xb6,0x7a,0x42,"CLSID_QTDec"); - IF_GUID_EQUAL_RETURN(guid,0x418afb70,0xf8b8,0x11ce,0xaa,0xc6,0x00,0x20,0xaf,0x0b,0x99,0xa3,"CLSID_QualityProperties"); - IF_GUID_EQUAL_RETURN(guid,0xa07034fd,0x6caa,0x4954,0xac,0x3f,0x97,0xa2,0x72,0x16,0xf9,0x8a,"CLSID_QueryAssociations"); - IF_GUID_EQUAL_RETURN(guid,0xe5cbf21,0xd15f,0x11d0,0x83,0x1,0x0,0xaa,0x0,0x5b,0x43,0x83,"CLSID_QuickLinks"); - IF_GUID_EQUAL_RETURN(guid,0xd51bd5a0,0x7548,0x11cf,0xa5,0x20,0x0,0x80,0xc7,0x7e,0xf5,0x8a,"CLSID_QuickTimeParser"); - IF_GUID_EQUAL_RETURN(guid,0x920c25d0,0x25d9,0x11d0,0xa5,0x5f,0x00,0xa0,0xc9,0x0c,0x20,0x91,"CLSID_Request"); - IF_GUID_EQUAL_RETURN(guid,0x46E19BA0,0x25DD,0x11D0,0xA5,0x5F,0x00,0xA0,0xC9,0x0C,0x20,0x91,"CLSID_Response"); - IF_GUID_EQUAL_RETURN(guid,0x93a094d7,0x51e8,0x485b,0x90,0x4a,0x8d,0x6b,0x97,0xdc,0x6b,0x39,"CLSID_SBE2File"); - IF_GUID_EQUAL_RETURN(guid,0x3e458037,0xca6,0x41aa,0xa5,0x94,0x2a,0xa6,0xc0,0x2d,0x70,0x9b,"CLSID_SBE2FileScan");; - IF_GUID_EQUAL_RETURN(guid,0x1f26a602,0x2b5c,0x4b63,0xb8,0xe8,0x9e,0xa5,0xc1,0xa7,0xdc,0x2e,"CLSID_SBE2MediaTypeProfile"); - IF_GUID_EQUAL_RETURN(guid,0xe2448508,0x95da,0x4205,0x9a,0x27,0x7e,0xc8,0x1e,0x72,0x3b,0x1a,"CLSID_SBE2Sink"); - IF_GUID_EQUAL_RETURN(guid,0xc7ff16cL,0x38e3,0x11d0,0x97,0xab,0x0,0xc0,0x4f,0xc2,0xad,0x98,"CLSID_SQLOLEDB"); - IF_GUID_EQUAL_RETURN(guid,0xdfa22b8eL,0xe68d,0x11d0,0x97,0xe4,0x0,0xc0,0x4f,0xc2,0xad,0x98,"CLSID_SQLOLEDB_ENUMERATOR"); - IF_GUID_EQUAL_RETURN(guid,0xc0932c62L,0x38e5,0x11d0,0x97,0xab,0x0,0xc0,0x4f,0xc2,0xad,0x98,"CLSID_SQLOLEDB_ERROR"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA868,0x11cf,0x83,0xAE,0x11,0xB0,0xC9,0x0C,0x2B,0xD8,"CLSID_ScriptingContext"); - IF_GUID_EQUAL_RETURN(guid,0x60af76c,0x68dd,0x11d0,0x8f,0xc1,0x0,0xc0,0x4f,0xd9,0x18,0x9d,"CLSID_SeekingPassThru"); - IF_GUID_EQUAL_RETURN(guid,0xA506D160,0x25E0,0x11D0,0xA5,0x5F,0x00,0xA0,0xC9,0x0C,0x20,0x91,"CLSID_Server"); - IF_GUID_EQUAL_RETURN(guid,0x509F8F20,0x25DE,0x11D0,0xA5,0x5F,0x00,0xA0,0xC9,0x0C,0x20,0x91,"CLSID_Session"); - IF_GUID_EQUAL_RETURN(guid,0x6D5313C0,0x8C62,0x11D1,0xB2,0xCD,0x00,0x60,0x97,0xDF,0x8C,0x11,"CLSID_ShellFldSetExt"); - IF_GUID_EQUAL_RETURN(guid,0xcc58e280,0x8aa1,0x11d1,0xb3,0xf1,0x0,0xaa,0x0,0x37,0x61,0xc5,"CLSID_SmartTee"); - IF_GUID_EQUAL_RETURN(guid,0x0CF32AA1,0x7571,0x11D0,0x93,0xC4,0x00,0xAA,0x00,0xA3,0xDD,0xEA,"CLSID_SourcePropPage"); - IF_GUID_EQUAL_RETURN(guid,0xB323F8E0L,0x2E68,0x11D0,0x90,0xEA,0x00,0xAA,0x00,0x60,0xF8,0x6C,"CLSID_Sti"); - IF_GUID_EQUAL_RETURN(guid,0xd682c4ba,0xa90a,0x42fe,0xb9,0xe1,0x3,0x10,0x98,0x49,0xc4,0x23,"CLSID_StreamBufferComposeRecording"); - IF_GUID_EQUAL_RETURN(guid,0xfa8a68b2,0xc864,0x4ba2,0xad,0x53,0xd3,0x87,0x6a,0x87,0x49,0x4b,"CLSID_StreamBufferConfig"); - IF_GUID_EQUAL_RETURN(guid,0xe37a73f8,0xfb01,0x43dc,0x91,0x4e,0xaa,0xee,0x76,0x9,0x5a,0xb9,"CLSID_StreamBufferPropertyHandler"); - IF_GUID_EQUAL_RETURN(guid,0xccaa63ac,0x1057,0x4778,0xae,0x92,0x12,0x6,0xab,0x9a,0xce,0xe6,"CLSID_StreamBufferRecordingAttributes"); - IF_GUID_EQUAL_RETURN(guid,0x2db47ae5,0xcf39,0x43c2,0xb4,0xd6,0xc,0xd8,0xd9,0x9,0x46,0xf4,"CLSID_StreamBufferSink"); - IF_GUID_EQUAL_RETURN(guid,0xc9f5fe02,0xf851,0x4eb5,0x99,0xee,0xad,0x60,0x2a,0xf1,0xe6,0x19,"CLSID_StreamBufferSource"); - IF_GUID_EQUAL_RETURN(guid,0x713790ee,0x5ee1,0x45ba,0x80,0x70,0xa1,0x33,0x7d,0x27,0x62,0xfa,"CLSID_StreamBufferThumbnailHandler"); - IF_GUID_EQUAL_RETURN(guid,0x72C97D74,0x7C3B,0x40AE,0xB7,0x7D,0xAB,0xDB,0x22,0xEB,0xA6,0xFB,"CLSID_StringCollection"); - IF_GUID_EQUAL_RETURN(guid,0x9f22cfea,0xce07,0x41ab,0x8b,0xa0,0xc7,0x36,0x4a,0xf9,0x0a,0xf9,"CLSID_SubtitlesFilter"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb1,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_SystemClock"); - IF_GUID_EQUAL_RETURN(guid,0x62BE5D10,0x60EB,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86,"CLSID_SystemDeviceEnum"); - IF_GUID_EQUAL_RETURN(guid,0xC01B9BA0,0xBEA7,0x41BA,0xB6,0x04,0xD0,0xA3,0x6F,0x46,0x91,0x33,"CLSID_SystemInformation"); - IF_GUID_EQUAL_RETURN(guid,0x7f30578c,0x5f38,0x4612,0xac,0xfe,0x6e,0xd0,0x4c,0x7b,0x7a,0xf8,"CLSID_SystemMonitor2"); - IF_GUID_EQUAL_RETURN(guid,0xC4D2D8E0,0xD1DD,0x11ce,0x94,0x0F,0x00,0x80,0x29,0x00,0x43,0x47,"CLSID_SystemMonitor"); - IF_GUID_EQUAL_RETURN(guid,0x71f96463,0x78f3,0x11d0,0xa1,0x8c,0x0,0xa0,0xc9,0x11,0x89,0x56,"CLSID_TVAudioFilterPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x05500282,0xFAA5,0x4DF9,0x82,0x46,0xBF,0xC2,0x3A,0xC5,0xCE,0xA8,"CLSID_TVEFilterCCProperties"); - IF_GUID_EQUAL_RETURN(guid,0x05500283,0xFAA5,0x4DF9,0x82,0x46,0xBF,0xC2,0x3A,0xC5,0xCE,0xA8,"CLSID_TVEFilterStatsProperties"); - IF_GUID_EQUAL_RETURN(guid,0x05500281,0xFAA5,0x4DF9,0x82,0x46,0xBF,0xC2,0x3A,0xC5,0xCE,0xA8,"CLSID_TVEFilterTuneProperties"); - IF_GUID_EQUAL_RETURN(guid,0x266eee41,0x6c63,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"CLSID_TVTunerFilterPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0xe30629d3,0x27e5,0x11ce,0x87,0x5d,0x0,0x60,0x8c,0xb7,0x80,0x66,"CLSID_TextRender"); - IF_GUID_EQUAL_RETURN(guid,0x2ce4b5d8,0xa28f,0x11d2,0x86,0xc5,0x0,0xc0,0x4f,0x8e,0xea,0x99,"CLSID_ToolbarExtButtons"); - IF_GUID_EQUAL_RETURN(guid,0x7b40792d,0x05ff,0x44c4,0x90,0x58,0xf4,0x40,0xc7,0x1f,0x17,0xd4,"CLSID_TraceRelogger"); - IF_GUID_EQUAL_RETURN(guid,0xcc7bfb41,0xf175,0x11d1,0xa3,0x92,0x0,0xe0,0x29,0x1f,0x39,0x59,"CLSID_TransmitCategory"); - IF_GUID_EQUAL_RETURN(guid,0xB81FF171,0x20F3,0x11d2,0x8d,0xcc,0x00,0xa0,0xc9,0xb0,0x05,0x25,"CLSID_TypeNameFactory"); - IF_GUID_EQUAL_RETURN(guid,0x926749fa,0x2615,0x4987,0x88,0x45,0xc3,0x3e,0x65,0xf2,0xb9,0x57,"CLSID_UIRibbonFramework"); - IF_GUID_EQUAL_RETURN(guid,0x0f7434b6,0x59b6,0x4250,0x99,0x9e,0xd1,0x68,0xd6,0xae,0x42,0x93,"CLSID_UIRibbonImageFromBitmapFactory"); - IF_GUID_EQUAL_RETURN(guid,0xe436ebb6,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"CLSID_URLReader"); - IF_GUID_EQUAL_RETURN(guid,0x13639463,0x00DB,0x4646,0x80,0x3D,0x52,0x80,0x26,0x14,0x0D,0x88,"CLSID_UpdateCollection"); - IF_GUID_EQUAL_RETURN(guid,0x5BAF654A,0x5A07,0x4264,0xA2,0x55,0x9F,0xF5,0x4C,0x71,0x51,0xE7,"CLSID_UpdateDownloader"); - IF_GUID_EQUAL_RETURN(guid,0xD2E0FE7F,0xD23E,0x48E1,0x93,0xC0,0x6F,0xA8,0xCC,0x34,0x64,0x74,"CLSID_UpdateInstaller"); - IF_GUID_EQUAL_RETURN(guid,0xB699E5E8,0x67FF,0x4177,0x88,0xB0,0x36,0x84,0xA3,0x38,0x8B,0xFB,"CLSID_UpdateSearcher"); - IF_GUID_EQUAL_RETURN(guid,0xF8D253D9,0x89A4,0x4DAA,0x87,0xB6,0x11,0x68,0x36,0x9F,0x0B,0x21,"CLSID_UpdateServiceManager"); - IF_GUID_EQUAL_RETURN(guid,0x4CB43D7F,0x7EEE,0x4906,0x86,0x98,0x60,0xDA,0x1C,0x38,0xF2,0xFE,"CLSID_UpdateSession"); - IF_GUID_EQUAL_RETURN(guid,0x9ec4b4f9,0x3029,0x45ad,0x94,0x7b,0x34,0x4d,0xe2,0xa2,0x49,0xe2,"CLSID_UrlmonSchemePlugin"); - IF_GUID_EQUAL_RETURN(guid,0x814b9800,0x1c88,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"CLSID_VBISurfaces"); - IF_GUID_EQUAL_RETURN(guid,0x6a91029e,0xaa49,0x471b,0xae,0xe7,0x7d,0x33,0x27,0x85,0x66,0x0d,"CLSID_VERSION_DEPENDENT_MSIME_JAPANESE"); - IF_GUID_EQUAL_RETURN(guid,0xce292861,0xfc88,0x11d0,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"CLSID_VPObject"); - IF_GUID_EQUAL_RETURN(guid,0x814b9801,0x1c88,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"CLSID_VPVBIObject"); - IF_GUID_EQUAL_RETURN(guid,0X9C38ED61,0xD565,0x4728,0xAE,0xEE,0xC8,0x09,0x52,0xF0,0xEC,0xDE,"CLSID_VdsLoader"); - IF_GUID_EQUAL_RETURN(guid,0x7D1933CB,0x86F6,0x4A98,0x86,0x28,0x01,0xBE,0x94,0xC9,0xA5,0x75,"CLSID_VdsService"); - IF_GUID_EQUAL_RETURN(guid,0xa10b5f17,0xafe0,0x4aa2,0x91,0xe9,0x3e,0x70,0x1,0xd2,0xe6,0xb4,"CLSID_VerticalIndicatorContent"); - IF_GUID_EQUAL_RETURN(guid,0x1b544c22,0xfd0b,0x11ce,0x8c,0x63,0x0,0xaa,0x00,0x44,0xb5,0x1e,"CLSID_VfwCapture"); - IF_GUID_EQUAL_RETURN(guid,0x33d9a760,0x90c8,0x11d0,0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86,"CLSID_VideoCompressorCategory"); - IF_GUID_EQUAL_RETURN(guid,0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86,"CLSID_VideoInputDeviceCategory"); - IF_GUID_EQUAL_RETURN(guid,0x51b4abf3,0x748f,0x4e3b,0xa2,0x76,0xc8,0x28,0x33,0x0e,0x92,0x6a,"CLSID_VideoMixingRenderer9"); - IF_GUID_EQUAL_RETURN(guid,0xB87BEB7B,0x8D29,0x423f,0xAE,0x4D,0x65,0x82,0xC1,0x01,0x75,0xAC,"CLSID_VideoMixingRenderer"); - IF_GUID_EQUAL_RETURN(guid,0x6f26a6cd,0x967b,0x47fd,0x87,0x4a,0x7a,0xed,0x2c,0x9d,0x25,0xa2,"CLSID_VideoPortManager"); - IF_GUID_EQUAL_RETURN(guid,0x71f96464,0x78f3,0x11d0,0xa1,0x8c,0x0,0xa0,0xc9,0x11,0x89,0x56,"CLSID_VideoProcAmpPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x70e102b0,0x5556,0x11ce,0x97,0xc0,0x00,0xaa,0x00,0x55,0x59,0x5a,"CLSID_VideoRenderer"); - IF_GUID_EQUAL_RETURN(guid,0x6BC1CFFA,0x8FC1,0x4261,0xAC,0x22,0xCF,0xB4,0xCC,0x38,0xDB,0x50,"CLSID_VideoRendererDefault"); - IF_GUID_EQUAL_RETURN(guid,0x71f96467,0x78f3,0x11d0,0xa1,0x8c,0x0,0xa0,0xc9,0x11,0x89,0x56,"CLSID_VideoStreamConfigPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0x3206a19a,0x86f0,0x4cb4,0xa7,0xf3,0x16,0xe3,0xb7,0xe2,0xd8,0x52,"CLSID_VirtualViewportContent"); - IF_GUID_EQUAL_RETURN(guid,0x02805F1E,0xD5AA,0x415b,0x82,0xC5,0x61,0xC0,0x33,0xA9,0x88,0xA6,"CLSID_WIC8BIMIPTCDigestMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x2DB5E62B,0x0D67,0x495f,0x8F,0x9D,0xC2,0xF0,0x18,0x86,0x47,0xAC,"CLSID_WIC8BIMIPTCDigestMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x0010668c,0x0801,0x4da6,0xa4,0xa4,0x82,0x65,0x22,0xb6,0xd2,0x8f,"CLSID_WIC8BIMIPTCMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x00108226,0xee41,0x44a2,0x9e,0x9c,0x4b,0xe4,0xd5,0xb1,0xd2,0xcd,"CLSID_WIC8BIMIPTCMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x5805137A,0xE348,0x4F7C,0xB3,0xCC,0x6D,0xB9,0x96,0x5A,0x05,0x99,"CLSID_WIC8BIMResolutionInfoMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x4ff2fe0e,0xe74a,0x4b71,0x98,0xc4,0xab,0x7d,0xc1,0x67,0x7,0xba,"CLSID_WIC8BIMResolutionInfoMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x1767B93A,0xB021,0x44EA,0x92,0xF,0x86,0x3C,0x11,0xF4,0xF7,0x68,"CLSID_WICAPEMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xBD6EDFCA,0x2890,0x482F,0xB2,0x33,0x8D,0x73,0x39,0xA1,0xCF,0x8D,"CLSID_WICAPEMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x43324B33,0xA78F,0x480f,0x91,0x11,0x96,0x38,0xAA,0xCC,0xC8,0x32,"CLSID_WICApp0MetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xF3C633A2,0x46C8,0x498e,0x8F,0xBB,0xCC,0x6F,0x72,0x1B,0xBC,0xDE,"CLSID_WICApp0MetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xAA7E3C50,0x864C,0x4604,0xBC,0x04,0x8B,0x0B,0x76,0xE6,0x37,0xF6,"CLSID_WICApp13MetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x7B19A919,0xA9D6,0x49E5,0xBD,0x45,0x02,0xC3,0x4E,0x4E,0x4C,0xD5,"CLSID_WICApp13MetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xdde33513,0x774e,0x4bcd,0xae,0x79,0x02,0xf4,0xad,0xfe,0x62,0xfc,"CLSID_WICApp1MetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xee366069,0x1832,0x420f,0xb3,0x81,0x04,0x79,0xad,0x06,0x6f,0x19,"CLSID_WICApp1MetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x6b462062,0x7cbf,0x400d,0x9f,0xdb,0x81,0x3d,0xd1,0x0f,0x27,0x78,"CLSID_WICBmpDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x69be8bb4,0xd66d,0x47c8,0x86,0x5a,0xed,0x15,0x89,0x43,0x37,0x82,"CLSID_WICBmpEncoder"); - IF_GUID_EQUAL_RETURN(guid,0x1a3f11dc,0xb514,0x4b17,0x8c,0x5f,0x21,0x54,0x51,0x38,0x52,0xf1,"CLSID_WICDefaultFormatConverter"); - IF_GUID_EQUAL_RETURN(guid,0xd9403860,0x297f,0x4a49,0xbf,0x9b,0x77,0x89,0x81,0x50,0xa4,0x42,"CLSID_WICExifMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xc9a14cda,0xc339,0x460b,0x90,0x78,0xd4,0xde,0xbc,0xfa,0xbe,0x91,"CLSID_WICExifMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xac75d454,0x9f37,0x48f8,0xb9,0x72,0x4e,0x19,0xbc,0x85,0x60,0x11,"CLSID_WICFormatConverterHighColor"); - IF_GUID_EQUAL_RETURN(guid,0xc17cabb2,0xd4a3,0x47d7,0xa5,0x57,0x33,0x9b,0x2e,0xfb,0xd4,0xf1,"CLSID_WICFormatConverterNChannel"); - IF_GUID_EQUAL_RETURN(guid,0x9cb5172b,0xd600,0x46ba,0xab,0x77,0x77,0xbb,0x7e,0x3a,0x00,0xd9,"CLSID_WICFormatConverterWMPhoto"); - IF_GUID_EQUAL_RETURN(guid,0xB92E345D,0xF52D,0x41F3,0xB5,0x62,0x8,0x1B,0xC7,0x72,0xE3,0xB9,"CLSID_WICGCEMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xAF95DC76,0x16B2,0x47F4,0xB3,0xEA,0x3C,0x31,0x79,0x66,0x93,0xE7,"CLSID_WICGCEMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x32557D3B,0x69DC,0x4F95,0x83,0x6E,0xF5,0x97,0x2B,0x2F,0x61,0x59,"CLSID_WICGifCommentMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xA02797fC,0xC4AE,0x418C,0xAF,0x95,0xE6,0x37,0xC7,0xEA,0xD2,0xA1,"CLSID_WICGifCommentMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x381dda3c,0x9ce9,0x4834,0xa2,0x3e,0x1f,0x98,0xf8,0xfc,0x52,0xbe,"CLSID_WICGifDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x114f5598,0x0b22,0x40a0,0x86,0xa1,0xc8,0x3e,0xa4,0x95,0xad,0xbd,"CLSID_WICGifEncoder"); - IF_GUID_EQUAL_RETURN(guid,0x3697790B,0x223B,0x484E,0x99,0x25,0xC4,0x86,0x92,0x18,0xF1,0x7A,"CLSID_WICGpsMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xCB8C13E4,0x62B5,0x4C96,0xA4,0x8B,0x6B,0xA6,0xAC,0xE3,0x9C,0x76,"CLSID_WICGpsMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x7447A267,0x15,0x42C8,0xA8,0xF1,0xFB,0x3B,0x94,0xC6,0x83,0x61,"CLSID_WICIMDMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x8C89071F,0x452E,0x4E95,0x96,0x82,0x9D,0x10,0x24,0x62,0x71,0x72,"CLSID_WICIMDMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x03012959,0xf4f6,0x44d7,0x9d,0x9,0xda,0xa0,0x87,0xa9,0xdb,0x57,"CLSID_WICIPTCMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x1249b20c,0x5dd0,0x44fe,0xb0,0xb3,0x8f,0x92,0xc8,0xe6,0xd0,0x80,"CLSID_WICIPTCMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xD4DCD3D7,0xB4C2,0x47D9,0xA6,0xBF,0xB8,0x9B,0xA3,0x96,0xA4,0xA3,"CLSID_WICIRBMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x5C5C1935,0x0235,0x4434,0x80,0xBC,0x25,0x1B,0xC1,0xEC,0x39,0xC6,"CLSID_WICIRBMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xc61bfcdf,0x2e0f,0x4aad,0xa8,0xd7,0xe0,0x6b,0xaf,0xeb,0xcd,0xfe,"CLSID_WICIcoDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x8f914656,0x9d0a,0x4eb2,0x90,0x19,0xb,0xf9,0x6d,0x8a,0x9e,0xe6,"CLSID_WICIfdMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xb1ebfc28,0xc9bd,0x47a2,0x8d,0x33,0xb9,0x48,0x76,0x97,0x77,0xa7,"CLSID_WICIfdMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xfae3d380,0xfea4,0x4623,0x8c,0x75,0xc6,0xb6,0x11,0x10,0xb6,0x81,"CLSID_WICImagingCategories"); - IF_GUID_EQUAL_RETURN(guid,0xcacaf262,0x9370,0x4615,0xa1,0x3b,0x9f,0x55,0x39,0xda,0x4c,0xa,"CLSID_WICImagingFactory1"); - IF_GUID_EQUAL_RETURN(guid,0x317d06e8,0x5f24,0x433d,0xbd,0xf7,0x79,0xce,0x68,0xd8,0xab,0xc2,"CLSID_WICImagingFactory2"); - IF_GUID_EQUAL_RETURN(guid,0xcacaf262,0x9370,0x4615,0xa1,0x3b,0x9f,0x55,0x39,0xda,0x4c,0xa,"CLSID_WICImagingFactory"); - IF_GUID_EQUAL_RETURN(guid,0xB5C8B898,0x0074,0x459F,0xB7,0x00,0x86,0x0D,0x46,0x51,0xEA,0x14,"CLSID_WICInteropMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x122EC645,0xCD7E,0x44D8,0xB1,0x86,0x2C,0x8C,0x20,0xC3,0xB5,0x0F,"CLSID_WICInteropMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x50B1904B,0xF28F,0x4574,0x93,0xF4,0x0B,0xAD,0xE8,0x2C,0x69,0xE9,"CLSID_WICJpegChrominanceMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x3FF566F0,0x6E6B,0x49D4,0x96,0xE6,0xB7,0x88,0x86,0x69,0x2C,0x62,"CLSID_WICJpegChrominanceMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x9f66347C,0x60C4,0x4C4D,0xAB,0x58,0xD2,0x35,0x86,0x85,0xf6,0x07,"CLSID_WICJpegCommentMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xE573236F,0x55B1,0x4EDA,0x81,0xEA,0x9F,0x65,0xDB,0x02,0x90,0xD3,"CLSID_WICJpegCommentMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x9456a480,0xe88b,0x43ea,0x9e,0x73,0x0b,0x2d,0x9b,0x71,0xb1,0xca,"CLSID_WICJpegDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x1a34f5c1,0x4a5a,0x46dc,0xb6,0x44,0x1f,0x45,0x67,0xe7,0xa6,0x76,"CLSID_WICJpegEncoder"); - IF_GUID_EQUAL_RETURN(guid,0x356F2F88,0x5A6,0x4728,0xB9,0xA4,0x1B,0xFB,0xCE,0x04,0xD8,0x38,"CLSID_WICJpegLuminanceMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x1D583ABC,0x8A0E,0x4657,0x99,0x82,0xA3,0x80,0xCA,0x58,0xFB,0x4B,"CLSID_WICJpegLuminanceMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x41070793,0x59E4,0x479A,0xA1,0xF7,0x95,0x4A,0xDC,0x2E,0xF5,0xFC,"CLSID_WICLSDMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x73C037E7,0xE5D9,0x4954,0x87,0x6A,0x6D,0xA8,0x1D,0x6E,0x57,0x68,"CLSID_WICLSDMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xCE7A4A6,0x3E8,0x4A60,0x9D,0x15,0x28,0x2E,0xF3,0x2E,0xE7,0xDA,"CLSID_WICPngBkgdMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x68E3F2FD,0x31AE,0x4441,0xBB,0x6A,0xFD,0x70,0x47,0x52,0x5F,0x90,"CLSID_WICPngBkgdMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xF90B5F36,0x367B,0x402A,0x9D,0xD1,0xBC,0xF,0xD5,0x9D,0x8F,0x62,"CLSID_WICPngChrmMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xE23CE3EB,0x5608,0x4E83,0xBC,0xEF,0x27,0xB1,0x98,0x7E,0x51,0xD7,"CLSID_WICPngChrmMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x389ea17b,0x5078,0x4cde,0xb6,0xef,0x25,0xc1,0x51,0x75,0xc7,0x51,"CLSID_WICPngDecoder1"); - IF_GUID_EQUAL_RETURN(guid,0xe018945b,0xaa86,0x4008,0x9b,0xd4,0x67,0x77,0xa1,0xe4,0x0c,0x11,"CLSID_WICPngDecoder2"); - IF_GUID_EQUAL_RETURN(guid,0x389ea17b,0x5078,0x4cde,0xb6,0xef,0x25,0xc1,0x51,0x75,0xc7,0x51,"CLSID_WICPngDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x27949969,0x876a,0x41d7,0x94,0x47,0x56,0x8f,0x6a,0x35,0xa4,0xdc,"CLSID_WICPngEncoder"); - IF_GUID_EQUAL_RETURN(guid,0x3692CA39,0xE082,0x4350,0x9E,0x1F,0x37,0x4,0xCB,0x8,0x3C,0xD5,"CLSID_WICPngGamaMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xFF036D13,0x5D4B,0x46DD,0xB1,0xF,0x10,0x66,0x93,0xD9,0xFE,0x4F,"CLSID_WICPngGamaMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x877A0BB7,0xA313,0x4491,0x87,0xB5,0x2E,0x6D,0x5,0x94,0xF5,0x20,"CLSID_WICPngHistMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x8A03E749,0x672E,0x446E,0xBF,0x1F,0x2C,0x11,0xD2,0x33,0xB6,0xFF,"CLSID_WICPngHistMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xF5D3E63B,0xCB0F,0x4628,0xA4,0x78,0x6D,0x82,0x44,0xBE,0x36,0xB1,"CLSID_WICPngIccpMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x16671E5F,0xCE6,0x4CC4,0x97,0x68,0xE8,0x9F,0xE5,0x1,0x8A,0xDE,"CLSID_WICPngIccpMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xAABFB2FA,0x3E1E,0x4A8F,0x89,0x77,0x55,0x56,0xFB,0x94,0xEA,0x23,"CLSID_WICPngItxtMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x31879719,0xE751,0x4DF8,0x98,0x1D,0x68,0xDF,0xF6,0x77,0x4,0xED,"CLSID_WICPngItxtMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xFB40360C,0x547E,0x4956,0xA3,0xB9,0xD4,0x41,0x88,0x59,0xBA,0x66,"CLSID_WICPngSrgbMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xA6EE35C6,0x87EC,0x47DF,0x9F,0x22,0x1D,0x5A,0xAD,0x84,0xC,0x82,"CLSID_WICPngSrgbMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x4b59afcc,0xb8c3,0x408a,0xb6,0x70,0x89,0xe5,0xfa,0xb6,0xfd,0xa7,"CLSID_WICPngTextMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xb5ebafb9,0x253e,0x4a72,0xa7,0x44,0x7,0x62,0xd2,0x68,0x56,0x83,"CLSID_WICPngTextMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xD94EDF02,0xEFE5,0x4F0D,0x85,0xC8,0xF5,0xA6,0x8B,0x30,0x0,0xB1,"CLSID_WICPngTimeMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x1AB78400,0xB5A3,0x4D91,0x8A,0xCE,0x33,0xFC,0xD1,0x49,0x9B,0xE6,"CLSID_WICPngTimeMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x50D42F09,0xECD1,0x4B41,0xB6,0x5D,0xDA,0x1F,0xDA,0xA7,0x56,0x63,"CLSID_WICSubIfdMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x8ADE5386,0x8E9B,0x4F4C,0xAC,0xF2,0xF0,0x00,0x87,0x06,0xB2,0x38,"CLSID_WICSubIfdMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xfb012959,0xf4f6,0x44d7,0x9d,0x9,0xda,0xa0,0x87,0xa9,0xdb,0x57,"CLSID_WICThumbnailMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xd049b20c,0x5dd0,0x44fe,0xb0,0xb3,0x8f,0x92,0xc8,0xe6,0xd0,0x80,"CLSID_WICThumbnailMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xb54e85d9,0xfe23,0x499f,0x8b,0x88,0x6a,0xce,0xa7,0x13,0x75,0x2b,"CLSID_WICTiffDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x0131be10,0x2001,0x4c5f,0xa9,0xb0,0xcc,0x88,0xfa,0xb6,0x4c,0xe8,"CLSID_WICTiffEncoder"); - IF_GUID_EQUAL_RETURN(guid,0x699745c2,0x5066,0x4b82,0xa8,0xe3,0xd4,0x4,0x78,0xdb,0xec,0x8c,"CLSID_WICUnknownMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xa09cca86,0x27ba,0x4f39,0x90,0x53,0x12,0x1f,0xa4,0xdc,0x8,0xfc,"CLSID_WICUnknownMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xa26cec36,0x234c,0x4950,0xae,0x16,0xe3,0x4a,0xac,0xe7,0x1d,0x0d,"CLSID_WICWmpDecoder"); - IF_GUID_EQUAL_RETURN(guid,0xac4ce3cb,0xe1c1,0x44cd,0x82,0x15,0x5a,0x16,0x65,0x50,0x9e,0xc2,"CLSID_WICWmpEncoder"); - IF_GUID_EQUAL_RETURN(guid,0xAA94DCC2,0xB8B0,0x4898,0xB8,0x35,0x00,0x0A,0xAB,0xD7,0x43,0x93,"CLSID_WICXMPAltMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x076C2A6C,0xF78F,0x4C46,0xA7,0x23,0x35,0x83,0xE7,0x08,0x76,0xEA,"CLSID_WICXMPAltMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0xE7E79A30,0x4F2C,0x4FAB,0x8D,0x00,0x39,0x4F,0x2D,0x6B,0xBE,0xBE,"CLSID_WICXMPBagMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0xED822C8C,0xD6BE,0x4301,0xA6,0x31,0x0E,0x14,0x16,0xBA,0xD2,0x8F,"CLSID_WICXMPBagMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x72B624DF,0xAE11,0x4948,0xA6,0x5C,0x35,0x1E,0xB0,0x82,0x94,0x19,"CLSID_WICXMPMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x1765E14E,0x1BD4,0x462E,0xB6,0xB1,0x59,0x0B,0xF1,0x26,0x2A,0xC6,"CLSID_WICXMPMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x7F12E753,0xFC71,0x43D7,0xA5,0x1D,0x92,0xF3,0x59,0x77,0xAB,0xB5,"CLSID_WICXMPSeqMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x6D68D1DE,0xD432,0x4B0F,0x92,0x3A,0x09,0x11,0x83,0xA9,0xBD,0xA7,"CLSID_WICXMPSeqMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x01B90D9A,0x8209,0x47F7,0x9C,0x52,0xE1,0x24,0x4B,0xF5,0x0C,0xED,"CLSID_WICXMPStructMetadataReader"); - IF_GUID_EQUAL_RETURN(guid,0x22C21F93,0x7DDB,0x411C,0x9B,0x17,0xC5,0xB7,0xBD,0x06,0x4A,0xBC,"CLSID_WICXMPStructMetadataWriter"); - IF_GUID_EQUAL_RETURN(guid,0x187463a0,0x5bb7,0x11d3,0xac,0xbe,0x0,0x80,0xc7,0x5e,0x24,0x6e,"CLSID_WMAsfReader"); - IF_GUID_EQUAL_RETURN(guid,0x7c23220e,0x55bb,0x11d3,0x8b,0x16,0x0,0xc0,0x4f,0xb6,0xbd,0x3d,"CLSID_WMAsfWriter"); - IF_GUID_EQUAL_RETURN(guid,0xaf6060aa,0x5197,0x11d2,0xb6,0xaf,0x00,0xc0,0x4f,0xd9,0x08,0xe9,"CLSID_WMBandwidthSharing_Exclusive"); - IF_GUID_EQUAL_RETURN(guid,0xaf6060ab,0x5197,0x11d2,0xb6,0xaf,0x00,0xc0,0x4f,0xd9,0x08,0xe9,"CLSID_WMBandwidthSharing_Partial"); - IF_GUID_EQUAL_RETURN(guid,0x8948BB22,0x11BD,0x4796,0x93,0xE3,0x97,0x4D,0x1B,0x57,0x56,0x78,"CLSID_WMDRMSystemID"); - IF_GUID_EQUAL_RETURN(guid,0xD6E22A01,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE,"CLSID_WMMUTEX_Bitrate"); - IF_GUID_EQUAL_RETURN(guid,0xD6E22A00,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE,"CLSID_WMMUTEX_Language"); - IF_GUID_EQUAL_RETURN(guid,0xD6E22A02,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE,"CLSID_WMMUTEX_Presentation"); - IF_GUID_EQUAL_RETURN(guid,0xD6E22A03,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE,"CLSID_WMMUTEX_Unknown"); - IF_GUID_EQUAL_RETURN(guid,0x5569e7f5,0x424b,0x4b93,0x89,0xca,0x79,0xd1,0x79,0x24,0x68,0x9a,"CLSID_WMPMediaPluginRegistrar"); - IF_GUID_EQUAL_RETURN(guid,0xB2A7FD52,0x301F,0x4348,0xB9,0x3A,0x63,0x8C,0x6D,0xE4,0x92,0x29,"CLSID_WMPSkinManager"); - IF_GUID_EQUAL_RETURN(guid,0x70bc06e0,0x5666,0x11d3,0xa1,0x84,0x0,0x10,0x5a,0xef,0x9f,0x33,"CLSID_WSTDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x61738644,0xF196,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1,"CLSID_WamAdmin"); - IF_GUID_EQUAL_RETURN(guid,0x650503cf,0x9108,0x4ddc,0xa2,0xce,0x6c,0x23,0x41,0xe1,0xc5,0x82,"CLSID_WebProxy"); - IF_GUID_EQUAL_RETURN(guid,0xD4F4D30B,0x0B29,0x4508,0x89,0x22,0x0C,0x57,0x97,0xD4,0x27,0x65,"CLSID_WiaDefaultSegFilter"); - IF_GUID_EQUAL_RETURN(guid,0xC2E88C2F,0x6F5B,0x4AAA,0x89,0x4B,0x55,0xC8,0x47,0xAD,0x3A,0x2D,"CLSID_WindowsUpdateAgentInfo"); - IF_GUID_EQUAL_RETURN(guid,0x4e27f80,0x91e4,0x11d3,0xa1,0x84,0x0,0x10,0x5a,0xef,0x9f,0x33,"CLSID_WstDecoderPropertyPage"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C483,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"CLSID_XDSCodecProperties"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C493,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"CLSID_XDSCodecTagProperties"); - IF_GUID_EQUAL_RETURN(guid,0xfe6b11c3,0xc72e,0x4061,0x86,0xc6,0x9d,0x16,0x31,0x21,0xf2,0x29,"CLSID_XFeedsManager"); - IF_GUID_EQUAL_RETURN(guid,0x6a577e92,0x83e1,0x4113,0xad,0xc2,0x4f,0xce,0xc3,0x2f,0x83,0xa1,"CODECAPI_ALLSETTINGS"); - IF_GUID_EQUAL_RETURN(guid,0xb9d19a3e,0xf897,0x429c,0xbc,0x46,0x81,0x38,0xb7,0x27,0x2b,0x2d,"CODECAPI_AUDIO_ENCODER"); - IF_GUID_EQUAL_RETURN(guid,0x17f89cb3,0xc38d,0x4368,0x9e,0xde,0x63,0xb9,0x4d,0x17,0x7f,0x9f,"CODECAPI_AVAudioChannelConfig"); - IF_GUID_EQUAL_RETURN(guid,0x1d3583c4,0x1583,0x474e,0xb7,0x1a,0x5e,0xe4,0x63,0xc1,0x98,0xe4,"CODECAPI_AVAudioChannelCount"); - IF_GUID_EQUAL_RETURN(guid,0x971d2723,0x1acb,0x42e7,0x85,0x5c,0x52,0x0a,0x4b,0x70,0xa5,0xf2,"CODECAPI_AVAudioSampleRate"); - IF_GUID_EQUAL_RETURN(guid,0x99f2f386,0x98d1,0x4452,0xa1,0x63,0xab,0xc7,0x8a,0x6e,0xb7,0x70,"CODECAPI_AVDDSurroundMode"); - IF_GUID_EQUAL_RETURN(guid,0x8afd1a15,0x1812,0x4cbf,0x93,0x19,0x43,0x3a,0x5b,0x2a,0x3b,0x27,"CODECAPI_AVDSPLoudnessEqualization"); - IF_GUID_EQUAL_RETURN(guid,0x5612bca1,0x56da,0x4582,0x8d,0xa1,0xca,0x80,0x90,0xf9,0x27,0x68,"CODECAPI_AVDSPSpeakerFill"); - IF_GUID_EQUAL_RETURN(guid,0x1274475,0xf6bb,0x4017,0xb0,0x84,0x81,0xa7,0x63,0xc9,0x42,0xd4,"CODECAPI_AVDecAACDownmixMode"); - IF_GUID_EQUAL_RETURN(guid,0x4a52cda8,0x30f8,0x4216,0xbe,0x0f,0xba,0x0b,0x20,0x25,0x92,0x1d,"CODECAPI_AVDecAudioDualMono"); - IF_GUID_EQUAL_RETURN(guid,0xa5106186,0xcc94,0x4bc9,0x8c,0xd9,0xaa,0x2f,0x61,0xf6,0x80,0x7e,"CODECAPI_AVDecAudioDualMonoReproMode"); - IF_GUID_EQUAL_RETURN(guid,0xe5005239,0xbd89,0x4be3,0x9c,0x0f,0x5d,0xde,0x31,0x79,0x88,0xcc,"CODECAPI_AVDecCommonInputFormat"); - IF_GUID_EQUAL_RETURN(guid,0x59488217,0x007a,0x4f7a,0x8e,0x41,0x5c,0x48,0xb1,0xea,0xc5,0xc6,"CODECAPI_AVDecCommonMeanBitRate"); - IF_GUID_EQUAL_RETURN(guid,0x0ee437c6,0x38a7,0x4c5c,0x94,0x4c,0x68,0xab,0x42,0x11,0x6b,0x85,"CODECAPI_AVDecCommonMeanBitRateInterval"); - IF_GUID_EQUAL_RETURN(guid,0x3c790028,0xc0ce,0x4256,0xb1,0xa2,0x1b,0x0f,0xc8,0xb1,0xdc,0xdc,"CODECAPI_AVDecCommonOutputFormat"); - IF_GUID_EQUAL_RETURN(guid,0x50196c21,0x1f33,0x4af5,0xb2,0x96,0x11,0x42,0x6d,0x6c,0x87,0x89,"CODECAPI_AVDecDDDynamicRangeScaleHigh"); - IF_GUID_EQUAL_RETURN(guid,0x044e62e4,0x11a5,0x42d5,0xa3,0xb2,0x3b,0xb2,0xc7,0xc2,0xd7,0xcf,"CODECAPI_AVDecDDDynamicRangeScaleLow"); - IF_GUID_EQUAL_RETURN(guid,0xddc811a5,0x04ed,0x4bf3,0xa0,0xca,0xd0,0x04,0x49,0xf9,0x35,0x5f,"CODECAPI_AVDecDDMatrixDecodingMode"); - IF_GUID_EQUAL_RETURN(guid,0xd6d6c6d1,0x064e,0x4fdd,0xa4,0x0e,0x3e,0xcb,0xfc,0xb7,0xeb,0xd0,"CODECAPI_AVDecDDOperationalMode"); - IF_GUID_EQUAL_RETURN(guid,0x6ce4122c,0x3ee9,0x4182,0xb4,0xae,0xc1,0x0f,0xc0,0x88,0x64,0x9d,"CODECAPI_AVDecDDStereoDownMixMode"); - IF_GUID_EQUAL_RETURN(guid,0x287c8abe,0x69a4,0x4d39,0x80,0x80,0xd3,0xd9,0x71,0x21,0x78,0xa0,"CODECAPI_AVDecHEAACDynamicRangeControl");; - IF_GUID_EQUAL_RETURN(guid,0xe0ad4828,0xdf66,0x4893,0x9f,0x33,0x78,0x8a,0xa4,0xec,0x40,0x82,"CODECAPI_AVDecMmcssClass"); - IF_GUID_EQUAL_RETURN(guid,0x9561c3e8,0xea9e,0x4435,0x9b,0x1e,0xa9,0x3e,0x69,0x18,0x94,0xd8,"CODECAPI_AVDecNumWorkerThreads"); - IF_GUID_EQUAL_RETURN(guid,0x862e2f0a,0x507b,0x47ff,0xaf,0x47,0x1,0xe2,0x62,0x42,0x98,0xb7,"CODECAPI_AVDecSoftwareDynamicFormatChange"); - IF_GUID_EQUAL_RETURN(guid,0xf7db8a2f,0x4f48,0x4ee8,0xae,0x31,0x8b,0x6e,0xbe,0x55,0x8a,0xe2,"CODECAPI_AVDecVideoAcceleration_H264"); - IF_GUID_EQUAL_RETURN(guid,0xf7db8a2e,0x4f48,0x4ee8,0xae,0x31,0x8b,0x6e,0xbe,0x55,0x8a,0xe2,"CODECAPI_AVDecVideoAcceleration_MPEG2"); - IF_GUID_EQUAL_RETURN(guid,0xf7db8a30,0x4f48,0x4ee8,0xae,0x31,0x8b,0x6e,0xbe,0x55,0x8a,0xe2,"CODECAPI_AVDecVideoAcceleration_VC1"); - IF_GUID_EQUAL_RETURN(guid,0x434528e5,0x21f0,0x46b6,0xb6,0x2c,0x9b,0x1b,0x6b,0x65,0x8c,0xd1,"CODECAPI_AVDecVideoCodecType");; - IF_GUID_EQUAL_RETURN(guid,0x42153c8b,0xfd0b,0x4765,0xa4,0x62,0xdd,0xd9,0xe8,0xbc,0xc3,0x88,"CODECAPI_AVDecVideoDXVABusEncryption");; - IF_GUID_EQUAL_RETURN(guid,0xf758f09e,0x7337,0x4ae7,0x83,0x87,0x73,0xdc,0x2d,0x54,0xe6,0x7d,"CODECAPI_AVDecVideoDXVAMode");; - IF_GUID_EQUAL_RETURN(guid,0xf8226383,0x14c2,0x4567,0x97,0x34,0x50,0x4,0xe9,0x6f,0xf8,0x87,"CODECAPI_AVDecVideoDropPicWithMissingRef"); - IF_GUID_EQUAL_RETURN(guid,0x6b529f7d,0xd3b1,0x49c6,0xa9,0x99,0x9e,0xc6,0x91,0x1b,0xed,0xbf,"CODECAPI_AVDecVideoFastDecodeMode");; - IF_GUID_EQUAL_RETURN(guid,0xececace8,0x3436,0x462c,0x92,0x94,0xcd,0x7b,0xac,0xd7,0x58,0xa9,"CODECAPI_AVDecVideoH264ErrorConcealment"); - IF_GUID_EQUAL_RETURN(guid,0x5ee5747c,0x6801,0x4cab,0xaa,0xf1,0x62,0x48,0xfa,0x84,0x1b,0xa4,"CODECAPI_AVDecVideoImageSize"); - IF_GUID_EQUAL_RETURN(guid,0x38477e1f,0x0ea7,0x42cd,0x8c,0xd1,0x13,0x0c,0xed,0x57,0xc5,0x80,"CODECAPI_AVDecVideoInputScanType"); - IF_GUID_EQUAL_RETURN(guid,0x9d2bfe18,0x728d,0x48d2,0xb3,0x58,0xbc,0x7e,0x43,0x6c,0x66,0x74,"CODECAPI_AVDecVideoMPEG2ErrorConcealment"); - IF_GUID_EQUAL_RETURN(guid,0x7262a16a,0xd2dc,0x4e75,0x9b,0xa8,0x65,0xc0,0xc6,0xd3,0x2b,0x13,"CODECAPI_AVDecVideoMaxCodedHeight"); - IF_GUID_EQUAL_RETURN(guid,0x5ae557b8,0x77af,0x41f5,0x9f,0xa6,0x4d,0xb2,0xfe,0x1d,0x4b,0xca,"CODECAPI_AVDecVideoMaxCodedWidth"); - IF_GUID_EQUAL_RETURN(guid,0xb0cf8245,0xf32d,0x41df,0xb0,0x2c,0x87,0xbd,0x30,0x4d,0x12,0xab,"CODECAPI_AVDecVideoPixelAspectRatio"); - IF_GUID_EQUAL_RETURN(guid,0xf7db8a31,0x4f48,0x4ee8,0xae,0x31,0x8b,0x6e,0xbe,0x55,0x8a,0xe2,"CODECAPI_AVDecVideoProcDeinterlaceCSC"); - IF_GUID_EQUAL_RETURN(guid,0xfb5d2347,0x4dd8,0x4509,0xae,0xd0,0xdb,0x5f,0xa9,0xaa,0x93,0xf4,"CODECAPI_AVDecVideoSWPowerLevel"); - IF_GUID_EQUAL_RETURN(guid,0x0c08d1ce,0x9ced,0x4540,0xba,0xe3,0xce,0xb3,0x80,0x14,0x11,0x09,"CODECAPI_AVDecVideoSoftwareDeinterlaceMode");; - IF_GUID_EQUAL_RETURN(guid,0x2efd8eee,0x1150,0x4328,0x9c,0xf5,0x66,0xdc,0xe9,0x33,0xfc,0xf4,"CODECAPI_AVDecVideoThumbnailGenerationMode"); - IF_GUID_EQUAL_RETURN(guid,0x4419b185,0xda1f,0x4f53,0xbc,0x76,0x9,0x7d,0xc,0x1e,0xfb,0x1e,"CODECAPI_AVEncAdaptiveMode"); - IF_GUID_EQUAL_RETURN(guid,0x3648126b,0xa3e8,0x4329,0x9b,0x3a,0x5c,0xe5,0x66,0xa4,0x3b,0xd3,"CODECAPI_AVEncAudioDualMono"); - IF_GUID_EQUAL_RETURN(guid,0x3e226c2b,0x60b9,0x4a39,0xb0,0x0b,0xa7,0xb4,0x0f,0x70,0xd5,0x66,"CODECAPI_AVEncAudioInputContent"); - IF_GUID_EQUAL_RETURN(guid,0x866e4b4d,0x725a,0x467c,0xbb,0x01,0xb4,0x96,0xb2,0x3b,0x25,0xf9,"CODECAPI_AVEncAudioIntervalToEncode"); - IF_GUID_EQUAL_RETURN(guid,0x88c15f94,0xc38c,0x4796,0xa9,0xe8,0x96,0xe9,0x67,0x98,0x3f,0x26,"CODECAPI_AVEncAudioIntervalToSkip"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b60,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel0"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b6a,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel10"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b6b,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel11"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b6c,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel12"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b6d,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel13"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b6e,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel14"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b6f,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel15"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b61,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel1"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b62,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel2"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b63,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel3"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b64,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel4"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b65,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel5"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b66,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel6"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b67,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel7"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b68,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel8"); - IF_GUID_EQUAL_RETURN(guid,0xbc5d0b69,0xdf6a,0x4e16,0x98,0x03,0xb8,0x20,0x07,0xa3,0x0c,0x8d,"CODECAPI_AVEncAudioMapDestChannel9"); - IF_GUID_EQUAL_RETURN(guid,0x921295bb,0x4fca,0x4679,0xaa,0xb8,0x9e,0x2a,0x1d,0x75,0x33,0x84,"CODECAPI_AVEncAudioMeanBitRate"); - IF_GUID_EQUAL_RETURN(guid,0x08af4ac1,0xf3f2,0x4c74,0x9d,0xcf,0x37,0xf2,0xec,0x79,0xf8,0x26,"CODECAPI_AVEncCodecType"); - IF_GUID_EQUAL_RETURN(guid,0xd9c5c8db,0xfc74,0x4064,0x94,0xe9,0xcd,0x19,0xf9,0x47,0xed,0x45,"CODECAPI_AVEncCommonBufferInLevel"); - IF_GUID_EQUAL_RETURN(guid,0xccae7f49,0xd0bc,0x4e3d,0xa5,0x7e,0xfb,0x57,0x40,0x14,0x00,0x69,"CODECAPI_AVEncCommonBufferOutLevel"); - IF_GUID_EQUAL_RETURN(guid,0x0db96574,0xb6a4,0x4c8b,0x81,0x06,0x37,0x73,0xde,0x03,0x10,0xcd,"CODECAPI_AVEncCommonBufferSize"); - IF_GUID_EQUAL_RETURN(guid,0x57cbb9b8,0x116f,0x4951,0xb4,0x0c,0xc2,0xa0,0x35,0xed,0x8f,0x17,"CODECAPI_AVEncCommonFormatConstraint"); - IF_GUID_EQUAL_RETURN(guid,0x9d3ecd55,0x89e8,0x490a,0x97,0x0a,0x0c,0x95,0x48,0xd5,0xa5,0x6e,"CODECAPI_AVEncCommonLowLatency"); - IF_GUID_EQUAL_RETURN(guid,0x9651eae4,0x39b9,0x4ebf,0x85,0xef,0xd7,0xf4,0x44,0xec,0x74,0x65,"CODECAPI_AVEncCommonMaxBitRate"); - IF_GUID_EQUAL_RETURN(guid,0xf7222374,0x2144,0x4815,0xb5,0x50,0xa3,0x7f,0x8e,0x12,0xee,0x52,"CODECAPI_AVEncCommonMeanBitRate"); - IF_GUID_EQUAL_RETURN(guid,0xbfaa2f0c,0xcb82,0x4bc0,0x84,0x74,0xf0,0x6a,0x8a,0x0d,0x02,0x58,"CODECAPI_AVEncCommonMeanBitRateInterval"); - IF_GUID_EQUAL_RETURN(guid,0x101405b2,0x2083,0x4034,0xa8,0x06,0xef,0xbe,0xdd,0xd7,0xc9,0xff,"CODECAPI_AVEncCommonMinBitRate"); - IF_GUID_EQUAL_RETURN(guid,0x22533d4c,0x47e1,0x41b5,0x93,0x52,0xa2,0xb7,0x78,0x0e,0x7a,0xc4,"CODECAPI_AVEncCommonMultipassMode"); - IF_GUID_EQUAL_RETURN(guid,0x0e3d01bc,0xc85c,0x467d,0x8b,0x60,0xc4,0x10,0x12,0xee,0x3b,0xf6,"CODECAPI_AVEncCommonPassEnd"); - IF_GUID_EQUAL_RETURN(guid,0x6a67739f,0x4eb5,0x4385,0x99,0x28,0xf2,0x76,0xa9,0x39,0xef,0x95,"CODECAPI_AVEncCommonPassStart"); - IF_GUID_EQUAL_RETURN(guid,0xfcbf57a3,0x7ea5,0x4b0c,0x96,0x44,0x69,0xb4,0x0c,0x39,0xc3,0x91,"CODECAPI_AVEncCommonQuality"); - IF_GUID_EQUAL_RETURN(guid,0x98332df8,0x03cd,0x476b,0x89,0xfa,0x3f,0x9e,0x44,0x2d,0xec,0x9f,"CODECAPI_AVEncCommonQualityVsSpeed"); - IF_GUID_EQUAL_RETURN(guid,0x1c0608e9,0x370c,0x4710,0x8a,0x58,0xcb,0x61,0x81,0xc4,0x24,0x23,"CODECAPI_AVEncCommonRateControlMode"); - IF_GUID_EQUAL_RETURN(guid,0x143a0ff6,0xa131,0x43da,0xb8,0x1e,0x98,0xfb,0xb8,0xec,0x37,0x8e,"CODECAPI_AVEncCommonRealTime"); - IF_GUID_EQUAL_RETURN(guid,0x6aad30af,0x6ba8,0x4ccc,0x8f,0xca,0x18,0xd1,0x9b,0xea,0xeb,0x1c,"CODECAPI_AVEncCommonStreamEndHandling"); - IF_GUID_EQUAL_RETURN(guid,0x6947787C,0xF508,0x4EA9,0xB1,0xE9,0xA1,0xFE,0x3A,0x49,0xFB,0xC9,"CODECAPI_AVEncCommonTranscodeEncodingProfile"); - IF_GUID_EQUAL_RETURN(guid,0x719f9612,0x81a1,0x47e0,0x9a,0x05,0xd9,0x4a,0xd5,0xfc,0xa9,0x48,"CODECAPI_AVEncDDAtoDConverterType"); - IF_GUID_EQUAL_RETURN(guid,0xe285072c,0xc958,0x4a81,0xaf,0xd2,0xe5,0xe0,0xda,0xf1,0xb1,0x48,"CODECAPI_AVEncDDCentreDownMixLevel"); - IF_GUID_EQUAL_RETURN(guid,0xe197821d,0xd2e7,0x43e2,0xad,0x2c,0x00,0x58,0x2f,0x51,0x85,0x45,"CODECAPI_AVEncDDChannelBWLowPassFilter"); - IF_GUID_EQUAL_RETURN(guid,0x8694f076,0xcd75,0x481d,0xa5,0xc6,0xa9,0x04,0xdc,0xc8,0x28,0xf0,"CODECAPI_AVEncDDCopyright"); - IF_GUID_EQUAL_RETURN(guid,0x9565239f,0x861c,0x4ac8,0xbf,0xda,0xe0,0x0c,0xb4,0xdb,0x85,0x48,"CODECAPI_AVEncDDDCHighPassFilter"); - IF_GUID_EQUAL_RETURN(guid,0xd7055acf,0xf125,0x437d,0xa7,0x04,0x79,0xc7,0x9f,0x04,0x04,0xa8,"CODECAPI_AVEncDDDialogNormalization"); - IF_GUID_EQUAL_RETURN(guid,0xe024a2c2,0x947c,0x45ac,0x87,0xd8,0xf1,0x03,0x0c,0x5c,0x00,0x82,"CODECAPI_AVEncDDDigitalDeemphasis"); - IF_GUID_EQUAL_RETURN(guid,0xcfc2ff6d,0x79b8,0x4b8d,0xa8,0xaa,0xa0,0xc9,0xbd,0x1c,0x29,0x40,"CODECAPI_AVEncDDDynamicRangeCompressionControl"); - IF_GUID_EQUAL_RETURN(guid,0x4052dbec,0x52f5,0x42f5,0x9b,0x00,0xd1,0x34,0xb1,0x34,0x1b,0x9d,"CODECAPI_AVEncDDHeadphoneMode"); - IF_GUID_EQUAL_RETURN(guid,0xd3b80f6f,0x9d15,0x45e5,0x91,0xbe,0x01,0x9c,0x3f,0xab,0x1f,0x01,"CODECAPI_AVEncDDLFELowPassFilter"); - IF_GUID_EQUAL_RETURN(guid,0x1cfba222,0x25b3,0x4bf4,0x9b,0xfd,0xe7,0x11,0x12,0x67,0x85,0x8c,"CODECAPI_AVEncDDLoRoCenterMixLvl_x10"); - IF_GUID_EQUAL_RETURN(guid,0xe725cff6,0xeb56,0x40c7,0x84,0x50,0x2b,0x93,0x67,0xe9,0x15,0x55,"CODECAPI_AVEncDDLoRoSurroundMixLvl_x10"); - IF_GUID_EQUAL_RETURN(guid,0xdca128a2,0x491f,0x4600,0xb2,0xda,0x76,0xe3,0x34,0x4b,0x41,0x97,"CODECAPI_AVEncDDLtRtCenterMixLvl_x10"); - IF_GUID_EQUAL_RETURN(guid,0x212246c7,0x3d2c,0x4dfa,0xbc,0x21,0x65,0x2a,0x90,0x98,0x69,0x0d,"CODECAPI_AVEncDDLtRtSurroundMixLvl_x10"); - IF_GUID_EQUAL_RETURN(guid,0x966ae800,0x5bd3,0x4ff9,0x95,0xb9,0xd3,0x05,0x66,0x27,0x38,0x56,"CODECAPI_AVEncDDOriginalBitstream"); - IF_GUID_EQUAL_RETURN(guid,0x7f4e6b31,0x9185,0x403d,0xb0,0xa2,0x76,0x37,0x43,0xe6,0xf0,0x63,"CODECAPI_AVEncDDPreferredStereoDownMixMode"); - IF_GUID_EQUAL_RETURN(guid,0xb0b7fe5f,0xb6ab,0x4f40,0x96,0x4d,0x8d,0x91,0xf1,0x7c,0x19,0xe8,"CODECAPI_AVEncDDProductionInfoExists"); - IF_GUID_EQUAL_RETURN(guid,0x301d103a,0xcbf9,0x4776,0x88,0x99,0x7c,0x15,0xb4,0x61,0xab,0x26,"CODECAPI_AVEncDDProductionMixLevel"); - IF_GUID_EQUAL_RETURN(guid,0xdad7ad60,0x23d8,0x4ab7,0xa2,0x84,0x55,0x69,0x86,0xd8,0xa6,0xfe,"CODECAPI_AVEncDDProductionRoomType"); - IF_GUID_EQUAL_RETURN(guid,0x21af44c0,0x244e,0x4f3d,0xa2,0xcc,0x3d,0x30,0x68,0xb2,0xe7,0x3f,"CODECAPI_AVEncDDRFPreEmphasisFilter"); - IF_GUID_EQUAL_RETURN(guid,0xd2e1bec7,0x5172,0x4d2a,0xa5,0x0e,0x2f,0x3b,0x82,0xb1,0xdd,0xf8,"CODECAPI_AVEncDDService"); - IF_GUID_EQUAL_RETURN(guid,0x4d43b99d,0x31e2,0x48b9,0xbf,0x2e,0x5c,0xbf,0x1a,0x57,0x27,0x84,"CODECAPI_AVEncDDSurround3dBAttenuation"); - IF_GUID_EQUAL_RETURN(guid,0x25ecec9d,0x3553,0x42c0,0xbb,0x56,0xd2,0x57,0x92,0x10,0x4f,0x80,"CODECAPI_AVEncDDSurround90DegreeePhaseShift"); - IF_GUID_EQUAL_RETURN(guid,0x7b20d6e5,0x0bcf,0x4273,0xa4,0x87,0x50,0x6b,0x04,0x79,0x97,0xe9,"CODECAPI_AVEncDDSurroundDownMixLevel"); - IF_GUID_EQUAL_RETURN(guid,0x91607cee,0xdbdd,0x4eb6,0xbc,0xa2,0xaa,0xdf,0xaf,0xa3,0xdd,0x68,"CODECAPI_AVEncDDSurroundExMode"); - IF_GUID_EQUAL_RETURN(guid,0xee6cad62,0xd305,0x4248,0xa5,0xe,0xe1,0xb2,0x55,0xf7,0xca,0xf8,"CODECAPI_AVEncH264CABACEnable"); - IF_GUID_EQUAL_RETURN(guid,0xbfe29ec2,0x56c,0x4d68,0xa3,0x8d,0xae,0x59,0x44,0xc8,0x58,0x2e,"CODECAPI_AVEncH264PPSID"); - IF_GUID_EQUAL_RETURN(guid,0x50f38f51,0x2b79,0x40e3,0xb3,0x9c,0x7e,0x9f,0xa0,0x77,0x5,0x1,"CODECAPI_AVEncH264SPSID"); - IF_GUID_EQUAL_RETURN(guid,0xbede146d,0xb616,0x4dc7,0x92,0xb2,0xf5,0xd9,0xfa,0x92,0x98,0xf7,"CODECAPI_AVEncInputVideoSystem"); - IF_GUID_EQUAL_RETURN(guid,0xc7607ced,0x8cf1,0x4a99,0x83,0xa1,0xee,0x54,0x61,0xbe,0x35,0x74,"CODECAPI_AVEncMP12MuxDVDNavPacks"); - IF_GUID_EQUAL_RETURN(guid,0x157232b6,0xf809,0x474e,0x94,0x64,0xa7,0xf9,0x30,0x14,0xa8,0x17,"CODECAPI_AVEncMP12MuxEarliestPTS"); - IF_GUID_EQUAL_RETURN(guid,0x3433ad21,0x1b91,0x4a0b,0xb1,0x90,0x2b,0x77,0x06,0x3b,0x63,0xa4,"CODECAPI_AVEncMP12MuxInitialSCR"); - IF_GUID_EQUAL_RETURN(guid,0x35ceb711,0xf461,0x4b92,0xa4,0xef,0x17,0xb6,0x84,0x1e,0xd2,0x54,"CODECAPI_AVEncMP12MuxLargestPacketSize"); - IF_GUID_EQUAL_RETURN(guid,0xee047c72,0x4bdb,0x4a9d,0x8e,0x21,0x41,0x92,0x6c,0x82,0x3d,0xa7,"CODECAPI_AVEncMP12MuxMuxRate"); - IF_GUID_EQUAL_RETURN(guid,0xf7164a41,0xdced,0x4659,0xa8,0xf2,0xfb,0x69,0x3f,0x2a,0x4c,0xd0,"CODECAPI_AVEncMP12MuxNumStreams"); - IF_GUID_EQUAL_RETURN(guid,0xf916053a,0x1ce8,0x4faf,0xaa,0x0b,0xba,0x31,0xc8,0x00,0x34,0xb8,"CODECAPI_AVEncMP12MuxPackSize"); - IF_GUID_EQUAL_RETURN(guid,0xe40bd720,0x3955,0x4453,0xac,0xf9,0xb7,0x91,0x32,0xa3,0x8f,0xa0,"CODECAPI_AVEncMP12MuxPacketOverhead"); - IF_GUID_EQUAL_RETURN(guid,0x0fbb5752,0x1d43,0x47bf,0xbd,0x79,0xf2,0x29,0x3d,0x8c,0xe3,0x37,"CODECAPI_AVEncMP12MuxSysAudioLock"); - IF_GUID_EQUAL_RETURN(guid,0x7952ff45,0x9c0d,0x4822,0xbc,0x82,0x8a,0xd7,0x72,0xe0,0x29,0x93,"CODECAPI_AVEncMP12MuxSysCSPS"); - IF_GUID_EQUAL_RETURN(guid,0xcefb987e,0x894f,0x452e,0x8f,0x89,0xa4,0xef,0x8c,0xec,0x06,0x3a,"CODECAPI_AVEncMP12MuxSysFixed"); - IF_GUID_EQUAL_RETURN(guid,0x05f0428a,0xee30,0x489d,0xae,0x28,0x20,0x5c,0x72,0x44,0x67,0x10,"CODECAPI_AVEncMP12MuxSysRateBound"); - IF_GUID_EQUAL_RETURN(guid,0x35746903,0xb545,0x43e7,0xbb,0x35,0xc5,0xe0,0xa7,0xd5,0x09,0x3c,"CODECAPI_AVEncMP12MuxSysSTDBufferBound"); - IF_GUID_EQUAL_RETURN(guid,0xb8296408,0x2430,0x4d37,0xa2,0xa1,0x95,0xb3,0xe4,0x35,0xa9,0x1d,"CODECAPI_AVEncMP12MuxSysVideoLock"); - IF_GUID_EQUAL_RETURN(guid,0xd862212a,0x2015,0x45dd,0x9a,0x32,0x1b,0x3a,0xa8,0x82,0x05,0xa0,"CODECAPI_AVEncMP12MuxTargetPacketizer"); - IF_GUID_EQUAL_RETURN(guid,0xc8f4b0c1,0x094c,0x43c7,0x8e,0x68,0xa5,0x95,0x40,0x5a,0x6e,0xf8,"CODECAPI_AVEncMP12PktzCopyright"); - IF_GUID_EQUAL_RETURN(guid,0x2a4f2065,0x9a63,0x4d20,0xae,0x22,0x0a,0x1b,0xc8,0x96,0xa3,0x15,"CODECAPI_AVEncMP12PktzInitialPTS"); - IF_GUID_EQUAL_RETURN(guid,0x6b178416,0x31b9,0x4964,0x94,0xcb,0x6b,0xff,0x86,0x6c,0xdf,0x83,"CODECAPI_AVEncMP12PktzOriginal"); - IF_GUID_EQUAL_RETURN(guid,0xab71347a,0x1332,0x4dde,0xa0,0xe5,0xcc,0xf7,0xda,0x8a,0x0f,0x22,"CODECAPI_AVEncMP12PktzPacketSize"); - IF_GUID_EQUAL_RETURN(guid,0x0b751bd0,0x819e,0x478c,0x94,0x35,0x75,0x20,0x89,0x26,0xb3,0x77,"CODECAPI_AVEncMP12PktzSTDBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xc834d038,0xf5e8,0x4408,0x9b,0x60,0x88,0xf3,0x64,0x93,0xfe,0xdf,"CODECAPI_AVEncMP12PktzStreamID"); - IF_GUID_EQUAL_RETURN(guid,0xb16ade03,0x4b93,0x43d7,0xa5,0x50,0x90,0xb4,0xfe,0x22,0x45,0x37,"CODECAPI_AVEncMPACodingMode"); - IF_GUID_EQUAL_RETURN(guid,0xa6ae762a,0xd0a9,0x4454,0xb8,0xef,0xf2,0xdb,0xee,0xfd,0xd3,0xbd,"CODECAPI_AVEncMPACopyright"); - IF_GUID_EQUAL_RETURN(guid,0x2d59fcda,0xbf4e,0x4ed6,0xb5,0xdf,0x5b,0x03,0xb3,0x6b,0x0a,0x1f,"CODECAPI_AVEncMPAEmphasisType"); - IF_GUID_EQUAL_RETURN(guid,0x5e54b09e,0xb2e7,0x4973,0xa8,0x9b,0x0b,0x36,0x50,0xa3,0xbe,0xda,"CODECAPI_AVEncMPAEnableRedundancyProtection"); - IF_GUID_EQUAL_RETURN(guid,0x9d377230,0xf91b,0x453d,0x9c,0xe0,0x78,0x44,0x54,0x14,0xc2,0x2d,"CODECAPI_AVEncMPALayer"); - IF_GUID_EQUAL_RETURN(guid,0x3cfb7855,0x9cc9,0x47ff,0xb8,0x29,0xb3,0x67,0x86,0xc9,0x23,0x46,"CODECAPI_AVEncMPAOriginalBitstream"); - IF_GUID_EQUAL_RETURN(guid,0xafa505ce,0xc1e3,0x4e3d,0x85,0x1b,0x61,0xb7,0x00,0xe5,0xe6,0xcc,"CODECAPI_AVEncMPAPrivateUserBit"); - IF_GUID_EQUAL_RETURN(guid,0xa823178f,0x57df,0x4c7a,0xb8,0xfd,0xe5,0xec,0x88,0x87,0x70,0x8d,"CODECAPI_AVEncMPVAddSeqEndCode"); - IF_GUID_EQUAL_RETURN(guid,0x8d390aac,0xdc5c,0x4200,0xb5,0x7f,0x81,0x4d,0x04,0xba,0xba,0xb2,"CODECAPI_AVEncMPVDefaultBPictureCount"); - IF_GUID_EQUAL_RETURN(guid,0xacb5de96,0x7b93,0x4c2f,0x88,0x25,0xb0,0x29,0x5f,0xa9,0x3b,0xf4,"CODECAPI_AVEncMPVFrameFieldMode"); - IF_GUID_EQUAL_RETURN(guid,0xb1d5d4a6,0x3300,0x49b1,0xae,0x61,0xa0,0x99,0x37,0xab,0x0e,0x49,"CODECAPI_AVEncMPVGOPOpen"); - IF_GUID_EQUAL_RETURN(guid,0x993410d4,0x2691,0x4192,0x99,0x78,0x98,0xdc,0x26,0x03,0x66,0x9f,"CODECAPI_AVEncMPVGOPSInSeq"); - IF_GUID_EQUAL_RETURN(guid,0x95f31b26,0x95a4,0x41aa,0x93,0x03,0x24,0x6a,0x7f,0xc6,0xee,0xf1,"CODECAPI_AVEncMPVGOPSize"); - IF_GUID_EQUAL_RETURN(guid,0xc6412f84,0xc03f,0x4f40,0xa0,0x0c,0x42,0x93,0xdf,0x83,0x95,0xbb,"CODECAPI_AVEncMPVGenerateHeaderPicDispExt"); - IF_GUID_EQUAL_RETURN(guid,0x1b8464ab,0x944f,0x45f0,0xb7,0x4e,0x3a,0x58,0xda,0xd1,0x1f,0x37,"CODECAPI_AVEncMPVGenerateHeaderPicExt"); - IF_GUID_EQUAL_RETURN(guid,0x6437aa6f,0x5a3c,0x4de9,0x8a,0x16,0x53,0xd9,0xc4,0xad,0x32,0x6f,"CODECAPI_AVEncMPVGenerateHeaderSeqDispExt"); - IF_GUID_EQUAL_RETURN(guid,0xd5e78611,0x082d,0x4e6b,0x98,0xaf,0x0f,0x51,0xab,0x13,0x92,0x22,"CODECAPI_AVEncMPVGenerateHeaderSeqExt"); - IF_GUID_EQUAL_RETURN(guid,0x0722d62f,0xdd59,0x4a86,0x9c,0xd5,0x64,0x4f,0x8e,0x26,0x53,0xd8,"CODECAPI_AVEncMPVGenerateHeaderSeqScaleExt"); - IF_GUID_EQUAL_RETURN(guid,0xa0116151,0xcbc8,0x4af3,0x97,0xdc,0xd0,0x0c,0xce,0xb8,0x2d,0x79,"CODECAPI_AVEncMPVIntraDCPrecision"); - IF_GUID_EQUAL_RETURN(guid,0xa2b83ff5,0x1a99,0x405a,0xaf,0x95,0xc5,0x99,0x7d,0x55,0x8d,0x3a,"CODECAPI_AVEncMPVIntraVLCTable"); - IF_GUID_EQUAL_RETURN(guid,0x6ee40c40,0xa60c,0x41ef,0x8f,0x50,0x37,0xc2,0x24,0x9e,0x2c,0xb3,"CODECAPI_AVEncMPVLevel"); - IF_GUID_EQUAL_RETURN(guid,0xdabb534a,0x1d99,0x4284,0x97,0x5a,0xd9,0x0e,0x22,0x39,0xba,0xa1,"CODECAPI_AVEncMPVProfile"); - IF_GUID_EQUAL_RETURN(guid,0x2b79ebb7,0xf484,0x4af7,0xbb,0x58,0xa2,0xa1,0x88,0xc5,0xcb,0xbe,"CODECAPI_AVEncMPVQScaleType"); - IF_GUID_EQUAL_RETURN(guid,0x9eb9ecd4,0x018d,0x4ffd,0x8f,0x2d,0x39,0xe4,0x9f,0x07,0xb1,0x7a,"CODECAPI_AVEncMPVQuantMatrixChromaIntra"); - IF_GUID_EQUAL_RETURN(guid,0x1415b6b1,0x362a,0x4338,0xba,0x9a,0x1e,0xf5,0x87,0x03,0xc0,0x5b,"CODECAPI_AVEncMPVQuantMatrixChromaNonIntra"); - IF_GUID_EQUAL_RETURN(guid,0x9bea04f3,0x6621,0x442c,0x8b,0xa1,0x3a,0xc3,0x78,0x97,0x96,0x98,"CODECAPI_AVEncMPVQuantMatrixIntra"); - IF_GUID_EQUAL_RETURN(guid,0x87f441d8,0x0997,0x4beb,0xa0,0x8e,0x85,0x73,0xd4,0x09,0xcf,0x75,"CODECAPI_AVEncMPVQuantMatrixNonIntra"); - IF_GUID_EQUAL_RETURN(guid,0x7f8a478e,0x7bbb,0x4ae2,0xb2,0xfc,0x96,0xd1,0x7f,0xc4,0xa2,0xd6,"CODECAPI_AVEncMPVScanPattern"); - IF_GUID_EQUAL_RETURN(guid,0x552799f1,0xdb4c,0x405b,0x8a,0x3a,0xc9,0x3f,0x2d,0x06,0x74,0xdc,"CODECAPI_AVEncMPVSceneDetection"); - IF_GUID_EQUAL_RETURN(guid,0xec770cf3,0x6908,0x4b4b,0xaa,0x30,0x7f,0xb9,0x86,0x21,0x4f,0xea,"CODECAPI_AVEncMPVUseConcealmentMotionVectors"); - IF_GUID_EQUAL_RETURN(guid,0xcedd9e8f,0x34d3,0x44db,0xa1,0xd8,0xf8,0x15,0x20,0x25,0x4f,0x3e,"CODECAPI_AVEncMuxOutputStreamType"); - IF_GUID_EQUAL_RETURN(guid,0xb0c8bf60,0x16f7,0x4951,0xa3,0xb,0x1d,0xb1,0x60,0x92,0x93,0xd6,"CODECAPI_AVEncNumWorkerThreads"); - IF_GUID_EQUAL_RETURN(guid,0xca6724db,0x7059,0x4351,0x8b,0x43,0xf8,0x21,0x98,0x82,0x6a,0x14,"CODECAPI_AVEncStatAudioAverageBPS"); - IF_GUID_EQUAL_RETURN(guid,0x979272f8,0xd17f,0x4e32,0xbb,0x73,0x4e,0x73,0x1c,0x68,0xba,0x2d,"CODECAPI_AVEncStatAudioAveragePCMValue"); - IF_GUID_EQUAL_RETURN(guid,0xdce7fd34,0xdc00,0x4c16,0x82,0x1b,0x35,0xd9,0xeb,0x00,0xfb,0x1a,"CODECAPI_AVEncStatAudioPeakPCMValue"); - IF_GUID_EQUAL_RETURN(guid,0xca6724db,0x7059,0x4351,0x8b,0x43,0xf8,0x21,0x98,0x82,0x6a,0x14,"CODECAPI_AVEncStatAverageBPS"); - IF_GUID_EQUAL_RETURN(guid,0x3e5de533,0x9df7,0x438c,0x85,0x4f,0x9f,0x7d,0xd3,0x68,0x3d,0x34,"CODECAPI_AVEncStatCommonCompletedPasses"); - IF_GUID_EQUAL_RETURN(guid,0x0124ba9b,0xdc41,0x4826,0xb4,0x5f,0x18,0xac,0x01,0xb3,0xd5,0xa8,"CODECAPI_AVEncStatHardwareBandwidthUtilitization"); - IF_GUID_EQUAL_RETURN(guid,0x995dc027,0xcb95,0x49e6,0xb9,0x1b,0x59,0x67,0x75,0x3c,0xdc,0xb8,"CODECAPI_AVEncStatHardwareProcessorUtilitization"); - IF_GUID_EQUAL_RETURN(guid,0x32195fd3,0x590d,0x4812,0xa7,0xed,0x6d,0x63,0x9a,0x1f,0x97,0x11,"CODECAPI_AVEncStatMPVSkippedEmptyFrames"); - IF_GUID_EQUAL_RETURN(guid,0xd47f8d61,0x6f5a,0x4a26,0xbb,0x9f,0xcd,0x95,0x18,0x46,0x2b,0xcd,"CODECAPI_AVEncStatVideoCodedFrames"); - IF_GUID_EQUAL_RETURN(guid,0xbe747849,0x9ab4,0x4a63,0x98,0xfe,0xf1,0x43,0xf0,0x4f,0x8e,0xe9,"CODECAPI_AVEncStatVideoOutputFrameRate"); - IF_GUID_EQUAL_RETURN(guid,0xfdaa9916,0x119a,0x4222,0x9a,0xd6,0x3f,0x7c,0xab,0x99,0xcc,0x8b,"CODECAPI_AVEncStatVideoTotalFrames"); - IF_GUID_EQUAL_RETURN(guid,0x6aa6229f,0xd602,0x4b9d,0xb6,0x8c,0xc1,0xad,0x78,0x88,0x4b,0xef,"CODECAPI_AVEncStatWMVCBAvg"); - IF_GUID_EQUAL_RETURN(guid,0xe976bef8,0x00fe,0x44b4,0xb6,0x25,0x8f,0x23,0x8b,0xc0,0x34,0x99,"CODECAPI_AVEncStatWMVCBMax"); - IF_GUID_EQUAL_RETURN(guid,0x89e69fc3,0x0f9b,0x436c,0x97,0x4a,0xdf,0x82,0x12,0x27,0xc9,0x0d,"CODECAPI_AVEncStatWMVDecoderComplexityProfile"); - IF_GUID_EQUAL_RETURN(guid,0x0d49451e,0x18d5,0x4367,0xa4,0xef,0x32,0x40,0xdf,0x16,0x93,0xc4,"CODECAPI_AVEncVideoCBRMotionTradeoff"); - IF_GUID_EQUAL_RETURN(guid,0xb4b10c15,0x14a7,0x4ce8,0xb1,0x73,0xdc,0x90,0xa0,0xb4,0xfc,0xdb,"CODECAPI_AVEncVideoCodedVideoAccessUnitSize"); - IF_GUID_EQUAL_RETURN(guid,0x66117aca,0xeb77,0x459d,0x93,0xc,0xa4,0x8d,0x9d,0x6,0x83,0xfc,"CODECAPI_AVEncVideoContentType"); - IF_GUID_EQUAL_RETURN(guid,0x810167c4,0x0bc1,0x47ca,0x8f,0xc2,0x57,0x05,0x5a,0x14,0x74,0xa5,"CODECAPI_AVEncVideoDefaultUpperFieldDominant"); - IF_GUID_EQUAL_RETURN(guid,0xde053668,0xf4ec,0x47a9,0x86,0xd0,0x83,0x67,0x70,0xf0,0xc1,0xd5,"CODECAPI_AVEncVideoDisplayDimension"); - IF_GUID_EQUAL_RETURN(guid,0x1074df28,0x7e0f,0x47a4,0xa4,0x53,0xcd,0xd7,0x38,0x70,0xf5,0xce,"CODECAPI_AVEncVideoEncodeDimension"); - IF_GUID_EQUAL_RETURN(guid,0x6bc098fe,0xa71a,0x4454,0x85,0x2e,0x4d,0x2d,0xde,0xb2,0xcd,0x24,"CODECAPI_AVEncVideoEncodeOffsetOrigin"); - IF_GUID_EQUAL_RETURN(guid,0x2cb5696b,0x23fb,0x4ce1,0xa0,0xf9,0xef,0x5b,0x90,0xfd,0x55,0xca,"CODECAPI_AVEncVideoEncodeQP"); - IF_GUID_EQUAL_RETURN(guid,0xfefd7569,0x4e0a,0x49f2,0x9f,0x2b,0x36,0x0e,0xa4,0x8c,0x19,0xa2,"CODECAPI_AVEncVideoFieldSwap"); - IF_GUID_EQUAL_RETURN(guid,0x398c1b98,0x8353,0x475a,0x9e,0xf2,0x8f,0x26,0x5d,0x26,0x3,0x45,"CODECAPI_AVEncVideoForceKeyFrame"); - IF_GUID_EQUAL_RETURN(guid,0x1ef2065f,0x058a,0x4765,0xa4,0xfc,0x8a,0x86,0x4c,0x10,0x30,0x12,"CODECAPI_AVEncVideoForceSourceScanType"); - IF_GUID_EQUAL_RETURN(guid,0x6ed9e124,0x7925,0x43fe,0x97,0x1b,0xe0,0x19,0xf6,0x22,0x22,0xb4,"CODECAPI_AVEncVideoHeaderDropFrame"); - IF_GUID_EQUAL_RETURN(guid,0xafd5f567,0x5c1b,0x4adc,0xbd,0xaf,0x73,0x56,0x10,0x38,0x14,0x36,"CODECAPI_AVEncVideoHeaderFrames"); - IF_GUID_EQUAL_RETURN(guid,0x2acc7702,0xe2da,0x4158,0xbf,0x9b,0x88,0x88,0x01,0x29,0xd7,0x40,"CODECAPI_AVEncVideoHeaderHours"); - IF_GUID_EQUAL_RETURN(guid,0xdc1a99ce,0x0307,0x408b,0x88,0x0b,0xb8,0x34,0x8e,0xe8,0xca,0x7f,"CODECAPI_AVEncVideoHeaderMinutes"); - IF_GUID_EQUAL_RETURN(guid,0x4a2e1a05,0xa780,0x4f58,0x81,0x20,0x9a,0x44,0x9d,0x69,0x65,0x6b,"CODECAPI_AVEncVideoHeaderSeconds"); - IF_GUID_EQUAL_RETURN(guid,0xbb0cec33,0x16f1,0x47b0,0x8a,0x88,0x37,0x81,0x5b,0xee,0x17,0x39,"CODECAPI_AVEncVideoInputChromaResolution"); - IF_GUID_EQUAL_RETURN(guid,0xa8e73a39,0x4435,0x4ec3,0xa6,0xea,0x98,0x30,0x0f,0x4b,0x36,0xf7,"CODECAPI_AVEncVideoInputChromaSubsampling"); - IF_GUID_EQUAL_RETURN(guid,0x46a99549,0x0015,0x4a45,0x9c,0x30,0x1d,0x5c,0xfa,0x25,0x83,0x16,"CODECAPI_AVEncVideoInputColorLighting"); - IF_GUID_EQUAL_RETURN(guid,0x16cf25c6,0xa2a6,0x48e9,0xae,0x80,0x21,0xae,0xc4,0x1d,0x42,0x7e,"CODECAPI_AVEncVideoInputColorNominalRange"); - IF_GUID_EQUAL_RETURN(guid,0xc24d783f,0x7ce6,0x4278,0x90,0xab,0x28,0xa4,0xf1,0xe5,0xf8,0x6c,"CODECAPI_AVEncVideoInputColorPrimaries"); - IF_GUID_EQUAL_RETURN(guid,0x8c056111,0xa9c3,0x4b08,0xa0,0xa0,0xce,0x13,0xf8,0xa2,0x7c,0x75,"CODECAPI_AVEncVideoInputColorTransferFunction"); - IF_GUID_EQUAL_RETURN(guid,0x52ed68b9,0x72d5,0x4089,0x95,0x8d,0xf5,0x40,0x5d,0x55,0x08,0x1c,"CODECAPI_AVEncVideoInputColorTransferMatrix"); - IF_GUID_EQUAL_RETURN(guid,0x2ea9098b,0xe76d,0x4ccd,0xa0,0x30,0xd3,0xb8,0x89,0xc1,0xb6,0x4c,"CODECAPI_AVEncVideoInverseTelecineEnable"); - IF_GUID_EQUAL_RETURN(guid,0x40247d84,0xe895,0x497f,0xb4,0x4c,0xb7,0x45,0x60,0xac,0xfe,0x27,"CODECAPI_AVEncVideoInverseTelecineThreshold"); - IF_GUID_EQUAL_RETURN(guid,0x2987123a,0xba93,0x4704,0xb4,0x89,0xec,0x1e,0x5f,0x25,0x29,0x2c,"CODECAPI_AVEncVideoMaxKeyframeDistance"); - IF_GUID_EQUAL_RETURN(guid,0xee22c6a,0xa37c,0x4568,0xb5,0xf1,0x9d,0x4c,0x2b,0x3a,0xb8,0x86,"CODECAPI_AVEncVideoMinQP"); - IF_GUID_EQUAL_RETURN(guid,0x61e4bbe2,0x4ee0,0x40e7,0x80,0xab,0x51,0xdd,0xee,0xbe,0x62,0x91,"CODECAPI_AVEncVideoNoOfFieldsToEncode"); - IF_GUID_EQUAL_RETURN(guid,0xa97e1240,0x1427,0x4c16,0xa7,0xf7,0x3d,0xcf,0xd8,0xba,0x4c,0xc5,"CODECAPI_AVEncVideoNoOfFieldsToSkip"); - IF_GUID_EQUAL_RETURN(guid,0x6097b4c9,0x7c1d,0x4e64,0xbf,0xcc,0x9e,0x97,0x65,0x31,0x8a,0xe7,"CODECAPI_AVEncVideoOutputChromaResolution"); - IF_GUID_EQUAL_RETURN(guid,0xfa561c6c,0x7d17,0x44f0,0x83,0xc9,0x32,0xed,0x12,0xe9,0x63,0x43,"CODECAPI_AVEncVideoOutputChromaSubsampling"); - IF_GUID_EQUAL_RETURN(guid,0x0e5aaac6,0xace6,0x4c5c,0x99,0x8e,0x1a,0x8c,0x9c,0x6c,0x0f,0x89,"CODECAPI_AVEncVideoOutputColorLighting"); - IF_GUID_EQUAL_RETURN(guid,0x972835ed,0x87b5,0x4e95,0x95,0x00,0xc7,0x39,0x58,0x56,0x6e,0x54,"CODECAPI_AVEncVideoOutputColorNominalRange"); - IF_GUID_EQUAL_RETURN(guid,0xbe95907c,0x9d04,0x4921,0x89,0x85,0xa6,0xd6,0xd8,0x7d,0x1a,0x6c,"CODECAPI_AVEncVideoOutputColorPrimaries"); - IF_GUID_EQUAL_RETURN(guid,0x4a7f884a,0xea11,0x460d,0xbf,0x57,0xb8,0x8b,0xc7,0x59,0x00,0xde,"CODECAPI_AVEncVideoOutputColorTransferFunction"); - IF_GUID_EQUAL_RETURN(guid,0xa9b90444,0xaf40,0x4310,0x8f,0xbe,0xed,0x6d,0x93,0x3f,0x89,0x2b,"CODECAPI_AVEncVideoOutputColorTransferMatrix"); - IF_GUID_EQUAL_RETURN(guid,0xea85e7c3,0x9567,0x4d99,0x87,0xc4,0x02,0xc1,0xc2,0x78,0xca,0x7c,"CODECAPI_AVEncVideoOutputFrameRate"); - IF_GUID_EQUAL_RETURN(guid,0x8c068bf4,0x369a,0x4ba3,0x82,0xfd,0xb2,0x51,0x8f,0xb3,0x39,0x6e,"CODECAPI_AVEncVideoOutputFrameRateConversion"); - IF_GUID_EQUAL_RETURN(guid,0x460b5576,0x842e,0x49ab,0xa6,0x2d,0xb3,0x6f,0x73,0x12,0xc9,0xdb,"CODECAPI_AVEncVideoOutputScanType"); - IF_GUID_EQUAL_RETURN(guid,0x3cdc718f,0xb3e9,0x4eb6,0xa5,0x7f,0xcf,0x1f,0x1b,0x32,0x1b,0x87,"CODECAPI_AVEncVideoPixelAspectRatio"); - IF_GUID_EQUAL_RETURN(guid,0x87d43767,0x7645,0x44ec,0xb4,0x38,0xd3,0x32,0x2f,0xbc,0xa2,0x9f,"CODECAPI_AVEncVideoRateControlParams"); - IF_GUID_EQUAL_RETURN(guid,0xeb1084f5,0x6aaa,0x4914,0xbb,0x2f,0x61,0x47,0x22,0x7f,0x12,0xe7,"CODECAPI_AVEncVideoSelectLayer"); - IF_GUID_EQUAL_RETURN(guid,0x1791c64b,0xccfc,0x4827,0xa0,0xed,0x25,0x57,0x79,0x3b,0x2b,0x1c,"CODECAPI_AVEncVideoSourceFilmContent"); - IF_GUID_EQUAL_RETURN(guid,0x42ffc49b,0x1812,0x4fdc,0x8d,0x24,0x70,0x54,0xc5,0x21,0xe6,0xeb,"CODECAPI_AVEncVideoSourceIsBW"); - IF_GUID_EQUAL_RETURN(guid,0xd3f40fdd,0x77b9,0x473d,0x81,0x96,0x06,0x12,0x59,0xe6,0x9c,0xff,"CODECAPI_AVEncVideoSupportedControls"); - IF_GUID_EQUAL_RETURN(guid,0x19caebff,0xb74d,0x4cfd,0x8c,0x27,0xc2,0xf9,0xd9,0x7d,0x5f,0x52,"CODECAPI_AVEncVideoTemporalLayerCount"); - IF_GUID_EQUAL_RETURN(guid,0x1f636849,0x5dc1,0x49f1,0xb1,0xd8,0xce,0x3c,0xf6,0x2e,0xa3,0x85,"CODECAPI_AVEncVideoUsage"); - IF_GUID_EQUAL_RETURN(guid,0xf32c0dab,0xf3cb,0x4217,0xb7,0x9f,0x87,0x62,0x76,0x8b,0x5f,0x67,"CODECAPI_AVEncWMVDecoderComplexity"); - IF_GUID_EQUAL_RETURN(guid,0xe3d00f8a,0xc6f5,0x4e14,0xa5,0x88,0x0e,0xc8,0x7a,0x72,0x6f,0x9b,"CODECAPI_AVEncWMVInterlacedEncoding"); - IF_GUID_EQUAL_RETURN(guid,0x51ff1115,0x33ac,0x426c,0xa1,0xb1,0x09,0x32,0x1b,0xdf,0x96,0xb4,"CODECAPI_AVEncWMVKeyFrameBufferLevelMarker"); - IF_GUID_EQUAL_RETURN(guid,0x5569055e,0xe268,0x4771,0xb8,0x3e,0x95,0x55,0xea,0x28,0xae,0xd3,"CODECAPI_AVEncWMVKeyFrameDistance"); - IF_GUID_EQUAL_RETURN(guid,0xd669d001,0x183c,0x42e3,0xa3,0xca,0x2f,0x45,0x86,0xd2,0x39,0x6c,"CODECAPI_AVEncWMVProduceDummyFrames"); - IF_GUID_EQUAL_RETURN(guid,0x9c27891a,0xed7a,0x40e1,0x88,0xe8,0xb2,0x27,0x27,0xa0,0x24,0xee,"CODECAPI_AVLowLatencyMode"); - IF_GUID_EQUAL_RETURN(guid,0x54ba3dc8,0xbdde,0x4329,0xb1,0x87,0x20,0x18,0xbc,0x5c,0x2b,0xa1,"CODECAPI_AVPriorityControl"); - IF_GUID_EQUAL_RETURN(guid,0x6f440632,0xc4ad,0x4bf7,0x9e,0x52,0x45,0x69,0x42,0xb4,0x54,0xb0,"CODECAPI_AVRealtimeControl"); - IF_GUID_EQUAL_RETURN(guid,0x62b12acf,0xf6b0,0x47d9,0x94,0x56,0x96,0xf2,0x2c,0x4e,0x0b,0x9d,"CODECAPI_CHANGELISTS"); - IF_GUID_EQUAL_RETURN(guid,0x1cb14e83,0x7d72,0x4657,0x83,0xfd,0x47,0xa2,0xc5,0xb9,0xd1,0x3d,"CODECAPI_CURRENTCHANGELIST"); - IF_GUID_EQUAL_RETURN(guid,0x97df7828,0xb94a,0x47e2,0xa4,0xbc,0x51,0x19,0x4d,0xb2,0x2a,0x4d,"CODECAPI_GUID_AVDecAudioInputAAC"); - IF_GUID_EQUAL_RETURN(guid,0x600bc0ca,0x6a1f,0x4e91,0xb2,0x41,0x1b,0xbe,0xb1,0xcb,0x19,0xe0,"CODECAPI_GUID_AVDecAudioInputDTS"); - IF_GUID_EQUAL_RETURN(guid,0x8e4228a0,0xf000,0x4e0b,0x8f,0x54,0xab,0x8d,0x24,0xad,0x61,0xa2,"CODECAPI_GUID_AVDecAudioInputDolby"); - IF_GUID_EQUAL_RETURN(guid,0x0803e185,0x8f5d,0x47f5,0x99,0x08,0x19,0xa5,0xbb,0xc9,0xfe,0x34,"CODECAPI_GUID_AVDecAudioInputDolbyDigitalPlus"); - IF_GUID_EQUAL_RETURN(guid,0x16efb4aa,0x330e,0x4f5c,0x98,0xa8,0xcf,0x6a,0xc5,0x5c,0xbe,0x60,"CODECAPI_GUID_AVDecAudioInputHEAAC"); - IF_GUID_EQUAL_RETURN(guid,0x91106f36,0x02c5,0x4f75,0x97,0x19,0x3b,0x7a,0xbf,0x75,0xe1,0xf6,"CODECAPI_GUID_AVDecAudioInputMPEG"); - IF_GUID_EQUAL_RETURN(guid,0xf2421da5,0xbbb4,0x4cd5,0xa9,0x96,0x93,0x3c,0x6b,0x5d,0x13,0x47,"CODECAPI_GUID_AVDecAudioInputPCM"); - IF_GUID_EQUAL_RETURN(guid,0xc95e8dcf,0x4058,0x4204,0x8c,0x42,0xcb,0x24,0xd9,0x1e,0x4b,0x9b,"CODECAPI_GUID_AVDecAudioInputWMA"); - IF_GUID_EQUAL_RETURN(guid,0x0128b7c7,0xda72,0x4fe3,0xbe,0xf8,0x5c,0x52,0xe3,0x55,0x77,0x04,"CODECAPI_GUID_AVDecAudioInputWMAPro"); - IF_GUID_EQUAL_RETURN(guid,0x696e1d31,0x548f,0x4036,0x82,0x5f,0x70,0x26,0xc6,0x00,0x11,0xbd,"CODECAPI_GUID_AVDecAudioOutputFormat_PCM"); - IF_GUID_EQUAL_RETURN(guid,0x696e1d34,0x548f,0x4036,0x82,0x5f,0x70,0x26,0xc6,0x00,0x11,0xbd,"CODECAPI_GUID_AVDecAudioOutputFormat_PCM_Headphones"); - IF_GUID_EQUAL_RETURN(guid,0x696e1d35,0x548f,0x4036,0x82,0x5f,0x70,0x26,0xc6,0x00,0x11,0xbd,"CODECAPI_GUID_AVDecAudioOutputFormat_PCM_Stereo_Auto"); - IF_GUID_EQUAL_RETURN(guid,0x696e1d30,0x548f,0x4036,0x82,0x5f,0x70,0x26,0xc6,0x00,0x11,0xbd,"CODECAPI_GUID_AVDecAudioOutputFormat_PCM_Stereo_MatrixEncoded"); - IF_GUID_EQUAL_RETURN(guid,0x696e1d33,0x548f,0x4036,0x82,0x5f,0x70,0x26,0xc6,0x00,0x11,0xbd,"CODECAPI_GUID_AVDecAudioOutputFormat_SPDIF_Bitstream"); - IF_GUID_EQUAL_RETURN(guid,0x696e1d32,0x548f,0x4036,0x82,0x5f,0x70,0x26,0xc6,0x00,0x11,0xbd,"CODECAPI_GUID_AVDecAudioOutputFormat_SPDIF_PCM"); - IF_GUID_EQUAL_RETURN(guid,0x8d7b897c,0xa019,0x4670,0xaa,0x76,0x2e,0xdc,0xac,0x7a,0xc2,0x96,"CODECAPI_GUID_AVEncCommonFormatATSC"); - IF_GUID_EQUAL_RETURN(guid,0x71830d8f,0x6c33,0x430d,0x84,0x4b,0xc2,0x70,0x5b,0xaa,0xe6,0xdb,"CODECAPI_GUID_AVEncCommonFormatDVB"); - IF_GUID_EQUAL_RETURN(guid,0xe55199d6,0x044c,0x4dae,0xa4,0x88,0x53,0x1e,0xd3,0x06,0x23,0x5b,"CODECAPI_GUID_AVEncCommonFormatDVD_DashVR"); - IF_GUID_EQUAL_RETURN(guid,0xe74c6f2e,0xec37,0x478d,0x9a,0xf4,0xa5,0xe1,0x35,0xb6,0x27,0x1c,"CODECAPI_GUID_AVEncCommonFormatDVD_PlusVR"); - IF_GUID_EQUAL_RETURN(guid,0xcc9598c4,0xe7fe,0x451d,0xb1,0xca,0x76,0x1b,0xc8,0x40,0xb7,0xf3,"CODECAPI_GUID_AVEncCommonFormatDVD_V"); - IF_GUID_EQUAL_RETURN(guid,0x1eabe760,0xfb2b,0x4928,0x90,0xd1,0x78,0xdb,0x88,0xee,0xe8,0x89,"CODECAPI_GUID_AVEncCommonFormatHighMAT"); - IF_GUID_EQUAL_RETURN(guid,0xa2d25db8,0xb8f9,0x42c2,0x8b,0xc7,0x0b,0x93,0xcf,0x60,0x47,0x88,"CODECAPI_GUID_AVEncCommonFormatHighMPV"); - IF_GUID_EQUAL_RETURN(guid,0x349733cd,0xeb08,0x4dc2,0x81,0x97,0xe4,0x98,0x35,0xef,0x82,0x8b,"CODECAPI_GUID_AVEncCommonFormatMP3"); - IF_GUID_EQUAL_RETURN(guid,0x51d85818,0x8220,0x448c,0x80,0x66,0xd6,0x9b,0xed,0x16,0xc9,0xad,"CODECAPI_GUID_AVEncCommonFormatSVCD"); - IF_GUID_EQUAL_RETURN(guid,0xaf46a35a,0x6024,0x4525,0xa4,0x8a,0x09,0x4b,0x97,0xf5,0xb3,0xc2,"CODECAPI_GUID_AVEncCommonFormatUnSpecified"); - IF_GUID_EQUAL_RETURN(guid,0x95035bf7,0x9d90,0x40ff,0xad,0x5c,0x5c,0xf8,0xcf,0x71,0xca,0x1d,"CODECAPI_GUID_AVEncCommonFormatVCD"); - IF_GUID_EQUAL_RETURN(guid,0x45fbcaa2,0x5e6e,0x4ab0,0x88,0x93,0x59,0x03,0xbe,0xe9,0x3a,0xcf,"CODECAPI_GUID_AVEncDTS"); - IF_GUID_EQUAL_RETURN(guid,0x2052e630,0x469d,0x4bfb,0x80,0xca,0x1d,0x65,0x6e,0x7e,0x91,0x8f,"CODECAPI_GUID_AVEncDTSHD"); - IF_GUID_EQUAL_RETURN(guid,0x09b769c7,0x3329,0x44fb,0x89,0x54,0xfa,0x30,0x93,0x7d,0x3d,0x5a,"CODECAPI_GUID_AVEncDV"); - IF_GUID_EQUAL_RETURN(guid,0xc1a7bf6c,0x0059,0x4bfa,0x94,0xef,0xef,0x74,0x7a,0x76,0x8d,0x52,"CODECAPI_GUID_AVEncDolbyDigitalConsumer"); - IF_GUID_EQUAL_RETURN(guid,0x698d1b80,0xf7dd,0x415c,0x97,0x1c,0x42,0x49,0x2a,0x20,0x56,0xc6,"CODECAPI_GUID_AVEncDolbyDigitalPlus"); - IF_GUID_EQUAL_RETURN(guid,0xf5be76cc,0x0ff8,0x40eb,0x9c,0xb1,0xbb,0xa9,0x40,0x04,0xd4,0x4f,"CODECAPI_GUID_AVEncDolbyDigitalPro"); - IF_GUID_EQUAL_RETURN(guid,0x95044eab,0x31b3,0x47de,0x8e,0x75,0x38,0xa4,0x2b,0xb0,0x3e,0x28,"CODECAPI_GUID_AVEncH264Video"); - IF_GUID_EQUAL_RETURN(guid,0x05f73e29,0xf0d1,0x431e,0xa4,0x1c,0xa4,0x74,0x32,0xec,0x5a,0x66,"CODECAPI_GUID_AVEncMLP"); - IF_GUID_EQUAL_RETURN(guid,0xd4dd1362,0xcd4a,0x4cd6,0x81,0x38,0xb9,0x4d,0xb4,0x54,0x2b,0x04,"CODECAPI_GUID_AVEncMPEG1Audio"); - IF_GUID_EQUAL_RETURN(guid,0xc8dafefe,0xda1e,0x4774,0xb2,0x7d,0x11,0x83,0x0c,0x16,0xb1,0xfe,"CODECAPI_GUID_AVEncMPEG1Video"); - IF_GUID_EQUAL_RETURN(guid,0xee4cbb1f,0x9c3f,0x4770,0x92,0xb5,0xfc,0xb7,0xc2,0xa8,0xd3,0x81,"CODECAPI_GUID_AVEncMPEG2Audio"); - IF_GUID_EQUAL_RETURN(guid,0x046dc19a,0x6677,0x4aaa,0xa3,0x1d,0xc1,0xab,0x71,0x6f,0x45,0x60,"CODECAPI_GUID_AVEncMPEG2Video"); - IF_GUID_EQUAL_RETURN(guid,0x844be7f4,0x26cf,0x4779,0xb3,0x86,0xcc,0x05,0xd1,0x87,0x99,0x0c,"CODECAPI_GUID_AVEncPCM"); - IF_GUID_EQUAL_RETURN(guid,0x1dc1b82f,0x11c8,0x4c71,0xb7,0xb6,0xee,0x3e,0xb9,0xbc,0x2b,0x94,"CODECAPI_GUID_AVEncSDDS"); - IF_GUID_EQUAL_RETURN(guid,0x55ca7265,0x23d8,0x4761,0x90,0x31,0xb7,0x4f,0xbe,0x12,0xf4,0xc1,"CODECAPI_GUID_AVEncWMALossless"); - IF_GUID_EQUAL_RETURN(guid,0x1955f90c,0x33f7,0x4a68,0xab,0x81,0x53,0xf5,0x65,0x71,0x25,0xc4,"CODECAPI_GUID_AVEncWMAPro"); - IF_GUID_EQUAL_RETURN(guid,0x13ed18cb,0x50e8,0x4276,0xa2,0x88,0xa6,0xaa,0x22,0x83,0x82,0xd9,"CODECAPI_GUID_AVEncWMAVoice"); - IF_GUID_EQUAL_RETURN(guid,0x4e0fef9b,0x1d43,0x41bd,0xb8,0xbd,0x4d,0x7b,0xf7,0x45,0x7a,0x2a,"CODECAPI_GUID_AVEncWMV"); - IF_GUID_EQUAL_RETURN(guid,0xdd37b12a,0x9503,0x4f8b,0xb8,0xd0,0x32,0x4a,0x00,0xc0,0xa1,0xcf,"CODECAPI_GUID_AVEndMPEG4Video"); - IF_GUID_EQUAL_RETURN(guid,0x6c5e6a7c,0xacf8,0x4f55,0xa9,0x99,0x1a,0x62,0x81,0x09,0x05,0x1b,"CODECAPI_SETALLDEFAULTS"); - IF_GUID_EQUAL_RETURN(guid,0x0581af97,0x7693,0x4dbd,0x9d,0xca,0x3f,0x9e,0xbd,0x65,0x85,0xa1,"CODECAPI_SUPPORTSEVENTS"); - IF_GUID_EQUAL_RETURN(guid,0x7112e8e1,0x3d03,0x47ef,0x8e,0x60,0x03,0xf1,0xcf,0x53,0x73,0x01,"CODECAPI_VIDEO_ENCODER"); - IF_GUID_EQUAL_RETURN(guid,0x286bbff3,0xbad4,0x438f,0xb0,0x7,0x79,0xb7,0x26,0x7c,0x3d,0x48,"CPFG_CREDENTIAL_PROVIDER_LABEL"); - IF_GUID_EQUAL_RETURN(guid,0x2d837775,0xf6cd,0x464e,0xa7,0x45,0x48,0x2f,0xd0,0xb4,0x74,0x93,"CPFG_CREDENTIAL_PROVIDER_LOGO"); - IF_GUID_EQUAL_RETURN(guid,0x60624cfa,0xa477,0x47b1,0x8a,0x8e,0x3a,0x4a,0x19,0x98,0x18,0x27,"CPFG_LOGON_PASSWORD"); - IF_GUID_EQUAL_RETURN(guid,0xda15bbe8,0x954d,0x4fd3,0xb0,0xf4,0x1f,0xb5,0xb9,0x0b,0x17,0x4b,"CPFG_LOGON_USERNAME"); - IF_GUID_EQUAL_RETURN(guid,0x4fe5263b,0x9181,0x46c1,0xb0,0xa4,0x9d,0xed,0xd4,0xdb,0x7d,0xea,"CPFG_SMARTCARD_PIN"); - IF_GUID_EQUAL_RETURN(guid,0x3e1ecf69,0x568c,0x4d96,0x9d,0x59,0x46,0x44,0x41,0x74,0xe2,0xd6,"CPFG_SMARTCARD_USERNAME"); - IF_GUID_EQUAL_RETURN(guid,0x2d7a2816,0x0c5e,0x45fc,0x9c,0xe7,0x57,0x0e,0x5e,0xcd,0xe9,0xc9,"CUSTOM_SYSTEM_STATE_CHANGE_EVENT_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8913eb88,0x00e5,0x46bc,0x8e,0x4e,0x14,0xa7,0x86,0xe1,0x65,0xa1,"Calendar_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xfb50f922,0xa3db,0x49c0,0x8b,0xc3,0x06,0xda,0xd5,0x57,0x78,0xe2,"CheckBox_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x157b7215,0x894f,0x4b65,0x84,0xe2,0xaa,0xc0,0xda,0x08,0xb1,0x6b,"ClassName_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x0196903b,0xb203,0x4818,0xa9,0xf3,0xf0,0x8e,0x67,0x5f,0x23,0x41,"ClickablePoint_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x54cb426c,0x2f33,0x4fff,0xaa,0xa1,0xae,0xf6,0x0d,0xac,0x5d,0xeb,"ComboBox_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xca774fea,0x28ac,0x4bc2,0x94,0xca,0xac,0xec,0x6d,0x6c,0x10,0xa3,"ControlType_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x51124c8a,0xa5d2,0x4f13,0x9b,0xe6,0x7f,0xa8,0xba,0x9d,0x3a,0x90,"ControllerFor_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xeb40cb65,0x3c1f,0x4352,0x9d,0x7b,0xba,0xf,0xc4,0x7a,0x9d,0x77,"CorSym_DocumentType_MC"); - IF_GUID_EQUAL_RETURN(guid,0x5a869d0b,0x6611,0x11d3,0xbd,0x2a,0x0,0x0,0xf8,0x8,0x49,0xbd,"CorSym_DocumentType_Text"); - IF_GUID_EQUAL_RETURN(guid,0x3a12d0b8,0xc26c,0x11d0,0xb4,0x42,0x0,0xa0,0x24,0x4a,0x1d,0xd2,"CorSym_LanguageType_Basic"); - IF_GUID_EQUAL_RETURN(guid,0x63a08714,0xfc37,0x11d2,0x90,0x4c,0x0,0xc0,0x4f,0xa3,0x02,0xa1,"CorSym_LanguageType_C"); - IF_GUID_EQUAL_RETURN(guid,0x3a12d0b7,0xc26c,0x11d0,0xb4,0x42,0x0,0xa0,0x24,0x4a,0x1d,0xd2,"CorSym_LanguageType_CPlusPlus"); - IF_GUID_EQUAL_RETURN(guid,0x3f5162f8,0x07c6,0x11d3,0x90,0x53,0x0,0xc0,0x4f,0xa3,0x02,0xa1,"CorSym_LanguageType_CSharp"); - IF_GUID_EQUAL_RETURN(guid,0xaf046cd1,0xd0e1,0x11d2,0x97,0x7c,0x0,0xa0,0xc9,0xb4,0xd5,0xc,"CorSym_LanguageType_Cobol"); - IF_GUID_EQUAL_RETURN(guid,0xaf046cd3,0xd0e1,0x11d2,0x97,0x7c,0x0,0xa0,0xc9,0xb4,0xd5,0xc,"CorSym_LanguageType_ILAssembly"); - IF_GUID_EQUAL_RETURN(guid,0x3a12d0b6,0xc26c,0x11d0,0xb4,0x42,0x00,0xa0,0x24,0x4a,0x1d,0xd2,"CorSym_LanguageType_JScript"); - IF_GUID_EQUAL_RETURN(guid,0x3a12d0b4,0xc26c,0x11d0,0xb4,0x42,0x0,0xa0,0x24,0x4a,0x1d,0xd2,"CorSym_LanguageType_Java"); - IF_GUID_EQUAL_RETURN(guid,0x4b35fde8,0x07c6,0x11d3,0x90,0x53,0x0,0xc0,0x4f,0xa3,0x02,0xa1,"CorSym_LanguageType_MCPlusPlus"); - IF_GUID_EQUAL_RETURN(guid,0xaf046cd2,0xd0e1,0x11d2,0x97,0x7c,0x0,0xa0,0xc9,0xb4,0xd5,0xc,"CorSym_LanguageType_Pascal"); - IF_GUID_EQUAL_RETURN(guid,0xd9b9f7b,0x6611,0x11d3,0xbd,0x2a,0x0,0x0,0xf8,0x8,0x49,0xbd,"CorSym_LanguageType_SMC"); - IF_GUID_EQUAL_RETURN(guid,0x994b45c4,0xe6e9,0x11d2,0x90,0x3f,0x00,0xc0,0x4f,0xa3,0x02,0xa1,"CorSym_LanguageVendor_Microsoft"); - IF_GUID_EQUAL_RETURN(guid,0x406ea660,0x64cf,0x4c82,0xb6,0xf0,0x42,0xd4,0x81,0x72,0xa7,0x99,"CorSym_SourceHash_MD5"); - IF_GUID_EQUAL_RETURN(guid,0xff1816ec,0xaa5e,0x4d10,0x87,0xf7,0x6f,0x49,0x63,0x83,0x34,0x60,"CorSym_SourceHash_SHA1"); - IF_GUID_EQUAL_RETURN(guid,0xe2d74f27,0x3d79,0x4dc2,0xb8,0x8b,0x30,0x44,0x96,0x3a,0x8a,0xfb,"Culture_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf29ea0c3,0xadb7,0x430a,0xba,0x90,0xe5,0x2c,0x73,0x13,0xe6,0xed,"Custom_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6346cc54,0x2cfc,0x4ad4,0x82,0x24,0xd1,0x58,0x37,0xde,0x77,0x0,"D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION"); - IF_GUID_EQUAL_RETURN(guid,0x41fff286,0x6ae0,0x4d43,0x9d,0x55,0xa4,0x6e,0x9e,0xfd,0x15,0x8a,"D3D11_AUTHENTICATED_CONFIGURE_ENCRYPTION_WHEN_ACCESSIBLE"); - IF_GUID_EQUAL_RETURN(guid,0x6114bdb,0x3523,0x470a,0x8d,0xca,0xfb,0xc2,0x84,0x51,0x54,0xf0,"D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE"); - IF_GUID_EQUAL_RETURN(guid,0x50455658,0x3f47,0x4362,0xbf,0x99,0xbf,0xdf,0xcd,0xe9,0xed,0x29,"D3D11_AUTHENTICATED_CONFIGURE_PROTECTION"); - IF_GUID_EQUAL_RETURN(guid,0x772d047,0x1b40,0x48e8,0x9c,0xa6,0xb5,0xf5,0x10,0xde,0x9f,0x1,"D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE"); - IF_GUID_EQUAL_RETURN(guid,0x6214d9d2,0x432c,0x4abb,0x9f,0xce,0x21,0x6e,0xea,0x26,0x9e,0x3b,"D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ATTRIBUTES"); - IF_GUID_EQUAL_RETURN(guid,0xbc1b18a5,0xb1fb,0x42ab,0xbd,0x94,0xb5,0x82,0x8b,0x4b,0xf7,0xbe,"D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x2634499e,0xd018,0x4d74,0xac,0x17,0x7f,0x72,0x40,0x59,0x52,0x8d,"D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION"); - IF_GUID_EQUAL_RETURN(guid,0xec1791c7,0xdad3,0x4f15,0x9e,0xc3,0xfa,0xa9,0x3d,0x60,0xd4,0xf0,"D3D11_AUTHENTICATED_QUERY_CURRENT_ENCRYPTION_WHEN_ACCESSIBLE"); - IF_GUID_EQUAL_RETURN(guid,0xec1c539d,0x8cff,0x4e2a,0xbc,0xc4,0xf5,0x69,0x2f,0x99,0xf4,0x80,"D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE"); - IF_GUID_EQUAL_RETURN(guid,0xf83a5958,0xe986,0x4bda,0xbe,0xb0,0x41,0x1f,0x6a,0x7a,0x1,0xb7,"D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb30f7066,0x203c,0x4b07,0x93,0xfc,0xce,0xaa,0xfd,0x61,0x24,0x1e,"D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID_COUNT"); - IF_GUID_EQUAL_RETURN(guid,0x839ddca3,0x9b4e,0x41e4,0xb0,0x53,0x89,0x2b,0xd2,0xa1,0x1e,0xe7,"D3D11_AUTHENTICATED_QUERY_OUTPUT_ID"); - IF_GUID_EQUAL_RETURN(guid,0x2c042b5e,0x8c07,0x46d5,0xaa,0xbe,0x8f,0x75,0xcb,0xad,0x4c,0x31,"D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT"); - IF_GUID_EQUAL_RETURN(guid,0xa84eb584,0xc495,0x48aa,0xb9,0x4d,0x8b,0xd2,0xd6,0xfb,0xce,0x5,"D3D11_AUTHENTICATED_QUERY_PROTECTION"); - IF_GUID_EQUAL_RETURN(guid,0x649bbadb,0xf0f4,0x4639,0xa1,0x5b,0x24,0x39,0x3f,0xc3,0xab,0xac,"D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS"); - IF_GUID_EQUAL_RETURN(guid,0xdb207b3,0x9450,0x46a6,0x82,0xde,0x1b,0x96,0xd4,0x4f,0x9c,0xf2,"D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT"); - IF_GUID_EQUAL_RETURN(guid,0x12f0bd6,0xe662,0x4474,0xbe,0xfd,0xaa,0x53,0xe5,0x14,0x3c,0x6d,"D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT"); - IF_GUID_EQUAL_RETURN(guid,0x9b6bd711,0x4f74,0x41c9,0x9e,0x7b,0xb,0xe2,0xd7,0xd9,0x3b,0x4f,"D3D11_CRYPTO_TYPE_AES128_CTR"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be67,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_H264_IDCT_FGT"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be66,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_H264_IDCT_NOFGT"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be65,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_H264_MOCOMP_FGT"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be64,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_H264_MOCOMP_NOFGT"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be69,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_H264_VLD_FGT"); - IF_GUID_EQUAL_RETURN(guid,0x705b9d82,0x76cf,0x49d6,0xb7,0xe6,0xac,0x88,0x72,0xdb,0x01,0x3c,"D3D11_DECODER_PROFILE_H264_VLD_MULTIVIEW_NOFGT"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be68,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_H264_VLD_NOFGT"); - IF_GUID_EQUAL_RETURN(guid,0xf9aaccbb,0xc2b6,0x4cfc,0x87,0x79,0x57,0x07,0xb1,0x76,0x05,0x52,"D3D11_DECODER_PROFILE_H264_VLD_STEREO_NOFGT"); - IF_GUID_EQUAL_RETURN(guid,0xd79be8da,0x0cf1,0x4c81,0xb8,0x2a,0x69,0xa4,0xe2,0x36,0xf4,0x3d,"D3D11_DECODER_PROFILE_H264_VLD_STEREO_PROGRESSIVE_NOFGT"); - IF_GUID_EQUAL_RETURN(guid,0xd5f04ff9,0x3418,0x45d8,0x95,0x61,0x32,0xa7,0x6a,0xae,0x2d,0xdd,"D3D11_DECODER_PROFILE_H264_VLD_WITHFMOASO_NOFGT"); - IF_GUID_EQUAL_RETURN(guid,0x6f3ec719,0x3735,0x42cc,0x80,0x63,0x65,0xcc,0x3c,0xb3,0x66,0x16,"D3D11_DECODER_PROFILE_MPEG1_VLD"); - IF_GUID_EQUAL_RETURN(guid,0xbf22ad00,0x03ea,0x4690,0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e,"D3D11_DECODER_PROFILE_MPEG2_IDCT"); - IF_GUID_EQUAL_RETURN(guid,0xe6a9f44b,0x61b0,0x4563,0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66,"D3D11_DECODER_PROFILE_MPEG2_MOCOMP"); - IF_GUID_EQUAL_RETURN(guid,0xee27417f,0x5e28,0x4e65,0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9,"D3D11_DECODER_PROFILE_MPEG2_VLD"); - IF_GUID_EQUAL_RETURN(guid,0x86695f12,0x340e,0x4f04,0x9f,0xd3,0x92,0x53,0xdd,0x32,0x74,0x60,"D3D11_DECODER_PROFILE_MPEG2and1_VLD"); - IF_GUID_EQUAL_RETURN(guid,0xab998b5b,0x4258,0x44a9,0x9f,0xeb,0x94,0xe5,0x97,0xa6,0xba,0xae,"D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_GMC"); - IF_GUID_EQUAL_RETURN(guid,0xed418a9f,0x010d,0x4eda,0x9a,0xe3,0x9a,0x65,0x35,0x8d,0x8d,0x2e,"D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_NOGMC"); - IF_GUID_EQUAL_RETURN(guid,0xefd64d74,0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19,"D3D11_DECODER_PROFILE_MPEG4PT2_VLD_SIMPLE"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA4,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_VC1_D2010"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA2,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_VC1_IDCT"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA1,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_VC1_MOCOMP"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA0,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_VC1_POSTPROC"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA3,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_VC1_VLD"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be81,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_WMV8_MOCOMP"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be80,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_WMV8_POSTPROC"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be94,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_WMV9_IDCT"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be91,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_WMV9_MOCOMP"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be90,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"D3D11_DECODER_PROFILE_WMV9_POSTPROC"); - IF_GUID_EQUAL_RETURN(guid,0xc1949895,0xd72a,0x4a1d,0x8e,0x5d,0xed,0x85,0x7d,0x17,0x15,0x20,"D3D11_KEY_EXCHANGE_RSAES_OAEP"); - IF_GUID_EQUAL_RETURN(guid,0x6346cc54,0x2cfc,0x4ad4,0x82,0x24,0xd1,0x58,0x37,0xde,0x77,0x0,"D3DAUTHENTICATEDCONFIGURE_CRYPTOSESSION"); - IF_GUID_EQUAL_RETURN(guid,0x41fff286,0x6ae0,0x4d43,0x9d,0x55,0xa4,0x6e,0x9e,0xfd,0x15,0x8a,"D3DAUTHENTICATEDCONFIGURE_ENCRYPTIONWHENACCESSIBLE"); - IF_GUID_EQUAL_RETURN(guid,0x6114bdb,0x3523,0x470a,0x8d,0xca,0xfb,0xc2,0x84,0x51,0x54,0xf0,"D3DAUTHENTICATEDCONFIGURE_INITIALIZE"); - IF_GUID_EQUAL_RETURN(guid,0x50455658,0x3f47,0x4362,0xbf,0x99,0xbf,0xdf,0xcd,0xe9,0xed,0x29,"D3DAUTHENTICATEDCONFIGURE_PROTECTION"); - IF_GUID_EQUAL_RETURN(guid,0x772d047,0x1b40,0x48e8,0x9c,0xa6,0xb5,0xf5,0x10,0xde,0x9f,0x1,"D3DAUTHENTICATEDCONFIGURE_SHAREDRESOURCE"); - IF_GUID_EQUAL_RETURN(guid,0x6214d9d2,0x432c,0x4abb,0x9f,0xce,0x21,0x6e,0xea,0x26,0x9e,0x3b,"D3DAUTHENTICATEDQUERY_ACCESSIBILITYATTRIBUTES"); - IF_GUID_EQUAL_RETURN(guid,0xbc1b18a5,0xb1fb,0x42ab,0xbd,0x94,0xb5,0x82,0x8b,0x4b,0xf7,0xbe,"D3DAUTHENTICATEDQUERY_CHANNELTYPE"); - IF_GUID_EQUAL_RETURN(guid,0x2634499e,0xd018,0x4d74,0xac,0x17,0x7f,0x72,0x40,0x59,0x52,0x8d,"D3DAUTHENTICATEDQUERY_CRYPTOSESSION"); - IF_GUID_EQUAL_RETURN(guid,0xec1791c7,0xdad3,0x4f15,0x9e,0xc3,0xfa,0xa9,0x3d,0x60,0xd4,0xf0,"D3DAUTHENTICATEDQUERY_CURRENTENCRYPTIONWHENACCESSIBLE"); - IF_GUID_EQUAL_RETURN(guid,0xec1c539d,0x8cff,0x4e2a,0xbc,0xc4,0xf5,0x69,0x2f,0x99,0xf4,0x80,"D3DAUTHENTICATEDQUERY_DEVICEHANDLE"); - IF_GUID_EQUAL_RETURN(guid,0xf83a5958,0xe986,0x4bda,0xbe,0xb0,0x41,0x1f,0x6a,0x7a,0x1,0xb7,"D3DAUTHENTICATEDQUERY_ENCRYPTIONWHENACCESSIBLEGUID"); - IF_GUID_EQUAL_RETURN(guid,0xb30f7066,0x203c,0x4b07,0x93,0xfc,0xce,0xaa,0xfd,0x61,0x24,0x1e,"D3DAUTHENTICATEDQUERY_ENCRYPTIONWHENACCESSIBLEGUIDCOUNT"); - IF_GUID_EQUAL_RETURN(guid,0x839ddca3,0x9b4e,0x41e4,0xb0,0x53,0x89,0x2b,0xd2,0xa1,0x1e,0xe7,"D3DAUTHENTICATEDQUERY_OUTPUTID"); - IF_GUID_EQUAL_RETURN(guid,0x2c042b5e,0x8c07,0x46d5,0xaa,0xbe,0x8f,0x75,0xcb,0xad,0x4c,0x31,"D3DAUTHENTICATEDQUERY_OUTPUTIDCOUNT"); - IF_GUID_EQUAL_RETURN(guid,0xa84eb584,0xc495,0x48aa,0xb9,0x4d,0x8b,0xd2,0xd6,0xfb,0xce,0x5,"D3DAUTHENTICATEDQUERY_PROTECTION"); - IF_GUID_EQUAL_RETURN(guid,0x649bbadb,0xf0f4,0x4639,0xa1,0x5b,0x24,0x39,0x3f,0xc3,0xab,0xac,"D3DAUTHENTICATEDQUERY_RESTRICTEDSHAREDRESOURCEPROCESS"); - IF_GUID_EQUAL_RETURN(guid,0xdb207b3,0x9450,0x46a6,0x82,0xde,0x1b,0x96,0xd4,0x4f,0x9c,0xf2,"D3DAUTHENTICATEDQUERY_RESTRICTEDSHAREDRESOURCEPROCESSCOUNT"); - IF_GUID_EQUAL_RETURN(guid,0x12f0bd6,0xe662,0x4474,0xbe,0xfd,0xaa,0x53,0xe5,0x14,0x3c,0x6d,"D3DAUTHENTICATEDQUERY_UNRESTRICTEDPROTECTEDSHAREDRESOURCECOUNT"); - IF_GUID_EQUAL_RETURN(guid,0x9b6bd711,0x4f74,0x41c9,0x9e,0x7b,0xb,0xe2,0xd7,0xd9,0x3b,0x4f,"D3DCRYPTOTYPE_AES128_CTR"); - IF_GUID_EQUAL_RETURN(guid,0xab4e9afd,0x1d1c,0x46e6,0xa7,0x2f,0x8,0x69,0x91,0x7b,0xd,0xe8,"D3DCRYPTOTYPE_PROPRIETARY"); - IF_GUID_EQUAL_RETURN(guid,0x43d3775c,0x38e5,0x4924,0x8d,0x86,0xd3,0xfc,0xcf,0x15,0x3e,0x9b,"D3DKEYEXCHANGE_DXVA"); - IF_GUID_EQUAL_RETURN(guid,0xc1949895,0xd72a,0x4a1d,0x8e,0x5d,0xed,0x85,0x7d,0x17,0x15,0x20,"D3DKEYEXCHANGE_RSAES_OAEP"); - IF_GUID_EQUAL_RETURN(guid,0x5d531cb2L,0xe6ed,0x11d2,0xb2,0x52,0x00,0xc0,0x4f,0x68,0x1b,0x71,"DBGUID_MSSQLXML"); - IF_GUID_EQUAL_RETURN(guid,0xec2a4293L,0xe898,0x11d2,0xb1,0xb7,0x00,0xc0,0x4f,0x68,0x0c,0x56,"DBGUID_XPATH"); - IF_GUID_EQUAL_RETURN(guid,0xb68e3cc1,0x6deb,0x11d0,0x8d,0xf6,0x00,0xaa,0x00,0x5f,0xfe,0x58,"DBPROPSET_ADC"); - IF_GUID_EQUAL_RETURN(guid,0x7f06a375,0xdd6a,0x43db,0xb4,0xe0,0x1f,0xc1,0x21,0xe5,0xe6,0x2b,"DBPROPSET_MSDAORA8_ROWSET"); - IF_GUID_EQUAL_RETURN(guid,0xE8CC4CBD,0xFDFF,0x11D0,0xB8,0x65,0x00,0xA0,0xC9,0x08,0x1C,0x1D,"DBPROPSET_MSDAORA_ROWSET"); - IF_GUID_EQUAL_RETURN(guid,0x55cb91a8,0x5c7a,0x11d1,0xad,0xad,0,0xc0,0x4f,0xc2,0x98,0x63,"DBPROPSET_MSDSDBINIT"); - IF_GUID_EQUAL_RETURN(guid,0xedf17536,0xafbf,0x11d1,0x88,0x47,0,0,0xf8,0x79,0xf9,0x8c,"DBPROPSET_MSDSSESSION"); - IF_GUID_EQUAL_RETURN(guid,0x497c60e4,0x7123,0x11cf,0xb1,0x71,0x0,0xaa,0x0,0x57,0x59,0x9e,"DBPROPSET_PROVIDERCONNATTR"); - IF_GUID_EQUAL_RETURN(guid,0x497c60e0,0x7123,0x11cf,0xb1,0x71,0x0,0xaa,0x0,0x57,0x59,0x9e,"DBPROPSET_PROVIDERDATASOURCEINFO"); - IF_GUID_EQUAL_RETURN(guid,0x497c60e2,0x7123,0x11cf,0xb1,0x71,0x0,0xaa,0x0,0x57,0x59,0x9e,"DBPROPSET_PROVIDERDBINIT"); - IF_GUID_EQUAL_RETURN(guid,0x497c60e1,0x7123,0x11cf,0xb1,0x71,0x0,0xaa,0x0,0x57,0x59,0x9e,"DBPROPSET_PROVIDERROWSET"); - IF_GUID_EQUAL_RETURN(guid,0x497c60e3,0x7123,0x11cf,0xb1,0x71,0x0,0xaa,0x0,0x57,0x59,0x9e,"DBPROPSET_PROVIDERSTMTATTR"); - IF_GUID_EQUAL_RETURN(guid,0x3b63fb5e,0x3fbb,0x11d3,0x9f,0x29,0x0,0xc0,0x4f,0x8e,0xe9,0xdc,"DBPROPSET_SQLSERVERCOLUMN"); - IF_GUID_EQUAL_RETURN(guid,0x28efaee4,0x2d2c,0x11d1,0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98,"DBPROPSET_SQLSERVERDATASOURCE"); - IF_GUID_EQUAL_RETURN(guid,0xdf10cb94,0x35f6,0x11d2,0x9c,0x54,0x0,0xc0,0x4f,0x79,0x71,0xd3,"DBPROPSET_SQLSERVERDATASOURCEINFO"); - IF_GUID_EQUAL_RETURN(guid,0x5cf4ca10,0xef21,0x11d0,0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98,"DBPROPSET_SQLSERVERDBINIT"); - IF_GUID_EQUAL_RETURN(guid,0x5cf4ca11,0xef21,0x11d0,0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98,"DBPROPSET_SQLSERVERROWSET"); - IF_GUID_EQUAL_RETURN(guid,0x28efaee5,0x2d2c,0x11d1,0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98,"DBPROPSET_SQLSERVERSESSION"); - IF_GUID_EQUAL_RETURN(guid,0x9f79c073,0x8a6d,0x4bca,0xa8,0xa8,0xc9,0xb7,0x9a,0x9b,0x96,0x2d,"DBPROPSET_SQLSERVERSTREAM"); - IF_GUID_EQUAL_RETURN(guid,0x9093caf4,0x2eac,0x11d1,0x98,0x9,0x0,0xc0,0x4f,0xc2,0xad,0x98,"DBSCHEMA_LINKEDSERVERS"); - IF_GUID_EQUAL_RETURN(guid,0x1352A560L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"DDVPTYPE_BROOKTREE"); - IF_GUID_EQUAL_RETURN(guid,0xFCA326A0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"DDVPTYPE_CCIR656"); - IF_GUID_EQUAL_RETURN(guid,0x54F39980L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"DDVPTYPE_E_HREFH_VREFH"); - IF_GUID_EQUAL_RETURN(guid,0x92783220L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"DDVPTYPE_E_HREFH_VREFL"); - IF_GUID_EQUAL_RETURN(guid,0xA07A02E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"DDVPTYPE_E_HREFL_VREFH"); - IF_GUID_EQUAL_RETURN(guid,0xE09C77E0L,0xDA60,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"DDVPTYPE_E_HREFL_VREFL"); - IF_GUID_EQUAL_RETURN(guid,0x332CF160L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"DDVPTYPE_PHILIPS"); - IF_GUID_EQUAL_RETURN(guid,0x2eef81be,0x33fa,0x4800,0x96,0x70,0x1c,0xd4,0x74,0x97,0x2c,0x3f,"DEVINTERFACE_AUDIO_CAPTURE"); - IF_GUID_EQUAL_RETURN(guid,0xe6327cad,0xdcec,0x4949,0xae,0x8a,0x99,0x1e,0x97,0x6a,0x79,0xd2,"DEVINTERFACE_AUDIO_RENDER"); - IF_GUID_EQUAL_RETURN(guid,0xC08C4FF2,0x0E2E,0x11cf,0x94,0x2C,0x00,0x80,0x29,0x00,0x43,0x47,"DIID_DICounterItem"); - IF_GUID_EQUAL_RETURN(guid,0x8D093FFC,0xF777,0x4917,0x82,0xD1,0x83,0x3F,0xBC,0x54,0xC5,0x8F,"DIID_DILogFileItem"); - IF_GUID_EQUAL_RETURN(guid,0x13D73D81,0xC32E,0x11cf,0x93,0x98,0x00,0xAA,0x00,0xA3,0xDD,0xEA,"DIID_DISystemMonitor"); - IF_GUID_EQUAL_RETURN(guid,0x84979930,0x4AB3,0x11cf,0x94,0x3A,0x00,0x80,0x29,0x00,0x43,0x47,"DIID_DISystemMonitorEvents"); - IF_GUID_EQUAL_RETURN(guid,0x194EB242,0xC32C,0x11cf,0x93,0x98,0x00,0xAA,0x00,0xA3,0xDD,0xEA,"DIID_DISystemMonitorInternal"); - IF_GUID_EQUAL_RETURN(guid,0xBF963D80L,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1,"DMOCATEGORY_ACOUSTIC_ECHO_CANCEL"); - IF_GUID_EQUAL_RETURN(guid,0xE88C9BA0L,0xC557,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1,"DMOCATEGORY_AGC"); - IF_GUID_EQUAL_RETURN(guid,0xf665aaba,0x3e09,0x4920,0xaa,0x5f,0x21,0x98,0x11,0x14,0x8f,0x09,"DMOCATEGORY_AUDIO_CAPTURE_EFFECT"); - IF_GUID_EQUAL_RETURN(guid,0x57f2db8b,0xe6bb,0x4513,0x9d,0x43,0xdc,0xd2,0xa6,0x59,0x31,0x25,"DMOCATEGORY_AUDIO_DECODER"); - IF_GUID_EQUAL_RETURN(guid,0xf3602b3f,0x0592,0x48df,0xa4,0xcd,0x67,0x47,0x21,0xe7,0xeb,0xeb,"DMOCATEGORY_AUDIO_EFFECT"); - IF_GUID_EQUAL_RETURN(guid,0x33D9A761,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86,"DMOCATEGORY_AUDIO_ENCODER"); - IF_GUID_EQUAL_RETURN(guid,0xe07f903f,0x62fd,0x4e60,0x8c,0xdd,0xde,0xa7,0x23,0x66,0x65,0xb5,"DMOCATEGORY_AUDIO_NOISE_SUPPRESS"); - IF_GUID_EQUAL_RETURN(guid,0x4a69b442,0x28be,0x4991,0x96,0x9c,0xb5,0x00,0xad,0xf5,0xd8,0xa8,"DMOCATEGORY_VIDEO_DECODER"); - IF_GUID_EQUAL_RETURN(guid,0xd990ee14,0x776c,0x4723,0xbe,0x46,0x3d,0xa2,0xf5,0x6f,0x10,0xb9,"DMOCATEGORY_VIDEO_EFFECT"); - IF_GUID_EQUAL_RETURN(guid,0x33D9A760,0x90C8,0x11d0,0xBD,0x43,0x00,0xA0,0xC9,0x11,0xCE,0x86,"DMOCATEGORY_VIDEO_ENCODER"); - IF_GUID_EQUAL_RETURN(guid,0x1ce20aba,0x9851,0x4421,0x94,0x30,0x1d,0xde,0xb7,0x66,0xe8,0x09,"DOMAIN_JOIN_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xddaf516e,0x58c2,0x4866,0x95,0x74,0xc3,0xb6,0x15,0xd4,0x2e,0xa1,"DOMAIN_LEAVE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc2413340,0x1c1b,0x11d2,0x94,0xf5,0x0,0xc0,0x4f,0xc2,0x8a,0xca,"DS3DALG_HRTF_FULL"); - IF_GUID_EQUAL_RETURN(guid,0xc2413342,0x1c1b,0x11d2,0x94,0xf5,0x0,0xc0,0x4f,0xc2,0x8a,0xca,"DS3DALG_HRTF_LIGHT"); - IF_GUID_EQUAL_RETURN(guid,0xc241333f,0x1c1b,0x11d2,0x94,0xf5,0x0,0xc0,0x4f,0xc2,0x8a,0xca,"DS3DALG_NO_VIRTUALIZATION"); - IF_GUID_EQUAL_RETURN(guid,0xe4846dda,0x5838,0x42b4,0xb8,0x97,0x6f,0x7e,0x5f,0xaa,0x2f,0x2f,"DSATTRIB_BadSampleInfo"); - IF_GUID_EQUAL_RETURN(guid,0x0c1a5614,0x30cd,0x4f40,0xbc,0xbf,0xd0,0x3e,0x52,0x30,0x62,0x07,"DSATTRIB_CAPTURE_STREAMTIME"); - IF_GUID_EQUAL_RETURN(guid,0xe7e050fb,0xdd5d,0x40dd,0x99,0x15,0x35,0xDC,0xB8,0x1B,0xDC,0x8a,"DSATTRIB_CC_CONTAINER_INFO"); - IF_GUID_EQUAL_RETURN(guid,0x5fb5673b,0xa2a,0x4565,0x82,0x7b,0x68,0x53,0xfd,0x75,0xe6,0x11,"DSATTRIB_DSHOW_STREAM_DESC"); - IF_GUID_EQUAL_RETURN(guid,0x5A5F08CA,0x55C2,0x4033,0x92,0xAB,0x55,0xDB,0x8F,0x78,0x12,0x26,"DSATTRIB_OptionalVideoAttributes"); - IF_GUID_EQUAL_RETURN(guid,0xe0b56679,0x12b9,0x43cc,0xb7,0xdf,0x57,0x8c,0xaa,0x5a,0x7b,0x63,"DSATTRIB_PBDATAG_ATTRIBUTE"); - IF_GUID_EQUAL_RETURN(guid,0x2f5bae02,0x7b8f,0x4f60,0x82,0xd6,0xe4,0xea,0x2f,0x1f,0x4c,0x99,"DSATTRIB_PicSampleSeq"); - IF_GUID_EQUAL_RETURN(guid,0x892cd111,0x72f3,0x411d,0x8b,0x91,0xa9,0xe9,0x12,0x3a,0xc2,0x9a,"DSATTRIB_SAMPLE_LIVE_STREAM_TIME"); - IF_GUID_EQUAL_RETURN(guid,0xb622f612,0x47ad,0x4671,0xad,0x6c,0x5,0xa9,0x8e,0x65,0xde,0x3a,"DSATTRIB_TRANSPORT_PROPERTIES"); - IF_GUID_EQUAL_RETURN(guid,0xEB7836CA,0x14FF,0x4919,0xbc,0xe7,0x3a,0xf1,0x23,0x19,0xe5,0x0c,"DSATTRIB_UDCRTag"); - IF_GUID_EQUAL_RETURN(guid,0x40749583,0x6b9d,0x4eec,0xb4,0x3c,0x67,0xa1,0x80,0x1e,0x1a,0x9b,"DSATTRIB_WMDRMProtectionInfo"); - IF_GUID_EQUAL_RETURN(guid,0xdef00001,0x9c6d,0x47ed,0xaa,0xf1,0x4d,0xda,0x8f,0x2b,0x5c,0x03,"DSDEVID_DefaultCapture"); - IF_GUID_EQUAL_RETURN(guid,0xdef00000,0x9c6d,0x47ed,0xaa,0xf1,0x4d,0xda,0x8f,0x2b,0x5c,0x03,"DSDEVID_DefaultPlayback"); - IF_GUID_EQUAL_RETURN(guid,0xdef00003,0x9c6d,0x47ed,0xaa,0xf1,0x4d,0xda,0x8f,0x2b,0x5c,0x03,"DSDEVID_DefaultVoiceCapture"); - IF_GUID_EQUAL_RETURN(guid,0xdef00002,0x9c6d,0x47ed,0xaa,0xf1,0x4d,0xda,0x8f,0x2b,0x5c,0x03,"DSDEVID_DefaultVoicePlayback"); - IF_GUID_EQUAL_RETURN(guid,0xe48ae283,0xda80,0x490b,0x87,0xe6,0x43,0xe9,0xa9,0xcf,0xda,0x8,"DXGI_DEBUG_ALL"); - IF_GUID_EQUAL_RETURN(guid,0x6cd6e01,0x4219,0x4ebd,0x87,0x9,0x27,0xed,0x23,0x36,0xc,0x62,"DXGI_DEBUG_APP"); - IF_GUID_EQUAL_RETURN(guid,0x243b4c52,0x3606,0x4d3a,0x99,0xd7,0xa7,0xe7,0xb3,0x3e,0xd7,0x6,"DXGI_DEBUG_D3D10"); - IF_GUID_EQUAL_RETURN(guid,0x4b99317b,0xac39,0x4aa6,0xbb,0xb,0xba,0xa0,0x47,0x84,0x79,0x8f,"DXGI_DEBUG_D3D11"); - IF_GUID_EQUAL_RETURN(guid,0x35cdd7fc,0x13b2,0x421d,0xa5,0xd7,0x7e,0x44,0x51,0x28,0x7d,0x64,"DXGI_DEBUG_DX"); - IF_GUID_EQUAL_RETURN(guid,0x25cddaa4,0xb1c6,0x47e1,0xac,0x3e,0x98,0x87,0x5b,0x5a,0x2e,0x2a,"DXGI_DEBUG_DXGI"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be64,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeH264_A"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be65,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeH264_B"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be66,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeH264_C"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be67,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeH264_D"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be68,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeH264_E"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be69,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeH264_F"); - IF_GUID_EQUAL_RETURN(guid,0x705b9d82,0x76cf,0x49d6,0xb7,0xe6,0xac,0x88,0x72,0xdb,0x01,0x3c,"DXVA2_ModeH264_VLD_Multiview_NoFGT"); - IF_GUID_EQUAL_RETURN(guid,0xf9aaccbb,0xc2b6,0x4cfc,0x87,0x79,0x57,0x07,0xb1,0x76,0x05,0x52,"DXVA2_ModeH264_VLD_Stereo_NoFGT"); - IF_GUID_EQUAL_RETURN(guid,0xd79be8da,0x0cf1,0x4c81,0xb8,0x2a,0x69,0xa4,0xe2,0x36,0xf4,0x3d,"DXVA2_ModeH264_VLD_Stereo_Progressive_NoFGT"); - IF_GUID_EQUAL_RETURN(guid,0xd5f04ff9,0x3418,0x45d8,0x95,0x61,0x32,0xa7,0x6a,0xae,0x2d,0xdd,"DXVA2_ModeH264_VLD_WithFMOASO_NoFGT"); - IF_GUID_EQUAL_RETURN(guid,0x6f3ec719,0x3735,0x42cc,0x80,0x63,0x65,0xcc,0x3c,0xb3,0x66,0x16,"DXVA2_ModeMPEG1_VLD"); - IF_GUID_EQUAL_RETURN(guid,0xbf22ad00,0x03ea,0x4690,0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e,"DXVA2_ModeMPEG2_IDCT"); - IF_GUID_EQUAL_RETURN(guid,0xe6a9f44b,0x61b0,0x4563,0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66,"DXVA2_ModeMPEG2_MoComp"); - IF_GUID_EQUAL_RETURN(guid,0xee27417f,0x5e28,0x4e65,0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9,"DXVA2_ModeMPEG2_VLD"); - IF_GUID_EQUAL_RETURN(guid,0x86695f12,0x340e,0x4f04,0x9f,0xd3,0x92,0x53,0xdd,0x32,0x74,0x60,"DXVA2_ModeMPEG2and1_VLD"); - IF_GUID_EQUAL_RETURN(guid,0xab998b5b,0x4258,0x44a9,0x9f,0xeb,0x94,0xe5,0x97,0xa6,0xba,0xae,"DXVA2_ModeMPEG4pt2_VLD_AdvSimple_GMC"); - IF_GUID_EQUAL_RETURN(guid,0xed418a9f,0x010d,0x4eda,0x9a,0xe3,0x9a,0x65,0x35,0x8d,0x8d,0x2e,"DXVA2_ModeMPEG4pt2_VLD_AdvSimple_NoGMC"); - IF_GUID_EQUAL_RETURN(guid,0xefd64d74,0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19,"DXVA2_ModeMPEG4pt2_VLD_Simple"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA0,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeVC1_A"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA1,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeVC1_B"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA2,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeVC1_C"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA4,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeVC1_D2010"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beA3,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeVC1_D"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be80,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeWMV8_A"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be81,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeWMV8_B"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be90,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeWMV9_A"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be91,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeWMV9_B"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be94,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_ModeWMV9_C"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beD0,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVA2_NoEncrypt"); - IF_GUID_EQUAL_RETURN(guid,0x335aa36e,0x7884,0x43a4,0x9c,0x91,0x7f,0x87,0xfa,0xf3,0xe3,0x7e,"DXVA2_VideoProcBobDevice"); - IF_GUID_EQUAL_RETURN(guid,0x5a54a0c9,0xc7ec,0x4bd9,0x8e,0xde,0xf3,0xc7,0x5d,0xc4,0x39,0x3b,"DXVA2_VideoProcProgressiveDevice"); - IF_GUID_EQUAL_RETURN(guid,0x4553d47f,0xee7e,0x4e3f,0x94,0x75,0xdb,0xf1,0x37,0x6c,0x48,0x10,"DXVA2_VideoProcSoftwareDevice"); - IF_GUID_EQUAL_RETURN(guid,0xa0386e75,0xf70c,0x464c,0xa9,0xce,0x33,0xc4,0x4e,0x09,0x16,0x23,"DXVAHDControlGuid"); - IF_GUID_EQUAL_RETURN(guid,0x681e3d1e,0x5674,0x4fb3,0xa5,0x03,0x2f,0x20,0x55,0xe9,0x1f,0x60,"DXVAHDETWGUID_CREATEVIDEOPROCESSOR"); - IF_GUID_EQUAL_RETURN(guid,0xf943f0a0,0x3f16,0x43e0,0x80,0x93,0x10,0x5a,0x98,0x6a,0xa5,0xf1,"DXVAHDETWGUID_DESTROYVIDEOPROCESSOR"); - IF_GUID_EQUAL_RETURN(guid,0xbef3d435,0x78c7,0x4de3,0x97,0x07,0xcd,0x1b,0x08,0x3b,0x16,0x0a,"DXVAHDETWGUID_VIDEOPROCESSBLTHD"); - IF_GUID_EQUAL_RETURN(guid,0x27ae473e,0xa5fc,0x4be5,0xb4,0xe3,0xf2,0x49,0x94,0xd3,0xc4,0x95,"DXVAHDETWGUID_VIDEOPROCESSBLTHD_STREAM"); - IF_GUID_EQUAL_RETURN(guid,0x76c94b5a,0x193f,0x4692,0x94,0x84,0xa4,0xd9,0x99,0xda,0x81,0xa8,"DXVAHDETWGUID_VIDEOPROCESSBLTSTATE"); - IF_GUID_EQUAL_RETURN(guid,0x262c0b02,0x209d,0x47ed,0x94,0xd8,0x82,0xae,0x02,0xb8,0x4a,0xa7,"DXVAHDETWGUID_VIDEOPROCESSSTREAMSTATE"); - IF_GUID_EQUAL_RETURN(guid,0x9c601e3c,0x0f33,0x414c,0xa7,0x39,0x99,0x54,0x0e,0xe4,0x2d,0xa5,"DXVAHD_STREAM_STATE_PRIVATE_IVTC"); - IF_GUID_EQUAL_RETURN(guid,0xd2457add,0x8999,0x45ed,0x8a,0x8a,0xd1,0xaa,0x04,0x7b,0xa4,0xd5,"DXVA_COPPDevice"); - IF_GUID_EQUAL_RETURN(guid,0xc6f4d673,0x6174,0x4184,0x8e,0x35,0xf6,0xdb,0x52,0x0,0xbc,0xba,"DXVA_COPPQueryBusData"); - IF_GUID_EQUAL_RETURN(guid,0x81d0bfd5,0x6afe,0x48c2,0x99,0xc0,0x95,0xa0,0x8f,0x97,0xc5,0xda,"DXVA_COPPQueryConnectorType"); - IF_GUID_EQUAL_RETURN(guid,0xd7bf1ba3,0xad13,0x4f8e,0xaf,0x98,0x0d,0xcb,0x3c,0xa2,0x04,0xcc,"DXVA_COPPQueryDisplayData"); - IF_GUID_EQUAL_RETURN(guid,0x1957210a,0x7766,0x452a,0xb9,0x9a,0xd2,0x7a,0xed,0x54,0xf0,0x3a,"DXVA_COPPQueryGlobalProtectionLevel"); - IF_GUID_EQUAL_RETURN(guid,0xdb59d74,0xa992,0x492e,0xa0,0xbd,0xc2,0x3f,0xda,0x56,0x4e,0x0,"DXVA_COPPQueryHDCPKeyData"); - IF_GUID_EQUAL_RETURN(guid,0xb2075857,0x3eda,0x4d5d,0x88,0xdb,0x74,0x8f,0x8c,0x1a,0x05,0x49,"DXVA_COPPQueryLocalProtectionLevel"); - IF_GUID_EQUAL_RETURN(guid,0x38f2a801,0x9a6c,0x48bb,0x91,0x07,0xb6,0x69,0x6e,0x6f,0x17,0x97,"DXVA_COPPQueryProtectionType"); - IF_GUID_EQUAL_RETURN(guid,0x6629a591,0x3b79,0x4cf3,0x92,0x4a,0x11,0xe8,0xe7,0x81,0x16,0x71,"DXVA_COPPQuerySignaling"); - IF_GUID_EQUAL_RETURN(guid,0x9bb9327c,0x4eb5,0x4727,0x9f,0x00,0xb4,0x2b,0x09,0x19,0xc0,0xda,"DXVA_COPPSetProtectionLevel"); - IF_GUID_EQUAL_RETURN(guid,0x9a631a5,0xd684,0x4c60,0x8e,0x4d,0xd3,0xbb,0xf,0xb,0xe3,0xee,"DXVA_COPPSetSignaling"); - IF_GUID_EQUAL_RETURN(guid,0x9f200913,0x2ffd,0x4056,0x9f,0x1e,0xe1,0xb5,0x08,0xf2,0x2d,0xcf,"DXVA_ProcAmpControlDevice"); - IF_GUID_EQUAL_RETURN(guid,0x335aa36e,0x7884,0x43a4,0x9c,0x91,0x7f,0x87,0xfa,0xf3,0xe3,0x7e,"DXVAp_DeinterlaceBobDevice"); - IF_GUID_EQUAL_RETURN(guid,0x0e85cb93,0x3046,0x4ff0,0xae,0xcc,0xd5,0x8c,0xb5,0xf0,0x35,0xfd,"DXVAp_DeinterlaceContainerDevice"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be0A,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVAp_ModeMPEG2_A"); - IF_GUID_EQUAL_RETURN(guid,0x1b81be0C,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVAp_ModeMPEG2_C"); - IF_GUID_EQUAL_RETURN(guid,0x1b81beD0,0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5,"DXVAp_NoEncrypt"); - IF_GUID_EQUAL_RETURN(guid,0x84b783af,0xd103,0x4b0a,0x84,0x15,0xe7,0x39,0x42,0x41,0x0f,0x4b,"DataGrid_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa0177842,0xd94f,0x42a5,0x81,0x4b,0x60,0x68,0xad,0xdc,0x8d,0xa5,"DataItem_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7c5865b8,0x9992,0x40fd,0x8d,0xb0,0x6b,0xf1,0xd3,0x17,0xf9,0x98,"DescribedBy_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6d67f02e,0xc0b0,0x4b10,0xb5,0xb9,0x18,0xd6,0xec,0xf9,0x87,0x60,"Dock_DockPosition_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9cbaa846,0x83c8,0x428d,0x82,0x7f,0x7e,0x60,0x63,0xfe,0x06,0x20,"Dock_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3cd6bb6f,0x6f08,0x4562,0xb2,0x29,0xe4,0xe2,0xfc,0x7a,0x9e,0xb4,"Document_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc3ede6fa,0x3451,0x4e0f,0x9e,0x71,0xdf,0x9c,0x28,0xa,0x46,0x57,"Drag_DragCancel_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x38e96188,0xef1f,0x463e,0x91,0xca,0x3a,0x77,0x92,0xc2,0x9c,0xaf,"Drag_DragComplete_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x883a480b,0x3aa9,0x429d,0x95,0xe4,0xd9,0xc8,0xd0,0x11,0xf0,0xdd,"Drag_DragStart_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x646f2779,0x48d3,0x4b23,0x89,0x2,0x4b,0xf1,0x0,0x0,0x5d,0xf3,"Drag_DropEffect_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf5d61156,0x7ce6,0x49be,0xa8,0x36,0x92,0x69,0xdc,0xec,0x92,0xf,"Drag_DropEffects_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x77c1562c,0x7b86,0x4b21,0x9e,0xd7,0x3c,0xef,0xda,0x6f,0x4c,0x43,"Drag_GrabbedItems_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x45f206f3,0x75cc,0x4cca,0xa9,0xb9,0xfc,0xdf,0xb9,0x82,0xd8,0xa2,"Drag_IsGrabbed_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc0bee21f,0xccb3,0x4fed,0x99,0x5b,0x11,0x4f,0x6e,0x3d,0x27,0x28,"Drag_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xaad9319b,0x32c,0x4a88,0x96,0x1d,0x1c,0xf5,0x79,0x58,0x1e,0x34,"DropTarget_DragEnter_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf82eb15,0x24a2,0x4988,0x92,0x17,0xde,0x16,0x2a,0xee,0x27,0x2b,"DropTarget_DragLeave_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8bb75975,0xa0ca,0x4981,0xb8,0x18,0x87,0xfc,0x66,0xe9,0x50,0x9d,"DropTarget_DropTargetEffect_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xbc1dd4ed,0xcb89,0x45f1,0xa5,0x92,0xe0,0x3b,0x8,0xae,0x79,0xf,"DropTarget_DropTargetEffects_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x622cead8,0x1edb,0x4a3d,0xab,0xbc,0xbe,0x22,0x11,0xff,0x68,0xb5,"DropTarget_Dropped_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xbcbec56,0xbd34,0x4b7b,0x9f,0xd5,0x26,0x59,0x90,0x5e,0xa3,0xdc,"DropTarget_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x49cc4c43,0xca83,0x4ad4,0xa9,0xaf,0xf3,0x69,0x6a,0xf6,0x66,0xdf,"ENCAPIPARAM_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0xee5fb25c,0xc713,0x40d1,0x9d,0x58,0xc0,0xd7,0x24,0x1e,0x25,0xf,"ENCAPIPARAM_BITRATE_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x703f16a9,0x3d48,0x44a1,0xb0,0x77,0x1,0x8d,0xff,0x91,0x5d,0x19,"ENCAPIPARAM_PEAK_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0xc0171db,0xfefc,0x4af7,0x99,0x91,0xa5,0x65,0x7c,0x19,0x1c,0xd1,"ENCAPIPARAM_SAP_MODE"); - IF_GUID_EQUAL_RETURN(guid,0xb4e9db8b,0x34ba,0x4c39,0xb5,0xcc,0x16,0xa1,0xbd,0x2c,0x41,0x1c,"EP_AdvQueryPane"); - IF_GUID_EQUAL_RETURN(guid,0xd9745868,0xca5f,0x4a76,0x91,0xcd,0xf5,0xa1,0x29,0xfb,0xb0,0x76,"EP_Commands"); - IF_GUID_EQUAL_RETURN(guid,0x72e81700,0xe3ec,0x4660,0xbf,0x24,0x3c,0x3b,0x7b,0x64,0x88,0x06,"EP_Commands_Organize"); - IF_GUID_EQUAL_RETURN(guid,0x21f7c32d,0xeeaa,0x439b,0xbb,0x51,0x37,0xb9,0x6f,0xd6,0xa9,0x43,"EP_Commands_View"); - IF_GUID_EQUAL_RETURN(guid,0x43abf98b,0x89b8,0x472d,0xb9,0xce,0xe6,0x9b,0x82,0x29,0xf0,0x19,"EP_DetailsPane"); - IF_GUID_EQUAL_RETURN(guid,0xcb316b22,0x25f7,0x42b8,0x8a,0x09,0x54,0x0d,0x23,0xa4,0x3c,0x2f,"EP_NavPane"); - IF_GUID_EQUAL_RETURN(guid,0x893c63d1,0x45c8,0x4d17,0xbe,0x19,0x22,0x3b,0xe7,0x1b,0xe3,0x65,"EP_PreviewPane"); - IF_GUID_EQUAL_RETURN(guid,0x65bcde4f,0x4f07,0x4f27,0x83,0xa7,0x1a,0xfc,0xa4,0xdf,0x7d,0xdd,"EP_QueryPane"); - IF_GUID_EQUAL_RETURN(guid,0xd27524a8,0xc9f2,0x4834,0xa1,0x6,0xdf,0x88,0x89,0xfd,0x4f,0x37,"EP_Ribbon"); - IF_GUID_EQUAL_RETURN(guid,0x65fe56ce,0x5cfe,0x4bc4,0xad,0x8a,0x7a,0xe3,0xfe,0x7e,0x8f,0x7c,"EP_StatusBar"); - IF_GUID_EQUAL_RETURN(guid,0xE2C2E9DE,0x09B1,0x4B04,0x84,0xE5,0x07,0x93,0x12,0x25,0xEE,0x04,"EVENTCONTEXT_VOLUMESLIDER"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4EA,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterCOPPBlock"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E8,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterCOPPUnblock"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4ED,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterDataFormatFailure"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4EC,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterDataFormatOK"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E2,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterRatingChange"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E3,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterRatingsBlock"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E4,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterRatingsUnblock"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E5,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_DTFilterXDSPacket"); - IF_GUID_EQUAL_RETURN(guid,0x16155770,0xaed5,0x475c,0xbb,0x98,0x95,0xa3,0x30,0x70,0xdf,0xc,"EVENTID_DemultiplexerFilterDiscontinuity"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4EF,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_ETDTFilterLicenseFailure"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4EE,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_ETDTFilterLicenseOK"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4F0,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_ETFilterCopyNever"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4EB,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_ETFilterCopyOnce"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E7,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_ETFilterEncryptionOff"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E6,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_ETFilterEncryptionOn"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E9,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_EncDecFilterError"); - IF_GUID_EQUAL_RETURN(guid,0x4a1b465b,0xfb9,0x4159,0xaf,0xbd,0xe3,0x30,0x6,0xa0,0xf9,0xf4,"EVENTID_EncDecFilterEvent"); - IF_GUID_EQUAL_RETURN(guid,0x24b2280a,0xb2aa,0x4777,0xbf,0x65,0x63,0xf3,0x5e,0x7b,0x2,0x4a,"EVENTID_FormatNotSupportedEvent"); - IF_GUID_EQUAL_RETURN(guid,0x8966a89e,0xf83e,0x4c0e,0xbc,0x3b,0xbf,0xa7,0x64,0x9e,0x4,0xcb,"EVENTID_SBE2RecControlStarted"); - IF_GUID_EQUAL_RETURN(guid,0x454b1ec8,0xc9b,0x4caa,0xb1,0xa1,0x1e,0x7a,0x26,0x66,0xf6,0xc3,"EVENTID_SBE2RecControlStopped"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4DF,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_XDSCodecDuplicateXDSRating"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E1,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_XDSCodecNewXDSPacket"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4E0,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"EVENTID_XDSCodecNewXDSRating"); - IF_GUID_EQUAL_RETURN(guid,0xe447df0a,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_AllowBatching"); - IF_GUID_EQUAL_RETURN(guid,0xe447df02,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_AllowDropToBob"); - IF_GUID_EQUAL_RETURN(guid,0xe447df06,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_AllowDropToHalfInterlace"); - IF_GUID_EQUAL_RETURN(guid,0xe447df04,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_AllowDropToThrottle"); - IF_GUID_EQUAL_RETURN(guid,0xe447df08,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_AllowScaling"); - IF_GUID_EQUAL_RETURN(guid,0xe447df09,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_ForceBatching"); - IF_GUID_EQUAL_RETURN(guid,0xe447df01,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_ForceBob"); - IF_GUID_EQUAL_RETURN(guid,0xe447df05,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_ForceHalfInterlace"); - IF_GUID_EQUAL_RETURN(guid,0xe447df07,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_ForceScaling"); - IF_GUID_EQUAL_RETURN(guid,0xe447df03,0x10ca,0x4d17,0xb1,0x7e,0x6a,0x84,0x0f,0x8a,0x3a,0x4c,"EVRConfig_ForceThrottle"); - IF_GUID_EQUAL_RETURN(guid,0x6504a5c8,0x2c86,0x4f87,0xae,0x7b,0x1a,0xbd,0xdc,0x81,0x0c,0xf9,"Edit_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x275a4c48,0x85a7,0x4f69,0xab,0xa0,0xaf,0x15,0x76,0x10,0x00,0x2b,"ExpandCollapse_ExpandCollapseState_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xae05efa2,0xf9d1,0x428a,0x83,0x4c,0x53,0xa5,0xc5,0x2f,0x9b,0x8b,"ExpandCollapse_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9d453eb7,0xd2a6,0x4dbd,0xa2,0xe3,0xfb,0xd0,0xed,0x91,0x09,0xa9,"FILE_TYPE_NOTIFICATION_GUID_CRASHDUMP_FILE"); - IF_GUID_EQUAL_RETURN(guid,0xb7624d64,0xb9a3,0x4cf8,0x80,0x11,0x5b,0x86,0xc9,0x40,0xe7,0xb7,"FILE_TYPE_NOTIFICATION_GUID_HIBERNATION_FILE"); - IF_GUID_EQUAL_RETURN(guid,0x0d0a64a1,0x38fc,0x4db8,0x9f,0xe7,0x3f,0x43,0x52,0xcd,0x7c,0x5c,"FILE_TYPE_NOTIFICATION_GUID_PAGE_FILE"); - IF_GUID_EQUAL_RETURN(guid,0xa144ed38,0x8e12,0x4de4,0x9d,0x96,0xe6,0x47,0x40,0xb1,0xa5,0x24,"FIREWALL_PORT_CLOSE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb7569e07,0x8421,0x4ee0,0xad,0x10,0x86,0x91,0x5a,0xfd,0xad,0x09,"FIREWALL_PORT_OPEN_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x328d8b21,0x7729,0x4bfc,0x95,0x4c,0x90,0x2b,0x32,0x9d,0x56,0xb0,"FMTID_Briefcase"); - IF_GUID_EQUAL_RETURN(guid,0x7ecd8b0e,0xc136,0x4a9b,0x94,0x11,0x4e,0xbd,0x66,0x73,0xcc,0xc3,"FMTID_CustomImageProperties"); - IF_GUID_EQUAL_RETURN(guid,0xaeac19e4,0x89ae,0x4508,0xb9,0xb7,0xbb,0x86,0x7a,0xbe,0xe2,0xed,"FMTID_DRM"); - IF_GUID_EQUAL_RETURN(guid,0x78c34fc8,0x104a,0x4aca,0x9e,0xa4,0x52,0x4d,0x52,0x99,0x6e,0x57,"FMTID_Device"); - IF_GUID_EQUAL_RETURN(guid,0x53808008,0x07BB,0x4661,0xBC,0x3C,0xB5,0x95,0x3E,0x70,0x85,0x60,"FMTID_DeviceInterface"); - IF_GUID_EQUAL_RETURN(guid,0x9b174b33,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71,"FMTID_Displaced"); - IF_GUID_EQUAL_RETURN(guid,0x904b03a2,0x471d,0x423c,0xa5,0x84,0xf3,0x48,0x32,0x38,0xa1,0x46,"FMTID_FD"); - IF_GUID_EQUAL_RETURN(guid,0x14b81da1,0x0135,0x4d31,0x96,0xd9,0x6c,0xbf,0xc9,0x67,0x1a,0x99,"FMTID_ImageProperties"); - IF_GUID_EQUAL_RETURN(guid,0x5d76b67f,0x9b3d,0x44bb,0xb6,0xae,0x25,0xda,0x4f,0x63,0x8a,0x67,"FMTID_LibraryProperties"); - IF_GUID_EQUAL_RETURN(guid,0x56a3372e,0xce9c,0x11d2,0x9f,0xe,0x0,0x60,0x97,0xc6,0x86,0xf6,"FMTID_MUSIC"); - IF_GUID_EQUAL_RETURN(guid,0x9b174b34,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71,"FMTID_Misc"); - IF_GUID_EQUAL_RETURN(guid,0x656A3BB3,0xECC0,0x43FD,0x84,0x77,0x4A,0xE0,0x40,0x4A,0x96,0xCD,"FMTID_PNPX"); - IF_GUID_EQUAL_RETURN(guid,0x4FC5077E,0xB686,0x44BE,0x93,0xE3,0x86,0xCA,0xFE,0x36,0x8C,0xCD,"FMTID_PNPXDynamicProperty"); - IF_GUID_EQUAL_RETURN(guid,0x8807cae6,0x7db6,0x4f10,0x8e,0xe4,0x43,0x5e,0xaa,0x13,0x92,0xbc,"FMTID_Pairing"); - IF_GUID_EQUAL_RETURN(guid,0x75f9adca,0x097d,0x45c3,0xa6,0xe4,0xba,0xb2,0x9e,0x27,0x6f,0x3e,"FMTID_PrinterPropertyBag"); - IF_GUID_EQUAL_RETURN(guid,0x49691c90,0x7e17,0x101a,0xa9,0x1c,0x08,0x00,0x2b,0x2e,0xcd,0xa9,"FMTID_Query"); - IF_GUID_EQUAL_RETURN(guid,0x28636aa6,0x953d,0x11d2,0xb5,0xd6,0x0,0xc0,0x4f,0xd9,0x18,0xd0,"FMTID_ShellDetails"); - IF_GUID_EQUAL_RETURN(guid,0xb725f130,0x47ef,0x101a,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac,"FMTID_Storage"); - IF_GUID_EQUAL_RETURN(guid,0x9b174b35,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71,"FMTID_Volume"); - IF_GUID_EQUAL_RETURN(guid,0x92506491,0xFF95,0x4724,0xA0,0x5A,0x5B,0x81,0x88,0x5A,0x7C,0x92,"FMTID_WSD"); - IF_GUID_EQUAL_RETURN(guid,0xf2275480,0xf782,0x4291,0xbd,0x94,0xf1,0x36,0x93,0x51,0x3a,0xec,"FMTID_WebView"); - IF_GUID_EQUAL_RETURN(guid,0x008ca0b1,0x55b4,0x4c56,0xb8,0xa8,0x4d,0xe4,0xb2,0x99,0xd3,0xbe,"FOLDERID_AccountPictures"); - IF_GUID_EQUAL_RETURN(guid,0xde61d971,0x5ebc,0x4f02,0xa3,0xa9,0x6c,0x82,0x89,0x5e,0x5c,0x04,"FOLDERID_AddNewPrograms"); - IF_GUID_EQUAL_RETURN(guid,0x724EF170,0xA42D,0x4FEF,0x9F,0x26,0xB6,0x0E,0x84,0x6F,0xBA,0x4F,"FOLDERID_AdminTools"); - IF_GUID_EQUAL_RETURN(guid,0xa305ce99,0xf527,0x492b,0x8b,0x1a,0x7e,0x76,0xfa,0x98,0xd6,0xe4,"FOLDERID_AppUpdates"); - IF_GUID_EQUAL_RETURN(guid,0xa3918781,0xe5f2,0x4890,0xb3,0xd9,0xa7,0xe5,0x43,0x32,0x32,0x8c,"FOLDERID_ApplicationShortcuts"); - IF_GUID_EQUAL_RETURN(guid,0x1e87508d,0x89c2,0x42f0,0x8a,0x7e,0x64,0x5a,0x0f,0x50,0xca,0x58,"FOLDERID_AppsFolder"); - IF_GUID_EQUAL_RETURN(guid,0x9E52AB10,0xF80D,0x49DF,0xAC,0xB8,0x43,0x30,0xF5,0x68,0x78,0x55,"FOLDERID_CDBurning"); - IF_GUID_EQUAL_RETURN(guid,0xdf7266ac,0x9274,0x4867,0x8d,0x55,0x3b,0xd6,0x61,0xde,0x87,0x2d,"FOLDERID_ChangeRemovePrograms"); - IF_GUID_EQUAL_RETURN(guid,0xD0384E7D,0xBAC3,0x4797,0x8F,0x14,0xCB,0xA2,0x29,0xB3,0x92,0xB5,"FOLDERID_CommonAdminTools"); - IF_GUID_EQUAL_RETURN(guid,0xC1BAE2D0,0x10DF,0x4334,0xBE,0xDD,0x7A,0xA2,0x0B,0x22,0x7A,0x9D,"FOLDERID_CommonOEMLinks"); - IF_GUID_EQUAL_RETURN(guid,0x0139D44E,0x6AFE,0x49F2,0x86,0x90,0x3D,0xAF,0xCA,0xE6,0xFF,0xB8,"FOLDERID_CommonPrograms"); - IF_GUID_EQUAL_RETURN(guid,0xA4115719,0xD62E,0x491D,0xAA,0x7C,0xE7,0x4B,0x8B,0xE3,0xB0,0x67,"FOLDERID_CommonStartMenu"); - IF_GUID_EQUAL_RETURN(guid,0x82A5EA35,0xD9CD,0x47C5,0x96,0x29,0xE1,0x5D,0x2F,0x71,0x4E,0x6E,"FOLDERID_CommonStartup"); - IF_GUID_EQUAL_RETURN(guid,0xB94237E7,0x57AC,0x4347,0x91,0x51,0xB0,0x8C,0x6C,0x32,0xD1,0xF7,"FOLDERID_CommonTemplates"); - IF_GUID_EQUAL_RETURN(guid,0x0AC0837C,0xBBF8,0x452A,0x85,0x0D,0x79,0xD0,0x8E,0x66,0x7C,0xA7,"FOLDERID_ComputerFolder"); - IF_GUID_EQUAL_RETURN(guid,0x4bfefb45,0x347d,0x4006,0xa5,0xbe,0xac,0x0c,0xb0,0x56,0x71,0x92,"FOLDERID_ConflictFolder"); - IF_GUID_EQUAL_RETURN(guid,0x6F0CD92B,0x2E97,0x45D1,0x88,0xFF,0xB0,0xD1,0x86,0xB8,0xDE,0xDD,"FOLDERID_ConnectionsFolder"); - IF_GUID_EQUAL_RETURN(guid,0x56784854,0xc6cb,0x462b,0x81,0x69,0x88,0xe3,0x50,0xac,0xb8,0x82,"FOLDERID_Contacts"); - IF_GUID_EQUAL_RETURN(guid,0x82A74AEB,0xAEB4,0x465C,0xA0,0x14,0xD0,0x97,0xEE,0x34,0x6D,0x63,"FOLDERID_ControlPanelFolder"); - IF_GUID_EQUAL_RETURN(guid,0x2B0F765D,0xC0E9,0x4171,0x90,0x8E,0x08,0xA6,0x11,0xB8,0x4F,0xF6,"FOLDERID_Cookies"); - IF_GUID_EQUAL_RETURN(guid,0xB4BFCC3A,0xDB2C,0x424C,0xB0,0x29,0x7F,0xE9,0x9A,0x87,0xC6,0x41,"FOLDERID_Desktop"); - IF_GUID_EQUAL_RETURN(guid,0x5ce4a5e9,0xe4eb,0x479d,0xb8,0x9f,0x13,0x0c,0x02,0x88,0x61,0x55,"FOLDERID_DeviceMetadataStore"); - IF_GUID_EQUAL_RETURN(guid,0xFDD39AD0,0x238F,0x46AF,0xAD,0xB4,0x6C,0x85,0x48,0x03,0x69,0xC7,"FOLDERID_Documents"); - IF_GUID_EQUAL_RETURN(guid,0x7b0db17d,0x9cd2,0x4a93,0x97,0x33,0x46,0xcc,0x89,0x02,0x2e,0x7c,"FOLDERID_DocumentsLibrary"); - IF_GUID_EQUAL_RETURN(guid,0x374de290,0x123f,0x4565,0x91,0x64,0x39,0xc4,0x92,0x5e,0x46,0x7b,"FOLDERID_Downloads"); - IF_GUID_EQUAL_RETURN(guid,0x1777F761,0x68AD,0x4D8A,0x87,0xBD,0x30,0xB7,0x59,0xFA,0x33,0xDD,"FOLDERID_Favorites"); - IF_GUID_EQUAL_RETURN(guid,0xFD228CB7,0xAE11,0x4AE3,0x86,0x4C,0x16,0xF3,0x91,0x0A,0xB8,0xFE,"FOLDERID_Fonts"); - IF_GUID_EQUAL_RETURN(guid,0x54fae61,0x4dd8,0x4787,0x80,0xb6,0x9,0x2,0x20,0xc4,0xb7,0x0,"FOLDERID_GameTasks"); - IF_GUID_EQUAL_RETURN(guid,0xcac52c1a,0xb53d,0x4edc,0x92,0xd7,0x6b,0x2e,0x8a,0xc1,0x94,0x34,"FOLDERID_Games"); - IF_GUID_EQUAL_RETURN(guid,0xD9DC8A3B,0xB784,0x432E,0xA7,0x81,0x5A,0x11,0x30,0xA7,0x59,0x63,"FOLDERID_History"); - IF_GUID_EQUAL_RETURN(guid,0x52528a6b,0xb9e3,0x4add,0xb6,0xd,0x58,0x8c,0x2d,0xba,0x84,0x2d,"FOLDERID_HomeGroup"); - IF_GUID_EQUAL_RETURN(guid,0x9b74b6a3,0xdfd,0x4f11,0x9e,0x78,0x5f,0x78,0x0,0xf2,0xe7,0x72,"FOLDERID_HomeGroupCurrentUser"); - IF_GUID_EQUAL_RETURN(guid,0xbcb5256f,0x79f6,0x4cee,0xb7,0x25,0xdc,0x34,0xe4,0x2,0xfd,0x46,"FOLDERID_ImplicitAppShortcuts"); - IF_GUID_EQUAL_RETURN(guid,0x352481E8,0x33BE,0x4251,0xBA,0x85,0x60,0x07,0xCA,0xED,0xCF,0x9D,"FOLDERID_InternetCache"); - IF_GUID_EQUAL_RETURN(guid,0x4D9F7874,0x4E0C,0x4904,0x96,0x7B,0x40,0xB0,0xD2,0x0C,0x3E,0x4B,"FOLDERID_InternetFolder"); - IF_GUID_EQUAL_RETURN(guid,0x1b3ea5dc,0xb587,0x4786,0xb4,0xef,0xbd,0x1d,0xc3,0x32,0xae,0xae,"FOLDERID_Libraries"); - IF_GUID_EQUAL_RETURN(guid,0xbfb9d5e0,0xc6a9,0x404c,0xb2,0xb2,0xae,0x6d,0xb6,0xaf,0x49,0x68,"FOLDERID_Links"); - IF_GUID_EQUAL_RETURN(guid,0xF1B32785,0x6FBA,0x4FCF,0x9D,0x55,0x7B,0x8E,0x7F,0x15,0x70,0x91,"FOLDERID_LocalAppData"); - IF_GUID_EQUAL_RETURN(guid,0xA520A1A4,0x1780,0x4FF6,0xBD,0x18,0x16,0x73,0x43,0xC5,0xAF,0x16,"FOLDERID_LocalAppDataLow"); - IF_GUID_EQUAL_RETURN(guid,0x2A00375E,0x224C,0x49DE,0xB8,0xD1,0x44,0x0D,0xF7,0xEF,0x3D,0xDC,"FOLDERID_LocalizedResourcesDir"); - IF_GUID_EQUAL_RETURN(guid,0x4BD8D571,0x6D19,0x48D3,0xBE,0x97,0x42,0x22,0x20,0x08,0x0E,0x43,"FOLDERID_Music"); - IF_GUID_EQUAL_RETURN(guid,0x2112ab0a,0xc86a,0x4ffe,0xa3,0x68,0xd,0xe9,0x6e,0x47,0x1,0x2e,"FOLDERID_MusicLibrary"); - IF_GUID_EQUAL_RETURN(guid,0xC5ABBF53,0xE17F,0x4121,0x89,0x00,0x86,0x62,0x6F,0xC2,0xC9,0x73,"FOLDERID_NetHood"); - IF_GUID_EQUAL_RETURN(guid,0xD20BEEC4,0x5CA8,0x4905,0xAE,0x3B,0xBF,0x25,0x1E,0xA0,0x9B,0x53,"FOLDERID_NetworkFolder"); - IF_GUID_EQUAL_RETURN(guid,0x2C36C0AA,0x5812,0x4b87,0xbf,0xd0,0x4c,0xd0,0xdf,0xb1,0x9b,0x39,"FOLDERID_OriginalImages"); - IF_GUID_EQUAL_RETURN(guid,0x69D2CF90,0xFC33,0x4FB7,0x9A,0x0C,0xEB,0xB0,0xF0,0xFC,0xB4,0x3C,"FOLDERID_PhotoAlbums"); - IF_GUID_EQUAL_RETURN(guid,0x33E28130,0x4E1E,0x4676,0x83,0x5A,0x98,0x39,0x5C,0x3B,0xC3,0xBB,"FOLDERID_Pictures"); - IF_GUID_EQUAL_RETURN(guid,0xa990ae9f,0xa03b,0x4e80,0x94,0xbc,0x99,0x12,0xd7,0x50,0x41,0x4,"FOLDERID_PicturesLibrary"); - IF_GUID_EQUAL_RETURN(guid,0xDE92C1C7,0x837F,0x4F69,0xA3,0xBB,0x86,0xE6,0x31,0x20,0x4A,0x23,"FOLDERID_Playlists"); - IF_GUID_EQUAL_RETURN(guid,0x9274BD8D,0xCFD1,0x41C3,0xB3,0x5E,0xB1,0x3F,0x55,0xA7,0x58,0xF4,"FOLDERID_PrintHood"); - IF_GUID_EQUAL_RETURN(guid,0x76FC4E2D,0xD6AD,0x4519,0xA6,0x63,0x37,0xBD,0x56,0x06,0x81,0x85,"FOLDERID_PrintersFolder"); - IF_GUID_EQUAL_RETURN(guid,0x5E6C858F,0x0E22,0x4760,0x9A,0xFE,0xEA,0x33,0x17,0xB6,0x71,0x73,"FOLDERID_Profile"); - IF_GUID_EQUAL_RETURN(guid,0x62AB5D82,0xFDC1,0x4DC3,0xA9,0xDD,0x07,0x0D,0x1D,0x49,0x5D,0x97,"FOLDERID_ProgramData"); - IF_GUID_EQUAL_RETURN(guid,0x905e63b6,0xc1bf,0x494e,0xb2,0x9c,0x65,0xb7,0x32,0xd3,0xd2,0x1a,"FOLDERID_ProgramFiles"); - IF_GUID_EQUAL_RETURN(guid,0xF7F1ED05,0x9F6D,0x47A2,0xAA,0xAE,0x29,0xD3,0x17,0xC6,0xF0,0x66,"FOLDERID_ProgramFilesCommon"); - IF_GUID_EQUAL_RETURN(guid,0x6365d5a7,0xf0d,0x45e5,0x87,0xf6,0xd,0xa5,0x6b,0x6a,0x4f,0x7d,"FOLDERID_ProgramFilesCommonX64"); - IF_GUID_EQUAL_RETURN(guid,0xDE974D24,0xD9C6,0x4D3E,0xBF,0x91,0xF4,0x45,0x51,0x20,0xB9,0x17,"FOLDERID_ProgramFilesCommonX86"); - IF_GUID_EQUAL_RETURN(guid,0x6d809377,0x6af0,0x444b,0x89,0x57,0xa3,0x77,0x3f,0x02,0x20,0x0e,"FOLDERID_ProgramFilesX64"); - IF_GUID_EQUAL_RETURN(guid,0x7C5A40EF,0xA0FB,0x4BFC,0x87,0x4A,0xC0,0xF2,0xE0,0xB9,0xFA,0x8E,"FOLDERID_ProgramFilesX86"); - IF_GUID_EQUAL_RETURN(guid,0xA77F5D77,0x2E2B,0x44C3,0xA6,0xA2,0xAB,0xA6,0x01,0x05,0x4A,0x51,"FOLDERID_Programs"); - IF_GUID_EQUAL_RETURN(guid,0xDFDF76A2,0xC82A,0x4D63,0x90,0x6A,0x56,0x44,0xAC,0x45,0x73,0x85,"FOLDERID_Public"); - IF_GUID_EQUAL_RETURN(guid,0xC4AA340D,0xF20F,0x4863,0xAF,0xEF,0xF8,0x7E,0xF2,0xE6,0xBA,0x25,"FOLDERID_PublicDesktop"); - IF_GUID_EQUAL_RETURN(guid,0xED4824AF,0xDCE4,0x45A8,0x81,0xE2,0xFC,0x79,0x65,0x08,0x36,0x34,"FOLDERID_PublicDocuments"); - IF_GUID_EQUAL_RETURN(guid,0x3d644c9b,0x1fb8,0x4f30,0x9b,0x45,0xf6,0x70,0x23,0x5f,0x79,0xc0,"FOLDERID_PublicDownloads"); - IF_GUID_EQUAL_RETURN(guid,0xdebf2536,0xe1a8,0x4c59,0xb6,0xa2,0x41,0x45,0x86,0x47,0x6a,0xea,"FOLDERID_PublicGameTasks"); - IF_GUID_EQUAL_RETURN(guid,0x48daf80b,0xe6cf,0x4f4e,0xb8,0x00,0x0e,0x69,0xd8,0x4e,0xe3,0x84,"FOLDERID_PublicLibraries"); - IF_GUID_EQUAL_RETURN(guid,0x3214FAB5,0x9757,0x4298,0xBB,0x61,0x92,0xA9,0xDE,0xAA,0x44,0xFF,"FOLDERID_PublicMusic"); - IF_GUID_EQUAL_RETURN(guid,0xB6EBFB86,0x6907,0x413C,0x9A,0xF7,0x4F,0xC2,0xAB,0xF0,0x7C,0xC5,"FOLDERID_PublicPictures"); - IF_GUID_EQUAL_RETURN(guid,0xE555AB60,0x153B,0x4D17,0x9F,0x04,0xA5,0xFE,0x99,0xFC,0x15,0xEC,"FOLDERID_PublicRingtones"); - IF_GUID_EQUAL_RETURN(guid,0x0482af6c,0x08f1,0x4c34,0x8c,0x90,0xe1,0x7e,0xc9,0x8b,0x1e,0x17,"FOLDERID_PublicUserTiles"); - IF_GUID_EQUAL_RETURN(guid,0x2400183A,0x6185,0x49FB,0xA2,0xD8,0x4A,0x39,0x2A,0x60,0x2B,0xA3,"FOLDERID_PublicVideos"); - IF_GUID_EQUAL_RETURN(guid,0x52a4f021,0x7b75,0x48a9,0x9f,0x6b,0x4b,0x87,0xa2,0x10,0xbc,0x8f,"FOLDERID_QuickLaunch"); - IF_GUID_EQUAL_RETURN(guid,0xAE50C081,0xEBD2,0x438A,0x86,0x55,0x8A,0x09,0x2E,0x34,0x98,0x7A,"FOLDERID_Recent"); - IF_GUID_EQUAL_RETURN(guid,0x1a6fdba2,0xf42d,0x4358,0xa7,0x98,0xb7,0x4d,0x74,0x59,0x26,0xc5,"FOLDERID_RecordedTVLibrary"); - IF_GUID_EQUAL_RETURN(guid,0xB7534046,0x3ECB,0x4C18,0xBE,0x4E,0x64,0xCD,0x4C,0xB7,0xD6,0xAC,"FOLDERID_RecycleBinFolder"); - IF_GUID_EQUAL_RETURN(guid,0x8AD10C31,0x2ADB,0x4296,0xA8,0xF7,0xE4,0x70,0x12,0x32,0xC9,0x72,"FOLDERID_ResourceDir"); - IF_GUID_EQUAL_RETURN(guid,0xC870044B,0xF49E,0x4126,0xA9,0xC3,0xB5,0x2A,0x1F,0xF4,0x11,0xE8,"FOLDERID_Ringtones"); - IF_GUID_EQUAL_RETURN(guid,0xaaa8d5a5,0xf1d6,0x4259,0xba,0xa8,0x78,0xe7,0xef,0x60,0x83,0x5e,"FOLDERID_RoamedTileImages"); - IF_GUID_EQUAL_RETURN(guid,0x3EB685DB,0x65F9,0x4CF6,0xA0,0x3A,0xE3,0xEF,0x65,0x72,0x9F,0x3D,"FOLDERID_RoamingAppData"); - IF_GUID_EQUAL_RETURN(guid,0xbcfc5a,0xed94,0x4e48,0x96,0xa1,0x3f,0x62,0x17,0xf2,0x19,0x90,"FOLDERID_RoamingTiles"); - IF_GUID_EQUAL_RETURN(guid,0xee32e446,0x31ca,0x4aba,0x81,0x4f,0xa5,0xeb,0xd2,0xfd,0x6d,0x5e,"FOLDERID_SEARCH_CSC"); - IF_GUID_EQUAL_RETURN(guid,0x98ec0e18,0x2098,0x4d44,0x86,0x44,0x66,0x97,0x93,0x15,0xa2,0x81,"FOLDERID_SEARCH_MAPI"); - IF_GUID_EQUAL_RETURN(guid,0xB250C668,0xF57D,0x4EE1,0xA6,0x3C,0x29,0x0E,0xE7,0xD1,0xAA,0x1F,"FOLDERID_SampleMusic"); - IF_GUID_EQUAL_RETURN(guid,0xC4900540,0x2379,0x4C75,0x84,0x4B,0x64,0xE6,0xFA,0xF8,0x71,0x6B,"FOLDERID_SamplePictures"); - IF_GUID_EQUAL_RETURN(guid,0x15CA69B3,0x30EE,0x49C1,0xAC,0xE1,0x6B,0x5E,0xC3,0x72,0xAF,0xB5,"FOLDERID_SamplePlaylists"); - IF_GUID_EQUAL_RETURN(guid,0x859EAD94,0x2E85,0x48AD,0xA7,0x1A,0x09,0x69,0xCB,0x56,0xA6,0xCD,"FOLDERID_SampleVideos"); - IF_GUID_EQUAL_RETURN(guid,0x4c5c32ff,0xbb9d,0x43b0,0xb5,0xb4,0x2d,0x72,0xe5,0x4e,0xaa,0xa4,"FOLDERID_SavedGames"); - IF_GUID_EQUAL_RETURN(guid,0x7d1d3a04,0xdebb,0x4115,0x95,0xcf,0x2f,0x29,0xda,0x29,0x20,0xda,"FOLDERID_SavedSearches"); - IF_GUID_EQUAL_RETURN(guid,0xb7bede81,0xdf94,0x4682,0xa7,0xd8,0x57,0xa5,0x26,0x20,0xb8,0x6f,"FOLDERID_Screenshots"); - IF_GUID_EQUAL_RETURN(guid,0x190337d1,0xb8ca,0x4121,0xa6,0x39,0x6d,0x47,0x2d,0x16,0x97,0x2a,"FOLDERID_SearchHome"); - IF_GUID_EQUAL_RETURN(guid,0x8983036C,0x27C0,0x404B,0x8F,0x08,0x10,0x2D,0x10,0xDC,0xFD,0x74,"FOLDERID_SendTo"); - IF_GUID_EQUAL_RETURN(guid,0x7b396e54,0x9ec5,0x4300,0xbe,0xa,0x24,0x82,0xeb,0xae,0x1a,0x26,"FOLDERID_SidebarDefaultParts"); - IF_GUID_EQUAL_RETURN(guid,0xa75d362e,0x50fc,0x4fb7,0xac,0x2c,0xa8,0xbe,0xaa,0x31,0x44,0x93,"FOLDERID_SidebarParts"); - IF_GUID_EQUAL_RETURN(guid,0x625B53C3,0xAB48,0x4EC1,0xBA,0x1F,0xA1,0xEF,0x41,0x46,0xFC,0x19,"FOLDERID_StartMenu"); - IF_GUID_EQUAL_RETURN(guid,0xB97D20BB,0xF46A,0x4C97,0xBA,0x10,0x5E,0x36,0x08,0x43,0x08,0x54,"FOLDERID_Startup"); - IF_GUID_EQUAL_RETURN(guid,0x43668BF8,0xC14E,0x49B2,0x97,0xC9,0x74,0x77,0x84,0xD7,0x84,0xB7,"FOLDERID_SyncManagerFolder"); - IF_GUID_EQUAL_RETURN(guid,0x289a9a43,0xbe44,0x4057,0xa4,0x1b,0x58,0x7a,0x76,0xd7,0xe7,0xf9,"FOLDERID_SyncResultsFolder"); - IF_GUID_EQUAL_RETURN(guid,0xf214138,0xb1d3,0x4a90,0xbb,0xa9,0x27,0xcb,0xc0,0xc5,0x38,0x9a,"FOLDERID_SyncSetupFolder"); - IF_GUID_EQUAL_RETURN(guid,0x1AC14E77,0x02E7,0x4E5D,0xB7,0x44,0x2E,0xB1,0xAE,0x51,0x98,0xB7,"FOLDERID_System"); - IF_GUID_EQUAL_RETURN(guid,0xD65231B0,0xB2F1,0x4857,0xA4,0xCE,0xA8,0xE7,0xC6,0xEA,0x7D,0x27,"FOLDERID_SystemX86"); - IF_GUID_EQUAL_RETURN(guid,0xA63293E8,0x664E,0x48DB,0xA0,0x79,0xDF,0x75,0x9E,0x05,0x09,0xF7,"FOLDERID_Templates"); - IF_GUID_EQUAL_RETURN(guid,0x9e3995ab,0x1f9c,0x4f13,0xb8,0x27,0x48,0xb2,0x4b,0x6c,0x71,0x74,"FOLDERID_UserPinned"); - IF_GUID_EQUAL_RETURN(guid,0x0762D272,0xC50A,0x4BB0,0xA3,0x82,0x69,0x7D,0xCD,0x72,0x9B,0x80,"FOLDERID_UserProfiles"); - IF_GUID_EQUAL_RETURN(guid,0x5cd7aee2,0x2219,0x4a67,0xb8,0x5d,0x6c,0x9c,0xe1,0x56,0x60,0xcb,"FOLDERID_UserProgramFiles"); - IF_GUID_EQUAL_RETURN(guid,0xbcbd3057,0xca5c,0x4622,0xb4,0x2d,0xbc,0x56,0xdb,0x0a,0xe5,0x16,"FOLDERID_UserProgramFilesCommon"); - IF_GUID_EQUAL_RETURN(guid,0xf3ce0f7c,0x4901,0x4acc,0x86,0x48,0xd5,0xd4,0x4b,0x04,0xef,0x8f,"FOLDERID_UsersFiles"); - IF_GUID_EQUAL_RETURN(guid,0xa302545d,0xdeff,0x464b,0xab,0xe8,0x61,0xc8,0x64,0x8d,0x93,0x9b,"FOLDERID_UsersLibraries"); - IF_GUID_EQUAL_RETURN(guid,0x18989B1D,0x99B5,0x455B,0x84,0x1C,0xAB,0x7C,0x74,0xE4,0xDD,0xFC,"FOLDERID_Videos"); - IF_GUID_EQUAL_RETURN(guid,0x491e922f,0x5643,0x4af4,0xa7,0xeb,0x4e,0x7a,0x13,0x8d,0x81,0x74,"FOLDERID_VideosLibrary"); - IF_GUID_EQUAL_RETURN(guid,0xF38BF404,0x1D43,0x42F2,0x93,0x05,0x67,0xDE,0x0B,0x28,0xFC,0x23,"FOLDERID_Windows"); - IF_GUID_EQUAL_RETURN(guid,0xdb2a5d8f,0x06e6,0x4007,0xab,0xa6,0xaf,0x87,0x7d,0x52,0x6e,0xa6,"FOLDERTYPEID_AccountPictures"); - IF_GUID_EQUAL_RETURN(guid,0x91475fe5,0x586b,0x4eba,0x8d,0x75,0xd1,0x74,0x34,0xb8,0xcd,0xf6,"FOLDERTYPEID_Communications"); - IF_GUID_EQUAL_RETURN(guid,0x80213e82,0xbcfd,0x4c4f,0x88,0x17,0xbb,0x27,0x60,0x12,0x67,0xa9,"FOLDERTYPEID_CompressedFolder"); - IF_GUID_EQUAL_RETURN(guid,0xde2b70ec,0x9bf7,0x4a93,0xbd,0x3d,0x24,0x3f,0x78,0x81,0xd4,0x92,"FOLDERTYPEID_Contacts"); - IF_GUID_EQUAL_RETURN(guid,0xde4f0660,0xfa10,0x4b8f,0xa4,0x94,0x06,0x8b,0x20,0xb2,0x23,0x07,"FOLDERTYPEID_ControlPanelCategory"); - IF_GUID_EQUAL_RETURN(guid,0x0c3794f3,0xb545,0x43aa,0xa3,0x29,0xc3,0x74,0x30,0xc5,0x8d,0x2a,"FOLDERTYPEID_ControlPanelClassic"); - IF_GUID_EQUAL_RETURN(guid,0x7d49d726,0x3c21,0x4f05,0x99,0xaa,0xfd,0xc2,0xc9,0x47,0x46,0x56,"FOLDERTYPEID_Documents"); - IF_GUID_EQUAL_RETURN(guid,0xb689b0d0,0x76d3,0x4cbb,0x87,0xf7,0x58,0x5d,0x0e,0x0c,0xe0,0x70,"FOLDERTYPEID_Games"); - IF_GUID_EQUAL_RETURN(guid,0x5c4f28b5,0xf869,0x4e84,0x8e,0x60,0xf1,0x1d,0xb9,0x7c,0x5c,0xc7,"FOLDERTYPEID_Generic"); - IF_GUID_EQUAL_RETURN(guid,0x5f4eab9a,0x6833,0x4f61,0x89,0x9d,0x31,0xcf,0x46,0x97,0x9d,0x49,"FOLDERTYPEID_GenericLibrary"); - IF_GUID_EQUAL_RETURN(guid,0x7fde1a1e,0x8b31,0x49a5,0x93,0xb8,0x6b,0xe1,0x4c,0xfa,0x49,0x43,"FOLDERTYPEID_GenericSearchResults"); - IF_GUID_EQUAL_RETURN(guid,0x57807898,0x8c4f,0x4462,0xbb,0x63,0x71,0x04,0x23,0x80,0xb1,0x09,"FOLDERTYPEID_Invalid"); - IF_GUID_EQUAL_RETURN(guid,0x94d6ddcc,0x4a68,0x4175,0xa3,0x74,0xbd,0x58,0x4a,0x51,0x0b,0x78,"FOLDERTYPEID_Music"); - IF_GUID_EQUAL_RETURN(guid,0x25cc242b,0x9a7c,0x4f51,0x80,0xe0,0x7a,0x29,0x28,0xfe,0xbe,0x42,"FOLDERTYPEID_NetworkExplorer"); - IF_GUID_EQUAL_RETURN(guid,0x8faf9629,0x1980,0x46ff,0x80,0x23,0x9d,0xce,0xab,0x9c,0x3e,0xe3,"FOLDERTYPEID_OpenSearch"); - IF_GUID_EQUAL_RETURN(guid,0xb337fd00,0x9dd5,0x4635,0xa6,0xd4,0xda,0x33,0xfd,0x10,0x2b,0x7a,"FOLDERTYPEID_OtherUsers"); - IF_GUID_EQUAL_RETURN(guid,0xb3690e58,0xe961,0x423b,0xb6,0x87,0x38,0x6e,0xbf,0xd8,0x32,0x39,"FOLDERTYPEID_Pictures"); - IF_GUID_EQUAL_RETURN(guid,0x2c7bbec6,0xc844,0x4a0a,0x91,0xfa,0xce,0xf6,0xf5,0x9c,0xfd,0xa1,"FOLDERTYPEID_Printers"); - IF_GUID_EQUAL_RETURN(guid,0x7f2f5b96,0xff74,0x41da,0xaf,0xd8,0x1c,0x78,0xa5,0xf3,0xae,0xa2,"FOLDERTYPEID_PublishedItems"); - IF_GUID_EQUAL_RETURN(guid,0x5557a28f,0x5da6,0x4f83,0x88,0x09,0xc2,0xc9,0x8a,0x11,0xa6,0xfa,"FOLDERTYPEID_RecordedTV"); - IF_GUID_EQUAL_RETURN(guid,0xd6d9e004,0xcd87,0x442b,0x9d,0x57,0x5e,0x0a,0xeb,0x4f,0x6f,0x72,"FOLDERTYPEID_RecycleBin"); - IF_GUID_EQUAL_RETURN(guid,0xd0363307,0x28cb,0x4106,0x9f,0x23,0x29,0x56,0xe3,0xe5,0xe0,0xe7,"FOLDERTYPEID_SavedGames"); - IF_GUID_EQUAL_RETURN(guid,0x982725ee,0x6f47,0x479e,0xb4,0x47,0x81,0x2b,0xfa,0x7d,0x2e,0x8f,"FOLDERTYPEID_SearchConnector"); - IF_GUID_EQUAL_RETURN(guid,0x834d8a44,0x0974,0x4ed6,0x86,0x6e,0xf2,0x03,0xd8,0x0b,0x38,0x10,"FOLDERTYPEID_SearchHome"); - IF_GUID_EQUAL_RETURN(guid,0x0b0ba2e3,0x405f,0x415e,0xa6,0xee,0xca,0xd6,0x25,0x20,0x78,0x53,"FOLDERTYPEID_Searches"); - IF_GUID_EQUAL_RETURN(guid,0xd674391b,0x52d9,0x4e07,0x83,0x4e,0x67,0xc9,0x86,0x10,0xf3,0x9d,"FOLDERTYPEID_SoftwareExplorer"); - IF_GUID_EQUAL_RETURN(guid,0xef87b4cb,0xf2ce,0x4785,0x86,0x58,0x4c,0xa6,0xc6,0x3e,0x38,0xc6,"FOLDERTYPEID_StartMenu"); - IF_GUID_EQUAL_RETURN(guid,0xcd0fc69b,0x71e2,0x46e5,0x96,0x90,0x5b,0xcd,0x9f,0x57,0xaa,0xb3,"FOLDERTYPEID_UserFiles"); - IF_GUID_EQUAL_RETURN(guid,0xc4d98f09,0x6124,0x4fe0,0x99,0x42,0x82,0x64,0x16,0x8,0x2d,0xa9,"FOLDERTYPEID_UsersLibraries"); - IF_GUID_EQUAL_RETURN(guid,0x5fa96407,0x7e77,0x483c,0xac,0x93,0x69,0x1d,0x05,0x85,0x0d,0xe8,"FOLDERTYPEID_Videos"); - IF_GUID_EQUAL_RETURN(guid,0x6739b36f,0x1d5f,0x4ac2,0x81,0x92,0x28,0xbb,0xe,0x73,0xd1,0x6a,"FORMATTYPE_CPFilters_Processed"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4D1,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"FORMATTYPE_ETDTFilter_Tagged"); - IF_GUID_EQUAL_RETURN(guid,0xc7ecf04d,0x4582,0x4869,0x9a,0xbb,0xbf,0xb5,0x23,0xb6,0x2e,0xdf,"FORMAT_525WSS"); - IF_GUID_EQUAL_RETURN(guid,0x482dde0,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"FORMAT_AnalogVideo"); - IF_GUID_EQUAL_RETURN(guid,0xa4efc024,0x873e,0x4da3,0x89,0x8b,0x47,0x4d,0xdb,0xd7,0x9f,0xd0,"FORMAT_CAPTIONED_H264VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x7ab2ada2,0x81b6,0x4f14,0xb3,0xc8,0xd0,0xc4,0x86,0x39,0x3b,0x67,"FORMAT_CAPTIONED_MPEG2VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x50997a4a,0xe508,0x4054,0xa2,0xb2,0x10,0xff,0xa,0xc1,0xa6,0x9a,"FORMAT_CC_CONTAINER"); - IF_GUID_EQUAL_RETURN(guid,0xe06d80e6,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"FORMAT_DVD_LPCMAudio"); - IF_GUID_EQUAL_RETURN(guid,0xe06d80e4,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"FORMAT_DolbyAC3"); - IF_GUID_EQUAL_RETURN(guid,0x05589f84,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a,"FORMAT_DvInfo"); - IF_GUID_EQUAL_RETURN(guid,0x692fa379,0xd3e8,0x4651,0xb5,0xb4,0xb,0x94,0xb0,0x13,0xee,0xaf,"FORMAT_Image"); - IF_GUID_EQUAL_RETURN(guid,0x692fa379,0xd3e8,0x4651,0xb5,0xb4,0xb,0x94,0xb0,0x13,0xee,0xaf,"FORMAT_JPEGImage"); - IF_GUID_EQUAL_RETURN(guid,0xaed4ab2d,0x7326,0x43cb,0x94,0x64,0xc8,0x79,0xca,0xb9,0xc4,0x3d,"FORMAT_MFVideoFormat"); - IF_GUID_EQUAL_RETURN(guid,0xe06d80e5,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"FORMAT_MPEG2Audio"); - IF_GUID_EQUAL_RETURN(guid,0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"FORMAT_MPEG2Video"); - IF_GUID_EQUAL_RETURN(guid,0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea,"FORMAT_MPEG2_VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x05589f83,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a,"FORMAT_MPEGStreams"); - IF_GUID_EQUAL_RETURN(guid,0x05589f82,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a,"FORMAT_MPEGVideo"); - IF_GUID_EQUAL_RETURN(guid,0x0F6417D6,0xc318,0x11d0,0xa4,0x3f,0x00,0xa0,0xc9,0x22,0x31,0x96,"FORMAT_None"); - IF_GUID_EQUAL_RETURN(guid,0x2017be05,0x6629,0x4248,0xaa,0xed,0x7e,0x1a,0x47,0xbc,0x9b,0x9c,"FORMAT_UVCH264Video"); - IF_GUID_EQUAL_RETURN(guid,0xf72a76A0L,0xeb0a,0x11d0,0xac,0xe4,0x0,0x0,0xc0,0xcc,0x16,0xba,"FORMAT_VIDEOINFO2"); - IF_GUID_EQUAL_RETURN(guid,0xf72a76A0,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba,"FORMAT_VideoInfo2"); - IF_GUID_EQUAL_RETURN(guid,0x05589f80,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a,"FORMAT_VideoInfo"); - IF_GUID_EQUAL_RETURN(guid,0x05589f81,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a,"FORMAT_WaveFormatEx"); - IF_GUID_EQUAL_RETURN(guid,0xb02f9d65,0xfb77,0x4f7a,0xaf,0xa5,0xb3,0x91,0x30,0x9f,0x11,0xc9,"FUSION_REFCOUNT_FILEPATH_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x25df0fc1,0x7f97,0x4070,0xad,0xd7,0x4b,0x13,0xbb,0xfd,0x7c,0xb8,"FUSION_REFCOUNT_MSI_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2ec93463,0xb0c3,0x45e1,0x83,0x64,0x32,0x7e,0x96,0xae,0xa8,0x56,"FUSION_REFCOUNT_OPAQUE_STRING_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd16d444c,0x56d8,0x11d5,0x88,0x2d,0x00,0x80,0xc8,0x47,0xb1,0x95,"FUSION_REFCOUNT_OSINSTALL_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8cedc215,0xac4b,0x488b,0x93,0xc0,0xa5,0x0a,0x49,0xcb,0x2f,0xb8,"FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5c6844f,0x19de,0x48f8,0x95,0xfa,0x88,0xd,0x5b,0xf,0xd6,0x15,"FlowsFrom_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe4f33d20,0x559a,0x47fb,0xa8,0x30,0xf9,0xcb,0x4f,0xf1,0xa7,0x0a,"FlowsTo_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdbfd9900,0x7e1a,0x4f58,0xb6,0x1b,0x70,0x63,0x12,0x0f,0x77,0x3b,"FrameworkId_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5D3E9A59,0xE9D5,0x4B00,0xA6,0xBD,0xFF,0x34,0xFF,0x51,0x65,0x48,"GUID_ACDC_POWER_SOURCE"); - IF_GUID_EQUAL_RETURN(guid,0x31F9F286,0x5084,0x42FE,0xB7,0x20,0x2B,0x02,0x64,0x99,0x37,0x63,"GUID_ACTIVE_POWERSCHEME"); - IF_GUID_EQUAL_RETURN(guid,0x8619b916,0xe004,0x4dd8,0x9b,0x66,0xda,0xe8,0x6f,0x80,0x66,0x98,"GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0x25dfa149,0x5dd1,0x4736,0xb5,0xab,0xe8,0xa3,0x7b,0x5b,0x81,0x87,"GUID_ALLOW_AWAYMODE"); - IF_GUID_EQUAL_RETURN(guid,0xA9CEB8DA,0xCD46,0x44FB,0xA9,0x8B,0x02,0xAF,0x69,0xDE,0x46,0x23,"GUID_ALLOW_DISPLAY_REQUIRED"); - IF_GUID_EQUAL_RETURN(guid,0xBD3B718A,0x0680,0x4D9D,0x8A,0xB2,0xE1,0xD2,0xB4,0xAC,0x80,0x6D,"GUID_ALLOW_RTC_WAKE"); - IF_GUID_EQUAL_RETURN(guid,0xabfc2519,0x3608,0x4c2a,0x94,0xea,0x17,0x1b,0x0e,0xd5,0x46,0xab,"GUID_ALLOW_STANDBY_STATES"); - IF_GUID_EQUAL_RETURN(guid,0xA4B195F5,0x8225,0x47D8,0x80,0x12,0x9D,0x41,0x36,0x97,0x86,0xE2,"GUID_ALLOW_SYSTEM_REQUIRED"); - IF_GUID_EQUAL_RETURN(guid,0x1A689231,0x7399,0x4E9A,0x8F,0x99,0xB7,0x1F,0x99,0x9D,0xB3,0xFA,"GUID_APPLAUNCH_BUTTON"); - IF_GUID_EQUAL_RETURN(guid,0xaa114de5,0xc262,0x4169,0xa1,0xc8,0x23,0xd6,0x98,0xcc,0x73,0xb5,"GUID_All_Objects"); - IF_GUID_EQUAL_RETURN(guid,0xCF23F240,0x2A54,0x48D8,0xB1,0x14,0xDE,0x15,0x18,0xFF,0x05,0x2E,"GUID_BACKGROUND_TASK_NOTIFICATION"); - IF_GUID_EQUAL_RETURN(guid,0x637EA02F,0xBBCB,0x4015,0x8E,0x2C,0xA1,0xC7,0xB9,0xC0,0xB5,0x46,"GUID_BATTERY_DISCHARGE_ACTION_0"); - IF_GUID_EQUAL_RETURN(guid,0xD8742DCB,0x3E6A,0x4B3C,0xB3,0xFE,0x37,0x46,0x23,0xCD,0xCF,0x06,"GUID_BATTERY_DISCHARGE_ACTION_1"); - IF_GUID_EQUAL_RETURN(guid,0x421CBA38,0x1A8E,0x4881,0xAC,0x89,0xE3,0x3A,0x8B,0x04,0xEC,0xE4,"GUID_BATTERY_DISCHARGE_ACTION_2"); - IF_GUID_EQUAL_RETURN(guid,0x80472613,0x9780,0x455E,0xB3,0x08,0x72,0xD3,0x00,0x3C,0xF2,0xF8,"GUID_BATTERY_DISCHARGE_ACTION_3"); - IF_GUID_EQUAL_RETURN(guid,0x5dbb7c9f,0x38e9,0x40d2,0x97,0x49,0x4f,0x8a,0x0e,0x9f,0x64,0x0f,"GUID_BATTERY_DISCHARGE_FLAGS_0"); - IF_GUID_EQUAL_RETURN(guid,0xbcded951,0x187b,0x4d05,0xbc,0xcc,0xf7,0xe5,0x19,0x60,0xc2,0x58,"GUID_BATTERY_DISCHARGE_FLAGS_1"); - IF_GUID_EQUAL_RETURN(guid,0x7fd2f0c4,0xfeb7,0x4da3,0x81,0x17,0xe3,0xfb,0xed,0xc4,0x65,0x82,"GUID_BATTERY_DISCHARGE_FLAGS_2"); - IF_GUID_EQUAL_RETURN(guid,0x73613ccf,0xdbfa,0x4279,0x83,0x56,0x49,0x35,0xf6,0xbf,0x62,0xf3,"GUID_BATTERY_DISCHARGE_FLAGS_3"); - IF_GUID_EQUAL_RETURN(guid,0x9A66D8D7,0x4FF7,0x4EF9,0xB5,0xA2,0x5A,0x32,0x6C,0xA2,0xA4,0x69,"GUID_BATTERY_DISCHARGE_LEVEL_0"); - IF_GUID_EQUAL_RETURN(guid,0x8183BA9A,0xE910,0x48DA,0x87,0x69,0x14,0xAE,0x6D,0xC1,0x17,0x0A,"GUID_BATTERY_DISCHARGE_LEVEL_1"); - IF_GUID_EQUAL_RETURN(guid,0x07A07CA2,0xADAF,0x40D7,0xB0,0x77,0x53,0x3A,0xAD,0xED,0x1B,0xFA,"GUID_BATTERY_DISCHARGE_LEVEL_2"); - IF_GUID_EQUAL_RETURN(guid,0x58AFD5A6,0xC2DD,0x47D2,0x9F,0xBF,0xEF,0x70,0xCC,0x5C,0x59,0x65,"GUID_BATTERY_DISCHARGE_LEVEL_3"); - IF_GUID_EQUAL_RETURN(guid,0xA7AD8041,0xB45A,0x4CAE,0x87,0xA3,0xEE,0xCB,0xB4,0x68,0xA9,0xE1,"GUID_BATTERY_PERCENTAGE_REMAINING"); - IF_GUID_EQUAL_RETURN(guid,0xE73A048D,0xBF27,0x4F12,0x97,0x31,0x8B,0x20,0x76,0xE8,0x89,0x1F,"GUID_BATTERY_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_Button"); - IF_GUID_EQUAL_RETURN(guid,0x6fe69556,0x704a,0x47a0,0x8f,0x24,0xc2,0x8d,0x93,0x6f,0xda,0x47,"GUID_CONSOLE_DISPLAY_STATE"); - IF_GUID_EQUAL_RETURN(guid,0xB7A27025,0xE569,0x46c2,0xA5,0x04,0x2B,0x96,0xCA,0xD2,0x25,0xA1,"GUID_CRITICAL_POWER_TRANSITION"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc2,0x49e7,0x11d0,0x88,0x9d,0x0,0xaa,0x0,0xbb,0xb7,0x6a,"GUID_ColorControlCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc2,0x49e7,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a,"GUID_ColorControlCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_ConstantForce"); - IF_GUID_EQUAL_RETURN(guid,0x0af1d87e,0xfcfe,0x4188,0xbd,0xeb,0xa7,0x90,0x64,0x71,0xcb,0xe3,"GUID_ContainerFormatBmp"); - IF_GUID_EQUAL_RETURN(guid,0x1f8a5601,0x7d4d,0x4cbd,0x9c,0x82,0x1b,0xc8,0xd4,0xee,0xb9,0xa5,"GUID_ContainerFormatGif"); - IF_GUID_EQUAL_RETURN(guid,0xa3a860c4,0x338f,0x4c17,0x91,0x9a,0xfb,0xa4,0xb5,0x62,0x8f,0x21,"GUID_ContainerFormatIco"); - IF_GUID_EQUAL_RETURN(guid,0x19e4a5aa,0x5662,0x4fc5,0xa0,0xc0,0x17,0x58,0x02,0x8e,0x10,0x57,"GUID_ContainerFormatJpeg"); - IF_GUID_EQUAL_RETURN(guid,0x1b7cfaf4,0x713f,0x473c,0xbb,0xcd,0x61,0x37,0x42,0x5f,0xae,0xaf,"GUID_ContainerFormatPng"); - IF_GUID_EQUAL_RETURN(guid,0x163bcc30,0xe2e9,0x4f0b,0x96,0x1d,0xa3,0xe9,0xfd,0xb7,0x88,0xa3,"GUID_ContainerFormatTiff"); - IF_GUID_EQUAL_RETURN(guid,0x57a37caa,0x367a,0x4540,0x91,0x6b,0xf1,0x83,0xc5,0x09,0x3a,0x4b,"GUID_ContainerFormatWmp"); - IF_GUID_EQUAL_RETURN(guid,0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_CustomForce"); - IF_GUID_EQUAL_RETURN(guid,0x0ba584e1,0x70b6,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a,"GUID_D3DCallbacks2"); - IF_GUID_EQUAL_RETURN(guid,0xba584e1,0x70b6,0x11d0,0x88,0x9d,0x0,0xaa,0x0,0xbb,0xb7,0x6a,"GUID_D3DCallbacks2"); - IF_GUID_EQUAL_RETURN(guid,0xddf41230,0xec0a,0x11d0,0xa9,0xb6,0x00,0xaa,0x00,0xc0,0x99,0x3e,"GUID_D3DCallbacks3"); - IF_GUID_EQUAL_RETURN(guid,0x7bf06990,0x8794,0x11d0,0x91,0x39,0x08,0x00,0x36,0xd2,0xef,0x02,"GUID_D3DCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0x7bf06991,0x8794,0x11d0,0x91,0x39,0x08,0x00,0x36,0xd2,0xef,0x02,"GUID_D3DCaps"); - IF_GUID_EQUAL_RETURN(guid,0x7de41f80,0x9d93,0x11d0,0x89,0xab,0x0,0xa0,0xc9,0x5,0x41,0x29,"GUID_D3DExtendedCaps"); - IF_GUID_EQUAL_RETURN(guid,0x7de41f80,0x9d93,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29,"GUID_D3DExtendedCaps"); - IF_GUID_EQUAL_RETURN(guid,0x2e04ffa0,0x98e4,0x11d1,0x8c,0xe1,0x0,0xa0,0xc9,0x6,0x29,0xa8,"GUID_D3DParseUnknownCommandCallback"); - IF_GUID_EQUAL_RETURN(guid,0x880baf30,0xb030,0x11d0,0x8e,0xa7,0x00,0x60,0x97,0x97,0xea,0x5b,"GUID_DDMoreCaps"); - IF_GUID_EQUAL_RETURN(guid,0x3b8a0466,0xf269,0x11d1,0x88,0x0b,0x0,0xc0,0x4f,0xd9,0x30,0xc5,"GUID_DDMoreSurfaceCaps"); - IF_GUID_EQUAL_RETURN(guid,0xf828169c,0xa8e8,0x11d2,0xa1,0xf2,0x0,0xa0,0xc9,0x83,0xea,0xf6,"GUID_DDStereoMode"); - IF_GUID_EQUAL_RETURN(guid,0x4faab71a,0x92e5,0x4726,0xb5,0x31,0x22,0x45,0x59,0x67,0x2d,0x19,"GUID_DEVICE_IDLE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0xaded5e82L,0xb909,0x4619,0x99,0x49,0xf5,0xd7,0x1d,0xac,0x0b,0xcb,"GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS"); - IF_GUID_EQUAL_RETURN(guid,0xf1fbfde2,0xa960,0x4165,0x9f,0x88,0x50,0x66,0x79,0x11,0xce,0x96,"GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS"); - IF_GUID_EQUAL_RETURN(guid,0x53f56312L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_CDCHANGER"); - IF_GUID_EQUAL_RETURN(guid,0x53f56308L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_CDROM"); - IF_GUID_EQUAL_RETURN(guid,0x86e0d1e0L,0x8089,0x11d0,0x9c,0xe4,0x08,0x00,0x3e,0x30,0x1f,0x73,"GUID_DEVINTERFACE_COMPORT"); - IF_GUID_EQUAL_RETURN(guid,0x53f56307L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_DISK"); - IF_GUID_EQUAL_RETURN(guid,0x25B4E268,0x2A05,0x496e,0x80,0x3B,0x26,0x68,0x37,0xFB,0xDA,0x4B,"GUID_DEVINTERFACE_DMP"); - IF_GUID_EQUAL_RETURN(guid,0xD0875FB4,0x2196,0x4c7a,0xA6,0x3D,0xE4,0x16,0xAD,0xDD,0x60,0xA1,"GUID_DEVINTERFACE_DMR"); - IF_GUID_EQUAL_RETURN(guid,0xC96037AE,0xA558,0x4470,0xB4,0x32,0x11,0x5A,0x31,0xB8,0x55,0x53,"GUID_DEVINTERFACE_DMS"); - IF_GUID_EQUAL_RETURN(guid,0x3897f6a4,0xfd35,0x4bc8,0xa0,0xb7,0x5d,0xbb,0xa3,0x6a,0xda,0xfa,"GUID_DEVINTERFACE_ENHANCED_STORAGE_SILO"); - IF_GUID_EQUAL_RETURN(guid,0x53f56311L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_FLOPPY"); - IF_GUID_EQUAL_RETURN(guid,0x7f108a28L,0x9833,0x4b3b,0xb7,0x80,0x2c,0x6b,0x5f,0xa5,0xc0,0x62,"GUID_DEVINTERFACE_HIDDEN_VOLUME"); - IF_GUID_EQUAL_RETURN(guid,0x53f56310L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_MEDIUMCHANGER"); - IF_GUID_EQUAL_RETURN(guid,0x53f5630aL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_PARTITION"); - IF_GUID_EQUAL_RETURN(guid,0x4D36E978L,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18,"GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR"); - IF_GUID_EQUAL_RETURN(guid,0x1790c9ecL,0x47d5,0x4df3,0xb5,0xaf,0x9a,0xdf,0x3c,0xf2,0x3e,0x48,"GUID_DEVINTERFACE_SES"); - IF_GUID_EQUAL_RETURN(guid,0x50DD5230,0xBA8A,0x11D1,0xBF,0x5D,0x00,0x00,0xF8,0x05,0xF5,0x30,"GUID_DEVINTERFACE_SMARTCARD_READER"); - IF_GUID_EQUAL_RETURN(guid,0x2accfe60L,0xc130,0x11d2,0xb0,0x82,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_STORAGEPORT"); - IF_GUID_EQUAL_RETURN(guid,0x53f5630bL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_TAPE"); - IF_GUID_EQUAL_RETURN(guid,0x6f416619L,0x9f29,0x42a5,0xb2,0x0b,0x37,0xe2,0x19,0xca,0x02,0xb0,"GUID_DEVINTERFACE_VMLUN"); - IF_GUID_EQUAL_RETURN(guid,0x53f5630dL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_VOLUME"); - IF_GUID_EQUAL_RETURN(guid,0x53f5630cL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b,"GUID_DEVINTERFACE_WRITEONCEDISK"); - IF_GUID_EQUAL_RETURN(guid,0x396A32E1,0x499A,0x40B2,0x91,0x24,0xA9,0x6A,0xFE,0x70,0x76,0x67,"GUID_DISK_ADAPTIVE_POWERDOWN"); - IF_GUID_EQUAL_RETURN(guid,0x80e3c60e,0xbb94,0x4ad8,0xbb,0xe0,0x0d,0x31,0x95,0xef,0xc6,0x63,"GUID_DISK_BURST_IGNORE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0xc36f0eb4,0x2988,0x4a70,0x8e,0xee,0x8,0x84,0xfc,0x2c,0x24,0x33,"GUID_DISK_COALESCING_POWERDOWN_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x58E39BA8,0xB8E6,0x4EF6,0x90,0xD0,0x89,0xAE,0x32,0xB2,0x58,0xD6,"GUID_DISK_IDLE_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x6738E2C4,0xE8A5,0x4A42,0xB1,0x6A,0xE0,0x40,0xE7,0x69,0x75,0x6E,"GUID_DISK_POWERDOWN_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x0012EE47,0x9041,0x4B5D,0x9B,0x77,0x53,0x5F,0xBA,0x8B,0x14,0x42,"GUID_DISK_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0x178f2f27,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_DLS1"); - IF_GUID_EQUAL_RETURN(guid,0xf14599e5,0x4689,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"GUID_DMUS_PROP_DLS2"); - IF_GUID_EQUAL_RETURN(guid,0xcda8d611,0x684a,0x11d2,0x87,0x1e,0x0,0x60,0x8,0x93,0xb1,0xbd,"GUID_DMUS_PROP_Effects"); - IF_GUID_EQUAL_RETURN(guid,0x178f2f24,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_GM_Hardware"); - IF_GUID_EQUAL_RETURN(guid,0x6496aba2,0x61b0,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"GUID_DMUS_PROP_GS_Capable"); - IF_GUID_EQUAL_RETURN(guid,0x178f2f25,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_GS_Hardware"); - IF_GUID_EQUAL_RETURN(guid,0x865fd372,0x9f67,0x11d2,0x87,0x2a,0x0,0x60,0x8,0x93,0xb1,0xbd,"GUID_DMUS_PROP_INSTRUMENT2"); - IF_GUID_EQUAL_RETURN(guid,0xcfa7cdc2,0x00a1,0x11d2,0xaa,0xd5,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_LegacyCaps"); - IF_GUID_EQUAL_RETURN(guid,0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_MemorySize"); - IF_GUID_EQUAL_RETURN(guid,0x178f2f28,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_SampleMemorySize"); - IF_GUID_EQUAL_RETURN(guid,0x2a91f713,0xa4bf,0x11d2,0xbb,0xdf,0x0,0x60,0x8,0x33,0xdb,0xd8,"GUID_DMUS_PROP_SamplePlaybackRate"); - IF_GUID_EQUAL_RETURN(guid,0x0a3a5ba5,0x37b6,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_SetSynthSink"); - IF_GUID_EQUAL_RETURN(guid,0xbe208857,0x8952,0x11d2,0xba,0x1c,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_SinkUsesDSound"); - IF_GUID_EQUAL_RETURN(guid,0xaa97844,0xc877,0x11d1,0x87,0xc,0x0,0x60,0x8,0x93,0xb1,0xbd,"GUID_DMUS_PROP_SynthSink_DSOUND"); - IF_GUID_EQUAL_RETURN(guid,0xaa97845,0xc877,0x11d1,0x87,0xc,0x0,0x60,0x8,0x93,0xb1,0xbd,"GUID_DMUS_PROP_SynthSink_WAVE"); - IF_GUID_EQUAL_RETURN(guid,0xfedfae25L,0xe46e,0x11d1,0xaa,0xce,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_Volume"); - IF_GUID_EQUAL_RETURN(guid,0x4cb5622,0x32e5,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"GUID_DMUS_PROP_WavesReverb"); - IF_GUID_EQUAL_RETURN(guid,0x268a0fa0,0x60f2,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"GUID_DMUS_PROP_WriteLatency"); - IF_GUID_EQUAL_RETURN(guid,0x268a0fa1,0x60f2,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"GUID_DMUS_PROP_WritePeriod"); - IF_GUID_EQUAL_RETURN(guid,0x6496aba1,0x61b0,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"GUID_DMUS_PROP_XG_Capable"); - IF_GUID_EQUAL_RETURN(guid,0x178f2f26,0xc364,0x11d1,0xa7,0x60,0x00,0x00,0xf8,0x75,0xac,0x12,"GUID_DMUS_PROP_XG_Hardware"); - IF_GUID_EQUAL_RETURN(guid,0xBF963D80L,0xC559,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1,"GUID_DSCFX_CLASS_AEC"); - IF_GUID_EQUAL_RETURN(guid,0xe07f903f,0x62fd,0x4e60,0x8c,0xdd,0xde,0xa7,0x23,0x66,0x65,0xb5,"GUID_DSCFX_CLASS_NS"); - IF_GUID_EQUAL_RETURN(guid,0xcdebb919,0x379a,0x488a,0x87,0x65,0xf5,0x3c,0xfd,0x36,0xde,0x40,"GUID_DSCFX_MS_AEC"); - IF_GUID_EQUAL_RETURN(guid,0x11c5c73b,0x66e9,0x4ba1,0xa0,0xba,0xe8,0x14,0xc6,0xee,0xd9,0x2d,"GUID_DSCFX_MS_NS"); - IF_GUID_EQUAL_RETURN(guid,0x1c22c56d,0x9879,0x4f5b,0xa3,0x89,0x27,0x99,0x6d,0xdc,0x28,0x10,"GUID_DSCFX_SYSTEM_AEC"); - IF_GUID_EQUAL_RETURN(guid,0x5ab0882e,0x7274,0x4516,0x87,0x7d,0x4e,0xee,0x99,0xba,0x4f,0xd0,"GUID_DSCFX_SYSTEM_NS"); - IF_GUID_EQUAL_RETURN(guid,0xefe6629c,0x81f7,0x4281,0xbd,0x91,0xc9,0xd6,0x04,0xa9,0x5a,0xf6,"GUID_DSFX_STANDARD_CHORUS"); - IF_GUID_EQUAL_RETURN(guid,0xef011f79,0x4000,0x406d,0x87,0xaf,0xbf,0xfb,0x3f,0xc3,0x9d,0x57,"GUID_DSFX_STANDARD_COMPRESSOR"); - IF_GUID_EQUAL_RETURN(guid,0xef114c90,0xcd1d,0x484e,0x96,0xe5,0x09,0xcf,0xaf,0x91,0x2a,0x21,"GUID_DSFX_STANDARD_DISTORTION"); - IF_GUID_EQUAL_RETURN(guid,0xef3e932c,0xd40b,0x4f51,0x8c,0xcf,0x3f,0x98,0xf1,0xb2,0x9d,0x5d,"GUID_DSFX_STANDARD_ECHO"); - IF_GUID_EQUAL_RETURN(guid,0xefca3d92,0xdfd8,0x4672,0xa6,0x03,0x74,0x20,0x89,0x4b,0xad,0x98,"GUID_DSFX_STANDARD_FLANGER"); - IF_GUID_EQUAL_RETURN(guid,0xdafd8210,0x5711,0x4b91,0x9f,0xe3,0xf7,0x5b,0x7a,0xe2,0x79,0xbf,"GUID_DSFX_STANDARD_GARGLE"); - IF_GUID_EQUAL_RETURN(guid,0xef985e71,0xd5c7,0x42d4,0xba,0x4d,0x2d,0x07,0x3e,0x2e,0x96,0xf4,"GUID_DSFX_STANDARD_I3DL2REVERB"); - IF_GUID_EQUAL_RETURN(guid,0x120ced89,0x3bf4,0x4173,0xa1,0x32,0x3c,0xb4,0x06,0xcf,0x32,0x31,"GUID_DSFX_STANDARD_PARAMEQ"); - IF_GUID_EQUAL_RETURN(guid,0x87fc0268,0x9a55,0x4360,0x95,0xaa,0x00,0x4a,0x1d,0x9d,0xe2,0x6c,"GUID_DSFX_WAVES_REVERB"); - IF_GUID_EQUAL_RETURN(guid,0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_Damper"); - IF_GUID_EQUAL_RETURN(guid,0x740d9ee6,0x70f1,0x11d1,0xad,0x10,0x0,0xa0,0x24,0x38,0xad,0x48,"GUID_DeviceArrivedLaunch"); - IF_GUID_EQUAL_RETURN(guid,0xd722fb4d,0x7a68,0x437a,0xb2,0x0c,0x58,0x04,0xee,0x24,0x94,0xa6,"GUID_DeviceType"); - IF_GUID_EQUAL_RETURN(guid,0xcd2bc5c9,0xf452,0x4326,0xb7,0x14,0xf9,0xc5,0x39,0xd4,0xda,0x58,"GUID_DispIdOverride"); - IF_GUID_EQUAL_RETURN(guid,0x833a6b62,0xdfa4,0x46d1,0x82,0xf8,0xe0,0x9e,0x34,0xd0,0x29,0xd6,"GUID_ENABLE_SWITCH_FORCED_SHUTDOWN"); - IF_GUID_EQUAL_RETURN(guid,0x3166bc41,0x7e98,0x4e03,0xb3,0x4e,0xec,0xf,0x5f,0x2b,0x21,0x8e,"GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x90883f05,0x3d28,0x11d2,0x8f,0x17,0x0,0xa0,0xc9,0xa6,0x18,0x6d,"GUID_ExportedFromComPlus"); - IF_GUID_EQUAL_RETURN(guid,0xb64784eb,0xd8d4,0x4d9b,0x9a,0xcd,0x0e,0x30,0x80,0x64,0x26,0xf7,"GUID_ForceIEnumerable"); - IF_GUID_EQUAL_RETURN(guid,0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_Friction"); - IF_GUID_EQUAL_RETURN(guid,0x54fc8f55,0x38de,0x4703,0x9c,0x4e,0x25,0x3,0x51,0x30,0x2b,0x1c,"GUID_Function2Getter"); - IF_GUID_EQUAL_RETURN(guid,0x786e8a1d,0xb427,0x4344,0x92,0x7,0x9,0xe7,0xb,0xdc,0xbe,0xa9,"GUID_GLOBAL_USER_PRESENCE"); - IF_GUID_EQUAL_RETURN(guid,0x42e02f16,0x7b41,0x11d2,0x8b,0xff,0x0,0xa0,0xc9,0x83,0xea,0xf6,"GUID_GetHeapAlignment"); - IF_GUID_EQUAL_RETURN(guid,0x94AC6D29,0x73CE,0x41A6,0x80,0x9F,0x63,0x63,0xBA,0x21,0xB4,0x7E,"GUID_HIBERNATE_FASTS4_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x9D7815A6,0x7EE4,0x497E,0x88,0x88,0x51,0x5A,0x05,0xF0,0x23,0x64,"GUID_HIBERNATE_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x515C31D8,0xF734,0x163D,0xA0,0xFD,0x11,0xA0,0x8C,0x91,0xE8,0xF1,"GUID_IDLE_BACKGROUND_TASK"); - IF_GUID_EQUAL_RETURN(guid,0xc42b79aa,0xaa3a,0x484b,0xa9,0x8f,0x2c,0xf3,0x2a,0xa9,0xa,0x28,"GUID_IDLE_RESILIENCY_PERIOD"); - IF_GUID_EQUAL_RETURN(guid,0x2e601130,0x5351,0x4d9d,0x8e,0x4,0x25,0x29,0x66,0xba,0xd0,0x54,"GUID_IDLE_RESILIENCY_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0xe6d1bd11,0x82f7,0x4903,0xae,0x21,0x1a,0x63,0x97,0xcd,0xe2,0xeb,"GUID_INTEGRATIONSTYLE_SEARCHBOX"); - IF_GUID_EQUAL_RETURN(guid,0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_Inertia"); - IF_GUID_EQUAL_RETURN(guid,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_Joystick"); - IF_GUID_EQUAL_RETURN(guid,0x80863800,0x6B06,0x11D0,0x9B,0x06,0x0,0xA0,0xC9,0x03,0xA3,0xB8,"GUID_KernelCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0xFFAA7540,0x7AA8,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"GUID_KernelCaps"); - IF_GUID_EQUAL_RETURN(guid,0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_Key"); - IF_GUID_EQUAL_RETURN(guid,0x5CA83367,0x6E45,0x459F,0xA2,0x7B,0x47,0x6B,0x1D,0x01,0xC9,0x36,"GUID_LIDCLOSE_ACTION"); - IF_GUID_EQUAL_RETURN(guid,0x99FF10E7,0x23B1,0x4C07,0xA9,0xD1,0x5C,0x32,0x06,0xD7,0x41,0xB4,"GUID_LIDOPEN_POWERSTATE"); - IF_GUID_EQUAL_RETURN(guid,0xBA3E0F4D,0xB817,0x4094,0xA2,0xD1,0xD5,0x63,0x79,0xE6,0xA0,0xF3,"GUID_LIDSWITCH_STATE_CHANGE"); - IF_GUID_EQUAL_RETURN(guid,0x0E796BDB,0x100D,0x47D6,0xA2,0xD5,0xF7,0xD2,0xDA,0xA5,0x1F,0x51,"GUID_LOCK_CONSOLE_ON_WAKE"); - IF_GUID_EQUAL_RETURN(guid,0xA1841308,0x3541,0x4FAB,0xBC,0x81,0xF7,0x15,0x56,0xF2,0x0B,0x4A,"GUID_MAX_POWER_SAVINGS"); - IF_GUID_EQUAL_RETURN(guid,0x8C5E7FDA,0xE8BF,0x4A96,0x9A,0x85,0xA6,0xE2,0x3A,0x8C,0x63,0x5C,"GUID_MIN_POWER_SAVINGS"); - IF_GUID_EQUAL_RETURN(guid,0x02731015,0x4510,0x4526,0x99,0xE6,0xE5,0xA1,0x7E,0xBD,0x1A,0xEA,"GUID_MONITOR_POWER_ON"); - IF_GUID_EQUAL_RETURN(guid,0xf21f359,0xab84,0x41e8,0x9a,0x78,0x36,0xd1,0x10,0xe6,0xd2,0xf9,"GUID_ManagedName"); - IF_GUID_EQUAL_RETURN(guid,0x0010568c,0x0852,0x4e6a,0xb1,0x91,0x5c,0x33,0xac,0x5b,0x04,0x30,"GUID_MetadataFormat8BIMIPTC"); - IF_GUID_EQUAL_RETURN(guid,0x1CA32285,0x9CCD,0x4786,0x8B,0xD8,0x79,0x53,0x9D,0xB6,0xA0,0x06,"GUID_MetadataFormat8BIMIPTCDigest"); - IF_GUID_EQUAL_RETURN(guid,0x739F305D,0x81DB,0x43CB,0xAC,0x5E,0x55,0x01,0x3E,0xF9,0xF0,0x03,"GUID_MetadataFormat8BIMResolutionInfo"); - IF_GUID_EQUAL_RETURN(guid,0x2E043DC2,0xC967,0x4E05,0x87,0x5E,0x61,0x8B,0xF6,0x7E,0x85,0xC3,"GUID_MetadataFormatAPE"); - IF_GUID_EQUAL_RETURN(guid,0x79007028,0x268D,0x45d6,0xA3,0xC2,0x35,0x4E,0x6A,0x50,0x4B,0xC9,"GUID_MetadataFormatApp0"); - IF_GUID_EQUAL_RETURN(guid,0x326556A2,0xF502,0x4354,0x9C,0xC0,0x8E,0x3F,0x48,0xEA,0xF6,0xB5,"GUID_MetadataFormatApp13"); - IF_GUID_EQUAL_RETURN(guid,0x8FD3DFC3,0xF951,0x492B,0x81,0x7F,0x69,0xC2,0xE6,0xD9,0xA5,0xB0,"GUID_MetadataFormatApp1"); - IF_GUID_EQUAL_RETURN(guid,0xE14D3571,0x6B47,0x4DEA,0xB6,0xA,0x87,0xCE,0xA,0x78,0xDF,0xB7,"GUID_MetadataFormatChunkbKGD"); - IF_GUID_EQUAL_RETURN(guid,0x9DB3655B,0x2842,0x44B3,0x80,0x67,0x12,0xE9,0xB3,0x75,0x55,0x6A,"GUID_MetadataFormatChunkcHRM"); - IF_GUID_EQUAL_RETURN(guid,0xF00935A5,0x1D5D,0x4CD1,0x81,0xB2,0x93,0x24,0xD7,0xEC,0xA7,0x81,"GUID_MetadataFormatChunkgAMA"); - IF_GUID_EQUAL_RETURN(guid,0xC59A82DA,0xDB74,0x48A4,0xBD,0x6A,0xB6,0x9C,0x49,0x31,0xEF,0x95,"GUID_MetadataFormatChunkhIST"); - IF_GUID_EQUAL_RETURN(guid,0xEB4349AB,0xB685,0x450F,0x91,0xB5,0xE8,0x2,0xE8,0x92,0x53,0x6C,"GUID_MetadataFormatChunkiCCP"); - IF_GUID_EQUAL_RETURN(guid,0xC2BEC729,0xB68,0x4B77,0xAA,0xE,0x62,0x95,0xA6,0xAC,0x18,0x14,"GUID_MetadataFormatChunkiTXt"); - IF_GUID_EQUAL_RETURN(guid,0xC115FD36,0xCC6F,0x4E3F,0x83,0x63,0x52,0x4B,0x87,0xC6,0xB0,0xD9,"GUID_MetadataFormatChunksRGB"); - IF_GUID_EQUAL_RETURN(guid,0x568d8936,0xc0a9,0x4923,0x90,0x5d,0xdf,0x2b,0x38,0x23,0x8f,0xbc,"GUID_MetadataFormatChunktEXt"); - IF_GUID_EQUAL_RETURN(guid,0x6B00AE2D,0xE24B,0x460A,0x98,0xB6,0x87,0x8B,0xD0,0x30,0x72,0xFD,"GUID_MetadataFormatChunktIME"); - IF_GUID_EQUAL_RETURN(guid,0x1C3C4F9D,0xB84A,0x467D,0x94,0x93,0x36,0xCF,0xBD,0x59,0xEA,0x57,"GUID_MetadataFormatExif"); - IF_GUID_EQUAL_RETURN(guid,0x2A25CAD8,0xDEEB,0x4C69,0xA7,0x88,0xE,0xC2,0x26,0x6D,0xCA,0xFD,"GUID_MetadataFormatGCE"); - IF_GUID_EQUAL_RETURN(guid,0xC4B6E0E0,0xCFB4,0x4AD3,0xAB,0x33,0x9A,0xAD,0x23,0x55,0xA3,0x4A,"GUID_MetadataFormatGifComment"); - IF_GUID_EQUAL_RETURN(guid,0x7134AB8A,0x9351,0x44AD,0xAF,0x62,0x44,0x8D,0xB6,0xB5,0x02,0xEC,"GUID_MetadataFormatGps"); - IF_GUID_EQUAL_RETURN(guid,0xBD2BB086,0x4D52,0x48DD,0x96,0x77,0xDB,0x48,0x3E,0x85,0xAE,0x8F,"GUID_MetadataFormatIMD"); - IF_GUID_EQUAL_RETURN(guid,0x4FAB0914,0xE129,0x4087,0xA1,0xD1,0xBC,0x81,0x2D,0x45,0xA7,0xB5,"GUID_MetadataFormatIPTC"); - IF_GUID_EQUAL_RETURN(guid,0x16100D66,0x8570,0x4BB9,0xB9,0x2D,0xFD,0xA4,0xB2,0x3E,0xCE,0x67,"GUID_MetadataFormatIRB"); - IF_GUID_EQUAL_RETURN(guid,0x537396C6,0x2D8A,0x4BB6,0x9B,0xF8,0x2F,0x0A,0x8E,0x2A,0x3A,0xDF,"GUID_MetadataFormatIfd"); - IF_GUID_EQUAL_RETURN(guid,0xED686F8E,0x681F,0x4C8B,0xBD,0x41,0xA8,0xAD,0xDB,0xF6,0xB3,0xFC,"GUID_MetadataFormatInterop"); - IF_GUID_EQUAL_RETURN(guid,0xF73D0DCF,0xCEC6,0x4F85,0x9B,0x0E,0x1C,0x39,0x56,0xB1,0xBE,0xF7,"GUID_MetadataFormatJpegChrominance"); - IF_GUID_EQUAL_RETURN(guid,0x220E5F33,0xAFD3,0x474E,0x9D,0x31,0x7D,0x4F,0xE7,0x30,0xF5,0x57,"GUID_MetadataFormatJpegComment"); - IF_GUID_EQUAL_RETURN(guid,0x86908007,0xEDFC,0x4860,0x8D,0x4B,0x4E,0xE6,0xE8,0x3E,0x60,0x58,"GUID_MetadataFormatJpegLuminance"); - IF_GUID_EQUAL_RETURN(guid,0xE256031E,0x6299,0x4929,0xB9,0x8D,0x5A,0xC8,0x84,0xAF,0xBA,0x92,"GUID_MetadataFormatLSD"); - IF_GUID_EQUAL_RETURN(guid,0x58A2E128,0x2DB9,0x4E57,0xBB,0x14,0x51,0x77,0x89,0x1E,0xD3,0x31,"GUID_MetadataFormatSubIfd"); - IF_GUID_EQUAL_RETURN(guid,0x243dcee9,0x8703,0x40ee,0x8e,0xf0,0x22,0xa6,0x0,0xb8,0x5,0x8c,"GUID_MetadataFormatThumbnail"); - IF_GUID_EQUAL_RETURN(guid,0xA45E592F,0x9078,0x4A7C,0xAD,0xB5,0x4E,0xDC,0x4F,0xD6,0x1B,0x1F,"GUID_MetadataFormatUnknown"); - IF_GUID_EQUAL_RETURN(guid,0xBB5ACC38,0xF216,0x4CEC,0xA6,0xC5,0x5F,0x6E,0x73,0x97,0x63,0xA9,"GUID_MetadataFormatXMP"); - IF_GUID_EQUAL_RETURN(guid,0x7B08A675,0x91AA,0x481B,0xA7,0x98,0x4D,0xA9,0x49,0x08,0x61,0x3B,"GUID_MetadataFormatXMPAlt"); - IF_GUID_EQUAL_RETURN(guid,0x833CCA5F,0xDCB7,0x4516,0x80,0x6F,0x65,0x96,0xAB,0x26,0xDC,0xE4,"GUID_MetadataFormatXMPBag"); - IF_GUID_EQUAL_RETURN(guid,0x63E8DF02,0xEB6C,0x456C,0xA2,0x24,0xB2,0x5E,0x79,0x4F,0xD6,0x48,"GUID_MetadataFormatXMPSeq"); - IF_GUID_EQUAL_RETURN(guid,0x22383CF1,0xED17,0x4E2E,0xAF,0x17,0xD8,0x5B,0x8F,0x6B,0x30,0xD0,"GUID_MetadataFormatXMPStruct"); - IF_GUID_EQUAL_RETURN(guid,0x406B2F00,0x3E5A,0x11D1,0xB6,0x40,0x00,0xAA,0x00,0xA1,0xF9,0x6A,"GUID_Miscellaneous2Callbacks"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc0,0x49e7,0x11d0,0x88,0x9d,0x0,0xaa,0x0,0xbb,0xb7,0x6a,"GUID_MiscellaneousCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc0,0x49e7,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a,"GUID_MiscellaneousCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0xb1122b40,0x5dA5,0x11d1,0x8f,0xcF,0x00,0xc0,0x4f,0xc2,0x9b,0x4e,"GUID_MotionCompCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0x5adbbfbc,0x74e,0x4da1,0xba,0x38,0xdb,0x8b,0x36,0xb2,0xc8,0xf3,"GUID_NON_ADAPTIVE_INPUT_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x6fe9ecde,0xdf89,0x11d1,0x9d,0xb0,0x00,0x60,0x08,0x27,0x71,0xba,"GUID_NTCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0xfad16a23,0x7b66,0x11d2,0x83,0xd7,0x0,0xc0,0x4f,0x7c,0xe5,0x8c,"GUID_NTPrivateDriverCaps"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(149),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ACTIVE_PHY_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(93),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_AP_JOIN_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(159),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ASSOCIATION_PARAMS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(10),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ATIM_WINDOW"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(120),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_AUTO_CONFIG_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(27),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_BEACON_PERIOD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(54),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CCA_MODE_SUPPORTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(58),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CCA_WATCHDOG_COUNT_MAX"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(60),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CCA_WATCHDOG_COUNT_MIN"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(57),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CCA_WATCHDOG_TIMER_MAX"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(59),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CCA_WATCHDOG_TIMER_MIN"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(24),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CFP_MAX_DURATION"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(23),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CFP_PERIOD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(22),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CF_POLLABLE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(72),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CHANNEL_AGILITY_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(71),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CHANNEL_AGILITY_PRESENT"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(139),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CIPHER_DEFAULT_KEY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(138),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CIPHER_DEFAULT_KEY_ID"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(140),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CIPHER_KEY_MAPPING_KEY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(129),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CONNECT_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(37),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_COUNTERS_ENTRY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(76),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_COUNTRY_STRING"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(1024+2),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_ADDRESS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(55),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_CCA_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(53),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_CHANNEL"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(47),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_CHANNEL_NUMBER"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(49),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_DWELL_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(66),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_FREQUENCY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(52),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_INDEX"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(1),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_OFFLOAD_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(8),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_OPERATION_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(19),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_OPTIONAL_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(9),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_PACKET_FILTER"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(51),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_PATTERN"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(146),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_PHY_ID"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(12),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_PHY_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(39),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_REG_DOMAIN"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(43),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_RX_ANTENNA"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(50),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_SET"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(41),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_TX_ANTENNA"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(45),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_CURRENT_TX_POWER_LEVEL"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(151),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DATA_RATE_MAPPING_TABLE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(4),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DEFAULT_WEP_OFFLOAD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(5),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DEFAULT_WEP_UPLOAD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(126),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DESIRED_BSSID_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(127),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DESIRED_BSS_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(153),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DESIRED_COUNTRY_OR_REGION_STRING"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(145),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DESIRED_PHY_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(124),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DESIRED_SSID_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(142),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DISCONNECT_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(64),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DIVERSITY_SELECTION_RX"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(42),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DIVERSITY_SUPPORT"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(97),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DSSS_OFDM_OPTION_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(96),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DSSS_OFDM_OPTION_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(28),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_DTIM_PERIOD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(56),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ED_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(81),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_EHCC_CAPABILITY_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(80),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_EHCC_CAPABILITY_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(79),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(78),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_EHCC_PRIME_RADIX"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(133),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ENABLED_AUTHENTICATION_ALGORITHM"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(137),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ENABLED_MULTICAST_CIPHER_ALGORITHM"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(135),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ENABLED_UNICAST_CIPHER_ALGORITHM"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(141),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ENUM_ASSOCIATION_INFO"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(121),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ENUM_BSS_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(95),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ERP_PBCC_OPTION_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(94),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_ERP_PBCC_OPTION_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(125),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_EXCLUDED_MAC_ADDRESS_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(130),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_EXCLUDE_UNENCRYPTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(150),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_EXTSTA_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(122),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_FLUSH_BSS_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(34),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_FRAGMENTATION_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(68),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_FREQUENCY_BANDS_SUPPORTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(158),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_HIDDEN_NETWORK_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(87),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_HOPPING_PATTERN"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(82),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_HOP_ALGORITHM_ADOPTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(85),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_HOP_MODULUS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(86),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_HOP_OFFSET"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(46),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_HOP_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(73),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_HR_CCA_MODE_SUPPORTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(155),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_IBSS_PARAMS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(13),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_JOIN_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(33),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_LONG_RETRY_LIMIT"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(30),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MAC_ADDRESS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(1024+5),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MAXIMUM_LIST_SIZE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(48),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MAX_DWELL_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(100),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MAX_MAC_ADDRESS_STATES"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(36),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MAX_RECEIVE_LIFETIME"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(35),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MAX_TRANSMIT_MSDU_LIFETIME"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(147),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MEDIA_STREAMING_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(21),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MEDIUM_OCCUPANCY_LIMIT"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(6),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MPDU_MAX_LENGTH"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(1024+4),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MULTICAST_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(77),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MULTI_DOMAIN_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(75),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MULTI_DOMAIN_CAPABILITY_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(74),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(17),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_NIC_POWER_STATE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(92),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_NIC_SPECIFIC_EXTENSION"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(84),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_NUMBER_OF_HOPPING_SETS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(0),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_OFFLOAD_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(26),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_OPERATIONAL_RATE_SET"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(7),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_OPERATION_MODE_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(18),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_OPTIONAL_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(70),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_PBCC_OPTION_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(1024+3),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_PERMANENT_ADDRESS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(144),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_PHY_STATE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(128),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_PMKID_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(154),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_PORT_STATE_NOTIFICATION"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(25),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_POWER_MGMT_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(123),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_POWER_MGMT_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(132),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_PRIVACY_EXEMPTION_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(156),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_QOS_PARAMS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(107),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_QOS_TX_DURATION"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(108),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_QOS_TX_MEDIUM_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(106),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_QOS_TX_QUEUES_SUPPORTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(88),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_RANDOM_TABLE_FIELD_NUMBER"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(83),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_RANDOM_TABLE_FLAG"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(101),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_RECV_SENSITIVITY_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(61),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_REG_DOMAINS_SUPPORT_VALUE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(16),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_RESET_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(91),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_RF_USAGE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(90),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_RSSI_RANGE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(31),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_RTS_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(157),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SAFE_MODE_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(11),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SCAN_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(69),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SHORT_PREAMBLE_OPTION_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(32),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SHORT_RETRY_LIMIT"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(99),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SHORT_SLOT_TIME_OPTION_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(98),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SHORT_SLOT_TIME_OPTION_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(14),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_START_REQUEST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(20),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_STATION_ID"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(131),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_STATISTICS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(152),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_COUNTRY_OR_REGION_STRING"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(65),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_DATA_RATES_VALUE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(110),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_DSSS_CHANNEL_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(136),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_MULTICAST_ALGORITHM_PAIR"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(109),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_OFDM_FREQUENCY_LIST"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(38),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_PHY_TYPES"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(44),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_POWER_LEVELS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(63),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_RX_ANTENNA"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(62),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_TX_ANTENNA"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(134),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_SUPPORTED_UNICAST_ALGORITHM_PAIR"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(40),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_TEMP_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(67),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_TI_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(143),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_UNICAST_USE_GROUP_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(148),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_UNREACHABLE_DETECTION_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(15),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_UPDATE_IE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(29),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WEP_ICV_ERROR_COUNT"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(2),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WEP_OFFLOAD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(3),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WEP_UPLOAD"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(104),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WME_AC_PARAMETERS"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(103),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WME_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(102),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WME_IMPLEMENTED"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(105),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WME_UPDATE_IE"); - IF_GUID_EQUAL_RETURN(guid,0x6cb9a43e+(89),0xc45f,0x4039,0x9f,0xe6,0xd0,0x8c,0xb0,0x57,0x18,0x4c,"GUID_NWF_WPA_TSC"); - IF_GUID_EQUAL_RETURN(guid,0x86c4fa80,0x8d84,0x11d0,0x94,0xe8,0x00,0xc0,0x4f,0xc3,0x41,0x37,"GUID_NonLocalVidMemCaps"); - IF_GUID_EQUAL_RETURN(guid,0xe05c8472,0x51d4,0x11d1,0x8c,0xce,0x0,0xa0,0xc9,0x6,0x29,0xa8,"GUID_OptSurfaceKmodeInfo"); - IF_GUID_EQUAL_RETURN(guid,0x9d792804,0x5fa8,0x11d1,0x8c,0xd0,0x0,0xa0,0xc9,0x6,0x29,0xa8,"GUID_OptSurfaceUmodeInfo"); - IF_GUID_EQUAL_RETURN(guid,0xee12f906,0xd277,0x404b,0xb6,0xda,0xe5,0xfa,0x1a,0x57,0x6d,0xf5,"GUID_PCIEXPRESS_ASPM_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x501a4d13,0x42af,0x4429,0x9f,0xd1,0xa8,0x21,0x8c,0x26,0x8e,0x20,"GUID_PCIEXPRESS_SETTINGS_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_POV"); - IF_GUID_EQUAL_RETURN(guid,0x7648EFA3,0xDD9C,0x4E3E,0xB5,0x66,0x50,0xF9,0x29,0x38,0x62,0x80,"GUID_POWERBUTTON_ACTION"); - IF_GUID_EQUAL_RETURN(guid,0x245D8541,0x3943,0x4422,0xB0,0x25,0x13,0xA7,0x84,0xF6,0x79,0xB7,"GUID_POWERSCHEME_PERSONALITY"); - IF_GUID_EQUAL_RETURN(guid,0x3b04d4fd,0x1cc7,0x4f23,0xab,0x1c,0xd1,0x33,0x78,0x19,0xc4,0xbb,"GUID_PROCESSOR_ALLOW_THROTTLING"); - IF_GUID_EQUAL_RETURN(guid,0x8f7b45e3,0xc393,0x480a,0x87,0x8c,0xf6,0x7a,0xc3,0xd0,0x70,0x82,"GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR"); - IF_GUID_EQUAL_RETURN(guid,0x5b33697b,0xe89d,0x4d38,0xaa,0x46,0x9e,0x7d,0xfb,0x7c,0xd2,0xf9,"GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0xe70867f1,0xfa2f,0x4f4e,0xae,0xa1,0x4d,0x8a,0x0b,0xa2,0x3b,0x20,"GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING"); - IF_GUID_EQUAL_RETURN(guid,0x71021b41,0xc749,0x4d21,0xbe,0x74,0xa0,0x0f,0x33,0x5d,0x58,0x2b,"GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x68dd2f27,0xa4ce,0x4e11,0x84,0x87,0x37,0x94,0xe4,0x13,0x5d,0xfa,"GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0xdfd10d17,0xd5eb,0x45dd,0x87,0x7a,0x9a,0x34,0xdd,0xd1,0x5c,0x82,"GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME"); - IF_GUID_EQUAL_RETURN(guid,0xc7be0679,0x2817,0x4d69,0x9d,0x02,0x51,0x9a,0x53,0x7e,0xd0,0xc6,"GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0xdf142941,0x20f3,0x4edf,0x9a,0x4a,0x9c,0x83,0xd3,0xd7,0x17,0xd1,"GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x2ddd5a84,0x5a71,0x437e,0x91,0x2a,0xdb,0x0b,0x8c,0x78,0x87,0x32,"GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME"); - IF_GUID_EQUAL_RETURN(guid,0xea062031,0x0e34,0x4ff1,0x9b,0x6d,0xeb,0x10,0x59,0x33,0x40,0x28,"GUID_PROCESSOR_CORE_PARKING_MAX_CORES"); - IF_GUID_EQUAL_RETURN(guid,0x0cc5b647,0xc1df,0x4637,0x89,0x1a,0xde,0xc3,0x5c,0x31,0x85,0x83,"GUID_PROCESSOR_CORE_PARKING_MIN_CORES"); - IF_GUID_EQUAL_RETURN(guid,0x1299023c,0xbc28,0x4f0a,0x81,0xec,0xd3,0x29,0x5a,0x8d,0x81,0x5d,"GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR"); - IF_GUID_EQUAL_RETURN(guid,0x9ac18e92,0xaa3c,0x4e27,0xb3,0x07,0x01,0xae,0x37,0x30,0x71,0x29,"GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x943c8cb6,0x6f93,0x4227,0xad,0x87,0xe9,0xa3,0xfe,0xec,0x08,0xd1,"GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x8809c2d8,0xb155,0x42d4,0xbc,0xda,0x0d,0x34,0x56,0x51,0xb1,0xdb,"GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING"); - IF_GUID_EQUAL_RETURN(guid,0xe0007330,0xf589,0x42ed,0xa4,0x01,0x5d,0xdb,0x10,0xe7,0x85,0xd3,"GUID_PROCESSOR_DISTRIBUTE_UTILITY"); - IF_GUID_EQUAL_RETURN(guid,0x68f262a7,0xf621,0x4069,0xb9,0xa5,0x48,0x74,0x16,0x9b,0xe2,0x3c,"GUID_PROCESSOR_IDLESTATE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x6c2993b0,0x8f48,0x481f,0xbc,0xc6,0x0,0xdd,0x27,0x42,0xaa,0x6,"GUID_PROCESSOR_IDLE_ALLOW_SCALING"); - IF_GUID_EQUAL_RETURN(guid,0x4b92d758,0x5a24,0x4851,0xa4,0x70,0x81,0x5d,0x78,0xae,0xe1,0x19,"GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x5d76a2ca,0xe8c0,0x402f,0xa1,0x33,0x21,0x58,0x49,0x2d,0x58,0xad,"GUID_PROCESSOR_IDLE_DISABLE"); - IF_GUID_EQUAL_RETURN(guid,0x7b224883,0xb3cc,0x4d79,0x81,0x9f,0x83,0x74,0x15,0x2c,0xbe,0x7c,"GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x9943e905,0x9a30,0x4ec1,0x9b,0x99,0x44,0xdd,0x3b,0x76,0xf7,0xa2,"GUID_PROCESSOR_IDLE_STATE_MAXIMUM"); - IF_GUID_EQUAL_RETURN(guid,0xc4581c31,0x89ab,0x4597,0x8e,0x2b,0x9c,0x9c,0xab,0x44,0xe,0x6b,"GUID_PROCESSOR_IDLE_TIME_CHECK"); - IF_GUID_EQUAL_RETURN(guid,0x2430ab6f,0xa520,0x44a2,0x96,0x01,0xf7,0xf2,0x3b,0x51,0x34,0xb1,"GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0xa55612aa,0xf624,0x42c6,0xa4,0x43,0x73,0x97,0xd0,0x64,0xc0,0x4f,"GUID_PROCESSOR_PARKING_CORE_OVERRIDE"); - IF_GUID_EQUAL_RETURN(guid,0xf735a673,0x2066,0x4f80,0xa0,0xc5,0xdd,0xee,0x0c,0xf1,0xbf,0x5d,"GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x447235c7,0x6a8d,0x4cc0,0x8e,0x24,0x9e,0xaf,0x70,0xb9,0x6e,0x2b,"GUID_PROCESSOR_PARKING_PERF_STATE"); - IF_GUID_EQUAL_RETURN(guid,0xBBDC3814,0x18E9,0x4463,0x8A,0x55,0xD1,0x97,0x32,0x7C,0x45,0xC0,"GUID_PROCESSOR_PERFSTATE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0xbe337238,0xd82,0x4146,0xa9,0x60,0x4f,0x37,0x49,0xd4,0x70,0xc7,"GUID_PROCESSOR_PERF_BOOST_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x45bcc044,0xd885,0x43e2,0x86,0x5,0xee,0xe,0xc6,0xe9,0x6b,0x59,"GUID_PROCESSOR_PERF_BOOST_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x40fbefc7,0x2e9d,0x4d25,0xa1,0x85,0xc,0xfd,0x85,0x74,0xba,0xc6,"GUID_PROCESSOR_PERF_DECREASE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x12a0ab44,0xfe28,0x4fa9,0xb3,0xbd,0x4b,0x64,0xf4,0x49,0x60,0xa6,"GUID_PROCESSOR_PERF_DECREASE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0xd8edeb9b,0x95cf,0x4f95,0xa7,0x3c,0xb0,0x61,0x97,0x36,0x93,0xc8,"GUID_PROCESSOR_PERF_DECREASE_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x7d24baa7,0x0b84,0x480f,0x84,0x0c,0x1b,0x07,0x43,0xc0,0x0f,0x5f,"GUID_PROCESSOR_PERF_HISTORY"); - IF_GUID_EQUAL_RETURN(guid,0x465e1f50,0xb610,0x473a,0xab,0x58,0x0,0xd1,0x7,0x7d,0xc4,0x18,"GUID_PROCESSOR_PERF_INCREASE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x06cadf0e,0x64ed,0x448a,0x89,0x27,0xce,0x7b,0xf9,0x0e,0xb3,0x5d,"GUID_PROCESSOR_PERF_INCREASE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x984cf492,0x3bed,0x4488,0xa8,0xf9,0x42,0x86,0xc9,0x7b,0xf5,0xaa,"GUID_PROCESSOR_PERF_INCREASE_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x0822df31,0x9c83,0x441c,0xa0,0x79,0x0d,0xe4,0xcf,0x00,0x9c,0x7b,"GUID_PROCESSOR_PERF_LATENCY_HINT"); - IF_GUID_EQUAL_RETURN(guid,0x4d2b0152,0x7d5c,0x498b,0x88,0xe2,0x34,0x34,0x53,0x92,0xa2,0xc5,"GUID_PROCESSOR_PERF_TIME_CHECK"); - IF_GUID_EQUAL_RETURN(guid,0x54533251,0x82BE,0x4824,0x96,0xC1,0x47,0xB6,0x0B,0x74,0x0D,0x00,"GUID_PROCESSOR_SETTINGS_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0xBC5038F7,0x23E0,0x4960,0x96,0xDA,0x33,0xAB,0xAF,0x59,0x35,0xEC,"GUID_PROCESSOR_THROTTLE_MAXIMUM"); - IF_GUID_EQUAL_RETURN(guid,0x893DEE8E,0x2BEF,0x41E0,0x89,0xC6,0xB5,0x5D,0x09,0x29,0x96,0x4C,"GUID_PROCESSOR_THROTTLE_MINIMUM"); - IF_GUID_EQUAL_RETURN(guid,0x57027304,0x4AF6,0x4104,0x92,0x60,0xE3,0xD9,0x52,0x48,0xFC,0x36,"GUID_PROCESSOR_THROTTLE_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x1713dd5a,0x68e7,0x4a5b,0x9a,0xf6,0x59,0x2a,0x59,0x5c,0x77,0x8d,"GUID_PROP_INPUTSCOPE"); - IF_GUID_EQUAL_RETURN(guid,0x2941ff83,0x88d8,0x4f73,0xb6,0xa9,0xbd,0xf8,0x71,0x2d,0x00,0x0d,"GUID_PropGetCA"); - IF_GUID_EQUAL_RETURN(guid,0x29533527,0x3683,0x4364,0xab,0xc0,0xdb,0x1a,0xdd,0x82,0x2f,0xa2,"GUID_PropPutCA"); - IF_GUID_EQUAL_RETURN(guid,0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_RampForce"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_RxAxis"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_RyAxis"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_RzAxis"); - IF_GUID_EQUAL_RETURN(guid,0x2b84c20e,0xad23,0x4ddf,0x93,0xdb,0x5,0xff,0xbd,0x7e,0xfc,0xa5,"GUID_SESSION_DISPLAY_STATUS"); - IF_GUID_EQUAL_RETURN(guid,0x3c0f4548,0xc03f,0x4c4d,0xb9,0xf2,0x23,0x7e,0xde,0x68,0x63,0x76,"GUID_SESSION_USER_PRESENCE"); - IF_GUID_EQUAL_RETURN(guid,0x96996BC0,0xAD50,0x47EC,0x92,0x3B,0x6F,0x41,0x87,0x4D,0xD9,0xEB,"GUID_SLEEPBUTTON_ACTION"); - IF_GUID_EQUAL_RETURN(guid,0x81cd32e0,0x7833,0x44f3,0x87,0x37,0x70,0x81,0xf3,0x8d,0x1f,0x70,"GUID_SLEEP_IDLE_THRESHOLD"); - IF_GUID_EQUAL_RETURN(guid,0x238C9FA8,0x0AAD,0x41ED,0x83,0xF4,0x97,0xBE,0x24,0x2C,0x8F,0x20,"GUID_SLEEP_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0x29F6C1DB,0x86DA,0x48C5,0x9F,0xDB,0xF2,0xB6,0x7B,0x1F,0x44,0xDA,"GUID_STANDBY_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0xc00eb795,0x8c6e,0x11d2,0x97,0x7a,0x0,0x0,0xf8,0x7a,0x92,0x6f,"GUID_STIUserDefined1"); - IF_GUID_EQUAL_RETURN(guid,0xc77ae9c5,0x8c6e,0x11d2,0x97,0x7a,0x0,0x0,0xf8,0x7a,0x92,0x6f,"GUID_STIUserDefined2"); - IF_GUID_EQUAL_RETURN(guid,0xc77ae9c6,0x8c6e,0x11d2,0x97,0x7a,0x0,0x0,0xf8,0x7a,0x92,0x6f,"GUID_STIUserDefined3"); - IF_GUID_EQUAL_RETURN(guid,0x98A7F580,0x01F7,0x48AA,0x9C,0x0F,0x44,0x35,0x2C,0x29,0xE5,0xC0,"GUID_SYSTEM_AWAYMODE"); - IF_GUID_EQUAL_RETURN(guid,0x4F971E89,0xEEBD,0x4455,0xA8,0xDE,0x9E,0x59,0x04,0x0E,0x73,0x47,"GUID_SYSTEM_BUTTON_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0x94D3A615,0xA899,0x4AC5,0xAE,0x2B,0xE4,0xD8,0xF6,0x34,0x36,0x7F,"GUID_SYSTEM_COOLING_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_SawtoothDown"); - IF_GUID_EQUAL_RETURN(guid,0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_SawtoothUp"); - IF_GUID_EQUAL_RETURN(guid,0xc00eb793,0x8c6e,0x11d2,0x97,0x7a,0x0,0x0,0xf8,0x7a,0x92,0x6f,"GUID_ScanFaxImage"); - IF_GUID_EQUAL_RETURN(guid,0xa6c5a715,0x8c6e,0x11d2,0x97,0x7a,0x0,0x0,0xf8,0x7a,0x92,0x6f,"GUID_ScanImage"); - IF_GUID_EQUAL_RETURN(guid,0xb441f425,0x8c6e,0x11d2,0x97,0x7a,0x0,0x0,0xf8,0x7a,0x92,0x6f,"GUID_ScanPrintImage"); - IF_GUID_EQUAL_RETURN(guid,0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_Sine"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_Slider"); - IF_GUID_EQUAL_RETURN(guid,0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_Spring"); - IF_GUID_EQUAL_RETURN(guid,0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_Square"); - IF_GUID_EQUAL_RETURN(guid,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_SysKeyboard"); - IF_GUID_EQUAL_RETURN(guid,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_SysKeyboardEm2"); - IF_GUID_EQUAL_RETURN(guid,0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_SysKeyboardEm"); - IF_GUID_EQUAL_RETURN(guid,0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_SysMouse"); - IF_GUID_EQUAL_RETURN(guid,0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_SysMouseEm2"); - IF_GUID_EQUAL_RETURN(guid,0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_SysMouseEm"); - IF_GUID_EQUAL_RETURN(guid,0x574c49d,0x5b04,0x4b15,0xa5,0x42,0xae,0x28,0x20,0x30,0x11,0x7b,"GUID_TIME_MUSIC"); - IF_GUID_EQUAL_RETURN(guid,0x93ad712b,0xdaa0,0x4ffe,0xbc,0x81,0xb0,0xce,0x50,0xf,0xcd,0xd9,"GUID_TIME_REFERENCE"); - IF_GUID_EQUAL_RETURN(guid,0xa8593d05,0xc43,0x4984,0x9a,0x63,0x97,0xaf,0x9e,0x2,0xc4,0xc0,"GUID_TIME_SAMPLES"); - IF_GUID_EQUAL_RETURN(guid,0xf9786200,0xa5bf,0x4a0f,0x8c,0x24,0xfb,0x16,0xf5,0xd1,0xaa,0xbb,"GUID_TS_SERVICE_ACCESSIBLE"); - IF_GUID_EQUAL_RETURN(guid,0xea937a50,0xc9a6,0x4b7d,0x89,0x4a,0x49,0xd9,0x9b,0x78,0x48,0x34,"GUID_TS_SERVICE_ACTIVEX"); - IF_GUID_EQUAL_RETURN(guid,0x6086fbb5,0xe225,0x46ce,0xa7,0x70,0xc1,0xbb,0xd3,0xe0,0x5d,0x7b,"GUID_TS_SERVICE_DATAOBJECT"); - IF_GUID_EQUAL_RETURN(guid,0x381B4222,0xF694,0x41F0,0x96,0x85,0xFF,0x5B,0xB2,0x60,0xDF,0x2E,"GUID_TYPICAL_POWER_SAVINGS"); - IF_GUID_EQUAL_RETURN(guid,0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"GUID_Triangle"); - IF_GUID_EQUAL_RETURN(guid,0x7bc4a2f9,0xd8fc,0x4469,0xb0,0x7b,0x33,0xeb,0x78,0x5a,0xac,0xa0,"GUID_UNATTEND_SLEEP_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0xA7066653,0x8D6C,0x40A8,0x91,0x0E,0xA1,0xF5,0x4B,0x84,0xC7,0xE5,"GUID_USERINTERFACEBUTTON_ACTION"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_Unknown"); - IF_GUID_EQUAL_RETURN(guid,0x42e02f17,0x7b41,0x11d2,0x8b,0xff,0x0,0xa0,0xc9,0x83,0xea,0xf6,"GUID_UpdateNonLocalHeap"); - IF_GUID_EQUAL_RETURN(guid,0xf0b0e8e2,0x5f97,0x11d1,0x8c,0xd0,0x0,0xa0,0xc9,0x6,0x29,0xa8,"GUID_UserModeDriverInfo"); - IF_GUID_EQUAL_RETURN(guid,0x97f861b6,0x60a1,0x11d1,0x8c,0xd0,0x0,0xa0,0xc9,0x6,0x29,0xa8,"GUID_UserModeDriverPassword"); - IF_GUID_EQUAL_RETURN(guid,0xFBD9AA66,0x9553,0x4097,0xBA,0x44,0xED,0x6E,0x9D,0x65,0xEA,0xB8,"GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS"); - IF_GUID_EQUAL_RETURN(guid,0xEED904DF,0xB142,0x4183,0xB1,0x0B,0x5A,0x11,0x97,0xA3,0x78,0x64,"GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE"); - IF_GUID_EQUAL_RETURN(guid,0x90959D22,0xD6A1,0x49B9,0xAF,0x93,0xBC,0xE8,0x85,0xAD,0x33,0x5B,"GUID_VIDEO_ADAPTIVE_POWERDOWN"); - IF_GUID_EQUAL_RETURN(guid,0x82DBCF2D,0xCD67,0x40C5,0xBF,0xDC,0x9F,0x1A,0x5C,0xCD,0x46,0x63,"GUID_VIDEO_ANNOYANCE_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x8ec4b3a5,0x6868,0x48c2,0xbe,0x75,0x4f,0x30,0x44,0xbe,0x88,0xa7,"GUID_VIDEO_CONSOLE_LOCK_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x8ffee2c6,0x2d01,0x46be,0xad,0xb9,0x39,0x8a,0xdd,0xc5,0xb4,0xff,"GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS"); - IF_GUID_EQUAL_RETURN(guid,0x17aaa29b,0x8b43,0x4b94,0xaa,0xfe,0x35,0xf6,0x4d,0xaa,0xf1,0xee,"GUID_VIDEO_DIM_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x3C0BC021,0xC8A8,0x4E07,0xA9,0x73,0x6B,0x14,0xCB,0xCB,0x2B,0x7E,"GUID_VIDEO_POWERDOWN_TIMEOUT"); - IF_GUID_EQUAL_RETURN(guid,0x7516B95F,0xF776,0x4464,0x8C,0x53,0x06,0x16,0x7F,0x40,0xCC,0x99,"GUID_VIDEO_SUBGROUP"); - IF_GUID_EQUAL_RETURN(guid,0x52882147,0x2d47,0x469a,0xa0,0xd1,0x3,0x45,0x58,0x90,0xf6,0xc8,"GUID_VPE2Callbacks"); - IF_GUID_EQUAL_RETURN(guid,0xf0e749ca,0xedef,0x4589,0xa7,0x3a,0xee,0xe,0x62,0x6a,0x2a,0x2b,"GUID_VendorMicrosoft"); - IF_GUID_EQUAL_RETURN(guid,0x257a30fd,0x6b6,0x462b,0xae,0xa4,0x63,0xf7,0xb,0x86,0xe5,0x33,"GUID_VendorMicrosoftBuiltIn"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc1,0x49e7,0x11d0,0x88,0x9d,0x0,0xaa,0x0,0xbb,0xb7,0x6a,"GUID_VideoPortCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc1,0x49e7,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a,"GUID_VideoPortCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc3,0x49e7,0x11d0,0x88,0x9d,0x0,0xaa,0x0,0xbb,0xb7,0x6a,"GUID_VideoPortCaps"); - IF_GUID_EQUAL_RETURN(guid,0xefd60cc3,0x49e7,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a,"GUID_VideoPortCaps"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x37,"GUID_WICPixelFormat112bpp6ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x2a,"GUID_WICPixelFormat112bpp7Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x38,"GUID_WICPixelFormat128bpp7ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x2b,"GUID_WICPixelFormat128bpp8Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1a,"GUID_WICPixelFormat128bppPRGBAFloat"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1e,"GUID_WICPixelFormat128bppRGBAFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x19,"GUID_WICPixelFormat128bppRGBAFloat"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x41,"GUID_WICPixelFormat128bppRGBFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1b,"GUID_WICPixelFormat128bppRGBFloat"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x39,"GUID_WICPixelFormat144bpp8ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x09,"GUID_WICPixelFormat16bppBGR555"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0a,"GUID_WICPixelFormat16bppBGR565"); - IF_GUID_EQUAL_RETURN(guid,0x05ec7c2b,0xf1e6,0x4961,0xad,0x46,0xe1,0xcc,0x81,0x0a,0x87,0xd2,"GUID_WICPixelFormat16bppBGRA5551"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0b,"GUID_WICPixelFormat16bppGray"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x13,"GUID_WICPixelFormat16bppGrayFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x3e,"GUID_WICPixelFormat16bppGrayHalf"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x01,"GUID_WICPixelFormat1bppIndexed"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x20,"GUID_WICPixelFormat24bpp3Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0c,"GUID_WICPixelFormat24bppBGR"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0d,"GUID_WICPixelFormat24bppRGB"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x06,"GUID_WICPixelFormat2bppGray"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x02,"GUID_WICPixelFormat2bppIndexed"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x2e,"GUID_WICPixelFormat32bpp3ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x21,"GUID_WICPixelFormat32bpp4Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x14,"GUID_WICPixelFormat32bppBGR101010"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0e,"GUID_WICPixelFormat32bppBGR"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x0f,"GUID_WICPixelFormat32bppBGRA"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1c,"GUID_WICPixelFormat32bppCMYK"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x3f,"GUID_WICPixelFormat32bppGrayFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x11,"GUID_WICPixelFormat32bppGrayFloat"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x10,"GUID_WICPixelFormat32bppPBGRA"); - IF_GUID_EQUAL_RETURN(guid,0x3cc4a650,0xa527,0x4d37,0xa9,0x16,0x31,0x42,0xc7,0xeb,0xed,0xba,"GUID_WICPixelFormat32bppPRGBA"); - IF_GUID_EQUAL_RETURN(guid,0xd98c6b95,0x3efe,0x47d6,0xbb,0x25,0xeb,0x17,0x48,0xab,0x0c,0xf1,"GUID_WICPixelFormat32bppRGB"); - IF_GUID_EQUAL_RETURN(guid,0x25238D72,0xFCF9,0x4522,0xb5,0x14,0x55,0x78,0xe5,0xad,0x55,0xe0,"GUID_WICPixelFormat32bppRGBA1010102"); - IF_GUID_EQUAL_RETURN(guid,0x00DE6B9A,0xC101,0x434b,0xb5,0x02,0xd0,0x16,0x5e,0xe1,0x12,0x2c,"GUID_WICPixelFormat32bppRGBA1010102XR"); - IF_GUID_EQUAL_RETURN(guid,0xf5c7ad2d,0x6a8d,0x43dd,0xa7,0xa8,0xa2,0x99,0x35,0x26,0x1a,0xe9,"GUID_WICPixelFormat32bppRGBA"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x3d,"GUID_WICPixelFormat32bppRGBE"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x2f,"GUID_WICPixelFormat40bpp4ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x22,"GUID_WICPixelFormat40bpp5Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x2c,"GUID_WICPixelFormat40bppCMYKAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x26,"GUID_WICPixelFormat48bpp3Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x30,"GUID_WICPixelFormat48bpp5ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x23,"GUID_WICPixelFormat48bpp6Channels"); - IF_GUID_EQUAL_RETURN(guid,0xe605a384,0xb468,0x46ce,0xbb,0x2e,0x36,0xf1,0x80,0xe6,0x43,0x13,"GUID_WICPixelFormat48bppBGR"); - IF_GUID_EQUAL_RETURN(guid,0x49ca140e,0xcab6,0x493b,0x9d,0xdf,0x60,0x18,0x7c,0x37,0x53,0x2a,"GUID_WICPixelFormat48bppBGRFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x15,"GUID_WICPixelFormat48bppRGB"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x12,"GUID_WICPixelFormat48bppRGBFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x3b,"GUID_WICPixelFormat48bppRGBHalf"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x07,"GUID_WICPixelFormat4bppGray"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x03,"GUID_WICPixelFormat4bppIndexed"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x31,"GUID_WICPixelFormat56bpp6ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x24,"GUID_WICPixelFormat56bpp7Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x34,"GUID_WICPixelFormat64bpp3ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x27,"GUID_WICPixelFormat64bpp4Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x32,"GUID_WICPixelFormat64bpp7ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x25,"GUID_WICPixelFormat64bpp8Channels"); - IF_GUID_EQUAL_RETURN(guid,0x1562ff7c,0xd352,0x46f9,0x97,0x9e,0x42,0x97,0x6b,0x79,0x22,0x46,"GUID_WICPixelFormat64bppBGRA"); - IF_GUID_EQUAL_RETURN(guid,0x356de33c,0x54d2,0x4a23,0xbb,0x4,0x9b,0x7b,0xf9,0xb1,0xd4,0x2d,"GUID_WICPixelFormat64bppBGRAFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1f,"GUID_WICPixelFormat64bppCMYK"); - IF_GUID_EQUAL_RETURN(guid,0x8c518e8e,0xa4ec,0x468b,0xae,0x70,0xc9,0xa3,0x5a,0x9c,0x55,0x30,"GUID_WICPixelFormat64bppPBGRA"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x17,"GUID_WICPixelFormat64bppPRGBA"); - IF_GUID_EQUAL_RETURN(guid,0x58ad26c2,0xc623,0x4d9d,0xb3,0x20,0x38,0x7e,0x49,0xf8,0xc4,0x42,"GUID_WICPixelFormat64bppPRGBAHalf"); - IF_GUID_EQUAL_RETURN(guid,0xa1182111,0x186d,0x4d42,0xbc,0x6a,0x9c,0x83,0x03,0xa8,0xdf,0xf9,"GUID_WICPixelFormat64bppRGB"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x16,"GUID_WICPixelFormat64bppRGBA"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x1d,"GUID_WICPixelFormat64bppRGBAFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x3a,"GUID_WICPixelFormat64bppRGBAHalf"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x40,"GUID_WICPixelFormat64bppRGBFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x42,"GUID_WICPixelFormat64bppRGBHalf"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x33,"GUID_WICPixelFormat72bpp8ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x35,"GUID_WICPixelFormat80bpp4ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x28,"GUID_WICPixelFormat80bpp5Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x2d,"GUID_WICPixelFormat80bppCMYKAlpha"); - IF_GUID_EQUAL_RETURN(guid,0xe6cd0116,0xeeba,0x4161,0xaa,0x85,0x27,0xdd,0x9f,0xb3,0xa8,0x95,"GUID_WICPixelFormat8bppAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x08,"GUID_WICPixelFormat8bppGray"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x04,"GUID_WICPixelFormat8bppIndexed"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x36,"GUID_WICPixelFormat96bpp5ChannelsAlpha"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x29,"GUID_WICPixelFormat96bpp6Channels"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x18,"GUID_WICPixelFormat96bppRGBFixedPoint"); - IF_GUID_EQUAL_RETURN(guid,0xe3fed78f,0xe8db,0x4acf,0x84,0xc1,0xe9,0x7f,0x61,0x36,0xb3,0x27,"GUID_WICPixelFormat96bppRGBFloat"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x05,"GUID_WICPixelFormatBlackWhite"); - IF_GUID_EQUAL_RETURN(guid,0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x00,"GUID_WICPixelFormatDontCare"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_XAxis"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_YAxis"); - IF_GUID_EQUAL_RETURN(guid,0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"GUID_ZAxis"); - IF_GUID_EQUAL_RETURN(guid,0x93869880,0x36cf,0x11d1,0x9b,0x1b,0x0,0xaa,0x0,0xbb,0xb8,0xae,"GUID_ZPixelFormats"); - IF_GUID_EQUAL_RETURN(guid,0x583ea3f5,0x86d0,0x4b08,0xa6,0xec,0x2c,0x54,0x63,0xff,0xc1,0x09,"GridItem_ColumnSpan_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc774c15c,0x62c0,0x4519,0x8b,0xdc,0x47,0xbe,0x57,0x3c,0x8a,0xd5,"GridItem_Column_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9d912252,0xb97f,0x4ecc,0x85,0x10,0xea,0x0e,0x33,0x42,0x7c,0x72,"GridItem_Parent_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf2d5c877,0xa462,0x4957,0xa2,0xa5,0x2c,0x96,0xb3,0x03,0xbc,0x63,"GridItem_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4582291c,0x466b,0x4e93,0x8e,0x83,0x3d,0x17,0x15,0xec,0x0c,0x5e,"GridItem_RowSpan_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6223972a,0xc945,0x4563,0x93,0x29,0xfd,0xc9,0x74,0xaf,0x25,0x53,"GridItem_Row_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xfe96f375,0x44aa,0x4536,0xac,0x7a,0x2a,0x75,0xd7,0x1a,0x3e,0xfc,"Grid_ColumnCount_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x260a2ccb,0x93a8,0x4e44,0xa4,0xc1,0x3d,0xf3,0x97,0xf2,0xb0,0x2b,"Grid_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2a9505bf,0xc2eb,0x4fb6,0xb3,0x56,0x82,0x45,0xae,0x53,0x70,0x3e,"Grid_RowCount_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xad50aa1c,0xe8c8,0x4774,0xae,0x1b,0xdd,0x86,0xdf,0x0b,0x3b,0xdc,"Group_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xcf8afd39,0x3f46,0x4800,0x96,0x56,0xb2,0xbf,0x12,0x52,0x99,0x05,"HasKeyboardFocus_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe6bc12cb,0x7c8e,0x49cf,0xb1,0x68,0x4a,0x93,0xa3,0x2b,0xeb,0xb0,"HeaderItem_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5b90cbce,0x78fb,0x4614,0x82,0xb6,0x55,0x4d,0x74,0x71,0x8e,0x67,"Header_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x08555685,0x0977,0x45c7,0xa7,0xa6,0xab,0xaf,0x56,0x84,0x12,0x1a,"HelpText_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe6bdb03e,0x0921,0x4ec5,0x8d,0xcf,0xea,0xe8,0x77,0xb0,0x42,0x6b,"HostedFragmentRootsInvalidated_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8a56022c,0xb00d,0x4d15,0x8f,0xf0,0x5b,0x6b,0x26,0x6e,0x5e,0x02,"Hyperlink_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9cae40a8,0xded1,0x41c9,0xa9,0xfd,0xd7,0x35,0xef,0x33,0xae,0xda,"ID_DOCUMENTPACKAGETARGET_MSXPS"); - IF_GUID_EQUAL_RETURN(guid,0x0056bb72,0x8c9c,0x4612,0xbd,0x0f,0x93,0x01,0x2a,0x87,0x09,0x9d,"ID_DOCUMENTPACKAGETARGET_OPENXPS"); - IF_GUID_EQUAL_RETURN(guid,0xa9e69613,0xb80d,0x11d0,0xb9,0xb9,0x00,0xa0,0xc9,0x22,0xe7,0x50,"IID_AsyncIMSAdminBaseSink_W"); - IF_GUID_EQUAL_RETURN(guid,0x4434FF80,0xEF4C,0x11CE,0xAE,0x65,0x08,0x00,0x2B,0x2E,0x12,0x62,"IID_CDefView"); - IF_GUID_EQUAL_RETURN(guid,0xe4a36723,0xfdfe,0x4b22,0xb1,0x46,0x3c,0x4,0xc0,0x7f,0x4c,0xc8,"IID_HelperName"); - IF_GUID_EQUAL_RETURN(guid,0x470141a0L,0x5186,0x11d2,0xbb,0xb6,0x00,0x60,0x97,0x7b,0x46,0x4c,"IID_IACList2"); - IF_GUID_EQUAL_RETURN(guid,0x77A130B0L,0x94FD,0x11D0,0xA5,0x44,0x00,0xC0,0x4F,0xD7,0xd0,0x62,"IID_IACList"); - IF_GUID_EQUAL_RETURN(guid,0x51dfe970,0xf6f2,0x11d0,0xb9,0xbd,0x0,0xa0,0xc9,0x22,0xe7,0x50,"IID_IADMEXT"); - IF_GUID_EQUAL_RETURN(guid,0xb22754e2,0x4574,0x11d1,0x98,0x88,0x0,0x60,0x97,0xde,0xac,0xf9,"IID_IADesktopP2"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b9,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IAMCollection"); - IF_GUID_EQUAL_RETURN(guid,0x546f4260,0xd53e,0x11cf,0xb3,0xf0,0x0,0xaa,0x0,0x37,0x61,0xc5,"IID_IAMDirectSound"); - IF_GUID_EQUAL_RETURN(guid,0x6e8d4a21,0x310c,0x11d0,0xb7,0x9a,0x0,0xaa,0x0,0x37,0x67,0xa7,"IID_IAMLine21Decoder"); - IF_GUID_EQUAL_RETURN(guid,0x56a868fe,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70,"IID_IAMPlayList"); - IF_GUID_EQUAL_RETURN(guid,0x56a868ff,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70,"IID_IAMPlayListItem"); - IF_GUID_EQUAL_RETURN(guid,0x2ef04dd,0x7580,0x11d1,0xbe,0xce,0x0,0xc0,0x4f,0xb6,0xe9,0x37,"IID_IAMRebuild"); - IF_GUID_EQUAL_RETURN(guid,0xbc9bcf80,0xdcd2,0x11d2,0xab,0xf6,0x00,0xa0,0xc9,0x05,0xf3,0x75,"IID_IAMStats"); - IF_GUID_EQUAL_RETURN(guid,0x6dd816d7,0xe740,0x4123,0x9e,0x24,0x24,0x44,0x41,0x26,0x44,0xd8,"IID_IAMWMBufferPass"); - IF_GUID_EQUAL_RETURN(guid,0xb25b8372,0xd2d2,0x44b2,0x86,0x53,0x1b,0x8d,0xae,0x33,0x24,0x89,"IID_IAMWMBufferPassCallback"); - IF_GUID_EQUAL_RETURN(guid,0xc056de21,0x75c2,0x11d3,0xa1,0x84,0x0,0x10,0x5a,0xef,0x9f,0x33,"IID_IAMWstDecoder"); - IF_GUID_EQUAL_RETURN(guid,0xF5A6893E,0xA0F5,0x11d1,0x8C,0x4B,0x00,0xC0,0x4F,0xC3,0x24,0xA4,"IID_IASPError"); - IF_GUID_EQUAL_RETURN(guid,0x00020024,0,0,0xC0,0,0,0,0,0,0,0x46,"IID_IAVIEditStream"); - IF_GUID_EQUAL_RETURN(guid,0x00020020,0,0,0xC0,0,0,0,0,0,0,0x46,"IID_IAVIFile"); - IF_GUID_EQUAL_RETURN(guid,0x00020025,0,0,0xC0,0,0,0,0,0,0,0x46,"IID_IAVIPersistFile"); - IF_GUID_EQUAL_RETURN(guid,0x00020021,0,0,0xC0,0,0,0,0,0,0,0x46,"IID_IAVIStream"); - IF_GUID_EQUAL_RETURN(guid,0x00020022,0,0,0xC0,0,0,0,0,0,0,0x46,"IID_IAVIStreaming"); - IF_GUID_EQUAL_RETURN(guid,0x4C896039,0x7B6D,0x49e6,0xA8,0xC1,0x45,0x11,0x6A,0x98,0x29,0x2B,"IID_IAccClientDocMgr"); - IF_GUID_EQUAL_RETURN(guid,0x1DC4CB5F,0xD737,0x474d,0xAD,0xE9,0x5C,0xCF,0xC9,0xBC,0x1C,0xC9,"IID_IAccDictionary"); - IF_GUID_EQUAL_RETURN(guid,0x7852b78d,0x1cfd,0x41c1,0xa6,0x15,0x9c,0x0c,0x85,0x96,0x0b,0x5f,"IID_IAccIdentity"); - IF_GUID_EQUAL_RETURN(guid,0x2bd370a9,0x3e7f,0x4edd,0x8a,0x85,0xf8,0xfe,0xd1,0xf8,0xe5,0x1f,"IID_IAccPropMgrInternal"); - IF_GUID_EQUAL_RETURN(guid,0x76c0dbbb,0x15e0,0x4e7b,0xb6,0x1b,0x20,0xee,0xea,0x20,0x01,0xe0,"IID_IAccPropServer"); - IF_GUID_EQUAL_RETURN(guid,0x6e26e776,0x04f0,0x495d,0x80,0xe4,0x33,0x30,0x35,0x2e,0x31,0x69,"IID_IAccPropServices"); - IF_GUID_EQUAL_RETURN(guid,0xAD7C73CF,0x6DD5,0x4855,0xAB,0xC2,0xB0,0x4B,0xAD,0x5B,0x91,0x53,"IID_IAccServerDocMgr"); - IF_GUID_EQUAL_RETURN(guid,0xE2CD4A63,0x2B72,0x4D48,0xB7,0x39,0x95,0xE4,0x76,0x51,0x95,0xBA,"IID_IAccStore"); - IF_GUID_EQUAL_RETURN(guid,0x618736e0,0x3c3d,0x11cf,0x81,0x0c,0x00,0xaa,0x00,0x38,0x9b,0x71,"IID_IAccessible"); - IF_GUID_EQUAL_RETURN(guid,0x03022430,0xABC4,0x11d0,0xBD,0xE2,0x00,0xAA,0x00,0x1A,0x19,0x53,"IID_IAccessibleHandler"); - IF_GUID_EQUAL_RETURN(guid,0x607BE24B,0xD91B,0x4E28,0xA2,0x42,0x61,0x87,0x1C,0xE5,0x6E,0x35,"IID_IActionOnCLREvent"); - IF_GUID_EQUAL_RETURN(guid,0xF490EB00L,0x1240,0x11D1,0x98,0x88,0x00,0x60,0x97,0xDE,0xAC,0xF9,"IID_IActiveDesktop"); - IF_GUID_EQUAL_RETURN(guid,0x52502EE0L,0xEC80,0x11D0,0x89,0xAB,0x00,0xC0,0x4F,0xC2,0x97,0x2D,"IID_IActiveDesktopP"); - IF_GUID_EQUAL_RETURN(guid,0xbb1a2ae1,0xa4f9,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"IID_IActiveScript"); - IF_GUID_EQUAL_RETURN(guid,0x9c109da0,0x7006,0x11d1,0xb3,0x6c,0x00,0xa0,0xc9,0x11,0xe8,0xb2,"IID_IActiveScriptAuthor"); - IF_GUID_EQUAL_RETURN(guid,0x7e2d4b70,0xbd9a,0x11d0,0x93,0x36,0x0,0xa0,0xc9,0xd,0xca,0xa9,"IID_IActiveScriptAuthorProcedure"); - IF_GUID_EQUAL_RETURN(guid,0xbb1a2ae3,0xa4f9,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"IID_IActiveScriptEncode"); - IF_GUID_EQUAL_RETURN(guid,0xb21fb2a1,0x5b8f,0x4963,0x8c,0x21,0x21,0x45,0x0f,0x84,0xed,0x7f,"IID_IActiveScriptError64"); - IF_GUID_EQUAL_RETURN(guid,0xeae1ba61,0xa4ed,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"IID_IActiveScriptError"); - IF_GUID_EQUAL_RETURN(guid,0x6aa2c4a0,0x2b53,0x11d4,0xa2,0xa0,0x00,0x10,0x4b,0xd3,0x50,0x90,"IID_IActiveScriptGarbageCollector"); - IF_GUID_EQUAL_RETURN(guid,0xbee9b76e,0xcfe3,0x11d1,0xb7,0x47,0x00,0xc0,0x4f,0xc2,0xb0,0x85,"IID_IActiveScriptHostEncode"); - IF_GUID_EQUAL_RETURN(guid,0xbb1a2ae2,0xa4f9,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"IID_IActiveScriptParse32"); - IF_GUID_EQUAL_RETURN(guid,0xc7ef7658,0xe1ee,0x480e,0x97,0xea,0xd5,0x2c,0xb4,0xd7,0x6d,0x17,"IID_IActiveScriptParse64"); - IF_GUID_EQUAL_RETURN(guid,0x71ee5b20,0xfb04,0x11d1,0xb3,0xa8,0x00,0xa0,0xc9,0x11,0xe8,0xb2,"IID_IActiveScriptParseProcedure2_32"); - IF_GUID_EQUAL_RETURN(guid,0xfe7c4271,0x210c,0x448d,0x9f,0x54,0x76,0xda,0xb7,0x04,0x7b,0x28,"IID_IActiveScriptParseProcedure2_64"); - IF_GUID_EQUAL_RETURN(guid,0xaa5b6a80,0xb834,0x11d0,0x93,0x2f,0x00,0xa0,0xc9,0x0d,0xca,0xa9,"IID_IActiveScriptParseProcedure32"); - IF_GUID_EQUAL_RETURN(guid,0xc64713b6,0xe029,0x4cc5,0x92,0x00,0x43,0x8b,0x72,0x89,0x0b,0x6a,"IID_IActiveScriptParseProcedure64"); - IF_GUID_EQUAL_RETURN(guid,0x1cff0050,0x6fdd,0x11d0,0x93,0x28,0x00,0xa0,0xc9,0x0d,0xca,0xa9,"IID_IActiveScriptParseProcedureOld32"); - IF_GUID_EQUAL_RETURN(guid,0x21f57128,0x08c9,0x4638,0xba,0x12,0x22,0xd1,0x5d,0x88,0xdc,0x5c,"IID_IActiveScriptParseProcedureOld64"); - IF_GUID_EQUAL_RETURN(guid,0xb403015,0xf381,0x4023,0xa5,0xd0,0x6f,0xed,0x7,0x6d,0xe7,0x16,"IID_IActiveScriptProfilerControl3"); - IF_GUID_EQUAL_RETURN(guid,0x32e4694e,0xd37,0x419b,0xb9,0x3d,0xfa,0x20,0xde,0xd6,0xe8,0xea,"IID_IActiveScriptProfilerHeapEnum"); - IF_GUID_EQUAL_RETURN(guid,0x4954E0D0,0xFBC7,0x11D1,0x84,0x10,0x00,0x60,0x08,0xC3,0xFB,0xFC,"IID_IActiveScriptProperty"); - IF_GUID_EQUAL_RETURN(guid,0x764651d0,0x38de,0x11d4,0xa2,0xa3,0x00,0x10,0x4b,0xd3,0x50,0x90,"IID_IActiveScriptSIPInfo"); - IF_GUID_EQUAL_RETURN(guid,0xdb01a1e3,0xa42b,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"IID_IActiveScriptSite"); - IF_GUID_EQUAL_RETURN(guid,0x539698a0,0xcdca,0x11cf,0xa5,0xeb,0x00,0xaa,0x00,0x47,0xa0,0x63,"IID_IActiveScriptSiteInterruptPoll"); - IF_GUID_EQUAL_RETURN(guid,0x4b7272ae,0x1955,0x4bfe,0x98,0xb0,0x78,0x6,0x21,0x88,0x85,0x69,"IID_IActiveScriptSiteTraceInfo"); - IF_GUID_EQUAL_RETURN(guid,0xaedae97e,0xd7ee,0x4796,0xb9,0x60,0x7f,0x9,0x2a,0xe8,0x44,0xab,"IID_IActiveScriptSiteUIControl"); - IF_GUID_EQUAL_RETURN(guid,0xd10f6761,0x83e9,0x11cf,0x8f,0x20,0x00,0x80,0x5f,0x2c,0xd0,0x64,"IID_IActiveScriptSiteWindow"); - IF_GUID_EQUAL_RETURN(guid,0xb8da6310,0xe19b,0x11d0,0x93,0x3c,0x00,0xa0,0xc9,0x0d,0xca,0xa9,"IID_IActiveScriptStats"); - IF_GUID_EQUAL_RETURN(guid,0x58562769,0xED52,0x42f7,0x84,0x03,0x49,0x63,0x51,0x4E,0x1F,0x11,"IID_IActiveScriptStringCompare"); - IF_GUID_EQUAL_RETURN(guid,0xC35456E7,0xBEBF,0x4a1b,0x86,0xA9,0x24,0xD5,0x6B,0xE8,0xB3,0x69,"IID_IActiveScriptTraceInfo"); - IF_GUID_EQUAL_RETURN(guid,0x0feb7e34,0x5a60,0x4356,0x8e,0xf7,0xab,0xde,0xc2,0xff,0x7c,0xf8,"IID_IAnchor"); - IF_GUID_EQUAL_RETURN(guid,0x178e5337,0x1528,0x4591,0xb1,0xc9,0x1c,0x6e,0x48,0x46,0x86,0xd8,"IID_IApartmentCallback"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA866,0x11cf,0x83,0xAE,0x10,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_IApplicationObject"); - IF_GUID_EQUAL_RETURN(guid,0xE707DCDE,0xD1CD,0x11D2,0xBA,0xB9,0x00,0xC0,0x4F,0x8E,0xCE,0xAE,"IID_IAssemblyCache"); - IF_GUID_EQUAL_RETURN(guid,0x9e3aaeb4,0xd1cd,0x11d2,0xba,0xb9,0x00,0xc0,0x4f,0x8e,0xce,0xae,"IID_IAssemblyCacheItem"); - IF_GUID_EQUAL_RETURN(guid,0x21B8916C,0xF28E,0x11D2,0xA4,0x73,0x00,0xC0,0x4F,0x8E,0xF4,0x48,"IID_IAssemblyEnum"); - IF_GUID_EQUAL_RETURN(guid,0xCD193BC0,0xB4BC,0x11d2,0x98,0x33,0x00,0xC0,0x4F,0xC3,0x1D,0x2E,"IID_IAssemblyName"); - IF_GUID_EQUAL_RETURN(guid,0xf5f2893a,0xba9e,0x11d0,0xab,0xb9,0x0,0xc0,0x4f,0xc2,0x9f,0x8f,"IID_IAsyncAllowed"); - IF_GUID_EQUAL_RETURN(guid,0x4A2f5C31,0xCFD9,0x410E,0xB7,0xFB,0x29,0xA6,0x53,0x97,0x3A,0xF,"IID_IAutomaticUpdates2"); - IF_GUID_EQUAL_RETURN(guid,0x673425bf,0xc082,0x4c7c,0xbd,0xfd,0x56,0x94,0x64,0xb8,0xe0,0xce,"IID_IAutomaticUpdates"); - IF_GUID_EQUAL_RETURN(guid,0xe7a4d634,0x7942,0x4DD9,0xA1,0x11,0x82,0x22,0x8b,0xa3,0x39,0x1,"IID_IAutomaticUpdatesResults"); - IF_GUID_EQUAL_RETURN(guid,0x6abc136a,0xc3ca,0x4384,0x81,0x71,0xcb,0x2b,0x1e,0x59,0xb8,0xdc,"IID_IAutomaticUpdatesSettings2"); - IF_GUID_EQUAL_RETURN(guid,0xb587f5c3,0xf57e,0x485f,0xbb,0xf5,0x0d,0x18,0x1c,0x5c,0xd0,0xdc,"IID_IAutomaticUpdatesSettings3"); - IF_GUID_EQUAL_RETURN(guid,0x2ee48f22,0xaf3c,0x405f,0x89,0x70,0xf7,0x1b,0xe1,0x2e,0xe9,0xa2,"IID_IAutomaticUpdatesSettings"); - IF_GUID_EQUAL_RETURN(guid,0x181c845e,0x7196,0x4a7d,0xac,0x2e,0x02,0x0c,0x0b,0xb7,0xa3,0x03,"IID_IAzApplication3"); - IF_GUID_EQUAL_RETURN(guid,0xb11e5584,0xd577,0x4273,0xb6,0xc5,0x9,0x73,0xe0,0xf8,0xe8,0xd,"IID_IAzAuthorizationStore2"); - IF_GUID_EQUAL_RETURN(guid,0xabc08425,0x0c86,0x4fa0,0x9b,0xe3,0x71,0x89,0x95,0x6c,0x92,0x6e,"IID_IAzAuthorizationStore3"); - IF_GUID_EQUAL_RETURN(guid,0xedbd9ca9,0x9b82,0x4f6a,0x9e,0x8b,0x98,0x30,0x1e,0x45,0x0f,0x14,"IID_IAzAuthorizationStore"); - IF_GUID_EQUAL_RETURN(guid,0xe192f17d,0xd59f,0x455e,0xa1,0x52,0x94,0x03,0x16,0xcd,0x77,0xb2,"IID_IAzBizRuleContext"); - IF_GUID_EQUAL_RETURN(guid,0x504d0f15,0x73e2,0x43df,0xa8,0x70,0xa6,0x4f,0x40,0x71,0x4f,0x53,"IID_IAzNameResolver"); - IF_GUID_EQUAL_RETURN(guid,0x63130a48,0x699a,0x42d8,0xbf,0x01,0xc6,0x2a,0xc3,0xfb,0x79,0xf9,"IID_IAzObjectPicker"); - IF_GUID_EQUAL_RETURN(guid,0xe5c3507d,0xad6a,0x4992,0x9c,0x7f,0x74,0xab,0x48,0x0b,0x44,0xcc,"IID_IAzPrincipalLocator"); - IF_GUID_EQUAL_RETURN(guid,0x596a9a94,0x13e,0x11d1,0x8d,0x34,0x0,0xa0,0xc9,0xf,0x27,0x19,"IID_IBanneredBar"); - IF_GUID_EQUAL_RETURN(guid,0x61ded640,0xe912,0x11ce,0xa0,0x99,0x00,0xaa,0x00,0x47,0x9a,0x58,"IID_IBaseVideoMixer"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b3,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IBasicAudio"); - IF_GUID_EQUAL_RETURN(guid,0x329bb360,0xf6ea,0x11d1,0x90,0x38,0x00,0xa0,0xc9,0x69,0x72,0x98,"IID_IBasicVideo2"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b5,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IBasicVideo"); - IF_GUID_EQUAL_RETURN(guid,0x63cdbcb0,0xc1b1,0x11d0,0x93,0x36,0x00,0xa0,0xc9,0x0d,0xca,0xa9,"IID_IBindEventHandler"); - IF_GUID_EQUAL_RETURN(guid,0x1e00486a,0x78dd,0x11d2,0x8d,0xd3,0x0,0x60,0x97,0xc9,0xa2,0xb2,"IID_IBufferingTime"); - IF_GUID_EQUAL_RETURN(guid,0XC62DE18C,0X2E23,0X4AEA,0X84,0X23,0XB4,0X0C,0X1F,0XC5,0X9E,0XAE,"IID_ICLRAppDomainResourceMonitor"); - IF_GUID_EQUAL_RETURN(guid,0x15f0a9da,0x3ff6,0x4393,0x9d,0xa9,0xfd,0xfd,0x28,0x4e,0x69,0x72,"IID_ICLRAssemblyIdentityManager"); - IF_GUID_EQUAL_RETURN(guid,0x1b2c9750,0x2e66,0x4bda,0x8b,0x44,0x0a,0x64,0x2c,0x5c,0xd7,0x33,"IID_ICLRAssemblyReferenceList"); - IF_GUID_EQUAL_RETURN(guid,0x9065597E,0xD1A1,0x4fb2,0xB6,0xBA,0x7E,0x1F,0xCE,0x23,0x0F,0x61,"IID_ICLRControl"); - IF_GUID_EQUAL_RETURN(guid,0xdcaec6,0x2ac0,0x43a9,0xac,0xf9,0x1e,0x36,0xc1,0x39,0xb1,0xd,"IID_ICLRDebugManager"); - IF_GUID_EQUAL_RETURN(guid,0xd28f3c5a,0x9634,0x4206,0xa5,0x9,0x47,0x75,0x52,0xee,0xfb,0x10,"IID_ICLRDebugging"); - IF_GUID_EQUAL_RETURN(guid,0x3151c08d,0x4d09,0x4f9b,0x88,0x38,0x28,0x80,0xbf,0x18,0xfe,0x51,"IID_ICLRDebuggingLibraryProvider"); - IF_GUID_EQUAL_RETURN(guid,0x270d00a2,0x8e15,0x4d0b,0xad,0xeb,0x37,0xbc,0x3e,0x47,0xdf,0x77,"IID_ICLRDomainManager"); - IF_GUID_EQUAL_RETURN(guid,0x980d2f1a,0xbf79,0x4c08,0x81,0x2a,0xbb,0x97,0x78,0x92,0x8f,0x78,"IID_ICLRErrorReportingManager"); - IF_GUID_EQUAL_RETURN(guid,0x0603B793,0xA97A,0x4712,0x9C,0xB4,0x0C,0xD1,0xC7,0x4C,0x0F,0x7C,"IID_ICLRGCManager2"); - IF_GUID_EQUAL_RETURN(guid,0x54D9007E,0xA8E2,0x4885,0xB7,0xBF,0xF9,0x98,0xDE,0xEE,0x4F,0x2A,"IID_ICLRGCManager"); - IF_GUID_EQUAL_RETURN(guid,0x4b3545e7,0x1856,0x48c9,0xa8,0xba,0x24,0xb2,0x1a,0x75,0x3c,0x09,"IID_ICLRHostBindingPolicyManager"); - IF_GUID_EQUAL_RETURN(guid,0x89f25f5c,0xceef,0x43e1,0x9c,0xfa,0xa6,0x8c,0xe8,0x63,0xaa,0xac,"IID_ICLRHostProtectionManager"); - IF_GUID_EQUAL_RETURN(guid,0x2D74CE86,0xB8D6,0x4C84,0xB3,0xA7,0x97,0x68,0x93,0x3B,0x3C,0x12,"IID_ICLRIoCompletionManager"); - IF_GUID_EQUAL_RETURN(guid,0x47EB8E57,0x0846,0x4546,0xAF,0x76,0x6F,0x42,0xFC,0xFC,0x26,0x49,"IID_ICLRMemoryNotificationCallback"); - IF_GUID_EQUAL_RETURN(guid,0xD332DB9E,0xB9B3,0x4125,0x82,0x07,0xA1,0x48,0x84,0xF5,0x32,0x16,"IID_ICLRMetaHost"); - IF_GUID_EQUAL_RETURN(guid,0xE2190695,0x77B2,0x492e,0x8E,0x14,0xC4,0xB3,0xA7,0xFD,0xD5,0x93,"IID_ICLRMetaHostPolicy"); - IF_GUID_EQUAL_RETURN(guid,0x1D0E0132,0xE64F,0x493D,0x92,0x60,0x02,0x5C,0x0E,0x32,0xC1,0x75,"IID_ICLROnEventManager"); - IF_GUID_EQUAL_RETURN(guid,0x7D290010,0xD781,0x45da,0xA6,0xF8,0xAA,0x5D,0x71,0x1A,0x73,0x0E,"IID_ICLRPolicyManager"); - IF_GUID_EQUAL_RETURN(guid,0xd0c5fb1f,0x416b,0x4f97,0x81,0xf4,0x7a,0xc7,0xdc,0x24,0xdd,0x5d,"IID_ICLRProbingAssemblyEnum"); - IF_GUID_EQUAL_RETURN(guid,0xb349abe3,0xb56f,0x4689,0xbf,0xcd,0x76,0xbf,0x39,0xd8,0x88,0xea,"IID_ICLRProfiling"); - IF_GUID_EQUAL_RETURN(guid,0xd509cb5d,0xcf32,0x4876,0xae,0x61,0x67,0x77,0x0c,0xf9,0x19,0x73,"IID_ICLRReferenceAssemblyEnum"); - IF_GUID_EQUAL_RETURN(guid,0x90F1A06C,0x7712,0x4762,0x86,0xB5,0x7A,0x5E,0xBA,0x6B,0xDB,0x02,"IID_ICLRRuntimeHost"); - IF_GUID_EQUAL_RETURN(guid,0xBD39D1D2,0xBA2F,0x486a,0x89,0xB0,0xB4,0xB0,0xCB,0x46,0x68,0x91,"IID_ICLRRuntimeInfo"); - IF_GUID_EQUAL_RETURN(guid,0xC22ED5C5,0x4B59,0x4975,0x90,0xEB,0x85,0xEA,0x55,0xC0,0x06,0x9B,"IID_ICLRStrongName2"); - IF_GUID_EQUAL_RETURN(guid,0x9FD93CCF,0x3280,0x4391,0xB3,0xA9,0x96,0xE1,0xCD,0xE7,0x7C,0x8D,"IID_ICLRStrongName"); - IF_GUID_EQUAL_RETURN(guid,0x55FF199D,0xAD21,0x48f9,0xa1,0x6c,0xf2,0x4e,0xbb,0xb8,0x72,0x7d,"IID_ICLRSyncManager"); - IF_GUID_EQUAL_RETURN(guid,0x28E66A4A,0x9906,0x4225,0xB2,0x31,0x91,0x87,0xc3,0xeb,0x86,0x12,"IID_ICLRTask2"); - IF_GUID_EQUAL_RETURN(guid,0x28E66A4A,0x9906,0x4225,0xB2,0x31,0x91,0x87,0xc3,0xeb,0x86,0x11,"IID_ICLRTask"); - IF_GUID_EQUAL_RETURN(guid,0x4862efbe,0x3ae5,0x44f8,0x8F,0xEB,0x34,0x61,0x90,0xeE,0x8A,0x34,"IID_ICLRTaskManager"); - IF_GUID_EQUAL_RETURN(guid,0xc5598e60,0xb307,0x11d1,0xb2,0x7d,0x0,0x60,0x08,0xc3,0xfb,0xfb,"IID_ICanHandleException"); - IF_GUID_EQUAL_RETURN(guid,0x04c6be1e,0x1db1,0x4058,0xab,0x7a,0x70,0x0c,0xcc,0xfb,0xf2,0x54,"IID_ICatalogServices"); - IF_GUID_EQUAL_RETURN(guid,0x81ddc1b8,0x9d35,0x47a6,0xb4,0x71,0x5b,0x80,0xf5,0x19,0x22,0x3b,"IID_ICategory"); - IF_GUID_EQUAL_RETURN(guid,0x3a56bfb8,0x576c,0x43f7,0x93,0x35,0xfe,0x48,0x38,0xfd,0x7e,0x37,"IID_ICategoryCollection"); - IF_GUID_EQUAL_RETURN(guid,0x7ed1bdff,0x8e36,0x11d2,0x9c,0x56,0x0,0xa0,0xc9,0xb7,0xcc,0x45,"IID_ICeeGen"); - IF_GUID_EQUAL_RETURN(guid,0xB33E75FF,0xE84C,0x4dca,0xA2,0x5C,0x33,0xB8,0xDC,0x00,0x33,0x74,"IID_IClonableWrapper"); - IF_GUID_EQUAL_RETURN(guid,0x03DE00AA,0xF272,0x41e3,0x99,0xCB,0x03,0xC5,0xE8,0x11,0x4E,0xA0,"IID_ICoCreateLocally"); - IF_GUID_EQUAL_RETURN(guid,0x0A53EB6C,0x1908,0x4742,0x8C,0xFF,0x2C,0xEE,0x2E,0x93,0xF9,0x4C,"IID_ICoCreatedLocally"); - IF_GUID_EQUAL_RETURN(guid,0xe8025004,0x1c42,0x11d2,0xbe,0x2c,0x0,0xa0,0xc9,0xa8,0x3d,0xa1,"IID_IColumnProvider"); - IF_GUID_EQUAL_RETURN(guid,0x7989ccaa,0x53f0,0x44f0,0x88,0x4a,0xf3,0xb0,0x3f,0x6a,0xe0,0x66,"IID_IConfigAsfWriter2"); - IF_GUID_EQUAL_RETURN(guid,0x45086030,0xF7E4,0x486a,0xB5,0x04,0x82,0x6B,0xB5,0x79,0x2A,0x3B,"IID_IConfigAsfWriter"); - IF_GUID_EQUAL_RETURN(guid,0x5c2b07a5,0x1e98,0x11d3,0x87,0x2f,0x00,0xc0,0x4f,0x79,0xed,0x0d,"IID_ICorConfiguration"); - IF_GUID_EQUAL_RETURN(guid,0xcb2f6722,0xab3a,0x11d2,0x9c,0x40,0x00,0xc0,0x4f,0xa3,0x0a,0x3e,"IID_ICorRuntimeHost"); - IF_GUID_EQUAL_RETURN(guid,0x84680D3A,0xB2C1,0x46e8,0xAC,0xC2,0xDB,0xC0,0xA3,0x59,0x15,0x9A,"IID_ICorThreadpool"); - IF_GUID_EQUAL_RETURN(guid,0xeefcd4e1,0xea1c,0x4435,0xb7,0xf4,0xe3,0x41,0xba,0x03,0xb4,0xf9,"IID_ICounterItem2"); - IF_GUID_EQUAL_RETURN(guid,0x771A9520,0xEE28,0x11ce,0x94,0x1E,0x00,0x80,0x29,0x00,0x43,0x47,"IID_ICounterItem"); - IF_GUID_EQUAL_RETURN(guid,0x79167962,0x28FC,0x11cf,0x94,0x2F,0x00,0x80,0x29,0x00,0x43,0x47,"IID_ICounters"); - IF_GUID_EQUAL_RETURN(guid,0x91956d21L,0x9276,0x11d1,0x92,0x1a,0x00,0x60,0x97,0xdf,0x5b,0xd4,"IID_ICurrentWorkingDirectory"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C0D,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Asynchronous"); - IF_GUID_EQUAL_RETURN(guid,0xEDAD8D99,0x8A35,0x4d6d,0x85,0x66,0x2E,0xA2,0x76,0xCD,0xE1,0x61,"IID_ID3D10BlendState1"); - IF_GUID_EQUAL_RETURN(guid,0xEDAD8D19,0x8A35,0x4d6d,0x85,0x66,0x2E,0xA2,0x76,0xCD,0xE1,0x61,"IID_ID3D10BlendState"); - IF_GUID_EQUAL_RETURN(guid,0x8ba5fb08,0x5195,0x40e2,0xac,0x58,0xd,0x98,0x9c,0x3a,0x1,0x2,"IID_ID3D10Blob"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C02,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Buffer"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C11,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Counter"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4E01,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Debug"); - IF_GUID_EQUAL_RETURN(guid,0x2B4B1CC8,0xA4AD,0x41f8,0x83,0x22,0xCA,0x86,0xFC,0x3E,0xC6,0x75,"IID_ID3D10DepthStencilState"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C09,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10DepthStencilView"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C8F,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Device1"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C0F,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Device"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C00,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10DeviceChild"); - IF_GUID_EQUAL_RETURN(guid,0x51b0ca8b,0xec0b,0x4519,0x87,0xd,0x8e,0xe1,0xcb,0x50,0x17,0xc7,"IID_ID3D10Effect"); - IF_GUID_EQUAL_RETURN(guid,0x1fcd2294,0xdf6d,0x4eae,0x86,0xb3,0xe,0x91,0x60,0xcf,0xb0,0x7b,"IID_ID3D10EffectBlendVariable"); - IF_GUID_EQUAL_RETURN(guid,0x56648f4d,0xcc8b,0x4444,0xa5,0xad,0xb5,0xa3,0xd7,0x6e,0x91,0xb3,"IID_ID3D10EffectConstantBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xaf482368,0x330a,0x46a5,0x9a,0x5c,0x1,0xc7,0x1a,0xf2,0x4c,0x8d,"IID_ID3D10EffectDepthStencilVariable"); - IF_GUID_EQUAL_RETURN(guid,0x3e02c918,0xcc79,0x4985,0xb6,0x22,0x2d,0x92,0xad,0x70,0x16,0x23,"IID_ID3D10EffectDepthStencilViewVariable"); - IF_GUID_EQUAL_RETURN(guid,0x50666c24,0xb82f,0x4eed,0xa1,0x72,0x5b,0x6e,0x7e,0x85,0x22,0xe0,"IID_ID3D10EffectMatrixVariable"); - IF_GUID_EQUAL_RETURN(guid,0x5cfbeb89,0x1a06,0x46e0,0xb2,0x82,0xe3,0xf9,0xbf,0xa3,0x6a,0x54,"IID_ID3D10EffectPass"); - IF_GUID_EQUAL_RETURN(guid,0x9537ab04,0x3250,0x412e,0x82,0x13,0xfc,0xd2,0xf8,0x67,0x79,0x33,"IID_ID3D10EffectPool"); - IF_GUID_EQUAL_RETURN(guid,0x21af9f0e,0x4d94,0x4ea9,0x97,0x85,0x2c,0xb7,0x6b,0x8c,0xb,0x34,"IID_ID3D10EffectRasterizerVariable"); - IF_GUID_EQUAL_RETURN(guid,0x28ca0cc3,0xc2c9,0x40bb,0xb5,0x7f,0x67,0xb7,0x37,0x12,0x2b,0x17,"IID_ID3D10EffectRenderTargetViewVariable"); - IF_GUID_EQUAL_RETURN(guid,0x6530d5c7,0x7e9,0x4271,0xa4,0x18,0xe7,0xce,0x4b,0xd1,0xe4,0x80,"IID_ID3D10EffectSamplerVariable"); - IF_GUID_EQUAL_RETURN(guid,0xe48f7b,0xd2c8,0x49e8,0xa8,0x6c,0x2,0x2d,0xee,0x53,0x43,0x1f,"IID_ID3D10EffectScalarVariable"); - IF_GUID_EQUAL_RETURN(guid,0xc0a7157b,0xd872,0x4b1d,0x80,0x73,0xef,0xc2,0xac,0xd4,0xb1,0xfc,"IID_ID3D10EffectShaderResourceVariable"); - IF_GUID_EQUAL_RETURN(guid,0x80849279,0xc799,0x4797,0x8c,0x33,0x4,0x7,0xa0,0x7d,0x9e,0x6,"IID_ID3D10EffectShaderVariable"); - IF_GUID_EQUAL_RETURN(guid,0x71417501,0x8df9,0x4e0a,0xa7,0x8a,0x25,0x5f,0x97,0x56,0xba,0xff,"IID_ID3D10EffectStringVariable"); - IF_GUID_EQUAL_RETURN(guid,0xdb122ce8,0xd1c9,0x4292,0xb2,0x37,0x24,0xed,0x3d,0xe8,0xb1,0x75,"IID_ID3D10EffectTechnique"); - IF_GUID_EQUAL_RETURN(guid,0x4e9e1ddc,0xcd9d,0x4772,0xa8,0x37,0x0,0x18,0xb,0x9b,0x88,0xfd,"IID_ID3D10EffectType"); - IF_GUID_EQUAL_RETURN(guid,0xae897105,0xe6,0x45bf,0xbb,0x8e,0x28,0x1d,0xd6,0xdb,0x8e,0x1b,"IID_ID3D10EffectVariable"); - IF_GUID_EQUAL_RETURN(guid,0x62b98c44,0x1f82,0x4c67,0xbc,0xd0,0x72,0xcf,0x8f,0x21,0x7e,0x81,"IID_ID3D10EffectVectorVariable"); - IF_GUID_EQUAL_RETURN(guid,0x6316BE88,0x54CD,0x4040,0xAB,0x44,0x20,0x46,0x1B,0xC8,0x1F,0x68,"IID_ID3D10GeometryShader"); - IF_GUID_EQUAL_RETURN(guid,0x1b940b17,0x2642,0x4d1f,0xab,0x1f,0xb9,0x9b,0xad,0x0c,0x39,0x5f,"IID_ID3D10InfoQueue"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C0B,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10InputLayout"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4E00,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Multithread"); - IF_GUID_EQUAL_RETURN(guid,0x4968B601,0x9D00,0x4cde,0x83,0x46,0x8E,0x7F,0x67,0x58,0x19,0xB6,"IID_ID3D10PixelShader"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C10,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Predicate"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C0E,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Query"); - IF_GUID_EQUAL_RETURN(guid,0xA2A07292,0x89AF,0x4345,0xBE,0x2E,0xC5,0x3D,0x9F,0xBB,0x6E,0x9F,"IID_ID3D10RasterizerState"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C08,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10RenderTargetView"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C01,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Resource"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C0C,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10SamplerState"); - IF_GUID_EQUAL_RETURN(guid,0xc3457783,0xa846,0x47ce,0x95,0x20,0xce,0xa6,0xf6,0x6e,0x74,0x47,"IID_ID3D10ShaderReflection1"); - IF_GUID_EQUAL_RETURN(guid,0xd40e20b6,0xf8f7,0x42ad,0xab,0x20,0x4b,0xaf,0x8f,0x15,0xdf,0xaa,"IID_ID3D10ShaderReflection"); - IF_GUID_EQUAL_RETURN(guid,0x66c66a94,0xdddd,0x4b62,0xa6,0x6a,0xf0,0xda,0x33,0xc2,0xb4,0xd0,"IID_ID3D10ShaderReflectionConstantBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xc530ad7d,0x9b16,0x4395,0xa9,0x79,0xba,0x2e,0xcf,0xf8,0x3a,0xdd,"IID_ID3D10ShaderReflectionType"); - IF_GUID_EQUAL_RETURN(guid,0x1bf63c95,0x2650,0x405d,0x99,0xc1,0x36,0x36,0xbd,0x1d,0xa0,0xa1,"IID_ID3D10ShaderReflectionVariable"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C87,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10ShaderResourceView1"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C07,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10ShaderResourceView"); - IF_GUID_EQUAL_RETURN(guid,0x803425a,0x57f5,0x4dd6,0x94,0x65,0xa8,0x75,0x70,0x83,0x4a,0x8,"IID_ID3D10StateBlock"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4E02,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10SwitchToRef"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C03,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Texture1D"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C04,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Texture2D"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C05,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10Texture3D"); - IF_GUID_EQUAL_RETURN(guid,0x9B7E4C0A,0x342C,0x4106,0xA1,0x9F,0x4F,0x27,0x04,0xF6,0x89,0xF0,"IID_ID3D10VertexShader"); - IF_GUID_EQUAL_RETURN(guid,0xC902B03F,0x60A7,0x49BA,0x99,0x36,0x2A,0x3A,0xB3,0x7A,0x7E,0x33,"IID_ID3D10View"); - IF_GUID_EQUAL_RETURN(guid,0x4b35d0cd,0x1e15,0x4258,0x9c,0x98,0x1b,0x13,0x33,0xf6,0xdd,0x3b,"IID_ID3D11Asynchronous"); - IF_GUID_EQUAL_RETURN(guid,0x3015A308,0xDCBD,0x47aa,0xA7,0x47,0x19,0x24,0x86,0xD1,0x4D,0x4A,"IID_ID3D11AuthenticatedChannel"); - IF_GUID_EQUAL_RETURN(guid,0xcc86fabe,0xda55,0x401d,0x85,0xe7,0xe3,0xc9,0xde,0x28,0x77,0xe9,"IID_ID3D11BlendState1"); - IF_GUID_EQUAL_RETURN(guid,0x75b68faa,0x347d,0x4159,0x8f,0x45,0xa0,0x64,0x0f,0x01,0xcd,0x9a,"IID_ID3D11BlendState"); - IF_GUID_EQUAL_RETURN(guid,0x48570b85,0xd1ee,0x4fcd,0xa2,0x50,0xeb,0x35,0x07,0x22,0xb0,0x37,"IID_ID3D11Buffer"); - IF_GUID_EQUAL_RETURN(guid,0xa6cd7faa,0xb0b7,0x4a2f,0x94,0x36,0x86,0x62,0xa6,0x57,0x97,0xcb,"IID_ID3D11ClassInstance"); - IF_GUID_EQUAL_RETURN(guid,0xddf57cba,0x9543,0x46e4,0xa1,0x2b,0xf2,0x07,0xa0,0xfe,0x7f,0xed,"IID_ID3D11ClassLinkage"); - IF_GUID_EQUAL_RETURN(guid,0xa24bc4d1,0x769e,0x43f7,0x80,0x13,0x98,0xff,0x56,0x6c,0x18,0xe2,"IID_ID3D11CommandList"); - IF_GUID_EQUAL_RETURN(guid,0x4f5b196e,0xc2bd,0x495e,0xbd,0x01,0x1f,0xde,0xd3,0x8e,0x49,0x69,"IID_ID3D11ComputeShader"); - IF_GUID_EQUAL_RETURN(guid,0x6e8c49fb,0xa371,0x4770,0xb4,0x40,0x29,0x08,0x60,0x22,0xb7,0x41,"IID_ID3D11Counter"); - IF_GUID_EQUAL_RETURN(guid,0x9B32F9AD,0xBDCC,0x40a6,0xA3,0x9D,0xD5,0xC8,0x65,0x84,0x57,0x20,"IID_ID3D11CryptoSession"); - IF_GUID_EQUAL_RETURN(guid,0x79cf2233,0x7536,0x4948,0x9d,0x36,0x1e,0x46,0x92,0xdc,0x57,0x60,"IID_ID3D11Debug"); - IF_GUID_EQUAL_RETURN(guid,0x03823efb,0x8d8f,0x4e1c,0x9a,0xa2,0xf6,0x4b,0xb2,0xcb,0xfd,0xf1,"IID_ID3D11DepthStencilState"); - IF_GUID_EQUAL_RETURN(guid,0x9fdac92a,0x1876,0x48c3,0xaf,0xad,0x25,0xb9,0x4f,0x84,0xa9,0xb6,"IID_ID3D11DepthStencilView"); - IF_GUID_EQUAL_RETURN(guid,0xa04bfb29,0x08ef,0x43d6,0xa4,0x9c,0xa9,0xbd,0xbd,0xcb,0xe6,0x86,"IID_ID3D11Device1"); - IF_GUID_EQUAL_RETURN(guid,0xdb6f6ddb,0xac77,0x4e88,0x82,0x53,0x81,0x9d,0xf9,0xbb,0xf1,0x40,"IID_ID3D11Device"); - IF_GUID_EQUAL_RETURN(guid,0x1841e5c8,0x16b0,0x489b,0xbc,0xc8,0x44,0xcf,0xb0,0xd5,0xde,0xae,"IID_ID3D11DeviceChild"); - IF_GUID_EQUAL_RETURN(guid,0xbb2c6faa,0xb5fb,0x4082,0x8e,0x6b,0x38,0x8b,0x8c,0xfa,0x90,0xe1,"IID_ID3D11DeviceContext1"); - IF_GUID_EQUAL_RETURN(guid,0xc0bfa96c,0xe089,0x44fb,0x8e,0xaf,0x26,0xf8,0x79,0x61,0x90,0xda,"IID_ID3D11DeviceContext"); - IF_GUID_EQUAL_RETURN(guid,0xf582c508,0x0f36,0x490c,0x99,0x77,0x31,0xee,0xce,0x26,0x8c,0xfa,"IID_ID3D11DomainShader"); - IF_GUID_EQUAL_RETURN(guid,0x38325b96,0xeffb,0x4022,0xba,0x02,0x2e,0x79,0x5b,0x70,0x27,0x5c,"IID_ID3D11GeometryShader"); - IF_GUID_EQUAL_RETURN(guid,0x8e5c6061,0x628a,0x4c8e,0x82,0x64,0xbb,0xe4,0x5c,0xb3,0xd5,0xdd,"IID_ID3D11HullShader"); - IF_GUID_EQUAL_RETURN(guid,0x6543dbb6,0x1b48,0x42f5,0xab,0x82,0xe9,0x7e,0xc7,0x43,0x26,0xf6,"IID_ID3D11InfoQueue"); - IF_GUID_EQUAL_RETURN(guid,0xe4819ddc,0x4cf0,0x4025,0xbd,0x26,0x5d,0xe8,0x2a,0x3e,0x07,0xb7,"IID_ID3D11InputLayout"); - IF_GUID_EQUAL_RETURN(guid,0xea82e40d,0x51dc,0x4f33,0x93,0xd4,0xdb,0x7c,0x91,0x25,0xae,0x8c,"IID_ID3D11PixelShader"); - IF_GUID_EQUAL_RETURN(guid,0x9eb576dd,0x9f77,0x4d86,0x81,0xaa,0x8b,0xab,0x5f,0xe4,0x90,0xe2,"IID_ID3D11Predicate"); - IF_GUID_EQUAL_RETURN(guid,0xd6c00747,0x87b7,0x425e,0xb8,0x4d,0x44,0xd1,0x08,0x56,0x0a,0xfd,"IID_ID3D11Query"); - IF_GUID_EQUAL_RETURN(guid,0x1217d7a6,0x5039,0x418c,0xb0,0x42,0x9c,0xbe,0x25,0x6a,0xfd,0x6e,"IID_ID3D11RasterizerState1"); - IF_GUID_EQUAL_RETURN(guid,0x9bb4ab81,0xab1a,0x4d8f,0xb5,0x06,0xfc,0x04,0x20,0x0b,0x6e,0xe7,"IID_ID3D11RasterizerState"); - IF_GUID_EQUAL_RETURN(guid,0x03916615,0xc644,0x418c,0x9b,0xf4,0x75,0xdb,0x5b,0xe6,0x3c,0xa0,"IID_ID3D11RefDefaultTrackingOptions"); - IF_GUID_EQUAL_RETURN(guid,0x193dacdf,0x0db2,0x4c05,0xa5,0x5c,0xef,0x06,0xca,0xc5,0x6f,0xd9,"IID_ID3D11RefTrackingOptions"); - IF_GUID_EQUAL_RETURN(guid,0xdfdba067,0x0b8d,0x4865,0x87,0x5b,0xd7,0xb4,0x51,0x6c,0xc1,0x64,"IID_ID3D11RenderTargetView"); - IF_GUID_EQUAL_RETURN(guid,0xdc8e63f3,0xd12b,0x4952,0xb4,0x7b,0x5e,0x45,0x02,0x6a,0x86,0x2d,"IID_ID3D11Resource"); - IF_GUID_EQUAL_RETURN(guid,0xda6fea51,0x564c,0x4487,0x98,0x10,0xf0,0xd0,0xf9,0xb4,0xe3,0xa5,"IID_ID3D11SamplerState"); - IF_GUID_EQUAL_RETURN(guid,0x8d536ca1,0x0cca,0x4956,0xa8,0x37,0x78,0x69,0x63,0x75,0x55,0x84,"IID_ID3D11ShaderReflection"); - IF_GUID_EQUAL_RETURN(guid,0xeb62d63d,0x93dd,0x4318,0x8a,0xe8,0xc6,0xf8,0x3a,0xd3,0x71,0xb8,"IID_ID3D11ShaderReflectionConstantBuffer"); - IF_GUID_EQUAL_RETURN(guid,0x6e6ffa6a,0x9bae,0x4613,0xa5,0x1e,0x91,0x65,0x2d,0x50,0x8c,0x21,"IID_ID3D11ShaderReflectionType"); - IF_GUID_EQUAL_RETURN(guid,0x51f23923,0xf3e5,0x4bd1,0x91,0xcb,0x60,0x61,0x77,0xd8,0xdb,0x4c,"IID_ID3D11ShaderReflectionVariable"); - IF_GUID_EQUAL_RETURN(guid,0xb0e06fe0,0x8192,0x4e1a,0xb1,0xca,0x36,0xd7,0x41,0x47,0x10,0xb2,"IID_ID3D11ShaderResourceView"); - IF_GUID_EQUAL_RETURN(guid,0x1ef337e3,0x58e7,0x4f83,0xa6,0x92,0xdb,0x22,0x1f,0x5e,0xd4,0x7e,"IID_ID3D11SwitchToRef"); - IF_GUID_EQUAL_RETURN(guid,0xf8fb5c27,0xc6b3,0x4f75,0xa4,0xc8,0x43,0x9a,0xf2,0xef,0x56,0x4c,"IID_ID3D11Texture1D"); - IF_GUID_EQUAL_RETURN(guid,0x6f15aaf2,0xd208,0x4e89,0x9a,0xb4,0x48,0x95,0x35,0xd3,0x4f,0x9c,"IID_ID3D11Texture2D"); - IF_GUID_EQUAL_RETURN(guid,0x037e866e,0xf56d,0x4357,0xa8,0xaf,0x9d,0xab,0xbe,0x6e,0x25,0x0e,"IID_ID3D11Texture3D"); - IF_GUID_EQUAL_RETURN(guid,0x1911c771,0x1587,0x413e,0xa7,0xe0,0xfb,0x26,0xc3,0xde,0x02,0x68,"IID_ID3D11TracingDevice"); - IF_GUID_EQUAL_RETURN(guid,0x28acf509,0x7f5c,0x48f6,0x86,0x11,0xf3,0x16,0x01,0x0a,0x63,0x80,"IID_ID3D11UnorderedAccessView"); - IF_GUID_EQUAL_RETURN(guid,0x3b301d64,0xd678,0x4289,0x88,0x97,0x22,0xf8,0x92,0x8b,0x72,0xf3,"IID_ID3D11VertexShader"); - IF_GUID_EQUAL_RETURN(guid,0x61F21C45,0x3C0E,0x4a74,0x9C,0xEA,0x67,0x10,0x0D,0x9A,0xD5,0xE4,"IID_ID3D11VideoContext"); - IF_GUID_EQUAL_RETURN(guid,0x3C9C5B51,0x995D,0x48d1,0x9B,0x8D,0xFA,0x5C,0xAE,0xDE,0xD6,0x5C,"IID_ID3D11VideoDecoder"); - IF_GUID_EQUAL_RETURN(guid,0xC2931AEA,0x2A85,0x4f20,0x86,0x0F,0xFB,0xA1,0xFD,0x25,0x6E,0x18,"IID_ID3D11VideoDecoderOutputView"); - IF_GUID_EQUAL_RETURN(guid,0x10EC4D5B,0x975A,0x4689,0xB9,0xE4,0xD0,0xAA,0xC3,0x0F,0xE3,0x33,"IID_ID3D11VideoDevice"); - IF_GUID_EQUAL_RETURN(guid,0x1D7B0652,0x185F,0x41c6,0x85,0xCE,0x0C,0x5B,0xE3,0xD4,0xAE,0x6C,"IID_ID3D11VideoProcessor"); - IF_GUID_EQUAL_RETURN(guid,0x31627037,0x53AB,0x4200,0x90,0x61,0x05,0xFA,0xA9,0xAB,0x45,0xF9,"IID_ID3D11VideoProcessorEnumerator"); - IF_GUID_EQUAL_RETURN(guid,0x11EC5A5F,0x51DC,0x4945,0xAB,0x34,0x6E,0x8C,0x21,0x30,0x0E,0xA5,"IID_ID3D11VideoProcessorInputView"); - IF_GUID_EQUAL_RETURN(guid,0xA048285E,0x25A9,0x4527,0xBD,0x93,0xD6,0x8B,0x68,0xC4,0x42,0x54,"IID_ID3D11VideoProcessorOutputView"); - IF_GUID_EQUAL_RETURN(guid,0x839d1216,0xbb2e,0x412b,0xb7,0xf4,0xa9,0xdb,0xeb,0xe0,0x8e,0xd1,"IID_ID3D11View"); - IF_GUID_EQUAL_RETURN(guid,0x5c1e0d8a,0x7c23,0x48f9,0x8c,0x59,0xa9,0x29,0x58,0xce,0xff,0x11,"IID_ID3DDeviceContextState"); - IF_GUID_EQUAL_RETURN(guid,0xb2daad8b,0x03d4,0x4dbf,0x95,0xeb,0x32,0xab,0x4b,0x63,0xd0,0xab,"IID_ID3DUserDefinedAnnotation"); - IF_GUID_EQUAL_RETURN(guid,0xb3f7a938,0x4c93,0x4310,0xa6,0x75,0xb3,0x0d,0x6d,0xe5,0x05,0x53,"IID_ID3DX11FFT"); - IF_GUID_EQUAL_RETURN(guid,0x5089b68f,0xe71d,0x4d38,0xbe,0x8e,0xf3,0x63,0xb9,0x5a,0x94,0x05,"IID_ID3DX11Scan"); - IF_GUID_EQUAL_RETURN(guid,0xa915128c,0xd954,0x4c79,0xbf,0xe1,0x64,0xdb,0x92,0x31,0x94,0xd6,"IID_ID3DX11SegmentedScan"); - IF_GUID_EQUAL_RETURN(guid,0x0c733a9cL,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d,"IID_IDCInfo"); - IF_GUID_EQUAL_RETURN(guid,0x6C142760,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDDVideoPortContainer"); - IF_GUID_EQUAL_RETURN(guid,0x29038f61,0x3839,0x4626,0x91,0xfd,0x08,0x68,0x79,0x01,0x1a,0x05,"IID_IDXGIAdapter1"); - IF_GUID_EQUAL_RETURN(guid,0x0AA1AE0A,0xFA0E,0x4B84,0x86,0x44,0xE0,0x5F,0xF8,0xE5,0xAC,0xB5,"IID_IDXGIAdapter2"); - IF_GUID_EQUAL_RETURN(guid,0x2411e7e1,0x12ac,0x4ccf,0xbd,0x14,0x97,0x98,0xe8,0x53,0x4d,0xc0,"IID_IDXGIAdapter"); - IF_GUID_EQUAL_RETURN(guid,0x119E7452,0xDE9E,0x40fe,0x88,0x06,0x88,0xF9,0x0C,0x12,0xB4,0x41,"IID_IDXGIDebug"); - IF_GUID_EQUAL_RETURN(guid,0x77db970f,0x6276,0x48ba,0xba,0x28,0x07,0x01,0x43,0xb4,0x39,0x2c,"IID_IDXGIDevice1"); - IF_GUID_EQUAL_RETURN(guid,0x05008617,0xfbfd,0x4051,0xa7,0x90,0x14,0x48,0x84,0xb4,0xf6,0xa9,"IID_IDXGIDevice2"); - IF_GUID_EQUAL_RETURN(guid,0x54ec77fa,0x1377,0x44e6,0x8c,0x32,0x88,0xfd,0x5f,0x44,0xc8,0x4c,"IID_IDXGIDevice"); - IF_GUID_EQUAL_RETURN(guid,0x3d3e0379,0xf9de,0x4d58,0xbb,0x6c,0x18,0xd6,0x29,0x92,0xf1,0xa6,"IID_IDXGIDeviceSubObject"); - IF_GUID_EQUAL_RETURN(guid,0xea9dbf1a,0xc88e,0x4486,0x85,0x4a,0x98,0xaa,0x01,0x38,0xf3,0x0c,"IID_IDXGIDisplayControl"); - IF_GUID_EQUAL_RETURN(guid,0x770aae78,0xf26f,0x4dba,0xa8,0x29,0x25,0x3c,0x83,0xd1,0xb3,0x87,"IID_IDXGIFactory1"); - IF_GUID_EQUAL_RETURN(guid,0x50c83a1c,0xe072,0x4c48,0x87,0xb0,0x36,0x30,0xfa,0x36,0xa6,0xd0,"IID_IDXGIFactory2"); - IF_GUID_EQUAL_RETURN(guid,0x7b7166ec,0x21c7,0x44ae,0xb2,0x1a,0xc9,0xae,0x32,0x1a,0xe3,0x69,"IID_IDXGIFactory"); - IF_GUID_EQUAL_RETURN(guid,0xD67441C7,0x672A,0x476f,0x9E,0x82,0xCD,0x55,0xB4,0x49,0x49,0xCE,"IID_IDXGIInfoQueue"); - IF_GUID_EQUAL_RETURN(guid,0x9d8e1289,0xd7b3,0x465f,0x81,0x26,0x25,0x0e,0x34,0x9a,0xf8,0x5d,"IID_IDXGIKeyedMutex"); - IF_GUID_EQUAL_RETURN(guid,0xaec22fb8,0x76f3,0x4639,0x9b,0xe0,0x28,0xeb,0x43,0xa6,0x7a,0x2e,"IID_IDXGIObject"); - IF_GUID_EQUAL_RETURN(guid,0x00cddea8,0x939b,0x4b83,0xa3,0x40,0xa6,0x85,0x22,0x66,0x66,0xcc,"IID_IDXGIOutput1"); - IF_GUID_EQUAL_RETURN(guid,0xae02eedb,0xc735,0x4690,0x8d,0x52,0x5a,0x8d,0xc2,0x02,0x13,0xaa,"IID_IDXGIOutput"); - IF_GUID_EQUAL_RETURN(guid,0x191cfac3,0xa341,0x470d,0xb2,0x6e,0xa8,0x64,0xf4,0x28,0x31,0x9c,"IID_IDXGIOutputDuplication"); - IF_GUID_EQUAL_RETURN(guid,0x30961379,0x4609,0x4a41,0x99,0x8e,0x54,0xfe,0x56,0x7e,0xe0,0xc1,"IID_IDXGIResource1"); - IF_GUID_EQUAL_RETURN(guid,0x035f3ab4,0x482e,0x4e50,0xb4,0x1f,0x8a,0x7f,0x8b,0xd8,0x96,0x0b,"IID_IDXGIResource"); - IF_GUID_EQUAL_RETURN(guid,0x4AE63092,0x6327,0x4c1b,0x80,0xAE,0xBF,0xE1,0x2E,0xA3,0x2B,0x86,"IID_IDXGISurface1"); - IF_GUID_EQUAL_RETURN(guid,0xaba496dd,0xb617,0x4cb8,0xa8,0x66,0xbc,0x44,0xd7,0xeb,0x1f,0xa2,"IID_IDXGISurface2"); - IF_GUID_EQUAL_RETURN(guid,0xcafcb56c,0x6ac3,0x4889,0xbf,0x47,0x9e,0x23,0xbb,0xd2,0x60,0xec,"IID_IDXGISurface"); - IF_GUID_EQUAL_RETURN(guid,0x790a45f7,0x0d42,0x4876,0x98,0x3a,0x0a,0x55,0xcf,0xe6,0xf4,0xaa,"IID_IDXGISwapChain1"); - IF_GUID_EQUAL_RETURN(guid,0x310d36a0,0xd2e7,0x4c0a,0xaa,0x04,0x6a,0x9d,0x23,0xb8,0x88,0x6a,"IID_IDXGISwapChain"); - IF_GUID_EQUAL_RETURN(guid,0x95f12dfd,0xd77e,0x49be,0x81,0x5f,0x57,0xd5,0x79,0x63,0x4d,0x6d,"IID_IDXVAHD_Device"); - IF_GUID_EQUAL_RETURN(guid,0x95f4edf4,0x6e03,0x4cd7,0xbe,0x1b,0x30,0x75,0xd6,0x65,0xaa,0x52,"IID_IDXVAHD_VideoProcessor"); - IF_GUID_EQUAL_RETURN(guid,0x0c733a8dL,0x2a1c,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d,"IID_IDataConvert"); - IF_GUID_EQUAL_RETURN(guid,0x716d14c9,0x119b,0x4ba5,0xaf,0x1f,0x08,0x90,0xe6,0x72,0x41,0x6a,"IID_IDebugAdvanced2"); - IF_GUID_EQUAL_RETURN(guid,0xcba4abb4,0x84c4,0x444d,0x87,0xca,0xa0,0x4e,0x13,0x28,0x67,0x39,"IID_IDebugAdvanced3"); - IF_GUID_EQUAL_RETURN(guid,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89,"IID_IDebugAdvanced"); - IF_GUID_EQUAL_RETURN(guid,0x1b278d20,0x79f2,0x426e,0xa3,0xf9,0xc1,0xdd,0xf3,0x75,0xd4,0x8e,"IID_IDebugBreakpoint2"); - IF_GUID_EQUAL_RETURN(guid,0x38f5c249,0xb448,0x43bb,0x98,0x35,0x57,0x9d,0x4e,0xc0,0x22,0x49,"IID_IDebugBreakpoint3"); - IF_GUID_EQUAL_RETURN(guid,0x5bd9d474,0x5975,0x423a,0xb8,0x8b,0x65,0xa8,0xe7,0x11,0x0e,0x65,"IID_IDebugBreakpoint"); - IF_GUID_EQUAL_RETURN(guid,0xedbed635,0x372e,0x4dab,0xbb,0xfe,0xed,0x0d,0x2f,0x63,0xbe,0x81,"IID_IDebugClient2"); - IF_GUID_EQUAL_RETURN(guid,0xdd492d7f,0x71b8,0x4ad6,0xa8,0xdc,0x1c,0x88,0x74,0x79,0xff,0x91,"IID_IDebugClient3"); - IF_GUID_EQUAL_RETURN(guid,0xca83c3de,0x5089,0x4cf8,0x93,0xc8,0xd8,0x92,0x38,0x7f,0x2a,0x5e,"IID_IDebugClient4"); - IF_GUID_EQUAL_RETURN(guid,0xe3acb9d7,0x7ec2,0x4f0c,0xa0,0xda,0xe8,0x1e,0x0c,0xbb,0xe6,0x28,"IID_IDebugClient5"); - IF_GUID_EQUAL_RETURN(guid,0xfd28b4c5,0xc498,0x4686,0xa2,0x8e,0x62,0xca,0xd2,0x15,0x4e,0xb3,"IID_IDebugClient6"); - IF_GUID_EQUAL_RETURN(guid,0x13586be3,0x542e,0x481e,0xb1,0xf2,0x84,0x97,0xba,0x74,0xf9,0xa9,"IID_IDebugClient7"); - IF_GUID_EQUAL_RETURN(guid,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8,"IID_IDebugClient"); - IF_GUID_EQUAL_RETURN(guid,0xd4366723,0x44df,0x4bed,0x8c,0x7e,0x4c,0x05,0x42,0x4f,0x45,0x88,"IID_IDebugControl2"); - IF_GUID_EQUAL_RETURN(guid,0x7df74a86,0xb03f,0x407f,0x90,0xab,0xa2,0x0d,0xad,0xce,0xad,0x08,"IID_IDebugControl3"); - IF_GUID_EQUAL_RETURN(guid,0x94e60ce9,0x9b41,0x4b19,0x9f,0xc0,0x6d,0x9e,0xb3,0x52,0x72,0xb3,"IID_IDebugControl4"); - IF_GUID_EQUAL_RETURN(guid,0xb2ffe162,0x2412,0x429f,0x8d,0x1d,0x5b,0xf6,0xdd,0x82,0x46,0x96,"IID_IDebugControl5"); - IF_GUID_EQUAL_RETURN(guid,0xbc0d583f,0x126d,0x43a1,0x9c,0xc4,0xa8,0x60,0xab,0x1d,0x53,0x7b,"IID_IDebugControl6"); - IF_GUID_EQUAL_RETURN(guid,0xb86fb3b1,0x80d4,0x475b,0xae,0xa3,0xcf,0x06,0x53,0x9c,0xf6,0x3a,"IID_IDebugControl7"); - IF_GUID_EQUAL_RETURN(guid,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba,"IID_IDebugControl"); - IF_GUID_EQUAL_RETURN(guid,0x7a5e852f,0x96e9,0x468f,0xac,0x1b,0x0b,0x3a,0xdd,0xc4,0xa0,0x49,"IID_IDebugDataSpaces2"); - IF_GUID_EQUAL_RETURN(guid,0x23f79d6c,0x8aaf,0x4f7c,0xa6,0x07,0x99,0x95,0xf5,0x40,0x7e,0x63,"IID_IDebugDataSpaces3"); - IF_GUID_EQUAL_RETURN(guid,0xd98ada1f,0x29e9,0x4ef5,0xa6,0xc0,0xe5,0x33,0x49,0x88,0x32,0x12,"IID_IDebugDataSpaces4"); - IF_GUID_EQUAL_RETURN(guid,0x88f7dfab,0x3ea7,0x4c3a,0xae,0xfb,0xc4,0xe8,0x10,0x61,0x73,0xaa,"IID_IDebugDataSpaces"); - IF_GUID_EQUAL_RETURN(guid,0x337be28b,0x5036,0x4d72,0xb6,0xbf,0xc4,0x5f,0xbb,0x9f,0x2e,0xaa,"IID_IDebugEventCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0x0690e046,0x9c23,0x45ac,0xa0,0x4f,0x98,0x7a,0xc2,0x9a,0xd0,0xd3,"IID_IDebugEventCallbacksWide"); - IF_GUID_EQUAL_RETURN(guid,0x61a4905b,0x23f9,0x4247,0xb3,0xc5,0x53,0xd0,0x87,0x52,0x9a,0xb7,"IID_IDebugEventContextCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0x9f50e42c,0xf136,0x499e,0x9a,0x97,0x73,0x03,0x6c,0x94,0xed,0x2d,"IID_IDebugInputCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0x67721fe9,0x56d2,0x4a44,0xa3,0x25,0x2b,0x65,0x51,0x3c,0xe6,0xeb,"IID_IDebugOutputCallbacks2"); - IF_GUID_EQUAL_RETURN(guid,0x4bf58045,0xd654,0x4c40,0xb0,0xaf,0x68,0x30,0x90,0xf3,0x56,0xdc,"IID_IDebugOutputCallbacks"); - IF_GUID_EQUAL_RETURN(guid,0x4c7fd663,0xc394,0x4e26,0x8e,0xf1,0x34,0xad,0x5e,0xd3,0x76,0x4c,"IID_IDebugOutputCallbacksWide"); - IF_GUID_EQUAL_RETURN(guid,0x1656afa9,0x19c6,0x4e3a,0x97,0xe7,0x5d,0xc9,0x16,0x0c,0xf9,0xc4,"IID_IDebugRegisters2"); - IF_GUID_EQUAL_RETURN(guid,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x18,0x69,0x14,0x93,"IID_IDebugRegisters"); - IF_GUID_EQUAL_RETURN(guid,0x6a7ccc5f,0xfb5e,0x4dcc,0xb4,0x1c,0x6c,0x20,0x30,0x7b,0xcc,0xc7,"IID_IDebugSymbolGroup2"); - IF_GUID_EQUAL_RETURN(guid,0xf2528316,0x0f1a,0x4431,0xae,0xed,0x11,0xd0,0x96,0xe1,0xe2,0xab,"IID_IDebugSymbolGroup"); - IF_GUID_EQUAL_RETURN(guid,0x3a707211,0xafdd,0x4495,0xad,0x4f,0x56,0xfe,0xcd,0xf8,0x16,0x3f,"IID_IDebugSymbols2"); - IF_GUID_EQUAL_RETURN(guid,0xf02fbecc,0x50ac,0x4f36,0x9a,0xd9,0xc9,0x75,0xe8,0xf3,0x2f,0xf8,"IID_IDebugSymbols3"); - IF_GUID_EQUAL_RETURN(guid,0xe391bbd8,0x9d8c,0x4418,0x84,0x0b,0xc0,0x06,0x59,0x2a,0x17,0x52,"IID_IDebugSymbols4"); - IF_GUID_EQUAL_RETURN(guid,0xc65fa83e,0x1e69,0x475e,0x8e,0x0e,0xb5,0xd7,0x9e,0x9c,0xc1,0x7e,"IID_IDebugSymbols5"); - IF_GUID_EQUAL_RETURN(guid,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50,"IID_IDebugSymbols"); - IF_GUID_EQUAL_RETURN(guid,0x0ae9f5ff,0x1852,0x4679,0xb0,0x55,0x49,0x4b,0xee,0x64,0x07,0xee,"IID_IDebugSystemObjects2"); - IF_GUID_EQUAL_RETURN(guid,0xe9676e2f,0xe286,0x4ea3,0xb0,0xf9,0xdf,0xe5,0xd9,0xfc,0x33,0x0e,"IID_IDebugSystemObjects3"); - IF_GUID_EQUAL_RETURN(guid,0x489468e6,0x7d0f,0x4af5,0x87,0xab,0x25,0x20,0x74,0x54,0xd5,0x53,"IID_IDebugSystemObjects4"); - IF_GUID_EQUAL_RETURN(guid,0x6b86fe2c,0x2c4f,0x4f0c,0x9d,0xa2,0x17,0x43,0x11,0xac,0xc3,0x27,"IID_IDebugSystemObjects"); - IF_GUID_EQUAL_RETURN(guid,0xbf24142d,0xa47d,0x4d24,0xa6,0x6d,0x8c,0x21,0x41,0x94,0x4e,0x44,"IID_IDebuggerInfo"); - IF_GUID_EQUAL_RETURN(guid,0x23d86786,0x0bb5,0x4774,0x8f,0xb5,0xe3,0x52,0x2a,0xdd,0x62,0x46,"IID_IDebuggerThreadControl"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b8,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IDeferredCommand"); - IF_GUID_EQUAL_RETURN(guid,0x6aae1ec1,0x662a,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a,"IID_IDirect3D2"); - IF_GUID_EQUAL_RETURN(guid,0xbb223240,0xe72b,0x11d0,0xa9,0xb4,0x00,0xaa,0x00,0xc0,0x99,0x3e,"IID_IDirect3D3"); - IF_GUID_EQUAL_RETURN(guid,0xf5049e77,0x4861,0x11d2,0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8,"IID_IDirect3D7"); - IF_GUID_EQUAL_RETURN(guid,0x81bdcbca,0x64d4,0x426d,0xae,0x8d,0xad,0x1,0x47,0xf4,0x27,0x5c,"IID_IDirect3D9"); - IF_GUID_EQUAL_RETURN(guid,0x02177241,0x69FC,0x400C,0x8F,0xF1,0x93,0xA4,0x4D,0xF6,0x86,0x1D,"IID_IDirect3D9Ex"); - IF_GUID_EQUAL_RETURN(guid,0x187aeb13,0xaaf5,0x4c59,0x87,0x6d,0xe0,0x59,0x8,0x8c,0xd,0xf8,"IID_IDirect3D9ExOverlayExtension"); - IF_GUID_EQUAL_RETURN(guid,0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56,"IID_IDirect3D"); - IF_GUID_EQUAL_RETURN(guid,0xff24beee,0xda21,0x4beb,0x98,0xb5,0xd2,0xf8,0x99,0xf9,0x8a,0xf9,"IID_IDirect3DAuthenticatedChannel9"); - IF_GUID_EQUAL_RETURN(guid,0x580ca87e,0x1d3c,0x4d54,0x99,0x1d,0xb7,0xd3,0xe3,0xc2,0x98,0xce,"IID_IDirect3DBaseTexture9"); - IF_GUID_EQUAL_RETURN(guid,0xfa0ab799,0x7a9c,0x48ca,0x8c,0x5b,0x23,0x7e,0x71,0xa5,0x44,0x34,"IID_IDirect3DCryptoSession9"); - IF_GUID_EQUAL_RETURN(guid,0xfff32f81,0xd953,0x473a,0x92,0x23,0x93,0xd6,0x52,0xab,0xa9,0x3f,"IID_IDirect3DCubeTexture9"); - IF_GUID_EQUAL_RETURN(guid,0x93281501,0x8cf8,0x11d0,0x89,0xab,0x0,0xa0,0xc9,0x5,0x41,0x29,"IID_IDirect3DDevice2"); - IF_GUID_EQUAL_RETURN(guid,0xb0ab3b60,0x33d7,0x11d1,0xa9,0x81,0x0,0xc0,0x4f,0xd7,0xb1,0x74,"IID_IDirect3DDevice3"); - IF_GUID_EQUAL_RETURN(guid,0xf5049e79,0x4861,0x11d2,0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8,"IID_IDirect3DDevice7"); - IF_GUID_EQUAL_RETURN(guid,0xd0223b96,0xbf7a,0x43fd,0x92,0xbd,0xa4,0x3b,0xd,0x82,0xb9,0xeb,"IID_IDirect3DDevice9"); - IF_GUID_EQUAL_RETURN(guid,0xb18b10ce,0x2649,0x405a,0x87,0xf,0x95,0xf7,0x77,0xd4,0x31,0x3a,"IID_IDirect3DDevice9Ex"); - IF_GUID_EQUAL_RETURN(guid,0x26dc4561,0xa1ee,0x4ae7,0x96,0xda,0x11,0x8a,0x36,0xc0,0xec,0x95,"IID_IDirect3DDevice9Video"); - IF_GUID_EQUAL_RETURN(guid,0x64108800,0x957d,0X11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29,"IID_IDirect3DDevice"); - IF_GUID_EQUAL_RETURN(guid,0xa0cade0f,0x06d5,0x4cf4,0xa1,0xc7,0xf3,0xcd,0xd7,0x25,0xaa,0x75,"IID_IDirect3DDeviceManager9"); - IF_GUID_EQUAL_RETURN(guid,0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E,"IID_IDirect3DExecuteBuffer"); - IF_GUID_EQUAL_RETURN(guid,0x84E63dE0,0x46AA,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E,"IID_IDirect3DHALDevice"); - IF_GUID_EQUAL_RETURN(guid,0x7c9dd65e,0xd3f7,0x4529,0xac,0xee,0x78,0x58,0x30,0xac,0xde,0x35,"IID_IDirect3DIndexBuffer9"); - IF_GUID_EQUAL_RETURN(guid,0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E,"IID_IDirect3DLight"); - IF_GUID_EQUAL_RETURN(guid,0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29,"IID_IDirect3DMMXDevice"); - IF_GUID_EQUAL_RETURN(guid,0x93281503,0x8cf8,0x11d0,0x89,0xab,0x0,0xa0,0xc9,0x5,0x41,0x29,"IID_IDirect3DMaterial2"); - IF_GUID_EQUAL_RETURN(guid,0xca9c46f4,0xd3c5,0x11d1,0xb7,0x5a,0x0,0x60,0x8,0x52,0xb3,0x12,"IID_IDirect3DMaterial3"); - IF_GUID_EQUAL_RETURN(guid,0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E,"IID_IDirect3DMaterial"); - IF_GUID_EQUAL_RETURN(guid,0x8767df22,0xbacc,0x11d1,0x89,0x69,0x0,0xa0,0xc9,0x6,0x29,0xa8,"IID_IDirect3DNullDevice"); - IF_GUID_EQUAL_RETURN(guid,0x6d3bdbdc,0x5b02,0x4415,0xb8,0x52,0xce,0x5e,0x8b,0xcc,0xb2,0x89,"IID_IDirect3DPixelShader9"); - IF_GUID_EQUAL_RETURN(guid,0xd9771460,0xa695,0x4f26,0xbb,0xd3,0x27,0xb8,0x40,0xb5,0x41,0xcc,"IID_IDirect3DQuery9"); - IF_GUID_EQUAL_RETURN(guid,0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56,"IID_IDirect3DRGBDevice"); - IF_GUID_EQUAL_RETURN(guid,0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56,"IID_IDirect3DRampDevice"); - IF_GUID_EQUAL_RETURN(guid,0x50936643,0x13e9,0x11d1,0x89,0xaa,0x0,0xa0,0xc9,0x5,0x41,0x29,"IID_IDirect3DRefDevice"); - IF_GUID_EQUAL_RETURN(guid,0x5eec05d,0x8f7d,0x4362,0xb9,0x99,0xd1,0xba,0xf3,0x57,0xc7,0x4,"IID_IDirect3DResource9"); - IF_GUID_EQUAL_RETURN(guid,0xb07c4fe5,0x310d,0x4ba8,0xa2,0x3c,0x4f,0xf,0x20,0x6f,0x21,0x8b,"IID_IDirect3DStateBlock9"); - IF_GUID_EQUAL_RETURN(guid,0xcfbaf3a,0x9ff6,0x429a,0x99,0xb3,0xa2,0x79,0x6a,0xf8,0xb8,0x9b,"IID_IDirect3DSurface9"); - IF_GUID_EQUAL_RETURN(guid,0x794950f2,0xadfc,0x458a,0x90,0x5e,0x10,0xa1,0xb,0xb,0x50,0x3b,"IID_IDirect3DSwapChain9"); - IF_GUID_EQUAL_RETURN(guid,0x91886caf,0x1c3d,0x4d2e,0xa0,0xab,0x3e,0x4c,0x7d,0x8d,0x33,0x3,"IID_IDirect3DSwapChain9Ex"); - IF_GUID_EQUAL_RETURN(guid,0x93281502,0x8cf8,0x11d0,0x89,0xab,0x0,0xa0,0xc9,0x5,0x41,0x29,"IID_IDirect3DTexture2"); - IF_GUID_EQUAL_RETURN(guid,0x85c31227,0x3de5,0x4f00,0x9b,0x3a,0xf1,0x1a,0xc3,0x8c,0x18,0xb5,"IID_IDirect3DTexture9"); - IF_GUID_EQUAL_RETURN(guid,0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56,"IID_IDirect3DTexture"); - IF_GUID_EQUAL_RETURN(guid,0xf5049e78,0x4861,0x11d2,0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8,"IID_IDirect3DTnLHalDevice"); - IF_GUID_EQUAL_RETURN(guid,0xf5049e7d,0x4861,0x11d2,0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8,"IID_IDirect3DVertexBuffer7"); - IF_GUID_EQUAL_RETURN(guid,0xb64bb1b5,0xfd70,0x4df6,0xbf,0x91,0x19,0xd0,0xa1,0x24,0x55,0xe3,"IID_IDirect3DVertexBuffer9"); - IF_GUID_EQUAL_RETURN(guid,0x7a503555,0x4a83,0x11d1,0xa5,0xdb,0x0,0xa0,0xc9,0x3,0x67,0xf8,"IID_IDirect3DVertexBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xdd13c59c,0x36fa,0x4098,0xa8,0xfb,0xc7,0xed,0x39,0xdc,0x85,0x46,"IID_IDirect3DVertexDeclaration9"); - IF_GUID_EQUAL_RETURN(guid,0xefc5557e,0x6265,0x4613,0x8a,0x94,0x43,0x85,0x78,0x89,0xeb,0x36,"IID_IDirect3DVertexShader9"); - IF_GUID_EQUAL_RETURN(guid,0x93281500,0x8cf8,0x11d0,0x89,0xab,0x0,0xa0,0xc9,0x5,0x41,0x29,"IID_IDirect3DViewport2"); - IF_GUID_EQUAL_RETURN(guid,0xb0ab3b61,0x33d7,0x11d1,0xa9,0x81,0x0,0xc0,0x4f,0xd7,0xb1,0x74,"IID_IDirect3DViewport3"); - IF_GUID_EQUAL_RETURN(guid,0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E,"IID_IDirect3DViewport"); - IF_GUID_EQUAL_RETURN(guid,0x24f416e6,0x1f67,0x4aa7,0xb8,0x8e,0xd3,0x3f,0x6f,0x31,0x28,0xa1,"IID_IDirect3DVolume9"); - IF_GUID_EQUAL_RETURN(guid,0x2518526c,0xe789,0x4111,0xa7,0xb9,0x47,0xef,0x32,0x8d,0x13,0xe6,"IID_IDirect3DVolumeTexture9"); - IF_GUID_EQUAL_RETURN(guid,0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56,"IID_IDirectDraw2"); - IF_GUID_EQUAL_RETURN(guid,0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5,"IID_IDirectDraw4"); - IF_GUID_EQUAL_RETURN(guid,0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b,"IID_IDirectDraw7"); - IF_GUID_EQUAL_RETURN(guid,0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectDraw"); - IF_GUID_EQUAL_RETURN(guid,0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectDrawClipper"); - IF_GUID_EQUAL_RETURN(guid,0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"IID_IDirectDrawColorControl"); - IF_GUID_EQUAL_RETURN(guid,0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E,"IID_IDirectDrawGammaControl"); - IF_GUID_EQUAL_RETURN(guid,0x8D56C120,0x6A08,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"IID_IDirectDrawKernel"); - IF_GUID_EQUAL_RETURN(guid,0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectDrawPalette"); - IF_GUID_EQUAL_RETURN(guid,0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27,"IID_IDirectDrawSurface2"); - IF_GUID_EQUAL_RETURN(guid,0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB,"IID_IDirectDrawSurface3"); - IF_GUID_EQUAL_RETURN(guid,0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B,"IID_IDirectDrawSurface4"); - IF_GUID_EQUAL_RETURN(guid,0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b,"IID_IDirectDrawSurface7"); - IF_GUID_EQUAL_RETURN(guid,0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectDrawSurface"); - IF_GUID_EQUAL_RETURN(guid,0x60755DA0,0x6A40,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8,"IID_IDirectDrawSurfaceKernel"); - IF_GUID_EQUAL_RETURN(guid,0x36d39eb0,0xdd75,0x11ce,0xbf,0x0e,0x00,0xaa,0x00,0x55,0x59,0x5a,"IID_IDirectDrawVideo"); - IF_GUID_EQUAL_RETURN(guid,0xB36D93E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56,"IID_IDirectDrawVideoPort"); - IF_GUID_EQUAL_RETURN(guid,0xA655FB94,0x0589,0x4E57,0xB3,0x33,0x56,0x7A,0x89,0x46,0x8C,0x88,"IID_IDirectDrawVideoPortNotify"); - IF_GUID_EQUAL_RETURN(guid,0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInput2A"); - IF_GUID_EQUAL_RETURN(guid,0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInput2W"); - IF_GUID_EQUAL_RETURN(guid,0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE,"IID_IDirectInput7A"); - IF_GUID_EQUAL_RETURN(guid,0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE,"IID_IDirectInput7W"); - IF_GUID_EQUAL_RETURN(guid,0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00,"IID_IDirectInput8A"); - IF_GUID_EQUAL_RETURN(guid,0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00,"IID_IDirectInput8W"); - IF_GUID_EQUAL_RETURN(guid,0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInputA"); - IF_GUID_EQUAL_RETURN(guid,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInputDevice2A"); - IF_GUID_EQUAL_RETURN(guid,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInputDevice2W"); - IF_GUID_EQUAL_RETURN(guid,0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE,"IID_IDirectInputDevice7A"); - IF_GUID_EQUAL_RETURN(guid,0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE,"IID_IDirectInputDevice7W"); - IF_GUID_EQUAL_RETURN(guid,0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79,"IID_IDirectInputDevice8A"); - IF_GUID_EQUAL_RETURN(guid,0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79,"IID_IDirectInputDevice8W"); - IF_GUID_EQUAL_RETURN(guid,0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInputDeviceA"); - IF_GUID_EQUAL_RETURN(guid,0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInputDeviceW"); - IF_GUID_EQUAL_RETURN(guid,0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35,"IID_IDirectInputEffect"); - IF_GUID_EQUAL_RETURN(guid,0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IDirectInputW"); - IF_GUID_EQUAL_RETURN(guid,0x6fc2cae1,0xbc78,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"IID_IDirectMusic2"); - IF_GUID_EQUAL_RETURN(guid,0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97,"IID_IDirectMusic8"); - IF_GUID_EQUAL_RETURN(guid,0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12,"IID_IDirectMusic"); - IF_GUID_EQUAL_RETURN(guid,0xd2ac2878,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd,"IID_IDirectMusicBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xd2ac287c,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd,"IID_IDirectMusicCollection"); - IF_GUID_EQUAL_RETURN(guid,0xd2ac287b,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd,"IID_IDirectMusicDownload"); - IF_GUID_EQUAL_RETURN(guid,0xd2ac287e,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd,"IID_IDirectMusicDownloadedInstrument"); - IF_GUID_EQUAL_RETURN(guid,0xd2ac287d,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd,"IID_IDirectMusicInstrument"); - IF_GUID_EQUAL_RETURN(guid,0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12,"IID_IDirectMusicPort"); - IF_GUID_EQUAL_RETURN(guid,0xd2ac287a,0xb39b,0x11d1,0x87,0x4,0x0,0x60,0x8,0x93,0xb1,0xbd,"IID_IDirectMusicPortDownload"); - IF_GUID_EQUAL_RETURN(guid,0x53cab625,0x2711,0x4c9f,0x9d,0xe7,0x1b,0x7f,0x92,0x5f,0x6f,0xc8,"IID_IDirectMusicSynth8"); - IF_GUID_EQUAL_RETURN(guid,0x9823661,0x5c85,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"IID_IDirectMusicSynth"); - IF_GUID_EQUAL_RETURN(guid,0x9823663,0x5c85,0x11d2,0xaf,0xa6,0x0,0xaa,0x0,0x24,0xd8,0xb6,"IID_IDirectMusicSynthSink"); - IF_GUID_EQUAL_RETURN(guid,0xced153e7,0x3606,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12,"IID_IDirectMusicThru"); - IF_GUID_EQUAL_RETURN(guid,0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectSound3DBuffer"); - IF_GUID_EQUAL_RETURN(guid,0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectSound3DListener"); - IF_GUID_EQUAL_RETURN(guid,0xC50A7E93,0xF395,0x4834,0x9E,0xF6,0x7F,0xA9,0x9D,0xE5,0x09,0x66,"IID_IDirectSound8"); - IF_GUID_EQUAL_RETURN(guid,0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectSound"); - IF_GUID_EQUAL_RETURN(guid,0x6825a449,0x7524,0x4d82,0x92,0x0f,0x50,0xe3,0x6a,0xb3,0xab,0x1e,"IID_IDirectSoundBuffer8"); - IF_GUID_EQUAL_RETURN(guid,0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60,"IID_IDirectSoundBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xb0210781,0x89cd,0x11d0,0xaf,0x8,0x0,0xa0,0xc9,0x25,0xcd,0x16,"IID_IDirectSoundCapture"); - IF_GUID_EQUAL_RETURN(guid,0x990df4,0xdbb,0x4872,0x83,0x3e,0x6d,0x30,0x3e,0x80,0xae,0xb6,"IID_IDirectSoundCaptureBuffer8"); - IF_GUID_EQUAL_RETURN(guid,0xb0210782,0x89cd,0x11d0,0xaf,0x8,0x0,0xa0,0xc9,0x25,0xcd,0x16,"IID_IDirectSoundCaptureBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xad74143d,0x903d,0x4ab7,0x80,0x66,0x28,0xd3,0x63,0x03,0x6d,0x65,"IID_IDirectSoundCaptureFXAec"); - IF_GUID_EQUAL_RETURN(guid,0xed311e41,0xfbae,0x4175,0x96,0x25,0xcd,0x8,0x54,0xf6,0x93,0xca,"IID_IDirectSoundCaptureFXNoiseSuppress"); - IF_GUID_EQUAL_RETURN(guid,0x880842e3,0x145f,0x43e6,0xa9,0x34,0xa7,0x18,0x06,0xe5,0x05,0x47,"IID_IDirectSoundFXChorus"); - IF_GUID_EQUAL_RETURN(guid,0x4bbd1154,0x62f6,0x4e2c,0xa1,0x5c,0xd3,0xb6,0xc4,0x17,0xf7,0xa0,"IID_IDirectSoundFXCompressor"); - IF_GUID_EQUAL_RETURN(guid,0x8ecf4326,0x455f,0x4d8b,0xbd,0xa9,0x8d,0x5d,0x3e,0x9e,0x3e,0x0b,"IID_IDirectSoundFXDistortion"); - IF_GUID_EQUAL_RETURN(guid,0x8bd28edf,0x50db,0x4e92,0xa2,0xbd,0x44,0x54,0x88,0xd1,0xed,0x42,"IID_IDirectSoundFXEcho"); - IF_GUID_EQUAL_RETURN(guid,0x903e9878,0x2c92,0x4072,0x9b,0x2c,0xea,0x68,0xf5,0x39,0x67,0x83,"IID_IDirectSoundFXFlanger"); - IF_GUID_EQUAL_RETURN(guid,0xd616f352,0xd622,0x11ce,0xaa,0xc5,0x00,0x20,0xaf,0x0b,0x99,0xa3,"IID_IDirectSoundFXGargle"); - IF_GUID_EQUAL_RETURN(guid,0x4b166a6a,0x0d66,0x43f3,0x80,0xe3,0xee,0x62,0x80,0xde,0xe1,0xa4,"IID_IDirectSoundFXI3DL2Reverb"); - IF_GUID_EQUAL_RETURN(guid,0xc03ca9fe,0xfe90,0x4204,0x80,0x78,0x82,0x33,0x4c,0xd1,0x77,0xda,"IID_IDirectSoundFXParamEq"); - IF_GUID_EQUAL_RETURN(guid,0x46858c3a,0x0dc6,0x45e3,0xb7,0x60,0xd4,0xee,0xf1,0x6c,0xb3,0x25,"IID_IDirectSoundFXWavesReverb"); - IF_GUID_EQUAL_RETURN(guid,0xedcb4c7a,0xdaab,0x4216,0xa4,0x2e,0x6c,0x50,0x59,0x6d,0xdc,0x1d,"IID_IDirectSoundFullDuplex"); - IF_GUID_EQUAL_RETURN(guid,0xb0210783,0x89cd,0x11d0,0xaf,0x8,0x0,0xa0,0xc9,0x25,0xcd,0x16,"IID_IDirectSoundNotify"); - IF_GUID_EQUAL_RETURN(guid,0xfc51a550,0xd5e7,0x11d9,0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02,"IID_IDirectXVideoAccelerationService"); - IF_GUID_EQUAL_RETURN(guid,0xf2b0810a,0xfd00,0x43c9,0x91,0x8c,0xdf,0x94,0xe2,0xd8,0xef,0x7d,"IID_IDirectXVideoDecoder"); - IF_GUID_EQUAL_RETURN(guid,0xfc51a551,0xd5e7,0x11d9,0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02,"IID_IDirectXVideoDecoderService"); - IF_GUID_EQUAL_RETURN(guid,0xb7f916dd,0xdb3b,0x49c1,0x84,0xd7,0xe4,0x5e,0xf9,0x9e,0xc7,0x26,"IID_IDirectXVideoMemoryConfiguration"); - IF_GUID_EQUAL_RETURN(guid,0x8c3a39f0,0x916e,0x4690,0x80,0x4f,0x4c,0x80,0x01,0x35,0x5d,0x25,"IID_IDirectXVideoProcessor"); - IF_GUID_EQUAL_RETURN(guid,0xfc51a552,0xd5e7,0x11d9,0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02,"IID_IDirectXVideoProcessorService"); - IF_GUID_EQUAL_RETURN(guid,0x7988b572,0xec89,0x11cf,0x9c,0x0,0x0,0xaa,0x0,0xa1,0x4f,0x56,"IID_IDiskQuotaControl"); - IF_GUID_EQUAL_RETURN(guid,0x7988b579,0xec89,0x11cf,0x9c,0x0,0x0,0xaa,0x0,0xa1,0x4f,0x56,"IID_IDiskQuotaEvents"); - IF_GUID_EQUAL_RETURN(guid,0x7988b574,0xec89,0x11cf,0x9c,0x0,0x0,0xaa,0x0,0xa1,0x4f,0x56,"IID_IDiskQuotaUser"); - IF_GUID_EQUAL_RETURN(guid,0x7988b576,0xec89,0x11cf,0x9c,0x0,0x0,0xaa,0x0,0xa1,0x4f,0x56,"IID_IDiskQuotaUserBatch"); - IF_GUID_EQUAL_RETURN(guid,0xa6ef9861,0xc720,0x11d0,0x93,0x37,0x0,0xa0,0xc9,0xd,0xca,0xa9,"IID_IDispError"); - IF_GUID_EQUAL_RETURN(guid,0xa6ef9860,0xc720,0x11d0,0x93,0x37,0x0,0xa0,0xc9,0xd,0xca,0xa9,"IID_IDispatchEx"); - IF_GUID_EQUAL_RETURN(guid,0x87D605E0,0xC511,0x11CF,0x89,0xA9,0x00,0xA0,0xC9,0x05,0x41,0x29,"IID_IDocViewSite"); - IF_GUID_EQUAL_RETURN(guid,0xDCD285FE,0x0BE0,0x43BD,0x99,0xC9,0xAA,0xAE,0xC5,0x13,0xC5,0x55,"IID_IDocWrap"); - IF_GUID_EQUAL_RETURN(guid,0x77254866,0x9f5b,0x4c8e,0xb9,0xe2,0xc7,0x7a,0x85,0x30,0xd6,0x4b,"IID_IDownloadCompletedCallback"); - IF_GUID_EQUAL_RETURN(guid,0xfa565b23,0x498c,0x47a0,0x97,0x9d,0xe7,0xd5,0xb1,0x81,0x33,0x60,"IID_IDownloadCompletedCallbackArgs"); - IF_GUID_EQUAL_RETURN(guid,0xc574de85,0x7358,0x43f6,0xaa,0xe8,0x86,0x97,0xe6,0x2d,0x8b,0xa7,"IID_IDownloadJob"); - IF_GUID_EQUAL_RETURN(guid,0x988934a4,0x064b,0x11d3,0xbb,0x80,0x0,0x10,0x4b,0x35,0xe7,0xf9,"IID_IDownloadManager"); - IF_GUID_EQUAL_RETURN(guid,0xd31a5bac,0xf719,0x4178,0x9d,0xbb,0x5e,0x2c,0xb4,0x7f,0xd1,0x8a,"IID_IDownloadProgress"); - IF_GUID_EQUAL_RETURN(guid,0x8c3f1cdd,0x6173,0x4591,0xae,0xbd,0xa5,0x6a,0x53,0xca,0x77,0xc1,"IID_IDownloadProgressChangedCallback"); - IF_GUID_EQUAL_RETURN(guid,0x324ff2c6,0x4981,0x4b04,0x94,0x12,0x57,0x48,0x17,0x45,0xab,0x24,"IID_IDownloadProgressChangedCallbackArgs"); - IF_GUID_EQUAL_RETURN(guid,0xdaa4fdd0,0x4727,0x4dbe,0xa1,0xe7,0x74,0x5d,0xca,0x31,0x71,0x44,"IID_IDownloadResult"); - IF_GUID_EQUAL_RETURN(guid,0x0c87e64e,0x3b7a,0x11d2,0xb9,0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7,"IID_IDsObjectPicker"); - IF_GUID_EQUAL_RETURN(guid,0xe2d3ec9b,0xd041,0x445a,0x8f,0x16,0x47,0x48,0xde,0x8f,0xb1,0xcf,"IID_IDsObjectPickerCredentials"); - IF_GUID_EQUAL_RETURN(guid,0x4131E760,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuConfigure"); - IF_GUID_EQUAL_RETURN(guid,0xac2b8ad2,0xd6f0,0x11d0,0xb3,0x86,0x0,0xa0,0xc9,0x8,0x33,0x65,"IID_IDtcLuRecovery"); - IF_GUID_EQUAL_RETURN(guid,0x4131E762,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRecoveryFactory"); - IF_GUID_EQUAL_RETURN(guid,0x4131E764,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRecoveryInitiatedByDtc"); - IF_GUID_EQUAL_RETURN(guid,0x4131E766,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRecoveryInitiatedByDtcStatusWork"); - IF_GUID_EQUAL_RETURN(guid,0x4131E765,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRecoveryInitiatedByDtcTransWork"); - IF_GUID_EQUAL_RETURN(guid,0x4131E768,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRecoveryInitiatedByLu"); - IF_GUID_EQUAL_RETURN(guid,0xac2b8ad1,0xd6f0,0x11d0,0xb3,0x86,0x0,0xa0,0xc9,0x8,0x33,0x65,"IID_IDtcLuRecoveryInitiatedByLuWork"); - IF_GUID_EQUAL_RETURN(guid,0x4131E769,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRmEnlistment"); - IF_GUID_EQUAL_RETURN(guid,0x4131E771,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRmEnlistmentFactory"); - IF_GUID_EQUAL_RETURN(guid,0x4131E770,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuRmEnlistmentSink"); - IF_GUID_EQUAL_RETURN(guid,0x4131E773,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuSubordinateDtc"); - IF_GUID_EQUAL_RETURN(guid,0x4131E775,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuSubordinateDtcFactory"); - IF_GUID_EQUAL_RETURN(guid,0x4131E774,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IDtcLuSubordinateDtcSink"); - IF_GUID_EQUAL_RETURN(guid,0xa7aa013b,0xeb7d,0x4f42,0xb4,0x1c,0xb2,0xde,0xc0,0x9a,0xe0,0x34,"IID_IDtcNetworkAccessConfig2"); - IF_GUID_EQUAL_RETURN(guid,0x9797c15d,0xa428,0x4291,0x87,0xb6,0x9,0x95,0x3,0x1a,0x67,0x8d,"IID_IDtcNetworkAccessConfig"); - IF_GUID_EQUAL_RETURN(guid,0xadefc46b,0xcb1d,0x11d0,0xb1,0x35,0x00,0xc0,0x4f,0xc2,0xf3,0xef,"IID_IDtcToXaHelper"); - IF_GUID_EQUAL_RETURN(guid,0xadefc46a,0xcb1d,0x11d0,0xb1,0x35,0x00,0xc0,0x4f,0xc2,0xf3,0xef,"IID_IDtcToXaHelperFactory"); - IF_GUID_EQUAL_RETURN(guid,0x47ED4971,0x53B3,0x11d1,0xBB,0xB9,0x00,0xC0,0x4F,0xD6,0x58,0xF6,"IID_IDtcToXaHelperSinglePipe"); - IF_GUID_EQUAL_RETURN(guid,0x64FFABE0,0x7CE9,0x11d0,0x8C,0xE6,0x00,0xC0,0x4F,0xDC,0x87,0x7E,"IID_IDtcToXaMapper"); - IF_GUID_EQUAL_RETURN(guid,0x7D0F462F,0x4064,0x4862,0xBC,0x7F,0x93,0x3E,0x50,0x58,0xC1,0x0F,"IID_IDxDiagContainer"); - IF_GUID_EQUAL_RETURN(guid,0x9C6B4CB0,0x23F8,0x49CC,0xA3,0xED,0x45,0xA5,0x50,0x00,0xA6,0xD2,"IID_IDxDiagProvider"); - IF_GUID_EQUAL_RETURN(guid,0x941fabca,0xdd47,0x4fca,0x90,0xbb,0xb0,0xe1,0x2,0x55,0xf2,0xd,"IID_IEffectivePermission2"); - IF_GUID_EQUAL_RETURN(guid,0x3853dc76,0x9f35,0x407c,0x88,0xa1,0xd1,0x93,0x44,0x36,0x5f,0xbc,"IID_IEffectivePermission"); - IF_GUID_EQUAL_RETURN(guid,0x7988b577,0xec89,0x11cf,0x9c,0x0,0x0,0xaa,0x0,0xa1,0x4f,0x56,"IID_IEnumDiskQuotaUsers"); - IF_GUID_EQUAL_RETURN(guid,0xe700be1,0x9db6,0x11d1,0xa1,0xce,0x0,0xc0,0x4f,0xd7,0x5d,0x13,"IID_IEnumExtraSearch"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA82C,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IEnumMsmDependency"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA829,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IEnumMsmError"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA826,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IEnumMsmString"); - IF_GUID_EQUAL_RETURN(guid,0x148BD528L,0xA2AB,0x11CE,0xB1,0x1F,0x00,0xAA,0x00,0x53,0x05,0x03,"IID_IEnumWorkItems"); - IF_GUID_EQUAL_RETURN(guid,0x19f7151,0xe6db,0x11d0,0x83,0xc3,0x0,0xc0,0x4f,0xdd,0xb8,0x2e,"IID_IFECommon"); - IF_GUID_EQUAL_RETURN(guid,0x19f7153,0xe6db,0x11d0,0x83,0xc3,0x0,0xc0,0x4f,0xdd,0xb8,0x2e,"IID_IFEDictionary"); - IF_GUID_EQUAL_RETURN(guid,0x21164102,0xc24a,0x11d1,0x85,0x1a,0x0,0xc0,0x4f,0xcc,0x6b,0x14,"IID_IFELanguage2"); - IF_GUID_EQUAL_RETURN(guid,0x19f7152,0xe6db,0x11d0,0x83,0xc3,0x0,0xc0,0x4f,0xdd,0xb8,0x2e,"IID_IFELanguage"); - IF_GUID_EQUAL_RETURN(guid,0x1e18d10,0x4d8b,0x11d2,0x85,0x5d,0x0,0x60,0x8,0x5,0x93,0x67,"IID_IFileSystemBindData"); - IF_GUID_EQUAL_RETURN(guid,0x56a868ba,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IFilterInfo"); - IF_GUID_EQUAL_RETURN(guid,0xdd1d7110,0x7836,0x11cf,0xbf,0x47,0x00,0xaa,0x00,0x55,0x59,0x5a,"IID_IFullScreenVideo"); - IF_GUID_EQUAL_RETURN(guid,0x53479470,0xf1dd,0x11cf,0xbc,0x42,0x00,0xaa,0x00,0xac,0x74,0xf6,"IID_IFullScreenVideoEx"); - IF_GUID_EQUAL_RETURN(guid,0xc23cc370,0x87ef,0x11ce,0x80,0x81,0x00,0x80,0xc7,0x58,0x52,0x7e,"IID_IGetDispenser"); - IF_GUID_EQUAL_RETURN(guid,0x00020023,0,0,0xC0,0,0,0,0,0,0,0x46,"IID_IGetFrame"); - IF_GUID_EQUAL_RETURN(guid,0x8A701DA0L,0x4FEB,0x101B,0xA8,0x2E,0x08,0x00,0x2B,0x2B,0x23,0x37,"IID_IGetOleObject"); - IF_GUID_EQUAL_RETURN(guid,0x91733A60L,0x3F4C,0x101B,0xA3,0xF6,0x00,0xAA,0x00,0x34,0xE4,0xE9,"IID_IGetVBAObject"); - IF_GUID_EQUAL_RETURN(guid,0x613dabd7,0x62b2,0x493e,0x9e,0x65,0xc1,0xe3,0x2a,0x1e,0x0c,0x5e,"IID_IHostAssemblyManager"); - IF_GUID_EQUAL_RETURN(guid,0x7b102a88,0x3f7f,0x496d,0x8f,0xa2,0xc3,0x53,0x74,0xe0,0x1a,0xf3,"IID_IHostAssemblyStore"); - IF_GUID_EQUAL_RETURN(guid,0x50B0CFCE,0x4063,0x4278,0x96,0x73,0xe5,0xcb,0x4e,0xd0,0xbd,0xb8,"IID_IHostAutoEvent"); - IF_GUID_EQUAL_RETURN(guid,0x02CA073C,0x7079,0x4860,0x88,0x0A,0xC2,0xF7,0xA4,0x49,0xC9,0x91,"IID_IHostControl"); - IF_GUID_EQUAL_RETURN(guid,0x6DF710A6,0x26A4,0x4a65,0x8c,0xd5,0x72,0x37,0xb8,0xbd,0xa8,0xdc,"IID_IHostCrst"); - IF_GUID_EQUAL_RETURN(guid,0xd0e80dd3,0x12d4,0x11d3,0xb3,0x9d,0x0,0xc0,0x4f,0xf8,0x17,0x95,"IID_IHostFilter"); - IF_GUID_EQUAL_RETURN(guid,0x5D4EC34E,0xF248,0x457B,0xB6,0x03,0x25,0x5F,0xAA,0xBA,0x0D,0x21,"IID_IHostGCManager"); - IF_GUID_EQUAL_RETURN(guid,0x8BDE9D80,0xEC06,0x41D6,0x83,0xE6,0x22,0x58,0x0E,0xFF,0xCC,0x20,"IID_IHostIoCompletionManager"); - IF_GUID_EQUAL_RETURN(guid,0x1831991C,0xCC53,0x4A31,0xB2,0x18,0x04,0xE9,0x10,0x44,0x64,0x79,"IID_IHostMalloc"); - IF_GUID_EQUAL_RETURN(guid,0x1BF4EC38,0xAFFE,0x4fb9,0x85,0xa6,0x52,0x52,0x68,0xf1,0x5b,0x54,"IID_IHostManualEvent"); - IF_GUID_EQUAL_RETURN(guid,0x7BC698D1,0xF9E3,0x4460,0x9C,0xDE,0xD0,0x42,0x48,0xE9,0xFA,0x25,"IID_IHostMemoryManager"); - IF_GUID_EQUAL_RETURN(guid,0x47EB8E57,0x0846,0x4546,0xAF,0x76,0x6F,0x42,0xFC,0xFC,0x26,0x49,"IID_IHostMemoryNeededCallback"); - IF_GUID_EQUAL_RETURN(guid,0x7AE49844,0xB1E3,0x4683,0xBA,0x7C,0x1E,0x82,0x12,0xEA,0x3B,0x79,"IID_IHostPolicyManager"); - IF_GUID_EQUAL_RETURN(guid,0x7e573ce4,0x343,0x4423,0x98,0xd7,0x63,0x18,0x34,0x8a,0x1d,0x3c,"IID_IHostSecurityContext"); - IF_GUID_EQUAL_RETURN(guid,0x75ad2468,0xa349,0x4d02,0xa7,0x64,0x76,0xa6,0x8a,0xee,0x0c,0x4f,"IID_IHostSecurityManager"); - IF_GUID_EQUAL_RETURN(guid,0x855efd47,0xcc09,0x463a,0xa9,0x7d,0x16,0xac,0xab,0x88,0x26,0x61,"IID_IHostSemaphore"); - IF_GUID_EQUAL_RETURN(guid,0x234330c7,0x5f10,0x4f20,0x96,0x15,0x51,0x22,0xda,0xb7,0xa0,0xac,"IID_IHostSyncManager"); - IF_GUID_EQUAL_RETURN(guid,0xC2275828,0xC4B1,0x4B55,0x82,0xC9,0x92,0x13,0x5F,0x74,0xDF,0x1A,"IID_IHostTask"); - IF_GUID_EQUAL_RETURN(guid,0x997FF24C,0x43B7,0x4352,0x86,0x67,0x0D,0xC0,0x4F,0xAF,0xD3,0x54,"IID_IHostTaskManager"); - IF_GUID_EQUAL_RETURN(guid,0x983D50E2,0xCB15,0x466B,0x80,0xFC,0x84,0x5D,0xC6,0xE8,0xC5,0xFD,"IID_IHostThreadpoolManager"); - IF_GUID_EQUAL_RETURN(guid,0xd643717a,0xfc87,0x4260,0x88,0xac,0x6c,0xe3,0x5f,0x0e,0xc1,0x4e,"IID_IIISApplicationAdmin2"); - IF_GUID_EQUAL_RETURN(guid,0x7C4E1804,0xE342,0x483D,0xA4,0x3E,0xA8,0x50,0xCF,0xCC,0x8D,0x18,"IID_IIISApplicationAdmin"); - IF_GUID_EQUAL_RETURN(guid,0xE8FB8620,0x588F,0x11d2,0x9d,0x61,0x0,0xc0,0x4f,0x79,0xc5,0xfe,"IID_IIisServiceControl"); - IF_GUID_EQUAL_RETURN(guid,0x7c907864,0x346c,0x4aeb,0x8f,0x3f,0x57,0xda,0x28,0x9f,0x96,0x9f,"IID_IImageInformation"); - IF_GUID_EQUAL_RETURN(guid,0x5d8e643a,0xc3a9,0x11d1,0xaf,0xef,0x0,0x80,0x5f,0xc,0x8b,0x6d,"IID_IImePad"); - IF_GUID_EQUAL_RETURN(guid,0x5d8e643b,0xc3a9,0x11d1,0xaf,0xef,0x0,0x80,0x5f,0xc,0x8b,0x6d,"IID_IImePadApplet"); - IF_GUID_EQUAL_RETURN(guid,0x5d8e643c,0xc3a9,0x11d1,0xaf,0xef,0x0,0x80,0x5f,0xc,0x8b,0x6d,"IID_IImeSpecifyApplets"); - IF_GUID_EQUAL_RETURN(guid,0x56b1a988,0x7c0c,0x4aa2,0x86,0x39,0xc3,0xeb,0x5a,0x90,0x22,0x6f,"IID_IInstallReferenceEnum"); - IF_GUID_EQUAL_RETURN(guid,0x582dac66,0xe678,0x449f,0xab,0xa6,0x6f,0xaa,0xec,0x8a,0x93,0x94,"IID_IInstallReferenceItem"); - IF_GUID_EQUAL_RETURN(guid,0x925CBC18,0xA2EA,0x4648,0xBF,0x1C,0xEC,0x8B,0xAD,0xCF,0xE2,0x0A,"IID_IInstallationAgent"); - IF_GUID_EQUAL_RETURN(guid,0xd9a59339,0xe245,0x4dbd,0x96,0x86,0x4d,0x57,0x63,0xe3,0x96,0x24,"IID_IInstallationBehavior"); - IF_GUID_EQUAL_RETURN(guid,0x45f4f6f3,0xd602,0x4f98,0x9a,0x8a,0x3e,0xfa,0x15,0x2a,0xd2,0xd3,"IID_IInstallationCompletedCallback"); - IF_GUID_EQUAL_RETURN(guid,0x250e2106,0x8efb,0x4705,0x96,0x53,0xef,0x13,0xc5,0x81,0xb6,0xa1,"IID_IInstallationCompletedCallbackArgs"); - IF_GUID_EQUAL_RETURN(guid,0x5c209f0b,0xbad5,0x432a,0x95,0x56,0x46,0x99,0xbe,0xd2,0x63,0x8a,"IID_IInstallationJob"); - IF_GUID_EQUAL_RETURN(guid,0x345c8244,0x43a3,0x4e32,0xa3,0x68,0x65,0xf0,0x73,0xb7,0x6f,0x36,"IID_IInstallationProgress"); - IF_GUID_EQUAL_RETURN(guid,0xe01402d5,0xf8da,0x43ba,0xa0,0x12,0x38,0x89,0x4b,0xd0,0x48,0xf1,"IID_IInstallationProgressChangedCallback"); - IF_GUID_EQUAL_RETURN(guid,0xe4f14e1e,0x689d,0x4218,0xa0,0xb9,0xbc,0x18,0x9c,0x48,0x4a,0x01,"IID_IInstallationProgressChangedCallbackArgs"); - IF_GUID_EQUAL_RETURN(guid,0xa43c56d6,0x7451,0x48d4,0xaf,0x96,0xb6,0xcd,0x2d,0x0d,0x9b,0x7a,"IID_IInstallationResult"); - IF_GUID_EQUAL_RETURN(guid,0xE1AA6466,0x9DB4,0x40ba,0xBE,0x03,0x77,0xC3,0x8E,0x8E,0x60,0xB2,"IID_IInternalDocWrap"); - IF_GUID_EQUAL_RETURN(guid,0xa37d00f5,0x7bb0,0x4953,0xb4,0x14,0xf9,0xe9,0x83,0x26,0xf2,0xe8,"IID_IInvalidProductLicenseException"); - IF_GUID_EQUAL_RETURN(guid,0x79427a2b,0xf895,0x40e0,0xbe,0x79,0xb5,0x7d,0xc8,0x2e,0xd2,0x31,"IID_IKernelTransaction"); - IF_GUID_EQUAL_RETURN(guid,0x28F54685,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96,"IID_IKsControl"); - IF_GUID_EQUAL_RETURN(guid,0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96,"IID_IKsControl"); - IF_GUID_EQUAL_RETURN(guid,0x5FFBAA02L,0x49A3,0x11D0,0x9F,0x36,0x00,0xAA,0x00,0xA2,0x16,0xA1,"IID_IKsDataTypeHandler"); - IF_GUID_EQUAL_RETURN(guid,0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96,"IID_IKsInterfaceHandler"); - IF_GUID_EQUAL_RETURN(guid,0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1,"IID_IKsPin"); - IF_GUID_EQUAL_RETURN(guid,0xCD5EBE6BL,0x8B6E,0x11D1,0x8A,0xE0,0x00,0xA0,0xC9,0x22,0x31,0x96,"IID_IKsPinFactory"); - IF_GUID_EQUAL_RETURN(guid,0x31efac30,0x515c,0x11d0,0xa9,0xaa,0x00,0xaa,0x00,0x61,0xbe,0x93,"IID_IKsPropertySet"); - IF_GUID_EQUAL_RETURN(guid,0x4d964ad4,0x5b33,0x11d3,0x8a,0x91,0x00,0xc0,0x4f,0x79,0xeb,0x6d,"IID_ILastResourceManager"); - IF_GUID_EQUAL_RETURN(guid,0xD6B518DD,0x05C7,0x418a,0x89,0xE6,0x4F,0x9C,0xE8,0xC6,0x84,0x1E,"IID_ILogFileItem"); - IF_GUID_EQUAL_RETURN(guid,0x6A2A97E6,0x6851,0x41ea,0x87,0xAD,0x2A,0x82,0x25,0x33,0x58,0x65,"IID_ILogFiles"); - IF_GUID_EQUAL_RETURN(guid,0x8298d101,0xf992,0x43b7,0x8e,0xca,0x50,0x52,0xd8,0x85,0xb9,0x95,"IID_IMSAdminBase2_W"); - IF_GUID_EQUAL_RETURN(guid,0xf612954d,0x3b0b,0x4c56,0x95,0x63,0x22,0x7b,0x7b,0xe6,0x24,0xb4,"IID_IMSAdminBase3_W"); - IF_GUID_EQUAL_RETURN(guid,0xa9e69612,0xb80d,0x11d0,0xb9,0xb9,0x00,0xa0,0xc9,0x22,0xe7,0x50,"IID_IMSAdminBaseSink_W"); - IF_GUID_EQUAL_RETURN(guid,0x70b51430,0xb6ca,0x11d0,0xb9,0xb9,0x00,0xa0,0xc9,0x22,0xe7,0x50,"IID_IMSAdminBase_W"); - IF_GUID_EQUAL_RETURN(guid,0x29ff67ff,0x8050,0x480f,0x9f,0x30,0xcc,0x41,0x63,0x5f,0x2f,0x9d,"IID_IMSImpExpHelp_W"); - IF_GUID_EQUAL_RETURN(guid,0xc3fcc19e,0xa970,0x11d2,0x8b,0x5a,0x00,0xa0,0xc9,0xb7,0xc9,0xc4,"IID_IManagedObject"); - IF_GUID_EQUAL_RETURN(guid,0x6a3ea8b,0x225,0x11d1,0xbf,0x72,0x0,0xc0,0x4f,0xc3,0x1e,0x12,"IID_IMapToken"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b1,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IMediaControl"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b6,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IMediaEvent"); - IF_GUID_EQUAL_RETURN(guid,0x56a868c0,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IMediaEventEx"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b2,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IMediaPosition"); - IF_GUID_EQUAL_RETURN(guid,0x56a868bc,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IMediaTypeInfo"); - IF_GUID_EQUAL_RETURN(guid,0x211ef15b,0x5317,0x4438,0xb1,0x96,0xde,0xc8,0x7b,0x88,0x76,0x93,"IID_IMetaDataAssemblyEmit"); - IF_GUID_EQUAL_RETURN(guid,0xee62470b,0xe94b,0x424e,0x9b,0x7c,0x2f,0x0,0xc9,0x24,0x9f,0x93,"IID_IMetaDataAssemblyImport"); - IF_GUID_EQUAL_RETURN(guid,0x809c652e,0x7396,0x11d2,0x97,0x71,0x00,0xa0,0xc9,0xb4,0xd5,0x0c,"IID_IMetaDataDispenser"); - IF_GUID_EQUAL_RETURN(guid,0x31bcfce2,0xdafb,0x11d2,0x9f,0x81,0x0,0xc0,0x4f,0x79,0xa0,0xa3,"IID_IMetaDataDispenserEx"); - IF_GUID_EQUAL_RETURN(guid,0xf5dd9950,0xf693,0x42e6,0x83,0xe,0x7b,0x83,0x3e,0x81,0x46,0xa9,"IID_IMetaDataEmit2"); - IF_GUID_EQUAL_RETURN(guid,0xba3fee4c,0xecb9,0x4e41,0x83,0xb7,0x18,0x3f,0xa4,0x1c,0xd8,0x59,"IID_IMetaDataEmit"); - IF_GUID_EQUAL_RETURN(guid,0xb81ff171,0x20f3,0x11d2,0x8d,0xcc,0x0,0xa0,0xc9,0xb0,0x9c,0x19,"IID_IMetaDataError"); - IF_GUID_EQUAL_RETURN(guid,0xd0e80dd1,0x12d4,0x11d3,0xb3,0x9d,0x0,0xc0,0x4f,0xf8,0x17,0x95,"IID_IMetaDataFilter"); - IF_GUID_EQUAL_RETURN(guid,0xfce5efa0,0x8bba,0x4f8e,0xa0,0x36,0x8f,0x20,0x22,0xb0,0x84,0x66,"IID_IMetaDataImport2"); - IF_GUID_EQUAL_RETURN(guid,0x7dac8207,0xd3ae,0x4c75,0x9b,0x67,0x92,0x80,0x1a,0x49,0x7d,0x44,"IID_IMetaDataImport"); - IF_GUID_EQUAL_RETURN(guid,0x7998EA64,0x7F95,0x48B8,0x86,0xFC,0x17,0xCA,0xF4,0x8B,0xF5,0xCB,"IID_IMetaDataInfo"); - IF_GUID_EQUAL_RETURN(guid,0xbadb5f70,0x58da,0x43a9,0xa1,0xc6,0xd7,0x48,0x19,0xf1,0x9b,0x15,"IID_IMetaDataTables2"); - IF_GUID_EQUAL_RETURN(guid,0xd8f579ab,0x402d,0x4b8e,0x82,0xd9,0x5d,0x63,0xb1,0x6,0x5c,0x68,"IID_IMetaDataTables"); - IF_GUID_EQUAL_RETURN(guid,0x4709c9c6,0x81ff,0x11d3,0x9f,0xc7,0x0,0xc0,0x4f,0x79,0xa0,0xa3,"IID_IMetaDataValidate"); - IF_GUID_EQUAL_RETURN(guid,0xebf47182,0x8764,0x11d1,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"IID_IMixerPinConfig2"); - IF_GUID_EQUAL_RETURN(guid,0x593cdde1,0x759,0x11d1,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"IID_IMixerPinConfig"); - IF_GUID_EQUAL_RETURN(guid,0xb45dd570,0x3c77,0x11d1,0xab,0xe1,0x00,0xa0,0xc9,0x05,0xf3,0x75,"IID_IMpegAudioDecoder"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA82D,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IMsmDependencies"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA82B,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IMsmDependency"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA828,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IMsmError"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA82A,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IMsmErrors"); - IF_GUID_EQUAL_RETURN(guid,0x7041ae26,0x2d78,0x11d2,0x88,0x8a,0x0,0xa0,0xc9,0x81,0xb0,0x15,"IID_IMsmGetFiles"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA82E,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IMsmMerge"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA827,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"IID_IMsmStrings"); - IF_GUID_EQUAL_RETURN(guid,0x0C0E4080,0x9081,0x11d2,0xBE,0xEC,0x00,0x60,0x08,0x2F,0x20,0x54,"IID_INSNetSourceCreator"); - IF_GUID_EQUAL_RETURN(guid,0x4f528693,0x1035,0x43fe,0xb4,0x28,0x75,0x75,0x61,0xad,0x3a,0x68,"IID_INSSBuffer2"); - IF_GUID_EQUAL_RETURN(guid,0xc87ceaaf,0x75be,0x4bc4,0x84,0xeb,0xac,0x27,0x98,0x50,0x76,0x72,"IID_INSSBuffer3"); - IF_GUID_EQUAL_RETURN(guid,0xb6b8fd5a,0x32e2,0x49d4,0xa9,0x10,0xc2,0x6c,0xc8,0x54,0x65,0xed,"IID_INSSBuffer4"); - IF_GUID_EQUAL_RETURN(guid,0xE1CD3524,0x03D7,0x11d2,0x9E,0xED,0x00,0x60,0x97,0xD2,0xD7,0xCF,"IID_INSSBuffer"); - IF_GUID_EQUAL_RETURN(guid,0xfb700430,0x952c,0x11d1,0x94,0x6f,0x0,0x0,0x0,0x0,0x0,0x0,"IID_INamedPropertyBag"); - IF_GUID_EQUAL_RETURN(guid,0x0A15159D,0x41C7,0x4456,0x93,0xE1,0x28,0x4C,0xD6,0x1D,0x4E,0x8D,"IID_IOPMVideoOutput"); - IF_GUID_EQUAL_RETURN(guid,0x00BB2761L,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62,"IID_IObjMgr"); - IF_GUID_EQUAL_RETURN(guid,0xc460e2b4,0xe199,0x412a,0x84,0x56,0x84,0xdc,0x3e,0x48,0x38,0xc3,"IID_IObjectHandle"); - IF_GUID_EQUAL_RETURN(guid,0xca04b7e6,0xd21,0x11d1,0x8c,0xc5,0x0,0xc0,0x4f,0xc2,0xb0,0x85,"IID_IObjectIdentity"); - IF_GUID_EQUAL_RETURN(guid,0xcb5bdc81,0x93c1,0x11cf,0x8f,0x20,0x0,0x80,0x5f,0x2c,0xd0,0x64,"IID_IObjectSafety"); - IF_GUID_EQUAL_RETURN(guid,0x56a868bd,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IPinInfo"); - IF_GUID_EQUAL_RETURN(guid,0x5FAB2547,0x9779,0x11d1,0xB8,0x86,0x00,0xC0,0x4F,0xB9,0x61,0x8A,"IID_IPrepareInfo2"); - IF_GUID_EQUAL_RETURN(guid,0x80c7bfd0,0x87ee,0x11ce,0x80,0x81,0x00,0x80,0xc7,0x58,0x52,0x7e,"IID_IPrepareInfo"); - IF_GUID_EQUAL_RETURN(guid,0x7def34c1,0x9d92,0x4c99,0xb3,0xb3,0xdb,0x94,0xa9,0xd4,0x19,0x1b,"IID_IPrintAsyncNotifyCallback"); - IF_GUID_EQUAL_RETURN(guid,0x4a5031b1,0x1f3f,0x4db0,0xa4,0x62,0x45,0x30,0xed,0x8b,0x04,0x51,"IID_IPrintAsyncNotifyChannel"); - IF_GUID_EQUAL_RETURN(guid,0x77cf513e,0x5d49,0x4789,0x9f,0x30,0xd0,0x82,0x2b,0x33,0x5c,0x0d,"IID_IPrintAsyncNotifyDataObject"); - IF_GUID_EQUAL_RETURN(guid,0x5852a2c3,0x6530,0x11d1,0xb6,0xa3,0x0,0x0,0xf8,0x75,0x7b,0xf9,"IID_IPrintDialogCallback"); - IF_GUID_EQUAL_RETURN(guid,0x509aaeda,0x5639,0x11d1,0xb6,0xa1,0x0,0x0,0xf8,0x75,0x7b,0xf9,"IID_IPrintDialogServices"); - IF_GUID_EQUAL_RETURN(guid,0xebbc7c04,0x315e,0x11d2,0xb6,0x2f,0x0,0x60,0x97,0xdf,0x5b,0xd4,"IID_IProgressDialog"); - IF_GUID_EQUAL_RETURN(guid,0x10e2414a,0xec59,0x49d2,0xbc,0x51,0x5a,0xdd,0x2c,0x36,0xfe,0xbc,"IID_IProvideRuntimeContext"); - IF_GUID_EQUAL_RETURN(guid,0x4086658aL,0xcbbb,0x11cf,0xb6,0x04,0x00,0xc0,0x4f,0xd8,0xd5,0x65,"IID_IProvideTaskPage"); - IF_GUID_EQUAL_RETURN(guid,0x1bd0ecb0,0xf8e2,0x11ce,0xaa,0xc6,0x00,0x20,0xaf,0x0b,0x99,0xa3,"IID_IQualProp"); - IF_GUID_EQUAL_RETURN(guid,0xc46ca590,0x3c3f,0x11d2,0xbe,0xe6,0x00,0x00,0xf8,0x05,0xca,0x57,"IID_IQueryAssociations"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b7,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IQueueCommand"); - IF_GUID_EQUAL_RETURN(guid,0xE793F6D1,0xF53D,0x11cf,0xA6,0x0D,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IRMHelper"); - IF_GUID_EQUAL_RETURN(guid,0x71EAF260,0x0CE0,0x11D0,0xA5,0x3E,0x00,0xA0,0xC9,0x0C,0x20,0x91,"IID_IReadCookie"); - IF_GUID_EQUAL_RETURN(guid,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IReferenceClock"); - IF_GUID_EQUAL_RETURN(guid,0x56a868bb,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IRegFilterInfo"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA861,0x11cf,0x93,0xAE,0x00,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_IRequest"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA85F,0x11df,0x83,0xAE,0x00,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_IRequestDictionary"); - IF_GUID_EQUAL_RETURN(guid,0xd136c69a,0xf749,0x11d1,0x8f,0x47,0x0,0xc0,0x4f,0x8e,0xe5,0x7d,"IID_IResourceManager2"); - IF_GUID_EQUAL_RETURN(guid,0x3741d21,0x87eb,0x11ce,0x80,0x81,0x00,0x80,0xc7,0x58,0x52,0x7e,"IID_IResourceManager"); - IF_GUID_EQUAL_RETURN(guid,0x6b369c21,0xfbd2,0x11d1,0x8f,0x47,0x0,0xc0,0x4f,0x8e,0xe5,0x7d,"IID_IResourceManagerFactory2"); - IF_GUID_EQUAL_RETURN(guid,0x13741d20,0x87eb,0x11ce,0x80,0x81,0x00,0x80,0xc7,0x58,0x52,0x7e,"IID_IResourceManagerFactory"); - IF_GUID_EQUAL_RETURN(guid,0x0D563181,0xDEFB,0x11ce,0xAE,0xD1,0x00,0xAA,0x00,0x51,0xE2,0xC4,"IID_IResourceManagerSink"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA864,0x11cf,0x83,0xBE,0x00,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_IResponse"); - IF_GUID_EQUAL_RETURN(guid,0xF17324c4,0x68E0,0x11D0,0xAD,0x45,0x00,0xC0,0x4F,0xC2,0x98,0x63,"IID_IRowsetADCExtensions"); - IF_GUID_EQUAL_RETURN(guid,0x0C733A8FL,0x2A1C,0x11CE,0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D,"IID_IRowsetChangeExtInfo"); - IF_GUID_EQUAL_RETURN(guid,0x5cf4ca13,0xef21,0x11d0,0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98,"IID_IRowsetFastLoad"); - IF_GUID_EQUAL_RETURN(guid,0x1e837070,0xbcfc,0x11d1,0x9a,0x2c,0x0,0xa0,0xc9,0x3,0xaa,0x45,"IID_IRowsetProperties"); - IF_GUID_EQUAL_RETURN(guid,0x1be41e60,0x807a,0x11d1,0x9a,0x14,0x0,0xa0,0xc9,0x3,0xaa,0x45,"IID_IRowsetSynchronize"); - IF_GUID_EQUAL_RETURN(guid,0x228972f1,0xb5ff,0x11d0,0x8a,0x80,0x0,0xc0,0x4f,0xd6,0x11,0xcd,"IID_ISQLGetDiagField"); - IF_GUID_EQUAL_RETURN(guid,0x228972f0,0xb5ff,0x11d0,0x8a,0x80,0x0,0xc0,0x4f,0xd6,0x11,0xcd,"IID_ISQLRequestDiagFields"); - IF_GUID_EQUAL_RETURN(guid,0x5cf4ca12,0xef21,0x11d0,0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98,"IID_ISQLServerErrorInfo"); - IF_GUID_EQUAL_RETURN(guid,0xd22a7678L,0xf860,0x40cd,0xa5,0x67,0x15,0x63,0xde,0xb4,0x6d,0x49,"IID_ISQLXMLHelper"); - IF_GUID_EQUAL_RETURN(guid,0xa6b952f0L,0xa4b1,0x11d0,0x99,0x7d,0x00,0xaa,0x00,0x68,0x87,0xec,"IID_IScheduledWorkItem"); - IF_GUID_EQUAL_RETURN(guid,0x4c2389fb,0x2511,0x11d4,0xb2,0x58,0x0,0xc0,0x4f,0x79,0x71,0xce,"IID_ISchemaLock"); - IF_GUID_EQUAL_RETURN(guid,0xaee2a95,0xbcbb,0x11d0,0x8c,0x72,0x0,0xc0,0x4f,0xc2,0xb0,0x85,"IID_IScriptEntry"); - IF_GUID_EQUAL_RETURN(guid,0xaee2a94,0xbcbb,0x11d0,0x8c,0x72,0x0,0xc0,0x4f,0xc2,0xb0,0x85,"IID_IScriptNode"); - IF_GUID_EQUAL_RETURN(guid,0xaee2a96,0xbcbb,0x11d0,0x8c,0x72,0x0,0xc0,0x4f,0xc2,0xb0,0x85,"IID_IScriptScriptlet"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA868,0x11cf,0x83,0xAE,0x00,0xB0,0xC9,0x0C,0x2B,0xD8,"IID_IScriptingContext"); - IF_GUID_EQUAL_RETURN(guid,0x88aee058,0xd4b0,0x4725,0xa2,0xf1,0x81,0x4a,0x67,0xae,0x96,0x4c,"IID_ISearchCompletedCallback"); - IF_GUID_EQUAL_RETURN(guid,0xa700a634,0x2850,0x4c47,0x93,0x8a,0x9e,0x4b,0x6e,0x5a,0xf9,0xa6,"IID_ISearchCompletedCallbackArgs"); - IF_GUID_EQUAL_RETURN(guid,0x7366ea16,0x7a1a,0x4ea2,0xb0,0x42,0x97,0x3d,0x3e,0x9c,0xd9,0x9b,"IID_ISearchJob"); - IF_GUID_EQUAL_RETURN(guid,0xd40cff62,0xe08c,0x4498,0x94,0x1a,0x01,0xe2,0x5f,0x0f,0xd3,0x3c,"IID_ISearchResult"); - IF_GUID_EQUAL_RETURN(guid,0xc3ccfdb4,0x6f88,0x11d2,0xa3,0xce,0x0,0xc0,0x4f,0xb1,0x78,0x2a,"IID_ISecurityInformation2"); - IF_GUID_EQUAL_RETURN(guid,0xe2cdc9cc,0x31bd,0x4f8f,0x8c,0x8b,0xb6,0x41,0xaf,0x51,0x6a,0x1a,"IID_ISecurityInformation3"); - IF_GUID_EQUAL_RETURN(guid,0xea961070,0xcd14,0x4621,0xac,0xe4,0xf6,0x3c,0x3,0xe5,0x83,0xe4,"IID_ISecurityInformation4"); - IF_GUID_EQUAL_RETURN(guid,0x965fc360,0x16ff,0x11d0,0x91,0xcb,0x0,0xaa,0x0,0xbb,0xb7,0x23,"IID_ISecurityInformation"); - IF_GUID_EQUAL_RETURN(guid,0xfc3066eb,0x79ef,0x444b,0x91,0x11,0xd1,0x8a,0x75,0xeb,0xf2,0xfa,"IID_ISecurityObjectTypeInfo"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA867,0x11cf,0x83,0xAE,0x01,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_IServer"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA865,0x11cf,0x83,0xAF,0x00,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_ISessionObject"); - IF_GUID_EQUAL_RETURN(guid,0x93f2f68c,0x1d1b,0x11d3,0xa3,0xe,0x0,0xc0,0x4f,0x79,0xab,0xd1,"IID_IShellFolder2"); - IF_GUID_EQUAL_RETURN(guid,0x4c437b91,0x6e9e,0x11d1,0xa7,0x4,0x0,0x60,0x97,0xc4,0xe4,0x76,"IID_ISpecifyParticularPages"); - IF_GUID_EQUAL_RETURN(guid,0x6CFA5A80L,0x2DC8,0x11D0,0x90,0xEA,0x00,0xAA,0x00,0x60,0xF8,0x6C,"IID_IStiDevice"); - IF_GUID_EQUAL_RETURN(guid,0x128A9860L,0x52DC,0x11D0,0x9E,0xDF,0x44,0x45,0x53,0x54,0x00,0x00,"IID_IStiDeviceControl"); - IF_GUID_EQUAL_RETURN(guid,0x0C9BB460L,0x51AC,0x11D0,0x90,0xEA,0x00,0xAA,0x00,0x60,0xF8,0x6C,"IID_IStiUSD"); - IF_GUID_EQUAL_RETURN(guid,0x641BD880L,0x2DC8,0x11D0,0x90,0xEA,0x00,0xAA,0x00,0x60,0xF8,0x6C,"IID_IStillImageW"); - IF_GUID_EQUAL_RETURN(guid,0xeff90582,0x2ddc,0x480f,0xa0,0x6d,0x60,0xf3,0xfb,0xc3,0x62,0xc3,"IID_IStringCollection"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA85D,0x11cf,0x83,0xAE,0x00,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_IStringList"); - IF_GUID_EQUAL_RETURN(guid,0x74c26041,0x70d1,0x11d1,0xb7,0x5a,0x0,0xa0,0xc9,0x5,0x64,0xfe,"IID_ISynchronizedCallBack"); - IF_GUID_EQUAL_RETURN(guid,0xade87bf7,0x7b56,0x4275,0x8f,0xab,0xb9,0xb0,0xe5,0x91,0x84,0x4b,"IID_ISystemInformation"); - IF_GUID_EQUAL_RETURN(guid,0x08e3206a,0x5fd2,0x4fde,0xa8,0xa5,0x8c,0xb3,0xb6,0x3d,0x26,0x77,"IID_ISystemMonitor2"); - IF_GUID_EQUAL_RETURN(guid,0x194EB241,0xC32C,0x11cf,0x93,0x98,0x00,0xAA,0x00,0xA3,0xDD,0xEA,"IID_ISystemMonitor"); - IF_GUID_EQUAL_RETURN(guid,0xEE660EA0,0x4ABD,0x11cf,0x94,0x3A,0x00,0x80,0x29,0x00,0x43,0x47,"IID_ISystemMonitorEvents"); - IF_GUID_EQUAL_RETURN(guid,0x148BD524L,0xA2AB,0x11CE,0xB1,0x1F,0x00,0xAA,0x00,0x53,0x05,0x03,"IID_ITask"); - IF_GUID_EQUAL_RETURN(guid,0x148BD527L,0xA2AB,0x11CE,0xB1,0x1F,0x00,0xAA,0x00,0x53,0x05,0x03,"IID_ITaskScheduler"); - IF_GUID_EQUAL_RETURN(guid,0x148BD52BL,0xA2AB,0x11CE,0xB1,0x1F,0x00,0xAA,0x00,0x53,0x05,0x03,"IID_ITaskTrigger"); - IF_GUID_EQUAL_RETURN(guid,0x28888fe3,0xc2a0,0x483a,0xa3,0xea,0x8c,0xb1,0xce,0x51,0xff,0x3d,"IID_ITextStoreACP"); - IF_GUID_EQUAL_RETURN(guid,0xA2DE3BC2,0x3D8E,0x11d3,0x81,0xA9,0xF7,0x53,0xFB,0xE6,0x1A,0x00,"IID_ITextStoreACPEx"); - IF_GUID_EQUAL_RETURN(guid,0x22d44c94,0xa419,0x4542,0xa2,0x72,0xae,0x26,0x09,0x3e,0xce,0xcf,"IID_ITextStoreACPSink"); - IF_GUID_EQUAL_RETURN(guid,0x2bdf9464,0x41e2,0x43e3,0x95,0x0c,0xa6,0x86,0x5b,0xa2,0x5c,0xd4,"IID_ITextStoreACPSinkEx"); - IF_GUID_EQUAL_RETURN(guid,0x9b2077b0,0x5f18,0x4dec,0xbe,0xe9,0x3c,0xc7,0x22,0xf5,0xdf,0xe0,"IID_ITextStoreAnchor"); - IF_GUID_EQUAL_RETURN(guid,0xA2DE3BC1,0x3D8E,0x11d3,0x81,0xA9,0xF7,0x53,0xFB,0xE6,0x1A,0x00,"IID_ITextStoreAnchorEx"); - IF_GUID_EQUAL_RETURN(guid,0xaa80e905,0x2021,0x11d2,0x93,0xe0,0x00,0x60,0xb0,0x67,0xb8,0x6e,"IID_ITextStoreAnchorSink"); - IF_GUID_EQUAL_RETURN(guid,0x25642426,0x028d,0x4474,0x97,0x7b,0x11,0x1b,0xb1,0x14,0xfe,0x3e,"IID_ITextStoreSinkAnchorEx"); - IF_GUID_EQUAL_RETURN(guid,0x5731eaa0,0x6bc2,0x4681,0xa5,0x32,0x92,0xfb,0xb7,0x4d,0x7c,0x41,"IID_ITfInputScope2"); - IF_GUID_EQUAL_RETURN(guid,0xfde1eaee,0x6924,0x4cdf,0x91,0xe7,0xda,0x38,0xcf,0xf5,0x55,0x9d,"IID_ITfInputScope"); - IF_GUID_EQUAL_RETURN(guid,0xb5f8fb3b,0x393f,0x4f7c,0x84,0xcb,0x50,0x49,0x24,0xc2,0x70,0x5a,"IID_ITfMSAAControl"); - IF_GUID_EQUAL_RETURN(guid,0x90e9a944,0x9244,0x489f,0xa7,0x8f,0xde,0x67,0xaf,0xc0,0x13,0xa7,"IID_ITfSpeechUIServer"); - IF_GUID_EQUAL_RETURN(guid,0x17cf72d1,0xbac5,0x11d1,0xb1,0xbf,0x0,0xc0,0x4f,0xc2,0xf3,0xef,"IID_ITipHelper"); - IF_GUID_EQUAL_RETURN(guid,0x17cf72d2,0xbac5,0x11d1,0xb1,0xbf,0x0,0xc0,0x4f,0xc2,0xf3,0xef,"IID_ITipPullSink"); - IF_GUID_EQUAL_RETURN(guid,0x17cf72d0,0xbac5,0x11d1,0xb1,0xbf,0x0,0xc0,0x4f,0xc2,0xf3,0xef,"IID_ITipTransaction"); - IF_GUID_EQUAL_RETURN(guid,0x30274F88,0x6EE4,0x474e,0x9B,0x95,0x78,0x07,0xBC,0x9E,0xF8,0xCF,"IID_ITmNodeName"); - IF_GUID_EQUAL_RETURN(guid,0x34021548,0x0065,0x11d3,0xba,0xc1,0x00,0xc0,0x4f,0x79,0x7b,0xe2,"IID_ITransaction2"); - IF_GUID_EQUAL_RETURN(guid,0x0fb15084,0xaf41,0x11ce,0xbd,0x2b,0x20,0x4c,0x4f,0x4f,0x50,0x20,"IID_ITransaction"); - IF_GUID_EQUAL_RETURN(guid,0x02656950,0x2152,0x11d0,0x94,0x4C,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_ITransactionCloner"); - IF_GUID_EQUAL_RETURN(guid,0x3A6AD9E1,0x23B9,0x11cf,0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD,"IID_ITransactionDispenser"); - IF_GUID_EQUAL_RETURN(guid,0x0fb15081,0xaf41,0x11ce,0xbd,0x2b,0x20,0x4c,0x4f,0x4f,0x50,0x20,"IID_ITransactionEnlistmentAsync"); - IF_GUID_EQUAL_RETURN(guid,0x0141fda5,0x8fc0,0x11ce,0xbd,0x18,0x20,0x4c,0x4f,0x4f,0x50,0x20,"IID_ITransactionExport"); - IF_GUID_EQUAL_RETURN(guid,0xE1CF9B53,0x8745,0x11ce,0xA9,0xBA,0x00,0xAA,0x00,0x6C,0x37,0x06,"IID_ITransactionExportFactory"); - IF_GUID_EQUAL_RETURN(guid,0xE1CF9B5A,0x8745,0x11ce,0xA9,0xBA,0x00,0xAA,0x00,0x6C,0x37,0x06,"IID_ITransactionImport"); - IF_GUID_EQUAL_RETURN(guid,0x0141fda4,0x8fc0,0x11ce,0xbd,0x18,0x20,0x4c,0x4f,0x4f,0x50,0x20,"IID_ITransactionImportWhereabouts"); - IF_GUID_EQUAL_RETURN(guid,0xC82BD533,0x5B30,0x11D3,0x8A,0x91,0x00,0xC0,0x4F,0x79,0xEB,0x6D,"IID_ITransactionLastEnlistmentAsync"); - IF_GUID_EQUAL_RETURN(guid,0xC82BD532,0x5B30,0x11D3,0x8A,0x91,0x00,0xC0,0x4F,0x79,0xEB,0x6D,"IID_ITransactionLastResourceAsync"); - IF_GUID_EQUAL_RETURN(guid,0x3A6AD9E0,0x23B9,0x11cf,0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD,"IID_ITransactionOptions"); - IF_GUID_EQUAL_RETURN(guid,0x3A6AD9E2,0x23B9,0x11cf,0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD,"IID_ITransactionOutcomeEvents"); - IF_GUID_EQUAL_RETURN(guid,0x82DC88E1,0xA954,0x11d1,0x8F,0x88,0x00,0x60,0x08,0x95,0xE7,0xD5,"IID_ITransactionPhase0EnlistmentAsync"); - IF_GUID_EQUAL_RETURN(guid,0x82DC88E0,0xA954,0x11d1,0x8F,0x88,0x00,0x60,0x08,0x95,0xE7,0xD5,"IID_ITransactionPhase0Factory"); - IF_GUID_EQUAL_RETURN(guid,0xEF081809,0x0C76,0x11d2,0x87,0xA6,0x00,0xC0,0x4F,0x99,0x0F,0x34,"IID_ITransactionPhase0NotifyAsync"); - IF_GUID_EQUAL_RETURN(guid,0x59313E03,0xB36C,0x11cf,0xA5,0x39,0x00,0xAA,0x00,0x68,0x87,0xC3,"IID_ITransactionReceiver"); - IF_GUID_EQUAL_RETURN(guid,0x59313E02,0xB36C,0x11cf,0xA5,0x39,0x00,0xAA,0x00,0x68,0x87,0xC3,"IID_ITransactionReceiverFactory"); - IF_GUID_EQUAL_RETURN(guid,0xEE5FF7B3,0x4572,0x11d0,0x94,0x52,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_ITransactionResource"); - IF_GUID_EQUAL_RETURN(guid,0x69E971F0,0x23CE,0x11cf,0xAD,0x60,0x00,0xAA,0x00,0xA7,0x4C,0xCD,"IID_ITransactionResourceAsync"); - IF_GUID_EQUAL_RETURN(guid,0x59313E01,0xB36C,0x11cf,0xA5,0x39,0x00,0xAA,0x00,0x68,0x87,0xC3,"IID_ITransactionTransmitter"); - IF_GUID_EQUAL_RETURN(guid,0x59313E00,0xB36C,0x11cf,0xA5,0x39,0x00,0xAA,0x00,0x68,0x87,0xC3,"IID_ITransactionTransmitterFactory"); - IF_GUID_EQUAL_RETURN(guid,0x5433376c,0x414d,0x11d3,0xb2,0x6,0x0,0xc0,0x4f,0xc2,0xf3,0xef,"IID_ITransactionVoterBallotAsync2"); - IF_GUID_EQUAL_RETURN(guid,0x5433376a,0x414d,0x11d3,0xb2,0x6,0x0,0xc0,0x4f,0xc2,0xf3,0xef,"IID_ITransactionVoterFactory2"); - IF_GUID_EQUAL_RETURN(guid,0x5433376b,0x414d,0x11d3,0xb2,0x6,0x0,0xc0,0x4f,0xc2,0xf3,0xef,"IID_ITransactionVoterNotifyAsync2"); - IF_GUID_EQUAL_RETURN(guid,0x1dc9ca50,0x6ef,0x11d2,0x84,0x15,0x00,0x60,0x08,0xc3,0xfb,0xfc,"IID_ITridentEventSink"); - IF_GUID_EQUAL_RETURN(guid,0x8F026EDB,0x785E,0x4470,0xA8,0xE1,0xB4,0xE8,0x4E,0x9D,0x17,0x79,"IID_ITypeLibResolver"); - IF_GUID_EQUAL_RETURN(guid,0xB81FF171,0x20F3,0x11d2,0x8d,0xcc,0x00,0xa0,0xc9,0xb0,0x05,0x22,"IID_ITypeName"); - IF_GUID_EQUAL_RETURN(guid,0xB81FF171,0x20F3,0x11d2,0x8d,0xcc,0x00,0xa0,0xc9,0xb0,0x05,0x23,"IID_ITypeNameBuilder"); - IF_GUID_EQUAL_RETURN(guid,0xB81FF171,0x20F3,0x11d2,0x8d,0xcc,0x00,0xa0,0xc9,0xb0,0x05,0x21,"IID_ITypeNameFactory"); - IF_GUID_EQUAL_RETURN(guid,0x5cf4ca14,0xef21,0x11d0,0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98,"IID_IUMSInitialize"); - IF_GUID_EQUAL_RETURN(guid,0x144fe9b0,0xd23d,0x4a8b,0x86,0x34,0xfb,0x44,0x57,0x53,0x3b,0x7a,"IID_IUpdate2"); - IF_GUID_EQUAL_RETURN(guid,0x112EDA6B,0x95B3,0x476F,0x9D,0x90,0xAE,0xE8,0x2C,0x6B,0x81,0x81,"IID_IUpdate3"); - IF_GUID_EQUAL_RETURN(guid,0x27e94b0d,0x5139,0x49a2,0x9a,0x61,0x93,0x52,0x2d,0xc5,0x46,0x52,"IID_IUpdate4"); - IF_GUID_EQUAL_RETURN(guid,0xc1c2f21a,0xd2f4,0x4902,0xb5,0xc6,0x8a,0x08,0x1c,0x19,0xa8,0x90,"IID_IUpdate5"); - IF_GUID_EQUAL_RETURN(guid,0x6a92b07a,0xd821,0x4682,0xb4,0x23,0x5c,0x80,0x50,0x22,0xcc,0x4d,"IID_IUpdate"); - IF_GUID_EQUAL_RETURN(guid,0x07f7438c,0x7709,0x4ca5,0xb5,0x18,0x91,0x27,0x92,0x88,0x13,0x4e,"IID_IUpdateCollection"); - IF_GUID_EQUAL_RETURN(guid,0xc97ad11b,0xf257,0x420b,0x9d,0x9f,0x37,0x7f,0x73,0x3f,0x6f,0x68,"IID_IUpdateDownloadContent2"); - IF_GUID_EQUAL_RETURN(guid,0x54a2cb2d,0x9a0c,0x48b6,0x8a,0x50,0x9a,0xbb,0x69,0xee,0x2d,0x02,"IID_IUpdateDownloadContent"); - IF_GUID_EQUAL_RETURN(guid,0xbc5513c8,0xb3b8,0x4bf7,0xa4,0xd4,0x36,0x1c,0x0d,0x8c,0x88,0xba,"IID_IUpdateDownloadContentCollection"); - IF_GUID_EQUAL_RETURN(guid,0xbf99af76,0xb575,0x42ad,0x8a,0xa4,0x33,0xcb,0xb5,0x47,0x7a,0xf1,"IID_IUpdateDownloadResult"); - IF_GUID_EQUAL_RETURN(guid,0x68f1c6f9,0x7ecc,0x4666,0xa4,0x64,0x24,0x7f,0xe1,0x24,0x96,0xc3,"IID_IUpdateDownloader"); - IF_GUID_EQUAL_RETURN(guid,0xa376dd5e,0x09d4,0x427f,0xaf,0x7c,0xfe,0xd5,0xb6,0xe1,0xc1,0xd6,"IID_IUpdateException"); - IF_GUID_EQUAL_RETURN(guid,0x503626a3,0x8e14,0x4729,0x93,0x55,0x0f,0xe6,0x64,0xbd,0x23,0x21,"IID_IUpdateExceptionCollection"); - IF_GUID_EQUAL_RETURN(guid,0xc2bfb780,0x4539,0x4132,0xab,0x8c,0x0a,0x87,0x72,0x01,0x3a,0xb6,"IID_IUpdateHistoryEntry2"); - IF_GUID_EQUAL_RETURN(guid,0xbe56a644,0xaf0e,0x4e0e,0xa3,0x11,0xc1,0xd8,0xe6,0x95,0xcb,0xff,"IID_IUpdateHistoryEntry"); - IF_GUID_EQUAL_RETURN(guid,0xa7f04f3c,0xa290,0x435b,0xaa,0xdf,0xa1,0x16,0xc3,0x35,0x7a,0x5c,"IID_IUpdateHistoryEntryCollection"); - IF_GUID_EQUAL_RETURN(guid,0x46297823,0x9940,0x4c09,0xae,0xd9,0xcd,0x3e,0xa6,0xd0,0x59,0x68,"IID_IUpdateIdentity"); - IF_GUID_EQUAL_RETURN(guid,0xa0385420,0x62b8,0x11d1,0x9a,0x6,0x0,0xa0,0xc9,0x3,0xaa,0x45,"IID_IUpdateInfo"); - IF_GUID_EQUAL_RETURN(guid,0xd940f0f8,0x3cbb,0x4fd0,0x99,0x3f,0x47,0x1e,0x7f,0x23,0x28,0xad,"IID_IUpdateInstallationResult"); - IF_GUID_EQUAL_RETURN(guid,0x3442d4fe,0x224d,0x4cee,0x98,0xcf,0x30,0xe0,0xc4,0xd2,0x29,0xe6,"IID_IUpdateInstaller2"); - IF_GUID_EQUAL_RETURN(guid,0x7b929c68,0xccdc,0x4226,0x96,0xb1,0x87,0x24,0x60,0x0b,0x54,0xc2,"IID_IUpdateInstaller"); - IF_GUID_EQUAL_RETURN(guid,0xa976c28d,0x75a1,0x42aa,0x94,0xae,0x8a,0xf8,0xb8,0x72,0x08,0x9a,"IID_IUpdateLockdown"); - IF_GUID_EQUAL_RETURN(guid,0x4cbdcb2d,0x1589,0x4beb,0xbd,0x1c,0x3e,0x58,0x2f,0xf0,0xad,0xd0,"IID_IUpdateSearcher2"); - IF_GUID_EQUAL_RETURN(guid,0x4c6895d,0xeaf2,0x4034,0x97,0xf3,0x31,0x1d,0xe9,0xbe,0x41,0x3a,"IID_IUpdateSearcher3"); - IF_GUID_EQUAL_RETURN(guid,0x8f45abf1,0xf9ae,0x4b95,0xa9,0x33,0xf0,0xf6,0x6e,0x50,0x56,0xea,"IID_IUpdateSearcher"); - IF_GUID_EQUAL_RETURN(guid,0x1518b460,0x6518,0x4172,0x94,0x0f,0xc7,0x58,0x83,0xb2,0x4c,0xeb,"IID_IUpdateService2"); - IF_GUID_EQUAL_RETURN(guid,0x76b3b17e,0xaed6,0x4da5,0x85,0xf0,0x83,0x58,0x7f,0x81,0xab,0xe3,"IID_IUpdateService"); - IF_GUID_EQUAL_RETURN(guid,0x9b0353aa,0x0e52,0x44ff,0xb8,0xb0,0x1f,0x7f,0xa0,0x43,0x7f,0x88,"IID_IUpdateServiceCollection"); - IF_GUID_EQUAL_RETURN(guid,0x0BB8531D,0x7E8D,0x424F,0x98,0x6C,0xA0,0xB8,0xF6,0x0A,0x3E,0x7B,"IID_IUpdateServiceManager2"); - IF_GUID_EQUAL_RETURN(guid,0x23857E3C,0x02BA,0x44A3,0x94,0x23,0xB1,0xC9,0x00,0x80,0x5F,0x37,"IID_IUpdateServiceManager"); - IF_GUID_EQUAL_RETURN(guid,0xdde02280,0x12b3,0x4e0b,0x93,0x7b,0x67,0x47,0xf6,0xac,0xb2,0x86,"IID_IUpdateServiceRegistration"); - IF_GUID_EQUAL_RETURN(guid,0x91caf7b0,0xeb23,0x49ed,0x99,0x37,0xc5,0x2d,0x81,0x7f,0x46,0xf7,"IID_IUpdateSession2"); - IF_GUID_EQUAL_RETURN(guid,0x918efd1e,0xb5d8,0x4c90,0x85,0x40,0xae,0xb9,0xbd,0xc5,0x6f,0x9d,"IID_IUpdateSession3"); - IF_GUID_EQUAL_RETURN(guid,0x816858a4,0x260d,0x4260,0x93,0x3a,0x25,0x85,0xf1,0xab,0xc7,0x6b,"IID_IUpdateSession"); - IF_GUID_EQUAL_RETURN(guid,0x9849FD60L,0x3768,0x101B,0x8D,0x72,0xAE,0x61,0x64,0xFF,0xE3,0xCF,"IID_IVBFormat"); - IF_GUID_EQUAL_RETURN(guid,0x40A050A0L,0x3C31,0x101B,0xA8,0x2E,0x08,0x00,0x2B,0x2B,0x23,0x37,"IID_IVBGetControl"); - IF_GUID_EQUAL_RETURN(guid,0xbc29a660,0x30e3,0x11d0,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"IID_IVPConfig"); - IF_GUID_EQUAL_RETURN(guid,0x25df12c1,0x3de0,0x11d1,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"IID_IVPControl"); - IF_GUID_EQUAL_RETURN(guid,0xebf47183,0x8764,0x11d1,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"IID_IVPNotify2"); - IF_GUID_EQUAL_RETURN(guid,0xc76794a1,0xd6c5,0x11d0,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"IID_IVPNotify"); - IF_GUID_EQUAL_RETURN(guid,0xce292862,0xfc88,0x11d0,0x9e,0x69,0x0,0xc0,0x4f,0xd7,0xc1,0x5b,"IID_IVPObject"); - IF_GUID_EQUAL_RETURN(guid,0xec529b00,0x1a1f,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"IID_IVPVBIConfig"); - IF_GUID_EQUAL_RETURN(guid,0xec529b01,0x1a1f,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"IID_IVPVBINotify"); - IF_GUID_EQUAL_RETURN(guid,0x814b9802,0x1c88,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"IID_IVPVBIObject"); - IF_GUID_EQUAL_RETURN(guid,0xe482e5c6,0xe31e,0x4143,0xa2,0xe6,0xdb,0xc3,0xd8,0xe4,0xb8,0xd3,"IID_IValidate"); - IF_GUID_EQUAL_RETURN(guid,0xa6ef9862,0xc720,0x11d0,0x93,0x37,0x0,0xa0,0xc9,0xd,0xca,0xa9,"IID_IVariantChangeType"); - IF_GUID_EQUAL_RETURN(guid,0x4a7deb90,0xb069,0x11d0,0xb3,0x73,0x00,0xa0,0xc9,0x0c,0x2b,0xd8,"IID_IVariantDictionary"); - IF_GUID_EQUAL_RETURN(guid,0x401518EC,0xDB00,0x4611,0x9B,0x29,0x2A,0x0E,0x4B,0x9A,0xFA,0x85,"IID_IVersionInfo"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b4,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"IID_IVideoWindow"); - IF_GUID_EQUAL_RETURN(guid,0x65a83fc2,0x3e98,0x4d4d,0x81,0xb5,0x2a,0x74,0x28,0x86,0xb3,0x3d,"IID_IWMAddressAccess2"); - IF_GUID_EQUAL_RETURN(guid,0xBB3C6389,0x1633,0x4e92,0xAF,0x14,0x9F,0x31,0x73,0xBA,0x39,0xD0,"IID_IWMAddressAccess"); - IF_GUID_EQUAL_RETURN(guid,0xd9b67d36,0xa9ad,0x4eb4,0xba,0xef,0xdb,0x28,0x4e,0xf5,0x50,0x4c,"IID_IWMAuthorizer"); - IF_GUID_EQUAL_RETURN(guid,0x3C8E0DA6,0x996F,0x4ff3,0xA1,0xAF,0x48,0x38,0xF9,0x37,0x7e,0x2e,"IID_IWMBackupRestoreProps"); - IF_GUID_EQUAL_RETURN(guid,0xad694af1,0xf8d9,0x42f8,0xbc,0x47,0x70,0x31,0x1b,0x0c,0x4f,0x9e,"IID_IWMBandwidthSharing"); - IF_GUID_EQUAL_RETURN(guid,0x4091571e,0x4701,0x4593,0xbb,0x3d,0xd5,0xf5,0xf0,0xc7,0x42,0x46,"IID_IWMClientConnections2"); - IF_GUID_EQUAL_RETURN(guid,0x73c66010,0xa299,0x41df,0xb1,0xf0,0xcc,0xf0,0x3b,0x09,0xc1,0xc6,"IID_IWMClientConnections"); - IF_GUID_EQUAL_RETURN(guid,0xd98ee251,0x34e0,0x4a2d,0x93,0x12,0x9b,0x4c,0x78,0x8d,0x9f,0xa1,"IID_IWMCodecAMVideoAccelerator"); - IF_GUID_EQUAL_RETURN(guid,0xaa65e273,0xb686,0x4056,0x91,0xec,0xdd,0x76,0x8d,0x4d,0xf7,0x10,"IID_IWMCodecInfo2"); - IF_GUID_EQUAL_RETURN(guid,0x7e51f487,0x4d93,0x4f98,0x8a,0xb4,0x27,0xd0,0x56,0x5a,0xdc,0x51,"IID_IWMCodecInfo3"); - IF_GUID_EQUAL_RETURN(guid,0xa970f41e,0x34de,0x4a98,0xb3,0xba,0xe4,0xb3,0xca,0x75,0x28,0xf0,"IID_IWMCodecInfo"); - IF_GUID_EQUAL_RETURN(guid,0x990641b0,0x739f,0x4e94,0xa8,0x08,0x98,0x88,0xda,0x8f,0x75,0xaf,"IID_IWMCodecVideoAccelerator"); - IF_GUID_EQUAL_RETURN(guid,0x342e0eb7,0xe651,0x450c,0x97,0x5b,0x2a,0xce,0x2c,0x90,0xc4,0x8e,"IID_IWMCredentialCallback"); - IF_GUID_EQUAL_RETURN(guid,0xFF130EBC,0xA6C3,0x42A6,0xB4,0x01,0xC3,0x38,0x2C,0x3E,0x08,0xB3,"IID_IWMDRMEditor"); - IF_GUID_EQUAL_RETURN(guid,0xa73a0072,0x25a0,0x4c99,0xb4,0xa5,0xed,0xe8,0x10,0x1a,0x6c,0x39,"IID_IWMDRMMessageParser"); - IF_GUID_EQUAL_RETURN(guid,0xbefe7a75,0x9f1d,0x4075,0xb9,0xd9,0xa3,0xc3,0x7b,0xda,0x49,0xa0,"IID_IWMDRMReader2"); - IF_GUID_EQUAL_RETURN(guid,0xe08672de,0xf1e7,0x4ff4,0xa0,0xa3,0xfc,0x4b,0x08,0xe4,0xca,0xf8,"IID_IWMDRMReader3"); - IF_GUID_EQUAL_RETURN(guid,0xd2827540,0x3ee7,0x432c,0xb1,0x4c,0xdc,0x17,0xf0,0x85,0xd3,0xb3,"IID_IWMDRMReader"); - IF_GUID_EQUAL_RETURN(guid,0xb1a887b2,0xa4f0,0x407a,0xb0,0x2e,0xef,0xbd,0x23,0xbb,0xec,0xdf,"IID_IWMDRMTranscryptionManager"); - IF_GUID_EQUAL_RETURN(guid,0xe0da439f,0xd331,0x496a,0xbe,0xce,0x18,0xe5,0xba,0xc5,0xdd,0x23,"IID_IWMDRMTranscryptor2"); - IF_GUID_EQUAL_RETURN(guid,0x69059850,0x6e6f,0x4bb2,0x80,0x6f,0x71,0x86,0x3d,0xdf,0xc4,0x71,"IID_IWMDRMTranscryptor"); - IF_GUID_EQUAL_RETURN(guid,0x38ee7a94,0x40e2,0x4e10,0xaa,0x3f,0x33,0xfd,0x32,0x10,0xed,0x5b,"IID_IWMDRMWriter2"); - IF_GUID_EQUAL_RETURN(guid,0xa7184082,0xa4aa,0x4dde,0xac,0x9c,0xe7,0x5d,0xbd,0x11,0x17,0xce,"IID_IWMDRMWriter3"); - IF_GUID_EQUAL_RETURN(guid,0xd6ea5dd0,0x12a0,0x43f4,0x90,0xab,0xa3,0xfd,0x45,0x1e,0x6a,0x07,"IID_IWMDRMWriter"); - IF_GUID_EQUAL_RETURN(guid,0xf6211f03,0x8d21,0x4e94,0x93,0xe6,0x85,0x10,0x80,0x5f,0x2d,0x99,"IID_IWMDeviceRegistration"); - IF_GUID_EQUAL_RETURN(guid,0x94bc0598,0xc3d2,0x11d3,0xbe,0xdf,0x00,0xc0,0x4f,0x61,0x29,0x86,"IID_IWMGetSecureChannel"); - IF_GUID_EQUAL_RETURN(guid,0x15cf9781,0x454e,0x482e,0xb3,0x93,0x85,0xfa,0xe4,0x87,0xa8,0x10,"IID_IWMHeaderInfo2"); - IF_GUID_EQUAL_RETURN(guid,0x15CC68E3,0x27CC,0x4ecd,0xB2,0x22,0x3F,0x5D,0x02,0xD8,0x0B,0xD5,"IID_IWMHeaderInfo3"); - IF_GUID_EQUAL_RETURN(guid,0x96406bda,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMHeaderInfo"); - IF_GUID_EQUAL_RETURN(guid,0x6816dad3,0x2b4b,0x4c8e,0x81,0x49,0x87,0x4c,0x34,0x83,0xa7,0x53,"IID_IWMIStreamProps"); - IF_GUID_EQUAL_RETURN(guid,0x9f0aa3b6,0x7267,0x4d89,0x88,0xf2,0xba,0x91,0x5a,0xa5,0xc4,0xc6,"IID_IWMImageInfo"); - IF_GUID_EQUAL_RETURN(guid,0xb70f1e42,0x6255,0x4df0,0xa6,0xb9,0x02,0xb2,0x12,0xd9,0xe2,0xbb,"IID_IWMIndexer2"); - IF_GUID_EQUAL_RETURN(guid,0x6d7cdc71,0x9888,0x11d3,0x8e,0xdc,0x00,0xc0,0x4f,0x61,0x09,0xcf,"IID_IWMIndexer"); - IF_GUID_EQUAL_RETURN(guid,0x96406bd5,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMInputMediaProps"); - IF_GUID_EQUAL_RETURN(guid,0xdf683f00,0x2d49,0x4d8e,0x92,0xb7,0xfb,0x19,0xf6,0xa0,0xdc,0x57,"IID_IWMLanguageList"); - IF_GUID_EQUAL_RETURN(guid,0x05E5AC9F,0x3FB6,0x4508,0xBB,0x43,0xA4,0x06,0x7B,0xA1,0xEB,0xE8,"IID_IWMLicenseBackup"); - IF_GUID_EQUAL_RETURN(guid,0xC70B6334,0xa22e,0x4efb,0xA2,0x45,0x15,0xE6,0x5A,0x00,0x4A,0x13,"IID_IWMLicenseRestore"); - IF_GUID_EQUAL_RETURN(guid,0x6967f2c9,0x4e26,0x4b57,0x88,0x94,0x79,0x98,0x80,0xf7,0xac,0x7b,"IID_IWMLicenseRevocationAgent"); - IF_GUID_EQUAL_RETURN(guid,0x96406bce,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMMediaProps"); - IF_GUID_EQUAL_RETURN(guid,0x203cffe3,0x2e18,0x4fdf,0xb5,0x9d,0x6e,0x71,0x53,0x05,0x34,0xcf,"IID_IWMMetadataEditor2"); - IF_GUID_EQUAL_RETURN(guid,0x96406bd9,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMMetadataEditor"); - IF_GUID_EQUAL_RETURN(guid,0x302b57d,0x89d1,0x4ba2,0x85,0xc9,0x16,0x6f,0x2c,0x53,0xeb,0x91,"IID_IWMMutualExclusion2"); - IF_GUID_EQUAL_RETURN(guid,0x96406bde,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMMutualExclusion"); - IF_GUID_EQUAL_RETURN(guid,0x96406bd7,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMOutputMediaProps"); - IF_GUID_EQUAL_RETURN(guid,0x8bfc2b9e,0xb646,0x4233,0xa8,0x77,0x1c,0x6a,0x7,0x96,0x69,0xdc,"IID_IWMPacketSize2"); - IF_GUID_EQUAL_RETURN(guid,0xcdfb97ab,0x188f,0x40b3,0xb6,0x43,0x5b,0x79,0x03,0x97,0x5c,0x59,"IID_IWMPacketSize"); - IF_GUID_EQUAL_RETURN(guid,0xe5b7ca9a,0x0f1c,0x4f66,0x90,0x02,0x74,0xec,0x50,0xd8,0xb3,0x04,"IID_IWMPlayerHook"); - IF_GUID_EQUAL_RETURN(guid,0x28580dda,0xd98e,0x48d0,0xb7,0xae,0x69,0xe4,0x73,0xa0,0x28,0x25,"IID_IWMPlayerTimestampHook"); - IF_GUID_EQUAL_RETURN(guid,0x07e72d33,0xd94e,0x4be7,0x88,0x43,0x60,0xae,0x5f,0xf7,0xe5,0xf5,"IID_IWMProfile2"); - IF_GUID_EQUAL_RETURN(guid,0x00ef96cc,0xa461,0x4546,0x8b,0xcd,0xc9,0xa2,0x8f,0x0e,0x06,0xf5,"IID_IWMProfile3"); - IF_GUID_EQUAL_RETURN(guid,0x96406bdb,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMProfile"); - IF_GUID_EQUAL_RETURN(guid,0x7a924e51,0x73c1,0x494d,0x80,0x19,0x23,0xd3,0x7e,0xd9,0xb8,0x9a,"IID_IWMProfileManager2"); - IF_GUID_EQUAL_RETURN(guid,0xd16679f2,0x6ca0,0x472d,0x8d,0x31,0x2f,0x5d,0x55,0xae,0xe1,0x55,"IID_IWMProfileManager"); - IF_GUID_EQUAL_RETURN(guid,0xba4dcc78,0x7ee0,0x4ab8,0xb2,0x7a,0xdb,0xce,0x8b,0xc5,0x14,0x54,"IID_IWMProfileManagerLanguage"); - IF_GUID_EQUAL_RETURN(guid,0x72995A79,0x5090,0x42a4,0x9C,0x8C,0xD9,0xD0,0xB6,0xD3,0x4B,0xE5,"IID_IWMPropertyVault"); - IF_GUID_EQUAL_RETURN(guid,0x6A9FD8EE,0xB651,0x4bf0,0xB8,0x49,0x7D,0x4E,0xCE,0x79,0xA2,0xB1,"IID_IWMProximityDetection"); - IF_GUID_EQUAL_RETURN(guid,0x96406bd6,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMReader"); - IF_GUID_EQUAL_RETURN(guid,0xbddc4d08,0x944d,0x4d52,0xa6,0x12,0x46,0xc3,0xfd,0xa0,0x7d,0xd4,"IID_IWMReaderAccelerator"); - IF_GUID_EQUAL_RETURN(guid,0xae14a945,0xb90c,0x4d0d,0x91,0x27,0x80,0xd6,0x65,0xf7,0xd7,0x3e,"IID_IWMReaderAdvanced2"); - IF_GUID_EQUAL_RETURN(guid,0x5dc0674b,0xf04b,0x4a4e,0x9f,0x2a,0xb1,0xaf,0xde,0x2c,0x81,0x00,"IID_IWMReaderAdvanced3"); - IF_GUID_EQUAL_RETURN(guid,0x945a76a2,0x12ae,0x4d48,0xbd,0x3c,0xcd,0x1d,0x90,0x39,0x9b,0x85,"IID_IWMReaderAdvanced4"); - IF_GUID_EQUAL_RETURN(guid,0x24c44db0,0x55d1,0x49ae,0xa5,0xcc,0xf1,0x38,0x15,0xe3,0x63,0x63,"IID_IWMReaderAdvanced5"); - IF_GUID_EQUAL_RETURN(guid,0x18a2e7f8,0x428f,0x4acd,0x8a,0x00,0xe6,0x46,0x39,0xbc,0x93,0xde,"IID_IWMReaderAdvanced6"); - IF_GUID_EQUAL_RETURN(guid,0x96406bea,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMReaderAdvanced"); - IF_GUID_EQUAL_RETURN(guid,0x9f762fa7,0xa22e,0x428d,0x93,0xc9,0xac,0x82,0xf3,0xaa,0xfe,0x5a,"IID_IWMReaderAllocatorEx"); - IF_GUID_EQUAL_RETURN(guid,0x96406bd8,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMReaderCallback"); - IF_GUID_EQUAL_RETURN(guid,0x96406beb,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMReaderCallbackAdvanced"); - IF_GUID_EQUAL_RETURN(guid,0xd979a853,0x042b,0x4050,0x83,0x87,0xc9,0x39,0xdb,0x22,0x01,0x3f,"IID_IWMReaderNetworkConfig2"); - IF_GUID_EQUAL_RETURN(guid,0x96406bec,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMReaderNetworkConfig"); - IF_GUID_EQUAL_RETURN(guid,0xf28c0300,0x9baa,0x4477,0xa8,0x46,0x17,0x44,0xd9,0xcb,0xf5,0x33,"IID_IWMReaderPlaylistBurn"); - IF_GUID_EQUAL_RETURN(guid,0x96406bed,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMReaderStreamClock"); - IF_GUID_EQUAL_RETURN(guid,0xf369e2f0,0xe081,0x4fe6,0x84,0x50,0xb8,0x10,0xb2,0xf4,0x10,0xd1,"IID_IWMReaderTimecode"); - IF_GUID_EQUAL_RETURN(guid,0xfdbe5592,0x81a1,0x41ea,0x93,0xbd,0x73,0x5c,0xad,0x1a,0xdc,0x5,"IID_IWMReaderTypeNegotiation"); - IF_GUID_EQUAL_RETURN(guid,0xcf4b1f99,0x4de2,0x4e49,0xa3,0x63,0x25,0x27,0x40,0xd9,0x9b,0xc1,"IID_IWMRegisterCallback"); - IF_GUID_EQUAL_RETURN(guid,0xa4503bec,0x5508,0x4148,0x97,0xac,0xbf,0xa7,0x57,0x60,0xa7,0x0d,"IID_IWMRegisteredDevice"); - IF_GUID_EQUAL_RETURN(guid,0xE1CD3524,0x03D7,0x11d2,0x9E,0xED,0x00,0x60,0x97,0xD2,0xD7,0xCF,"IID_IWMSBuffer"); - IF_GUID_EQUAL_RETURN(guid,0x61103CA4,0x2033,0x11d2,0x9E,0xF1,0x00,0x60,0x97,0xD2,0xD7,0xCF,"IID_IWMSBufferAllocator"); - IF_GUID_EQUAL_RETURN(guid,0xE74D58C3,0xCF77,0x4b51,0xAF,0x17,0x74,0x46,0x87,0xC4,0x3E,0xAE,"IID_IWMSInternalAdminNetSource2"); - IF_GUID_EQUAL_RETURN(guid,0x6b63d08e,0x4590,0x44af,0x9e,0xb3,0x57,0xff,0x1e,0x73,0xbf,0x80,"IID_IWMSInternalAdminNetSource3"); - IF_GUID_EQUAL_RETURN(guid,0x8BB23E5F,0xD127,0x4afb,0x8D,0x02,0xAE,0x5B,0x66,0xD5,0x4C,0x78,"IID_IWMSInternalAdminNetSource"); - IF_GUID_EQUAL_RETURN(guid,0x2720598a,0xd0f2,0x4189,0xbd,0x10,0x91,0xc4,0x6e,0xf0,0x93,0x6f,"IID_IWMSecureChannel"); - IF_GUID_EQUAL_RETURN(guid,0x6d7cdc70,0x9888,0x11d3,0x8e,0xdc,0x00,0xc0,0x4f,0x61,0x09,0xcf,"IID_IWMStatusCallback"); - IF_GUID_EQUAL_RETURN(guid,0x7688d8cb,0xfc0d,0x43bd,0x94,0x59,0x5a,0x8d,0xec,0x20,0x0c,0xfa,"IID_IWMStreamConfig2"); - IF_GUID_EQUAL_RETURN(guid,0xcb164104,0x3aa9,0x45a7,0x9a,0xc9,0x4d,0xae,0xe1,0x31,0xd6,0xe1,"IID_IWMStreamConfig3"); - IF_GUID_EQUAL_RETURN(guid,0x96406bdc,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMStreamConfig"); - IF_GUID_EQUAL_RETURN(guid,0x96406bdd,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMStreamList"); - IF_GUID_EQUAL_RETURN(guid,0x8c1c6090,0xf9a8,0x4748,0x8e,0xc3,0xdd,0x11,0x08,0xba,0x1e,0x77,"IID_IWMStreamPrioritization"); - IF_GUID_EQUAL_RETURN(guid,0xfaed3d21,0x1b6b,0x4af7,0x8c,0xb6,0x3e,0x18,0x9b,0xbc,0x18,0x7b,"IID_IWMSyncReader2"); - IF_GUID_EQUAL_RETURN(guid,0x9397f121,0x7705,0x4dc9,0xb0,0x49,0x98,0xb6,0x98,0x18,0x84,0x14,"IID_IWMSyncReader"); - IF_GUID_EQUAL_RETURN(guid,0x96406bcf,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMVideoMediaProps"); - IF_GUID_EQUAL_RETURN(guid,0x6f497062,0xf2e2,0x4624,0x8e,0xa7,0x9d,0xd4,0x0d,0x81,0xfc,0x8d,"IID_IWMWatermarkInfo"); - IF_GUID_EQUAL_RETURN(guid,0x96406bd4,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMWriter"); - IF_GUID_EQUAL_RETURN(guid,0x962dc1ec,0xc046,0x4db8,0x9c,0xc7,0x26,0xce,0xae,0x50,0x08,0x17,"IID_IWMWriterAdvanced2"); - IF_GUID_EQUAL_RETURN(guid,0x2cd6492d,0x7c37,0x4e76,0x9d,0x3b,0x59,0x26,0x11,0x83,0xa2,0x2e,"IID_IWMWriterAdvanced3"); - IF_GUID_EQUAL_RETURN(guid,0x96406be3,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMWriterAdvanced"); - IF_GUID_EQUAL_RETURN(guid,0x14282ba7,0x4aef,0x4205,0x8c,0xe5,0xc2,0x29,0x03,0x5a,0x05,0xbc,"IID_IWMWriterFileSink2"); - IF_GUID_EQUAL_RETURN(guid,0x3fea4feb,0x2945,0x47a7,0xa1,0xdd,0xc5,0x3a,0x8f,0xc4,0xc4,0x5c,"IID_IWMWriterFileSink3"); - IF_GUID_EQUAL_RETURN(guid,0x96406be5,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMWriterFileSink"); - IF_GUID_EQUAL_RETURN(guid,0x96406be7,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMWriterNetworkSink"); - IF_GUID_EQUAL_RETURN(guid,0x81e20ce4,0x75ef,0x491a,0x80,0x04,0xfc,0x53,0xc4,0x5b,0xdc,0x3e,"IID_IWMWriterPostView"); - IF_GUID_EQUAL_RETURN(guid,0xd9d6549d,0xa193,0x4f24,0xb3,0x08,0x03,0x12,0x3d,0x9b,0x7f,0x8d,"IID_IWMWriterPostViewCallback"); - IF_GUID_EQUAL_RETURN(guid,0xfc54a285,0x38c4,0x45b5,0xaa,0x23,0x85,0xb9,0xf7,0xcb,0x42,0x4b,"IID_IWMWriterPreprocess"); - IF_GUID_EQUAL_RETURN(guid,0xdc10e6a5,0x072c,0x467d,0xbf,0x57,0x63,0x30,0xa9,0xdd,0xe1,0x2a,"IID_IWMWriterPushSink"); - IF_GUID_EQUAL_RETURN(guid,0x96406be4,0x2b2b,0x11d3,0xb3,0x6b,0x00,0xc0,0x4f,0x61,0x08,0xff,"IID_IWMWriterSink"); - IF_GUID_EQUAL_RETURN(guid,0x29822AB8,0xF302,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1,"IID_IWamAdmin2"); - IF_GUID_EQUAL_RETURN(guid,0x29822AB7,0xF302,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1,"IID_IWamAdmin"); - IF_GUID_EQUAL_RETURN(guid,0x174c81fe,0xaecd,0x4dae,0xb8,0xa0,0x2c,0x63,0x18,0xdd,0x86,0xa8,"IID_IWebProxy"); - IF_GUID_EQUAL_RETURN(guid,0x615c4269,0x7a48,0x43bd,0x96,0xb7,0xbf,0x6c,0xa2,0x7d,0x6c,0x3e,"IID_IWindowsDriverUpdate2"); - IF_GUID_EQUAL_RETURN(guid,0x49EBD502,0x4A96,0x41BD,0x9E,0x3E,0x4C,0x50,0x57,0xF4,0x25,0x0C,"IID_IWindowsDriverUpdate3"); - IF_GUID_EQUAL_RETURN(guid,0x004C6A2B,0x0C19,0x4c69,0x9F,0x5C,0xA2,0x69,0xB2,0x56,0x0D,0xB9,"IID_IWindowsDriverUpdate4"); - IF_GUID_EQUAL_RETURN(guid,0x70CF5C82,0x8642,0x42bb,0x9d,0xbc,0x0c,0xfd,0x26,0x3c,0x6c,0x4f,"IID_IWindowsDriverUpdate5"); - IF_GUID_EQUAL_RETURN(guid,0xb383cd1a,0x5ce9,0x4504,0x9f,0x63,0x76,0x4b,0x12,0x36,0xf1,0x91,"IID_IWindowsDriverUpdate"); - IF_GUID_EQUAL_RETURN(guid,0xED8BFE40,0xA60B,0x42ea,0x96,0x52,0x81,0x7D,0xFC,0xFA,0x23,0xEC,"IID_IWindowsDriverUpdateEntry"); - IF_GUID_EQUAL_RETURN(guid,0x0D521700,0xA372,0x4bef,0x82,0x8B,0x3D,0x00,0xC1,0x0A,0xDE,0xBD,"IID_IWindowsDriverUpdateEntryCollection"); - IF_GUID_EQUAL_RETURN(guid,0x85713FA1,0x7796,0x4FA2,0xBE,0x3B,0xE2,0xD6,0x12,0x4D,0xD3,0x73,"IID_IWindowsUpdateAgentInfo"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA862,0x11cf,0x84,0xAE,0x00,0xA0,0xC9,0x0C,0x2B,0xD8,"IID_IWriteCookie"); - IF_GUID_EQUAL_RETURN(guid,0xC8A6E3A1,0x9A8C,0x11cf,0xA3,0x08,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IXAConfig"); - IF_GUID_EQUAL_RETURN(guid,0xE793F6D2,0xF53D,0x11cf,0xA6,0x0D,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IXAObtainRMInfo"); - IF_GUID_EQUAL_RETURN(guid,0x4131E751,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IXAResourceManager"); - IF_GUID_EQUAL_RETURN(guid,0x4131E750,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IXAResourceManagerFactory"); - IF_GUID_EQUAL_RETURN(guid,0xbf193c85,0xd1a,0x4290,0xb8,0x8f,0xd2,0xcb,0x88,0x73,0xd1,0xe7,"IID_IXATransLookup2"); - IF_GUID_EQUAL_RETURN(guid,0xF3B1F131,0xEEDA,0x11ce,0xAE,0xD4,0x00,0xAA,0x00,0x51,0xE2,0xC4,"IID_IXATransLookup"); - IF_GUID_EQUAL_RETURN(guid,0x4131E752,0x1AEA,0x11d0,0x94,0x4B,0x00,0xA0,0xC9,0x05,0x41,0x6E,"IID_IXATransaction"); - IF_GUID_EQUAL_RETURN(guid,0xde1a6b74,0x9182,0x4c41,0x8e,0x2c,0x24,0xc2,0xcd,0x30,0xee,0x83,"IID__ICounterItemUnion"); - IF_GUID_EQUAL_RETURN(guid,0xc8a77338,0x265f,0x4de5,0xaa,0x25,0xc7,0xda,0x1c,0xe5,0xa8,0xf4,"IID__ISystemMonitorUnion"); - IF_GUID_EQUAL_RETURN(guid,0x38c682a6,0x9731,0x43f2,0x9f,0xae,0xe9,0x01,0xe6,0x41,0xb1,0x01,"IIS_ControlAccessible"); - IF_GUID_EQUAL_RETURN(guid,0x902697fa,0x80e4,0x4560,0x80,0x2a,0xa1,0x3f,0x22,0xa6,0x47,0x09,"IIS_IsOleaccProxy"); - IF_GUID_EQUAL_RETURN(guid,0xA198529B,0x730F,0x4089,0xB6,0x46,0xA1,0x25,0x57,0xF5,0x66,0x5E,"Identity_LocalUserProvider"); - IF_GUID_EQUAL_RETURN(guid,0x2d3736e4,0x6b16,0x4c57,0xa9,0x62,0xf9,0x32,0x60,0xa7,0x52,0x43,"Image_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7f36c367,0x7b18,0x417c,0x97,0xe3,0x9d,0x58,0xdd,0xc9,0x44,0xab,"InputDiscarded_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xed201d8a,0x4e6c,0x415e,0xa8,0x74,0x24,0x60,0xc9,0xb6,0x6b,0xa8,"InputReachedOtherElement_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x93ed549a,0x0549,0x40f0,0xbe,0xdb,0x28,0xe4,0x4f,0x7d,0xe2,0xa3,"InputReachedTarget_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdfd699f0,0xc915,0x49dd,0xb4,0x22,0xdd,0xe7,0x85,0xc3,0xd2,0x4b,"Invoke_Invoked_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd976c2fc,0x66ea,0x4a6e,0xb2,0x8f,0xc2,0x4c,0x75,0x46,0xad,0x37,"Invoke_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x0b5b3238,0x6d5c,0x41b6,0xbc,0xc4,0x5e,0x80,0x7f,0x65,0x51,0xc4,"IsAnnotationPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4bda64a8,0xf5d8,0x480b,0x81,0x55,0xef,0x2e,0x89,0xad,0xb6,0x72,"IsContentElement_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x95f35085,0xabcc,0x4afd,0xa5,0xf4,0xdb,0xb4,0x6c,0x23,0x0f,0xdb,"IsControlElement_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x445ac684,0xc3fc,0x4dd9,0xac,0xf8,0x84,0x5a,0x57,0x92,0x96,0xba,"IsDataValidForForm_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2600a4c4,0x2ff8,0x4c96,0xae,0x31,0x8f,0xe6,0x19,0xa1,0x3c,0x6c,"IsDockPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe997a7b7,0x1d39,0x4ca7,0xbe,0xf,0x27,0x7f,0xcf,0x56,0x5,0xcc,"IsDragPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x686b62e,0x8e19,0x4aaf,0x87,0x3d,0x38,0x4f,0x6d,0x3b,0x92,0xbe,"IsDropTargetPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2109427f,0xda60,0x4fed,0xbf,0x1b,0x26,0x4b,0xdc,0xe6,0xeb,0x3a,"IsEnabled_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x929d3806,0x5287,0x4725,0xaa,0x16,0x22,0x2a,0xfc,0x63,0xd5,0x95,"IsExpandCollapsePatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5a43e524,0xf9a2,0x4b12,0x84,0xc8,0xb4,0x8a,0x3e,0xfe,0xdd,0x34,"IsGridItemPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5622c26c,0xf0ef,0x4f3b,0x97,0xcb,0x71,0x4c,0x08,0x68,0x58,0x8b,"IsGridPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4e725738,0x8364,0x4679,0xaa,0x6c,0xf3,0xf4,0x19,0x31,0xf7,0x50,"IsInvokePatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x624b5ca7,0xfe40,0x4957,0xa0,0x19,0x20,0xc4,0xcf,0x11,0x92,0x0f,"IsItemContainerPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf7b8552a,0x0859,0x4b37,0xb9,0xcb,0x51,0xe7,0x20,0x92,0xf2,0x9f,"IsKeyboardFocusable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd8ebd0c7,0x929a,0x4ee7,0x8d,0x3a,0xd3,0xd9,0x44,0x13,0x02,0x7b,"IsLegacyIAccessiblePatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xff0a31eb,0x8e25,0x469d,0x8d,0x6e,0xe7,0x71,0xa2,0x7c,0x1b,0x90,"IsMultipleViewPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6b21d89b,0x2841,0x412f,0x8e,0xf2,0x15,0xca,0x95,0x23,0x18,0xba,"IsObjectModelPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x03c3d160,0xdb79,0x42db,0xa2,0xef,0x1c,0x23,0x1e,0xed,0xe5,0x07,"IsOffscreen_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe8482eb1,0x687c,0x497b,0xbe,0xbc,0x03,0xbe,0x53,0xec,0x14,0x54,"IsPassword_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xfda4244a,0xeb4d,0x43ff,0xb5,0xad,0xed,0x36,0xd3,0x73,0xec,0x4c,"IsRangeValuePatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4f5f43cf,0x59fb,0x4bde,0xa2,0x70,0x60,0x2e,0x5e,0x11,0x41,0xe9,"IsRequiredForForm_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x1cad1a05,0x0927,0x4b76,0x97,0xe1,0x0f,0xcd,0xb2,0x09,0xb9,0x8a,"IsScrollItemPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3ebb7b4a,0x828a,0x4b57,0x9d,0x22,0x2f,0xea,0x16,0x32,0xed,0x0d,"IsScrollPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8becd62d,0x0bc3,0x4109,0xbe,0xe2,0x8e,0x67,0x15,0x29,0x0e,0x68,"IsSelectionItemPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf588acbe,0xc769,0x4838,0x9a,0x60,0x26,0x86,0xdc,0x11,0x88,0xc4,"IsSelectionPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9fe79b2a,0x2f94,0x43fd,0x99,0x6b,0x54,0x9e,0x31,0x6f,0x4a,0xcd,"IsSpreadsheetItemPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6ff43732,0xe4b4,0x4555,0x97,0xbc,0xec,0xdb,0xbc,0x4d,0x18,0x88,"IsSpreadsheetPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x27f353d3,0x459c,0x4b59,0xa4,0x90,0x50,0x61,0x1d,0xac,0xaf,0xb5,"IsStylesPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x75d69cc5,0xd2bf,0x4943,0x87,0x6e,0xb4,0x5b,0x62,0xa6,0xcc,0x66,"IsSynchronizedInputPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xeb36b40d,0x8ea4,0x489b,0xa0,0x13,0xe6,0x0d,0x59,0x51,0xfe,0x34,"IsTableItemPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xcb83575f,0x45c2,0x4048,0x9c,0x76,0x15,0x97,0x15,0xa1,0x39,0xdf,"IsTablePatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x559e65df,0x30ff,0x43b5,0xb5,0xed,0x5b,0x28,0x3b,0x80,0xc7,0xe9,"IsTextChildPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x41cf921d,0xe3f1,0x4b22,0x9c,0x81,0xe1,0xc3,0xed,0x33,0x1c,0x22,"IsTextPattern2Available_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xfbe2d69d,0xaff6,0x4a45,0x82,0xe2,0xfc,0x92,0xa8,0x2f,0x59,0x17,"IsTextPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x78686d53,0xfcd0,0x4b83,0x9b,0x78,0x58,0x32,0xce,0x63,0xbb,0x5b,"IsTogglePatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x25980b4b,0xbe04,0x4710,0xab,0x4a,0xfd,0xa3,0x1d,0xbd,0x28,0x95,"IsTransformPattern2Available_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa7f78804,0xd68b,0x4077,0xa5,0xc6,0x7a,0x5e,0xa1,0xac,0x31,0xc5,"IsTransformPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x0b5020a7,0x2119,0x473b,0xbe,0x37,0x5c,0xeb,0x98,0xbb,0xfb,0x22,"IsValuePatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x302cb151,0x2ac8,0x45d6,0x97,0x7b,0xd2,0xb3,0xa5,0xa5,0x3f,0x20,"IsVirtualizedItemPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe7a57bb1,0x5888,0x4155,0x98,0xdc,0xb4,0x22,0xfd,0x57,0xf2,0xbc,"IsWindowPatternAvailable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3d13da0f,0x8b9a,0x4a99,0x85,0xfa,0xc5,0xc9,0xa6,0x9f,0x1e,0xd4,"ItemContainer_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xabbf5c45,0x5ccc,0x47b7,0xbb,0x4e,0x87,0xcb,0x87,0xbb,0xd1,0x62,"ItemCount_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x92a053da,0x2969,0x4021,0xbf,0x27,0x51,0x4c,0xfc,0x2e,0x4a,0x69,"ItemIndex_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x51de0321,0x3973,0x43e7,0x89,0x13,0x0b,0x08,0xe8,0x13,0xc3,0x7f,"ItemStatus_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xcdda434d,0x6222,0x413b,0xa6,0x8a,0x32,0x5d,0xd1,0xd4,0x0f,0x39,"ItemType_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x1a82f8bc,0x3f8b,0x11d2,0xb7,0x74,0x00,0x60,0x08,0x33,0x16,0xc1,"KSDATAFORMAT_SUBTYPE_DIRECTMUSIC"); - IF_GUID_EQUAL_RETURN(guid,0x1D262760L,0xE957,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00,"KSDATAFORMAT_SUBTYPE_MIDI"); - IF_GUID_EQUAL_RETURN(guid,0xD97A6DA0,0xA85C,0x11cf,0x83,0xAE,0x00,0xA0,0xC9,0x0C,0x2B,0xD8,"LIBID_ASPTypeLibrary"); - IF_GUID_EQUAL_RETURN(guid,0x1ea4dbf0,0x3c3b,0x11cf,0x81,0x0c,0x00,0xaa,0x00,0x38,0x9b,0x71,"LIBID_Accessibility"); - IF_GUID_EQUAL_RETURN(guid,0xbed7f4ea,0x1a96,0x11d2,0x8f,0x8,0x0,0xa0,0xc9,0xa6,0x18,0x6d,"LIBID_ComPlusRuntime"); - IF_GUID_EQUAL_RETURN(guid,0xE8FB8614,0x588F,0x11d2,0x9d,0x61,0x0,0xc0,0x4f,0x79,0xc5,0xfe,"LIBID_IISRSTALib"); - IF_GUID_EQUAL_RETURN(guid,0x150E2D7A,0xDAC1,0x4582,0x94,0x7D,0x2A,0x8F,0xD7,0x8B,0x82,0xCD,"LIBID_MSAATEXTLib"); - IF_GUID_EQUAL_RETURN(guid,0x0ADDA82F,0x2C26,0x11D2,0xAD,0x65,0x00,0xA0,0xC9,0xAF,0x11,0xA6,"LIBID_MsmMergeTypeLib"); - IF_GUID_EQUAL_RETURN(guid,0x56a868b0,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70,"LIBID_QuartzTypeLib"); - IF_GUID_EQUAL_RETURN(guid,0x1B773E42,0x2509,0x11cf,0x94,0x2F,0x00,0x80,0x29,0x00,0x43,0x47,"LIBID_SystemMonitor"); - IF_GUID_EQUAL_RETURN(guid,0x942f35c2,0xe83b,0x45ef,0xb0,0x85,0xac,0x29,0x5d,0xd6,0x3d,0x5b,"LIBID_UIRibbon"); - IF_GUID_EQUAL_RETURN(guid,0x29822AA8,0xF302,0x11D0,0x99,0x53,0x00,0xC0,0x4F,0xD9,0x19,0xC1,"LIBID_WAMREGLib"); - IF_GUID_EQUAL_RETURN(guid,0xB596CC9F,0x56E5,0x419E,0xA6,0x22,0xE0,0x1B,0xB4,0x57,0x43,0x1E,"LIBID_WUApiLib"); - IF_GUID_EQUAL_RETURN(guid,0x5477469e,0x83b1,0x11d2,0x8b,0x49,0x00,0xa0,0xc9,0xb7,0xc9,0xc4,"LIBID_mscoree"); - IF_GUID_EQUAL_RETURN(guid,0xac798be1,0x98e3,0x11d1,0xb3,0xf1,0x0,0xaa,0x0,0x37,0x61,0xc5,"LOOK_DOWNSTREAM_ONLY"); - IF_GUID_EQUAL_RETURN(guid,0xac798be0,0x98e3,0x11d1,0xb3,0xf1,0x0,0xaa,0x0,0x37,0x61,0xc5,"LOOK_UPSTREAM_ONLY"); - IF_GUID_EQUAL_RETURN(guid,0xe5b8924b,0xfc8a,0x4a35,0x80,0x31,0xcf,0x78,0xac,0x43,0xe5,0x5e,"LabeledBy_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xed7d6544,0xa6bd,0x4595,0x9b,0xae,0x3d,0x28,0x94,0x6c,0xc7,0x15,"LayoutInvalidated_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9a191b5d,0x9ef2,0x4787,0xa4,0x59,0xdc,0xde,0x88,0x5d,0xd4,0xe8,"LegacyIAccessible_ChildId_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3b331729,0xeaad,0x4502,0xb8,0x5f,0x92,0x61,0x56,0x22,0x91,0x3c,"LegacyIAccessible_DefaultAction_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x46448418,0x7d70,0x4ea9,0x9d,0x27,0xb7,0xe7,0x75,0xcf,0x2a,0xd7,"LegacyIAccessible_Description_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x94402352,0x161c,0x4b77,0xa9,0x8d,0xa8,0x72,0xcc,0x33,0x94,0x7a,"LegacyIAccessible_Help_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8f6909ac,0x00b8,0x4259,0xa4,0x1c,0x96,0x62,0x66,0xd4,0x3a,0x8a,"LegacyIAccessible_KeyboardShortcut_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xcaeb063d,0x40ae,0x4869,0xaa,0x5a,0x1b,0x8e,0x5d,0x66,0x67,0x39,"LegacyIAccessible_Name_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x54cc0a9f,0x3395,0x48af,0xba,0x8d,0x73,0xf8,0x56,0x90,0xf3,0xe0,"LegacyIAccessible_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6856e59f,0xcbaf,0x4e31,0x93,0xe8,0xbc,0xbf,0x6f,0x7e,0x49,0x1c,"LegacyIAccessible_Role_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8aa8b1e0,0x0891,0x40cc,0x8b,0x06,0x90,0xd7,0xd4,0x16,0x62,0x19,"LegacyIAccessible_Selection_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdf985854,0x2281,0x4340,0xab,0x9c,0xc6,0x0e,0x2c,0x58,0x03,0xf6,"LegacyIAccessible_State_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb5c5b0b6,0x8217,0x4a77,0x97,0xa5,0x19,0x0a,0x85,0xed,0x01,0x56,"LegacyIAccessible_Value_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7b3717f2,0x44d1,0x4a58,0x98,0xa8,0xf1,0x2a,0x9b,0x8f,0x78,0xe2,"ListItem_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9b149ee1,0x7cca,0x4cfc,0x9a,0xf1,0xca,0xc7,0xbd,0xdd,0x30,0x31,"List_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x102d5e90,0xe6a9,0x41b6,0xb1,0xc5,0xa9,0xb1,0x92,0x9d,0x95,0x10,"LiveRegionChanged_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc12bcd8e,0x2a8e,0x4950,0x8a,0xe7,0x36,0x25,0x11,0x1d,0x58,0xeb,"LiveSetting_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8763404f,0xa1bd,0x452a,0x89,0xc4,0x3f,0x01,0xd3,0x83,0x38,0x06,"LocalizedControlType_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x659FCAE6,0x5BDB,0x4DA9,0xB1,0xFF,0xCA,0x2A,0x17,0x8D,0x46,0xE0,"MACHINE_POLICY_PRESENT_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4F303234,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_420O"); - IF_GUID_EQUAL_RETURN(guid,0xaf414bc,0x4ed2,0x445e,0x98,0x39,0x8f,0x9,0x55,0x68,0xab,0x3c,"MEDIASUBTYPE_708_608Data"); - IF_GUID_EQUAL_RETURN(guid,0x576f7893,0xbdf6,0x48c4,0x87,0x5f,0xae,0x7b,0x81,0x83,0x45,0x67,"MEDIASUBTYPE_A2B10G10R10"); - IF_GUID_EQUAL_RETURN(guid,0x2f8bb76d,0xb644,0x4550,0xac,0xf3,0xd3,0x0c,0xaa,0x65,0xd5,0xc5,"MEDIASUBTYPE_A2R10G10B10"); - IF_GUID_EQUAL_RETURN(guid,0x34344941,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_AI44"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb8d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_AIFF"); - IF_GUID_EQUAL_RETURN(guid,0x297c55af,0xe209,0x4cb3,0xb7,0x57,0xc7,0x6d,0x6b,0x9c,0x88,0xa8,"MEDIASUBTYPE_ARGB1555"); - IF_GUID_EQUAL_RETURN(guid,0x35314137,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_ARGB1555_D3D_DX7_RT"); - IF_GUID_EQUAL_RETURN(guid,0x35314139,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_ARGB1555_D3D_DX9_RT"); - IF_GUID_EQUAL_RETURN(guid,0x773c9ac0,0x3274,0x11d0,0xb7,0x24,0x0,0xaa,0x0,0x6c,0x1a,0x1,"MEDIASUBTYPE_ARGB32"); - IF_GUID_EQUAL_RETURN(guid,0x38384137,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_ARGB32_D3D_DX7_RT"); - IF_GUID_EQUAL_RETURN(guid,0x38384139,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_ARGB32_D3D_DX9_RT"); - IF_GUID_EQUAL_RETURN(guid,0x6e6415e6,0x5c24,0x425f,0x93,0xcd,0x80,0x10,0x2b,0x3d,0x1c,0xca,"MEDIASUBTYPE_ARGB4444"); - IF_GUID_EQUAL_RETURN(guid,0x34344137,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_ARGB4444_D3D_DX7_RT"); - IF_GUID_EQUAL_RETURN(guid,0x34344139,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_ARGB4444_D3D_DX9_RT"); - IF_GUID_EQUAL_RETURN(guid,0xb3c7397c,0xd303,0x414d,0xb3,0x3c,0x4e,0xd2,0xc9,0xd2,0x97,0x33,"MEDIASUBTYPE_ATSC_SI"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb8c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_AU"); - IF_GUID_EQUAL_RETURN(guid,0x31435641,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_AVC1"); - IF_GUID_EQUAL_RETURN(guid,0x56555941,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_AYUV"); - IF_GUID_EQUAL_RETURN(guid,0x482dde2,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_NTSC_M"); - IF_GUID_EQUAL_RETURN(guid,0x482dde5,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_B"); - IF_GUID_EQUAL_RETURN(guid,0x482dde6,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_D"); - IF_GUID_EQUAL_RETURN(guid,0x482dde7,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_G"); - IF_GUID_EQUAL_RETURN(guid,0x482dde8,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_H"); - IF_GUID_EQUAL_RETURN(guid,0x482dde9,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_I"); - IF_GUID_EQUAL_RETURN(guid,0x482ddea,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_M"); - IF_GUID_EQUAL_RETURN(guid,0x482ddeb,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_N"); - IF_GUID_EQUAL_RETURN(guid,0x482ddec,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_PAL_N_COMBO"); - IF_GUID_EQUAL_RETURN(guid,0x482ddf0,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_SECAM_B"); - IF_GUID_EQUAL_RETURN(guid,0x482ddf1,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_SECAM_D"); - IF_GUID_EQUAL_RETURN(guid,0x482ddf2,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_SECAM_G"); - IF_GUID_EQUAL_RETURN(guid,0x482ddf3,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_SECAM_H"); - IF_GUID_EQUAL_RETURN(guid,0x482ddf5,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_SECAM_K1"); - IF_GUID_EQUAL_RETURN(guid,0x482ddf4,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_SECAM_K"); - IF_GUID_EQUAL_RETURN(guid,0x482ddf6,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIASUBTYPE_AnalogVideo_SECAM_L"); - IF_GUID_EQUAL_RETURN(guid,0x3db80f90,0x9412,0x11d1,0xad,0xed,0x0,0x0,0xf8,0x75,0x4b,0x99,"MEDIASUBTYPE_Asf"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb88,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_Avi"); - IF_GUID_EQUAL_RETURN(guid,0x7ea626db,0x54da,0x437b,0xbe,0x9f,0xf7,0x30,0x73,0xad,0xfa,0x3c,"MEDIASUBTYPE_CC_CONTAINER"); - IF_GUID_EQUAL_RETURN(guid,0x43434643,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_CFCC"); - IF_GUID_EQUAL_RETURN(guid,0x524a4c43,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_CLJR"); - IF_GUID_EQUAL_RETURN(guid,0x4C504C43,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_CLPL"); - IF_GUID_EQUAL_RETURN(guid,0x46adbd28,0x6fd0,0x4796,0x93,0xb2,0x15,0x5c,0x51,0xdc,0x4,0x8d,"MEDIASUBTYPE_CPFilters_Processed"); - IF_GUID_EQUAL_RETURN(guid,0x414c5043,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_CPLA"); - IF_GUID_EQUAL_RETURN(guid,0xe06d802c,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_DOLBY_AC3"); - IF_GUID_EQUAL_RETURN(guid,0x00000092,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_DOLBY_AC3_SPDIF"); - IF_GUID_EQUAL_RETURN(guid,0xa7fb87af,0x2d02,0x42fb,0xa4,0xd4,0x5,0xcd,0x93,0x84,0x3b,0xdd,"MEDIASUBTYPE_DOLBY_DDPLUS"); - IF_GUID_EQUAL_RETURN(guid,0xeb27cec4,0x163e,0x4ca3,0x8b,0x74,0x8e,0x25,0xf9,0x1b,0x51,0x7e,"MEDIASUBTYPE_DOLBY_TRUEHD"); - IF_GUID_EQUAL_RETURN(guid,0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_DRM_Audio"); - IF_GUID_EQUAL_RETURN(guid,0x00002001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_DTS2"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8033,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_DTS"); - IF_GUID_EQUAL_RETURN(guid,0xa2e58eb7,0xfa9,0x48bb,0xa4,0xc,0xfa,0xe,0x15,0x6d,0x6,0x45,"MEDIASUBTYPE_DTS_HD"); - IF_GUID_EQUAL_RETURN(guid,0xe9dd31a3,0x221d,0x4adb,0x85,0x32,0x9a,0xf3,0x9,0xc1,0xa4,0x8,"MEDIASUBTYPE_DVB_SI"); - IF_GUID_EQUAL_RETURN(guid,0x34FFCBC3,0xD5B3,0x4171,0x90,0x02,0xD4,0xC6,0x03,0x01,0x69,0x7F,"MEDIASUBTYPE_DVB_SUBTITLES"); - IF_GUID_EQUAL_RETURN(guid,0x53435644,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_DVCS"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8032,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_DVD_LPCM_AUDIO"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8030,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_DVD_NAVIGATION_DSI"); - IF_GUID_EQUAL_RETURN(guid,0xe06d802f,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_DVD_NAVIGATION_PCI"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8031,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER"); - IF_GUID_EQUAL_RETURN(guid,0xe06d802d,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_DVD_SUBPICTURE"); - IF_GUID_EQUAL_RETURN(guid,0x00002000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_DVM"); - IF_GUID_EQUAL_RETURN(guid,0x44535644,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_DVSD"); - IF_GUID_EQUAL_RETURN(guid,0xa0af4f82,0xe163,0x11d0,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"MEDIASUBTYPE_DssAudio"); - IF_GUID_EQUAL_RETURN(guid,0xa0af4f81,0xe163,0x11d0,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"MEDIASUBTYPE_DssVideo"); - IF_GUID_EQUAL_RETURN(guid,0xF52ADDAA,0x36F0,0x43F5,0x95,0xEA,0x6D,0x86,0x64,0x84,0x26,0x2A,"MEDIASUBTYPE_DtvCcData"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4D0,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"MEDIASUBTYPE_ETDTFilter_Tagged"); - IF_GUID_EQUAL_RETURN(guid,0x34363248,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_H264"); - IF_GUID_EQUAL_RETURN(guid,0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_I420"); - IF_GUID_EQUAL_RETURN(guid,0x34344149,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IA44"); - IF_GUID_EQUAL_RETURN(guid,0x00000003,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IEEE_FLOAT"); - IF_GUID_EQUAL_RETURN(guid,0x39304649,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IF09"); - IF_GUID_EQUAL_RETURN(guid,0x47504A49,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IJPG"); - IF_GUID_EQUAL_RETURN(guid,0x31434D49,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IMC1"); - IF_GUID_EQUAL_RETURN(guid,0x32434D49,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IMC2"); - IF_GUID_EQUAL_RETURN(guid,0x33434D49,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IMC3"); - IF_GUID_EQUAL_RETURN(guid,0x34434D49,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IMC4"); - IF_GUID_EQUAL_RETURN(guid,0x059dd67d,0x2e55,0x4d41,0x8d,0x1b,0x01,0xf5,0xe4,0xf5,0x06,0x07,"MEDIASUBTYPE_ISDB_CAPTIONS"); - IF_GUID_EQUAL_RETURN(guid,0xe89ad298,0x3601,0x4b06,0xaa,0xec,0x9d,0xde,0xed,0xcc,0x5b,0xd0,"MEDIASUBTYPE_ISDB_SI"); - IF_GUID_EQUAL_RETURN(guid,0x36dc6d28,0xf1a6,0x4216,0x90,0x48,0x9c,0xfc,0xef,0xeb,0x5e,0xba,"MEDIASUBTYPE_ISDB_SUPERIMPOSE"); - IF_GUID_EQUAL_RETURN(guid,0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_IYUV"); - IF_GUID_EQUAL_RETURN(guid,0x6e8d4a22,0x310c,0x11d0,0xb7,0x9a,0x0,0xaa,0x0,0x37,0x67,0xa7,"MEDIASUBTYPE_Line21_BytePair"); - IF_GUID_EQUAL_RETURN(guid,0x6e8d4a23,0x310c,0x11d0,0xb7,0x9a,0x0,0xaa,0x0,0x37,0x67,0xa7,"MEDIASUBTYPE_Line21_GOPPacket"); - IF_GUID_EQUAL_RETURN(guid,0x6e8d4a24,0x310c,0x11d0,0xb7,0x9a,0x0,0xaa,0x0,0x37,0x67,0xa7,"MEDIASUBTYPE_Line21_VBIRawData"); - IF_GUID_EQUAL_RETURN(guid,0x3253344D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_M4S2"); - IF_GUID_EQUAL_RETURN(guid,0x4656444D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MDVF"); - IF_GUID_EQUAL_RETURN(guid,0x47504A4D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MJPG"); - IF_GUID_EQUAL_RETURN(guid,0x3234504D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MP42"); - IF_GUID_EQUAL_RETURN(guid,0x3334504D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MP43"); - IF_GUID_EQUAL_RETURN(guid,0x5334504D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MP4S"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb87,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_MPEG1Audio"); - IF_GUID_EQUAL_RETURN(guid,0x00000050,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"MEDIASUBTYPE_MPEG1AudioPayload"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb80,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_MPEG1Packet"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb81,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_MPEG1Payload"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb84,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_MPEG1System"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb86,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_MPEG1Video"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb85,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_MPEG1VideoCD"); - IF_GUID_EQUAL_RETURN(guid,0xc892e55b,0x252d,0x42b5,0xa3,0x16,0xd9,0x97,0xe7,0xa5,0xd9,0x95,"MEDIASUBTYPE_MPEG2DATA"); - IF_GUID_EQUAL_RETURN(guid,0xe06d802b,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_MPEG2_AUDIO"); - IF_GUID_EQUAL_RETURN(guid,0xaf748dd4,0xd80,0x11db,0x97,0x5,0x0,0x50,0x56,0xc0,0x0,0x8,"MEDIASUBTYPE_MPEG2_PBDA_TRANSPORT_PROCESSED"); - IF_GUID_EQUAL_RETURN(guid,0x0d7aed42,0xcb9a,0x11db,0x97,0x5,0x0,0x50,0x56,0xc0,0x0,0x8,"MEDIASUBTYPE_MPEG2_PBDA_TRANSPORT_RAW"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8022,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_MPEG2_PROGRAM"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8023,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_MPEG2_TRANSPORT"); - IF_GUID_EQUAL_RETURN(guid,0x138aa9a4,0x1ee2,0x4c5b,0x98,0x8e,0x19,0xab,0xfd,0xbc,0x8a,0x11,"MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE"); - IF_GUID_EQUAL_RETURN(guid,0x18BEC4EA,0x4676,0x450e,0xB4,0x78,0x0C,0xD8,0x4C,0x54,0xB3,0x27,"MEDIASUBTYPE_MPEG2_UDCR_TRANSPORT"); - IF_GUID_EQUAL_RETURN(guid,0x1ed988b0,0x3ffc,0x4523,0x87,0x25,0x34,0x7b,0xee,0xc1,0xa8,0xa0,"MEDIASUBTYPE_MPEG2_VERSIONED_TABLES"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea,"MEDIASUBTYPE_MPEG2_VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x18BEC4EA,0x4676,0x450e,0xB4,0x78,0x0C,0xD8,0x4C,0x54,0xB3,0x27,"MEDIASUBTYPE_MPEG2_WMDRM_TRANSPORT"); - IF_GUID_EQUAL_RETURN(guid,0x00001600,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MPEG_ADTS_AAC"); - IF_GUID_EQUAL_RETURN(guid,0x00001610,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MPEG_HEAAC"); - IF_GUID_EQUAL_RETURN(guid,0x00001602,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MPEG_LOAS"); - IF_GUID_EQUAL_RETURN(guid,0x00001601,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MPEG_RAW_AAC"); - IF_GUID_EQUAL_RETURN(guid,0x3447504D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MPG4"); - IF_GUID_EQUAL_RETURN(guid,0x00000160,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MSAUDIO1"); - IF_GUID_EQUAL_RETURN(guid,0x3153534D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MSS1"); - IF_GUID_EQUAL_RETURN(guid,0x3253534D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_MSS2"); - IF_GUID_EQUAL_RETURN(guid,0x00001608,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_NOKIA_MPEG_ADTS_AAC"); - IF_GUID_EQUAL_RETURN(guid,0x00001609,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_NOKIA_MPEG_RAW_AAC"); - IF_GUID_EQUAL_RETURN(guid,0x3131564E,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_NV11"); - IF_GUID_EQUAL_RETURN(guid,0x3231564E,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_NV12"); - IF_GUID_EQUAL_RETURN(guid,0x3432564E,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_NV24"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb8e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_None"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7f,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_Overlay"); - IF_GUID_EQUAL_RETURN(guid,'010P',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_P010"); - IF_GUID_EQUAL_RETURN(guid,'610P',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_P016"); - IF_GUID_EQUAL_RETURN(guid,'802P',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_P208"); - IF_GUID_EQUAL_RETURN(guid,'012P',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_P210"); - IF_GUID_EQUAL_RETURN(guid,'612P',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_P216"); - IF_GUID_EQUAL_RETURN(guid,'804P',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_P408"); - IF_GUID_EQUAL_RETURN(guid,0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"MEDIASUBTYPE_PCM"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb8a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_PCMAudio_Obsolete"); - IF_GUID_EQUAL_RETURN(guid,0x6D756C50,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Plum"); - IF_GUID_EQUAL_RETURN(guid,0x6765706a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_QTJpeg"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb89,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_QTMovie"); - IF_GUID_EQUAL_RETURN(guid,0x20656c72,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_QTRle"); - IF_GUID_EQUAL_RETURN(guid,0x617a7072,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_QTRpza"); - IF_GUID_EQUAL_RETURN(guid,0x20636d73,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_QTSmc"); - IF_GUID_EQUAL_RETURN(guid,0x000000FF,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_RAW_AAC1"); - IF_GUID_EQUAL_RETURN(guid,0x00000240,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_RAW_SPORT"); - IF_GUID_EQUAL_RETURN(guid,0x36315237,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_RGB16_D3D_DX7_RT"); - IF_GUID_EQUAL_RETURN(guid,0x36315239,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_RGB16_D3D_DX9_RT"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_RGB1"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_RGB24"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_RGB32"); - IF_GUID_EQUAL_RETURN(guid,0x32335237,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_RGB32_D3D_DX7_RT"); - IF_GUID_EQUAL_RETURN(guid,0x32335239,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_RGB32_D3D_DX9_RT"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_RGB4"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_RGB555"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_RGB565"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_RGB8"); - IF_GUID_EQUAL_RETURN(guid,0x30343353,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_S340"); - IF_GUID_EQUAL_RETURN(guid,0x32343353,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_S342"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8034,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIASUBTYPE_SDDS"); - IF_GUID_EQUAL_RETURN(guid,0x00000241,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_SPDIF_TAG_241h"); - IF_GUID_EQUAL_RETURN(guid,0xf72a76e3,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba,"MEDIASUBTYPE_TELETEXT"); - IF_GUID_EQUAL_RETURN(guid,0xec232eb2,0xcb96,0x4191,0xb2,0x26,0xe,0xa1,0x29,0xf3,0x82,0x50,"MEDIASUBTYPE_TIF_SI"); - IF_GUID_EQUAL_RETURN(guid,0x4A4D5654,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_TVMJ"); - IF_GUID_EQUAL_RETURN(guid,0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_UYVY"); - IF_GUID_EQUAL_RETURN(guid,0x36313256,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_V216"); - IF_GUID_EQUAL_RETURN(guid,0x30313456,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_V410"); - IF_GUID_EQUAL_RETURN(guid,0x663da43c,0x3e8,0x4e9a,0x9c,0xd5,0xbf,0x11,0xed,0xd,0xef,0x76,"MEDIASUBTYPE_VBI"); - IF_GUID_EQUAL_RETURN(guid,0x0000160A,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_VODAFONE_MPEG_ADTS_AAC"); - IF_GUID_EQUAL_RETURN(guid,0x0000160B,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_VODAFONE_MPEG_RAW_AAC"); - IF_GUID_EQUAL_RETURN(guid,0xa1b3f620,0x9792,0x4d8d,0x81,0xa4,0x86,0xaf,0x25,0x77,0x20,0x90,"MEDIASUBTYPE_VPS"); - IF_GUID_EQUAL_RETURN(guid,0x5a9b6a41,0x1a22,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"MEDIASUBTYPE_VPVBI"); - IF_GUID_EQUAL_RETURN(guid,0x5a9b6a40,0x1a22,0x11d1,0xba,0xd9,0x0,0x60,0x97,0x44,0x11,0x1a,"MEDIASUBTYPE_VPVideo"); - IF_GUID_EQUAL_RETURN(guid,0x454B4157,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WAKE"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb8b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIASUBTYPE_WAVE"); - IF_GUID_EQUAL_RETURN(guid,0x00000164,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMASPDIF"); - IF_GUID_EQUAL_RETURN(guid,0x00000161,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMAUDIO2"); - IF_GUID_EQUAL_RETURN(guid,0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMAUDIO3"); - IF_GUID_EQUAL_RETURN(guid,0x00000168,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMAUDIO4"); - IF_GUID_EQUAL_RETURN(guid,0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMAUDIO_LOSSLESS"); - IF_GUID_EQUAL_RETURN(guid,0x31564D57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMV1"); - IF_GUID_EQUAL_RETURN(guid,0x32564D57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMV2"); - IF_GUID_EQUAL_RETURN(guid,0x33564D57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMV3"); - IF_GUID_EQUAL_RETURN(guid,0x41564D57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMVA"); - IF_GUID_EQUAL_RETURN(guid,0x42564D57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMVB"); - IF_GUID_EQUAL_RETURN(guid,0x50564D57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMVP"); - IF_GUID_EQUAL_RETURN(guid,0x52564D57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WMVR"); - IF_GUID_EQUAL_RETURN(guid,0x2791D576,0x8E7A,0x466F,0x9E,0x90,0x5D,0x3F,0x30,0x83,0x73,0x8B,"MEDIASUBTYPE_WSS"); - IF_GUID_EQUAL_RETURN(guid,0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WVC1"); - IF_GUID_EQUAL_RETURN(guid,0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_WVP2"); - IF_GUID_EQUAL_RETURN(guid,0x34363258,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_X264"); - IF_GUID_EQUAL_RETURN(guid,0x1ca73e3,0xdce6,0x4575,0xaf,0xe1,0x2b,0xf1,0xc9,0x2,0xca,0xf3,"MEDIASUBTYPE_XDS"); - IF_GUID_EQUAL_RETURN(guid,'012Y',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Y210"); - IF_GUID_EQUAL_RETURN(guid,0x31313259,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Y211"); - IF_GUID_EQUAL_RETURN(guid,'612Y',0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Y216"); - IF_GUID_EQUAL_RETURN(guid,0x31313459,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Y411"); - IF_GUID_EQUAL_RETURN(guid,0x50313459,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Y41P"); - IF_GUID_EQUAL_RETURN(guid,0x54313459,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Y41T"); - IF_GUID_EQUAL_RETURN(guid,0x54323459,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_Y42T"); - IF_GUID_EQUAL_RETURN(guid,0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_YUY2"); - IF_GUID_EQUAL_RETURN(guid,0x56595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_YUYV"); - IF_GUID_EQUAL_RETURN(guid,0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_YV12"); - IF_GUID_EQUAL_RETURN(guid,0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_YVU9"); - IF_GUID_EQUAL_RETURN(guid,0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_YVYU"); - IF_GUID_EQUAL_RETURN(guid,0x35327664,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_dv25"); - IF_GUID_EQUAL_RETURN(guid,0x30357664,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_dv50"); - IF_GUID_EQUAL_RETURN(guid,0x31687664,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_dvh1"); - IF_GUID_EQUAL_RETURN(guid,0x64687664,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_dvhd"); - IF_GUID_EQUAL_RETURN(guid,0x64737664,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_dvsd"); - IF_GUID_EQUAL_RETURN(guid,0x6c737664,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_dvsl"); - IF_GUID_EQUAL_RETURN(guid,0x34363268,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_h264"); - IF_GUID_EQUAL_RETURN(guid,0x3273346D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_m4s2"); - IF_GUID_EQUAL_RETURN(guid,0x3234706D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_mp42"); - IF_GUID_EQUAL_RETURN(guid,0x3334706D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_mp43"); - IF_GUID_EQUAL_RETURN(guid,0x7334706D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_mp4s"); - IF_GUID_EQUAL_RETURN(guid,0x3467706D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_mpg4"); - IF_GUID_EQUAL_RETURN(guid,0x30313276,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_v210"); - IF_GUID_EQUAL_RETURN(guid,0x31766D77,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wmv1"); - IF_GUID_EQUAL_RETURN(guid,0x32766D77,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wmv2"); - IF_GUID_EQUAL_RETURN(guid,0x33766D77,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wmv3"); - IF_GUID_EQUAL_RETURN(guid,0x61766D77,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wmva"); - IF_GUID_EQUAL_RETURN(guid,0x62766D77,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wmvb"); - IF_GUID_EQUAL_RETURN(guid,0x70766D77,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wmvp"); - IF_GUID_EQUAL_RETURN(guid,0x72766D77,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wmvr"); - IF_GUID_EQUAL_RETURN(guid,0x31637677,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wvc1"); - IF_GUID_EQUAL_RETURN(guid,0x32707677,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_wvp2"); - IF_GUID_EQUAL_RETURN(guid,0x34363278,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIASUBTYPE_x264"); - IF_GUID_EQUAL_RETURN(guid,0x670aea80,0x3a82,0x11d0,0xb7,0x9b,0x0,0xaa,0x0,0x37,0x67,0xa7,"MEDIATYPE_AUXLine21Data"); - IF_GUID_EQUAL_RETURN(guid,0x11264acb,0x37de,0x4eba,0x8c,0x35,0x7f,0x4,0xa1,0xa6,0x83,0x32,"MEDIATYPE_AUXTeletextPage"); - IF_GUID_EQUAL_RETURN(guid,0x482dee1,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIATYPE_AnalogAudio"); - IF_GUID_EQUAL_RETURN(guid,0x482dde1,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIATYPE_AnalogVideo"); - IF_GUID_EQUAL_RETURN(guid,0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_Audio"); - IF_GUID_EQUAL_RETURN(guid,0xaeb312e9,0x3357,0x43ca,0xb7,0x1,0x97,0xec,0x19,0x8e,0x2b,0x62,"MEDIATYPE_CC_CONTAINER"); - IF_GUID_EQUAL_RETURN(guid,0xfb77e152,0x53b2,0x499c,0xb4,0x6b,0x50,0x9f,0xc3,0x3e,0xdf,0xd7,"MEDIATYPE_DTVCCData"); - IF_GUID_EQUAL_RETURN(guid,0xed0b916a,0x044d,0x11d1,0xaa,0x78,0x00,0xc0,0x04f,0xc3,0x1d,0x60,"MEDIATYPE_DVD_ENCRYPTED_PACK"); - IF_GUID_EQUAL_RETURN(guid,0xe06d802e,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MEDIATYPE_DVD_NAVIGATION"); - IF_GUID_EQUAL_RETURN(guid,0x656c6966,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_File"); - IF_GUID_EQUAL_RETURN(guid,0x73766169,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_Interleaved"); - IF_GUID_EQUAL_RETURN(guid,0x74726c6d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_LMRT"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb82,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIATYPE_MPEG1SystemStream"); - IF_GUID_EQUAL_RETURN(guid,0x36523B13,0x8EE5,0x11d1,0x8C,0xA3,0x00,0x60,0xB0,0x57,0x66,0x4A,"MEDIATYPE_MPEG2_PACK"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8020,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea,"MEDIATYPE_MPEG2_PES"); - IF_GUID_EQUAL_RETURN(guid,0x455f176c,0x4b06,0x47ce,0x9a,0xef,0x8c,0xae,0xf7,0x3d,0xf7,0xb5,"MEDIATYPE_MPEG2_SECTIONS"); - IF_GUID_EQUAL_RETURN(guid,0xB88B8A89,0xB049,0x4C80,0xAD,0xCF,0x58,0x98,0x98,0x5E,0x22,0xC1,"MEDIATYPE_MSTVCaption"); - IF_GUID_EQUAL_RETURN(guid,0x7364696D,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_Midi"); - IF_GUID_EQUAL_RETURN(guid,0x73636d64,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_ScriptCommand"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb83,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MEDIATYPE_Stream"); - IF_GUID_EQUAL_RETURN(guid,0x73747874,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_Text"); - IF_GUID_EQUAL_RETURN(guid,0x482dee3,0x7817,0x11cf,0x8a,0x3,0x0,0xaa,0x0,0x6e,0xcb,0x65,"MEDIATYPE_Timecode"); - IF_GUID_EQUAL_RETURN(guid,0x736c7275,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_URL_STREAM"); - IF_GUID_EQUAL_RETURN(guid,0xf72a76e1,0xeb0a,0x11d0,0xac,0xe4,0x00,0x00,0xc0,0xcc,0x16,0xba,"MEDIATYPE_VBI"); - IF_GUID_EQUAL_RETURN(guid,0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MEDIATYPE_Video"); - IF_GUID_EQUAL_RETURN(guid,0x49815231,0x6bad,0x44fd,0x81,0xa,0x3f,0x60,0x98,0x4e,0xc7,0xfd,"MFASFINDEXER_TYPE_TIMECODE"); - IF_GUID_EQUAL_RETURN(guid,0x72178C2C,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFASFMutexType_Bitrate"); - IF_GUID_EQUAL_RETURN(guid,0x72178C2B,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFASFMutexType_Language"); - IF_GUID_EQUAL_RETURN(guid,0x72178C2D,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFASFMutexType_Presentation"); - IF_GUID_EQUAL_RETURN(guid,0x72178C2E,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFASFMutexType_Unknown"); - IF_GUID_EQUAL_RETURN(guid,0xfe584a05,0xe8d6,0x42e3,0xb1,0x76,0xf1,0x21,0x17,0x5,0xfb,0x6f,"MFASFSPLITTER_PACKET_BOUNDARY"); - IF_GUID_EQUAL_RETURN(guid,0xd590dc20,0x07bc,0x436c,0x9c,0xf7,0xf3,0xbb,0xfb,0xf1,0xa4,0xdc,"MFASFSampleExtension_ContentType"); - IF_GUID_EQUAL_RETURN(guid,0x76376591,0x795f,0x4da1,0x86,0xed,0x9d,0x46,0xec,0xa1,0x09,0xa9,"MFASFSampleExtension_Encryption_KeyID"); - IF_GUID_EQUAL_RETURN(guid,0x6698B84E,0x0AFA,0x4330,0xAE,0xB2,0x1C,0x0A,0x98,0xD7,0xA4,0x4D,"MFASFSampleExtension_Encryption_SampleID"); - IF_GUID_EQUAL_RETURN(guid,0xe165ec0e,0x19ed,0x45d7,0xb4,0xa7,0x25,0xcb,0xd1,0xe2,0x8e,0x9b,"MFASFSampleExtension_FileName"); - IF_GUID_EQUAL_RETURN(guid,0xf72a3c6f,0x6eb4,0x4ebc,0xb1,0x92,0x9,0xad,0x97,0x59,0xe8,0x28,"MFASFSampleExtension_OutputCleanPoint"); - IF_GUID_EQUAL_RETURN(guid,0x1b1ee554,0xf9ea,0x4bc8,0x82,0x1a,0x37,0x6b,0x74,0xe4,0xc4,0xb8,"MFASFSampleExtension_PixelAspectRatio"); - IF_GUID_EQUAL_RETURN(guid,0x399595ec,0x8667,0x4e2d,0x8f,0xdb,0x98,0x81,0x4c,0xe7,0x6c,0x1e,"MFASFSampleExtension_SMPTE"); - IF_GUID_EQUAL_RETURN(guid,0xc6bd9450,0x867f,0x4907,0x83,0xa3,0xc7,0x79,0x21,0xb7,0x33,0xad,"MFASFSampleExtension_SampleDuration"); - IF_GUID_EQUAL_RETURN(guid,0x1610,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_AAC");; - IF_GUID_EQUAL_RETURN(guid,0x1600,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_ADTS");; - IF_GUID_EQUAL_RETURN(guid,0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_Base");; - IF_GUID_EQUAL_RETURN(guid,0x0009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_DRM");; - IF_GUID_EQUAL_RETURN(guid,0x0008,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_DTS");; - IF_GUID_EQUAL_RETURN(guid,0xe06d802c,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"MFAudioFormat_Dolby_AC3"); - IF_GUID_EQUAL_RETURN(guid,0x0092,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_Dolby_AC3_SPDIF");; - IF_GUID_EQUAL_RETURN(guid,0xa7fb87af,0x2d02,0x42fb,0xa4,0xd4,0x5,0xcd,0x93,0x84,0x3b,0xdd,"MFAudioFormat_Dolby_DDPlus"); - IF_GUID_EQUAL_RETURN(guid,0x0003,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_Float");; - IF_GUID_EQUAL_RETURN(guid,0x0055,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_MP3");; - IF_GUID_EQUAL_RETURN(guid,0x0050,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_MPEG");; - IF_GUID_EQUAL_RETURN(guid,0x000A,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_MSP1");; - IF_GUID_EQUAL_RETURN(guid,1,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_PCM");; - IF_GUID_EQUAL_RETURN(guid,0x0164,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_WMASPDIF");; - IF_GUID_EQUAL_RETURN(guid,0x0161,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_WMAudioV8");; - IF_GUID_EQUAL_RETURN(guid,0x0162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_WMAudioV9");; - IF_GUID_EQUAL_RETURN(guid,0x0163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFAudioFormat_WMAudio_Lossless");; - IF_GUID_EQUAL_RETURN(guid,0xac3aef60,0xce43,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_AGP"); - IF_GUID_EQUAL_RETURN(guid,0x57cd596b,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_COMPONENT"); - IF_GUID_EQUAL_RETURN(guid,0x57cd596a,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_COMPOSITE"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5973,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_DISPLAYPORT_EMBEDDED"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5972,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_DISPLAYPORT_EXTERNAL"); - IF_GUID_EQUAL_RETURN(guid,0x57cd596c,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_DVI"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5970,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_D_JPN"); - IF_GUID_EQUAL_RETURN(guid,0x57cd596d,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_HDMI"); - IF_GUID_EQUAL_RETURN(guid,0x57cd596e,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_LVDS"); - IF_GUID_EQUAL_RETURN(guid,0xac3aef5d,0xce43,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_PCI"); - IF_GUID_EQUAL_RETURN(guid,0xac3aef5e,0xce43,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_PCIX"); - IF_GUID_EQUAL_RETURN(guid,0xac3aef5f,0xce43,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_PCI_Express"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5971,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_SDI"); - IF_GUID_EQUAL_RETURN(guid,0xb94a712,0xad3e,0x4cee,0x83,0xce,0xce,0x32,0xe3,0xdb,0x65,0x22,"MFCONNECTOR_SPDIF"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5969,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_SVIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5975,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_UDI_EMBEDDED"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5974,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_UDI_EXTERNAL"); - IF_GUID_EQUAL_RETURN(guid,0xac3aef5c,0xce43,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_UNKNOWN"); - IF_GUID_EQUAL_RETURN(guid,0x57cd5968,0xce47,0x11d9,0x92,0xdb,0x00,0x0b,0xdb,0x28,0xff,0x98,"MFCONNECTOR_VGA"); - IF_GUID_EQUAL_RETURN(guid,0x6d4d3d4b,0x0ece,0x4652,0x8b,0x3a,0xf2,0xd2,0x42,0x60,0xd8,0x87,"MFENABLETYPE_MF_RebootRequired"); - IF_GUID_EQUAL_RETURN(guid,0xe558b0b5,0xb3c4,0x44a0,0x92,0x4c,0x50,0xd1,0x78,0x93,0x23,0x85,"MFENABLETYPE_MF_UpdateRevocationInformation"); - IF_GUID_EQUAL_RETURN(guid,0x9879f3d6,0xcee2,0x48e6,0xb5,0x73,0x97,0x67,0xab,0x17,0x2f,0x16,"MFENABLETYPE_MF_UpdateUntrustedComponent"); - IF_GUID_EQUAL_RETURN(guid,0x4ff6eeaf,0xb43,0x4797,0x9b,0x85,0xab,0xf3,0x18,0x15,0xe7,0xb0,"MFENABLETYPE_WMDRMV1_LicenseAcquisition"); - IF_GUID_EQUAL_RETURN(guid,0xacd2c84a,0xb303,0x4f65,0xbc,0x2c,0x2c,0x84,0x8d,0x1,0xa9,0x89,"MFENABLETYPE_WMDRMV7_Individualization"); - IF_GUID_EQUAL_RETURN(guid,0x3306df,0x4a06,0x4884,0xa0,0x97,0xef,0x6d,0x22,0xec,0x84,0xa3,"MFENABLETYPE_WMDRMV7_LicenseAcquisition"); - IF_GUID_EQUAL_RETURN(guid,0x19e4a5aa,0x5662,0x4fc5,0xa0,0xc0,0x17,0x58,0x02,0x8e,0x10,0x57,"MFImageFormat_JPEG"); - IF_GUID_EQUAL_RETURN(guid,0x00000016,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFImageFormat_RGB32"); - IF_GUID_EQUAL_RETURN(guid,0x00000000,0x767a,0x494d,0xb4,0x78,0xf2,0x9d,0x25,0xdc,0x90,0x37,"MFMPEG4Format_Base"); - IF_GUID_EQUAL_RETURN(guid,0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"MFMediaType_Audio"); - IF_GUID_EQUAL_RETURN(guid,0x72178C25,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFMediaType_Binary"); - IF_GUID_EQUAL_RETURN(guid,0x81A412E6,0x8103,0x4B06,0x85,0x7F,0x18,0x62,0x78,0x10,0x24,0xAC,"MFMediaType_Default"); - IF_GUID_EQUAL_RETURN(guid,0x72178C26,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFMediaType_FileTransfer"); - IF_GUID_EQUAL_RETURN(guid,0x72178C24,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFMediaType_HTML"); - IF_GUID_EQUAL_RETURN(guid,0x72178C23,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFMediaType_Image"); - IF_GUID_EQUAL_RETURN(guid,0x7b4b6fe6,0x9d04,0x4494,0xbe,0x14,0x7e,0x0b,0xd0,0x76,0xc8,0xe4,"MFMediaType_Protected"); - IF_GUID_EQUAL_RETURN(guid,0xe69669a0,0x3dcd,0x40cb,0x9e,0x2e,0x37,0x08,0x38,0x7c,0x06,0x16,"MFMediaType_SAMI"); - IF_GUID_EQUAL_RETURN(guid,0x72178C22,0xE45B,0x11D5,0xBC,0x2A,0x00,0xB0,0xD0,0xF3,0xF4,0xAB,"MFMediaType_Script"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb83,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"MFMediaType_Stream"); - IF_GUID_EQUAL_RETURN(guid,0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"MFMediaType_Video"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f277,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ACCELERATEDSTREAMINGDURATION"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f27a,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_AUTORECONNECTLIMIT"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f282,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_AUTORECONNECTPROGRESS"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f28b,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_BROWSERUSERAGENT"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f28c,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_BROWSERWEBPAGE"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f276,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_BUFFERINGTIME"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f279,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_CACHEENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x60a2c4a6,0xf197,0x4c14,0xa5,0xbf,0x88,0x83,0xd,0x24,0x58,0xaf,"MFNETSOURCE_CLIENTGUID"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f278,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_CONNECTIONBANDWIDTH"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f280,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_CREDENTIAL_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x47eae1bd,0xbdfe,0x42e2,0x82,0xf3,0x54,0xa4,0x8c,0x17,0x96,0x2d,"MFNETSOURCE_DRMNET_LICENSE_REPRESENTATION"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f29d,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ENABLE_DOWNLOAD"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f299,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ENABLE_HTTP"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f296,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ENABLE_MSB"); - IF_GUID_EQUAL_RETURN(guid,0x824779d8,0xf18b,0x4405,0x8c,0xf1,0x46,0x4f,0xb5,0xaa,0x8f,0x71,"MFNETSOURCE_ENABLE_PRIVATEMODE"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f298,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ENABLE_RTSP"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f29c,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ENABLE_STREAMING"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f295,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ENABLE_TCP"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f294,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_ENABLE_UDP"); - IF_GUID_EQUAL_RETURN(guid,0x5b2a7757,0xbc6b,0x447e,0xaa,0x06,0x0d,0xda,0x1c,0x64,0x6e,0x2f,"MFNETSOURCE_FRIENDLYNAME"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f28f,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_HOSTEXE"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f291,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_HOSTVERSION"); - IF_GUID_EQUAL_RETURN(guid,0x64936ae8,0x9418,0x453a,0x8c,0xda,0x3e,0xa,0x66,0x8b,0x35,0x3b,"MFNETSOURCE_LOGPARAMS"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f293,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_LOGURL"); - IF_GUID_EQUAL_RETURN(guid,0x408b24e6,0x4038,0x4401,0xb5,0xb2,0xfe,0x70,0x1a,0x9e,0xbf,0x10,"MFNETSOURCE_MAXBUFFERTIMEMS"); - IF_GUID_EQUAL_RETURN(guid,0x4aab2879,0xbbe1,0x4994,0x9f,0xf0,0x54,0x95,0xbd,0x25,0x1,0x29,"MFNETSOURCE_MAXUDPACCELERATEDSTREAMINGDURATION"); - IF_GUID_EQUAL_RETURN(guid,0x48b29adb,0xfebf,0x45ee,0xa9,0xbf,0xef,0xb8,0x1c,0x49,0x2e,0xfc,"MFNETSOURCE_PEERMANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f28e,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PLAYERID"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f292,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PLAYERUSERAGENT"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f28d,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PLAYERVERSION"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f281,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PPBANDWIDTH"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f27f,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PREVIEWMODEENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f27d,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROTOCOL"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f286,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYBYPASSFORLOCAL"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f285,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYEXCEPTIONLIST"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f284,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYHOSTNAME"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f29b,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYINFO"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f283,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYLOCATORFACTORY"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f288,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYPORT"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f289,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYRERUNAUTODETECTION"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f287,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_PROXYSETTINGS"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f27b,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_RESENDSENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x815d0ff6,0x265a,0x4477,0x9e,0x46,0x7b,0x80,0xad,0x80,0xb5,0xfb,"MFNETSOURCE_RESOURCE_FILTER"); - IF_GUID_EQUAL_RETURN(guid,0x55e6cb27,0xe69b,0x4267,0x94,0x0c,0x2d,0x7e,0xc5,0xbb,0x8a,0x0f,"MFNETSOURCE_SSLCERTIFICATE_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f274,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_STATISTICS"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f275,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_STATISTICS_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x9ab44318,0xf7cd,0x4f2d,0x8d,0x6d,0xfa,0x35,0xb4,0x92,0xce,0xcb,"MFNETSOURCE_STREAM_LANGUAGE"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f27c,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_THINNINGENABLED"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f27e,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_TRANSPORT"); - IF_GUID_EQUAL_RETURN(guid,0x3cb1f29a,0x0505,0x4c5d,0xae,0x71,0x0a,0x55,0x63,0x44,0xef,0xa1,"MFNETSOURCE_UDP_PORT_RANGE"); - IF_GUID_EQUAL_RETURN(guid,0xb85a587f,0x3d02,0x4e52,0x95,0x65,0x55,0xd3,0xec,0x1e,0x7f,0xf7,"MFNET_SAVEJOB_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xc8e06331,0x75f0,0x4ec1,0x8e,0x77,0x17,0x57,0x8f,0x77,0x3b,0x46,"MFPROTECTIONATTRIBUTE_BEST_EFFORT"); - IF_GUID_EQUAL_RETURN(guid,0x8476fc,0x4b58,0x4d80,0xa7,0x90,0xe7,0x29,0x76,0x73,0x16,0x1d,"MFPROTECTIONATTRIBUTE_CONSTRICTVIDEO_IMAGESIZE"); - IF_GUID_EQUAL_RETURN(guid,0x8536abc5,0x38f1,0x4151,0x9c,0xce,0xf5,0x5d,0x94,0x12,0x29,0xac,"MFPROTECTIONATTRIBUTE_FAIL_OVER"); - IF_GUID_EQUAL_RETURN(guid,0x6f302107,0x3477,0x4468,0x8a,0x8,0xee,0xf9,0xdb,0x10,0xe2,0xf,"MFPROTECTIONATTRIBUTE_HDCP_SRM"); - IF_GUID_EQUAL_RETURN(guid,0xc3fd11c6,0xf8b7,0x4d20,0xb0,0x08,0x1d,0xb1,0x7d,0x61,0xf2,0xda,"MFPROTECTION_ACP"); - IF_GUID_EQUAL_RETURN(guid,0xE57E69E9,0x226B,0x4d31,0xB4,0xE3,0xD3,0xDB,0x00,0x87,0x36,0xDD,"MFPROTECTION_CGMSA"); - IF_GUID_EQUAL_RETURN(guid,0xffc99b44,0xdf48,0x4e16,0x8e,0x66,0x09,0x68,0x92,0xc1,0x57,0x8a,"MFPROTECTION_CONSTRICTAUDIO"); - IF_GUID_EQUAL_RETURN(guid,0x193370ce,0xc5e4,0x4c3a,0x8a,0x66,0x69,0x59,0xb4,0xda,0x44,0x42,"MFPROTECTION_CONSTRICTVIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x8cc6d81b,0xfec6,0x4d8f,0x96,0x4b,0xcf,0xba,0x0b,0x0d,0xad,0x0d,"MFPROTECTION_DISABLE"); - IF_GUID_EQUAL_RETURN(guid,0xa21179a4,0xb7cd,0x40d8,0x96,0x14,0x8e,0xf2,0x37,0x1b,0xa7,0x8d,"MFPROTECTION_DISABLE_SCREEN_SCRAPE"); - IF_GUID_EQUAL_RETURN(guid,0x462a56b2,0x2866,0x4bb6,0x98,0x0d,0x6d,0x8d,0x9e,0xdb,0x1a,0x8c,"MFPROTECTION_FFT"); - IF_GUID_EQUAL_RETURN(guid,0xc873de64,0xd8a5,0x49e6,0x88,0xbb,0xfb,0x96,0x3f,0xd3,0xd4,0xce,"MFPROTECTION_GRAPHICS_TRANSFER_AES_ENCRYPTION"); - IF_GUID_EQUAL_RETURN(guid,0xAE7CC03D,0xC828,0x4021,0xac,0xb7,0xd5,0x78,0xd2,0x7a,0xaf,0x13,"MFPROTECTION_HDCP"); - IF_GUID_EQUAL_RETURN(guid,0x4f5d9566,0xe742,0x4a25,0x8d,0x1f,0xd2,0x87,0xb5,0xfa,0x0a,0xde,"MFPROTECTION_PROTECTED_SURFACE"); - IF_GUID_EQUAL_RETURN(guid,0x65bdf3d2,0x0168,0x4816,0xa5,0x33,0x55,0xd4,0x7b,0x02,0x71,0x01,"MFPROTECTION_TRUSTEDAUDIODRIVERS"); - IF_GUID_EQUAL_RETURN(guid,0x36a59cbc,0x7401,0x4a8c,0xbc,0x20,0x46,0xa7,0xc9,0xe5,0x97,0xf0,"MFPROTECTION_VIDEO_FRAMES"); - IF_GUID_EQUAL_RETURN(guid,0xa267a6a1,0x362e,0x47d0,0x88,0x05,0x46,0x28,0x59,0x8a,0x23,0xe4,"MFPROTECTION_WMDRMOTA"); - IF_GUID_EQUAL_RETURN(guid,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,"MFP_POSITIONTYPE_100NS"); - IF_GUID_EQUAL_RETURN(guid,0xf86f97a4,0xdd54,0x4e2e,0x9a,0x5e,0x55,0xfc,0x2d,0x74,0xa0,0x05,"MFSampleExtension_3DVideo"); - IF_GUID_EQUAL_RETURN(guid,0x8671772,0xe36f,0x4cff,0x97,0xb3,0xd7,0x2e,0x20,0x98,0x7a,0x48,"MFSampleExtension_3DVideo_SampleFormat"); - IF_GUID_EQUAL_RETURN(guid,0x941ce0a3,0x6ae3,0x4dda,0x9a,0x08,0xa6,0x42,0x98,0x34,0x06,0x17,"MFSampleExtension_BottomFieldFirst"); - IF_GUID_EQUAL_RETURN(guid,0x9cdf01d8,0xa0f0,0x43ba,0xb0,0x77,0xea,0xa0,0x6c,0xbd,0x72,0x8a,"MFSampleExtension_CleanPoint"); - IF_GUID_EQUAL_RETURN(guid,0x73a954d4,0x9e2,0x4861,0xbe,0xfc,0x94,0xbd,0x97,0xc0,0x8e,0x6e,"MFSampleExtension_DecodeTimestamp"); - IF_GUID_EQUAL_RETURN(guid,0x6852465a,0xae1c,0x4553,0x8e,0x9b,0xc3,0x42,0x0f,0xcb,0x16,0x37,"MFSampleExtension_DerivedFromTopField"); - IF_GUID_EQUAL_RETURN(guid,0x43483be6,0x4903,0x4314,0xb0,0x32,0x29,0x51,0x36,0x59,0x36,0xfc,"MFSampleExtension_DescrambleData"); - IF_GUID_EQUAL_RETURN(guid,0x8f3e35e7,0x2dcd,0x4887,0x86,0x22,0x2a,0x58,0xba,0xa6,0x52,0xb0,"MFSampleExtension_DeviceTimestamp"); - IF_GUID_EQUAL_RETURN(guid,0x9cdf01d9,0xa0f0,0x43ba,0xb0,0x77,0xea,0xa0,0x6c,0xbd,0x72,0x8a,"MFSampleExtension_Discontinuity"); - IF_GUID_EQUAL_RETURN(guid,0x76376591,0x795f,0x4da1,0x86,0xed,0x9d,0x46,0xec,0xa1,0x09,0xa9,"MFSampleExtension_Encryption_KeyID"); - IF_GUID_EQUAL_RETURN(guid,0x6698b84e,0x0afa,0x4330,0xae,0xb2,0x1c,0x0a,0x98,0xd7,0xa4,0x4d,"MFSampleExtension_Encryption_SampleID"); - IF_GUID_EQUAL_RETURN(guid,0xb4dd4a8c,0xbeb,0x44c4,0x8b,0x75,0xb0,0x2b,0x91,0x3b,0x4,0xf0,"MFSampleExtension_FrameCorruption"); - IF_GUID_EQUAL_RETURN(guid,0x188120cb,0xd7da,0x4b59,0x9b,0x3e,0x92,0x52,0xfd,0x37,0x30,0x1c,"MFSampleExtension_GenKeyCtx"); - IF_GUID_EQUAL_RETURN(guid,0x441ca1ee,0x6b1f,0x4501,0x90,0x3a,0xde,0x87,0xdf,0x42,0xf6,0xed,"MFSampleExtension_GenKeyFunc"); - IF_GUID_EQUAL_RETURN(guid,0xb1d5830a,0xdeb8,0x40e3,0x90,0xfa,0x38,0x99,0x43,0x71,0x64,0x61,"MFSampleExtension_Interlaced"); - IF_GUID_EQUAL_RETURN(guid,0x2789671d,0x389f,0x40bb,0x90,0xd9,0xc2,0x82,0xf7,0x7f,0x9a,0xbd,"MFSampleExtension_PacketCrossOffsets"); - IF_GUID_EQUAL_RETURN(guid,0x304d257c,0x7493,0x4fbd,0xb1,0x49,0x92,0x28,0xde,0x8d,0x9a,0x99,"MFSampleExtension_RepeatFirstField"); - IF_GUID_EQUAL_RETURN(guid,0x9ed713c8,0x9b87,0x4b26,0x82,0x97,0xa9,0x3b,0x0c,0x5a,0x8a,0xcc,"MFSampleExtension_SampleKeyID"); - IF_GUID_EQUAL_RETURN(guid,0x9d85f816,0x658b,0x455a,0xbd,0xe0,0x9f,0xa7,0xe1,0x5a,0xb8,0xf9,"MFSampleExtension_SingleField"); - IF_GUID_EQUAL_RETURN(guid,0x8294da66,0xf328,0x4805,0xb5,0x51,0x00,0xde,0xb4,0xc5,0x7a,0x61,"MFSampleExtension_Token"); - IF_GUID_EQUAL_RETURN(guid,0xc12d55cb,0xd7d9,0x476d,0x81,0xf3,0x69,0x11,0x7f,0x16,0x3e,0xa0,"MFSampleExtension_VideoDSPMode"); - IF_GUID_EQUAL_RETURN(guid,0x973704e6,0xcd14,0x483c,0x8f,0x20,0xc9,0xfc,0x9,0x28,0xba,0xd5,"MFSampleExtension_VideoEncodePictureType"); - IF_GUID_EQUAL_RETURN(guid,0xb2efe478,0xf979,0x4c66,0xb9,0x5e,0xee,0x2b,0x82,0xc8,0x2f,0x36,"MFSampleExtension_VideoEncodeQP"); - IF_GUID_EQUAL_RETURN(guid,0x263067d1,0xd330,0x45dc,0xb6,0x69,0x34,0xd9,0x86,0xe4,0xe3,0xe1,"MFStreamFormat_MPEG2Program"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8023,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea,"MFStreamFormat_MPEG2Transport"); - IF_GUID_EQUAL_RETURN(guid,0x9ea73fb4,0xef7a,0x4559,0x8d,0x5d,0x71,0x9d,0x8f,0x04,0x26,0xc7,"MFT_CATEGORY_AUDIO_DECODER"); - IF_GUID_EQUAL_RETURN(guid,0x11064c48,0x3648,0x4ed0,0x93,0x2e,0x05,0xce,0x8a,0xc8,0x11,0xb7,"MFT_CATEGORY_AUDIO_EFFECT"); - IF_GUID_EQUAL_RETURN(guid,0x91c64bd0,0xf91e,0x4d8c,0x92,0x76,0xdb,0x24,0x82,0x79,0xd9,0x75,"MFT_CATEGORY_AUDIO_ENCODER"); - IF_GUID_EQUAL_RETURN(guid,0xa8700a7a,0x939b,0x44c5,0x99,0xd7,0x76,0x22,0x6b,0x23,0xb3,0xf1,"MFT_CATEGORY_DEMULTIPLEXER"); - IF_GUID_EQUAL_RETURN(guid,0x059c561e,0x05ae,0x4b61,0xb6,0x9d,0x55,0xb6,0x1e,0xe5,0x4a,0x7b,"MFT_CATEGORY_MULTIPLEXER"); - IF_GUID_EQUAL_RETURN(guid,0x90175d57,0xb7ea,0x4901,0xae,0xb3,0x93,0x3a,0x87,0x47,0x75,0x6f,"MFT_CATEGORY_OTHER"); - IF_GUID_EQUAL_RETURN(guid,0xd6c02d4b,0x6833,0x45b4,0x97,0x1a,0x05,0xa4,0xb0,0x4b,0xab,0x91,"MFT_CATEGORY_VIDEO_DECODER"); - IF_GUID_EQUAL_RETURN(guid,0x12e17c21,0x532c,0x4a6e,0x8a,0x1c,0x40,0x82,0x5a,0x73,0x63,0x97,"MFT_CATEGORY_VIDEO_EFFECT"); - IF_GUID_EQUAL_RETURN(guid,0xf79eac7d,0xe545,0x4387,0xbd,0xee,0xd6,0x47,0xd7,0xbd,0xe4,0x2a,"MFT_CATEGORY_VIDEO_ENCODER"); - IF_GUID_EQUAL_RETURN(guid,0x302ea3fc,0xaa5f,0x47f9,0x9f,0x7a,0xc2,0x18,0x8b,0xb1,0x63,0x2,"MFT_CATEGORY_VIDEO_PROCESSOR"); - IF_GUID_EQUAL_RETURN(guid,0x88a7cb15,0x7b07,0x4a34,0x91,0x28,0xe6,0x4c,0x67,0x3,0xc4,0xd3,"MFT_CODEC_MERIT_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x71eeb820,0xa59f,0x4de2,0xbc,0xec,0x38,0xdb,0x1d,0xd6,0x11,0xa4,"MFT_CONNECTED_STREAM_ATTRIBUTE"); - IF_GUID_EQUAL_RETURN(guid,0x34e6e728,0x6d6,0x4491,0xa5,0x53,0x47,0x95,0x65,0xd,0xb9,0x12,"MFT_CONNECTED_TO_HW_STREAM"); - IF_GUID_EQUAL_RETURN(guid,0xef80833f,0xf8fa,0x44d9,0x80,0xd8,0x41,0xed,0x62,0x32,0x67,0xc,"MFT_DECODER_EXPOSE_OUTPUT_TYPES_IN_NATIVE_ORDER"); - IF_GUID_EQUAL_RETURN(guid,0xdc2f8496,0x15c4,0x407a,0xb6,0xf0,0x1b,0x66,0xab,0x5f,0xbf,0x53,"MFT_DECODER_FINAL_VIDEO_RESOLUTION_HINT"); - IF_GUID_EQUAL_RETURN(guid,0x2fb866ac,0xb078,0x4942,0xab,0x6c,0x0,0x3d,0x5,0xcd,0xa6,0x74,"MFT_ENUM_HARDWARE_URL_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x3aecb0cc,0x35b,0x4bcc,0x81,0x85,0x2b,0x8d,0x55,0x1e,0xf3,0xaf,"MFT_ENUM_HARDWARE_VENDOR_ID_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x111ea8cd,0xb62a,0x4bdb,0x89,0xf6,0x67,0xff,0xcd,0xc2,0x45,0x8b,"MFT_ENUM_TRANSCODE_ONLY_ATTRIBUTE"); - IF_GUID_EQUAL_RETURN(guid,0x8ec2e9fd,0x9148,0x410d,0x83,0x1e,0x70,0x24,0x39,0x46,0x1a,0x8e,"MFT_FIELDOFUSE_UNLOCK_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x314ffbae,0x5b41,0x4c95,0x9c,0x19,0x4e,0x7d,0x58,0x6f,0xac,0xe3,"MFT_FRIENDLY_NAME_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x8d030fb8,0xcc43,0x4258,0xa2,0x2e,0x92,0x10,0xbe,0xf8,0x9b,0xe4,"MFT_HW_TIMESTAMP_WITH_QPC_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x4276c9b1,0x759d,0x4bf3,0x9c,0xd0,0xd,0x72,0x3d,0x13,0x8f,0x96,"MFT_INPUT_TYPES_Attributes"); - IF_GUID_EQUAL_RETURN(guid,0x8eae8cf3,0xa44f,0x4306,0xba,0x5c,0xbf,0x5d,0xda,0x24,0x28,0x18,"MFT_OUTPUT_TYPES_Attributes"); - IF_GUID_EQUAL_RETURN(guid,0x53004909,0x1ef5,0x46d7,0xa1,0x8e,0x5a,0x75,0xf8,0xb5,0x90,0x5f,"MFT_PREFERRED_ENCODER_PROFILE"); - IF_GUID_EQUAL_RETURN(guid,0x7e700499,0x396a,0x49ee,0xb1,0xb4,0xf6,0x28,0x2,0x1e,0x8c,0x9d,"MFT_PREFERRED_OUTPUTTYPE_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x543186e4,0x4649,0x4e65,0xb5,0x88,0x4a,0xa3,0x52,0xaf,0xf3,0x79,"MFT_PROCESS_LOCAL_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x93f81b1,0x4f2e,0x4631,0x81,0x68,0x79,0x34,0x3,0x2a,0x1,0xd3,"MFT_SUPPORT_3DVIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x53476a11,0x3f13,0x49fb,0xac,0x42,0xee,0x27,0x33,0xc9,0x67,0x41,"MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE"); - IF_GUID_EQUAL_RETURN(guid,0x6821c42b,0x65a4,0x4e82,0x99,0xbc,0x9a,0x88,0x20,0x5e,0xcd,0xc,"MFT_TRANSFORM_CLSID_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x34c50167,0x4472,0x4f34,0x9e,0xa0,0xc4,0x9f,0xba,0xcf,0x03,0x7d,"MFTranscodeContainerType_3GP"); - IF_GUID_EQUAL_RETURN(guid,0x6d8d91c3,0x8c91,0x4ed1,0x87,0x42,0x8c,0x34,0x7d,0x5b,0x44,0xd0,"MFTranscodeContainerType_AC3"); - IF_GUID_EQUAL_RETURN(guid,0x132fd27d,0x0f02,0x43de,0xa3,0x01,0x38,0xfb,0xbb,0xb3,0x83,0x4e,"MFTranscodeContainerType_ADTS"); - IF_GUID_EQUAL_RETURN(guid,0x430f6f6e,0xb6bf,0x4fc1,0xa0,0xbd,0x9e,0xe4,0x6e,0xee,0x2a,0xfb,"MFTranscodeContainerType_ASF"); - IF_GUID_EQUAL_RETURN(guid,0x9ba876f1,0x419f,0x4b77,0xa1,0xe0,0x35,0x95,0x9d,0x9d,0x40,0x4,"MFTranscodeContainerType_FMPEG4"); - IF_GUID_EQUAL_RETURN(guid,0xe438b912,0x83f1,0x4de6,0x9e,0x3a,0x9f,0xfb,0xc6,0xdd,0x24,0xd1,"MFTranscodeContainerType_MP3"); - IF_GUID_EQUAL_RETURN(guid,0xbfc2dbf9,0x7bb4,0x4f8f,0xaf,0xde,0xe1,0x12,0xc4,0x4b,0xa8,0x82,"MFTranscodeContainerType_MPEG2"); - IF_GUID_EQUAL_RETURN(guid,0xdc6cd05d,0xb9d0,0x40ef,0xbd,0x35,0xfa,0x62,0x2c,0x1a,0xb2,0x8a,"MFTranscodeContainerType_MPEG4"); - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('420O')&0xFF)<<24)|(((DWORD)('420O')&0xFF00)<<8)|(((DWORD)('420O')&0xFF0000)>>8)|(((DWORD)('420O')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_420O");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('AI44')&0xFF)<<24)|(((DWORD)('AI44')&0xFF00)<<8)|(((DWORD)('AI44')&0xFF0000)>>8)|(((DWORD)('AI44')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_AI44");; - IF_GUID_EQUAL_RETURN(guid,21,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_ARGB32");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('AYUV')&0xFF)<<24)|(((DWORD)('AYUV')&0xFF00)<<8)|(((DWORD)('AYUV')&0xFF0000)>>8)|(((DWORD)('AYUV')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_AYUV");; - IF_GUID_EQUAL_RETURN(guid,0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Base");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('dv25')&0xFF)<<24)|(((DWORD)('dv25')&0xFF00)<<8)|(((DWORD)('dv25')&0xFF0000)>>8)|(((DWORD)('dv25')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_DV25");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('dv50')&0xFF)<<24)|(((DWORD)('dv50')&0xFF00)<<8)|(((DWORD)('dv50')&0xFF0000)>>8)|(((DWORD)('dv50')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_DV50");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('dvc')&0xFF)<<24)|(((DWORD)('dvc')&0xFF00)<<8)|(((DWORD)('dvc')&0xFF0000)>>8)|(((DWORD)('dvc')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_DVC");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('dvh1')&0xFF)<<24)|(((DWORD)('dvh1')&0xFF00)<<8)|(((DWORD)('dvh1')&0xFF0000)>>8)|(((DWORD)('dvh1')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_DVH1");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('dvhd')&0xFF)<<24)|(((DWORD)('dvhd')&0xFF00)<<8)|(((DWORD)('dvhd')&0xFF0000)>>8)|(((DWORD)('dvhd')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_DVHD");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('dvsd')&0xFF)<<24)|(((DWORD)('dvsd')&0xFF00)<<8)|(((DWORD)('dvsd')&0xFF0000)>>8)|(((DWORD)('dvsd')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_DVSD");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('dvsl')&0xFF)<<24)|(((DWORD)('dvsl')&0xFF00)<<8)|(((DWORD)('dvsl')&0xFF0000)>>8)|(((DWORD)('dvsl')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_DVSL");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('H263')&0xFF)<<24)|(((DWORD)('H263')&0xFF00)<<8)|(((DWORD)('H263')&0xFF0000)>>8)|(((DWORD)('H263')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_H263");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('H264')&0xFF)<<24)|(((DWORD)('H264')&0xFF00)<<8)|(((DWORD)('H264')&0xFF0000)>>8)|(((DWORD)('H264')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_H264");; - IF_GUID_EQUAL_RETURN(guid,0x3f40f4f0,0x5622,0x4ff8,0xb6,0xd8,0xa1,0x7a,0x58,0x4b,0xee,0x5e,"MFVideoFormat_H264_ES"); - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('I420')&0xFF)<<24)|(((DWORD)('I420')&0xFF00)<<8)|(((DWORD)('I420')&0xFF0000)>>8)|(((DWORD)('I420')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_I420");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('IYUV')&0xFF)<<24)|(((DWORD)('IYUV')&0xFF00)<<8)|(((DWORD)('IYUV')&0xFF0000)>>8)|(((DWORD)('IYUV')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_IYUV");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('M4S2')&0xFF)<<24)|(((DWORD)('M4S2')&0xFF00)<<8)|(((DWORD)('M4S2')&0xFF0000)>>8)|(((DWORD)('M4S2')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_M4S2");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('MJPG')&0xFF)<<24)|(((DWORD)('MJPG')&0xFF00)<<8)|(((DWORD)('MJPG')&0xFF0000)>>8)|(((DWORD)('MJPG')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_MJPG");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('MP43')&0xFF)<<24)|(((DWORD)('MP43')&0xFF00)<<8)|(((DWORD)('MP43')&0xFF0000)>>8)|(((DWORD)('MP43')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_MP43");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('MP4S')&0xFF)<<24)|(((DWORD)('MP4S')&0xFF00)<<8)|(((DWORD)('MP4S')&0xFF0000)>>8)|(((DWORD)('MP4S')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_MP4S");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('MP4V')&0xFF)<<24)|(((DWORD)('MP4V')&0xFF00)<<8)|(((DWORD)('MP4V')&0xFF0000)>>8)|(((DWORD)('MP4V')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_MP4V");; - IF_GUID_EQUAL_RETURN(guid,0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea,"MFVideoFormat_MPEG2"); - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('MPG1')&0xFF)<<24)|(((DWORD)('MPG1')&0xFF00)<<8)|(((DWORD)('MPG1')&0xFF0000)>>8)|(((DWORD)('MPG1')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_MPG1");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('MSS1')&0xFF)<<24)|(((DWORD)('MSS1')&0xFF00)<<8)|(((DWORD)('MSS1')&0xFF0000)>>8)|(((DWORD)('MSS1')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_MSS1");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('MSS2')&0xFF)<<24)|(((DWORD)('MSS2')&0xFF00)<<8)|(((DWORD)('MSS2')&0xFF0000)>>8)|(((DWORD)('MSS2')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_MSS2");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('NV11')&0xFF)<<24)|(((DWORD)('NV11')&0xFF00)<<8)|(((DWORD)('NV11')&0xFF0000)>>8)|(((DWORD)('NV11')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_NV11");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('NV12')&0xFF)<<24)|(((DWORD)('NV12')&0xFF00)<<8)|(((DWORD)('NV12')&0xFF0000)>>8)|(((DWORD)('NV12')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_NV12");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('P010')&0xFF)<<24)|(((DWORD)('P010')&0xFF00)<<8)|(((DWORD)('P010')&0xFF0000)>>8)|(((DWORD)('P010')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_P010");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('P016')&0xFF)<<24)|(((DWORD)('P016')&0xFF00)<<8)|(((DWORD)('P016')&0xFF0000)>>8)|(((DWORD)('P016')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_P016");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('P210')&0xFF)<<24)|(((DWORD)('P210')&0xFF00)<<8)|(((DWORD)('P210')&0xFF0000)>>8)|(((DWORD)('P210')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_P210");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('P216')&0xFF)<<24)|(((DWORD)('P216')&0xFF00)<<8)|(((DWORD)('P216')&0xFF0000)>>8)|(((DWORD)('P216')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_P216");; - IF_GUID_EQUAL_RETURN(guid,20,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_RGB24");; - IF_GUID_EQUAL_RETURN(guid,22,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_RGB32");; - IF_GUID_EQUAL_RETURN(guid,24,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_RGB555");; - IF_GUID_EQUAL_RETURN(guid,23,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_RGB565");; - IF_GUID_EQUAL_RETURN(guid,41,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_RGB8");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('UYVY')&0xFF)<<24)|(((DWORD)('UYVY')&0xFF00)<<8)|(((DWORD)('UYVY')&0xFF0000)>>8)|(((DWORD)('UYVY')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_UYVY");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('WMV1')&0xFF)<<24)|(((DWORD)('WMV1')&0xFF00)<<8)|(((DWORD)('WMV1')&0xFF0000)>>8)|(((DWORD)('WMV1')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_WMV1");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('WMV2')&0xFF)<<24)|(((DWORD)('WMV2')&0xFF00)<<8)|(((DWORD)('WMV2')&0xFF0000)>>8)|(((DWORD)('WMV2')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_WMV2");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('WMV3')&0xFF)<<24)|(((DWORD)('WMV3')&0xFF00)<<8)|(((DWORD)('WMV3')&0xFF0000)>>8)|(((DWORD)('WMV3')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_WMV3");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('WVC1')&0xFF)<<24)|(((DWORD)('WVC1')&0xFF00)<<8)|(((DWORD)('WVC1')&0xFF0000)>>8)|(((DWORD)('WVC1')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_WVC1");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('Y210')&0xFF)<<24)|(((DWORD)('Y210')&0xFF00)<<8)|(((DWORD)('Y210')&0xFF0000)>>8)|(((DWORD)('Y210')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Y210");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('Y216')&0xFF)<<24)|(((DWORD)('Y216')&0xFF00)<<8)|(((DWORD)('Y216')&0xFF0000)>>8)|(((DWORD)('Y216')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Y216");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('Y410')&0xFF)<<24)|(((DWORD)('Y410')&0xFF00)<<8)|(((DWORD)('Y410')&0xFF0000)>>8)|(((DWORD)('Y410')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Y410");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('Y416')&0xFF)<<24)|(((DWORD)('Y416')&0xFF00)<<8)|(((DWORD)('Y416')&0xFF0000)>>8)|(((DWORD)('Y416')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Y416");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('Y41P')&0xFF)<<24)|(((DWORD)('Y41P')&0xFF00)<<8)|(((DWORD)('Y41P')&0xFF0000)>>8)|(((DWORD)('Y41P')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Y41P");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('Y41T')&0xFF)<<24)|(((DWORD)('Y41T')&0xFF00)<<8)|(((DWORD)('Y41T')&0xFF0000)>>8)|(((DWORD)('Y41T')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Y41T");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('Y42T')&0xFF)<<24)|(((DWORD)('Y42T')&0xFF00)<<8)|(((DWORD)('Y42T')&0xFF0000)>>8)|(((DWORD)('Y42T')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_Y42T");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('YUY2')&0xFF)<<24)|(((DWORD)('YUY2')&0xFF00)<<8)|(((DWORD)('YUY2')&0xFF0000)>>8)|(((DWORD)('YUY2')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_YUY2");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('YV12')&0xFF)<<24)|(((DWORD)('YV12')&0xFF00)<<8)|(((DWORD)('YV12')&0xFF0000)>>8)|(((DWORD)('YV12')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_YV12");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('YVU9')&0xFF)<<24)|(((DWORD)('YVU9')&0xFF00)<<8)|(((DWORD)('YVU9')&0xFF0000)>>8)|(((DWORD)('YVU9')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_YVU9");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('YVYU')&0xFF)<<24)|(((DWORD)('YVYU')&0xFF00)<<8)|(((DWORD)('YVYU')&0xFF0000)>>8)|(((DWORD)('YVYU')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_YVYU");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('v210')&0xFF)<<24)|(((DWORD)('v210')&0xFF00)<<8)|(((DWORD)('v210')&0xFF0000)>>8)|(((DWORD)('v210')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_v210");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('v216')&0xFF)<<24)|(((DWORD)('v216')&0xFF00)<<8)|(((DWORD)('v216')&0xFF0000)>>8)|(((DWORD)('v216')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_v216");; - IF_GUID_EQUAL_RETURN(guid,((((DWORD)('v410')&0xFF)<<24)|(((DWORD)('v410')&0xFF00)<<8)|(((DWORD)('v410')&0xFF0000)>>8)|(((DWORD)('v410')&0xFF000000)>>24)),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"MFVideoFormat_v410");; - IF_GUID_EQUAL_RETURN(guid,0xba491361,0xbe50,0x451e,0x95,0xab,0x6d,0x4a,0xcc,0xc7,0xda,0xd8,"MF_ACTIVATE_CUSTOM_VIDEO_MIXER_ACTIVATE"); - IF_GUID_EQUAL_RETURN(guid,0xba491360,0xbe50,0x451e,0x95,0xab,0x6d,0x4a,0xcc,0xc7,0xda,0xd8,"MF_ACTIVATE_CUSTOM_VIDEO_MIXER_CLSID"); - IF_GUID_EQUAL_RETURN(guid,0xba491362,0xbe50,0x451e,0x95,0xab,0x6d,0x4a,0xcc,0xc7,0xda,0xd8,"MF_ACTIVATE_CUSTOM_VIDEO_MIXER_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0xba491365,0xbe50,0x451e,0x95,0xab,0x6d,0x4a,0xcc,0xc7,0xda,0xd8,"MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE"); - IF_GUID_EQUAL_RETURN(guid,0xba491364,0xbe50,0x451e,0x95,0xab,0x6d,0x4a,0xcc,0xc7,0xda,0xd8,"MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_CLSID"); - IF_GUID_EQUAL_RETURN(guid,0xba491366,0xbe50,0x451e,0x95,0xab,0x6d,0x4a,0xcc,0xc7,0xda,0xd8,"MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0xc1f6093c,0x7f65,0x4fbd,0x9e,0x39,0x5f,0xae,0xc3,0xc4,0xfb,0xd7,"MF_ACTIVATE_MFT_LOCKED"); - IF_GUID_EQUAL_RETURN(guid,0x9a2dbbdd,0xf57e,0x4162,0x82,0xb9,0x68,0x31,0x37,0x76,0x82,0xd3,"MF_ACTIVATE_VIDEO_WINDOW"); - IF_GUID_EQUAL_RETURN(guid,0x22587627,0x47de,0x4168,0x87,0xf5,0xb5,0xaa,0x9b,0x12,0xa8,0xf0,"MF_ASFPROFILE_MAXPACKETSIZE"); - IF_GUID_EQUAL_RETURN(guid,0x22587626,0x47de,0x4168,0x87,0xf5,0xb5,0xaa,0x9b,0x12,0xa8,0xf0,"MF_ASFPROFILE_MINPACKETSIZE"); - IF_GUID_EQUAL_RETURN(guid,0xc69b5901,0xea1a,0x4c9b,0xb6,0x92,0xe2,0xa0,0xd2,0x9a,0x8a,0xdd,"MF_ASFSTREAMCONFIG_LEAKYBUCKET1"); - IF_GUID_EQUAL_RETURN(guid,0xc69b5902,0xea1a,0x4c9b,0xb6,0x92,0xe2,0xa0,0xd2,0x9a,0x8a,0xdd,"MF_ASFSTREAMCONFIG_LEAKYBUCKET2"); - IF_GUID_EQUAL_RETURN(guid,0xb10aaec3,0xef71,0x4cc3,0xb8,0x73,0x5,0xa9,0xa0,0x8b,0x9f,0x8e,"MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ID"); - IF_GUID_EQUAL_RETURN(guid,0x6ba644ff,0x27c5,0x4d02,0x98,0x87,0xc2,0x86,0x19,0xfd,0xb9,0x1b,"MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ROLE"); - IF_GUID_EQUAL_RETURN(guid,0xede4b5e0,0xf805,0x4d6c,0x99,0xb3,0xdb,0x01,0xbf,0x95,0xdf,0xab,"MF_AUDIO_RENDERER_ATTRIBUTE_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0xede4b5e3,0xf805,0x4d6c,0x99,0xb3,0xdb,0x01,0xbf,0x95,0xdf,0xab,"MF_AUDIO_RENDERER_ATTRIBUTE_SESSION_ID"); - IF_GUID_EQUAL_RETURN(guid,0xa9770471,0x92ec,0x4df4,0x94,0xfe,0x81,0xc3,0x6f,0xc,0x3a,0x7a,"MF_AUDIO_RENDERER_ATTRIBUTE_STREAM_CATEGORY"); - IF_GUID_EQUAL_RETURN(guid,0xa6e1f733,0x3001,0x4915,0x81,0x50,0x15,0x58,0xa2,0x18,0xe,0xc8,"MF_BYTESTREAMHANDLER_ACCEPTS_SHARE_WRITE"); - IF_GUID_EQUAL_RETURN(guid,0xfc358289,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a,"MF_BYTESTREAM_CONTENT_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0xfc35828d,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a,"MF_BYTESTREAM_DLNA_PROFILE_ID"); - IF_GUID_EQUAL_RETURN(guid,0xfc35828a,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a,"MF_BYTESTREAM_DURATION"); - IF_GUID_EQUAL_RETURN(guid,0x9afa0209,0x89d1,0x42af,0x84,0x56,0x1d,0xe6,0xb5,0x62,0xd6,0x91,"MF_BYTESTREAM_EFFECTIVE_URL"); - IF_GUID_EQUAL_RETURN(guid,0xfc35828c,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a,"MF_BYTESTREAM_IFO_FILE_URI"); - IF_GUID_EQUAL_RETURN(guid,0xfc35828b,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a,"MF_BYTESTREAM_LAST_MODIFIED_TIME"); - IF_GUID_EQUAL_RETURN(guid,0xfc358288,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a,"MF_BYTESTREAM_ORIGIN_NAME"); - IF_GUID_EQUAL_RETURN(guid,0xab025e2b,0x16d9,0x4180,0xa1,0x27,0xba,0x6c,0x70,0x15,0x61,0x61,"MF_BYTESTREAM_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xb6c5c282,0x4dc9,0x4db9,0xab,0x48,0xcf,0x3b,0x6d,0x8b,0xc5,0xe0,"MF_BYTESTREAM_TRANSCODED"); - IF_GUID_EQUAL_RETURN(guid,0xfded7521,0x8ed8,0x431a,0xa9,0x6b,0xf3,0xe2,0x56,0x5e,0x98,0x1c,"MF_CAPTURE_ENGINE_ALL_EFFECTS_REMOVED"); - IF_GUID_EQUAL_RETURN(guid,0x76e25e7b,0xd595,0x4283,0x96,0x2c,0xc5,0x94,0xaf,0xd7,0x8d,0xdf,"MF_CAPTURE_ENGINE_D3D_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x2b8ad2e8,0x7acb,0x4321,0xa6,0x06,0x32,0x5c,0x42,0x49,0xf4,0xfc,"MF_CAPTURE_ENGINE_DECODER_MFT_FIELDOFUSE_UNLOCK_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0xf9818862,0x179d,0x433f,0xa3,0x2f,0x74,0xcb,0xcf,0x74,0x46,0x6d,"MF_CAPTURE_ENGINE_DISABLE_DXVA"); - IF_GUID_EQUAL_RETURN(guid,0xb7c42a6b,0x3207,0x4495,0xb4,0xe7,0x81,0xf9,0xc3,0x5d,0x59,0x91,"MF_CAPTURE_ENGINE_DISABLE_HARDWARE_TRANSFORMS"); - IF_GUID_EQUAL_RETURN(guid,0xaa8dc7b5,0xa048,0x4e13,0x8e,0xbe,0xf2,0x3c,0x46,0xc8,0x30,0xc1,"MF_CAPTURE_ENGINE_EFFECT_ADDED"); - IF_GUID_EQUAL_RETURN(guid,0xc6e8db07,0xfb09,0x4a48,0x89,0xc6,0xbf,0x92,0xa0,0x42,0x22,0xc9,"MF_CAPTURE_ENGINE_EFFECT_REMOVED"); - IF_GUID_EQUAL_RETURN(guid,0x54c63a00,0x78d5,0x422f,0xaa,0x3e,0x5e,0x99,0xac,0x64,0x92,0x69,"MF_CAPTURE_ENGINE_ENCODER_MFT_FIELDOFUSE_UNLOCK_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x46b89fc6,0x33cc,0x4399,0x9d,0xad,0x78,0x4d,0xe7,0x7d,0x58,0x7c,"MF_CAPTURE_ENGINE_ERROR"); - IF_GUID_EQUAL_RETURN(guid,0xabfa8ad5,0xfc6d,0x4911,0x87,0xe0,0x96,0x19,0x45,0xf8,0xf7,0xce,"MF_CAPTURE_ENGINE_EVENT_GENERATOR_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x82697f44,0xb1cf,0x42eb,0x97,0x53,0xf8,0x6d,0x64,0x9c,0x88,0x65,"MF_CAPTURE_ENGINE_EVENT_STREAM_INDEX"); - IF_GUID_EQUAL_RETURN(guid,0x219992bc,0xcf92,0x4531,0xa1,0xae,0x96,0xe1,0xe8,0x86,0xc8,0xf1,"MF_CAPTURE_ENGINE_INITIALIZED"); - IF_GUID_EQUAL_RETURN(guid,0xbc6989d2,0x0fc1,0x46e1,0xa7,0x4f,0xef,0xd3,0x6b,0xc7,0x88,0xde,"MF_CAPTURE_ENGINE_MEDIASOURCE_CONFIG"); - IF_GUID_EQUAL_RETURN(guid,0x3c50c445,0x7304,0x48eb,0x86,0x5d,0xbb,0xa1,0x9b,0xa3,0xaf,0x5c,"MF_CAPTURE_ENGINE_PHOTO_TAKEN"); - IF_GUID_EQUAL_RETURN(guid,0xa416df21,0xf9d3,0x4a74,0x99,0x1b,0xb8,0x17,0x29,0x89,0x52,0xc4,"MF_CAPTURE_ENGINE_PREVIEW_STARTED"); - IF_GUID_EQUAL_RETURN(guid,0x13d5143c,0x1edd,0x4e50,0xa2,0xef,0x35,0x0a,0x47,0x67,0x80,0x60,"MF_CAPTURE_ENGINE_PREVIEW_STOPPED"); - IF_GUID_EQUAL_RETURN(guid,0xe7b4a49e,0x382c,0x4aef,0xa9,0x46,0xae,0xd5,0x49,0xb,0x71,0x11,"MF_CAPTURE_ENGINE_RECORD_SINK_AUDIO_MAX_PROCESSED_SAMPLES"); - IF_GUID_EQUAL_RETURN(guid,0x1cddb141,0xa7f4,0x4d58,0x98,0x96,0x4d,0x15,0xa5,0x3c,0x4e,0xfe,"MF_CAPTURE_ENGINE_RECORD_SINK_AUDIO_MAX_UNPROCESSED_SAMPLES"); - IF_GUID_EQUAL_RETURN(guid,0xe7b4a49e,0x382c,0x4aef,0xa9,0x46,0xae,0xd5,0x49,0xb,0x71,0x11,"MF_CAPTURE_ENGINE_RECORD_SINK_VIDEO_MAX_PROCESSED_SAMPLES"); - IF_GUID_EQUAL_RETURN(guid,0xb467f705,0x7913,0x4894,0x9d,0x42,0xa2,0x15,0xfe,0xa2,0x3d,0xa9,"MF_CAPTURE_ENGINE_RECORD_SINK_VIDEO_MAX_UNPROCESSED_SAMPLES"); - IF_GUID_EQUAL_RETURN(guid,0xac2b027b,0xddf9,0x48a0,0x89,0xbe,0x38,0xab,0x35,0xef,0x45,0xc0,"MF_CAPTURE_ENGINE_RECORD_STARTED"); - IF_GUID_EQUAL_RETURN(guid,0x55e5200a,0xf98f,0x4c0d,0xa9,0xec,0x9e,0xb2,0x5e,0xd3,0xd7,0x73,"MF_CAPTURE_ENGINE_RECORD_STOPPED"); - IF_GUID_EQUAL_RETURN(guid,0x1c8077da,0x8466,0x4dc4,0x8b,0x8e,0x27,0x6b,0x3f,0x85,0x92,0x3b,"MF_CAPTURE_ENGINE_USE_AUDIO_DEVICE_ONLY"); - IF_GUID_EQUAL_RETURN(guid,0x7e025171,0xcf32,0x4f2e,0x8f,0x19,0x41,0x5,0x77,0xb7,0x3a,0x66,"MF_CAPTURE_ENGINE_USE_VIDEO_DEVICE_ONLY"); - IF_GUID_EQUAL_RETURN(guid,0x7BFCE257,0x12B1,0x4409,0x8C,0x34,0xD4,0x45,0xDA,0xAB,0x75,0x78,"MF_CAPTURE_SINK_PREPARED"); - IF_GUID_EQUAL_RETURN(guid,0xe7e75e4c,0x039c,0x4410,0x81,0x5b,0x87,0x41,0x30,0x7b,0x63,0xaa,"MF_CAPTURE_SOURCE_CURRENT_DEVICE_MEDIA_TYPE_SET"); - IF_GUID_EQUAL_RETURN(guid,0x048e6558,0x60c4,0x4173,0xbd,0x5b,0x6a,0x3c,0xa2,0x89,0x6a,0xee,"MF_DEVICESTREAM_EXTENSION_PLUGIN_CLSID"); - IF_GUID_EQUAL_RETURN(guid,0x37f9375c,0xe664,0x4ea4,0xaa,0xe4,0xcb,0x6d,0x1d,0xac,0xa1,0xf4,"MF_DEVICESTREAM_EXTENSION_PLUGIN_CONNECTION_POINT"); - IF_GUID_EQUAL_RETURN(guid,0xa7ffb865,0xe7b2,0x43b0,0x9f,0x6f,0x9a,0xf2,0xa0,0xe5,0xf,0xc0,"MF_DEVICESTREAM_IMAGE_STREAM"); - IF_GUID_EQUAL_RETURN(guid,0x3eeec7e,0xd605,0x4576,0x8b,0x29,0x65,0x80,0xb4,0x90,0xd7,0xd3,"MF_DEVICESTREAM_INDEPENDENT_IMAGE_STREAM"); - IF_GUID_EQUAL_RETURN(guid,0x1684cebe,0x3175,0x4985,0x88,0x2c,0x0e,0xfd,0x3e,0x8a,0xc1,0x1e,"MF_DEVICESTREAM_MAX_FRAME_BUFFERS"); - IF_GUID_EQUAL_RETURN(guid,0x2939e7b8,0xa62e,0x4579,0xb6,0x74,0xd4,0x7,0x3d,0xfa,0xbb,0xba,"MF_DEVICESTREAM_STREAM_CATEGORY"); - IF_GUID_EQUAL_RETURN(guid,0x11bd5120,0xd124,0x446b,0x88,0xe6,0x17,0x6,0x2,0x57,0xff,0xf9,"MF_DEVICESTREAM_STREAM_ID"); - IF_GUID_EQUAL_RETURN(guid,0x1d180e34,0x538c,0x4fbb,0xa7,0x5a,0x85,0x9a,0xf7,0xd2,0x61,0xa6,"MF_DEVICESTREAM_TAKEPHOTO_TRIGGER"); - IF_GUID_EQUAL_RETURN(guid,0xe63937b7,0xdaaf,0x4d49,0x81,0x5f,0xd8,0x26,0xf8,0xad,0x31,0xe7,"MF_DEVICESTREAM_TRANSFORM_STREAM_ID"); - IF_GUID_EQUAL_RETURN(guid,0x60d0e559,0x52f8,0x4fa2,0xbb,0xce,0xac,0xdb,0x34,0xa8,0xec,0x1,"MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME"); - IF_GUID_EQUAL_RETURN(guid,0x56a819ca,0xc78,0x4de4,0xa0,0xa7,0x3d,0xda,0xba,0xf,0x24,0xd4,"MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0xc60ac5fe,0x252a,0x478f,0xa0,0xef,0xbc,0x8f,0xa5,0xf7,0xca,0xd3,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x30da9258,0xfeb9,0x47a7,0xa4,0x53,0x76,0x3a,0x7a,0x8e,0x1c,0x5f,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID"); - IF_GUID_EQUAL_RETURN(guid,0x14dd9a1c,0x7cff,0x41be,0xb1,0xb9,0xba,0x1a,0xc6,0xec,0xb5,0x71,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xbc9d118e,0x8c67,0x4a18,0x85,0xd4,0x12,0xd3,0x0,0x40,0x5,0x52,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ROLE"); - IF_GUID_EQUAL_RETURN(guid,0x98d24b5e,0x5930,0x4614,0xb5,0xa1,0xf6,0x0,0xf9,0x35,0x5a,0x78,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_SYMBOLIC_LINK"); - IF_GUID_EQUAL_RETURN(guid,0x77f0ae69,0xc3bd,0x4509,0x94,0x1d,0x46,0x7e,0x4d,0x24,0x89,0x9e,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY"); - IF_GUID_EQUAL_RETURN(guid,0x8ac3587a,0x4ae7,0x42d8,0x99,0xe0,0x0a,0x60,0x13,0xee,0xf9,0x0f,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xde7046ba,0x54d6,0x4487,0xa2,0xa4,0xec,0x7c,0xd,0x1b,0xd1,0x63,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE"); - IF_GUID_EQUAL_RETURN(guid,0x7dd9b730,0x4f2d,0x41d5,0x8f,0x95,0xc,0xc9,0xa9,0x12,0xba,0x26,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_MAX_BUFFERS"); - IF_GUID_EQUAL_RETURN(guid,0x58f0aad8,0x22bf,0x4f8a,0xbb,0x3d,0xd2,0xc4,0x97,0x8c,0x6e,0x2f,"MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK"); - IF_GUID_EQUAL_RETURN(guid,0x66b16da9,0xadd4,0x47e0,0xa1,0x6b,0x5a,0xf1,0xfb,0x48,0x36,0x34,"MF_DISABLE_LOCALLY_REGISTERED_PLUGINS"); - IF_GUID_EQUAL_RETURN(guid,0xbdad7bca,0xe5f,0x4b10,0xab,0x16,0x26,0xde,0x38,0x1b,0x62,0x93,"MF_ENABLE_3DVIDEO_OUTPUT"); - IF_GUID_EQUAL_RETURN(guid,0x321ea6fb,0xdad9,0x46e4,0xb3,0x1d,0xd2,0xea,0xe7,0x9,0xe,0x30,"MF_EVENT_DO_THINNING"); - IF_GUID_EQUAL_RETURN(guid,0xb26fbdfd,0xc32c,0x41fe,0x9c,0xf0,0x8,0x3c,0xd5,0xc7,0xf8,0xa4,"MF_EVENT_FORMAT_CHANGE_REQUEST_SOURCE_SAR"); - IF_GUID_EQUAL_RETURN(guid,0xb7cd31f1,0x899e,0x4b41,0x80,0xc9,0x26,0xa8,0x96,0xd3,0x29,0x77,"MF_EVENT_MFT_CONTEXT"); - IF_GUID_EQUAL_RETURN(guid,0xf29c2cca,0x7ae6,0x42d2,0xb2,0x84,0xbf,0x83,0x7c,0xc8,0x74,0xe2,"MF_EVENT_MFT_INPUT_STREAM_ID"); - IF_GUID_EQUAL_RETURN(guid,0x830f1a8b,0xc060,0x46dd,0xa8,0x01,0x1c,0x95,0xde,0xc9,0xb1,0x07,"MF_EVENT_OUTPUT_NODE"); - IF_GUID_EQUAL_RETURN(guid,0x5ad914d1,0x9b45,0x4a8d,0xa2,0xc0,0x81,0xd1,0xe5,0xb,0xfb,0x7,"MF_EVENT_PRESENTATION_TIME_OFFSET"); - IF_GUID_EQUAL_RETURN(guid,0x9ac712b3,0xdcb8,0x44d5,0x8d,0xc,0x37,0x45,0x5a,0x27,0x82,0xe3,"MF_EVENT_SCRUBSAMPLE_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x7e5ebcd0,0x11b8,0x4abe,0xaf,0xad,0x10,0xf6,0x59,0x9a,0x7f,0x42,"MF_EVENT_SESSIONCAPS"); - IF_GUID_EQUAL_RETURN(guid,0x7e5ebcd1,0x11b8,0x4abe,0xaf,0xad,0x10,0xf6,0x59,0x9a,0x7f,0x42,"MF_EVENT_SESSIONCAPS_DELTA"); - IF_GUID_EQUAL_RETURN(guid,0xa8cc55a9,0x6b31,0x419f,0x84,0x5d,0xff,0xb3,0x51,0xa2,0x43,0x4b,"MF_EVENT_SOURCE_ACTUAL_START"); - IF_GUID_EQUAL_RETURN(guid,0x47db8490,0x8b22,0x4f52,0xaf,0xda,0x9c,0xe1,0xb2,0xd3,0xcf,0xa8,"MF_EVENT_SOURCE_CHARACTERISTICS"); - IF_GUID_EQUAL_RETURN(guid,0x47db8491,0x8b22,0x4f52,0xaf,0xda,0x9c,0xe1,0xb2,0xd3,0xcf,0xa8,"MF_EVENT_SOURCE_CHARACTERISTICS_OLD"); - IF_GUID_EQUAL_RETURN(guid,0xa8cc55a7,0x6b31,0x419f,0x84,0x5d,0xff,0xb3,0x51,0xa2,0x43,0x4b,"MF_EVENT_SOURCE_FAKE_START"); - IF_GUID_EQUAL_RETURN(guid,0xa8cc55a8,0x6b31,0x419f,0x84,0x5d,0xff,0xb3,0x51,0xa2,0x43,0x4b,"MF_EVENT_SOURCE_PROJECTSTART"); - IF_GUID_EQUAL_RETURN(guid,0xdb62f650,0x9a5e,0x4704,0xac,0xf3,0x56,0x3b,0xc6,0xa7,0x33,0x64,"MF_EVENT_SOURCE_TOPOLOGY_CANCELED"); - IF_GUID_EQUAL_RETURN(guid,0x5ad914d0,0x9b45,0x4a8d,0xa2,0xc0,0x81,0xd1,0xe5,0xb,0xfb,0x7,"MF_EVENT_START_PRESENTATION_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x5ad914d2,0x9b45,0x4a8d,0xa2,0xc0,0x81,0xd1,0xe5,0xb,0xfb,0x7,"MF_EVENT_START_PRESENTATION_TIME_AT_OUTPUT"); - IF_GUID_EQUAL_RETURN(guid,0x30c5018d,0x9a53,0x454b,0xad,0x9e,0x6d,0x5f,0x8f,0xa7,0xc4,0x3b,"MF_EVENT_TOPOLOGY_STATUS"); - IF_GUID_EQUAL_RETURN(guid,0xddf5cf9c,0x4506,0x45aa,0xab,0xf0,0x6d,0x5d,0x94,0xdd,0x1b,0x4a,"MF_LOCAL_MFT_REGISTRATION_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xd91b0085,0xc86d,0x4f81,0x88,0x22,0x8c,0x68,0xe1,0xd7,0xfa,0x04,"MF_LOCAL_PLUGIN_CONTROL_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x9c27891a,0xed7a,0x40e1,0x88,0xe8,0xb2,0x27,0x27,0xa0,0x24,0xee,"MF_LOW_LATENCY"); - IF_GUID_EQUAL_RETURN(guid,0xc8d4c51d,0x350e,0x41f2,0xba,0x46,0xfa,0xeb,0xbb,0x08,0x57,0xf6,"MF_MEDIA_ENGINE_AUDIO_CATEGORY"); - IF_GUID_EQUAL_RETURN(guid,0xd2cb93d1,0x116a,0x44f2,0x93,0x85,0xf7,0xd0,0xfd,0xa2,0xfb,0x46,"MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE"); - IF_GUID_EQUAL_RETURN(guid,0x4e0212e2,0xe18f,0x41e1,0x95,0xe5,0xc0,0xe7,0xe9,0x23,0x5b,0xc3,"MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x11a47afd,0x6589,0x4124,0xb3,0x12,0x61,0x58,0xec,0x51,0x7f,0xc3,"MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE10"); - IF_GUID_EQUAL_RETURN(guid,0x052c2d39,0x40c0,0x4188,0xab,0x86,0xf8,0x28,0x27,0x3b,0x75,0x22,"MF_MEDIA_ENGINE_BROWSER_COMPATIBILITY_MODE_IE9"); - IF_GUID_EQUAL_RETURN(guid,0xc60381b8,0x83a4,0x41f8,0xa3,0xd0,0xde,0x05,0x07,0x68,0x49,0xa9,"MF_MEDIA_ENGINE_CALLBACK"); - IF_GUID_EQUAL_RETURN(guid,0xe0350223,0x5aaf,0x4d76,0xa7,0xc3,0x06,0xde,0x70,0x89,0x4d,0xb4,"MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0xfdd6dfaa,0xbd85,0x4af3,0x9e,0x0f,0xa0,0x1d,0x53,0x9d,0x87,0x6a,"MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0xfccae4dc,0x0b7f,0x41c2,0x9f,0x96,0x46,0x59,0x94,0x8a,0xcd,0xdc,"MF_MEDIA_ENGINE_COREWINDOW"); - IF_GUID_EQUAL_RETURN(guid,0x065702da,0x1094,0x486d,0x86,0x17,0xee,0x7c,0xc4,0xee,0x46,0x48,"MF_MEDIA_ENGINE_DXGI_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x3109fd46,0x060d,0x4b62,0x8d,0xcf,0xfa,0xff,0x81,0x13,0x18,0xd2,"MF_MEDIA_ENGINE_EXTENSION"); - IF_GUID_EQUAL_RETURN(guid,0xa0be8ee7,0x0572,0x4f2c,0xa8,0x01,0x2a,0x15,0x1b,0xd3,0xe7,0x26,"MF_MEDIA_ENGINE_OPM_HWND"); - IF_GUID_EQUAL_RETURN(guid,0xd988879b,0x67c9,0x4d92,0xba,0xa7,0x6e,0xad,0xd4,0x46,0x03,0x9d,"MF_MEDIA_ENGINE_PLAYBACK_HWND"); - IF_GUID_EQUAL_RETURN(guid,0x6debd26f,0x6ab9,0x4d7e,0xb0,0xee,0xc6,0x1a,0x73,0xff,0xad,0x15,"MF_MEDIA_ENGINE_PLAYBACK_VISUAL"); - IF_GUID_EQUAL_RETURN(guid,0x0ac0c497,0xb3c4,0x48c9,0x9c,0xde,0xbb,0x8c,0xa2,0x44,0x2c,0xa3,"MF_MEDIA_ENGINE_SOURCE_RESOLVER_CONFIG_STORE"); - IF_GUID_EQUAL_RETURN(guid,0x5cbfaf44,0xd2b2,0x4cfb,0x80,0xa7,0xd4,0x29,0xc7,0x4c,0x78,0x9d,"MF_MEDIA_ENGINE_STREAM_CONTAINS_ALPHA_CHANNEL"); - IF_GUID_EQUAL_RETURN(guid,0x5066893c,0x8cf9,0x42bc,0x8b,0x8a,0x47,0x22,0x12,0xe5,0x27,0x26,"MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT"); - IF_GUID_EQUAL_RETURN(guid,0xb461c58a,0x7a08,0x4b98,0x99,0xa8,0x70,0xfd,0x5f,0x3b,0xad,0xfd,"MF_MEDIA_SHARING_ENGINE_DEVICE"); - IF_GUID_EQUAL_RETURN(guid,0x771e05d1,0x862f,0x4299,0x95,0xac,0xae,0x81,0xfd,0x14,0xf3,0xe7,"MF_MEDIA_SHARING_ENGINE_DEVICE_NAME"); - IF_GUID_EQUAL_RETURN(guid,0x6f3497f5,0xd528,0x4a4f,0x8d,0xd7,0xdb,0x36,0x65,0x7e,0xc4,0xc9,"MF_MEDIA_SHARING_ENGINE_INITIAL_SEEK_TIME"); - IF_GUID_EQUAL_RETURN(guid,0xdb214084,0x58a4,0x4d2e,0xb8,0x4f,0x6f,0x75,0x5b,0x2f,0x7a,0xd,"MF_METADATA_PROVIDER_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x2d1c070e,0x2b5f,0x4ab3,0xa7,0xe6,0x8d,0x94,0x3b,0xa8,0xd0,0x0a,"MF_MP2DLNA_AUDIO_BIT_RATE"); - IF_GUID_EQUAL_RETURN(guid,0xb52379d7,0x1d46,0x4fb6,0xa3,0x17,0xa4,0xa5,0xf6,0x09,0x59,0xf8,"MF_MP2DLNA_ENCODE_QUALITY"); - IF_GUID_EQUAL_RETURN(guid,0x75e488a3,0xd5ad,0x4898,0x85,0xe0,0xbc,0xce,0x24,0xa7,0x22,0xd7,"MF_MP2DLNA_STATISTICS"); - IF_GUID_EQUAL_RETURN(guid,0x54f3e2ee,0xa2a2,0x497d,0x98,0x34,0x97,0x3a,0xfd,0xe5,0x21,0xeb,"MF_MP2DLNA_USE_MMCSS"); - IF_GUID_EQUAL_RETURN(guid,0xe88548de,0x73b4,0x42d7,0x9c,0x75,0xad,0xfa,0xa,0x2a,0x6e,0x4c,"MF_MP2DLNA_VIDEO_BIT_RATE"); - IF_GUID_EQUAL_RETURN(guid,0xf672e3ac,0xe1e6,0x4f10,0xb5,0xec,0x5f,0x3b,0x30,0x82,0x88,0x16,"MF_MPEG4SINK_MOOV_BEFORE_MDAT"); - IF_GUID_EQUAL_RETURN(guid,0x5601a134,0x2005,0x4ad2,0xb3,0x7d,0x22,0xa6,0xc5,0x54,0xde,0xb2,"MF_MPEG4SINK_SPSPPS_PASSTHROUGH"); - IF_GUID_EQUAL_RETURN(guid,0x7632f0e6,0x9538,0x4d61,0xac,0xda,0xea,0x29,0xc8,0xc1,0x44,0x56,"MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION"); - IF_GUID_EQUAL_RETURN(guid,0xbfbabe79,0x7434,0x4d1c,0x94,0xf0,0x72,0xa3,0xb9,0xe1,0x71,0x88,"MF_MT_AAC_PAYLOAD_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0xc9173739,0x5e56,0x461c,0xb7,0x13,0x46,0xfb,0x99,0x5c,0xb9,0x5f,"MF_MT_ALL_SAMPLES_INDEPENDENT"); - IF_GUID_EQUAL_RETURN(guid,0x73d1072d,0x1870,0x4174,0xa0,0x63,0x29,0xff,0x4f,0xf6,0xc1,0x1e,"MF_MT_AM_FORMAT_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x5a75b249,0xd7d,0x49a1,0xa1,0xc3,0xe0,0xd8,0x7f,0xc,0xad,0xe5,"MF_MT_ARBITRARY_FORMAT"); - IF_GUID_EQUAL_RETURN(guid,0x9e6bd6f5,0x109,0x4f95,0x84,0xac,0x93,0x9,0x15,0x3a,0x19,0xfc,"MF_MT_ARBITRARY_HEADER"); - IF_GUID_EQUAL_RETURN(guid,0x1aab75c8,0xcfef,0x451c,0xab,0x95,0xac,0x03,0x4b,0x8e,0x17,0x31,"MF_MT_AUDIO_AVG_BYTES_PER_SECOND"); - IF_GUID_EQUAL_RETURN(guid,0xf2deb57f,0x40fa,0x4764,0xaa,0x33,0xed,0x4f,0x2d,0x1f,0xf6,0x69,"MF_MT_AUDIO_BITS_PER_SAMPLE"); - IF_GUID_EQUAL_RETURN(guid,0x322de230,0x9eeb,0x43bd,0xab,0x7a,0xff,0x41,0x22,0x51,0x54,0x1d,"MF_MT_AUDIO_BLOCK_ALIGNMENT"); - IF_GUID_EQUAL_RETURN(guid,0x55fb5765,0x644a,0x4caf,0x84,0x79,0x93,0x89,0x83,0xbb,0x15,0x88,"MF_MT_AUDIO_CHANNEL_MASK"); - IF_GUID_EQUAL_RETURN(guid,0xfb3b724a,0xcfb5,0x4319,0xae,0xfe,0x6e,0x42,0xb2,0x40,0x61,0x32,"MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECOND"); - IF_GUID_EQUAL_RETURN(guid,0x9d62927c,0x36be,0x4cf2,0xb5,0xc4,0xa3,0x92,0x6e,0x3e,0x87,0x11,"MF_MT_AUDIO_FOLDDOWN_MATRIX"); - IF_GUID_EQUAL_RETURN(guid,0x37e48bf5,0x645e,0x4c5b,0x89,0xde,0xad,0xa9,0xe2,0x9b,0x69,0x6a,"MF_MT_AUDIO_NUM_CHANNELS"); - IF_GUID_EQUAL_RETURN(guid,0xa901aaba,0xe037,0x458a,0xbd,0xf6,0x54,0x5b,0xe2,0x07,0x40,0x42,"MF_MT_AUDIO_PREFER_WAVEFORMATEX"); - IF_GUID_EQUAL_RETURN(guid,0xaab15aac,0xe13a,0x4995,0x92,0x22,0x50,0x1e,0xa1,0x5c,0x68,0x77,"MF_MT_AUDIO_SAMPLES_PER_BLOCK"); - IF_GUID_EQUAL_RETURN(guid,0x5faeeae7,0x0290,0x4c31,0x9e,0x8a,0xc5,0x34,0xf6,0x8d,0x9d,0xba,"MF_MT_AUDIO_SAMPLES_PER_SECOND"); - IF_GUID_EQUAL_RETURN(guid,0xd9bf8d6a,0x9530,0x4b7c,0x9d,0xdf,0xff,0x6f,0xd5,0x8b,0xbd,0x06,"MF_MT_AUDIO_VALID_BITS_PER_SAMPLE"); - IF_GUID_EQUAL_RETURN(guid,0x9d62927f,0x36be,0x4cf2,0xb5,0xc4,0xa3,0x92,0x6e,0x3e,0x87,0x11,"MF_MT_AUDIO_WMADRC_AVGREF"); - IF_GUID_EQUAL_RETURN(guid,0x9d629280,0x36be,0x4cf2,0xb5,0xc4,0xa3,0x92,0x6e,0x3e,0x87,0x11,"MF_MT_AUDIO_WMADRC_AVGTARGET"); - IF_GUID_EQUAL_RETURN(guid,0x9d62927d,0x36be,0x4cf2,0xb5,0xc4,0xa3,0x92,0x6e,0x3e,0x87,0x11,"MF_MT_AUDIO_WMADRC_PEAKREF"); - IF_GUID_EQUAL_RETURN(guid,0x9d62927e,0x36be,0x4cf2,0xb5,0xc4,0xa3,0x92,0x6e,0x3e,0x87,0x11,"MF_MT_AUDIO_WMADRC_PEAKTARGET"); - IF_GUID_EQUAL_RETURN(guid,0x20332624,0xfb0d,0x4d9e,0xbd,0x0d,0xcb,0xf6,0x78,0x6c,0x10,0x2e,"MF_MT_AVG_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0x799cabd6,0x3508,0x4db4,0xa3,0xc7,0x56,0x9c,0xd5,0x33,0xde,0xb1,"MF_MT_AVG_BIT_ERROR_RATE"); - IF_GUID_EQUAL_RETURN(guid,0x3afd0cee,0x18f2,0x4ba5,0xa1,0x10,0x8b,0xea,0x50,0x2e,0x1f,0x92,"MF_MT_COMPRESSED"); - IF_GUID_EQUAL_RETURN(guid,0x47537213,0x8cfb,0x4722,0xaa,0x34,0xfb,0xc9,0xe2,0x4d,0x77,0xb8,"MF_MT_CUSTOM_VIDEO_PRIMARIES"); - IF_GUID_EQUAL_RETURN(guid,0x644b4e48,0x1e02,0x4516,0xb0,0xeb,0xc0,0x1c,0xa9,0xd4,0x9a,0xc6,"MF_MT_DEFAULT_STRIDE"); - IF_GUID_EQUAL_RETURN(guid,0x8772f323,0x355a,0x4cc7,0xbb,0x78,0x6d,0x61,0xa0,0x48,0xae,0x82,"MF_MT_DRM_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0xf731004e,0x1dd1,0x4515,0xaa,0xbe,0xf0,0xc0,0x6a,0xa5,0x36,0xac,"MF_MT_DV_AAUX_CTRL_PACK_0"); - IF_GUID_EQUAL_RETURN(guid,0xcd1f470d,0x1f04,0x4fe0,0xbf,0xb9,0xd0,0x7a,0xe0,0x38,0x6a,0xd8,"MF_MT_DV_AAUX_CTRL_PACK_1"); - IF_GUID_EQUAL_RETURN(guid,0x84bd5d88,0x0fb8,0x4ac8,0xbe,0x4b,0xa8,0x84,0x8b,0xef,0x98,0xf3,"MF_MT_DV_AAUX_SRC_PACK_0"); - IF_GUID_EQUAL_RETURN(guid,0x720e6544,0x0225,0x4003,0xa6,0x51,0x01,0x96,0x56,0x3a,0x95,0x8e,"MF_MT_DV_AAUX_SRC_PACK_1"); - IF_GUID_EQUAL_RETURN(guid,0x2f84e1c4,0x0da1,0x4788,0x93,0x8e,0x0d,0xfb,0xfb,0xb3,0x4b,0x48,"MF_MT_DV_VAUX_CTRL_PACK"); - IF_GUID_EQUAL_RETURN(guid,0x41402d9d,0x7b57,0x43c6,0xb1,0x29,0x2c,0xb9,0x97,0xf1,0x50,0x09,"MF_MT_DV_VAUX_SRC_PACK"); - IF_GUID_EQUAL_RETURN(guid,0xb8ebefaf,0xb718,0x4e04,0xb0,0xa9,0x11,0x67,0x75,0xe3,0x32,0x1b,"MF_MT_FIXED_SIZE_SAMPLES"); - IF_GUID_EQUAL_RETURN(guid,0xc459a2e8,0x3d2c,0x4e44,0xb1,0x32,0xfe,0xe5,0x15,0x6c,0x7b,0xb0,"MF_MT_FRAME_RATE"); - IF_GUID_EQUAL_RETURN(guid,0xe3371d41,0xb4cf,0x4a05,0xbd,0x4e,0x20,0xb8,0x8b,0xb2,0xc4,0xd6,"MF_MT_FRAME_RATE_RANGE_MAX"); - IF_GUID_EQUAL_RETURN(guid,0xd2e7558c,0xdc1f,0x403f,0x9a,0x72,0xd2,0x8b,0xb1,0xeb,0x3b,0x5e,"MF_MT_FRAME_RATE_RANGE_MIN"); - IF_GUID_EQUAL_RETURN(guid,0x1652c33d,0xd6b2,0x4012,0xb8,0x34,0x72,0x03,0x08,0x49,0xa3,0x7d,"MF_MT_FRAME_SIZE"); - IF_GUID_EQUAL_RETURN(guid,0x66758743,0x7e5f,0x400d,0x98,0x0a,0xaa,0x85,0x96,0xc8,0x56,0x96,"MF_MT_GEOMETRIC_APERTURE"); - IF_GUID_EQUAL_RETURN(guid,0xbb3bd508,0x490a,0x11e0,0x99,0xe4,0x13,0x16,0xdf,0xd7,0x20,0x85,"MF_MT_H264_CAPABILITIES"); - IF_GUID_EQUAL_RETURN(guid,0x85e299b2,0x90e3,0x4fe8,0xb2,0xf5,0xc0,0x67,0xe0,0xbf,0xe5,0x7a,"MF_MT_H264_LAYOUT_PER_STREAM"); - IF_GUID_EQUAL_RETURN(guid,0xf5929986,0x4c45,0x4fbb,0xbb,0x49,0x6c,0xc5,0x34,0xd0,0x5b,0x9b,"MF_MT_H264_MAX_CODEC_CONFIG_DELAY"); - IF_GUID_EQUAL_RETURN(guid,0x45256d30,0x7215,0x4576,0x93,0x36,0xb0,0xf1,0xbc,0xd5,0x9b,0xb2,"MF_MT_H264_MAX_MB_PER_SEC"); - IF_GUID_EQUAL_RETURN(guid,0x705177d8,0x45cb,0x11e0,0xac,0x7d,0xb9,0x1c,0xe0,0xd7,0x20,0x85,"MF_MT_H264_RATE_CONTROL_MODES"); - IF_GUID_EQUAL_RETURN(guid,0xe3854272,0xf715,0x4757,0xba,0x90,0x1b,0x69,0x6c,0x77,0x34,0x57,"MF_MT_H264_RESOLUTION_SCALING"); - IF_GUID_EQUAL_RETURN(guid,0x9ea2d63d,0x53f0,0x4a34,0xb9,0x4e,0x9d,0xe4,0x9a,0x7,0x8c,0xb3,"MF_MT_H264_SIMULCAST_SUPPORT"); - IF_GUID_EQUAL_RETURN(guid,0x6a8ac47e,0x519c,0x4f18,0x9b,0xb3,0x7e,0xea,0xae,0xa5,0x59,0x4d,"MF_MT_H264_SUPPORTED_RATE_CONTROL_MODES"); - IF_GUID_EQUAL_RETURN(guid,0xc8be1937,0x4d64,0x4549,0x83,0x43,0xa8,0x8,0x6c,0xb,0xfd,0xa5,"MF_MT_H264_SUPPORTED_SLICE_MODES"); - IF_GUID_EQUAL_RETURN(guid,0x89a52c01,0xf282,0x48d2,0xb5,0x22,0x22,0xe6,0xae,0x63,0x31,0x99,"MF_MT_H264_SUPPORTED_SYNC_FRAME_TYPES"); - IF_GUID_EQUAL_RETURN(guid,0x60b1a998,0xdc01,0x40ce,0x97,0x36,0xab,0xa8,0x45,0xa2,0xdb,0xdc,"MF_MT_H264_SUPPORTED_USAGES"); - IF_GUID_EQUAL_RETURN(guid,0xf8993abe,0xd937,0x4a8f,0xbb,0xca,0x69,0x66,0xfe,0x9e,0x11,0x52,"MF_MT_H264_SVC_CAPABILITIES"); - IF_GUID_EQUAL_RETURN(guid,0x359ce3a5,0xaf00,0x49ca,0xa2,0xf4,0x2a,0xc9,0x4c,0xa8,0x2b,0x61,"MF_MT_H264_USAGE"); - IF_GUID_EQUAL_RETURN(guid,0xed062cf4,0xe34e,0x4922,0xbe,0x99,0x93,0x40,0x32,0x13,0x3d,0x7c,"MF_MT_IMAGE_LOSS_TOLERANT"); - IF_GUID_EQUAL_RETURN(guid,0xe2724bb8,0xe676,0x4806,0xb4,0xb2,0xa8,0xd6,0xef,0xb4,0x4c,0xcd,"MF_MT_INTERLACE_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x48eba18e,0xf8c9,0x4687,0xbf,0x11,0x0a,0x74,0xc9,0xf9,0x6a,0x8f,"MF_MT_MAJOR_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0xc16eb52b,0x73a1,0x476f,0x8d,0x62,0x83,0x9d,0x6a,0x02,0x06,0x52,"MF_MT_MAX_KEYFRAME_SPACING"); - IF_GUID_EQUAL_RETURN(guid,0xd7388766,0x18fe,0x48c6,0xa1,0x77,0xee,0x89,0x48,0x67,0xc8,0xc4,"MF_MT_MINIMUM_DISPLAY_APERTURE"); - IF_GUID_EQUAL_RETURN(guid,0x825d55e4,0x4f12,0x4197,0x9e,0xb3,0x59,0xb6,0xe4,0x71,0xf,0x6,"MF_MT_MPEG2_CONTENT_PACKET"); - IF_GUID_EQUAL_RETURN(guid,0x31e3991d,0xf701,0x4b2f,0xb4,0x26,0x8a,0xe3,0xbd,0xa9,0xe0,0x4b,"MF_MT_MPEG2_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0x96f66574,0x11c5,0x4015,0x86,0x66,0xbf,0xf5,0x16,0x43,0x6d,0xa7,"MF_MT_MPEG2_LEVEL"); - IF_GUID_EQUAL_RETURN(guid,0xad76a80b,0x2d5c,0x4e0b,0xb3,0x75,0x64,0xe5,0x20,0x13,0x70,0x36,"MF_MT_MPEG2_PROFILE"); - IF_GUID_EQUAL_RETURN(guid,0xa20af9e8,0x928a,0x4b26,0xaa,0xa9,0xf0,0x5c,0x74,0xca,0xc4,0x7c,"MF_MT_MPEG2_STANDARD"); - IF_GUID_EQUAL_RETURN(guid,0x5229ba10,0xe29d,0x4f80,0xa5,0x9c,0xdf,0x4f,0x18,0x2,0x7,0xd2,"MF_MT_MPEG2_TIMECODE"); - IF_GUID_EQUAL_RETURN(guid,0x9aa7e155,0xb64a,0x4c1d,0xa5,0x00,0x45,0x5d,0x60,0x0b,0x65,0x60,"MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY"); - IF_GUID_EQUAL_RETURN(guid,0x261e9d83,0x9529,0x4b8f,0xa1,0x11,0x8b,0x9c,0x95,0x0a,0x81,0xa9,"MF_MT_MPEG4_SAMPLE_DESCRIPTION"); - IF_GUID_EQUAL_RETURN(guid,0x3c036de7,0x3ad0,0x4c9e,0x92,0x16,0xee,0x6d,0x6a,0xc2,0x1c,0xb3,"MF_MT_MPEG_SEQUENCE_HEADER"); - IF_GUID_EQUAL_RETURN(guid,0x91f67885,0x4333,0x4280,0x97,0xcd,0xbd,0x5a,0x6c,0x03,0xa0,0x6e,"MF_MT_MPEG_START_TIME_CODE"); - IF_GUID_EQUAL_RETURN(guid,0xd7be3fe0,0x2bc7,0x492d,0xb8,0x43,0x61,0xa1,0x91,0x9b,0x70,0xc3,"MF_MT_ORIGINAL_4CC"); - IF_GUID_EQUAL_RETURN(guid,0x8cbbc843,0x9fd9,0x49c2,0x88,0x2f,0xa7,0x25,0x86,0xc4,0x08,0xad,"MF_MT_ORIGINAL_WAVE_FORMAT_TAG"); - IF_GUID_EQUAL_RETURN(guid,0x4d0e73e5,0x80ea,0x4354,0xa9,0xd0,0x11,0x76,0xce,0xb0,0x28,0xea,"MF_MT_PAD_CONTROL_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0x6d283f42,0x9846,0x4410,0xaf,0xd9,0x65,0x4d,0x50,0x3b,0x1a,0x54,"MF_MT_PALETTE"); - IF_GUID_EQUAL_RETURN(guid,0x79614dde,0x9187,0x48fb,0xb8,0xc7,0x4d,0x52,0x68,0x9d,0xe6,0x49,"MF_MT_PAN_SCAN_APERTURE"); - IF_GUID_EQUAL_RETURN(guid,0x4b7f6bc3,0x8b13,0x40b2,0xa9,0x93,0xab,0xf6,0x30,0xb8,0x20,0x4e,"MF_MT_PAN_SCAN_ENABLED"); - IF_GUID_EQUAL_RETURN(guid,0xc6376a1e,0x8d0a,0x4027,0xbe,0x45,0x6d,0x9a,0x0a,0xd3,0x9b,0xb6,"MF_MT_PIXEL_ASPECT_RATIO"); - IF_GUID_EQUAL_RETURN(guid,0xdad3ab78,0x1990,0x408b,0xbc,0xe2,0xeb,0xa6,0x73,0xda,0xcc,0x10,"MF_MT_SAMPLE_SIZE"); - IF_GUID_EQUAL_RETURN(guid,0x68aca3cc,0x22d0,0x44e6,0x85,0xf8,0x28,0x16,0x71,0x97,0xfa,0x38,"MF_MT_SOURCE_CONTENT_HINT"); - IF_GUID_EQUAL_RETURN(guid,0xf7e34c9a,0x42e8,0x4714,0xb7,0x4b,0xcb,0x29,0xd7,0x2c,0x35,0xe5,"MF_MT_SUBTYPE"); - IF_GUID_EQUAL_RETURN(guid,0x24974215,0x1b7b,0x41e4,0x86,0x25,0xac,0x46,0x9f,0x2d,0xed,0xaa,"MF_MT_TIMESTAMP_CAN_BE_DTS"); - IF_GUID_EQUAL_RETURN(guid,0x5fb0fce9,0xbe5c,0x4935,0xa8,0x11,0xec,0x83,0x8f,0x8e,0xed,0x93,"MF_MT_TRANSFER_FUNCTION"); - IF_GUID_EQUAL_RETURN(guid,0xb6bc765f,0x4c3b,0x40a4,0xbd,0x51,0x25,0x35,0xb6,0x6f,0xe0,0x9d,"MF_MT_USER_DATA"); - IF_GUID_EQUAL_RETURN(guid,0xcb5e88cf,0x7b5b,0x476b,0x85,0xaa,0x1c,0xa5,0xae,0x18,0x75,0x55,"MF_MT_VIDEO_3D"); - IF_GUID_EQUAL_RETURN(guid,0xec298493,0xada,0x4ea1,0xa4,0xfe,0xcb,0xbd,0x36,0xce,0x93,0x31,"MF_MT_VIDEO_3D_FIRST_IS_LEFT"); - IF_GUID_EQUAL_RETURN(guid,0x5315d8a0,0x87c5,0x4697,0xb7,0x93,0x66,0x6,0xc6,0x7c,0x4,0x9b,"MF_MT_VIDEO_3D_FORMAT"); - IF_GUID_EQUAL_RETURN(guid,0x6d4b7bff,0x5629,0x4404,0x94,0x8c,0xc6,0x34,0xf4,0xce,0x26,0xd4,"MF_MT_VIDEO_3D_LEFT_IS_BASE"); - IF_GUID_EQUAL_RETURN(guid,0xbb077e8a,0xdcbf,0x42eb,0xaf,0x60,0x41,0x8d,0xf9,0x8a,0xa4,0x95,"MF_MT_VIDEO_3D_NUM_VIEWS"); - IF_GUID_EQUAL_RETURN(guid,0x65df2370,0xc773,0x4c33,0xaa,0x64,0x84,0x3e,0x06,0x8e,0xfb,0x0c,"MF_MT_VIDEO_CHROMA_SITING"); - IF_GUID_EQUAL_RETURN(guid,0x53a0529c,0x890b,0x4216,0x8b,0xf9,0x59,0x93,0x67,0xad,0x6d,0x20,"MF_MT_VIDEO_LIGHTING"); - IF_GUID_EQUAL_RETURN(guid,0xc21b8ee5,0xb956,0x4071,0x8d,0xaf,0x32,0x5e,0xdf,0x5c,0xab,0x11,"MF_MT_VIDEO_NOMINAL_RANGE"); - IF_GUID_EQUAL_RETURN(guid,0xdbfbe4d7,0x0740,0x4ee0,0x81,0x92,0x85,0x0a,0xb0,0xe2,0x19,0x35,"MF_MT_VIDEO_PRIMARIES"); - IF_GUID_EQUAL_RETURN(guid,0xc380465d,0x2271,0x428c,0x9b,0x83,0xec,0xea,0x3b,0x4a,0x85,0xc1,"MF_MT_VIDEO_ROTATION"); - IF_GUID_EQUAL_RETURN(guid,0x4d3f7b23,0xd02f,0x4e6c,0x9b,0xee,0xe4,0xbf,0x2c,0x6c,0x69,0x5d,"MF_MT_WRAPPED_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x3e23d450,0x2c75,0x4d25,0xa0,0x0e,0xb9,0x16,0x70,0xd1,0x23,0x27,"MF_MT_YUV_MATRIX"); - IF_GUID_EQUAL_RETURN(guid,0x19124E7C,0xAD4B,0x465F,0xBB,0x18,0x20,0x18,0x62,0x87,0xB6,0xAF,"MF_NALU_LENGTH_INFORMATION"); - IF_GUID_EQUAL_RETURN(guid,0xA7911D53,0x12A4,0x4965,0xAE,0x70,0x6E,0xAD,0xD6,0xFF,0x05,0x51,"MF_NALU_LENGTH_SET"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d32,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_APP_CONTEXT"); - IF_GUID_EQUAL_RETURN(guid,0xe4bb3509,0xc18d,0x4df1,0xbb,0x99,0x7a,0x36,0xb3,0xcc,0x41,0x19,"MF_PD_ASF_CODECLIST"); - IF_GUID_EQUAL_RETURN(guid,0x62508be5,0xecdf,0x4924,0xa3,0x59,0x72,0xba,0xb3,0x39,0x7b,0x9d,"MF_PD_ASF_CONTENTENCRYPTIONEX_ENCRYPTION_DATA"); - IF_GUID_EQUAL_RETURN(guid,0x8520fe3e,0x277e,0x46ea,0x99,0xe4,0xe3,0xa,0x86,0xdb,0x12,0xbe,"MF_PD_ASF_CONTENTENCRYPTION_KEYID"); - IF_GUID_EQUAL_RETURN(guid,0x8520fe40,0x277e,0x46ea,0x99,0xe4,0xe3,0xa,0x86,0xdb,0x12,0xbe,"MF_PD_ASF_CONTENTENCRYPTION_LICENSE_URL"); - IF_GUID_EQUAL_RETURN(guid,0x8520fe3f,0x277e,0x46ea,0x99,0xe4,0xe3,0xa,0x86,0xdb,0x12,0xbe,"MF_PD_ASF_CONTENTENCRYPTION_SECRET_DATA"); - IF_GUID_EQUAL_RETURN(guid,0x8520fe3d,0x277e,0x46ea,0x99,0xe4,0xe3,0xa,0x86,0xdb,0x12,0xbe,"MF_PD_ASF_CONTENTENCRYPTION_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0xe7d5b3e8,0x1f29,0x45d3,0x88,0x22,0x3e,0x78,0xfa,0xe2,0x72,0xed,"MF_PD_ASF_DATA_LENGTH"); - IF_GUID_EQUAL_RETURN(guid,0xe7d5b3e7,0x1f29,0x45d3,0x88,0x22,0x3e,0x78,0xfa,0xe2,0x72,0xed,"MF_PD_ASF_DATA_START_OFFSET"); - IF_GUID_EQUAL_RETURN(guid,0x3de649b6,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_CREATION_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x3de649b4,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_FILE_ID"); - IF_GUID_EQUAL_RETURN(guid,0x3de649bb,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_FLAGS"); - IF_GUID_EQUAL_RETURN(guid,0x3de649be,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_MAX_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0x3de649bd,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_MAX_PACKET_SIZE"); - IF_GUID_EQUAL_RETURN(guid,0x3de649bc,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_MIN_PACKET_SIZE"); - IF_GUID_EQUAL_RETURN(guid,0x3de649b7,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_PACKETS"); - IF_GUID_EQUAL_RETURN(guid,0x3de649b8,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION"); - IF_GUID_EQUAL_RETURN(guid,0x3de649ba,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_PREROLL"); - IF_GUID_EQUAL_RETURN(guid,0x3de649b9,0xd76d,0x4e66,0x9e,0xc9,0x78,0x12,0xf,0xb4,0xc7,0xe3,"MF_PD_ASF_FILEPROPERTIES_SEND_DURATION"); - IF_GUID_EQUAL_RETURN(guid,0x80e62295,0x2296,0x4a44,0xb3,0x1c,0xd1,0x3,0xc6,0xfe,0xd2,0x3c,"MF_PD_ASF_INFO_HAS_AUDIO"); - IF_GUID_EQUAL_RETURN(guid,0x80e62297,0x2296,0x4a44,0xb3,0x1c,0xd1,0x3,0xc6,0xfe,0xd2,0x3c,"MF_PD_ASF_INFO_HAS_NON_AUDIO_VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x80e62296,0x2296,0x4a44,0xb3,0x1c,0xd1,0x3,0xc6,0xfe,0xd2,0x3c,"MF_PD_ASF_INFO_HAS_VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0xf23de43c,0x9977,0x460d,0xa6,0xec,0x32,0x93,0x7f,0x16,0xf,0x7d,"MF_PD_ASF_LANGLIST"); - IF_GUID_EQUAL_RETURN(guid,0xf23de43d,0x9977,0x460d,0xa6,0xec,0x32,0x93,0x7f,0x16,0xf,0x7d,"MF_PD_ASF_LANGLIST_LEGACYORDER"); - IF_GUID_EQUAL_RETURN(guid,0x5134330e,0x83a6,0x475e,0xa9,0xd5,0x4f,0xb8,0x75,0xfb,0x2e,0x31,"MF_PD_ASF_MARKER"); - IF_GUID_EQUAL_RETURN(guid,0x5fc6947a,0xef60,0x445d,0xb4,0x49,0x44,0x2e,0xcc,0x78,0xb4,0xc1,"MF_PD_ASF_METADATA_IS_VBR"); - IF_GUID_EQUAL_RETURN(guid,0x5fc6947d,0xef60,0x445d,0xb4,0x49,0x44,0x2e,0xcc,0x78,0xb4,0xc1,"MF_PD_ASF_METADATA_LEAKY_BUCKET_PAIRS"); - IF_GUID_EQUAL_RETURN(guid,0x5fc6947c,0xef60,0x445d,0xb4,0x49,0x44,0x2e,0xcc,0x78,0xb4,0xc1,"MF_PD_ASF_METADATA_V8_BUFFERAVERAGE"); - IF_GUID_EQUAL_RETURN(guid,0x5fc6947b,0xef60,0x445d,0xb4,0x49,0x44,0x2e,0xcc,0x78,0xb4,0xc1,"MF_PD_ASF_METADATA_V8_VBRPEAK"); - IF_GUID_EQUAL_RETURN(guid,0xe29cd0d7,0xd602,0x4923,0xa7,0xfe,0x73,0xfd,0x97,0xec,0xc6,0x50,"MF_PD_ASF_SCRIPT"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d35,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_AUDIO_ENCODING_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0x33026ee0,0xe387,0x4582,0xae,0x0a,0x34,0xa2,0xad,0x3b,0xaa,0x18,"MF_PD_AUDIO_ISVARIABLEBITRATE"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d33,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_DURATION"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d38,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_LAST_MODIFIED_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d37,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_MIME_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d3b,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_PLAYBACK_BOUNDARY_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d39,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_PLAYBACK_ELEMENT_ID"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d31,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_PMPHOST_CONTEXT"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d3A,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_PREFERRED_LANGUAGE"); - IF_GUID_EQUAL_RETURN(guid,0xe0b73c7f,0x486d,0x484e,0x98,0x72,0x4d,0xe5,0x19,0x2a,0x7b,0xf8,"MF_PD_SAMI_STYLELIST"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d34,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_TOTAL_FILE_SIZE"); - IF_GUID_EQUAL_RETURN(guid,0x6c990d36,0xbb8e,0x477a,0x85,0x98,0xd,0x5d,0x96,0xfc,0xd8,0x8a,"MF_PD_VIDEO_ENCODING_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0x2f00c910,0xd2cf,0x4278,0x8b,0x6a,0xd0,0x77,0xfa,0xc3,0xa2,0x5f,"MF_PMP_SERVER_CONTEXT"); - IF_GUID_EQUAL_RETURN(guid,0x8F020EEA,0x1508,0x471F,0x9D,0xA6,0x50,0x7D,0x7C,0xFA,0x40,0xDB,"MF_PROGRESSIVE_CODING_CONTENT"); - IF_GUID_EQUAL_RETURN(guid,0xa3face02,0x32b8,0x41dd,0x90,0xe7,0x5f,0xef,0x7c,0x89,0x91,0xb5,"MF_PROPERTY_HANDLER_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xf6b44af8,0x604d,0x46fe,0xa9,0x5d,0x45,0x47,0x9b,0x10,0xc9,0xbc,"MF_QUALITY_NOTIFY_PROCESSING_LATENCY"); - IF_GUID_EQUAL_RETURN(guid,0x30d15206,0xed2a,0x4760,0xbe,0x17,0xeb,0x4a,0x9f,0x12,0x29,0x5c,"MF_QUALITY_NOTIFY_SAMPLE_LAG"); - IF_GUID_EQUAL_RETURN(guid,0xb7e2be11,0x2f96,0x4640,0xb5,0x2c,0x28,0x23,0x65,0xbd,0xf1,0x6c,"MF_QUALITY_SERVICES"); - IF_GUID_EQUAL_RETURN(guid,0x866fa297,0xb802,0x4bf8,0x9d,0xc9,0x5e,0x3b,0x6a,0x9f,0x53,0xc9,"MF_RATE_CONTROL_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x216479d9,0x3071,0x42ca,0xbb,0x6c,0x4c,0x22,0x10,0x2e,0x1d,0x18,"MF_READWRITE_D3D_OPTIONAL"); - IF_GUID_EQUAL_RETURN(guid,0x98d5b065,0x1374,0x4847,0x8d,0x5d,0x31,0x52,0x0f,0xee,0x71,0x56,"MF_READWRITE_DISABLE_CONVERTERS"); - IF_GUID_EQUAL_RETURN(guid,0xa634a91c,0x822b,0x41b9,0xa4,0x94,0x4d,0xe4,0x64,0x36,0x12,0xb0,"MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS"); - IF_GUID_EQUAL_RETURN(guid,0x39384300,0xd0eb,0x40b1,0x87,0xa0,0x33,0x18,0x87,0x1b,0x5a,0x53,"MF_READWRITE_MMCSS_CLASS"); - IF_GUID_EQUAL_RETURN(guid,0x430847da,0x0890,0x4b0e,0x93,0x8c,0x05,0x43,0x32,0xc5,0x47,0xe1,"MF_READWRITE_MMCSS_CLASS_AUDIO"); - IF_GUID_EQUAL_RETURN(guid,0x43ad19ce,0xf33f,0x4ba9,0xa5,0x80,0xe4,0xcd,0x12,0xf2,0xd1,0x44,"MF_READWRITE_MMCSS_PRIORITY"); - IF_GUID_EQUAL_RETURN(guid,0x273db885,0x2de2,0x4db2,0xa6,0xa7,0xfd,0xb6,0x6f,0xb4,0x0b,0x61,"MF_READWRITE_MMCSS_PRIORITY_AUDIO"); - IF_GUID_EQUAL_RETURN(guid,0x2f00c90e,0xd2cf,0x4278,0x8b,0x6a,0xd0,0x77,0xfa,0xc3,0xa2,0x5f,"MF_REMOTE_PROXY"); - IF_GUID_EQUAL_RETURN(guid,0x49a89ae7,0xb4d9,0x4ef2,0xaa,0x5c,0xf6,0x5a,0x3e,0x5,0xae,0x4e,"MF_SAMI_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x0efda2c0,0x2b69,0x4e2e,0xab,0x8d,0x46,0xdc,0xbf,0xf7,0xd2,0x5d,"MF_SAMPLEGRABBERSINK_IGNORE_CLOCK"); - IF_GUID_EQUAL_RETURN(guid,0x62e3d776,0x8100,0x4e03,0xa6,0xe8,0xbd,0x38,0x57,0xac,0x9c,0x47,"MF_SAMPLEGRABBERSINK_SAMPLE_TIME_OFFSET"); - IF_GUID_EQUAL_RETURN(guid,0x873c5171,0x1e3d,0x4e25,0x98,0x8d,0xb4,0x33,0xce,0x04,0x19,0x83,"MF_SA_BUFFERS_PER_SAMPLE"); - IF_GUID_EQUAL_RETURN(guid,0x206b4fc8,0xfcf9,0x4c51,0xaf,0xe3,0x97,0x64,0x36,0x9e,0x33,0xa0,"MF_SA_D3D11_AWARE"); - IF_GUID_EQUAL_RETURN(guid,0xeacf97ad,0x065c,0x4408,0xbe,0xe3,0xfd,0xcb,0xfd,0x12,0x8b,0xe2,"MF_SA_D3D11_BINDFLAGS"); - IF_GUID_EQUAL_RETURN(guid,0x7b8f32c3,0x6d96,0x4b89,0x92,0x3,0xdd,0x38,0xb6,0x14,0x14,0xf3,"MF_SA_D3D11_SHARED"); - IF_GUID_EQUAL_RETURN(guid,0x39dbd44d,0x2e44,0x4931,0xa4,0xc8,0x35,0x2d,0x3d,0xc4,0x21,0x15,"MF_SA_D3D11_SHARED_WITHOUT_MUTEX"); - IF_GUID_EQUAL_RETURN(guid,0xe85fe442,0x2ca3,0x486e,0xa9,0xc7,0x10,0x9d,0xda,0x60,0x98,0x80,"MF_SA_D3D11_USAGE"); - IF_GUID_EQUAL_RETURN(guid,0xeaa35c29,0x775e,0x488e,0x9b,0x61,0xb3,0x28,0x3e,0x49,0x58,0x3b,"MF_SA_D3D_AWARE"); - IF_GUID_EQUAL_RETURN(guid,0x851745d5,0xc3d6,0x476d,0x95,0x27,0x49,0x8e,0xf2,0xd1,0xd,0x18,"MF_SA_MINIMUM_OUTPUT_SAMPLE_COUNT"); - IF_GUID_EQUAL_RETURN(guid,0xf5523a5,0x1cb2,0x47c5,0xa5,0x50,0x2e,0xeb,0x84,0xb4,0xd1,0x4a,"MF_SA_MINIMUM_OUTPUT_SAMPLE_COUNT_PROGRESSIVE"); - IF_GUID_EQUAL_RETURN(guid,0x18802c61,0x324b,0x4952,0xab,0xd0,0x17,0x6f,0xf5,0xc6,0x96,0xff,"MF_SA_REQUIRED_SAMPLE_COUNT"); - IF_GUID_EQUAL_RETURN(guid,0xb172d58e,0xfa77,0x4e48,0x8d,0x2a,0x1d,0xf2,0xd8,0x50,0xea,0xc2,"MF_SA_REQUIRED_SAMPLE_COUNT_PROGRESSIVE"); - IF_GUID_EQUAL_RETURN(guid,0x48f8a524,0x305d,0x422d,0x85,0x24,0x25,0x2,0xdd,0xa3,0x36,0x80,"MF_SD_ASF_EXTSTRMPROP_AVG_BUFFERSIZE"); - IF_GUID_EQUAL_RETURN(guid,0x48f8a523,0x305d,0x422d,0x85,0x24,0x25,0x2,0xdd,0xa3,0x36,0x80,"MF_SD_ASF_EXTSTRMPROP_AVG_DATA_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0x48f8a522,0x305d,0x422d,0x85,0x24,0x25,0x2,0xdd,0xa3,0x36,0x80,"MF_SD_ASF_EXTSTRMPROP_LANGUAGE_ID_INDEX"); - IF_GUID_EQUAL_RETURN(guid,0x48f8a526,0x305d,0x422d,0x85,0x24,0x25,0x2,0xdd,0xa3,0x36,0x80,"MF_SD_ASF_EXTSTRMPROP_MAX_BUFFERSIZE"); - IF_GUID_EQUAL_RETURN(guid,0x48f8a525,0x305d,0x422d,0x85,0x24,0x25,0x2,0xdd,0xa3,0x36,0x80,"MF_SD_ASF_EXTSTRMPROP_MAX_DATA_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0x245e929d,0xc44e,0x4f7e,0xbb,0x3c,0x77,0xd4,0xdf,0xd2,0x7f,0x8a,"MF_SD_ASF_METADATA_DEVICE_CONFORMANCE_TEMPLATE"); - IF_GUID_EQUAL_RETURN(guid,0xa8e182ed,0xafc8,0x43d0,0xb0,0xd1,0xf6,0x5b,0xad,0x9d,0xa5,0x58,"MF_SD_ASF_STREAMBITRATES_BITRATE"); - IF_GUID_EQUAL_RETURN(guid,0xaf2180,0xbdc2,0x423c,0xab,0xca,0xf5,0x3,0x59,0x3b,0xc1,0x21,"MF_SD_LANGUAGE"); - IF_GUID_EQUAL_RETURN(guid,0x23ef79c,0x388d,0x487f,0xac,0x17,0x69,0x6c,0xd6,0xe3,0xc6,0xf5,"MF_SD_MUTUALLY_EXCLUSIVE"); - IF_GUID_EQUAL_RETURN(guid,0xaf2181,0xbdc2,0x423c,0xab,0xca,0xf5,0x3,0x59,0x3b,0xc1,0x21,"MF_SD_PROTECTED"); - IF_GUID_EQUAL_RETURN(guid,0x36fcb98a,0x6cd0,0x44cb,0xac,0xb9,0xa8,0xf5,0x60,0xd,0xd0,0xbb,"MF_SD_SAMI_LANGUAGE"); - IF_GUID_EQUAL_RETURN(guid,0x4f1b099d,0xd314,0x41e5,0xa7,0x81,0x7f,0xef,0xaa,0x4c,0x50,0x1f,"MF_SD_STREAM_NAME"); - IF_GUID_EQUAL_RETURN(guid,0x190e852f,0x6238,0x42d1,0xb5,0xaf,0x69,0xea,0x33,0x8e,0xf8,0x50,"MF_SESSION_APPROX_EVENT_OCCURRENCE_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x1e83d482,0x1f1c,0x4571,0x84,0x5,0x88,0xf4,0xb2,0x18,0x1f,0x74,"MF_SESSION_CONTENT_PROTECTION_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x1e83d482,0x1f1c,0x4571,0x84,0x5,0x88,0xf4,0xb2,0x18,0x1f,0x72,"MF_SESSION_GLOBAL_TIME"); - IF_GUID_EQUAL_RETURN(guid,0x1e83d482,0x1f1c,0x4571,0x84,0x5,0x88,0xf4,0xb2,0x18,0x1f,0x73,"MF_SESSION_QUALITY_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0xf4033ef4,0x9bb3,0x4378,0x94,0x1f,0x85,0xa0,0x85,0x6b,0xc2,0x44,"MF_SESSION_REMOTE_SOURCE_MODE"); - IF_GUID_EQUAL_RETURN(guid,0xafe5b291,0x50fa,0x46e8,0xb9,0xbe,0xc,0xc,0x3c,0xe4,0xb3,0xa5,"MF_SESSION_SERVER_CONTEXT"); - IF_GUID_EQUAL_RETURN(guid,0x1e83d482,0x1f1c,0x4571,0x84,0x5,0x88,0xf4,0xb2,0x18,0x1f,0x71,"MF_SESSION_TOPOLOADER"); - IF_GUID_EQUAL_RETURN(guid,0x48cb183e,0x7b0b,0x46f4,0x82,0x2e,0x5e,0x1d,0x2d,0xda,0x43,0x54,"MF_SINK_WRITER_ASYNC_CALLBACK"); - IF_GUID_EQUAL_RETURN(guid,0xec822da2,0xe1e9,0x4b29,0xa0,0xd8,0x56,0x3c,0x71,0x9f,0x52,0x69,"MF_SINK_WRITER_D3D_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x08b845d8,0x2b74,0x4afe,0x9d,0x53,0xbe,0x16,0xd2,0xd5,0xae,0x4f,"MF_SINK_WRITER_DISABLE_THROTTLING"); - IF_GUID_EQUAL_RETURN(guid,0xad91cd04,0xa7cc,0x4ac7,0x99,0xb6,0xa5,0x7b,0x9a,0x4a,0x7c,0x70,"MF_SINK_WRITER_ENCODER_CONFIG"); - IF_GUID_EQUAL_RETURN(guid,0xe002aadc,0xf4af,0x4ee5,0x98,0x47,0x05,0x3e,0xdf,0x84,0x04,0x26,"MF_SOURCE_PRESENTATION_PROVIDER_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x1e3dbeac,0xbb43,0x4c35,0xb5,0x07,0xcd,0x64,0x44,0x64,0xc9,0x65,"MF_SOURCE_READER_ASYNC_CALLBACK"); - IF_GUID_EQUAL_RETURN(guid,0xec822da2,0xe1e9,0x4b29,0xa0,0xd8,0x56,0x3c,0x71,0x9f,0x52,0x69,"MF_SOURCE_READER_D3D_MANAGER"); - IF_GUID_EQUAL_RETURN(guid,0x9d3365dd,0x58f,0x4cfb,0x9f,0x97,0xb3,0x14,0xcc,0x99,0xc8,0xad,"MF_SOURCE_READER_DISABLE_CAMERA_PLUGINS"); - IF_GUID_EQUAL_RETURN(guid,0xaa456cfd,0x3943,0x4a1e,0xa7,0x7d,0x18,0x38,0xc0,0xea,0x2e,0x35,"MF_SOURCE_READER_DISABLE_DXVA"); - IF_GUID_EQUAL_RETURN(guid,0x56b67165,0x219e,0x456d,0xa2,0x2e,0x2d,0x30,0x04,0xc7,0xfe,0x56,"MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN"); - IF_GUID_EQUAL_RETURN(guid,0xf81da2c,0xb537,0x4672,0xa8,0xb2,0xa6,0x81,0xb1,0x73,0x7,0xa3,"MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING"); - IF_GUID_EQUAL_RETURN(guid,0xdfd4f008,0xb5fd,0x4e78,0xae,0x44,0x62,0xa1,0xe6,0x7b,0xbe,0x27,"MF_SOURCE_READER_ENABLE_TRANSCODE_ONLY_TRANSFORMS"); - IF_GUID_EQUAL_RETURN(guid,0xfb394f3d,0xccf1,0x42ee,0xbb,0xb3,0xf9,0xb8,0x45,0xd5,0x68,0x1d,"MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING"); - IF_GUID_EQUAL_RETURN(guid,0x6d23f5c8,0xc5d7,0x4a9b,0x99,0x71,0x5d,0x11,0xf8,0xbc,0xa8,0x80,"MF_SOURCE_READER_MEDIASOURCE_CHARACTERISTICS"); - IF_GUID_EQUAL_RETURN(guid,0x9085abeb,0x0354,0x48f9,0xab,0xb5,0x20,0x0d,0xf8,0x38,0xc6,0x8e,"MF_SOURCE_READER_MEDIASOURCE_CONFIG"); - IF_GUID_EQUAL_RETURN(guid,0xa38253aa,0x6314,0x42fd,0xa3,0xce,0xbb,0x27,0xb6,0x85,0x99,0x46,"MF_SOURCE_STREAM_SUPPORTS_HW_CONNECTION"); - IF_GUID_EQUAL_RETURN(guid,0x9b465cbf,0x597,0x4f9e,0x9f,0x3c,0xb9,0x7e,0xee,0xf9,0x3,0x59,"MF_STREAM_SINK_SUPPORTS_HW_CONNECTION"); - IF_GUID_EQUAL_RETURN(guid,0xb3e96280,0xbd05,0x41a5,0x97,0xad,0x8a,0x7f,0xee,0x24,0xb9,0x12,"MF_STREAM_SINK_SUPPORTS_ROTATION"); - IF_GUID_EQUAL_RETURN(guid,0x5403deee,0xb9ee,0x438f,0xaa,0x83,0x38,0x4,0x99,0x7e,0x56,0x9d,"MF_SampleProtectionSalt"); - IF_GUID_EQUAL_RETURN(guid,0xa0d502a7,0x0eb3,0x4885,0xb1,0xb9,0x9f,0xeb,0x0d,0x08,0x34,0x54,"MF_TIMECODE_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x4399f178,0x46d3,0x4504,0xaf,0xda,0x20,0xd3,0x2e,0x9b,0xa3,0x60,"MF_TIME_FORMAT_ENTRY_RELATIVE"); - IF_GUID_EQUAL_RETURN(guid,0xc8b8be77,0x869c,0x431d,0x81,0x2e,0x16,0x96,0x93,0xf6,0x5a,0x39,"MF_TIME_FORMAT_SEGMENT_OFFSET"); - IF_GUID_EQUAL_RETURN(guid,0x1e8d34f6,0xf5ab,0x4e23,0xbb,0x88,0x87,0x4a,0xa3,0xa1,0xa7,0x4d,"MF_TOPOLOGY_DXVA_MODE"); - IF_GUID_EQUAL_RETURN(guid,0xd529950b,0xd484,0x4527,0xa9,0xcd,0xb1,0x90,0x95,0x32,0xb5,0xb0,"MF_TOPOLOGY_DYNAMIC_CHANGE_NOT_ALLOWED"); - IF_GUID_EQUAL_RETURN(guid,0x1967731f,0xcd78,0x42fc,0xb0,0x26,0x9,0x92,0xa5,0x6e,0x56,0x93,"MF_TOPOLOGY_ENABLE_XVP_FOR_PLAYBACK"); - IF_GUID_EQUAL_RETURN(guid,0x6248c36d,0x5d0b,0x4f40,0xa0,0xbb,0xb0,0xb3,0x05,0xf7,0x76,0x98,"MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES"); - IF_GUID_EQUAL_RETURN(guid,0xd2d362fd,0x4e4f,0x4191,0xa5,0x79,0xc6,0x18,0xb6,0x67,0x6,0xaf,"MF_TOPOLOGY_HARDWARE_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x7ed3f804,0x86bb,0x4b3f,0xb7,0xe4,0x7c,0xb4,0x3a,0xfd,0x4b,0x80,"MF_TOPOLOGY_NO_MARKIN_MARKOUT"); - IF_GUID_EQUAL_RETURN(guid,0xc164737a,0xc2b1,0x4553,0x83,0xbb,0x5a,0x52,0x60,0x72,0x44,0x8f,"MF_TOPOLOGY_PLAYBACK_FRAMERATE"); - IF_GUID_EQUAL_RETURN(guid,0x5715cf19,0x5768,0x44aa,0xad,0x6e,0x87,0x21,0xf1,0xb0,0xf9,0xbb,"MF_TOPOLOGY_PLAYBACK_MAX_DIMS"); - IF_GUID_EQUAL_RETURN(guid,0x7ed3f802,0x86bb,0x4b3f,0xb7,0xe4,0x7c,0xb4,0x3a,0xfd,0x4b,0x80,"MF_TOPOLOGY_PROJECTSTART"); - IF_GUID_EQUAL_RETURN(guid,0x7ed3f803,0x86bb,0x4b3f,0xb7,0xe4,0x7c,0xb4,0x3a,0xfd,0x4b,0x80,"MF_TOPOLOGY_PROJECTSTOP"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcde,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPOLOGY_RESOLUTION_STATUS"); - IF_GUID_EQUAL_RETURN(guid,0xc8cc113f,0x7951,0x4548,0xaa,0xd6,0x9e,0xd6,0x20,0x2e,0x62,0xb3,"MF_TOPOLOGY_START_TIME_ON_PRESENTATION_SWITCH"); - IF_GUID_EQUAL_RETURN(guid,0xb86cac42,0x41a6,0x4b79,0x89,0x7a,0x1a,0xb0,0xe5,0x2b,0x4a,0x1b,"MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS"); - IF_GUID_EQUAL_RETURN(guid,0x65656e1a,0x077f,0x4472,0x83,0xef,0x31,0x6f,0x11,0xd5,0x08,0x7a,"MF_TOPONODE_ATTRIBUTE_EDITOR_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcf1,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_CONNECT_METHOD"); - IF_GUID_EQUAL_RETURN(guid,0x494bbced,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_D3DAWARE"); - IF_GUID_EQUAL_RETURN(guid,0x494bbd02,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_DECODER"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcfa,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_DECRYPTOR"); - IF_GUID_EQUAL_RETURN(guid,0x14932f9e,0x9087,0x4bb4,0x84,0x12,0x51,0x67,0x14,0x5c,0xbe,0x04,"MF_TOPONODE_DISABLE_PREROLL"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcfb,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_DISCARDABLE"); - IF_GUID_EQUAL_RETURN(guid,0x494bbce9,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_DRAIN"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcee,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_ERRORCODE"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcfd,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_ERROR_MAJORTYPE"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcfe,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_ERROR_SUBTYPE"); - IF_GUID_EQUAL_RETURN(guid,0x494bbce8,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_FLUSH"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcf7,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_LOCKED"); - IF_GUID_EQUAL_RETURN(guid,0x494bbd00,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_MARKIN_HERE"); - IF_GUID_EQUAL_RETURN(guid,0x494bbd01,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_MARKOUT_HERE"); - IF_GUID_EQUAL_RETURN(guid,0x835c58ea,0xe075,0x4bc7,0xbc,0xba,0x4d,0xe0,0x00,0xdf,0x9a,0xe6,"MF_TOPONODE_MEDIASTART"); - IF_GUID_EQUAL_RETURN(guid,0x835c58eb,0xe075,0x4bc7,0xbc,0xba,0x4d,0xe0,0x00,0xdf,0x9a,0xe6,"MF_TOPONODE_MEDIASTOP"); - IF_GUID_EQUAL_RETURN(guid,0x14932f9c,0x9087,0x4bb4,0x84,0x12,0x51,0x67,0x14,0x5c,0xbe,0x04,"MF_TOPONODE_NOSHUTDOWN_ON_REMOVE"); - IF_GUID_EQUAL_RETURN(guid,0x835c58ed,0xe075,0x4bc7,0xbc,0xba,0x4d,0xe0,0x00,0xdf,0x9a,0xe6,"MF_TOPONODE_PRESENTATION_DESCRIPTOR"); - IF_GUID_EQUAL_RETURN(guid,0x6304ef99,0x16b2,0x4ebe,0x9d,0x67,0xe4,0xc5,0x39,0xb3,0xa2,0x59,"MF_TOPONODE_PRIMARYOUTPUT"); - IF_GUID_EQUAL_RETURN(guid,0x14932f9d,0x9087,0x4bb4,0x84,0x12,0x51,0x67,0x14,0x5c,0xbe,0x04,"MF_TOPONODE_RATELESS"); - IF_GUID_EQUAL_RETURN(guid,0x835c58ef,0xe075,0x4bc7,0xbc,0xba,0x4d,0xe0,0x00,0xdf,0x9a,0xe6,"MF_TOPONODE_SEQUENCE_ELEMENTID"); - IF_GUID_EQUAL_RETURN(guid,0x835c58ec,0xe075,0x4bc7,0xbc,0xba,0x4d,0xe0,0x00,0xdf,0x9a,0xe6,"MF_TOPONODE_SOURCE"); - IF_GUID_EQUAL_RETURN(guid,0x14932f9b,0x9087,0x4bb4,0x84,0x12,0x51,0x67,0x14,0x5c,0xbe,0x04,"MF_TOPONODE_STREAMID"); - IF_GUID_EQUAL_RETURN(guid,0x835c58ee,0xe075,0x4bc7,0xbc,0xba,0x4d,0xe0,0x00,0xdf,0x9a,0xe6,"MF_TOPONODE_STREAM_DESCRIPTOR"); - IF_GUID_EQUAL_RETURN(guid,0x88dcc0c9,0x293e,0x4e8b,0x9a,0xeb,0xa,0xd6,0x4c,0xc0,0x16,0xb0,"MF_TOPONODE_TRANSFORM_OBJECTID"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcf8,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_WORKQUEUE_ID"); - IF_GUID_EQUAL_RETURN(guid,0xa1ff99be,0x5e97,0x4a53,0xb4,0x94,0x56,0x8c,0x64,0x2c,0x0f,0xf3,"MF_TOPONODE_WORKQUEUE_ITEM_PRIORITY"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcf9,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_WORKQUEUE_MMCSS_CLASS"); - IF_GUID_EQUAL_RETURN(guid,0x5001f840,0x2816,0x48f4,0x93,0x64,0xad,0x1e,0xf6,0x61,0xa1,0x23,"MF_TOPONODE_WORKQUEUE_MMCSS_PRIORITY"); - IF_GUID_EQUAL_RETURN(guid,0x494bbcff,0xb031,0x4e38,0x97,0xc4,0xd5,0x42,0x2d,0xd6,0x18,0xdc,"MF_TOPONODE_WORKQUEUE_MMCSS_TASKID"); - IF_GUID_EQUAL_RETURN(guid,0x9c37c21b,0x60f,0x487c,0xa6,0x90,0x80,0xd7,0xf5,0xd,0x1c,0x72,"MF_TRANSCODE_ADJUST_PROFILE"); - IF_GUID_EQUAL_RETURN(guid,0x150ff23f,0x4abc,0x478b,0xac,0x4f,0xe1,0x91,0x6f,0xba,0x1c,0xca,"MF_TRANSCODE_CONTAINERTYPE"); - IF_GUID_EQUAL_RETURN(guid,0xf45aa7ce,0xab24,0x4012,0xa1,0x1b,0xdc,0x82,0x20,0x20,0x14,0x10,"MF_TRANSCODE_DONOT_INSERT_ENCODER"); - IF_GUID_EQUAL_RETURN(guid,0x6947787c,0xf508,0x4ea9,0xb1,0xe9,0xa1,0xfe,0x3a,0x49,0xfb,0xc9,"MF_TRANSCODE_ENCODINGPROFILE"); - IF_GUID_EQUAL_RETURN(guid,0x98332df8,0x03cd,0x476b,0x89,0xfa,0x3f,0x9e,0x44,0x2d,0xec,0x9f,"MF_TRANSCODE_QUALITYVSSPEED"); - IF_GUID_EQUAL_RETURN(guid,0x4e4469ef,0xb571,0x4959,0x8f,0x83,0x3d,0xcf,0xba,0x33,0xa3,0x93,"MF_TRANSCODE_SKIP_METADATA_TRANSFER"); - IF_GUID_EQUAL_RETURN(guid,0x3e3df610,0x394a,0x40b2,0x9d,0xea,0x3b,0xab,0x65,0xb,0xeb,0xf2,"MF_TRANSCODE_TOPOLOGYMODE"); - IF_GUID_EQUAL_RETURN(guid,0xf81a699a,0x649a,0x497d,0x8c,0x73,0x29,0xf8,0xfe,0xd6,0xad,0x7a,"MF_TRANSFORM_ASYNC"); - IF_GUID_EQUAL_RETURN(guid,0xe5666d6b,0x3422,0x4eb6,0xa4,0x21,0xda,0x7d,0xb1,0xf8,0xe2,0x7,"MF_TRANSFORM_ASYNC_UNLOCK"); - IF_GUID_EQUAL_RETURN(guid,0xceabba49,0x506d,0x4757,0xa6,0xff,0x66,0xc1,0x84,0x98,0x7e,0x4e,"MF_TRANSFORM_CATEGORY_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0x9359bb7e,0x6275,0x46c4,0xa0,0x25,0x1c,0x1,0xe4,0x5f,0x1a,0x86,"MF_TRANSFORM_FLAGS_Attribute"); - IF_GUID_EQUAL_RETURN(guid,0xd1d4985d,0xdc92,0x457a,0xb3,0xa0,0x65,0x1a,0x33,0xa3,0x10,0x47,"MF_USER_DATA_PAYLOAD"); - IF_GUID_EQUAL_RETURN(guid,0x16d720f0,0x768c,0x11de,0x8a,0x39,0x08,0x00,0x20,0x0c,0x9a,0x66,"MF_VIDEODSP_MODE"); - IF_GUID_EQUAL_RETURN(guid,0x8e37d489,0x41e0,0x413a,0x90,0x68,0x28,0x7c,0x88,0x6d,0x8d,0xda,"MF_WORKQUEUE_SERVICES"); - IF_GUID_EQUAL_RETURN(guid,0x2b182c4c,0xd6ac,0x49f4,0x89,0x15,0xf7,0x18,0x87,0xdb,0x70,0xcd,"MF_WRAPPED_OBJECT"); - IF_GUID_EQUAL_RETURN(guid,0x67EC2559,0x0F2F,0x4420,0xA4,0xDD,0x2F,0x8E,0xE7,0xA5,0x73,0x8B,"MF_WVC1_PROG_SINGLE_SLICE_CONTENT"); - IF_GUID_EQUAL_RETURN(guid,0x2c0afa19,0x7a97,0x4d5a,0x9e,0xe8,0x16,0xd4,0xfc,0x51,0x8d,0x8c,"MF_XVP_DISABLE_FRC"); - IF_GUID_EQUAL_RETURN(guid,0x911fd737,0x6775,0x4ab0,0xa6,0x14,0x29,0x78,0x62,0xfd,0xac,0x88,"MR_AUDIO_POLICY_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xa562248c,0x9ac6,0x4ffc,0x9f,0xba,0x3a,0xf8,0xf8,0xad,0x1a,0x4d,"MR_BUFFER_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x24030acd,0x107a,0x4265,0x97,0x5c,0x41,0x4e,0x33,0xe6,0x5f,0x2a,"MR_CAPTURE_POLICY_VOLUME_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x1abaa2ac,0x9d3b,0x47c6,0xab,0x48,0xc5,0x95,0x6,0xde,0x78,0x4d,"MR_POLICY_VOLUME_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xf8b5fa2f,0x32ef,0x46f5,0xb1,0x72,0x13,0x21,0x21,0x2f,0xb2,0xc4,"MR_STREAM_VOLUME_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xefef5175,0x5c7d,0x4ce2,0xbb,0xbd,0x34,0xff,0x8b,0xca,0x65,0x54,"MR_VIDEO_ACCELERATION_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x73cd2fc,0x6cf4,0x40b7,0x88,0x59,0xe8,0x95,0x52,0xc8,0x41,0xf8,"MR_VIDEO_MIXER_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x1092a86c,0xab1a,0x459a,0xa3,0x36,0x83,0x1f,0xbc,0x4d,0x11,0xff,"MR_VIDEO_RENDER_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0xa35ff56b,0x9fda,0x11d0,0x8f,0xdf,0x0,0xc0,0x4f,0xd9,0x18,0x9d,"MSPID_PrimaryAudio"); - IF_GUID_EQUAL_RETURN(guid,0xa35ff56a,0x9fda,0x11d0,0x8f,0xdf,0x0,0xc0,0x4f,0xd9,0x18,0x9d,"MSPID_PrimaryVideo"); - IF_GUID_EQUAL_RETURN(guid,0xcc384250,0x0e7b,0x4ae8,0x95,0xae,0xa0,0x8f,0x26,0x1b,0x52,0xee,"MenuBar_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3cf1266e,0x1582,0x4041,0xac,0xd7,0x88,0xa3,0x5a,0x96,0x52,0x97,"MenuClosed_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf45225d3,0xd0a0,0x49d8,0x98,0x34,0x9a,0x00,0x0d,0x2a,0xed,0xdc,"MenuItem_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9ecd4c9f,0x80dd,0x47b8,0x82,0x67,0x5a,0xec,0x06,0xbb,0x2c,0xff,"MenuModeEnd_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x18d7c631,0x166a,0x4ac9,0xae,0x3b,0xef,0x4b,0x54,0x20,0xe6,0x81,"MenuModeStart_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xebe2e945,0x66ca,0x4ed1,0x9f,0xf8,0x2a,0xd7,0xdf,0x0a,0x1b,0x08,"MenuOpened_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2e9b1440,0x0ea8,0x41fd,0xb3,0x74,0xc1,0xea,0x6f,0x50,0x3c,0xd1,"Menu_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x30fe7be8,0xd7d9,0x11d2,0x9f,0x80,0x0,0xc0,0x4f,0x79,0xa0,0xa3,"MetaDataCheckDuplicatesFor"); - IF_GUID_EQUAL_RETURN(guid,0x1547872d,0xdc03,0x11d2,0x94,0x20,0x0,0x0,0xf8,0x8,0x34,0x60,"MetaDataErrorIfEmitOutOfOrder"); - IF_GUID_EQUAL_RETURN(guid,0xdcc9de90,0x4151,0x11d3,0x88,0xd6,0x0,0x90,0x27,0x54,0xc4,0x3a,"MetaDataGenerateTCEAdapters"); - IF_GUID_EQUAL_RETURN(guid,0x79700f36,0x4aac,0x11d3,0x84,0xc3,0x0,0x90,0x27,0x86,0x8c,0xb1,"MetaDataImportOption"); - IF_GUID_EQUAL_RETURN(guid,0x47e099b6,0xae7c,0x4797,0x83,0x17,0xb4,0x8a,0xa6,0x45,0xb8,0xf9,"MetaDataLinkerOptions"); - IF_GUID_EQUAL_RETURN(guid,0x132d3a6e,0xb35d,0x464e,0x95,0x1a,0x42,0xef,0xb9,0xfb,0x66,0x1,"MetaDataMergerOptions"); - IF_GUID_EQUAL_RETURN(guid,0xe5d71a4c,0xd7da,0x11d2,0x9f,0x80,0x0,0xc0,0x4f,0x79,0xa0,0xa3,"MetaDataNotificationForTokenMovement"); - IF_GUID_EQUAL_RETURN(guid,0xa55c0354,0xe91b,0x468b,0x86,0x48,0x7c,0xc3,0x10,0x35,0xd5,0x33,"MetaDataPreserveLocalRefs"); - IF_GUID_EQUAL_RETURN(guid,0xde3856f8,0xd7d9,0x11d2,0x9f,0x80,0x0,0xc0,0x4f,0x79,0xa0,0xa3,"MetaDataRefToDefCheck"); - IF_GUID_EQUAL_RETURN(guid,0x47e099b7,0xae7c,0x4797,0x83,0x17,0xb4,0x8a,0xa6,0x45,0xb8,0xf9,"MetaDataRuntimeVersion"); - IF_GUID_EQUAL_RETURN(guid,0x2eee315c,0xd7db,0x11d2,0x9f,0x80,0x0,0xc0,0x4f,0x79,0xa0,0xa3,"MetaDataSetUpdate"); - IF_GUID_EQUAL_RETURN(guid,0xf7559806,0xf266,0x42ea,0x8c,0x63,0xa,0xdb,0x45,0xe8,0xb2,0x34,"MetaDataThreadSafetyOptions"); - IF_GUID_EQUAL_RETURN(guid,0xf17ff889,0x5a63,0x11d3,0x9f,0xf2,0x0,0xc0,0x4f,0xf7,0x43,0x1a,"MetaDataTypeLibImportNamespace"); - IF_GUID_EQUAL_RETURN(guid,0x7a81a67a,0xb94f,0x4875,0x91,0x8b,0x65,0xc8,0xd2,0xf9,0x98,0xe5,"MultipleView_CurrentView_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x547a6ae4,0x113f,0x47c4,0x85,0x0f,0xdb,0x4d,0xfa,0x46,0x6b,0x1d,"MultipleView_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8d5db9fd,0xce3c,0x4ae7,0xb7,0x88,0x40,0x0a,0x3c,0x64,0x55,0x47,"MultipleView_SupportedViews_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x1f81d131,0x3fac,0x4537,0x9e,0x0c,0x7e,0x7b,0x0c,0x2f,0x4b,0x55,"NAMED_PIPE_EVENT_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4f27f2de,0x14e2,0x430b,0xa5,0x49,0x7c,0xd4,0x8c,0xbc,0x82,0x45,"NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xcc4ba62a,0x162e,0x4648,0x84,0x7a,0xb6,0xbd,0xf9,0x93,0xe3,0x35,"NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xba9a5027,0xa70e,0x4ae7,0x9b,0x7d,0xeb,0x3e,0x06,0xad,0x41,0x57,"NOTIFICATION_RELEASE"); - IF_GUID_EQUAL_RETURN(guid,0xFEA3413E,0x7E05,0x4911,0x9A,0x71,0x70,0x03,0x31,0xF1,0xC2,0x94,"NO_SUBGROUP_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x03fe89ce,0x766d,0x4976,0xb9,0xc1,0xbb,0x9b,0xc4,0x2c,0x7b,0x4d,"NS_PROVIDER_PNRPCLOUD"); - IF_GUID_EQUAL_RETURN(guid,0x03fe89cd,0x766d,0x4976,0xb9,0xc1,0xbb,0x9b,0xc4,0x2c,0x7b,0x4d,"NS_PROVIDER_PNRPNAME"); - IF_GUID_EQUAL_RETURN(guid,0xc3a6921b,0x4a99,0x44f1,0xbc,0xa6,0x61,0x18,0x70,0x52,0xc4,0x31,"Name_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5196b33b,0x380a,0x4982,0x95,0xe1,0x91,0xf3,0xef,0x60,0xe0,0x24,"NewNativeWindowHandle_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6c9e010,0x38ce,0x11d4,0xa2,0xa3,0x00,0x10,0x4b,0xd3,0x50,0x90,"OID_JSSIP"); - IF_GUID_EQUAL_RETURN(guid,0x98c5a3dd,0xdb68,0x4f1a,0x8d,0x2b,0x90,0x79,0xcd,0xfe,0xaf,0x61,"OID_OAssociatedIdentityProviderObject"); - IF_GUID_EQUAL_RETURN(guid,0x1629f04e,0x2799,0x4db5,0x8f,0xe5,0xac,0xe1,0x0f,0x17,0xeb,0xab,"OID_VBSSIP"); - IF_GUID_EQUAL_RETURN(guid,0x1a610570,0x38ce,0x11d4,0xa2,0xa3,0x00,0x10,0x4b,0xd3,0x50,0x90,"OID_WSFSIP"); - IF_GUID_EQUAL_RETURN(guid,0x6629a591,0x3b79,0x4cf3,0x92,0x4a,0x11,0xe8,0xe7,0x81,0x16,0x71,"OPM_GET_ACP_AND_CGMSA_SIGNALING"); - IF_GUID_EQUAL_RETURN(guid,0xd7bf1ba3,0xad13,0x4f8e,0xaf,0x98,0x0d,0xcb,0x3c,0xa2,0x04,0xcc,"OPM_GET_ACTUAL_OUTPUT_FORMAT"); - IF_GUID_EQUAL_RETURN(guid,0x1957210a,0x7766,0x452a,0xb9,0x9a,0xd2,0x7a,0xed,0x54,0xf0,0x3a,"OPM_GET_ACTUAL_PROTECTION_LEVEL"); - IF_GUID_EQUAL_RETURN(guid,0xc6f4d673,0x6174,0x4184,0x8e,0x35,0xf6,0xdb,0x52,0x0,0xbc,0xba,"OPM_GET_ADAPTER_BUS_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x4f374491,0x8f5f,0x4445,0x9d,0xba,0x95,0x58,0x8f,0x6b,0x58,0xb4,"OPM_GET_CODEC_INFO"); - IF_GUID_EQUAL_RETURN(guid,0x0db59d74,0xa992,0x492e,0xa0,0xbd,0xc2,0x3f,0xda,0x56,0x4e,0x00,"OPM_GET_CONNECTED_HDCP_DEVICE_INFORMATION"); - IF_GUID_EQUAL_RETURN(guid,0x81d0bfd5,0x6afe,0x48c2,0x99,0xc0,0x95,0xa0,0x8f,0x97,0xc5,0xda,"OPM_GET_CONNECTOR_TYPE"); - IF_GUID_EQUAL_RETURN(guid,0x99c5ceff,0x5f1d,0x4879,0x81,0xc1,0xc5,0x24,0x43,0xc9,0x48,0x2b,"OPM_GET_CURRENT_HDCP_SRM_VERSION"); - IF_GUID_EQUAL_RETURN(guid,0xa470b3bb,0x5dd7,0x4172,0x83,0x9c,0x3d,0x37,0x76,0xe0,0xeb,0xf5,"OPM_GET_DVI_CHARACTERISTICS"); - IF_GUID_EQUAL_RETURN(guid,0x72cb6df3,0x244f,0x40ce,0xb0,0x9e,0x20,0x50,0x6a,0xf6,0x30,0x2f,"OPM_GET_OUTPUT_ID"); - IF_GUID_EQUAL_RETURN(guid,0x38f2a801,0x9a6c,0x48bb,0x91,0x07,0xb6,0x69,0x6e,0x6f,0x17,0x97,"OPM_GET_SUPPORTED_PROTECTION_TYPES"); - IF_GUID_EQUAL_RETURN(guid,0xb2075857,0x3eda,0x4d5d,0x88,0xdb,0x74,0x8f,0x8c,0x1a,0x05,0x49,"OPM_GET_VIRTUAL_PROTECTION_LEVEL"); - IF_GUID_EQUAL_RETURN(guid,0x09a631a5,0xd684,0x4c60,0x8e,0x4d,0xd3,0xbb,0x0f,0x0b,0xe3,0xee,"OPM_SET_ACP_AND_CGMSA_SIGNALING"); - IF_GUID_EQUAL_RETURN(guid,0x8b5ef5d1,0xc30d,0x44ff,0x84,0xa5,0xea,0x71,0xdc,0xe7,0x8f,0x13,"OPM_SET_HDCP_SRM"); - IF_GUID_EQUAL_RETURN(guid,0x9bb9327c,0x4eb5,0x4727,0x9f,0x00,0xb4,0x2b,0x09,0x19,0xc0,0xda,"OPM_SET_PROTECTION_LEVEL"); - IF_GUID_EQUAL_RETURN(guid,0x39ce333e,0x4cc0,0x44ae,0xbf,0xcc,0xda,0x50,0xb5,0xf8,0x2e,0x72,"OPM_SET_PROTECTION_LEVEL_ACCORDING_TO_CSS_DVD"); - IF_GUID_EQUAL_RETURN(guid,0x3e04acfe,0x08fc,0x47ec,0x96,0xbc,0x35,0x3f,0xa3,0xb3,0x4a,0xa7,"ObjectModel_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6a852250,0xc75a,0x4e5d,0xb8,0x58,0xe3,0x81,0xb0,0xf7,0x88,0x61,"OptimizeForVisualContent_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa01eee62,0x3884,0x4415,0x88,0x7e,0x67,0x8e,0xc2,0x1e,0x39,0xba,"Orientation_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf6298b4c,0xc725,0x4d42,0x84,0x9b,0x41,0x0b,0xbb,0x14,0xea,0x62,"PBDA_AUX_CONNECTOR_TYPE_Composite"); - IF_GUID_EQUAL_RETURN(guid,0xa0e905f4,0x24c9,0x4a54,0xb7,0x61,0x21,0x33,0x55,0xef,0xc1,0x3A,"PBDA_AUX_CONNECTOR_TYPE_SVideo"); - IF_GUID_EQUAL_RETURN(guid,0xdd15f41f,0xfc4e,0x4922,0xb0,0x35,0x4c,0x06,0xa7,0x54,0xd0,0x1d,"PEER_COLLAB_OBJECTID_USER_PICTURE"); - IF_GUID_EQUAL_RETURN(guid,0x04387127,0xaa56,0x450a,0x8c,0xe5,0x4f,0x56,0x5c,0x67,0x90,0xf4,"PEER_GROUP_ROLE_ADMIN"); - IF_GUID_EQUAL_RETURN(guid,0x4370fd89,0xdc18,0x4cfb,0x8d,0xbf,0x98,0x53,0xa8,0xa9,0xf9,0x05,"PEER_GROUP_ROLE_INVITING_MEMBER"); - IF_GUID_EQUAL_RETURN(guid,0xf12dc4c7,0x0857,0x4ca0,0x93,0xfc,0xb1,0xbb,0x19,0xa3,0xd8,0xc2,"PEER_GROUP_ROLE_MEMBER"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4283,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_ANALOGVIDEOIN"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4281,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_CAPTURE"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4289,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_CC"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4287,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_EDS"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4286,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_NABTS"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4282,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_PREVIEW"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c428a,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_STILL"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4288,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_TELETEXT"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c428b,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_TIMECODE"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4284,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_VBI"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c4285,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_VIDEOPORT"); - IF_GUID_EQUAL_RETURN(guid,0xfb6c428c,0x0353,0x11d1,0x90,0x5f,0x00,0x00,0xc0,0xcc,0x16,0xba,"PIN_CATEGORY_VIDEOPORT_VBI"); - IF_GUID_EQUAL_RETURN(guid,0xba138e10,0xe250,0x4ad7,0x86,0x16,0xcf,0x1a,0x7a,0xd4,0x10,0xe7,"PPM_IDLESTATES_DATA_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4838fe4f,0xf71c,0x4e51,0x9e,0xcc,0x84,0x30,0xa7,0xac,0x4c,0x6c,"PPM_IDLESTATE_CHANGE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd67abd39,0x81f8,0x4a5e,0x81,0x52,0x72,0xe3,0x1e,0xc9,0x12,0xee,"PPM_IDLE_ACCOUNTING_EX_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe2a26f78,0xae07,0x4ee0,0xa3,0x0f,0xce,0x54,0xf5,0x5a,0x94,0xcd,"PPM_IDLE_ACCOUNTING_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7fd18652,0xcfe,0x40d2,0xb0,0xa1,0xb,0x6,0x6a,0x87,0x75,0x9e,"PPM_PERFMON_PERFSTATE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5708cc20,0x7d40,0x4bf4,0xb4,0xaa,0x2b,0x01,0x33,0x8d,0x01,0x26,"PPM_PERFSTATES_DATA_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa5b32ddd,0x7f39,0x4abc,0xb8,0x92,0x90,0xe,0x43,0xb5,0x9e,0xbb,"PPM_PERFSTATE_CHANGE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x995e6b7f,0xd653,0x497a,0xb9,0x78,0x36,0xa3,0xc,0x29,0xbf,0x1,"PPM_PERFSTATE_DOMAIN_CHANGE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa852c2c8,0x1a4c,0x423b,0x8c,0x2c,0xf3,0x0d,0x82,0x93,0x1a,0x88,"PPM_THERMALCONSTRAINT_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x48f377b8,0x6880,0x4c7b,0x8b,0xdc,0x38,0x1,0x76,0xc6,0x65,0x4d,"PPM_THERMAL_POLICY_CHANGE_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5d5a1704,0xdfd1,0x4181,0x8e,0xee,0x81,0x5c,0x86,0xed,0xad,0x31,"PRINTER_EXTENSION_DETAILEDREASON_PRINTER_STATUS"); - IF_GUID_EQUAL_RETURN(guid,0x23bb1328,0x63de,0x4293,0x91,0x5b,0xa6,0xa2,0x3d,0x92,0x9a,0xcb,"PRINTER_EXTENSION_REASON_DRIVER_EVENT"); - IF_GUID_EQUAL_RETURN(guid,0xec8f261f,0x267c,0x469f,0xb5,0xd6,0x39,0x33,0x02,0x3c,0x29,0xcc,"PRINTER_EXTENSION_REASON_PRINT_PREFERENCES"); - IF_GUID_EQUAL_RETURN(guid,0x2ABAD223,0xB994,0x4aca,0x82,0xFC,0x45,0x71,0xB1,0xB5,0x85,0xAC,"PRINT_APP_BIDI_NOTIFY_CHANNEL"); - IF_GUID_EQUAL_RETURN(guid,0x25df3b0e,0x74a9,0x47f5,0x80,0xce,0x79,0xb4,0xb1,0xeb,0x5c,0x58,"PRINT_PORT_MONITOR_NOTIFY_CHANNEL"); - IF_GUID_EQUAL_RETURN(guid,0x180c072b,0xc27f,0x43c7,0x99,0x22,0xf6,0x35,0x62,0xa4,0x63,0x2b,"PROPID_ACC_DEFAULTACTION"); - IF_GUID_EQUAL_RETURN(guid,0x4d48dfe4,0xbd3f,0x491f,0xa6,0x48,0x49,0x2d,0x6f,0x20,0xc5,0x88,"PROPID_ACC_DESCRIPTION"); - IF_GUID_EQUAL_RETURN(guid,0x1ff1435f,0x8a14,0x477b,0xb2,0x26,0xa0,0xab,0xe2,0x79,0x97,0x5d,"PROPID_ACC_DESCRIPTIONMAP"); - IF_GUID_EQUAL_RETURN(guid,0x1ba09523,0x2e3b,0x49a6,0xa0,0x59,0x59,0x68,0x2a,0x3c,0x48,0xfd,"PROPID_ACC_DODEFAULTACTION"); - IF_GUID_EQUAL_RETURN(guid,0x6eb335df,0x1c29,0x4127,0xb1,0x2c,0xde,0xe9,0xfd,0x15,0x7f,0x2b,"PROPID_ACC_FOCUS"); - IF_GUID_EQUAL_RETURN(guid,0xc831e11f,0x44db,0x4a99,0x97,0x68,0xcb,0x8f,0x97,0x8b,0x72,0x31,"PROPID_ACC_HELP"); - IF_GUID_EQUAL_RETURN(guid,0x787d1379,0x8ede,0x440b,0x8a,0xec,0x11,0xf7,0xbf,0x90,0x30,0xb3,"PROPID_ACC_HELPTOPIC"); - IF_GUID_EQUAL_RETURN(guid,0x7d9bceee,0x7d1e,0x4979,0x93,0x82,0x51,0x80,0xf4,0x17,0x2c,0x34,"PROPID_ACC_KEYBOARDSHORTCUT"); - IF_GUID_EQUAL_RETURN(guid,0x608d3df8,0x8128,0x4aa7,0xa4,0x28,0xf5,0x5e,0x49,0x26,0x72,0x91,"PROPID_ACC_NAME"); - IF_GUID_EQUAL_RETURN(guid,0x031670ed,0x3cdf,0x48d2,0x96,0x13,0x13,0x8f,0x2d,0xd8,0xa6,0x68,"PROPID_ACC_NAV_DOWN"); - IF_GUID_EQUAL_RETURN(guid,0xcfd02558,0x557b,0x4c67,0x84,0xf9,0x2a,0x09,0xfc,0xe4,0x07,0x49,"PROPID_ACC_NAV_FIRSTCHILD"); - IF_GUID_EQUAL_RETURN(guid,0x302ecaa5,0x48d5,0x4f8d,0xb6,0x71,0x1a,0x8d,0x20,0xa7,0x78,0x32,"PROPID_ACC_NAV_LASTCHILD"); - IF_GUID_EQUAL_RETURN(guid,0x228086cb,0x82f1,0x4a39,0x87,0x05,0xdc,0xdc,0x0f,0xff,0x92,0xf5,"PROPID_ACC_NAV_LEFT"); - IF_GUID_EQUAL_RETURN(guid,0x1cdc5455,0x8cd9,0x4c92,0xa3,0x71,0x39,0x39,0xa2,0xfe,0x3e,0xee,"PROPID_ACC_NAV_NEXT"); - IF_GUID_EQUAL_RETURN(guid,0x776d3891,0xc73b,0x4480,0xb3,0xf6,0x07,0x6a,0x16,0xa1,0x5a,0xf6,"PROPID_ACC_NAV_PREV"); - IF_GUID_EQUAL_RETURN(guid,0xcd211d9f,0xe1cb,0x4fe5,0xa7,0x7c,0x92,0x0b,0x88,0x4d,0x09,0x5b,"PROPID_ACC_NAV_RIGHT"); - IF_GUID_EQUAL_RETURN(guid,0x016e1a2b,0x1a4e,0x4767,0x86,0x12,0x33,0x86,0xf6,0x69,0x35,0xec,"PROPID_ACC_NAV_UP"); - IF_GUID_EQUAL_RETURN(guid,0x474c22b6,0xffc2,0x467a,0xb1,0xb5,0xe9,0x58,0xb4,0x65,0x73,0x30,"PROPID_ACC_PARENT"); - IF_GUID_EQUAL_RETURN(guid,0xcb905ff2,0x7bd1,0x4c05,0xb3,0xc8,0xe6,0xc2,0x41,0x36,0x4d,0x70,"PROPID_ACC_ROLE"); - IF_GUID_EQUAL_RETURN(guid,0xf79acda2,0x140d,0x4fe6,0x89,0x14,0x20,0x84,0x76,0x32,0x82,0x69,"PROPID_ACC_ROLEMAP"); - IF_GUID_EQUAL_RETURN(guid,0xb99d073c,0xd731,0x405b,0x90,0x61,0xd9,0x5e,0x8f,0x84,0x29,0x84,"PROPID_ACC_SELECTION"); - IF_GUID_EQUAL_RETURN(guid,0xa8d4d5b0,0x0a21,0x42d0,0xa5,0xc0,0x51,0x4e,0x98,0x4f,0x45,0x7b,"PROPID_ACC_STATE"); - IF_GUID_EQUAL_RETURN(guid,0x43946c5e,0x0ac0,0x4042,0xb5,0x25,0x07,0xbb,0xdb,0xe1,0x7f,0xa7,"PROPID_ACC_STATEMAP"); - IF_GUID_EQUAL_RETURN(guid,0x123fe443,0x211a,0x4615,0x95,0x27,0xc4,0x5a,0x7e,0x93,0x71,0x7a,"PROPID_ACC_VALUE"); - IF_GUID_EQUAL_RETURN(guid,0xda1c3d79,0xfc5c,0x420e,0xb3,0x99,0x9d,0x15,0x33,0x54,0x9e,0x75,"PROPID_ACC_VALUEMAP"); - IF_GUID_EQUAL_RETURN(guid,0x5c2b3f5b,0x9182,0x42a3,0x8d,0xec,0x8c,0x04,0xc1,0xee,0x63,0x4d,"Pane_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x40499998,0x9c31,0x4245,0xa4,0x03,0x87,0x32,0x0e,0x59,0xea,0xf6,"ProcessId_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x228c9f86,0xc36c,0x47bb,0x9f,0xb6,0xa5,0x83,0x4b,0xfc,0x53,0xa4,"ProgressBar_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdca5708a,0xc16b,0x4cd9,0xb8,0x89,0xbe,0xb1,0x6a,0x80,0x49,0x04,"ProviderDescription_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe4cc08cb,0x942e,0x4b19,0x85,0x4,0xbd,0x5a,0x89,0xa7,0x47,0xf5,"RDCLIENT_BITMAP_RENDER_SERVICE"); - IF_GUID_EQUAL_RETURN(guid,0x6b59819a,0x5cae,0x492d,0xa9,0x01,0x2a,0x3c,0x2c,0x50,0x16,0x4f,"REAL_TIME_NOTIFICATION_CAPABILITY"); - IF_GUID_EQUAL_RETURN(guid,0xbc90d167,0x9470,0x4139,0xa9,0xba,0xbe,0x0b,0xbb,0xf5,0xb7,0x4d,"RPC_INTERFACE_EVENT_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3bdb49db,0xfe2c,0x4483,0xb3,0xe1,0xe5,0x7f,0x21,0x94,0x40,0xc6,"RadioButton_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x25fa1055,0xdebf,0x4373,0xa7,0x9e,0x1f,0x1a,0x19,0x08,0xd3,0xc4,"RangeValue_IsReadOnly_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa1f96325,0x3a3d,0x4b44,0x8e,0x1f,0x4a,0x46,0xd9,0x84,0x40,0x19,"RangeValue_LargeChange_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x19319914,0xf979,0x4b35,0xa1,0xa6,0xd3,0x7e,0x05,0x43,0x34,0x73,"RangeValue_Maximum_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x78cbd3b2,0x684d,0x4860,0xaf,0x93,0xd1,0xf9,0x5c,0xb0,0x22,0xfd,"RangeValue_Minimum_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x18b00d87,0xb1c9,0x476a,0xbf,0xbd,0x5f,0x0b,0xdb,0x92,0x6f,0x63,"RangeValue_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x81c2c457,0x3941,0x4107,0x99,0x75,0x13,0x97,0x60,0xf7,0xc0,0x72,"RangeValue_SmallChange_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x131f5d98,0xc50c,0x489d,0xab,0xe5,0xae,0x22,0x08,0x98,0xc5,0xf7,"RangeValue_Value_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa39eebfa,0x7fba,0x4c89,0xb4,0xd4,0xb9,0x9e,0x2d,0xe7,0xd1,0x60,"RuntimeId_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2313a4ed,0xbf2d,0x454f,0xad,0x8a,0xd9,0x5b,0xa7,0xf9,0x1f,0xee,"SBE2_STREAM_DESC_EVENT"); - IF_GUID_EQUAL_RETURN(guid,0xfcf09,0x97f5,0x46ac,0x97,0x69,0x7a,0x83,0xb3,0x53,0x84,0xfb,"SBE2_V1_STREAMS_CREATION_EVENT"); - IF_GUID_EQUAL_RETURN(guid,0xa72530a3,0x344,0x4cab,0xa2,0xd0,0xfe,0x93,0x7d,0xbd,0xca,0xb3,"SBE2_V2_STREAMS_CREATION_EVENT"); - IF_GUID_EQUAL_RETURN(guid,0x86248cc9,0x4a59,0x43e2,0x91,0x46,0x48,0xa7,0xf3,0xf4,0x14,0xc,"SCP_EVENTID_ACQSECURECLOCK"); - IF_GUID_EQUAL_RETURN(guid,0x213dd287,0x41d2,0x432b,0x9e,0x3f,0x3b,0x4f,0x7b,0x35,0x81,0xdd,"SCP_EVENTID_DRMINFO"); - IF_GUID_EQUAL_RETURN(guid,0x87a507c7,0xb469,0x4386,0xb9,0x76,0xd5,0xd1,0xce,0x53,0x8a,0x6f,"SCP_EVENTID_NEEDTOINDIV"); - IF_GUID_EQUAL_RETURN(guid,0x41d0155d,0x7cc7,0x4217,0xad,0xa9,0x00,0x50,0x74,0x62,0x4d,0xa4,"SCP_PARAMID_DRMVERSION"); - IF_GUID_EQUAL_RETURN(guid,0xf4791d68,0xe254,0x4ba3,0x9a,0x53,0x26,0xa5,0xc5,0x49,0x79,0x46,"SID_ControlElementProvider"); - IF_GUID_EQUAL_RETURN(guid,0xfaadfc40,0xb777,0x4b69,0xaa,0x81,0x77,0x03,0x5e,0xf0,0xe6,0xe8,"SID_CtxQueryAssociations"); - IF_GUID_EQUAL_RETURN(guid,0xC4C4C4C4,0x0049,0x4E2B,0x98,0xFB,0x95,0x37,0xF6,0xCE,0x51,0x6D,"SID_DRMSecureServiceChannel"); - IF_GUID_EQUAL_RETURN(guid,0xf59aa553,0x8309,0x46ca,0x97,0x36,0x1a,0xc3,0xc6,0x2d,0x60,0x31,"SID_DeviceDisplayStatusManager"); - IF_GUID_EQUAL_RETURN(guid,0x13e0e9e2,0xc3fa,0x4e3c,0x90,0x6e,0x64,0x50,0x2f,0xa4,0xdc,0x95,"SID_EnumDeviceFunction"); - IF_GUID_EQUAL_RETURN(guid,0x40eab0b9,0x4d7f,0x4b53,0xa3,0x34,0x15,0x81,0xdd,0x90,0x41,0xf4,"SID_EnumInterface"); - IF_GUID_EQUAL_RETURN(guid,0x383b69fa,0x5486,0x49da,0x91,0xf5,0xd6,0x3c,0x24,0xc8,0xe9,0xd0,"SID_FDPairingHandler"); - IF_GUID_EQUAL_RETURN(guid,0x2b4cbdc9,0x31c4,0x40d4,0xa6,0x2d,0x77,0x2a,0xa1,0x74,0xed,0x52,"SID_FunctionDiscoveryProviderRefresh"); - IF_GUID_EQUAL_RETURN(guid,0x4717cc40,0xbcb9,0x11d0,0x93,0x36,0x0,0xa0,0xc9,0xd,0xca,0xa9,"SID_GetCaller"); - IF_GUID_EQUAL_RETURN(guid,0xb96fdb85,0x7204,0x4724,0x84,0x2b,0xc7,0x05,0x9d,0xed,0xb9,0xd0,"SID_IsUIAutomationObject"); - IF_GUID_EQUAL_RETURN(guid,0xcf9a88f4,0xabcf,0x4ed8,0x9b,0x74,0x7d,0xb3,0x34,0x45,0x45,0x9e,"SID_MSVidCtl_CurrentAudioEndpoint"); - IF_GUID_EQUAL_RETURN(guid,0xa6c17eb4,0x2d65,0x11d2,0x83,0x8f,0x0,0xc0,0x4f,0xd9,0x18,0xd0,"SID_MenuShellFolder"); - IF_GUID_EQUAL_RETURN(guid,0xcee8ccc9,0x4f6b,0x4469,0xa2,0x35,0x5a,0x22,0x86,0x9e,0xef,0x03,"SID_PNPXAssociation"); - IF_GUID_EQUAL_RETURN(guid,0xa86530b1,0x542f,0x439f,0xB7,0x1c,0xb0,0x75,0x6b,0x13,0x67,0x7a,"SID_PNPXPropertyStore"); - IF_GUID_EQUAL_RETURN(guid,0x439e80ee,0xa217,0x4712,0x9f,0xa6,0xde,0xab,0xd9,0xc2,0xa7,0x27,"SID_PNPXServiceCollection"); - IF_GUID_EQUAL_RETURN(guid,0x8101368e,0xcabb,0x4426,0xac,0xff,0x96,0xc4,0x10,0x81,0x20,0x00,"SID_PnpProvider"); - IF_GUID_EQUAL_RETURN(guid,0x74a5040c,0xdd0c,0x48f0,0xac,0x85,0x19,0x4c,0x32,0x59,0x18,0xa,"SID_ProvideRuntimeContext"); - IF_GUID_EQUAL_RETURN(guid,0x80f30233,0xb7df,0x11d2,0xa3,0x3b,0x0,0x60,0x97,0xdf,0x5b,0xd4,"SID_SCommDlgBrowser"); - IF_GUID_EQUAL_RETURN(guid,0xB99EAA5C,0x3850,0x4400,0xBC,0x33,0x2C,0xE5,0x34,0x04,0x8B,0xF8,"SID_SCommandBarState"); - IF_GUID_EQUAL_RETURN(guid,0x3050f4b5,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b,"SID_SEditCommandTarget"); - IF_GUID_EQUAL_RETURN(guid,0x889A935D,0x971E,0x4B12,0xB9,0x0C,0x24,0xDF,0xC9,0xE1,0xE5,0xE8,"SID_SGetViewFromViewDual"); - IF_GUID_EQUAL_RETURN(guid,0x3050f6a0,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b,"SID_SHTMLEditHost"); - IF_GUID_EQUAL_RETURN(guid,0x3050f7f9,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b,"SID_SHTMLEditServices"); - IF_GUID_EQUAL_RETURN(guid,0x164bbd86,0x1d0d,0x4de0,0x9a,0x3b,0xd9,0x72,0x96,0x47,0xc2,0xb8,"SID_SMenuBandBKContextMenu"); - IF_GUID_EQUAL_RETURN(guid,0x743ca664,0xdeb,0x11d1,0x98,0x25,0x0,0xc0,0x4f,0xd9,0x19,0x72,"SID_SMenuBandBottom"); - IF_GUID_EQUAL_RETURN(guid,0x165ebaf4,0x6d51,0x11d2,0x83,0xad,0x0,0xc0,0x4f,0xd9,0x18,0xd0,"SID_SMenuBandBottomSelected"); - IF_GUID_EQUAL_RETURN(guid,0xed9cc020,0x8b9,0x11d1,0x98,0x23,0x0,0xc0,0x4f,0xd9,0x19,0x72,"SID_SMenuBandChild"); - IF_GUID_EQUAL_RETURN(guid,0x39545874,0x7162,0x465e,0xb7,0x83,0x2a,0xa1,0x87,0x4f,0xef,0x81,"SID_SMenuBandContextMenuModifier"); - IF_GUID_EQUAL_RETURN(guid,0x8c278eec,0x3eab,0x11d1,0x8c,0xb0,0x0,0xc0,0x4f,0xd9,0x18,0xd0,"SID_SMenuBandParent"); - IF_GUID_EQUAL_RETURN(guid,0x9493a810,0xec38,0x11d0,0xbc,0x46,0x0,0xaa,0x0,0x6c,0xe2,0xf5,"SID_SMenuBandTop"); - IF_GUID_EQUAL_RETURN(guid,0xD1E7AFEB,0x6A2E,0x11d0,0x8C,0x78,0x0,0xC0,0x4F,0xD9,0x18,0xB4,"SID_SMenuPopup"); - IF_GUID_EQUAL_RETURN(guid,0x4C96BE40L,0x915C,0x11CF,0x99,0xD3,0x00,0xAA,0x00,0x4A,0xE8,0x37,"SID_STopLevelBrowser"); - IF_GUID_EQUAL_RETURN(guid,0x49e1b500,0x4636,0x11d3,0x97,0xf7,0x0,0xc0,0x4f,0x45,0xd0,0xb3,"SID_STopWindow"); - IF_GUID_EQUAL_RETURN(guid,0xeb84ada2,0x00ff,0x4992,0x83,0x24,0xed,0x5c,0xe0,0x61,0xcb,0x29,"SID_ShellExecuteNamedPropertyStore"); - IF_GUID_EQUAL_RETURN(guid,0x0D0D66EB,0xCF74,0x4164,0xB5,0x2F,0x08,0x34,0x46,0x72,0xDD,0x46,"SID_UPnPActivator"); - IF_GUID_EQUAL_RETURN(guid,0xc920566e,0x5671,0x4496,0x80,0x25,0xbf,0x0b,0x89,0xbd,0x44,0xcd,"SID_UninstallDeviceFunction"); - IF_GUID_EQUAL_RETURN(guid,0x89A502FC,0x857B,0x4698,0xA0,0xB7,0x02,0x71,0x92,0x00,0x2F,0x9E,"SID_UnpairProvider"); - IF_GUID_EQUAL_RETURN(guid,0x1f101481,0xbccd,0x11d0,0x93,0x36,0x0,0xa0,0xc9,0xd,0xca,0xa9,"SID_VariantConversion"); - IF_GUID_EQUAL_RETURN(guid,0xaec2ef9c,0x3a4d,0x4d3e,0x88,0x42,0x23,0x99,0x42,0xe3,0x9a,0x47,"SOCKET_DEFAULT2_QM_POLICY"); - IF_GUID_EQUAL_RETURN(guid,0x4c437b92,0x6e9e,0x11d1,0xa7,0x4,0x0,0x60,0x97,0xc4,0xe4,0x76,"SPECIFYPAGES_STATISTICS"); - IF_GUID_EQUAL_RETURN(guid,0xc2239ce6,0x00c0,0x4fbf,0xba,0xd6,0x18,0x13,0x93,0x85,0xa4,0x9a,"SVCID_PNRPCLOUD"); - IF_GUID_EQUAL_RETURN(guid,0xc2239ce5,0x00c0,0x4fbf,0xba,0xd6,0x18,0x13,0x93,0x85,0xa4,0x9a,"SVCID_PNRPNAME_V1"); - IF_GUID_EQUAL_RETURN(guid,0xc2239ce7,0x00c0,0x4fbf,0xba,0xd6,0x18,0x13,0x93,0x85,0xa4,0x9a,"SVCID_PNRPNAME_V2"); - IF_GUID_EQUAL_RETURN(guid,0x57cbb584,0xe9b4,0x47ae,0xa1,0x20,0xc4,0xdf,0x33,0x35,0xde,0xe2,"SYNCMGR_OBJECTID_BrowseContent"); - IF_GUID_EQUAL_RETURN(guid,0xd78181f4,0x2389,0x47e4,0xa9,0x60,0x60,0xbc,0xc2,0xed,0x93,0xb,"SYNCMGR_OBJECTID_ConflictStore"); - IF_GUID_EQUAL_RETURN(guid,0x2203bdc1,0x1af1,0x4082,0x8c,0x30,0x28,0x39,0x9f,0x41,0x38,0x4c,"SYNCMGR_OBJECTID_EventLinkClick"); - IF_GUID_EQUAL_RETURN(guid,0x4bef34b9,0xa786,0x4075,0xba,0x88,0xc,0x2b,0x9d,0x89,0xa9,0x8f,"SYNCMGR_OBJECTID_EventStore"); - IF_GUID_EQUAL_RETURN(guid,0x6dbc85c3,0x5d07,0x4c72,0xa7,0x77,0x7f,0xec,0x78,0x7,0x2c,0x6,"SYNCMGR_OBJECTID_Icon"); - IF_GUID_EQUAL_RETURN(guid,0xd882d80b,0xe7aa,0x49ed,0x86,0xb7,0xe6,0xe1,0xf7,0x14,0xcd,0xfe,"SYNCMGR_OBJECTID_QueryBeforeActivate"); - IF_GUID_EQUAL_RETURN(guid,0xa0efc282,0x60e0,0x460e,0x93,0x74,0xea,0x88,0x51,0x3c,0xfc,0x80,"SYNCMGR_OBJECTID_QueryBeforeDeactivate"); - IF_GUID_EQUAL_RETURN(guid,0xf76c3397,0xafb3,0x45d7,0xa5,0x9f,0x5a,0x49,0xe9,0x5,0x43,0x7e,"SYNCMGR_OBJECTID_QueryBeforeDelete"); - IF_GUID_EQUAL_RETURN(guid,0xbb5f64aa,0xf004,0x4eb5,0x8e,0x4d,0x26,0x75,0x19,0x66,0x34,0x4c,"SYNCMGR_OBJECTID_QueryBeforeDisable"); - IF_GUID_EQUAL_RETURN(guid,0x4cbf7f0,0x5beb,0x4de1,0xbc,0x90,0x90,0x83,0x45,0xc4,0x80,0xf6,"SYNCMGR_OBJECTID_QueryBeforeEnable"); - IF_GUID_EQUAL_RETURN(guid,0xedc6f3e3,0x8441,0x4109,0xad,0xf3,0x6c,0x1c,0xa0,0xb7,0xde,0x47,"SYNCMGR_OBJECTID_ShowSchedule"); - IF_GUID_EQUAL_RETURN(guid,0xdaf34b36,0x5065,0x4946,0xb2,0x2f,0x92,0x59,0x5f,0xc0,0x75,0x1a,"ScrollBar_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4591d005,0xa803,0x4d5c,0xb4,0xd5,0x8d,0x28,0x00,0xf9,0x06,0xa7,"ScrollItem_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc7c13c0e,0xeb21,0x47ff,0xac,0xc4,0xb5,0xa3,0x35,0x0f,0x51,0x91,"Scroll_HorizontalScrollPercent_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x70c2e5d4,0xfcb0,0x4713,0xa9,0xaa,0xaf,0x92,0xff,0x79,0xe4,0xcd,"Scroll_HorizontalViewSize_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8b925147,0x28cd,0x49ae,0xbd,0x63,0xf4,0x41,0x18,0xd2,0xe7,0x19,"Scroll_HorizontallyScrollable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x895fa4b4,0x759d,0x4c50,0x8e,0x15,0x03,0x46,0x06,0x72,0x00,0x3c,"Scroll_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6c8d7099,0xb2a8,0x4948,0xbf,0xf7,0x3c,0xf9,0x05,0x8b,0xfe,0xfb,"Scroll_VerticalScrollPercent_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xde6a2e22,0xd8c7,0x40c5,0x83,0xba,0xe5,0xf6,0x81,0xd5,0x31,0x08,"Scroll_VerticalViewSize_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x89164798,0x0068,0x4315,0xb8,0x9a,0x1e,0x7c,0xfb,0xbc,0x3d,0xfc,"Scroll_VerticallyScrollable_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8fe316d2,0xe52,0x460a,0x9c,0x1e,0x48,0xf2,0x73,0xd4,0x70,0xa3,"SelectedItemCount_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3c822dd1,0xc407,0x4dba,0x91,0xdd,0x79,0xd4,0xae,0xd0,0xae,0xc6,"SelectionItem_ElementAddedToSelectionEvent_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x097fa8a9,0x7079,0x41af,0x8b,0x9c,0x09,0x34,0xd8,0x30,0x5e,0x5c,"SelectionItem_ElementRemovedFromSelectionEvent_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb9c7dbfb,0x4ebe,0x4532,0xaa,0xf4,0x00,0x8c,0xf6,0x47,0x23,0x3c,"SelectionItem_ElementSelectedEvent_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf122835f,0xcd5f,0x43df,0xb7,0x9d,0x4b,0x84,0x9e,0x9e,0x60,0x20,"SelectionItem_IsSelected_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9bc64eeb,0x87c7,0x4b28,0x94,0xbb,0x4d,0x9f,0xa4,0x37,0xb6,0xef,"SelectionItem_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa4365b6e,0x9c1e,0x4b63,0x8b,0x53,0xc2,0x42,0x1d,0xd1,0xe8,0xfb,"SelectionItem_SelectionContainer_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x49d73da5,0xc883,0x4500,0x88,0x3d,0x8f,0xcf,0x8d,0xaf,0x6c,0xbe,"Selection_CanSelectMultiple_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xcac14904,0x16b4,0x4b53,0x8e,0x47,0x4c,0xb1,0xdf,0x26,0x7b,0xb7,"Selection_InvalidatedEvent_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb1ae4422,0x63fe,0x44e7,0xa5,0xa5,0xa7,0x38,0xc8,0x29,0xb1,0x9a,"Selection_IsSelectionRequired_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x66e3b7e8,0xd821,0x4d25,0x87,0x61,0x43,0x5d,0x2c,0x8b,0x25,0x3f,"Selection_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xaa6dc2a2,0x0e2b,0x4d38,0x96,0xd5,0x34,0xe4,0x70,0xb8,0x18,0x53,"Selection_Selection_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5fd34a43,0x061e,0x42c8,0xb5,0x89,0x9d,0xcc,0xf7,0x4b,0xc4,0x3a,"SemanticZoom_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8767eba3,0x2a63,0x4ab0,0xac,0x8d,0xaa,0x50,0xe2,0x3d,0xe9,0x78,"Separator_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb033c24b,0x3b35,0x4cea,0xb6,0x09,0x76,0x36,0x82,0xfa,0x66,0x0b,"Slider_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x60cc4b38,0x3cb1,0x4161,0xb4,0x42,0xc6,0xb7,0x26,0xc1,0x78,0x25,"Spinner_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7011f01f,0x4ace,0x4901,0xb4,0x61,0x92,0x0a,0x6f,0x1c,0xa6,0x50,"SplitButton_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa3194c38,0xc9bc,0x4604,0x93,0x96,0xae,0x3f,0x9f,0x45,0x7f,0x7b,"SpreadsheetItem_AnnotationObjects_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc70c51d0,0xd602,0x4b45,0xaf,0xbc,0xb4,0x71,0x2b,0x96,0xd7,0x2b,"SpreadsheetItem_AnnotationTypes_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe602e47d,0x1b47,0x4bea,0x87,0xcf,0x3b,0x0b,0x0b,0x5c,0x15,0xb6,"SpreadsheetItem_Formula_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x32cf83ff,0xf1a8,0x4a8c,0x86,0x58,0xd4,0x7b,0xa7,0x4e,0x20,0xba,"SpreadsheetItem_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6a5b24c9,0x9d1e,0x4b85,0x9e,0x44,0xc0,0x2e,0x31,0x69,0xb1,0x0b,"Spreadsheet_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd45e7d1b,0x5873,0x475f,0x95,0xa4,0x04,0x33,0xe1,0xf1,0xb0,0x0a,"StatusBar_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x59977961,0x3edd,0x4b11,0xb1,0x3b,0x67,0x6b,0x2a,0x2a,0x6c,0xa9,"StructureChanged_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf451cda0,0xba0a,0x4681,0xb0,0xb0,0x0d,0xbd,0xb5,0x3e,0x58,0xf3,"Styles_ExtendedProperties_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x63eff97a,0xa1c5,0x4b1d,0x84,0xeb,0xb7,0x65,0xf2,0xed,0xd6,0x32,"Styles_FillColor_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x939a59fe,0x8fbd,0x4e75,0xa2,0x71,0xac,0x45,0x95,0x19,0x51,0x63,"Styles_FillPatternColor_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x81cf651f,0x482b,0x4451,0xa3,0x0a,0xe1,0x54,0x5e,0x55,0x4f,0xb8,"Styles_FillPatternStyle_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x1ae62655,0xda72,0x4d60,0xa1,0x53,0xe5,0xaa,0x69,0x88,0xe3,0xbf,"Styles_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc71a23f8,0x778c,0x400d,0x84,0x58,0x3b,0x54,0x3e,0x52,0x69,0x84,"Styles_Shape_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xda82852f,0x3817,0x4233,0x82,0xaf,0x02,0x27,0x9e,0x72,0xcc,0x77,"Styles_StyleId_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x1c12b035,0x05d1,0x4f55,0x9e,0x8e,0x14,0x89,0xf3,0xff,0x55,0x0d,"Styles_StyleName_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x05c288a6,0xc47b,0x488b,0xb6,0x53,0x33,0x97,0x7a,0x55,0x1b,0x8b,"SynchronizedInput_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd271545d,0x7a3a,0x47a7,0x84,0x74,0x81,0xd2,0x9a,0x24,0x51,0xc9,"SystemAlert_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xD38EFF65,0xAA46,0x4FD5,0x91,0xA7,0x67,0x84,0x5F,0xB0,0x2F,0x5B,"TF_PROFILE_ARRAY"); - IF_GUID_EQUAL_RETURN(guid,0x0AEC109C,0x7E96,0x11D4,0xB2,0xEF,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_CANTONESE"); - IF_GUID_EQUAL_RETURN(guid,0x4BDF9F03,0xC7D3,0x11D4,0xB2,0xAB,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_CHANGJIE"); - IF_GUID_EQUAL_RETURN(guid,0x037B2C25,0x480C,0x4D7F,0xB0,0x27,0xD6,0xCA,0x6B,0x69,0x78,0x8A,"TF_PROFILE_DAYI"); - IF_GUID_EQUAL_RETURN(guid,0xF3BA907A,0x6C7E,0x11D4,0x97,0xFA,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_NEWCHANGJIE"); - IF_GUID_EQUAL_RETURN(guid,0xB2F9C502,0x1742,0x11D4,0x97,0x90,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_NEWPHONETIC"); - IF_GUID_EQUAL_RETURN(guid,0x0B883BA0,0xC1C7,0x11D4,0x87,0xF9,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_NEWQUICK"); - IF_GUID_EQUAL_RETURN(guid,0x761309DE,0x317A,0x11D4,0x9B,0x5D,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_PHONETIC"); - IF_GUID_EQUAL_RETURN(guid,0xF3BA9077,0x6C7E,0x11D4,0x97,0xFA,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_PINYIN"); - IF_GUID_EQUAL_RETURN(guid,0x6024B45F,0x5C54,0x11D4,0xB9,0x21,0x00,0x80,0xC8,0x82,0x68,0x7E,"TF_PROFILE_QUICK"); - IF_GUID_EQUAL_RETURN(guid,0xFA550B04,0x5AD7,0x411F,0xA5,0xAC,0xCA,0x03,0x8E,0xC5,0x15,0xD7,"TF_PROFILE_SIMPLEFAST"); - IF_GUID_EQUAL_RETURN(guid,0x3CAB88B7,0xCC3E,0x46A6,0x97,0x65,0xB7,0x72,0xAD,0x77,0x61,0xFF,"TF_PROFILE_TIGRINYA"); - IF_GUID_EQUAL_RETURN(guid,0x409C8376,0x007B,0x4357,0xAE,0x8E,0x26,0x31,0x6E,0xE3,0xFB,0x0D,"TF_PROFILE_YI"); - IF_GUID_EQUAL_RETURN(guid,0x7b785571,0x8c82,0x11cf,0xbc,0xc,0x0,0xaa,0x0,0xac,0x74,0xf6,"TIME_FORMAT_BYTE"); - IF_GUID_EQUAL_RETURN(guid,0x7b785573,0x8c82,0x11cf,0xbc,0xc,0x0,0xaa,0x0,0xac,0x74,0xf6,"TIME_FORMAT_FIELD"); - IF_GUID_EQUAL_RETURN(guid,0x7b785570,0x8c82,0x11cf,0xbc,0xc,0x0,0xaa,0x0,0xac,0x74,0xf6,"TIME_FORMAT_FRAME"); - IF_GUID_EQUAL_RETURN(guid,0x7b785574,0x8c82,0x11cf,0xbc,0xc,0x0,0xaa,0x0,0xac,0x74,0xf6,"TIME_FORMAT_MEDIA_TIME"); - IF_GUID_EQUAL_RETURN(guid,0L,0,0,0,0,0,0,0,0,0,0,"TIME_FORMAT_NONE"); - IF_GUID_EQUAL_RETURN(guid,0x7b785572,0x8c82,0x11cf,0xbc,0xc,0x0,0xaa,0x0,0xac,0x74,0xf6,"TIME_FORMAT_SAMPLE"); - IF_GUID_EQUAL_RETURN(guid,0x2c6a634f,0x921b,0x4e6e,0xb2,0x6e,0x08,0xfc,0xb0,0x79,0x8f,0x4c,"TabItem_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x38cd1f2d,0x337a,0x4bd2,0xa5,0xe3,0xad,0xb4,0x69,0xe3,0x0b,0xd3,"Tab_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x967a56a3,0x74b6,0x431e,0x8d,0xe6,0x99,0xc4,0x11,0x03,0x1c,0x58,"TableItem_ColumnHeaderItems_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdf1343bd,0x1888,0x4a29,0xa5,0x0c,0xb9,0x2e,0x6d,0xe3,0x7f,0x6f,"TableItem_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb3f853a0,0x0574,0x4cd8,0xbc,0xd7,0xed,0x59,0x23,0x57,0x2d,0x97,"TableItem_RowHeaderItems_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xaff1d72b,0x968d,0x42b1,0xb4,0x59,0x15,0x0b,0x29,0x9d,0xa6,0x64,"Table_ColumnHeaders_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x773bfa0e,0x5bc4,0x4deb,0x92,0x1b,0xde,0x7b,0x32,0x06,0x22,0x9e,"Table_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc415218e,0xa028,0x461e,0xaa,0x92,0x8f,0x92,0x5c,0xf7,0x93,0x51,"Table_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd9e35b87,0x6eb8,0x4562,0xaa,0xc6,0xa8,0xa9,0x07,0x52,0x36,0xa8,"Table_RowHeaders_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x83be75c3,0x29fe,0x4a30,0x85,0xe1,0x2a,0x62,0x77,0xfd,0x10,0x6e,"Table_RowOrColumnMajor_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7533cab7,0x3bfe,0x41ef,0x9e,0x85,0xe2,0x63,0x8c,0xbe,0x16,0x9e,"TextChild_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x628209f0,0x7c9a,0x4d57,0xbe,0x64,0x1f,0x18,0x36,0x57,0x1f,0xf5,"Text_AnimationStyle_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xff41cf68,0xe7ab,0x40b9,0x8c,0x72,0x72,0xa8,0xed,0x94,0x01,0x7d,"Text_AnnotationObjects_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xad2eb431,0xee4e,0x4be1,0xa7,0xba,0x55,0x59,0x15,0x5a,0x73,0xef,"Text_AnnotationTypes_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xfdc49a07,0x583d,0x4f17,0xad,0x27,0x77,0xfc,0x83,0x2a,0x3c,0x0b,"Text_BackgroundColor_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc1097c90,0xd5c4,0x4237,0x97,0x81,0x3b,0xec,0x8b,0xa5,0x4e,0x48,"Text_BulletStyle_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xfb059c50,0x92cc,0x49a5,0xba,0x8f,0x0a,0xa8,0x72,0xbb,0xa2,0xf3,"Text_CapStyle_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x929ee7a6,0x51d3,0x4715,0x96,0xdc,0xb6,0x94,0xfa,0x24,0xa1,0x68,"Text_CaretBidiMode_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb227b131,0x9889,0x4752,0xa9,0x1b,0x73,0x3e,0xfd,0xc5,0xc5,0xa0,"Text_CaretPosition_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xae9772dc,0xd331,0x4f09,0xbe,0x20,0x7e,0x6d,0xfa,0xf0,0x7b,0x0a,"Text_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xc2025af9,0xa42d,0x4ced,0xa1,0xfb,0xc6,0x74,0x63,0x15,0x22,0x2e,"Text_Culture_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x64e63ba8,0xf2e5,0x476e,0xa4,0x77,0x17,0x34,0xfe,0xaa,0xf7,0x26,"Text_FontName_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdc5eeeff,0x0506,0x4673,0x93,0xf2,0x37,0x7e,0x4a,0x8e,0x01,0xf1,"Text_FontSize_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x6fc02359,0xb316,0x4f5f,0xb4,0x01,0xf1,0xce,0x55,0x74,0x18,0x53,"Text_FontWeight_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x72d1c95d,0x5e60,0x471a,0x96,0xb1,0x6c,0x1b,0x3b,0x77,0xa4,0x36,"Text_ForegroundColor_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x04ea6161,0xfba3,0x477a,0x95,0x2a,0xbb,0x32,0x6d,0x02,0x6a,0x5b,"Text_HorizontalTextAlignment_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x206f9ad5,0xc1d3,0x424a,0x81,0x82,0x6d,0xa9,0xa7,0xf3,0xd6,0x32,"Text_IndentationFirstLine_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5cf66bac,0x2d45,0x4a4b,0xb6,0xc9,0xf7,0x22,0x1d,0x28,0x15,0xb0,"Text_IndentationLeading_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x97ff6c0f,0x1ce4,0x408a,0xb6,0x7b,0x94,0xd8,0x3e,0xb6,0x9b,0xf2,"Text_IndentationTrailing_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf5a4e533,0xe1b8,0x436b,0x93,0x5d,0xb5,0x7a,0xa3,0xf5,0x58,0xc4,"Text_IsActive_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x360182fb,0xbdd7,0x47f6,0xab,0x69,0x19,0xe3,0x3f,0x8a,0x33,0x44,"Text_IsHidden_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xfce12a56,0x1336,0x4a34,0x96,0x63,0x1b,0xab,0x47,0x23,0x93,0x20,"Text_IsItalic_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xa738156b,0xca3e,0x495e,0x95,0x14,0x83,0x3c,0x44,0x0f,0xeb,0x11,"Text_IsReadOnly_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf0ead858,0x8f53,0x413c,0x87,0x3f,0x1a,0x7d,0x7f,0x5e,0x0d,0xe4,"Text_IsSubscript_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xda706ee4,0xb3aa,0x4645,0xa4,0x1f,0xcd,0x25,0x15,0x7d,0xea,0x76,"Text_IsSuperscript_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb38ef51d,0x9e8d,0x4e46,0x91,0x44,0x56,0xeb,0xe1,0x77,0x32,0x9b,"Text_Link_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7ee593c4,0x72b4,0x4cac,0x92,0x71,0x3e,0xd2,0x4b,0x0e,0x4d,0x42,"Text_MarginBottom_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x9e9242d0,0x5ed0,0x4900,0x8e,0x8a,0xee,0xcc,0x03,0x83,0x5a,0xfc,"Text_MarginLeading_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x683d936f,0xc9b9,0x4a9a,0xb3,0xd9,0xd2,0x0d,0x33,0x31,0x1e,0x2a,"Text_MarginTop_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xaf522f98,0x999d,0x40af,0xa5,0xb2,0x01,0x69,0xd0,0x34,0x20,0x02,"Text_MarginTrailing_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5b675b27,0xdb89,0x46fe,0x97,0x0c,0x61,0x4d,0x52,0x3b,0xb9,0x7d,"Text_OutlineStyles_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x83ab383a,0xfd43,0x40da,0xab,0x3e,0xec,0xf8,0x16,0x5c,0xbb,0x6d,"Text_OverlineColor_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x0a234d66,0x617e,0x427f,0x87,0x1d,0xe1,0xff,0x1e,0x0c,0x21,0x3f,"Text_OverlineStyle_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x498479a2,0x5b22,0x448d,0xb6,0xe4,0x64,0x74,0x90,0x86,0x06,0x98,"Text_Pattern2_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8615f05d,0x7de5,0x44fd,0xa6,0x79,0x2c,0xa4,0xb4,0x60,0x33,0xa8,"Text_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x1f668cc3,0x9bbf,0x416b,0xb0,0xa2,0xf8,0x9f,0x86,0xf6,0x61,0x2c,"Text_SelectionActiveEnd_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xbfe15a18,0x8c41,0x4c5a,0x9a,0x0b,0x04,0xaf,0x0e,0x07,0xf4,0x87,"Text_StrikethroughColor_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x72913ef1,0xda00,0x4f01,0x89,0x9c,0xac,0x5a,0x85,0x77,0xa3,0x07,"Text_StrikethroughStyle_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x14c300de,0xc32b,0x449b,0xab,0x7c,0xb0,0xe0,0x78,0x9a,0xea,0x5d,"Text_StyleId_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x22c9e091,0x4d66,0x45d8,0xa8,0x28,0x73,0x7b,0xab,0x4c,0x98,0xa7,"Text_StyleName_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x2e68d00b,0x92fe,0x42d8,0x89,0x9a,0xa7,0x84,0xaa,0x44,0x54,0xa1,"Text_Tabs_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4a342082,0xf483,0x48c4,0xac,0x11,0xa8,0x4b,0x43,0x5e,0x2a,0x84,"Text_TextChangedEvent_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8bdf8739,0xf420,0x423e,0xaf,0x77,0x20,0xa5,0xd9,0x73,0xa9,0x07,"Text_TextFlowDirections_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x918edaa1,0x71b3,0x49ae,0x97,0x41,0x79,0xbe,0xb8,0xd3,0x58,0xf3,"Text_TextSelectionChangedEvent_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xbfa12c73,0xfde2,0x4473,0xbf,0x64,0x10,0x36,0xd6,0xaa,0x0f,0x45,"Text_UnderlineColor_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x5f3b21c0,0xede4,0x44bd,0x9c,0x36,0x38,0x53,0x03,0x8c,0xbf,0xeb,"Text_UnderlineStyle_Attribute_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x701ca877,0xe310,0x4dd6,0xb6,0x44,0x79,0x7e,0x4f,0xae,0xa2,0x13,"Thumb_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x98aa55bf,0x3bb0,0x4b65,0x83,0x6e,0x2e,0xa3,0x0d,0xbc,0x17,0x1f,"TitleBar_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x0b419760,0xe2f4,0x43ff,0x8c,0x5f,0x94,0x57,0xc8,0x2b,0x56,0xe9,"Toggle_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb23cdc52,0x22c2,0x4c6c,0x9d,0xed,0xf5,0xc4,0x22,0x47,0x9e,0xde,"Toggle_ToggleState_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8f06b751,0xe182,0x4e98,0x88,0x93,0x22,0x84,0x54,0x3a,0x7d,0xce,"ToolBar_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x276d71ef,0x24a9,0x49b6,0x8e,0x97,0xda,0x98,0xb4,0x01,0xbb,0xcd,"ToolTipClosed_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x3f4b97ff,0x2edc,0x451d,0xbc,0xa4,0x95,0xa3,0x18,0x8d,0x5b,0x03,"ToolTipOpened_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x05ddc6d1,0x2137,0x4768,0x98,0xea,0x73,0xf5,0x2f,0x71,0x34,0xf3,"ToolTip_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x8afcfd07,0xa369,0x44de,0x98,0x8b,0x2f,0x7f,0xf4,0x9f,0xb8,0xa8,"Tranform_Pattern2_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf357e890,0xa756,0x4359,0x9c,0xa6,0x86,0x70,0x2b,0xf8,0xf3,0x81,"Transform2_CanZoom_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xeee29f1a,0xf4a2,0x4b5b,0xac,0x65,0x95,0xcf,0x93,0x28,0x33,0x87,"Transform2_ZoomLevel_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x42ab6b77,0xceb0,0x4eca,0xb8,0x2a,0x6c,0xfa,0x5f,0xa1,0xfc,0x08,"Transform2_ZoomMaximum_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x742ccc16,0x4ad1,0x4e07,0x96,0xfe,0xb1,0x22,0xc6,0xe6,0xb2,0x2b,"Transform2_ZoomMinimum_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x1b75824d,0x208b,0x4fdf,0xbc,0xcd,0xf1,0xf4,0xe5,0x74,0x1f,0x4f,"Transform_CanMove_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xbb98dca5,0x4c1a,0x41d4,0xa4,0xf6,0xeb,0xc1,0x28,0x64,0x41,0x80,"Transform_CanResize_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x10079b48,0x3849,0x476f,0xac,0x96,0x44,0xa9,0x5c,0x84,0x40,0xd9,"Transform_CanRotate_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x24b46fdb,0x587e,0x49f1,0x9c,0x4a,0xd8,0xe9,0x8b,0x66,0x4b,0x7b,"Transform_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x62c9feb9,0x8ffc,0x4878,0xa3,0xa4,0x96,0xb0,0x30,0x31,0x5c,0x18,"TreeItem_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x7561349c,0xd241,0x43f4,0x99,0x08,0xb5,0xf0,0x91,0xbe,0xe6,0x11,"Tree_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x54FB46C8,0xF089,0x464C,0xB1,0xFD,0x59,0xD1,0xB6,0x2C,0x3B,0x50,"USER_POLICY_PRESENT_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe1b98d74,0x9778,0x4878,0xb6,0x64,0xeb,0x20,0x20,0x36,0x4d,0x88,"UUID_UdriTagTables"); - IF_GUID_EQUAL_RETURN(guid,0x5DCD1101,0x9263,0x45bb,0xa4,0xd5,0xc4,0x15,0xab,0x8c,0x58,0x9c,"UUID_WMDRMTagTables"); - IF_GUID_EQUAL_RETURN(guid,0x7aaa1638,0x1b7f,0x4c93,0xbd,0x89,0x5b,0x9c,0x9f,0xb6,0xfc,0xf0,"VIDEO_ZOOM_RECT"); - IF_GUID_EQUAL_RETURN(guid,0xec984aec,0xa0f9,0x47e9,0x90,0x1f,0x71,0x41,0x5a,0x66,0x34,0x5b,"VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT"); - IF_GUID_EQUAL_RETURN(guid,0x00000000,0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,"VIRTUAL_STORAGE_TYPE_VENDOR_UNKNOWN"); - IF_GUID_EQUAL_RETURN(guid,0xeb090f30,0xe24c,0x4799,0xa7,0x05,0x0d,0x24,0x7b,0xc0,0x37,0xf8,"Value_IsReadOnly_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x17faad9e,0xc877,0x475b,0xb9,0x33,0x77,0x33,0x27,0x79,0xb6,0x37,"Value_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe95f5e64,0x269f,0x4a85,0xba,0x99,0x40,0x92,0xc3,0xea,0x29,0x86,"Value_Value_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xf510173e,0x2e71,0x45e9,0xa6,0xe5,0x62,0xf6,0xed,0x82,0x89,0xd5,"VirtualizedItem_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xdefe5fd8,0x6c97,0x4dde,0xb1,0x1e,0xcb,0x50,0x9b,0x27,0x0e,0x11,"WIA_CATEGORY_AUTO"); - IF_GUID_EQUAL_RETURN(guid,0x36e178a0,0x473f,0x494b,0xaf,0x8f,0x6c,0x3f,0x6d,0x74,0x86,0xfc,"WIA_CATEGORY_BARCODE_READER"); - IF_GUID_EQUAL_RETURN(guid,0x47102cc3,0x127f,0x4771,0xad,0xfc,0x99,0x1a,0xb8,0xee,0x1e,0x97,"WIA_CATEGORY_ENDORSER"); - IF_GUID_EQUAL_RETURN(guid,0xfe131934,0xf84c,0x42ad,0x8d,0xa4,0x61,0x29,0xcd,0xdd,0x72,0x88,"WIA_CATEGORY_FEEDER"); - IF_GUID_EQUAL_RETURN(guid,0x61ca74d4,0x39db,0x42aa,0x89,0xb1,0x8c,0x19,0xc9,0xcd,0x4c,0x23,"WIA_CATEGORY_FEEDER_BACK"); - IF_GUID_EQUAL_RETURN(guid,0x4823175c,0x3b28,0x487b,0xa7,0xe6,0xee,0xbc,0x17,0x61,0x4f,0xd1,"WIA_CATEGORY_FEEDER_FRONT"); - IF_GUID_EQUAL_RETURN(guid,0xfcf65be7,0x3ce3,0x4473,0xaf,0x85,0xf5,0xd3,0x7d,0x21,0xb6,0x8a,"WIA_CATEGORY_FILM"); - IF_GUID_EQUAL_RETURN(guid,0xff2b77ca,0xcf84,0x432b,0xa7,0x35,0x3a,0x13,0x0d,0xde,0x2a,0x88,"WIA_CATEGORY_FINISHED_FILE"); - IF_GUID_EQUAL_RETURN(guid,0xfb607b1f,0x43f3,0x488b,0x85,0x5b,0xfb,0x70,0x3e,0xc3,0x42,0xa6,"WIA_CATEGORY_FLATBED"); - IF_GUID_EQUAL_RETURN(guid,0xc692a446,0x6f5a,0x481d,0x85,0xbb,0x92,0xe2,0xe8,0x6f,0xd3,0xa,"WIA_CATEGORY_FOLDER"); - IF_GUID_EQUAL_RETURN(guid,0xfc65016d,0x9202,0x43dd,0x91,0xa7,0x64,0xc2,0x95,0x4c,0xfb,0x8b,"WIA_CATEGORY_IMPRINTER"); - IF_GUID_EQUAL_RETURN(guid,0x3b86c1ec,0x71bc,0x4645,0xb4,0xd5,0x1b,0x19,0xda,0x2b,0xe9,0x78,"WIA_CATEGORY_MICR_READER"); - IF_GUID_EQUAL_RETURN(guid,0x8faa1a6d,0x9c8a,0x42cd,0x98,0xb3,0xee,0x97,0x00,0xcb,0xc7,0x4f,"WIA_CATEGORY_PATCH_CODE_READER"); - IF_GUID_EQUAL_RETURN(guid,0xf193526f,0x59b8,0x4a26,0x98,0x88,0xe1,0x6e,0x4f,0x97,0xce,0x10,"WIA_CATEGORY_ROOT"); - IF_GUID_EQUAL_RETURN(guid,0x9cba5ce0,0xdbea,0x11d2,0x84,0x16,0x00,0xc0,0x4f,0xa3,0x61,0x45,"WIA_CMD_BUILD_DEVICE_TREE"); - IF_GUID_EQUAL_RETURN(guid,0x04e725b0,0xacae,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c,"WIA_CMD_CHANGE_DOCUMENT"); - IF_GUID_EQUAL_RETURN(guid,0xe208c170,0xacad,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c,"WIA_CMD_DELETE_ALL_ITEMS"); - IF_GUID_EQUAL_RETURN(guid,0x73815942,0xdbea,0x11d2,0x84,0x16,0x00,0xc0,0x4f,0xa3,0x61,0x45,"WIA_CMD_DELETE_DEVICE_TREE"); - IF_GUID_EQUAL_RETURN(guid,0x10ff52f5,0xde04,0x4cf0,0xa5,0xad,0x69,0x1f,0x8d,0xce,0x01,0x41,"WIA_CMD_DIAGNOSTIC"); - IF_GUID_EQUAL_RETURN(guid,0xc3a693aa,0xf788,0x4d34,0xa5,0xb0,0xbe,0x71,0x90,0x75,0x9a,0x24,"WIA_CMD_FORMAT"); - IF_GUID_EQUAL_RETURN(guid,0x50985e4d,0xa5b2,0x4b71,0x9c,0x95,0x6d,0x7d,0x7c,0x46,0x9a,0x43,"WIA_CMD_PAUSE_FEEDER"); - IF_GUID_EQUAL_RETURN(guid,0x5a9df6c9,0x5f2d,0x4a39,0x9d,0x6c,0x00,0x45,0x6d,0x04,0x7f,0x00,"WIA_CMD_START_FEEDER"); - IF_GUID_EQUAL_RETURN(guid,0xd847b06d,0x3905,0x459c,0x95,0x09,0x9b,0x29,0xcd,0xb6,0x91,0xe7,"WIA_CMD_STOP_FEEDER"); - IF_GUID_EQUAL_RETURN(guid,0x9b26b7b2,0xacad,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c,"WIA_CMD_SYNCHRONIZE"); - IF_GUID_EQUAL_RETURN(guid,0xaf933cac,0xacad,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c,"WIA_CMD_TAKE_PICTURE"); - IF_GUID_EQUAL_RETURN(guid,0x1f3b3d8e,0xacae,0x11d2,0xa0,0x93,0x00,0xc0,0x4f,0x72,0xdc,0x3c,"WIA_CMD_UNLOAD_DOCUMENT"); - IF_GUID_EQUAL_RETURN(guid,0xc860f7b8,0x9ccd,0x41ea,0xbb,0xbf,0x4d,0xd0,0x9c,0x5b,0x17,0x95,"WIA_EVENT_CANCEL_IO"); - IF_GUID_EQUAL_RETURN(guid,0x6714a1e6,0xe285,0x468c,0x9b,0x8c,0xda,0x7d,0xc4,0xcb,0xaa,0x05,"WIA_EVENT_COVER_CLOSED"); - IF_GUID_EQUAL_RETURN(guid,0x19a12136,0xfa1c,0x4f66,0x90,0x0f,0x8f,0x91,0x4e,0xc7,0x4e,0xc9,"WIA_EVENT_COVER_OPEN"); - IF_GUID_EQUAL_RETURN(guid,0xa28bbade,0x64b6,0x11d2,0xa2,0x31,0x00,0xc0,0x4f,0xa3,0x18,0x09,"WIA_EVENT_DEVICE_CONNECTED"); - IF_GUID_EQUAL_RETURN(guid,0x143e4e83,0x6497,0x11d2,0xa2,0x31,0x00,0xc0,0x4f,0xa3,0x18,0x09,"WIA_EVENT_DEVICE_DISCONNECTED"); - IF_GUID_EQUAL_RETURN(guid,0xd8962d7e,0xe4dc,0x4b4d,0xba,0x29,0x66,0x8a,0x87,0xf4,0x2e,0x6f,"WIA_EVENT_DEVICE_NOT_READY"); - IF_GUID_EQUAL_RETURN(guid,0x7523ec6c,0x988b,0x419e,0x9a,0x0a,0x42,0x5a,0xc3,0x1b,0x37,0xdc,"WIA_EVENT_DEVICE_READY"); - IF_GUID_EQUAL_RETURN(guid,0xe70b4b82,0x6dda,0x46bb,0x8f,0xf9,0x53,0xce,0xb1,0xa0,0x3e,0x35,"WIA_EVENT_FEEDER_EMPTIED"); - IF_GUID_EQUAL_RETURN(guid,0xcc8d701e,0x9aba,0x481d,0xbf,0x74,0x78,0xf7,0x63,0xdc,0x34,0x2a,"WIA_EVENT_FEEDER_LOADED"); - IF_GUID_EQUAL_RETURN(guid,0xf879af0f,0x9b29,0x4283,0xad,0x95,0xd4,0x12,0x16,0x4d,0x39,0xa9,"WIA_EVENT_FLATBED_LID_CLOSED"); - IF_GUID_EQUAL_RETURN(guid,0xba0a0623,0x437d,0x4f03,0xa9,0x7d,0x77,0x93,0xb1,0x23,0x11,0x3c,"WIA_EVENT_FLATBED_LID_OPEN"); - IF_GUID_EQUAL_RETURN(guid,0xe0372b7d,0xe115,0x4525,0xbc,0x55,0xb6,0x29,0xe6,0x8c,0x74,0x5a,"WIA_EVENT_HANDLER_NO_ACTION"); - IF_GUID_EQUAL_RETURN(guid,0x5f4baad0,0x4d59,0x4fcd,0xb2,0x13,0x78,0x3c,0xe7,0xa9,0x2f,0x22,"WIA_EVENT_HANDLER_PROMPT"); - IF_GUID_EQUAL_RETURN(guid,0x4c8f4ef5,0xe14f,0x11d2,0xb3,0x26,0x00,0xc0,0x4f,0x68,0xce,0x61,"WIA_EVENT_ITEM_CREATED"); - IF_GUID_EQUAL_RETURN(guid,0x1d22a559,0xe14f,0x11d2,0xb3,0x26,0x00,0xc0,0x4f,0x68,0xce,0x61,"WIA_EVENT_ITEM_DELETED"); - IF_GUID_EQUAL_RETURN(guid,0x618f153e,0xf686,0x4350,0x96,0x34,0x41,0x15,0xa3,0x04,0x83,0x0c,"WIA_EVENT_POWER_RESUME"); - IF_GUID_EQUAL_RETURN(guid,0xa0922ff9,0xc3b4,0x411c,0x9e,0x29,0x03,0xa6,0x69,0x93,0xd2,0xbe,"WIA_EVENT_POWER_SUSPEND"); - IF_GUID_EQUAL_RETURN(guid,0xc686dcee,0x54f2,0x419e,0x9a,0x27,0x2f,0xc7,0xf2,0xe9,0x8f,0x9e,"WIA_EVENT_SCAN_EMAIL_IMAGE"); - IF_GUID_EQUAL_RETURN(guid,0xc00eb793,0x8c6e,0x11d2,0x97,0x7a,0x00,0x00,0xf8,0x7a,0x92,0x6f,"WIA_EVENT_SCAN_FAX_IMAGE"); - IF_GUID_EQUAL_RETURN(guid,0x9b2b662c,0x6185,0x438c,0xb6,0x8b,0xe3,0x9e,0xe2,0x5e,0x71,0xcb,"WIA_EVENT_SCAN_FILM_IMAGE"); - IF_GUID_EQUAL_RETURN(guid,0xfc4767c1,0xc8b3,0x48a2,0x9c,0xfa,0x2e,0x90,0xcb,0x3d,0x35,0x90,"WIA_EVENT_SCAN_IMAGE2"); - IF_GUID_EQUAL_RETURN(guid,0x154e27be,0xb617,0x4653,0xac,0xc5,0x0f,0xd7,0xbd,0x4c,0x65,0xce,"WIA_EVENT_SCAN_IMAGE3"); - IF_GUID_EQUAL_RETURN(guid,0xa65b704a,0x7f3c,0x4447,0xa7,0x5d,0x8a,0x26,0xdf,0xca,0x1f,0xdf,"WIA_EVENT_SCAN_IMAGE4"); - IF_GUID_EQUAL_RETURN(guid,0xa6c5a715,0x8c6e,0x11d2,0x97,0x7a,0x00,0x00,0xf8,0x7a,0x92,0x6f,"WIA_EVENT_SCAN_IMAGE"); - IF_GUID_EQUAL_RETURN(guid,0x9d095b89,0x37d6,0x4877,0xaf,0xed,0x62,0xa2,0x97,0xdc,0x6d,0xbe,"WIA_EVENT_SCAN_OCR_IMAGE"); - IF_GUID_EQUAL_RETURN(guid,0xb441f425,0x8c6e,0x11d2,0x97,0x7a,0x00,0x00,0xf8,0x7a,0x92,0x6f,"WIA_EVENT_SCAN_PRINT_IMAGE"); - IF_GUID_EQUAL_RETURN(guid,0xd711f81f,0x1f0d,0x422d,0x86,0x41,0x92,0x7d,0x1b,0x93,0xe5,0xe5,"WIA_EVENT_STI_PROXY"); - IF_GUID_EQUAL_RETURN(guid,0x353308b2,0xfe73,0x46c8,0x89,0x5e,0xfa,0x45,0x51,0xcc,0xc8,0x5a,"WIA_EVENT_STORAGE_CREATED"); - IF_GUID_EQUAL_RETURN(guid,0x5e41e75e,0x9390,0x44c5,0x9a,0x51,0xe4,0x70,0x19,0xe3,0x90,0xcf,"WIA_EVENT_STORAGE_DELETED"); - IF_GUID_EQUAL_RETURN(guid,0xc9859b91,0x4ab2,0x4cd6,0xa1,0xfc,0x58,0x2e,0xec,0x55,0xe5,0x85,"WIA_EVENT_TREE_UPDATED"); - IF_GUID_EQUAL_RETURN(guid,0x9638bbfd,0xd1bd,0x11d2,0xb3,0x1f,0x00,0xc0,0x4f,0x68,0xce,0x61,"WIA_EVENT_VOLUME_INSERT"); - IF_GUID_EQUAL_RETURN(guid,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00,"WKPDID_D3DDebugObjectName"); - IF_GUID_EQUAL_RETURN(guid,0xa4d2c26c,0xa881,0x44bb,0xbd,0x5d,0x1f,0x70,0x3c,0x71,0xf7,0xa9,"WMDM_DEVICE_PROTOCOL_MSC"); - IF_GUID_EQUAL_RETURN(guid,0x979e54e5,0xafc,0x4604,0x8d,0x93,0xdc,0x79,0x8a,0x4b,0xcf,0x45,"WMDM_DEVICE_PROTOCOL_MTP"); - IF_GUID_EQUAL_RETURN(guid,0x2a11ed91,0x8c8f,0x41e4,0x82,0xd1,0x83,0x86,0xe0,0x3,0x56,0x1c,"WMDM_DEVICE_PROTOCOL_RAPI"); - IF_GUID_EQUAL_RETURN(guid,0x7de8686d,0x78ee,0x43ea,0xa4,0x96,0xc6,0x25,0xac,0x91,0xcc,0x5d,"WMDM_SERVICE_PROVIDER_VENDOR_MICROSOFT"); - IF_GUID_EQUAL_RETURN(guid,0xc3fd11c6,0xf8b7,0x4d20,0xB0,0x08,0x1d,0xb1,0x7d,0x61,0xf2,0xda,"WMDRM_PROTECTION_SCHEME_ACP"); - IF_GUID_EQUAL_RETURN(guid,0x8f81a453,0x998c,0x4596,0xb1,0x50,0xf8,0x48,0x6d,0xf6,0xf2,0xe6,"WMDRM_PROTECTION_SCHEME_DOWNSAMPLE_REQUIRED"); - IF_GUID_EQUAL_RETURN(guid,0x811c5110,0x46c8,0x4c6e,0x81,0x63,0xc0,0x48,0x2a,0x15,0xd4,0x7e,"WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION"); - IF_GUID_EQUAL_RETURN(guid,0xec3a1c03,0xdd4e,0x47f7,0xbf,0xe5,0xae,0xe7,0x53,0x48,0x66,0x71,"WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_1"); - IF_GUID_EQUAL_RETURN(guid,0x327803ca,0xd914,0x4da3,0x97,0x28,0xe1,0x9e,0x82,0xbe,0x8c,0x25,"WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_2"); - IF_GUID_EQUAL_RETURN(guid,0x36d9c83f,0xaf07,0x4727,0xab,0x74,0xca,0x69,0x31,0xba,0x69,0xf3,"WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_3"); - IF_GUID_EQUAL_RETURN(guid,0x9443d876,0x1d46,0x40cb,0xbd,0xe5,0x9c,0xc1,0x46,0x4c,0x9b,0xaf,"WMDRM_PROTECTION_SCHEME_MAX_COMPONENT_RESOLUTION_4"); - IF_GUID_EQUAL_RETURN(guid,0xd783a191,0xe083,0x4baf,0xb2,0xda,0xe6,0x9f,0x91,0x0b,0x37,0x72,"WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION"); - IF_GUID_EQUAL_RETURN(guid,0xd9619433,0xec9f,0x489e,0x9e,0x07,0x77,0x0d,0xed,0xd8,0xbd,0x04,"WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_1"); - IF_GUID_EQUAL_RETURN(guid,0xa24f0a24,0x5c92,0x4737,0x9b,0x21,0xa2,0x3e,0x4f,0xed,0x32,0x2e,"WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_2"); - IF_GUID_EQUAL_RETURN(guid,0xc4db4310,0xa1ae,0x422e,0xb7,0xa7,0x21,0xbc,0x34,0x73,0xda,0x77,"WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_3"); - IF_GUID_EQUAL_RETURN(guid,0xe84e4d21,0x3b1c,0x44bc,0xa2,0xec,0xc4,0x81,0x08,0x58,0x7c,0xad,"WMDRM_PROTECTION_SCHEME_MAX_VGA_RESOLUTION_4"); - IF_GUID_EQUAL_RETURN(guid,0x90A37313,0x0ECF,0x4CAA,0xA9,0x06,0xB1,0x88,0xF6,0x12,0x93,0x00,"WMDRM_REVOCATIONTYPE_APP"); - IF_GUID_EQUAL_RETURN(guid,0xCD75E604,0x543D,0x4A9C,0x9F,0x09,0xFE,0x6D,0x24,0xE8,0xBF,0x90,"WMDRM_REVOCATIONTYPE_CARDEA"); - IF_GUID_EQUAL_RETURN(guid,0x3129E375,0xCEB0,0x47D5,0x9C,0xCA,0x9D,0xB7,0x4C,0xFD,0x43,0x32,"WMDRM_REVOCATIONTYPE_DEVICE"); - IF_GUID_EQUAL_RETURN(guid,0xa2190240,0xb2ca,0x40b3,0xb4,0x8d,0x9b,0xc4,0xc2,0xdc,0x42,0x8d,"WMDRM_REVOCATIONTYPE_GRL"); - IF_GUID_EQUAL_RETURN(guid,0xe627553a,0x820f,0x40fd,0xb4,0x65,0xa4,0x28,0x30,0xa5,0x74,0xc9,"WMDRM_REVOCATIONTYPE_HDCP"); - IF_GUID_EQUAL_RETURN(guid,0xCCDE5A55,0xA688,0x4405,0xA8,0x8B,0xD1,0x3F,0x90,0xD5,0xBA,0x3E,"WMDRM_REVOCATIONTYPE_REVINFO"); - IF_GUID_EQUAL_RETURN(guid,0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea,"WMFORMAT_MPEG2Video"); - IF_GUID_EQUAL_RETURN(guid,0x5c8510f2,0xdebe,0x4ca7,0xbb,0xa5,0xf0,0x7a,0x10,0x4f,0x8d,0xff,"WMFORMAT_Script"); - IF_GUID_EQUAL_RETURN(guid,0x05589f80,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a,"WMFORMAT_VideoInfo"); - IF_GUID_EQUAL_RETURN(guid,0x05589f81,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a,"WMFORMAT_WaveFormatEx"); - IF_GUID_EQUAL_RETURN(guid,0xda1e6b13,0x8359,0x4050,0xb3,0x98,0x38,0x8e,0x96,0x5b,0xf0,0x0c,"WMFORMAT_WebStream"); - IF_GUID_EQUAL_RETURN(guid,0x00000130,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_ACELPnet"); - IF_GUID_EQUAL_RETURN(guid,0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_Base"); - IF_GUID_EQUAL_RETURN(guid,0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_DRM"); - IF_GUID_EQUAL_RETURN(guid,0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_I420"); - IF_GUID_EQUAL_RETURN(guid,0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_IYUV"); - IF_GUID_EQUAL_RETURN(guid,0x3253344D,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_M4S2"); - IF_GUID_EQUAL_RETURN(guid,0x00000055,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_MP3"); - IF_GUID_EQUAL_RETURN(guid,0x3334504D,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_MP43"); - IF_GUID_EQUAL_RETURN(guid,0x5334504D,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_MP4S"); - IF_GUID_EQUAL_RETURN(guid,0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea,"WMMEDIASUBTYPE_MPEG2_VIDEO"); - IF_GUID_EQUAL_RETURN(guid,0x3153534D,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_MSS1"); - IF_GUID_EQUAL_RETURN(guid,0x3253534D,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_MSS2"); - IF_GUID_EQUAL_RETURN(guid,0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_P422"); - IF_GUID_EQUAL_RETURN(guid,0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_PCM"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"WMMEDIASUBTYPE_RGB1"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"WMMEDIASUBTYPE_RGB24"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"WMMEDIASUBTYPE_RGB32"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"WMMEDIASUBTYPE_RGB4"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"WMMEDIASUBTYPE_RGB555"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"WMMEDIASUBTYPE_RGB565"); - IF_GUID_EQUAL_RETURN(guid,0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70,"WMMEDIASUBTYPE_RGB8"); - IF_GUID_EQUAL_RETURN(guid,0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_UYVY"); - IF_GUID_EQUAL_RETURN(guid,0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37,"WMMEDIASUBTYPE_VIDEOIMAGE"); - IF_GUID_EQUAL_RETURN(guid,0x00000161,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMAudioV2"); - IF_GUID_EQUAL_RETURN(guid,0x00000161,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMAudioV7"); - IF_GUID_EQUAL_RETURN(guid,0x00000161,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMAudioV8"); - IF_GUID_EQUAL_RETURN(guid,0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMAudioV9"); - IF_GUID_EQUAL_RETURN(guid,0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMAudio_Lossless"); - IF_GUID_EQUAL_RETURN(guid,0x0000000A,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMSP1"); - IF_GUID_EQUAL_RETURN(guid,0x0000000B,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMSP2"); - IF_GUID_EQUAL_RETURN(guid,0x31564D57,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMV1"); - IF_GUID_EQUAL_RETURN(guid,0x32564D57,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMV2"); - IF_GUID_EQUAL_RETURN(guid,0x33564D57,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMV3"); - IF_GUID_EQUAL_RETURN(guid,0x41564D57,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMVA"); - IF_GUID_EQUAL_RETURN(guid,0x50564D57,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WMVP"); - IF_GUID_EQUAL_RETURN(guid,0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WVC1"); - IF_GUID_EQUAL_RETURN(guid,0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71,"WMMEDIASUBTYPE_WVP2"); - IF_GUID_EQUAL_RETURN(guid,0x776257d4,0xc627,0x41cb,0x8f,0x81,0x7a,0xc7,0xff,0x1c,0x40,0xcc,"WMMEDIASUBTYPE_WebStream"); - IF_GUID_EQUAL_RETURN(guid,0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_YUY2"); - IF_GUID_EQUAL_RETURN(guid,0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_YV12"); - IF_GUID_EQUAL_RETURN(guid,0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_YVU9"); - IF_GUID_EQUAL_RETURN(guid,0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIASUBTYPE_YVYU"); - IF_GUID_EQUAL_RETURN(guid,0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIATYPE_Audio"); - IF_GUID_EQUAL_RETURN(guid,0xd9e47579,0x930e,0x4427,0xad,0xfc,0xad,0x80,0xf2,0x90,0xe4,0x70,"WMMEDIATYPE_FileTransfer"); - IF_GUID_EQUAL_RETURN(guid,0x34a50fd8,0x8aa5,0x4386,0x81,0xfe,0xa0,0xef,0xe0,0x48,0x8e,0x31,"WMMEDIATYPE_Image"); - IF_GUID_EQUAL_RETURN(guid,0x73636d64,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIATYPE_Script"); - IF_GUID_EQUAL_RETURN(guid,0x9bba1ea7,0x5ab2,0x4829,0xba,0x57,0x9,0x40,0x20,0x9b,0xcf,0x3e,"WMMEDIATYPE_Text"); - IF_GUID_EQUAL_RETURN(guid,0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71,"WMMEDIATYPE_Video"); - IF_GUID_EQUAL_RETURN(guid,0x6434baea,0x4954,0x498d,0xab,0xd5,0x2b,0x7,0x12,0x3e,0x1f,0x4,"WMP_PLUGINTYPE_DSP"); - IF_GUID_EQUAL_RETURN(guid,0xef29b174,0xc347,0x44cc,0x9a,0x4f,0x23,0x99,0x11,0x8f,0xf3,0x8c,"WMP_PLUGINTYPE_DSP_OUTOFPROC"); - IF_GUID_EQUAL_RETURN(guid,0xa8554541,0x115d,0x406a,0xa4,0xc7,0x51,0x11,0x1c,0x33,0x1,0x83,"WMP_PLUGINTYPE_RENDERING"); - IF_GUID_EQUAL_RETURN(guid,0x82f38a70,0xc29f,0x11d1,0x97,0xad,0x00,0xa0,0xc9,0x5e,0xa8,0x50,"WMSCRIPTTYPE_TwoStrings"); - IF_GUID_EQUAL_RETURN(guid,0x65221c5a,0xfa75,0x4b39,0xb5,0x0c,0x06,0xc3,0x36,0xb6,0xa3,0xef,"WMT_DMOCATEGORY_AUDIO_WATERMARK"); - IF_GUID_EQUAL_RETURN(guid,0x187cc922,0x8efc,0x4404,0x9d,0xaf,0x63,0xf4,0x83,0x0d,0xf1,0xbc,"WMT_DMOCATEGORY_VIDEO_WATERMARK"); - IF_GUID_EQUAL_RETURN(guid,0x4c5acca0,0x9276,0x4b2c,0x9e,0x4c,0xa0,0xed,0xef,0xdd,0x21,0x7e,"WM_SampleExtensionGUID_ChromaLocation"); - IF_GUID_EQUAL_RETURN(guid,0xf79ada56,0x30eb,0x4f2b,0x9f,0x7a,0xf2,0x4b,0x13,0x9a,0x11,0x57,"WM_SampleExtensionGUID_ColorSpaceInfo"); - IF_GUID_EQUAL_RETURN(guid,0xd590dc20,0x07bc,0x436c,0x9c,0xf7,0xf3,0xbb,0xfb,0xf1,0xa4,0xdc,"WM_SampleExtensionGUID_ContentType"); - IF_GUID_EQUAL_RETURN(guid,0xe165ec0e,0x19ed,0x45d7,0xb4,0xa7,0x25,0xcb,0xd1,0xe2,0x8e,0x9b,"WM_SampleExtensionGUID_FileName"); - IF_GUID_EQUAL_RETURN(guid,0xf72a3c6f,0x6eb4,0x4ebc,0xb1,0x92,0x9,0xad,0x97,0x59,0xe8,0x28,"WM_SampleExtensionGUID_OutputCleanPoint"); - IF_GUID_EQUAL_RETURN(guid,0x1b1ee554,0xf9ea,0x4bc8,0x82,0x1a,0x37,0x6b,0x74,0xe4,0xc4,0xb8,"WM_SampleExtensionGUID_PixelAspectRatio"); - IF_GUID_EQUAL_RETURN(guid,0xc6bd9450,0x867f,0x4907,0x83,0xa3,0xc7,0x79,0x21,0xb7,0x33,0xad,"WM_SampleExtensionGUID_SampleDuration"); - IF_GUID_EQUAL_RETURN(guid,0x5403deee,0xb9ee,0x438f,0xaa,0x83,0x38,0x4,0x99,0x7e,0x56,0x9d,"WM_SampleExtensionGUID_SampleProtectionSalt"); - IF_GUID_EQUAL_RETURN(guid,0x399595ec,0x8667,0x4e2d,0x8f,0xdb,0x98,0x81,0x4c,0xe7,0x6c,0x1e,"WM_SampleExtensionGUID_Timecode"); - IF_GUID_EQUAL_RETURN(guid,0x732bb4fa,0x78be,0x4549,0x99,0xbd,0x2,0xdb,0x1a,0x55,0xb7,0xa8,"WM_SampleExtensionGUID_UserDataInfo"); - IF_GUID_EQUAL_RETURN(guid,0x91248166,0xb832,0x4ad4,0xba,0xa4,0x7c,0xa0,0xb6,0xb2,0x79,0x8c,"WPD_CATEGORY_ENHANCED_STORAGE"); - IF_GUID_EQUAL_RETURN(guid,0x66e2bf4f,0xb6fc,0x443f,0x94,0xc8,0x2f,0x33,0xc8,0xa6,0x5a,0xaf,"WiaAudFmt_AIFF"); - IF_GUID_EQUAL_RETURN(guid,0x0fbc71fb,0x43bf,0x49f2,0x91,0x90,0xe6,0xfe,0xcf,0xf3,0x7e,0x54,"WiaAudFmt_MP3"); - IF_GUID_EQUAL_RETURN(guid,0xf818e146,0x07af,0x40ff,0xae,0x55,0xbe,0x8f,0x2c,0x06,0x5d,0xbe,"WiaAudFmt_WAV"); - IF_GUID_EQUAL_RETURN(guid,0xd61d6413,0x8bc2,0x438f,0x93,0xad,0x21,0xbd,0x48,0x4d,0xb6,0xa1,"WiaAudFmt_WMA"); - IF_GUID_EQUAL_RETURN(guid,0x8d948ee9,0xd0aa,0x4a12,0x9d,0x9a,0x9c,0xc5,0xde,0x36,0x19,0x9b,"WiaImgFmt_ASF"); - IF_GUID_EQUAL_RETURN(guid,0x32f8ca14,0x087c,0x4908,0xb7,0xc4,0x67,0x57,0xfe,0x7e,0x90,0xab,"WiaImgFmt_AVI"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_BMP"); - IF_GUID_EQUAL_RETURN(guid,0x9821a8ab,0x3a7e,0x4215,0x94,0xe0,0xd2,0x7a,0x46,0x0c,0x03,0xb2,"WiaImgFmt_CIFF"); - IF_GUID_EQUAL_RETURN(guid,0x355bda24,0x5a9f,0x4494,0x80,0xdc,0xbe,0x75,0x2c,0xec,0xbc,0x8c,"WiaImgFmt_CSV"); - IF_GUID_EQUAL_RETURN(guid,0x369eeeab,0xa0e8,0x45ca,0x86,0xa6,0xa8,0x3c,0xe5,0x69,0x7e,0x28,"WiaImgFmt_DPOF"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cac,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_EMF"); - IF_GUID_EQUAL_RETURN(guid,0x485da097,0x141e,0x4aa5,0xbb,0x3b,0xa5,0x61,0x8d,0x95,0xd0,0x2b,"WiaImgFmt_EXEC"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cb2,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_EXIF"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cb4,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_FLASHPIX"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cb0,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_GIF"); - IF_GUID_EQUAL_RETURN(guid,0xc99a4e62,0x99de,0x4a94,0xac,0xca,0x71,0x95,0x6a,0xc2,0x97,0x7d,"WiaImgFmt_HTML"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cb5,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_ICO"); - IF_GUID_EQUAL_RETURN(guid,0xbb8e7e67,0x283c,0x4235,0x9e,0x59,0x0b,0x9b,0xf9,0x4c,0xa6,0x87,"WiaImgFmt_JBIG2"); - IF_GUID_EQUAL_RETURN(guid,0x41e8dd92,0x2f0a,0x43d4,0x86,0x36,0xf1,0x61,0x4b,0xa1,0x1e,0x46,"WiaImgFmt_JBIG"); - IF_GUID_EQUAL_RETURN(guid,0x344ee2b2,0x39db,0x4dde,0x81,0x73,0xc4,0xb7,0x5f,0x8f,0x1e,0x49,"WiaImgFmt_JPEG2K"); - IF_GUID_EQUAL_RETURN(guid,0x43e14614,0xc80a,0x4850,0xba,0xf3,0x4b,0x15,0x2d,0xc8,0xda,0x27,"WiaImgFmt_JPEG2KX"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cae,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_JPEG"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3caa,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_MEMORYBMP"); - IF_GUID_EQUAL_RETURN(guid,0xecd757e4,0xd2ec,0x4f57,0x95,0x5d,0xbc,0xf8,0xa9,0x7c,0x4e,0x52,"WiaImgFmt_MPG"); - IF_GUID_EQUAL_RETURN(guid,0x9980bd5b,0x3463,0x43c7,0xbd,0xca,0x3c,0xaa,0x14,0x6f,0x22,0x9f,"WiaImgFmt_PDFA"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cb3,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_PHOTOCD"); - IF_GUID_EQUAL_RETURN(guid,0xa6bc85d8,0x6b3e,0x40ee,0xa9,0x5c,0x25,0xd4,0x82,0xe4,0x1a,0xdc,"WiaImgFmt_PICT"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3caf,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_PNG"); - IF_GUID_EQUAL_RETURN(guid,0x6f120719,0xf1a8,0x4e07,0x9a,0xde,0x9b,0x64,0xc6,0x3a,0x3d,0xcc,"WiaImgFmt_RAW"); - IF_GUID_EQUAL_RETURN(guid,0xda63f833,0xd26e,0x451e,0x90,0xd2,0xea,0x55,0xa1,0x36,0x5d,0x62,"WiaImgFmt_RAWBAR"); - IF_GUID_EQUAL_RETURN(guid,0x22c4f058,0x0d88,0x409c,0xac,0x1c,0xee,0xc1,0x2b,0x0e,0xa6,0x80,"WiaImgFmt_RAWMIC"); - IF_GUID_EQUAL_RETURN(guid,0x7760507c,0x5064,0x400c,0x9a,0x17,0x57,0x56,0x24,0xd8,0x82,0x4b,"WiaImgFmt_RAWPAT"); - IF_GUID_EQUAL_RETURN(guid,0xbca48b55,0xf272,0x4371,0xb0,0xf1,0x4a,0x15,0x0d,0x05,0x7b,0xb4,"WiaImgFmt_RAWRGB"); - IF_GUID_EQUAL_RETURN(guid,0x573dd6a3,0x4834,0x432d,0xa9,0xb5,0xe1,0x98,0xdd,0x9e,0x89,0x0d,"WiaImgFmt_RTF"); - IF_GUID_EQUAL_RETURN(guid,0xfe7d6c53,0x2dac,0x446a,0xb0,0xbd,0xd7,0x3e,0x21,0xe9,0x24,0xc9,"WiaImgFmt_SCRIPT"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cb1,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_TIFF"); - IF_GUID_EQUAL_RETURN(guid,0xfafd4d82,0x723f,0x421f,0x93,0x18,0x30,0x50,0x1a,0xc4,0x4b,0x59,"WiaImgFmt_TXT"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3ca9,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_UNDEFINED"); - IF_GUID_EQUAL_RETURN(guid,0x1b7639b6,0x6357,0x47d1,0x9a,0x07,0x12,0x45,0x2d,0xc0,0x73,0xe9,"WiaImgFmt_UNICODE16"); - IF_GUID_EQUAL_RETURN(guid,0xb96b3cad,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e,"WiaImgFmt_WMF"); - IF_GUID_EQUAL_RETURN(guid,0xb9171457,0xdac8,0x4884,0xb3,0x93,0x15,0xb4,0x71,0xd5,0xf0,0x7e,"WiaImgFmt_XML"); - IF_GUID_EQUAL_RETURN(guid,0x6235701c,0x3a98,0x484c,0xb2,0xa8,0xfd,0xff,0xd8,0x7e,0x6b,0x16,"WiaImgFmt_XMLBAR"); - IF_GUID_EQUAL_RETURN(guid,0x2d164c61,0xb9ae,0x4b23,0x89,0x73,0xc7,0x06,0x7e,0x1f,0xbd,0x31,"WiaImgFmt_XMLMIC"); - IF_GUID_EQUAL_RETURN(guid,0xf8986f55,0xf052,0x460d,0x95,0x23,0x3a,0x7d,0xfe,0xdb,0xb3,0x3c,"WiaImgFmt_XMLPAT"); - IF_GUID_EQUAL_RETURN(guid,0x700b4a0f,0x2011,0x411c,0xb4,0x30,0xd1,0xe0,0xb2,0xe1,0x0b,0x28,"WiaImgFmt_XPS"); - IF_GUID_EQUAL_RETURN(guid,0xda812bff,0x12c3,0x46a2,0x8e,0x2b,0xdb,0xd3,0xb7,0x83,0x4c,0x43,"WinUSB_TestGuid"); - IF_GUID_EQUAL_RETURN(guid,0x64fff53f,0x635d,0x41c1,0x95,0x0c,0xcb,0x5a,0xdf,0xbe,0x28,0xe3,"Window_CanMaximize_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xb73b4625,0x5988,0x4b97,0xb4,0xc2,0xa6,0xfe,0x6e,0x78,0xc8,0xc6,"Window_CanMinimize_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xe13a7242,0xf462,0x4f4d,0xae,0xc1,0x53,0xb2,0x8d,0x6c,0x32,0x90,"Window_Control_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xff4e6892,0x37b9,0x4fca,0x85,0x32,0xff,0xe6,0x74,0xec,0xfe,0xed,"Window_IsModal_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xef7d85d3,0x0937,0x4962,0x92,0x41,0xb6,0x23,0x45,0xf2,0x40,0x41,"Window_IsTopmost_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x27901735,0xc760,0x4994,0xad,0x11,0x59,0x19,0xe6,0x06,0xb1,0x10,"Window_Pattern_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xedf141f8,0xfa67,0x4e22,0xbb,0xf7,0x94,0x4e,0x05,0x73,0x5e,0xe2,"Window_WindowClosed_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4fed26a4,0x0455,0x4fa2,0xb2,0x1c,0xc4,0xda,0x2d,0xb1,0xff,0x9c,"Window_WindowInteractionState_Property_GUID"); - IF_GUID_EQUAL_RETURN(guid,0xd3e81d06,0xde45,0x4f2f,0x96,0x33,0xde,0x9e,0x02,0xfb,0x65,0xaf,"Window_WindowOpened_Event_GUID"); - IF_GUID_EQUAL_RETURN(guid,0x4ab7905f,0xe860,0x453e,0xa3,0x0a,0xf6,0x43,0x1e,0x5d,0xaa,0xd5,"Window_WindowVisualState_Property_GUID"); - return ret; -} - -std::string GetGUIDName(const GUID& guid) { - std::string ret = GetGUIDNameConst(guid); - if (!ret.empty()) - return ret; - else { - comet::task_ptr pStr; - StringFromCLSID(guid, pStr.out()); - return comet::bstr_t(pStr.in()).s_str(); - } -} \ No newline at end of file diff --git a/EyeTab_SP2/ReadMe.txt b/EyeTab_SP2/ReadMe.txt deleted file mode 100644 index fa30a87..0000000 --- a/EyeTab_SP2/ReadMe.txt +++ /dev/null @@ -1,40 +0,0 @@ -======================================================================== - CONSOLE APPLICATION : EyeTab_SP2 Project Overview -======================================================================== - -AppWizard has created this EyeTab_SP2 application for you. - -This file contains a summary of what you will find in each of the files that -make up your EyeTab_SP2 application. - - -EyeTab_SP2.vcxproj - This is the main project file for VC++ projects generated using an Application Wizard. - It contains information about the version of Visual C++ that generated the file, and - information about the platforms, configurations, and project features selected with the - Application Wizard. - -EyeTab_SP2.vcxproj.filters - This is the filters file for VC++ projects generated using an Application Wizard. - It contains information about the association between the files in your project - and the filters. This association is used in the IDE to show grouping of files with - similar extensions under a specific node (for e.g. ".cpp" files are associated with the - "Source Files" filter). - -EyeTab_SP2.cpp - This is the main application source file. - -///////////////////////////////////////////////////////////////////////////// -Other standard files: - -StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named EyeTab_SP2.pch and a precompiled types file named StdAfx.obj. - -///////////////////////////////////////////////////////////////////////////// -Other notes: - -AppWizard uses "TODO:" comments to indicate parts of the source code you -should add to or customize. - -///////////////////////////////////////////////////////////////////////////// diff --git a/EyeTab_SP2/comet/array.h b/EyeTab_SP2/comet/array.h deleted file mode 100644 index f305f74..0000000 --- a/EyeTab_SP2/comet/array.h +++ /dev/null @@ -1,150 +0,0 @@ -/** \file -* Array wrapper. -*/ -/* -* Copyright © 2001 Sofus Mortensen -* -* This material is provided "as is", with absolutely no warranty -* expressed or implied. Any use is at your own risk. Permission to -* use or copy this software for any purpose is hereby granted without -* fee, provided the above notices are retained on all copies. -* Permission to modify the code and to distribute modified code is -* granted, provided the above notices are retained, and a notice that -* the code was modified is included with the above copyright notice. -* -* This header is part of Comet version 2. -* https://github.com/alamaison/comet -* -*/ - -/* -* comet::array_t is adapted from class array by Nicolai M. Josuttis -* -* (C) Copyright Nicolai M. Josuttis 2001. -* Permission to copy, use, modify, sell and distribute this software -* is granted provided this copyright notice appears in all copies. -* This software is provided "as is" without express or implied -* warranty, and with no claim as to its suitability for any purpose. -* -*/ - -#ifndef COMET_ARRAY_H -#define COMET_ARRAY_H - -#include -#include -#include -#include -#include - -namespace comet { - -#pragma pack(push) -#pragma pack(1) - - /*!\addtogroup Misc - */ - //@{ - - template class array_t - { - T a_[SZ]; - public: - typedef T value_type; - typedef typename std::vector::iterator iterator; - typedef typename std::vector::const_iterator const_iterator; - - typedef typename std::vector::reverse_iterator reverse_iterator; - typedef typename std::vector::const_reverse_iterator const_reverse_iterator; - - typedef typename std::vector::size_type size_type; - typedef typename std::vector::difference_type difference_type; - - typedef T& reference; - typedef const T& const_reference; - - // reference operator[](size_type i) { return a_[i]; } - // const_reference operator[](size_type i) const { return a_[i]; } - - iterator begin() { return iterator(a_); } - iterator end() { return iterator(a_ + SZ); } - const_iterator begin() const { return const_iterator(a_); } - const_iterator end() const { return const_iterator(a_ + SZ); } - - reverse_iterator rbegin() { return reverse_iterator(a_); } - reverse_iterator rend() { return reverse_iterator(a_ + SZ); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(a_); } - const_reverse_iterator rend() const { return const_reverse_iterator(a_ + SZ); } - - operator const T*() const { return a_; } - operator T*() { return a_; } - - static size_type size() { return SZ; } - static bool empty() { return false; } - static size_type max_size() { return SZ; } - enum { static_size = SZ }; - - reference front() { return a_[0]; } - const_reference front() const { return a_[0]; } - reference back() { return a_[SZ-1]; }; - const_reference back() const { return a_[SZ-1]; } - - // swap (note: linear complexity) - void swap (array_t& y) { - std::swap_ranges(begin(),end(),y.begin()); - } - - // assignment with type conversion - template - array_t& operator= (const array_t& rhs) { - std::copy(rhs.begin(),rhs.end(), begin()); - return *this; - } - - // assign one value to all elements - void assign (const T& value) - { - std::fill_n(begin(),size(),value); - } - - reference at(size_type i) { rangecheck(i); return a_[i]; } - const_reference at(size_type i) const { rangecheck(i); return a_[i]; } - - private: - // check range (may be private because it is static) - static void rangecheck (size_type i) { - if (i >= size()) { throw std::range_error("array"); } - } - - }; - //@} -#pragma pack(pop) - - // comparisons - template - bool operator== (const array_t& x, const array_t& y) { - return std::equal(x.begin(), x.end(), y.begin()); - } - template - bool operator< (const array_t& x, const array_t& y) { - return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end()); - } - template - bool operator!= (const array_t& x, const array_t& y) { - return !(x==y); - } - template - bool operator> (const array_t& x, const array_t& y) { - return y - bool operator<= (const array_t& x, const array_t& y) { - return !(y - bool operator>= (const array_t& x, const array_t& y) { - return !(x - -# if defined(COMET_ASSERT_THROWS) || defined(COMET_ASSERT_THROWS_ALWAYS) -# if defined(COMET_ASSERT_THROWS_ALWAYS) || !defined(NDEBUG) -namespace comet -{ - /*! \defgroup ErrorHandling Error handling. - */ - //@{ -//! Indicates a comet assertion failed. -/** This is enabled for debug builds if COMET_ASSERT_THROWS is defined and - * enabled for both debug and release if COMET_ASSERT_THROWS_ALWAYS is defined. - */ -struct assert_failed : std::runtime_error -{ - assert_failed( const char *val) : runtime_error(val) {} -}; - //@} -} -# define COMET_ASSERT(x_) if (x_) ; else throw comet::assert_failed("Assert Failed: " #x_ ); -# define COMET_THROWS_ASSERT throw( comet::assert_failed) -# else -# define COMET_ASSERT(x_) ; -# endif - -# else -# define COMET_THROWS_ASSERT throw() -# ifndef __CYGWIN__ - -# include -# define COMET_ASSERT _ASSERTE - -# else - -# include -# define COMET_ASSERT assert -# endif -# endif -/*! \addtogroup ErrorHandling - */ -//@{ -/** \def COMET_ASSERT Assertion in commet. - * \sa COMET_THROWS_ASSERT COMET_ASSERT_THROWS_ALWAYS - */ - //@} - -#endif diff --git a/EyeTab_SP2/comet/atl_module.h b/EyeTab_SP2/comet/atl_module.h deleted file mode 100644 index 5c37bdc..0000000 --- a/EyeTab_SP2/comet/atl_module.h +++ /dev/null @@ -1,121 +0,0 @@ -/** \file - * ATL Module Compatability wrapper. - */ -/* - * Copyright © 2000, 2001 Paul Hollingsworth, Michael Geddes - * Copyright © 2013 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_ATL_MODULE_H -#define COMET_ATL_MODULE_H - -#include - -#include - -namespace comet { - /*! \defgroup ATL ATL conversion. - */ - //@{ - - /** \struct declspec_comtype atl_module.h comet/atl_module.h - * Helper to create a 'comtype' for a non-comet interface. - * \code - * namespace comet{ - * template<> struct comtype : - * declspec_comtype - * { }; - * }; - * \endcode - * - */ - template struct declspec_comtype - { - static const uuid_t& uuid() { return uuid_t::create_const_reference(__uuidof(ITF)); } - typedef BASE base; - }; - - - /// Placeholder for an empty comet typelibrary. - struct empty_typelib - { - typedef nil coclasses; - }; - - template - class atl_module_ex : public ATL_MODULE - { - // ATL will take the responsibility of registering the embedded type library. - public: - HRESULT Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, const GUID* plibid = NULL) - { - module().instance(h); - return ATL_MODULE::Init(p, h, plibid); - } - - HRESULT RegisterServer(BOOL bRegTypeLib = FALSE, const CLSID* pCLSID = NULL) - { - HRESULT hr = ATL_MODULE::RegisterServer(bRegTypeLib, pCLSID); - if(SUCCEEDED(hr)) - hr = COM_SERVER::DllRegisterServer(); - return hr; - } - - HRESULT UnregisterServer(BOOL bUnRegTypeLib, const CLSID* pCLSID = NULL) - { - COM_SERVER::DllUnregisterServer(); - return ATL_MODULE::UnregisterServer(bUnRegTypeLib, pCLSID); - } - - HRESULT GetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) - { - HRESULT hr = COM_SERVER::DllGetClassObject( rclsid, riid, ppv); - if( hr == CLASS_E_CLASSNOTAVAILABLE ) - { - hr = ATL_MODULE::GetClassObject(rclsid, riid,ppv); - } - return hr; - } - - LONG GetLockCount() - { - return module().rc() + ATL_MODULE::GetLockCount(); - } - }; - - /** Wraps an ATL::CComModule to provide co-existing ATL/Comet co-classes. - * ATL will take responsibility for registering the embedded type-library. - * - * Here is an example of how to use it: - * \code - * struct typelib_subset - * { - * typedef COMET_STRICT_TYPENAME comet::typelist::make_list< CoClass1, CoClass2 > coclasses; - * }; - * comet::atl_module _Module; - * \endcode - * And in std.h: - * \code - * struct typelib_subset; - * extern comet::atl_module _Module; - * \endcode - */ - template - class atl_module : public atl_module_ex< com_server >, ATL_MODULE > - { - }; - //@} -} // namespace comet - -#endif diff --git a/EyeTab_SP2/comet/auto_buffer.h b/EyeTab_SP2/comet/auto_buffer.h deleted file mode 100644 index 0a304bd..0000000 --- a/EyeTab_SP2/comet/auto_buffer.h +++ /dev/null @@ -1,99 +0,0 @@ -/** \file - * Simple uncopyable buffer class. - */ - /* - * Copyright © 2004, Michael Geddes, Lijun Qin. - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef INCLUDE_COMET_AUTO_BUFFER_H -#define INCLUDE_COMET_AUTO_BUFFER_H - -#ifdef _SHOW_INC -#pragma message(" #Include " __FILE__) -#endif - -namespace comet -{ - /*!\addtogroup Misc - */ - //@{ - - /** \class auto_buffer_t auto_buffer.h comet/auto_buffer.h - * Simle auto-deleting buffer class. - * Non-copyable /returnable. - */ - template - class auto_buffer_t - { - public: - typedef size_t size_type; - /** Create a buffer of the given size. - * This is the only valid constructor. - */ - explicit auto_buffer_t(size_type size) - { - begin_ = new T[size]; - } - /// Auto-delete the buffer. - ~auto_buffer_t() throw() { delete[] begin_; } - - /// Clear the buffer. - void clear() throw() - { - delete[] begin_; - begin_ = 0; - } - /// Is the buffer empty. - bool empty() const throw() - { - return begin_ != NULL; - } - /// Resize the buffer. - void resize( size_type newSize) throw() - { - delete[] begin_; - begin_ = new T[newSize]; - } - - /// Return a reference to the specifed element. - T & at( size_type t) throw() { return begin_[t]; } - T & operator[]( size_type t) throw() { return begin_[t]; } - /// Return a const reference to the specifed element. - const T & at( size_type t) const throw() { return begin_[t]; } - const T & operator[]( size_type t) const throw() { return begin_[t]; } - - /// Detatch the memory. - T *detach() - { - T *val = begin_; - begin_ = NULL; - return val; - } - /// Return the memory. - T *get() { return begin_; } - const T *get()const { return begin_; } - - private: - /// Can't assign. - auto_buffer_t &operator=(const auto_buffer_t &); - /// can't copy. - auto_buffer_t(const auto_buffer_t&); - - /// Pointer to memory. - T *begin_; - }; - //@} -} - -#endif /* INCLUDE_COMET_AUTO_BUFFER_H */ diff --git a/EyeTab_SP2/comet/bstr.h b/EyeTab_SP2/comet/bstr.h deleted file mode 100644 index 23fd332..0000000 --- a/EyeTab_SP2/comet/bstr.h +++ /dev/null @@ -1,948 +0,0 @@ -/** \file - * BSTR wrapper classes. - */ -/* - * Copyright © 2000-2004 Sofus Mortensen, Michael Geddes - * Copyright © 2012 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_BSTR_H -#define COMET_BSTR_H - -#include - -#ifdef COMET_BROKEN_WTYPES -#include -#endif // COMET_BROKEN_WTYPES -#include -#include -#include -#ifndef COMET_GCC_HEADERS -#include -#endif // COMET_GCC_HEADERS - -#include -#include -#undef max -#include - -#include -#include -#include -#include -#include -#include -#include - -#pragma warning(push) -#pragma warning(disable : 4522 4521) - -#pragma comment( lib, "oleaut32" ) - -namespace comet { - -#ifndef NORM_IGNOREKASHIDA -#define NORM_IGNOREKASHIDA 0x00040000 -#endif // NORM_IGNOREKASHIDA - /*! \addtogroup COMType - */ - //@{ - //! Comparsion flags. - /*! Can be used with \link comet::bstr_t::cmp cmp \endlink or the comparsion functors. - \sa cmp - less - less_equal - greater - greater_equal - equal_to - not_equal_to - */ - - enum compare_flags_t - { - cf_ignore_case = NORM_IGNORECASE, //!< Ignore case. - cf_ingore_nonspace = NORM_IGNORENONSPACE, //!< Ignore nonspacing chars. - cf_ignore_symbols = NORM_IGNORESYMBOLS, //!< Ignore symbols. - cf_ignore_width = NORM_IGNOREWIDTH, //!< Ignore string width. - cf_ignore_kanatype = NORM_IGNOREKANATYPE, //!< Ignore Kana type. - cf_ignore_kashida = NORM_IGNOREKASHIDA //!< Ignore Arabic kashida characters. - }; - //@} - - namespace impl { - - inline const wchar_t* null_to_empty(const wchar_t* s) - { return s ? s : L""; } - - } // namespace - - - /*! \addtogroup COMType - */ - //@{ - - /*! \class bstr_t bstr.h comet/bstr.h - * BSTR Wrapper. - * \sa bstr_t - */ - class bstr_t { - public: - typedef wchar_t value_type; -#if !(defined(_STLP_DEBUG) || (defined(_HAS_ITERATOR_DEBUGGING)) && _MSC_VER >= 1400) - typedef std::wstring::iterator iterator; - typedef std::wstring::const_iterator const_iterator; - - typedef std::wstring::reverse_iterator reverse_iterator; - typedef std::wstring::const_reverse_iterator const_reverse_iterator; -#else // _STLP_DEBUG - typedef wchar_t *iterator; - typedef const wchar_t *const_iterator; -#if defined(COMET_STD_ITERATOR) - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; -#else - // workaround for broken reverse_iterator implementations due to no partial specialisation - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; -#endif -#endif // _STLP_DEBUG - - typedef std::wstring::size_type size_type; - typedef std::wstring::difference_type difference_type; - - typedef wchar_t& reference; - typedef const wchar_t const_reference; - - private: - BSTR str_; - - void construct() { str_ = 0; } - void construct(BSTR s, bool copy) throw(std::bad_alloc) - { if (copy) str_ = copy_str(s); else str_ = s; } - - void construct(const wchar_t* s) throw(std::bad_alloc) - { str_ = copy_str(s); } - - void construct(const wchar_t* s, size_t len) throw(std::bad_alloc) - { str_ = copy_str(s, len); } - - void construct(const char* s) throw(std::bad_alloc, std::runtime_error) { - convert_str(s, -1); - } - - void construct(const char* s, size_t len) - { - if (len >= static_cast(std::numeric_limits::max())) - throw std::length_error( - "String exceeded maximum length for conversion"); - - convert_str(s, static_cast(len+1)); - } - - void construct(const uuid_t& u, bool braces) - { - str_ = impl::bad_alloc_check(::SysAllocStringLen(0, braces?38:36)); - u.copy_to_str(str_+(braces?1:0)); - if (braces) - { - str_[0]=L'{'; - str_[37]=L'}'; - } - } - - void construct(const wchar_t* s1, size_t l1, const wchar_t* s2, size_t l2) throw(std::bad_alloc) - { - str_ = impl::bad_alloc_check(::SysAllocStringLen(NULL, UINT(l1+l2))); - if (l1) memcpy(str_, s1, sizeof(wchar_t)*(l1)); - if (l2) memcpy(str_+l1, s2, sizeof(wchar_t)*(1+l2)); - } - - void destroy() throw() - { if (str_) ::SysFreeString(str_); } - - bool is_regular() const throw() - { return !str_ || length() == wcslen(str_); } - - static BSTR copy_str(const wchar_t* src) throw(std::bad_alloc) - { return src ? impl::bad_alloc_check(::SysAllocString(src)) : 0; } - - static BSTR copy_str(const wchar_t* src, size_t len) throw(std::bad_alloc) - { return src ? impl::bad_alloc_check(::SysAllocStringLen(src, UINT(len))) : 0; } - - static BSTR copy_str(BSTR src) throw(std::bad_alloc) - { return src ? impl::bad_alloc_check(::SysAllocStringLen(src, ::SysStringLen(src))) : 0; } - - void convert_str(const char* s, int l) throw(std::bad_alloc, std::runtime_error) - { - if (s != 0) { -#if defined(_MBCS) || !defined(COMET_NO_MBCS) - int wl = ::MultiByteToWideChar(CP_ACP, 0, s, l, NULL,0); -#else - int wl = ((l>=0)?l: (1+strlen(s))); - COMET_ASSERT( wl == ::MultiByteToWideChar( CP_ACP, 0, s, l, NULL,0)); -#endif - str_ = impl::bad_alloc_check(::SysAllocStringLen(0, wl - 1)); - if (::MultiByteToWideChar(CP_ACP, 0, s, l, str_, wl) == 0) - { - destroy(); - throw std::runtime_error("MultiByteToWideChar has failed"); - } - } else str_ = 0; - } - - public: - /*! Default constructor - Constructs a null string. - */ - bstr_t() throw() - { - construct(); - } - - //! Copy constructor - /*! - \param s - String initialise bstr_t from. - - \exception std::bad_alloc - On memory exhaustion std::bad_alloc is thrown. - */ - bstr_t(const bstr_t& s) throw(std::bad_alloc) - { - construct(s.str_, true); - } - - //! Construct string from const wchar_t* - /*! - \param s - String to initialise bstr_t from. - - \exception std::bad_alloc - On memory exhaustion std::bad_alloc is thrown. - */ - bstr_t(const wchar_t* s) throw(std::bad_alloc) - { - construct(s); - } - - bstr_t(const wchar_t* s, size_t len) throw(std::bad_alloc) - { - construct(s, len); - } - - //! Construct string from const char* - /*! - \param s - String to initialise bstr_t from. - - \exception std::bad_alloc - On memory exhaustion std::bad_alloc is thrown. - \exception std::runtime_error - Should string conversion fail, std::runtime_error will be thrown. - */ - bstr_t(const char* s) throw(std::runtime_error) - { - construct(s); - } - - bstr_t(const char* s, size_t len) throw(std::bad_alloc) - { - construct(s, len); - } - - //! Construct string from const std::string& - /*! - \param s - String to initialise bstr_t from. - - \exception std::bad_alloc - On memory exhaustion std::bad_alloc is thrown. - \exception std::length_error - If this given string is too long to be converted, - std::length_error is thrown. - \exception std::runtime_error - Should string conversion fail, std::runtime_error is thrown. - */ - bstr_t(const std::string& s) - { - construct(s.c_str(), s.length()); - } - - //! Construct string from BSTR - /*! - Takes ownership of specified BSTR. To prevent misuse the BSTR must be wrapped using auto_attach. - - \code - bstr_t bs( auto_attach( myBSTR ) ); - \endcode - - \param s - String to initialise bstr_t from. - */ - bstr_t(const impl::auto_attach_t& s) throw() - { - construct(s.get(), false); - } - - - //! Construct string from const std::wstring& - /*! - \param s - String to initialise bstr_t from. - - \exception std::bad_alloc - On memory exhaustion std::bad_alloc is thrown. - */ - bstr_t(const std::wstring& s) throw(std::bad_alloc) - { - construct(s.c_str(), s.length()); - } - - explicit bstr_t(size_type sz, wchar_t c) throw(std::bad_alloc) - { - str_ = impl::bad_alloc_check(::SysAllocStringLen(0, UINT(sz))); - std::fill(begin(), end(), c); - } - - explicit bstr_t(size_type sz) throw(std::bad_alloc) - { - str_ = impl::bad_alloc_check(::SysAllocStringLen(0, UINT(sz))); - } - - template - explicit bstr_t(IT first, IT last) - { - str_ = 0; - assign(first, last); - } - - explicit bstr_t(const uuid_t& u, bool braces = false) - { - construct(u, braces); - } - - private: - bstr_t(const wchar_t* s1, size_t l1, const wchar_t* s2, size_t l2) throw(std::bad_alloc) - { - construct(s1, l1, s2, l2); - } - - public: - //! Destructor - /*! - Deletes the wrapped BSTR. - */ - ~bstr_t() throw() - { - destroy(); - } - - //! Swap - void swap(bstr_t& x) throw() - { - std::swap(str_, x.str_); - } - - //! Explicit conversion to const wchar_t* - const wchar_t* c_str() const throw() - { return impl::null_to_empty(str_); } - - //! Explicit conversion to std::wstring - std::wstring w_str() const throw() - { return impl::null_to_empty(str_); } - -#ifdef _MBCS -#ifndef COMET_NO_MBCS_WARNING -#pragma message( "Warning: _MBCS is defined. bstr_t::s_str may return an std::string containing multibyte characters" ) -#endif -#endif - - //! Explicit conversion to std::string - std::string s_str() const - { - if (is_empty()) return std::string(); - - if (length() > static_cast(std::numeric_limits::max())) - throw std::length_error("String is too large to be converted"); - - int ol = static_cast(length()); - -#if defined(_MBCS) || !defined(COMET_NO_MBCS) - // Calculate the required length of the buffer - int l = WideCharToMultiByte(CP_ACP, 0, str_, ol, NULL, 0, NULL, NULL); -#else // _MBCS - int l = ol; - COMET_ASSERT( l == WideCharToMultiByte(CP_ACP, 0, str_, ol, NULL, 0, NULL, NULL)); -#endif // _MBCS - - // Create the buffer - std::string rv(l, std::string::value_type()); - // Do the conversion. - if (0 == WideCharToMultiByte( - CP_ACP, 0, str_, ol, &rv[0], l, NULL, NULL)) - { - DWORD err = GetLastError(); - raise_exception(HRESULT_FROM_WIN32(err)); - } - - return rv; - } - - //! Explicit conversion to "tstring". -#ifdef _UNICODE - std::wstring t_str() const - { - return w_str(); - } -#else - std::string t_str() const - { - return s_str(); - } -#endif - - //! Implicit conversion to std::wstring - operator std::wstring() const { return w_str(); } - - //! Implicit conversion to std::string - operator std::string() const { return s_str(); } - - //! Returns true if and only if wrapped str is null - bool is_null() const throw() - { return str_ == 0; } - - /** Returns true if and only if wrapped str has zero length. - */ - bool is_empty() const throw() { return length() == 0; } - - //! Returns true if and only if wrapped str has zero length. - bool empty() const throw() { return length() == 0; } - - //! Returns length of wrapped string. - size_t length() const throw() - { return is_null() ? 0 : ::SysStringLen(str_); } - - size_t size() const throw() - { return length(); } - - /*! \internal */ - BSTR get_raw() const - { return str_; } - - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const bstr_t &val) - { os << val.s_str(); return os; } - - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const bstr_t &val) - { os << val.w_str(); return os; } - - /// \name Boolean operators - //@{ - - bool operator==(const wchar_t* s) const - { return 0 == wcscmp(c_str(), impl::null_to_empty(s) ) && is_regular(); } - - bool operator!=(const wchar_t* s) const - { return !operator==(s); } - - bool operator<(const wchar_t* s) const - { return wcscmp(c_str(), impl::null_to_empty(s)) < 0 && is_regular(); } - - bool operator>(const wchar_t* s) const - { return wcscmp(c_str(), impl::null_to_empty(s)) > 0 && !is_regular(); } - - bool operator>=(const wchar_t* s) const - { return !operator<(s); } - - bool operator<=(const wchar_t* s) const - { return !operator>(s); } - - bool operator==(const std::wstring& s) const - { - size_t l = length(); - if (l != s.length()) return false; - return 0 == memcmp(str_, s.c_str(), sizeof(wchar_t)*l); - } - - bool operator!=(const std::wstring& s) const - { return !operator==(s); } - - bool operator<(const std::wstring& s) const - { return std::lexicographical_compare(str_, str_+length(), s.begin(), s.end()); } - - bool operator>(const std::wstring& s) const - { return std::lexicographical_compare(str_, str_+length(), s.begin(), s.end(), std::greater()); } - - bool operator>=(const std::wstring& s) const - { return !operator<(s); } - - bool operator<=(const std::wstring& s) const - { return !operator>(s); } - - bool operator==(const bstr_t& s) const - { - if (str_ == 0 && s.str_ == 0) return true; - return ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), 0) == VARCMP_EQ; - } - - bool operator!=(const bstr_t& s) const - { return !operator==(s); } - - bool operator<(const bstr_t& s) const - { - if (str_ == 0) { - return s.str_ != 0; - } - - if (s.str_ == 0) return false; - - return ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), 0) == VARCMP_LT; - } - - bool operator>(const bstr_t& s) const - { - if (str_ == 0) { - return s.str_ != 0; - } - - if (s.str_ == 0) return false; - - return ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), 0) == VARCMP_GT; - } - - bool operator>=(const bstr_t& s) const - { return !operator<(s); } - - bool operator<=(const bstr_t& s) const - { return !operator>(s); } - //@} - - //! String comparsion function. - /*! \param s String to compare - \param flags Comparison Flags - \retval <0 if less - \retval 0 if Equal - \retval >0 if greater - */ - int cmp(const bstr_t& s, compare_flags_t flags = compare_flags_t(0)) const - { - HRESULT res = ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), flags); - switch(res) - { - case VARCMP_EQ: return 0; - case VARCMP_GT: return 1; - case VARCMP_LT: return -1; - case VARCMP_NULL: - return ((str_==0)?0:1) - ((s.str_==0)?0:1); - } - if (str_==0 || s.str_ ==0) - return ((str_==0)?0:1) - ((s.str_==0)?0:1); - raise_exception(res); return 0; - } - - //!\name Comparison Functors - //@{ - //! Less Functor. - /*! Useful for STL containers. - \code - typedef stl::map < comet::bstr_t, long, bstr_t::less > string_long_map; - \endcode - \param CF comparison flags. - \relates bstr_t - */ - template - struct less : std::binary_function< bstr_t,bstr_t,bool>{ - /// Functor. - bool operator()(const bstr_t& l, const bstr_t& r) const - { return l.cmp(r, CF) <0; } - }; - - //! less or equal functor. - /*! \relates bstr_t */ - template - struct less_equal : std::binary_function< bstr_t,bstr_t,bool> { - /// Functor. - bool operator()(const bstr_t& l, const bstr_t& r) const - { return l.cmp(r, CF) <=0; } - }; - - //! greater functor. - /*! \relates bstr_t */ - template - struct greater : std::binary_function< bstr_t,bstr_t,bool> { - /// Functor. - bool operator()(const bstr_t& l, const bstr_t& r) const - { return l.cmp(r, CF) > 0; } - }; - - //! greater or equal functor. - /*! \relates bstr_t */ - template - struct greater_equal : std::binary_function< bstr_t,bstr_t,bool> { - /// Functor. - bool operator()(const bstr_t& l, const bstr_t& r) const - { return l.cmp(r, CF) >=0; } - }; - - //! equality functor. - template - struct equal_to : std::binary_function< bstr_t,bstr_t,bool> { - bool operator()(const bstr_t& l, const bstr_t& r) const - { return l.cmp(r, CF) == 0; } - }; - - //! Inequality functor. - /*! \relates bstr_t */ - template - struct not_equal_to : std::binary_function< bstr_t,bstr_t,bool>{ - /// Functor. - bool operator()(const bstr_t& l, const bstr_t& r) const - { return l.cmp(r, CF) != 0; } - }; - //@} - - iterator begin() { return iterator(str_); } - iterator end() { return iterator(str_ + length()); } - const_iterator begin() const { return const_iterator(str_); } - const_iterator end() const { return const_iterator(str_ + length()); } - - reverse_iterator rbegin() { return reverse_iterator(str_); } - reverse_iterator rend() { return reverse_iterator(str_ + length()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(str_); } - const_reverse_iterator rend() const { return const_reverse_iterator(str_ + length()); } - - reference at(size_type i) { rangecheck(i); return str_[i]; } - const_reference at(size_type i) const { rangecheck(i); return str_[i]; } - - private: - // check range (may be private because it is static) - void rangecheck (size_type i) const { - if (i >= length()) { throw std::range_error("bstr_t"); } - } - - public: - const_reference operator[](size_type idx) const - { return str_[idx]; } - - reference operator[](size_type idx) - { return str_[idx]; } - - //! Assign string to be \p sz of character \p c . - void assign(size_type sz, wchar_t c) throw(std::bad_alloc) - { - bstr_t t(sz, c); - swap(t); - } - - //! Assign string from two iterators. - template - void assign(IT first, IT last) - { - bstr_t t( std::distance(first, last) ); - -#pragma warning(push) -#pragma warning(disable:4996) - std::copy(first, last, t.begin()); -#pragma warning(pop) - - swap(t); - } - - - //! Assignment operator from any (non integer) constructable. - template - bstr_t& operator=(const T& x) - { - COMET_STATIC_ASSERT( type_traits::is_integer::result == false ); - bstr_t t(x); - swap(t); - return *this; - } - - //! Default assignment. - bstr_t& operator=(const bstr_t& x) throw(std::bad_alloc) - { - bstr_t t(x); - swap(t); - return *this; - } - - //! Concat operation - bstr_t operator+(const bstr_t& s) const throw(std::bad_alloc) - { - return bstr_t(str_, length(), s.str_, s.length()); - } - - //! Concat with const wchar_t* - bstr_t operator+(const wchar_t* s) const throw(std::bad_alloc) - { - return bstr_t(str_, length(), s, wcslen(s)); - } - - //! Concat with std::wstring - bstr_t operator+(const std::wstring& s) const throw(std::bad_alloc) - { - return bstr_t(str_, length(), s.c_str(), s.length()); - } - - //! Concat assignment - bstr_t& operator+=(const bstr_t& s) throw(std::bad_alloc) - { - bstr_t t(str_, length(), s.str_, s.length()); - swap(t); - return *this; - } - - //! Concat assignment with const wchar_t* - bstr_t& operator+=(const wchar_t* s) throw(std::bad_alloc) - { - bstr_t t(str_, length(), s, wcslen(s)); - swap(t); - return *this; - } - - //! Concat assignment with std::wstring - bstr_t& operator+=(const std::wstring& s) throw(std::bad_alloc) - { - bstr_t t(str_, length(), s.c_str(), s.length()); - swap(t); - return *this; - } - - // Detach a raw BSTR from it's wrapper - detach function is dangerous. - BSTR detach() - { - BSTR s(str_); - str_ = 0; - return s; - } - - public: - - //!\name Create a reference to a BSTR - /*! - Creates a bstr_t that is a reference to the BSTR. - It will not be reference counted and will not be deleted when the bstr_t goes out of scope. - - This is used by the interface wrappers for [in] BSTR's. Typically clients do not need create_reference. - */ - //@{ - static const bstr_t& create_const_reference(const BSTR& s) throw() - { return *reinterpret_cast(&s); } - - static bstr_t& create_reference(BSTR& s) throw() - { return *reinterpret_cast(&s); } - //@} - - //! Detaches specified bstr - static BSTR detach(bstr_t& s) - { - return s.detach(); - } - - /*! \internal */ - template - static BSTR detach(const T& s) - { - return bstr_t(s).detach(); - } - - /*! \internal */ - BSTR* get_ptr_to_raw() const - { - return const_cast(&str_); - } - - //! [in] adapter. - /*! - Used when calling raw interfaces that require an [in] BSTR argument. - - \code - bstr_t bs; - HRESULT hr = pRawInterface->raw_Method(bs.in()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - BSTR in() const throw() - { - return str_; - } - - //! [in] adapter. - /*! - Used when calling raw interfaces that require an [in] BSTR* argument. - - \code - bstr_t bs; - HRESULT hr = pRawInterface->raw_Method(bs.in_ptr()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - BSTR* in_ptr() const throw() - { - return const_cast(&str_); - } - - //! [out] adapter. - /*! - Used when calling raw interfaces that require an [out] BSTR * argument. - - \code - bstr_t bs; - HRESULT hr = pRawInterface->raw_MethodThatReturnsBSTR(bs.out()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - BSTR* out() throw() - { - destroy(); - return &str_; - } - - //! [in, out] adapter. - /*! - Used when calling raw interfaces that require an [in, out] BSTR * argument. - - \code - bstr_t bs; - HRESULT hr = pRawInterface->raw_MethodThatChangesBSTR(bs.inout()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - - \note If the wrapped BSTR is shared. The bstr_t is copied so that only this version is modified. - - \exception std::bad_alloc - Throws std::bad_alloc if the bstr_t is being copied and memory is exhausted. - */ - BSTR* inout() throw(std::bad_alloc) - { - return &str_; - } - - friend bstr_t operator+(const std::wstring& s, const bstr_t& t) throw(std::bad_alloc); - friend bstr_t operator+(const wchar_t* s, const bstr_t& t) throw(std::bad_alloc); - }; - - //! Concat operation - inline bstr_t operator+(const std::wstring& s, const bstr_t& t) throw(std::bad_alloc) - { - return bstr_t(s.c_str(), s.length(), t.str_, t.length()); - } - - //! Concat operation - inline bstr_t operator+(const wchar_t* s, const bstr_t& t) throw(std::bad_alloc) - { - return bstr_t(s, wcslen(s), t.str_, t.length()); - } - //@} - - /*! \name Boolean Operators on String - * \relates bstr_t - */ - //@{ - inline bool operator==(const wchar_t* s1, const bstr_t& s2) throw() - { - return s2 == s1; - } - - inline bool operator!=(const wchar_t* s1, const bstr_t& s2) throw() - { - return s2 != s1; - } - - inline bool operator<(const wchar_t* s1, const bstr_t& s2) throw() - { - return s2 > s1; - } - - inline bool operator>(const wchar_t* s1, const bstr_t& s2) throw() - { - return s2 < s1; - } - - inline bool operator<=(const wchar_t* s1, const bstr_t& s2) throw() - { - return s2 >= s1; - } - - inline bool operator>=(const wchar_t* s1, const bstr_t& s2) throw() - { - return s2 <= s1; - } - - inline bool operator==(const std::wstring& s1, const bstr_t& s2) throw() - { - return s2 == s1; - } - - inline bool operator!=(const std::wstring& s1, const bstr_t& s2) throw() - { - return s2 != s1; - } - - inline bool operator<(const std::wstring& s1, const bstr_t& s2) throw() - { - return s2 > s1; - } - - inline bool operator>(const std::wstring& s1, const bstr_t& s2) throw() - { - return s2 < s1; - } - - inline bool operator<=(const std::wstring& s1, const bstr_t& s2) throw() - { - return s2 >= s1; - } - - inline bool operator>=(const std::wstring& s1, const bstr_t& s2) throw() - { - return s2 <= s1; - } - //@} - - - // Implementation of uuid_t construct from bstr. - inline uuid_t::uuid_t(const bstr_t& bs) - { - if (init_from_str(bs.c_str(), bs.length()) == false) throw std::runtime_error(err_msg()); - } - - inline currency_t& currency_t::parse( const bstr_t &str, LCID locale ) - { - VarCyFromStr( str.in(), locale, 0, &cy_ ) | raise_exception; - return *this; - } - -} // namespace - -namespace { - COMET_STATIC_ASSERT( sizeof(comet::bstr_t) == sizeof(BSTR) ); - COMET_STATIC_ASSERT( sizeof(comet::bstr_t) == sizeof(BSTR) ); -} - -namespace std { - template<> inline void swap( comet::bstr_t& x, comet::bstr_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -} - -#include - -#pragma warning(pop) - -#endif /* COMET_BSTR_H */ diff --git a/EyeTab_SP2/comet/calllog.h b/EyeTab_SP2/comet/calllog.h deleted file mode 100644 index 0193f9b..0000000 --- a/EyeTab_SP2/comet/calllog.h +++ /dev/null @@ -1,628 +0,0 @@ -/** \file - * Provide logging for calls. - */ -/* - * Copyright © 2003 Michael Geddes - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_CALLLOG_H -#define COMET_CALLLOG_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** \page cometcalllogging Call Logging - This is a feature of the comet interfaces that allows the server to log all - calls to any of the interface methods. It logs parameter values, and also allows - logging of errors (see \ref comethandleexception ). - - Call logging in comet is enabled by using tlb2h -L (see \ref tlb2husage). - - To enable logging to a specified file, define COMET_LOGFILE and define - COMET_LOGFILE_DEFAULT to be the required logfile (see comet::stream_call_logger_t). - - To override logging, specialise comet::call_logger_ and implement all the interfaces - defined by the default comet::call_logger_. - - How various parameter types are output can be modified by specialising the - function comet::comet_log. - */ - -/** \defgroup CallLog Call-logging - *@{ - */ -#ifdef COMET_DOXYGEN // Only for doxygen -/** \def COMET_LOGFILE - * Define to get simple interface logfiles. - * Must use tlb2h -L to enable interface logging. See \ref tlb2husage. - * \sa comet_log comet_log_interface comet_log_array stream_call_logger_t tofstream_comet - */ - -#define COMET_LOGFILE - -/** \def COMET_LOGFILE_DEFAULT - * If COMET_LOGFILE is defined, define to set the default logfile name. - * \code - #define COMET_LOGFILE_DEFAULT "C:\\log\\comet.log" - * \endcode - * \relates call_logger_ - */ -#define COMET_LOGFILE_DEFAULT "C:\\log\\comet.log" -#endif // COMET_DOXYGEN - - //@} - -namespace comet -{ -/*!\addtogroup CallLog - */ -//@{ - /** \struct call_logger_ calllog.h comet/calllog.h - * Default NULL logger and description of 'call logger' concept. - * Specialise to \b true to override. - * \code - template<> - struct call_logger_ : stream_call_logger_t - { - }; - * \endcode - * \sa stream_call_logger_t tofstream_comet - */ - template - struct call_logger_ - { - /** Should the call be logged? - * \return Return true to allow call to be logged. - */ - static inline bool can_log_call() { return false; } - /** Should the return values be logged? - * \return Return true to allow call return values to be logged. - */ - static inline bool can_log_return() { return false; } - - /** Called by interfaces to provide call logging. - */ - static inline void log_call( const tstring &iface, const tstring &funcname, const tstring &log){} - - /// Called by interfaces to provide call return logging. - static inline void log_return( const tstring &iface, const tstring &funcname, const tstring &log, const tstring &retval){} - - - ///\name Exception handling redirection. - //@{ - - /** Should the error be logged? - * \return Return true to allow error to be logged. - */ - static inline bool can_log_exception() { return false; } - - /// Called by exception handlers to provide logging for errors. - static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource ,const source_info_t &callSource ){} - //@} - }; - - /** \struct stream_call_logger_t calllog.h comet/calllog.h - * Log calls to a tostream. - * A class/struct that subscribes to and implements the 'call logger' concept for a steam. - * Template paramter is expected to be a class that has a method that creates a tostream - * instance as follows: - * \code - * static tostream *create() - * \endcode - * \param CREATESTREAM Class with a static function \p create() that returns a tostream * - * \sa tofstream_comet call_logger_ - */ - template - struct stream_call_logger_t -#ifdef COMET_DOXYGEN // For documentation - : call_logger_ -#endif - { - static inline bool can_log_call() - { - tostream *ofs = logger(); - return ofs != NULL && ofs->good(); - } - static inline bool can_log_return() { return can_log_call(); } - static inline bool can_log_exception() { return can_log_call(); } - - static inline void log_call( const tstring &iface, const tstring &funcname, const tstring &log) - { - log_( false, iface, funcname, log, tstring()); - } - static inline void log_return( const tstring &iface, const tstring &funcname, const tstring &log, const tstring &retval) - { - log_( true, iface, funcname, log, retval); - } - static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource ,const source_info_t &callSource ) - { - COMET_NOTUSED(errorSource); - tostream *ofs= logger(); - if (ofs==NULL) return; // Should never be NULL, as can_log_call() should have been obeyed before calling. - *ofs << _T("Err ") << callSource.source().t_str(); - if ( !desc.empty() ) - { - *ofs << type << _T(": ") << desc ; - } - *ofs << std::endl; - } - - protected: - // Log a function call/return. - static void log_( bool return_val, const tstring &iface, const tstring &funcname, const tstring &log, const tstring &retval) - { - tostream *ofs= logger(); - if (ofs==NULL) return; // Should never be NULL, as can_log_call() should have been obeyed before calling. - - *ofs << (return_val?_T("Out "):_T("In ")) << iface << _T("::") << funcname; - if (!return_val || !log.empty()) - *ofs << _T("(") << log << _T(")"); - - if (return_val && !retval.empty()) - *ofs << _T(" returned ") << retval; - *ofs << std::endl; - - } - // Access to the static logger instance without needing to initialise a - // member. - static tostream *logger() - { - static tostream *ofs_= NULL; - if (ofs_ ==NULL) - { - ofs_ = CREATESTREAM::create(); - if (ofs_ != NULL) - { - // Safely clean up static pointer on module destruct - module().add_object_to_dispose( create_pointer_deleter( ofs_ ) ); - } - } - return ofs_; - } - }; - - namespace impl - { - /** Redirect default logging to calllog. - * \internal - */ - template<> - struct call_logger_redirect_ - { - // This trick allows the user to be able to still override the call logging. - // Without this, log_exception has to call - // call_logger_::log_exception which causes the template to be - // instantiated, and the user is no longer able to specialise - // call_logger_ - template - struct exe - { - static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource, const source_info_t &callSource ) - { - call_logger_::log_exception(type,desc,errorSource, callSource); - } - static inline bool can_log_exception() - { - return call_logger_::can_log_exception(); - } - }; - }; - } - -#ifdef COMET_LOGFILE -#ifndef COMET_LOGFILE_DEFAULT -#define COMET_LOGFILE_DEFAULT NULL -#endif -#include - /** \class tofstream_comet calllog.h comet/calllog.h - * Provides a filestream creator as well as the implementation of an output filestream logger. - * Allows overriding of file name. - */ - class tofstream_comet : public tofstream - { - static const char *&filename_() - { - static const char *default_filename= COMET_LOGFILE_DEFAULT; - return default_filename; - } - public: - /// Get the default filename. - static const char *get_default_filename() { return filename_(); } - /// Set the default filename to a new value. - void set_default_filename( const char *filename) { filename_() = filename; } - - tofstream_comet( const char *fname) : tofstream(fname) {} - - /** Create an instance of the logger. - * Returns NULL if the file doesn't exist. - */ - static tostream *create() - { - const char *fname = filename_(); - if (fname == NULL) - return NULL; - return new tofstream_comet(fname); - } - private: - tofstream_comet(const tofstream_comet &); - tofstream_comet &operator=(const tofstream_comet &); - - }; - - /** Override specialisation of the call_logger_. - * \relates call_logger_ - */ - template<> - struct call_logger_ : public stream_call_logger_t - { - }; - -#endif // FILE_LOG - - /** Default interface (com_ptr) logging. - * Specialise to provide custom logging for com_ptr. - \code - template<> - void comet_log_interface(tostream &os, const com_ptr &iface) - { - os << iface->GetName(); - } - \endcode - Specialisations for IUnknown and IDispatch are used by the variant loggers. - * \sa comet_log comet_log_array - * \relates call_logger_ - */ - template< typename IFACE> - void comet_log_interface(tostream &os, const com_ptr &iface) - { - os << _T("0x") << std::hex << reinterpret_cast(iface.get()) << std::dec; - } - - // Forward declarations. - template void comet_log(tostream &os, const T &value); - - namespace impl - { - // Forward declarations. - template inline void default_comet_log(tostream &os, const T &value); - static void comet_log_array_raw(tostream &os, SAFEARRAY *value); - - // The default variant handler. - template< bool B> - static inline void default_comet_log_variant(tostream &os, const variant_t &value, bool out_type) - { - VARTYPE vt = value.get_vt(); - if ((vt & VT_ARRAY) != 0) - { - comet_log_array_raw(os, value.get().parray); - } - else - { - VARIANT varcopy=value.in(); - if (vt == (VT_BYREF | VT_VARIANT)) // Dereference variant by reference - varcopy = *V_VARIANTREF(&varcopy); - const VARIANT *var=&varcopy; - -#define __VARIANT_LOGPOINTER_TYPE_CAST(vartype,cast) \ - case VT_##vartype:\ - if(out_type) os << _T("VT_")_T(#vartype)_T(":");\ - comet_log_interface(os, cast(V_##vartype(var))); \ - break - -#define __VARIANT_LOGPOINTER_REFTYPE_CAST(vartype,cast) \ - case VT_BYREF|VT_##vartype:\ - if(out_type) os << _T("BYREF VT_")_T(#vartype)_T(":");\ - comet_log_interface(os, cast(*V_##vartype##REF(var)));\ - break -#define __VARIANT_LOG_TYPE_CAST(vartype,cast) \ - case VT_##vartype: \ - if(out_type) os << _T("VT_")_T(#vartype)_T(":"); \ - comet_log(os, cast(V_##vartype(var))); \ - break - -#define __VARIANT_LOG_REFTYPE_CAST(vartype,cast)\ - case VT_BYREF|VT_##vartype:\ - if(out_type) os << _T("BYREF VT_")_T(#vartype)_T(":");\ - comet_log(os, cast(*V_##vartype##REF(var)));\ - break - -#define __VARIANT_LOG_TYPE(vartype) \ - case VT_##vartype: \ - if(out_type) os << _T("VT_")_T(#vartype)_T(":");\ - comet_log(os, V_##vartype(var));\ - break - -#define __VARIANT_LOG_REFTYPE(vartype)\ - case VT_BYREF|VT_##vartype: \ - if(out_type) os << _T("BYREF VT_")_T(#vartype)_T(":"); \ - comet_log(os, *V_##vartype##REF(var)); \ - break - - switch (vt) - { - __VARIANT_LOG_TYPE(UI1); - __VARIANT_LOG_TYPE(UI2); - __VARIANT_LOG_TYPE(UINT); - __VARIANT_LOG_TYPE(UI4); - __VARIANT_LOG_TYPE(I1); - __VARIANT_LOG_TYPE(I2); - __VARIANT_LOG_TYPE(INT); - __VARIANT_LOG_TYPE(I4); - __VARIANT_LOG_TYPE(R4); - __VARIANT_LOG_TYPE(R8); - __VARIANT_LOG_REFTYPE(UI1); - __VARIANT_LOG_REFTYPE(UI2); - __VARIANT_LOG_REFTYPE(UINT); - __VARIANT_LOG_REFTYPE(UI4); - __VARIANT_LOG_REFTYPE(I1); - __VARIANT_LOG_REFTYPE(I2); - __VARIANT_LOG_REFTYPE(INT); - __VARIANT_LOG_REFTYPE(I4); - __VARIANT_LOG_REFTYPE(R4); - __VARIANT_LOG_REFTYPE(R8); - - case VT_BOOL: - if(out_type) os << _T("VT_BOOL:"); - os << (V_BOOL(var)==VARIANT_FALSE)?_T("true"):_T("false"); - break; - case VT_BYREF|VT_BOOL: - if(out_type) os << _T("BYREF VT_BOOL:"); - os << (V_BOOL(var)==VARIANT_FALSE)?_T("true"):_T("false"); - break; - __VARIANT_LOG_TYPE_CAST( CY, currency_t::create_const_reference); - __VARIANT_LOG_REFTYPE_CAST( CY, currency_t::create_const_reference); - __VARIANT_LOG_TYPE_CAST( DATE, datetime_t::create_const_reference); - __VARIANT_LOG_REFTYPE_CAST( DATE, datetime_t::create_const_reference); - __VARIANT_LOG_TYPE_CAST( BSTR, bstr_t::create_const_reference); - __VARIANT_LOG_REFTYPE_CAST( BSTR, bstr_t::create_const_reference); - - __VARIANT_LOGPOINTER_TYPE_CAST( UNKNOWN, com_ptr::create_const_reference); - __VARIANT_LOGPOINTER_TYPE_CAST( DISPATCH, com_ptr::create_const_reference); - __VARIANT_LOGPOINTER_REFTYPE_CAST( UNKNOWN, com_ptr::create_const_reference); - __VARIANT_LOGPOINTER_REFTYPE_CAST( DISPATCH, com_ptr::create_const_reference); - - case VT_DECIMAL: - if(out_type) os << _T("BYREF VT_DECIMAL:"); - os << _T("?"); - break; - case VT_ERROR: - if(out_type) os << _T("VT_ERROR:"); - os <<_T("0x") << std::hex << V_ERROR(var) << std::dec; - break; - case VT_BYREF|VT_ERROR: - if(out_type) os << _T("BYREF VT_ERROR:"); - os <<_T("0x") << std::hex << *V_ERRORREF(var) << std::dec; - break; - default: - os << _T("???"); - } -#undef __VARIANT_LOG_TYPE_CAST -#undef __VARIANT_LOG_REFTYPE_CAST -#undef __VARIANT_LOG_TYPE -#undef __VARIANT_LOG_REFTYPE -#undef __VARIANT_LOGPOINTER_TYPE_CAST -#undef __VARIANT_LOGPOINTER_REFTYPE_CAST - } - } - - /* Logging for raw safearrays. - * For vector arrays of size <= 16, this fakes a variant and then uses the default variant logging to log the elements - */ - static void comet_log_array_raw(tostream &os, SAFEARRAY *value) - { - UINT dims = SafeArrayGetDim(value); - VARTYPE vt ; - if( FAILED(SafeArrayGetVartype(value, &vt ) ) ) - { - os << "???"; - return; - } - - long ubound=-1,lbound=0; // Outside so it can be used for the '1' case below. - for (UINT d = 1; d<= dims ; ++d) - { - if( SUCCEEDED(SafeArrayGetUBound( value, d, &ubound) ) && SUCCEEDED(SafeArrayGetLBound(value, d, &lbound) )) - { - if( lbound == 0) - os << _T("[") << ubound+1 << _T("]"); - else - os << _T("(") << lbound << _T("..") << ubound << _T(")"); - } - - } - if (dims == 1 ) - { - long size = 1+ubound-lbound; - if (size ==0) - { - os << _T("{}"); - } - else if( size > 0 && size <= 15) - { - // For small arrays, print out the elements. - os << _T("{"); - VARIANT v; - void *var; - bool first=true, is_variant= (vt==VT_VARIANT); - if ( is_variant) - var = (void *)&v; - else - { - V_VT(&v) = vt; - var = (void *)&V_UI1(&v); - } - - for (long i = lbound; i <= ubound; ++i ) - { - if(first) - first = false; - else - os << _T(","); - if( SUCCEEDED( SafeArrayGetElement( value, &i, var ) )) - default_comet_log_variant( os, variant_t(auto_attach(v)), first | is_variant); - } - os << _T("}"); - } - } - } - - // Default logging: stream the value. - template - inline void default_comet_log(tostream &os, const T &value) - { - // ERRORS: If a compiler error occurs here, you may need to - // specialise comet_log<> to the type T here. - os << value; - } - // Default logging for bstr_t - template<> - inline void default_comet_log(tostream &os, const bstr_t &value) - { - // Put quotes round the string - simplistic, don't worry about - // non-printables or escaping for the moment. - os << _T("'") << value << _T("'"); - } - - // Deafult logging for variants. - template<> - static inline void default_comet_log(tostream &os, const variant_t &value) - { - default_comet_log_variant( os, value, true); - } - } - - /** Type specific logger. - * The default is to use internal logging. This can be specialised to - * provide type-specific logging. - * \sa comet_log_array comet_log_interface - * \relates call_logger_ - */ - template - void comet_log(tostream &os, const T &value) - { - impl::default_comet_log(os,value); - } - - namespace impl - { - // trick to work out whether it is a safearray or com_ptr type (required because of no - // partial specialisation). Needed to handle the special circumstances - template - struct check_log_type_ - { - static long check(...); - - template - static char check(const safearray_t &); - - template - static short check( const com_ptr &); - - static T createT(); - enum { is = sizeof( check( createT() ) ) }; - - }; - template < int TYPE> struct choose_logger; - - // Default safearray_t logger where we know the type T. - // - template - inline void default_comet_log_array(tostream &os, const safearray_t &value) - { - safearray_t::index_type lbound=value.lower_bound(), size = value.size(); - if (lbound == 0) - os << _T("[") << size << _T("]"); - else - os << _T("(") << lbound << _T("..") << (lbound + size -1) << _T(")"); - - if( value.size() <= 15) - { - os << _T("{"); - bool first = true; - for (safearray_t::const_iterator it = value.begin(); it != value.end(); ++it) - { - choose_logger::is >::do_comet_log(os, *it); - if (first) - first=false; - else - os << _T(","); - } - os << _T("}"); - } - } - } - /** Typed safearray_t logger. - * The default is to use internal logging. This can be specialised to - * provide type-specific logging. - * \sa comet_log comet_log_interface - * \relates call_logger_ - */ - template - void comet_log_array(tostream &os, const safearray_t &value) - { - impl::default_comet_log_array(os,value); - } - - namespace impl - { - // choose the standard logger - template < int TYPE> - struct choose_logger - { - template - static inline void do_comet_log(tostream &os, const T &value) - { - comet_log(os,value); - } - }; - // Choose the array logger - template<> - struct choose_logger - { - template - static inline void do_comet_log(tostream &os, const safearray_t &value) - { - comet_log_array(os, value); - } - }; - // Choose the interface logger - template<> - struct choose_logger - { - template - static inline void do_comet_log(tostream &os, const com_ptr &value) - { - comet_log_interface(os, value); - } - }; - - // Choose which of the comet_loggers to use. - template - static inline tostream &do_comet_log(tostream &os, const T &value) - { - choose_logger::is >::do_comet_log(os, value); - return os; - } - } - //@} -} - -#endif /* COMET_CALLLOG_H */ diff --git a/EyeTab_SP2/comet/cmd_line_parser.h b/EyeTab_SP2/comet/cmd_line_parser.h deleted file mode 100644 index 65c4178..0000000 --- a/EyeTab_SP2/comet/cmd_line_parser.h +++ /dev/null @@ -1,101 +0,0 @@ -/** \file - * Command line parser. - */ -/* - * Copyright © 2002 Mikael Lindgren - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_COMMAND_LINE_PARSER_H -#define COMET_COMMAND_LINE_PARSER_H - -#include - -namespace comet { - - /*! \addtogroup Misc - */ - //@{ - class cmd_line_parser - { - public: - enum kind_t { - Name, // Name type token, has no leading / or - - Option, // Option type token. Leading / or - skipped by token - Value, // Value for name or option. Leading : or = skipped by token - Done // No more tokens - }; - - explicit cmd_line_parser(const TCHAR* cmd_line): cmd_line_(cmd_line) - { - reset(); - } - - kind_t get_next_token(tstring& result) - { - static const TCHAR terminators[] = _T("=/- \t"); - static const TCHAR white_space[] = _T(" \t"); - - kind_t kind; - - token_ = next_token_ + _tcsspn(next_token_, white_space); // Skip leading whitespace - switch (*token_) - { - case 0: - return Done; - case _T('-'): - case _T('/'): - kind = Option; - ++token_; - break; - case _T('='): - kind = Value; - ++token_; - break; - default: - kind = Name; - break; - } - if (kind == Option || kind == Value) - token_ += _tcsspn(token_, white_space); // Skip any more whitespace - if (*token_ == _T('"')) - { - const TCHAR* next = _tcschr(token_+1, _T('"')); - if ( next ) - { - result.assign( token_+1, next ); - next_token_ = next+1; - return kind; - } - } - next_token_ = token_ + _tcscspn(token_, terminators); - result.assign(token_, next_token_); - return kind; - } - - void reset() - { - token_ = 0; - next_token_ = cmd_line_; - } - - private: - const TCHAR* cmd_line_; - const TCHAR* token_; - const TCHAR* next_token_; - }; - //@} - -} - -#endif diff --git a/EyeTab_SP2/comet/comet.h b/EyeTab_SP2/comet/comet.h deleted file mode 100644 index b2ad70f..0000000 --- a/EyeTab_SP2/comet/comet.h +++ /dev/null @@ -1,776 +0,0 @@ -/** \file - * Load basic comet libraries. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen, Michael Geddes - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_COMET_H -#define COMET_COMET_H - -#include - -/** - @mainpage Comet - - See https://github.com/alamaison/comet - - See \ref comethistory. - - \section cometinfocontents Information Pages -
    -
  • \ref tlb2husage
  • -
  • \ref tlb2handidl
  • -
  • \ref cometcomptr
  • -
  • \ref cometrawcomaccess
  • -
  • \ref cometconnectionpoints
  • -
      -
    • \ref cometconnectionpointssource
    • -
    • \ref cometconnectionpointsink
    • -
    -
  • \ref comettstring
  • -
  • \ref cometdefineconfiguration
  • -
  • \ref cometcatchallexception
  • -
  • \ref cometclassfactory
  • -
  • \link custom_registration Custom Registration\endlink
  • -
  • \ref comethandleexception
  • -
  • \ref cometcalllogging
  • -
  • \ref cometautoexp
  • -
    • \ref cometautoexpusage
    -
- */ - -/** - * \page cometrawcomaccess Raw COM Acces - * The designers of Comet have tried to avoid making the wrappers do too much - * implicitly, prefering discrete but explicit ways of triggering functionality. - * - * In order to provide interaction of Comet classes with their COM counterparts, - * a standard set of methods have been used, effectively providing a COM wrapper - * concept. - * - *
    - *
  • in(): Return a pointer suitable for [in] parameters,
  • - *
  • out(): Return a pointer suitable for [out] parameters, first freeing memory allocated,
  • - *
  • inout(): Return a pointer suitable for [in,out] parameters.
  • - *
  • detach(): Detach and return the internal pointer from the object
  • - *
  • in_ptr(): {optional} Return a pointer suitable for [out] parameter where a pointer is required, first freeing memory allocated
  • - *
  • get(): {optional} Returns a pointer to the internal pointer (same as STL pointers)
  • - *
  • auto_attach( RAW_TYPE ): Cause an assignment to attach the object to the specified raw COM type.
  • - *
  • create_reference( RAW_TYPE ): Static method to create a propper wrapper reference to the specified raw object.
  • - *
  • create_const_reference( RAW_TYPE ): Static method to create a const wrapper reference to the specified raw object.
  • - *
- */ - -/** \page cometcatchallexception Exception Catching Policy -In an ideal world, Microsoft would have adhered to the C++ standard, and made -catch(...) not catch system exceptions like 'Access Violation', -however this is not the case. - -To make it worse, not only do system exceptions get caught by catch(...), -they also bypass the stack unwinding. This is quite problematic in an -environment where this mechanism is relied upon for resource management, commonly -'only' memory, but also including multithreading acces control mechanisms. - -One of the big problems with Access Violations is that it is an unplanned -exception, and in many situations will leave data structures incomplete, -resources locked or other equally vicious artifacts. Essentially, it breaks -invariants. One viable take on this is that if you don't know where an -exception came from, you shouldn't be catching it. - -A big advantage of letting access violations and it's ilk (or any other -unplanned exception) through is that these will then get caught by the JIT (Just -In Time) handlers such as Dr. Watson and Compiler environments that allow -immediate or post-mortem debugging of the problem. A lot of projects (like -Mozilla) have their own bug-reporting which can intercept the bugs at the top -level and generate their own crash dumps, and catching these exceptions is -actually going to bypass a very useful mechanism. - -All this is to say that we have made a shift away from exception handling -policies that cause system expeptions to be caught, however in order to -allow as much flexibility as possible, an improved exception handling mechanism -has been added to the interface implementations and to the server implementation -that uses catch and rethrow to allow logging and custom handling of all exceptions. - -The default action of the mechanisms will be to finally rethrow unknown -exceptions. The good thing about this is that the rethrow behaves to a JIT handler -as if the expeption had never been caught. - -*/ - -/** \page cometautoexp Comet AutoExp.Dat Support -There is a largely undocumented feature is Visual Studio 6 and 7 that allows -you to create a dll 'ADDIN' that provides custom formatting for variables in the -debugger. CometAutoExp.dll allows you to view simple automation types in more -detail than currently provided internally by the debugger. - -By enabling this, you will get to see real date/times when you view datetime_t, you -get to see SAFEARRAY types (including IIDs), and possibly their contents, you -will see full VARIANT types, including SAFEARRAYs. - -The file in comet/src/cometautoexp/AutoExp.dat shows the entries that will -be needed to included in your own AutoExp.dat for this to work. (Usually -found at "c:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\AUTOEXP.DAT") - -See \ref cometautoexpusage for more information on how to use this. - */ - -/** \page cometdefineconfiguration Comet Configuation - While Comet barely uses macros for the import work of creating a COM library, - there are a number of preprocessor switches that are used to alter certain - behaviours and select code. While most of these refer to the compiler being used, - there are a few that are intended to be used as external switches. - -
  • COMET_ALLOW_DECLSPEC_PROPERTY : Wrapper headers include declspec - properties, allowing interface properties to be assigned-to and read as - properties.
  • COMET_ASSERT_THROWS : Comet throws - comet::assert_failed when internal assertions fail in debug builds.
  • -
  • COMET_ASSERT_THROWS_ALWAYS : Comet throws comet::assert_failed when - internal assertions fail in both debug and release builds.
  • -
  • COMET_LOGFILE : See \ref cometcalllogging.
  • -
  • COMET_LOGFILE_DEFAULT : See \ref cometcalllogging.
  • -
  • COMET_NO_MBCS : Disable comet multi-byte-character-set conversion handling.
  • -
  • COMET_NO_MBCS_WARNING : Turn off the warning indicating that sdt::string is not compatible with MBCS.
  • -
  • COMET_USE_RAW_WRAPPERS : Tells com_ptr not to use the comet wrappers but to return raw interface pointers.
  • -
- - There are also a number of macros that are either utitlity macros, reflect compiler differences - or Comet version differences that may be convenient to use within your own code. - -
    -
  • COMET_ASSERT(expression) : Run-time assert.
  • -
  • COMET_STATIC_ASSERT(static-expression) : Compile-time assert.
  • -
  • COMET_NOTUSED(info) : Specify unused argument.
  • -
  • COMET_FORCEINLINE : Use before a method to apply force-inline if available.
  • -
  • COMET_VARIANT_TRUE,COMET_VARIANT_FALSE : Use in place of VARIANT_TRUE,VARIANT_FALSE to avoid type warnings.
  • -
  • COMET_MAJOR_VER : Major comet version
  • -
  • COMET_MINOR_VER : Minor comet version
  • -
  • COMET_BUILD : Comet version to compare against (yyyymmdd of distribution)
  • -
  • COMET_STRICT_TYPENAME : Used for when stricter compilers require 'typename' keyword and VC6 has an error.
  • -
  • COMET_CONST_TYPE(vartype, varname, value) : Define a typed constant for a class/struct (or use enum if not supported)
  • -
- - */ - -/** \page comethistory Comet History -\par Version 1 gamma 32 ( ) -\li Support for VC++2005 (Sofus Mortensen) -\li Numerous bug fixes and better support for Intel C++ (Richard Crossley) -\li Fixed off-by-one bug regarding array sizes (Yunusov Bulat) - -\par Version 1 beta 31 ( ) -\li safearray.h - Fix a few omissions/bugs (Lijun Qin) -\li comet_lint.lnt - Add pclint options file. (Michael Geddes) -\li server.h - Fix singlton_autorelease class (Ralf Jürgensen) -\li datetime.h - Fix bug in century non-leap-years. (Michael Geddes) -\li datetime.h - Use julian date conversions from boost - to drastically improve split/join efficiency (Michael Geddes) -\li datetime.h - Make invalid() rather than valid() the default (Michael Geddes) -\li date.h - Make use of above improvements in datetime_t (Michael Geddes) -\li datetime.h/date.h - Add ability to construct/assign invalid/null dates from dt_null, dt_invalid (Michael Geddes) -\li datetime.h - Fixed bug in to_unixtime (Lijun Qin) -\li array.h - Fixed typename problem (Sofus Mortensen) -\li safearray.h - Fixed problem with sa_debug_iterator and MSVC 7.1 (Sofus Mortensen) -\li uuid_fwd.h - Fixed bug in !operator (Sofus Mortensen) - -\par Version 1 beta 30 (2004-3-5) -\li Support for VC7.1 partial specialisation. (Lijun Qin) -\li datetime.h - Bugfix in datetime_t conversion (Gordon Donaldson) -\li safearray.h - Separate safearray_t::resize into resize and resize_bound to avoid ambiguous conversions. (Michael Geddes) -\li safearray.h - Fix bug in safearray_t:resize_bound using an incorrect copy. (Michael Geddes) -\li safearray.h - Add safearray_t debug iterator for debug builds. (Michael Geddes) -\li safearray.h - Add more comments for safearray_t (Michael Geddes) -\li safearray.h - Support more container-type methods (erase,push_front,push_back,pop_front,pop_back) (Michael Geddes) -\li server.h - Add auto-release singleton (Michael Geddes) -\li uuid.h - uuid_t::operator! no longer reversed (Lijun Qin) -\li uuid.h - fix ambiguous ++ operator usage. (Lijun Qin, Bulat Raditch, Michael Geddes) -\li handle.h - Extension of handles for GDI objects for cometw (Michael Geddes/Vladimir Voinkov/Lindgren Mikael) -\li bstr.h - Throw comparison errors if they occur. (Michael Geddes) -\li cp.h - add 'is_connected' method to connection points. (Lijun Qin) -\li common.h - Support for pclint (Michael Geddes, Gabriel Barta) -\li datetime.h - Support for timezones (Michael Geddes) -\li datetime.h - Fix up buffer handling (Michael Geddes, Lijun Qin) -\li variant.h - Support for strings with embedded nulls (Michael Geddes) -\li tlb2h - Support for bool in structs and in safearrays (Michael Geddes) -\li tlb2h - Support for wrapper renaming of specific methods on specific interfaces/struct/unions. (Michael Geddes) -\li tlb2h - Dual interfaces inherited from an interface in a different type-library now works when called by dispatch (Michael Geddes) -\li tlb2h - Output of HTML now better restricted to only required interfaces. (Michael Geddes) -\li tlb2h - Obey COM rules that require [out] pointers to be initialised on failure (Michael Geddes) -\li tlb2h - Support implementation of an interface that inherits from an interface from a different typelibrary (Michael Geddes) -\li cometautoexp - Support for more types, and better handling of strings. (std::basic_string, COLEDateTime) (Michael Geddes) -\li date.h - Added dateonly_t class. (Michael Geddes) -\li uuid.h - Make the strings accessors consistant (Michael Geddes, Lijun Qin) - -\par Version 1 beta 29 (2003-12-30) -\li Added loads of documentation, reduced doxygen warnings to 1(Michael Geddes) -\li Added CometAutoExp.dll extended support for AutoExp.dat -\li Remove unnecessary catch(...) - use specific catches (Michael Geddes) -\li Support create_const_reference in all wrapper classes. (Michael Geddes) -\li tlb2h - Enhance support for error information (interface/coclass name) (Michael Geddes) -\li tlb2h - Add support for logging calls & exceptions. (Michael Geddes) -\li tlb2h - Support for special characters in help strings. (Michael Geddes) -\li tlb2h - Few tweaks to get correct output. (Michael Geddes) -\li tlb2h - Option to show version (Michael Geddes) -\li bstr.h - Work with _STLP_DEBUG wrappers (Michael Geddes) -\li bstr.h - Constructor works with MBCS (Michael Geddes) -\li bstr.h - Support for {} round uuid_t (Michael Geddes) -\li cp.h - Add convenience methods. (Michael Geddes) -\li datetime.h - Constructor to supply date and time (Michael Geddes) -\li datetime.h - Support output streams. (Michael Geddes) -\li error.h - Support for source, iid and helpfile in errors. (Michael Geddes) -\li interface.h - Provide extra comtype definitions. (Michael Geddes) -\li interface.h - Provide convenience macro to define extra comtype with IID_ instances. (Michael Geddes) -\li ptr.h - Add identity_ptr class that references an identity IUnknown. All other comparisons QI on both pointers. (Michael Geddes) -\li server.h - Add support for singelton classes. (Michael Geddes) -\li tlbinfo.h - Fix up reference counting on struct wrappers. (Michael Geddes) -\li tlbinfo.h - Support ITypeInfo2 (Michael Geddes) -\li variant.h - Added explicit converts (as_uchar(), as_uint(), as_double() etc) (Michael Geddes) -\li variant.h - Added is_empty(), is_null() and is_nothing() (Michael Geddes) - -\par Version 1 beta 28 (2003-6-18) -\li Support for Visual Studio 2003 - -\par Version 1 beta 27 (2003-3-5) -\li tlb2h - bug fix variant_t members of dispinterfaces (Michael Geddes) -\li tlb2h - support for safearrays of interfaces (Michael Geddes) - -\par Version 1 beta 26 (2003-2-1) -\li tlb2h - major update. See http://groups.yahoo.com/group/tlb2h/message/706 (Michael Geddes) -\li Enum.h - allow copy policies with members (Michael Geddes) -\li datetime.h - fixed bug in timeperiod_t::split (Michael Geddes) - -\par Version 1 beta 25 (2002-11-28) -\li Connection point implementation is now customisable via traits. See http://groups.yahoo.com/group/tlb2h/message/688 (Michael Geddes) -\li Fixed bug in str_formattime in datetime.h (Sofus Mortensen). -\li Fixed bug in add_months in datetime.h (Michael Geddes). - -\par Version 1 beta 24 (2002-11-13) -\li Major update of tlb2h. See http://groups.yahoo.com/group/tlb2h/message/659 and http://groups.yahoo.com/group/tlb2h/message/661. (Michael Geddes) -\li Fixed problem with variant_t::operator==. (Kyle Alons) -\li Fixed bug in bstr_t::s_str(), bstr_t::is_empty(), bstr_t::length() (Mikael Lindgren, Michael Geddes) -\li safearray_t: 1. Changed the constructor that takes two iterators to not have a default lowerbound (to be consistant with the other constructor) -2. Changed resize to allow specifying a lower-bound. -3. Changed the default lb to be 0 in the case where none is specified and where the safearray is NULL. (Michael Geddes) - -\par Version 1 beta 23 (2002-9-1) -\li Bug fixes to namespace handling. (Michael Geddes) -\li Added friendly error message for missing tlbinf32.dll. (Sofus Mortensen) -\li Worked around MSVC6 internal compiler error when contructing an enum. (Michael Geddes) -\li Bug fixes to currency.h (Michael Geddes) -\li Bug fixes to datetime.h (Michael Geddes) - -\par Version 1 beta 22 (2002-8-19) -\li Update of tlb2h - better handling of namespace mangling, and support for -unwrapping the type of aliases without unwrapping the name of the aliases (Michael Geddes). -\li Fixed bug in uuid_fwd. (John Harrison) -\li Added oleidl_comtypes.h. (Gabriel Barta) -\li Restored old functionality of try_cast - will no longer throw when casting a null pointer. (Sofus Mortensen) -\li New auto-locking implementation of safearray_t::create_reference and safearray_t::create_const_reference. (Michael Geddes, Sofus Mortensen) -\li Included first drop (pre-alpha version) of cometw. (Vladimir Voinkov) - -\par Version 1 beta 21 (2002-6-21) -\li Fixed null pointer bug in com_error::what(). (Kyle Alons) -\li Fixed bug to do with the unloading of typelibraries when refcount reaches zero. (Michael Geddes) -\li Added support for MBCS to std::string and const char* conversions for bstr_t. Only active when _MBCS is defined. (Michael Geddes) -\li Fixed locking/unlocking bug. (Vladimir Voinkov, Sofus Mortensen) -\li Fixed bug in safearray_t::create_reference(variant_t&). (Michael Geddes) -\li Various fixes to datetime and currency. (Michael Geddes) -\li Added constants COMET_VARIANT_TRUE and COMET_VARIANT_FALSE in order to avoid warnings. (Michael Geddes, Sofus Mortensen) -\li registry::value has been extended with overload for method str and dword, where a default value can be supplied if the key/value does not exist. (Sofus Mortensen) -\li Various patches for BCC. (Michael Geddes) -\li Solved problem with vtables gaps when inheriting from those interfaces. (Michael Geddes) -\li Removed a few level 4 warnings. (Michael Geddes) -\li Added experimental HTML generation to tlb2h. (Sofus Mortensen) - -\par Version 1 beta 20 (2002-4-9) -\li tlb2h will fall back to using raw structs for structs with types that cannot be wrapped. (Sofus Mortensen) -\li Added application wizard for MSVC.NET. See tlb2h/src/Comet. (Sofus Mortensen) -\li Eliminated a few warnings. (Sofus Mortensen) - -\par Version 1 beta 19 (2002-3-26) -\li Added caching of IRecordInfo to sa_traits for wrapped structs and ITypeInfo to IDispatch implementations. (Sofus Mortensen) -\li Fixed problem with safearray_t iterators on MSVC7. (Sofus Mortensen) -\li Fixed bug regarding range checking for safearray_t::at being off by one. (Sofus Mortensen) -\li Added range checking assertion (debug only) to safearray_t::operator[]. (Sofus Mortensen) -\li Changed safearray_t constructor, so that lower bound of one is no longer assumed. Instead lower bound must be specified. (Sofus Mortensen) - -\par Version 1 beta 18 (2002-3-25) -\li Major revision of bstr_t. (Sofus Mortensen) -\li Added experimental support for wrapped structs to tlb2h and safearray. (Sofus Mortensen) -\li Fixed problem with having a coclass as a connection point sink. (Sofus Mortensen) -\li Revised treatment of [in, out] parameters in tlb2h. The old implementation could cause double deletion of [in. out] parameters when an exception was thrown. (Sofus Mortensen) -\li Revised all wrapper classes, in order for create_reference to create a mutable reference and create_const_reference an immutable reference. (Sofus Mortensen) -\li Revised locking in safearray_t. safearray_t::create_reference and safearray_t::create_const_reference is no longer doing automatic locking. (Sofus Mortensen) -\li tlb2h now generates #import alike smart pointer typedef. Ie. interface IFoo will be matched with a typedef com_ptr IFooPtr. (Sofus Mortensen) -\li Added support for datetime_t and currency_t to safearray_t. (Sofus Mortensen) -\li Added t_str() to bstr_t for converting to tstring. (Sofus Mortensen) - -\par Version 1 beta 17 (2002-2-18) -\li Fixed bug in atl_module. (Michael Geddes) -\li Documentation update for bstr.h. (Michael Geddes) -\li bstr_t now supports strings with embedded nulls. Thanks to Eric Friedman for reporting this. (Sofus Mortensen) -\li Removed use of _alloca in bstr.h. (Sofus Mortensen) - -\par Version 1 beta 16 (2002-2-12) -\li Fixed bug in functors bstr::less, bstr::less_equal, bstr::greater, bstr::greater_equal, bstr::equal_to and bstr::not_equal_to. (Michael Geddes) -\li tlb2h: switched ResolveAliases off per request from Michael Geddes. -\li tlb2h: Removed dummy wrapper methods (see http://groups.yahoo.com/group/tlb2h/message/476). (Sofus Mortensen) - -\par Version 1 beta 15 (2002-2-1) -\li Added lw_lock class based on Brad Wilson's LightweightLock (see http://www.quality.nu/dotnetguy/archive/fog0000000007.aspx). Many thanks to Brad for making LightweightLock open source. (Sofus Mortensen) -\li Comet now works with MSVC7. (Sofus Mortensen) -\li Removed functor.h. (Sofus Mortensen) -\li Fixed serious bug in bstr_base - causing memory corruption when concat'ing bstr's. (Michael Geddes) -\li Fixed obvious typo in locking_ptr. (Vladimir Voinkov) -\li Removed unnecessary include dependency from scope_guard.h. (Vladimir Voinkov) -\li Fixed compatibility problem with STLport for bstr comparison functors. (Michael Geddes) -\li Removed level 4 warnings from currency.h. (Michael Geddes). -\li Fixed problem with the -c option in tlb2h. (Michael Geddes). -\li Fixed bug in ATL_module.h. (Michael Geddes) -\li impl_dispatch is now lazy loading TypeInfo. Better performance for dual interfaces where client is not using IDispatch. (Sofus Mortensen) -\li Fixed various bugs in tlb2h. (Sofus Mortensen) - -\par Version 1 beta 14 (2002-1-17) - -\li Fixed problem with dispinterfaces and [in, out] enum parameters. (Sofus Mortensen) -\li Added simple system to prevent compiling out-of-date tlb2h generated headers. (Sofus Mortensen) -\li Fixed bug in impl_dispatch. (Michael Geddes, Sofus Mortensen) - -\par Version 1 beta 13 take 4 (2002-1-11) - -\li Fixed problem with dispinterfaces and enum parameters reported by Kyle Alons. (Sofus Mortensen) -\li Fixed serious bug in iterators for safearray_t reported by Steve Broeffle. The bug was caused by a MSVC compiler bug. (Sofus Mortensen) -\li Fixed bug operator in operator[] in iterators for safearray_t. (Sofus Mortensen) - -\par Version 1 beta 13 take 3 (2002-1-9) - -\li Fixed bug in uuid_t introduced in beta 13 take 2. (Sofus Mortensen) - -\par Version 1 beta 13 take 2 (2002-1-7) - -\li Beta 13 couldn't compile with _UNICODE defined. Fixed now. (Sofus Mortensen) - -\par Version 1 beta 13 (2002-1-7) - -\li Added basic support for writing exe servers in Comet. (Mikael Lindgren, Sofus Mortensen) -\li Added simple command line parser class to new header comet/cmd_line_parser.h (Mikael Lindgren) -\li Added new header comet/tstring.h. Defines tstring, tistream, tostream, etc, etc. (Sofus Mortensen) -\li Fixed various bugs in uuid_t. (Sofus Mortensen) - -\par Version 1 beta 12 (2001-12-20) - -\li Revision of embedded_object. embedded_object now takes parent type as first argument, arguments 2, 3, 4, .. denotes interfaces to implement. - embedded_object_1 has been removed. embedded_object2 has been added, extends embedded_object with functionality to - disconnect a child object from its parent. (Sofus Mortensen with help from Kyle Alons). -\li Added new file dispatch.h with specialisation of wrap_t with similar (but superior) functionality as CComDispatchDriver. -\li Added new class dynamic_dispatch to dispatch.h. Use dynamic_dispatch to dynamically implement IDispatch - adding methods and properties at runtime. (Sofus Mortensen) -\li Changed interface of sink_impl so that unadvise no longer takes an argument. Additionally the destructor will unadvise if necessary. (Sofus Mortensen) -\li Added new file uuid.h with GUID/UUID/CLSID wrapper called uuid_t. (Sofus Mortensen) -\li Changed tlb2h to support new wrapper uuid_t. (Sofus Mortensen) -\li Fixed potential thread safety problem regarding class factories. (Sofus Mortensen, Paul Hollingsworth) - -\par Version 1 beta 11 (2001-11-16) - -\li Major fix to tlb2h. tlb2h now supports properties in dispinterfaces. (Sofus Mortensen) -\li Module constants are now static. (Sofus Mortensen) -\li tlb2h now skips non-COM interfaces that do not derive (directly or transitively) from IUnknown. (Sofus Mortensen) -\li Fixed problem with error messages ending up as garbage in tlb2h. (Kyle Alons) -\li Various fixes regarding safearray_t. (Michael Geddes and Sofus Mortensen) -\li Various other minor fixes. (Sofus Mortensen) - -\par Version 1 beta 10 (2001-10-17) - -\li class coclass changed so that the 3, 4, ... template parameters specifify additional interfaces to implement. - Example: - \code - template<> coclass_implementation : public coclass - \endcode - (Sofus Mortensen) -\li Aggregating another component is now done by adding class aggregates to the type list of interfaces. First template argument of class aggregates is the coclass - to aggregating. The 2, 4, ... template arguments specify which interfaces to aggregate. If no interfaces have been specified, all interfaces will be aggregated. - Example: - \code - template<> coclass_implementation : public coclass > - \endcode - (Sofus Mortensen) -\li Added cmp method to bstr_base which a.o.t. can be configured for case insensitive comparision. (Michael Geddes) -\li Added comparison functors based on cmp to bstr_base, less, less_equal, equal_to, etc. Example of usage: - \code - std::set > mySet; - \endcode - (Sofus Mortensen) -\li Fixed bugs in assignment operators for datetime_t. (Sofus Mortensen, Mikael Lindgren) -\li In ptr.h changed COMET_ALLOW_DECLSPEC_PROPERTY to COMET_USE_RAW_WRAPPERS. (Michael Geddes) -\li In common.h added workaround for VARIANT_TRUE resulting in a level 4 warning. (Michael Geddes) -\li Changed server.h, so that a compiler error will occur if there are unimplemented coclasses. In case you deliberately want - unimplemented coclass define COMET_ALLOW_UNIMPLEMENTED_COCLASSES in std.h. (Sofus Mortensen) -\li Added various helper functions to util.h. (Sofus Mortensen) -\li Added support for aggregating the free threaded marshaler. Example: - \code - template<> coclass_implementation : public coclass - \endcode - (Sofus Mortensen) -\li Various bug fixes and changes. (Sofus Mortensen) - -\par Version 1 beta 9 (2001-9-23) - -\li Now wrapper properties and methods are only available through com_ptr::operator->. (Sofus Mortensen) -\li Added ostream<> outputting facility to both variant_t and bstr_t. (Sofus Mortensen) -\li Added std::string conversions to variant_t. (Sofus Mortensen) -\li Fixed various bugs in tlb2h regarding dispinterfaces. (Sofus Mortensen). -\li Fixed bug in com_ptr - try_cast'ing from variant_t to com_ptr did not throw an exception on error. (Sofus Mortensen) -\li Made com_ptr constructor from variant_t and assignment from variant_t private in com_ptr to prevent misuse. Use com_cast or try_cast. (Sofus Mortensen) - -\par Version 1 beta 8 (2001-9-19) - -\li Fixed bugs in tlb2h regarding datetime_t. (Sofus Mortensen) -\li Wrapper properties are now only available when accessing an interface through com_ptr::operator->. (Sofus Mortensen) -\li Classes currency_t and datetime_t are now exception safe. (Sofus Mortensen) -\li Added conversions for variant_t from/to currency_t and datetime_t. (Sofus Mortensen) -\li Added conversions for std::wstring to variant_t, solving various ambiguity problems. (Sofus Mortensen) -\li Re-arranged various header files, solving include problems. (Sofus Mortensen) - -\par Version 1 beta 7 (2001-9-7) - -\li Added support for locking to safearray_t. (Michael Geddes) -\li Improved support in tlb2h for methods taking arrays as argument. (Sofus Mortensen) -\li Fixed bug in tlb2h regarding methods that were the parameters were wrongly given a default value. (Sofus Mortensen) -\li Fixed bug in tlb2h regarding type "void *". (Sofus Mortensen) -\li Fixed various bugs in datetime.h. (Michael Geddes) -\li Added COMET_ASSERT - a replacement for _ASSERTE. (Sofus Mortensen) - -\par Version 1 beta 6 take 2 (2001-8-20) - -\li Fixed dumb, dumb _ASSERTE bug in tlb2h (Sofus Mortensen). - -\par Version 1 beta 6 (2001-8-19) - -\li Changed distribution package - now including scripts for generating docs and the source for both tlb2h and the Comet App. wizard (Sofus Mortensen). -\li Wrapped string constant in server.h with _T( ) for UNICODE compatibility (Sofus Mortensen). -\li Tlb2h.exe now generates vtable fillers to cater for interfaces with gaps in the vtable. Such are typically produced by VB (Michael Geddes and Sofus Mortensen). -\li Bug fixes to date_t (Michael Geddes). -\li Elimination of compiler warnings in safearray_t and registry.h (Michael Geddes). - -\par Version 1 beta 5 (2001-8-14) - -\li tlb2h.exe now generates corrects defaults for [optional] VARIANT. variant_t has been updated in order to support this (Sofus Mortensen). -\li Fixed problem in tlb2h.exe with using COMET_ALLOW_DECLSPEC_PROPERTY when importing msado20.tlb (Sofus Mortensen). -\li Fixed problem in tlb2h.exe with aliases being treated as records (Michael Geddes). -\li Several bug fixes to nutshell generation (Michael Geddes). -\li Changed tlb2h, so that the generated headers only #include the headers needed (Michael Geddes). - -\par Version 1 beta 4 (2001-7-25) - -\li datetime_t has been updated and support for datetime_t has been added to tlb2h.exe (Michael Geddes). -\li typelist::index_of bug fix (Michael Geddes, Sofus Mortensen, thanks to Eric Friedman for reporting this). -\li typelist::type_at bug fix (Michael Geddes). -\li create_reference added to safearray_t (Michael Geddes). -\li Experimental attach_from / attach_to added to safearray_t (Michael Geddes). -\li Bug fix in variant.h (Sofus Mortensen). - -\par Version 1 beta 3 (2001-7-14) - -\li MSVC7 beta 2 compatibility fixes (Sofus Mortensen). -\li Various bug fixes in tlb2h (Sofus Mortensen). -\li Added wizard option to tlb2h for generating skeleton implementation of coclasses (Michael Geddes). -\li Various bug fixes to safearray.h (Michael Geddes). -\li variant_t now supports converion to/from saferray_t (Michael Geddes, Sofus Mortensen) -\li com_ptr can now be used to wrap a pointer to coclass_implementation (Michael Geddes). -\li enum.h and cp.h has been updated to support the changes to com_ptr (Michael Geddes). -\li Preliminary version of datetime_t has been added (Michael Geddes). - -\par Version 1 beta 2 (2001-7-04) - -\li Major documentation update (Michael Geddes). -\li Bug fix in tlb2h.cpp (Michael Geddes). -\li Replaced operator bool in com_ptr with a more bullet proof alternative (Sofus Mortensen). -\li Updated functor.h to make use of partial specialisation for compilers that support it (Michael Geddes). - -\par Version 1 beta 1 (2001-6-29) - -\li Added currency support to variant_t (Michael Geddes). -\li Documentation update for server.h (Michael Geddes). -\li Various bug fixes to do with agg-objects (Michael Geddes). -\li Added GetClassObject implementation to atl_module (Michael Geddes). - - -\par Version 1 alpha 10 (2001-6-26): - -\li CURRENCY wrapper updated by Michael Geddes. -\li tlb2h has been updated by Michael Geddes (again!). This time with options to specify which namespace to put wrappers in, and an options to emit symbols only for faster compilation. -\li atl_module.h documentation updated by Michael Geddes. - -\par Version 1 alpha 9 (2001-6-21): - -\li CURRENCY wrapper added by Michael Geddes. -\li Nutshell wrappers didn't work in alpha 8. Now fixed. -\li tlb2h has been updated by Michael Geddes for better command line handling. It now supports multiple files including wildcards, and support for specifying an output directory. -\li Server implementation updated by Michael Geddes to support loading type libraries that has not yet been registered. -\li try_cast no longer throws on null pointers, and comet::com_ptr::operator->() now throws on null pointers. (Michael Geddes) - -\par Version 1 alpha 8 (2001-6-10): - -\li Compatibility patches for GCC/MINGW submitted by Michael Geddes. -\li Updated com_error with methods for accessing wrapped HRESULT value and IErrorInfo (source, helpfile, etc). -\li Various minor bug fixes. - -\par Version 1 alpha 7 take 3 (2001-3-31): - -\li Added converters for CURRENCY to variant_t.. -\li Updated functor.h. - -\par Version 1 alpha 7 take 2 (2001-3-28): - -\li Fixed bug concerning using com_cast and try_cast with raw interface pointers. -\li Fixed bug in bstr.h -\li Fixed dependency on comet/stl.h in comet/enum.h - - -\par Version 1 alpha 7 take 1 (2001-3-26): - -\li Support for dispinterfaces has been added by Michael Geddes and Mikael Lindgren. -\li BCC compatibility patches contributed by Michael Geddes. -\li Support for multiple connection points added by Michael Geddes. -\li Added generalised functor library that works with MSVC (Not really COM related) -\li comet::make_list\<\> has changed behaviour. Instead of writing make_list\, you have to write \link comet::make_list make_list\::result \endlink. This has been done in order to shorten error messages relating typelists. -\li Added several helper classes to comet/typelist.h for manipulation of typelists. -\li Fixed various "ambiguous conversion" errors - - -\par Version 1 alpha 6 (2001-3-7): - -\li Fixed disastrous bug in comet::com_ptr. -\li Re-organisation of header files. -\li Support for Intel C++ 5.0 added. -\li Fixed bug in regkey. -\li Various bugs fixes. - - -\par Version 1 alpha 5 take 2 (2001-1-26): - -\li Fixed bug in ptr.h - - -\par Version 1 alpha 5 (2001-1-16): - -\li Support for implementing aggregateable components. (Michael Geddes) -\li comet::com_ptr is no longer using common base class. -\li Various bug fixes. - - -\par Version 1 alpha 4.2 (2000-12-17): - -\li Fixed bug in critical_section. - - -\par Version 1 alpha 4.1 (2000-12-14): - -\li Fixed bug in variant.h -\li Added support for DATE and CURRENCY to tlb2h. (We might need wrapper classes for those). -\li Fixed missing inline in common.h. - - -\par Version 1 alpha 4 (2000-12-12): - -\li Generated wrappers, interfaces, etc are now placed in namespace corresponding to typelibrary name by tlb2h. -\li Fixed bugs in variant.h -\li The generated wrappers are no longer using .get_raw() and .get_raw_ptr(). Instead the wrapper methods .in(), .in_ptr(), .inout() and .out() are being used. -\li Support for constants placed in type library modules. (See Joav Kohn's posting on ATL discuss). -\li Support for version numbering for ProgID's. (Thanks to Mikael Lindgren). -\li Updated the wizard. - - -\par Version 1 alpha 3 (2000-11-29): - -\li Added sanity checking to safearray_t to capture type mismatches. -\li Added in() method to all wrapper classes for use when calling raw interfaces. -\li The generated header files are now using a normal include guard instead of #pragma once. -\li Various minor fixes. - - -\par Version 1 alpha 2 (2000-11-20): - -\li Nutshell generation added to tlb2h.exe. -\li Added STL compatible SAFEARRAY wrapper called comet::safearray_t. -\li Updated registry class. -\li New BSTR wrapper, comet::bstr with optional reference counting. -\li comet::bstr_t is now a typedef of comet::bstr. -\li ATL support added. - - -\par Version 1 alpha 1 (2000-10-29): - -\li First alpha release of Comet. - - -\par Version 0.9.7 (2000-10-19): - -\li typedef bug fix in tlb2h.exe -\li Bug fixes in comet::variant_t - - -\par Version 0.9.6 (2000-10-19): - -\li Documentation updates. -\li Misc. bug fixes. - - -\par Version 0.9.5 (2000-10-5): - -\li Documentation updates. -\li Paul Hollingsworth has been busy minimising include dependencies in the header files. -\li Added [out] and [in, out] adapters for dealing with raw interfaces. - - -\par Version 0.9.4 (2000-10-4): - -\li Fixed more bugs in comet::com_ptr. -\li Added documentation on comet::com_ptr. - - -\par Version 0.9.3 (2000-9-26): - -\li Fixed various bugs in comet::com_ptr. - - -\par Version 0.9.2 (2000-9-25): - -\li Updated tlb2h to use const where appropiate. -\li Added support for unions. -\li Added support for one-dimensional arrays in structs. - - -\par Version 0.9.1 (2000-9-21): - -\li Experimental support in tlb2h.exe for optional method arguments (ie. attribue optional or defaultvalue). - - -\par Version 0.9.0 (2000-9-19): - -\li Paul Hollingsworth has contributed automatic implementation of IProvideClassInfo. -\li Better support for [in, out] parameters. -\li Fixed bugs in tlb2h's generation of connection point wrapper. -\li Removed progid from template parameters, instead override function get_progid(). -\li Added version metadata to coclass and typelibrary wrappers. -\li Fixed bug in variant_t::variant_t(const comet::bstr_t&). - - -\par Version 0.8.3 (2000-9-12): - -\li Removed DLL dependency for tlb2h.exe. - - -\par Version 0.8.2 (2000-9-7): - -\li com_error / raise_exception_t has been revised. -\li Fixed bug in com_ptr::operator=(int) -\li Rearranged header inclusion introducing error_fwd.h. -\li Added misc. utility classes not necessarily related to tlb2h to tlb2h/utility.h. -\li Updated tlb2h.exe with more types. - - -\par Version 0.8.1 (2000-9-3): - -\li Type conversions to/from bstr_t has been changed/tweaked. -\li bstr_t now supports concatenation through operator+ and operator+=. - - -\par Version 0.8.0 (2000-8-31): - -\li Fixed several bugs in tlb2h.exe. -\li Added misc. utility classes not necessarily related to tlb2h to tlb2h/utility.h. - - -\par Version 0.7.10 (2000-8-25): - -\li Updated AppWizard to generate uuid for type library. -\li Added trait class to com_server for servers with no embedded type library. - - -\par Version 0.7.9 (2000-8-21): - -\li bstr_t is now capable of converting to std::string as well. -\li Rearranged util.h into list.h, common.h and util.h. - - -\par Version 0.7.8 (2000-8-18): - -\li Added simple AppWizard for creating DLL projects. -\li Removed untie. Instead embedded_object now has a release_from_owner method. -\li structs defined in type libraries now automatically use CoTaskMem when using new/delete. - - -\par Version 0.7.7 (2000-8-15): - -\li Changes to lifetime of embedded_object. Introducing tlb2h::untie, breaks tie between owner and embedded_object, so that the embedded_object can be destroyed before the owner. - - -\par Version 0.7.6 (2000-8-15): - -\li Various changes to comet::bstr_t. - - -\par Version 0.7.5 (2000-8-13): - -\li Interface inheritance problems solved. -\li Problem with [in] VARIANT arguments solved. -\li create_enum now works with embedded_objects. -\li comet::make_list now handles up to 40 elements. -\li Problem with IUnknown interfaces in coclasses solved. -\li Workaround for bug in Visual Studio editor causing VS to crash when editing certain template code. - - -\par Version 0.7.4 (2000-8-8): - -\li Conversion from comet::com_ptr to comet::variant_t improved. -\li Updated example to demonstrate now working COM enumeration implementation on STL containers. - - -\par Version 0.7.3 (2000-8-8): - -\li Nasty connection point bug fixed. -\li Added trivial VB client example program demonstrating connection point. -\li Added com_cast and try_cast for casting interface pointers. Implicit casting no longer allowed. -\li comet::com_error::what() is now working. -\li Misc. minor bug fixes/tweaks. - - -\par Version 0.7.2 (2000-8-3): - -\li Updated the example with registration custom build. -\li Misc. bug fixes. - -*/ -//! Primary namespace for comet. Includes source and libraries. -namespace comet { -//! Namespace for comet implementation details. -/*! \internal - */ -namespace impl { -} -} -/** \defgroup Misc Miscelaneous utility classes. - *@{ - */ -//@} -/** \defgroup COMType Com type wrappers. - *@{ - */ -//@} -/*!\defgroup WinUtil Windows utility classes. - *@{ - */ -//@} - - -#endif diff --git a/EyeTab_SP2/comet/common.h b/EyeTab_SP2/comet/common.h deleted file mode 100644 index af06fd5..0000000 --- a/EyeTab_SP2/comet/common.h +++ /dev/null @@ -1,316 +0,0 @@ -/** \file - * Common utility classes wrappers. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_COMMON_H -#define COMET_COMMON_H - -#include -#include -#include - -namespace comet { - - class uuid_t; - templateclass com_ptr; - namespace impl { - template T* bad_alloc_check(T* x) - { - if (!x) throw std::bad_alloc(); - return x; - } - - /** Implementation struct for auto_attach. - * \internal - */ - template class auto_attach_t - { - public: - explicit auto_attach_t(const T& v) : val_(v) {}; - const T& get() const { return val_; } - private: - const T& val_; - auto_attach_t& operator=(const auto_attach_t&); - }; - - // Forward declare all these - only used if we actually WANT a - // safearray. - /** Safearray traits for the given type. - * \internal - */ - template struct sa_traits; - /** Safearray iterator for the given type. - * \internal - */ - template class sa_iterator; - /** Safearray const traits for the given type. - * \internal - */ - template struct const_traits; - /** Safearray non-const traits for the given type. - * \internal - */ - template struct nonconst_traits; - - enum sa_traits_check_type { stct_features_ok, stct_vt_ok, stct_iid_ok }; - enum sa_traits_extras_type { stet_null, stet_record, stet_iid }; - - // Interface traits are needed by all interfaces so that we can create - // safearrays of the types. - template - struct interface_sa_traits - { - enum { vt = VT }; - enum { check_type = stct_iid_ok }; - enum { extras_type = stet_iid }; - - typedef INTERFACE* raw; - typedef com_ptr value_type; - typedef com_ptr & reference; - typedef const com_ptr & const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast*>(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast*>(&x); } - typedef nonconst_traits > nct; - typedef sa_iterator, nct > iterator; - typedef sa_iterator, const_traits > > const_iterator; - - static bool are_features_ok(unsigned short f) { return (f & FEATURE_FLAG) != 0 && (f & FADF_HAVEIID) != 0; } - static const uuid_t& iid() { return uuidof(); } - }; - - /** Basic safearray traits - used by enums. - * \internal - */ - template struct basic_sa_traits - { - enum { vt = VT }; - enum { check_type = stct_vt_ok }; - enum { extras_type = stet_null }; - - typedef T raw; - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - - static reference create_reference(T& x) { return x; } - static const_reference create_const_reference(T& x) { return x; } - - typedef T* iterator; - typedef const T* const_iterator; - - static bool are_features_ok(unsigned short) { return true; } - }; - } - - /*! \addtogroup COMType - */ - //@{ - /// Used to attach a raw parameter to a wrapper. - template impl::auto_attach_t auto_attach(const T& t) { return impl::auto_attach_t(t); } - - -// template inline T up_cast(const U& u, T* = 0) { return u; } - - - /*! VARIANT_BOOL to bool [in] converter. - * This is used by the generated wrappers. - */ - inline VARIANT_BOOL bool_in(bool x) { return x ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; } - - /** \class bool_out common.h comet/common.h - * VARIANT_BOOL to bool [out] converter. - * This is used by the generated wrappers. - */ - class bool_out { - public: - operator VARIANT_BOOL*() { return &vb_; } - bool_out(bool& b) : b_(b) {} - ~bool_out() { b_ = vb_ ? true : false; } - private: - bool_out &operator=( const bool_out &); - VARIANT_BOOL vb_; - bool& b_; - }; - - namespace impl { - class bool_adapter_t { - public: - bool_adapter_t(VARIANT_BOOL* p) : pb_(p) { b_ = *pb_ ? true : false; } - ~bool_adapter_t() { *pb_ = b_ ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; } - - bool& ref() { return b_; } - private: - bool_adapter_t(const bool_adapter_t&); - bool_adapter_t& operator=(const bool_adapter_t&); - - VARIANT_BOOL* pb_; - bool b_; - }; - } - - /** \class bool_inout common.h comet/common.h - * VARIANT_BOOL to bool [in,out] converter. - * This is used by the generated wrappers. - */ - class bool_inout { - public: - operator VARIANT_BOOL*() { return &vb_; } - bool_inout(bool& b) : b_(b), vb_(b ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE) {} - ~bool_inout() { b_ = vb_ ? true : false; } - private: - bool_inout &operator=(const bool_inout &); - VARIANT_BOOL vb_; - bool& b_; - }; - - /** \class variant_bool_t common.h comet/common.h - * VARIANT_BOOL wrapper for structs. - * Stands in place of a VARIANT_BOOL in a struct, and behaves like a bool. - * This is imporant as sizeof(VARIANT_BOOL) != sizeof(bool). - */ - class variant_bool_t - { - VARIANT_BOOL vb_; - public: - /// \name Constructors. - //@{ - variant_bool_t(): vb_(COMET_VARIANT_FALSE) {} - variant_bool_t(const impl::auto_attach_t &b) : vb_(b.get()) {} - variant_bool_t(bool b) : vb_(b?COMET_VARIANT_TRUE:COMET_VARIANT_FALSE) {} - //@} - - /// \name Assignment operators. - //@{ - variant_bool_t &operator=( bool b) { vb_ = b?COMET_VARIANT_TRUE:COMET_VARIANT_FALSE; return *this;} - variant_bool_t &operator=( const impl::auto_attach_t &b) { vb_ = b.get(); return *this; } - //@} - - /// \name Boolean operators. - //@{ - operator bool() const{ return vb_!= COMET_VARIANT_FALSE; } - bool operator !() const { return vb_== COMET_VARIANT_FALSE; } - bool operator==( variant_bool_t vb) const { return vb.vb_ == vb_; } - bool operator!=( variant_bool_t vb) const { return vb.vb_ != vb_; } - //@} - - /// \name Bitwise operators - //@{ - variant_bool_t operator~() const { variant_bool_t temp(*this); temp.vb_ = (VARIANT_BOOL)~(temp.vb_); return temp; } - variant_bool_t &operator&=( const variant_bool_t &b) { vb_ &= b.vb_; return *this; } - variant_bool_t &operator|=( const variant_bool_t &b) { vb_ |= b.vb_; return *this; } - variant_bool_t &operator^=( const variant_bool_t &b) { vb_ ^= b.vb_; return *this; } - variant_bool_t operator&( const variant_bool_t &b)const { variant_bool_t temp(*this); temp.vb_ &= b.vb_; return temp; } - variant_bool_t operator|( const variant_bool_t &b)const { variant_bool_t temp(*this); temp.vb_ |= b.vb_; return temp; } - variant_bool_t operator^( const variant_bool_t &b)const { variant_bool_t temp(*this); temp.vb_ ^= b.vb_; return temp; } - //@} - /// \name bool operators - //@{ - bool operator&( bool b)const { return b & operator bool(); } - bool operator|( bool b)const { return b | operator bool(); } - bool operator^( bool b)const { return b ^ operator bool(); } - //@} - - static const variant_bool_t &create_const_reference(const VARIANT_BOOL &vb) { return reinterpret_cast(vb); } - static variant_bool_t &create_reference(VARIANT_BOOL &vb) { return reinterpret_cast(vb); } - - ///\name Raw accessors - //@{ - VARIANT_BOOL in() { return vb_; } - VARIANT_BOOL *out() { return &vb_; } - VARIANT_BOOL *inout() { return &vb_; } - //@} - - - /** Allow treating of class as a bool *. - * \sa bool_ptr() - */ - class bool_pointer_t - { - friend class variant_bool_t; - protected: - bool_pointer_t( VARIANT_BOOL &vb) : vb_(vb), b_( vb != COMET_VARIANT_FALSE) {} - public: - ~bool_pointer_t() { vb_ = b_ ? COMET_VARIANT_TRUE: COMET_VARIANT_FALSE; } - operator bool*(){ return &b_; } - operator const bool*()const{ return &b_; } - private: - bool_pointer_t &operator=(const bool_pointer_t &); - bool b_; - VARIANT_BOOL &vb_; - }; - /** Return a class that stands in for a bool *. - Should be used in place of operator & for passing in to a bool * function. - \code - variant_bool_t vb; - SomeFunc(vb.bool_ptr()); - \endcode - */ - bool_pointer_t bool_ptr() - { - return bool_pointer_t(vb_); - } - const bool_pointer_t bool_ptr() const - { - return bool_pointer_t(const_cast(vb_)); - } - - friend class bool_reference_t; - /** Allow efficient choosing between a bool& and a variant_bool&. - */ - class bool_reference_chooser_t - { - friend class variant_bool_t; - variant_bool_t &vbt_; - protected: - bool_reference_chooser_t(variant_bool_t &vbt):vbt_(vbt) {} - private: - bool_reference_chooser_t &operator=(const bool_reference_chooser_t &); - public: - inline operator variant_bool_t&() { return vbt_;} - inline operator const variant_bool_t&()const { return vbt_;} - }; - /** Allow treating of a class as a bool &. - * \sa bool_ref() - */ - class bool_reference_t : protected bool_pointer_t - { - public: - bool_reference_t( bool_reference_chooser_t &brc ) - : bool_pointer_t(*static_cast(brc).inout()) - {} - operator bool &(){ return tmp; /*return * (bool_pointer_t::operator bool*());*/ } - operator const bool &()const { return *(bool_pointer_t::operator const bool*()); } - bool tmp; - }; - - /** Return a class that stands in for a bool & or a variant_bool_t &. - */ - bool_reference_chooser_t bool_ref() - { - return bool_reference_chooser_t(*this); - } - const bool_reference_chooser_t bool_ref() const - { - return bool_reference_chooser_t(const_cast(*this)); - } - }; - //@} - -} // namespace - -#endif diff --git a/EyeTab_SP2/comet/config.h b/EyeTab_SP2/comet/config.h deleted file mode 100644 index 58b9dd3..0000000 --- a/EyeTab_SP2/comet/config.h +++ /dev/null @@ -1,243 +0,0 @@ -/** \file - * Included by all comet headers to provide compiler-specific - * configuration. - */ -/* - * Copyright © 2000-2002 Sofus Mortensen - * Copyright (C) 2013 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_CONFIG_H -#define COMET_CONFIG_H - -#define COMET_MAJOR_VER 2 -#define COMET_BUILDTYPE gamma -#define COMET_MINOR_VER 1 -#define COMET_BUILD 20131017 - -#ifndef COMET_BUILD_VERSION_ONLY - -#ifndef COMET_NO_DECLSPEC_PROPERTY -#define COMET_ALLOW_DECLSPEC_PROPERTY -#endif // COMET_NO_DECLSPEC_PROPERTY - -#pragma warning(disable : 4786) -#pragma warning(disable : 4042) -#pragma warning(disable : 4290) -#pragma warning(disable : 4710) - -#ifdef _lint // PC/Lint has a few problems with comet. -# if !defined(_MSC_VER) || _MSC_VER >= 1300 -#define COMET_PARTIAL_SPECIALISATION -#else - -#endif -#define COMET_NESTED_TEMPLATES -#define COMET_GOOD_RECURSIVE_STRUCT -#define COMET_CONST_MEMBER_INIT -#define COMET_GUID_BASE GUID -#define COMET_STD_ITERATOR -#define COMET_NO_POINTER_CHECKING -#define COMET_STD_SWAP_NOTHROW throw() -#define COMET_TL_TRUNC -#else -//VC 7.1 support partial specialization -#ifdef _MSC_VER -#endif - -#ifdef __ICL -# define COMET_PARTIAL_SPECIALISATION -# define COMET_NESTED_TEMPLATES -#else -# ifdef _MSC_VER -# if _MSC_VER < 1300 -// Versions less than VC7 can't handle the rethrow & catch exception trick. -# define COMET_DISABLE_EXCEPTION_RETHROW_CATCH -# else // _MSC_VER >= 1300 -# define COMET_GOOD_RECURSIVE_STRUCT -# define COMET_CONST_MEMBER_INIT -# if _MSC_VER >= 1310 -# define COMET_PARTIAL_SPECIALISATION -# define COMET_NESTED_TEMPLATES -# endif -# endif - -# endif -#if defined(_UNICODE) && !defined(UNICODE) - #define UNICODE -#endif -#endif - -#ifdef __BORLANDC__ -#pragma warning(disable: 8027) -#pragma warning(disable: 8026) -#define COMET_PARTIAL_SPECIALISATION -#define COMET_NESTED_TEMPLATES -#define COMET_BROKEN_WTYPES -#define COMET_STD_ITERATOR -#define COMET_STD_SWAP_NOTHROW - -#define COMET_GUID_BASE _GUID -#else -#define COMET_STD_SWAP_NOTHROW throw() -#define COMET_GUID_BASE GUID -#endif - -#ifdef __CYGWIN__ -#define COMET_PARTIAL_SPECIALISATION -#define COMET_NESTED_TEMPLATES -#define COMET_GCC_HEADERS -#define COMET_STD_ITERATOR -#define COMET_TL_TRUNC -#define _T(x) x - -// This is not a good idea -// Routines that use _alloca has to be rewritten for __MINGW32__ targets. -// #define _alloca malloc - -// WIN32 defines for GCC -#define NONAMELESSUNION -#define NOCOMATTRIBUTE -#endif -#endif - - -// Use COMET_STRICT_TYPENAME only where MSVC barfs on stricter typename usage -// required by GCC. -#ifdef _MSC_VER -#if _MSC_VER <= 1300 -#define COMET_STRICT_TYPENAME -#else -#define COMET_STRICT_TYPENAME typename -#endif -#else -#define COMET_STRICT_TYPENAME typename -#endif - -// PRH Feb 26 2001 -// Try and determine which version of std::iterator we have. -// The ANSI/ISO compliant one seems to require a compiler -// that supports partial specialisation, as well as an -// ANSI/ISO compliant implementation of the library. - -// Unfortunately, there is no __ANSI_STL #define. -// So we guess: -// If we have partial specialisation, and we're using STLPort, then -// its the ANSI/ISO std::iterator, otherwise it is the MSVC 6.0 -// iterator. - -// If you're using some other decent STL other than STLPort, -// then you'll need to reflect this by ensuring that COMET_STD_ITERATOR -// is defined. - -#if _MSC_VER >= 1300 || defined(_CPPLIB_VER) -#define COMET_STD_ITERATOR -#else -#include -#ifdef COMET_PARTIAL_SPECIALISATION -// this code to "detect" STLport is stolen from -//#if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES) -#ifdef __SGI_STL -#define COMET_STD_ITERATOR -#else -#ifdef __MINGW32__ -__STL_BEGIN_NAMESPACE -template struct iterator: bidirectional_iterator<_Tp,_Distance>{}; -__STL_END_NAMESPACE -#endif // __MINGW32__ -#endif -#else -#ifdef _CPPLIB_VER -#define COMET_STD_ITERATOR -#endif -#endif /* COMET_PARTIAL_SPECIALISATION */ -#endif - -#ifndef ATL_NO_VTABLE -#if _MSC_VER >= 1200 -#define ATL_NO_VTABLE __declspec(novtable) -#else -#define ATL_NO_VTABLE -#endif -#endif - -#if _MSC_VER <= 1200 -//#define COMET_DO_NOT_SPECIALISE_SWAP_IN_STD -#endif - -// Intel compiler version 500 sets _MSC_VER to 1200, -// but doesn't seem to like __forceinline -#if _MSC_VER >= 1200 && !defined(__ICL) -#define COMET_FORCEINLINE __forceinline -#else -#define COMET_FORCEINLINE inline -#endif - -#ifdef _UNICODE -#ifndef UNICODE -#define UNICODE // UNICODE is used by Windows headers -#endif -#endif - -#ifdef UNICODE -#ifndef _UNICODE -#define _UNICODE // _UNICODE is used by C-runtime/MFC headers -#endif -#endif - -// Remove Microsoft's C++ macros -#undef variant_t -#undef bstr_t -#undef com_cast - -// Stop subsequent includes of from #defining variant_t or bstr_t -#ifndef _USE_RAW -#define _USE_RAW -#endif - -#ifndef UUID_DEFINED -#define UUID_DEFINED -#endif - -#ifndef UUID -#define UUID GUID -#endif - -#ifdef uuid_t -#undef uuid_t -#endif - -#define COMET_DECLARE_SWAP(TYPE) template<> inline void swap(TYPE &x, TYPE &y)\ - {\ - x.swap(y);\ - } - -const unsigned short COMET_VARIANT_TRUE = (unsigned short)(0xffff); -const unsigned short COMET_VARIANT_FALSE = 0; - -#define COMET_NOTUSED(x) x -#ifndef COMET_CONST_MEMBER_INIT -# define COMET_CONST_TYPE(vartype, varname,value) enum { varname = value }; -# define COMET_CONST_GROUP enum { -# define COMET_CONST_ENTRY(vartype, varname,value) varname = value, -# define COMET_CONST_GROUP_END }; -#else -# define COMET_CONST_TYPE(vartype, varname,value) static const vartype varname = value; -# define COMET_CONST_ENTRY(vartype, varname,value) COMET_CONST_TYPE(vartype, varname, value); -# define COMET_CONST_GROUP -# define COMET_CONST_GROUP_END -#endif -#endif // COMET_BUILD_VERSION_ONLY -#endif - diff --git a/EyeTab_SP2/comet/cp.h b/EyeTab_SP2/comet/cp.h deleted file mode 100644 index 1c9a9e8..0000000 --- a/EyeTab_SP2/comet/cp.h +++ /dev/null @@ -1,436 +0,0 @@ -/** \file - * Connection-point implementations. - * The thought behind the current implementation was to try and maintain - * connections points accessible from the coclass through the member - * connection_point. - * - * Where multiple connection-points are defined, the member is accessed thus: - * \code - * connection_point_for::connection_point - * \endcode - * The default connection point wrapper implementations have a prefix of - * \b Fire_ before the event name. - */ -/* - * Copyright © 2000 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_CP_H -#define COMET_CP_H - -#include - -#include - -#include -#include - -#pragma warning( push ) -#pragma warning( disable : 4355 ) - -/** \page cometconnectionpoints Connection Points. -\section cometconnectionpointssource Connction Point Source -Connection points provide events for comet, and rely on tlb2h (see \ref tlb2husage) to generate -the implementation for each method on the interface. - -Then comet::implement_cpc is used to provide IConnectionPointContainer -(which provides the method for finding a particular connection point. - -The default implementation of a coclass will inherit of this method by -default, however they can be explicitly referenced to provide -alternate implementations. - -The class comet::implement_cpc is templated to an interface list, which -can be constructed with comet::make_list. - -\code - class my_class : public simple_object< IFooImpl, implement_cpc< make_list::result > > -\endcode - -This causes each of the interface in the list of interfaces to be wrapped by a -comet::connection_point_for class which provides the access syntax. - -\code - connection_point_for::connection_point.Fire_FooMethod( args ); -\endcode - -Note that \b Fire_ is prepended to each method name. - -If there is only one connection point in the list, then the -connection_point_for namespace segregator is not required. - -If there is no connection point implementation for the interface, then you should make -sure that it is referenced with a [source] tag by a coclass definition -in the library you are including, and that you are generating server -implementations or forcing it by prepending '*' in a symbol file, see -the \ref wrappergensymbolformat. - -\section cometconnectionpointsink Connction Point Sink - -In order to prevent the circular references inherent in connection points, the -reference loop must be broken somehow. This is best done by using a contained -member that calls back on the parent class. - -The class sink_impl is best used in this circumstance as it contains code for calling -Advise and Unadvise. It inherits from static_object which is designed to be embedded in -a class, and does reference counting on the module and does not destruct itself. - -This class is templated to the interface implementation desired, which will -mostly be the 'Impl' class for the interface, but might be a raw COM interface. - -In this example we have a class 'MyCoclass' that is sinking the event interface IMyEventImpl which -has a single 'EventHappened' method. -\code - class coclass_MyCoclass : public coclass - { - // Private Embedded sink implementation. - struct sink_t : sink_impl - { - sink_t(coclass_MyCoclass *Parent) :m_parent(Parent) {} - inline void EventHappened( long param_Here ) { m_parent->sink_EventHappened(param_Here); } - coclass_MyCoclass *m_parent; // Non-addref reference. - } m_sink; - public: - coclass_MyCoclass() : m_sink(this) {} - - // Set the event source. - void SetEventSource( const com_ptr &unknown) - { - if (m_sink.is_advised()) - m_sink.unadvise(); - m_sink.advise( unknown ); - } - - inline void sink_EventHappened( long param_Here ) - { - // Event code goes here - } - }; -\endcode - -*/ - -namespace comet { - - template class connection_point; - - /*! \addtogroup Interfaces - */ - //@{ - /** \class simple_cpc cp.h comet/cp.h - * Implement a simple connection-point container with a single - * connection-point. - * \param Itf The single connection-point interface. - * \sa implement_cpc - */ - template class ATL_NO_VTABLE simple_cpc : public IConnectionPointContainer - { - public: - typedef IConnectionPointContainer interface_is; - - protected: - /// \name IConnectionPointContainer interface - //@{ - STDMETHOD(EnumConnectionPoints)(IEnumConnectionPoints**) - { - return E_NOTIMPL; - } - - STDMETHOD(FindConnectionPoint)(REFIID riid, IConnectionPoint** ppCP) - { - if (!ppCP) return E_POINTER; - if (riid == uuidof()) { - *ppCP = &connection_point; - (*ppCP)->AddRef(); - return S_OK; - } - return CONNECT_E_NOCONNECTION; - } - //@} - - protected: - simple_cpc() : connection_point(this) {} - - connection_point connection_point; - }; - - - /** \class connection_point_for cp.h comet/cp.h - * Provide access to implementation for a connection point. - * \relates implement_cpc - */ - template class connection_point_for - { - public: - connection_point_for(::IUnknown *self) : connection_point(self) {} - connection_point connection_point; - }; - - - namespace impl { - - /** Find a connection point implementation for a given iid. - * \internal - */ - template struct connection_point_finder - { - template COMET_FORCEINLINE static ::IConnectionPoint* find_connection_point(T* This, const IID& iid) - { - typedef find_compatibility< COMET_STRICT_TYPENAME ITF_LIST::head > compatible; - if (iid == uuidof()) - return &((static_cast *>(This))->connection_point) ; - else return connection_point_finder::find_connection_point(This, iid); - } - }; - template<> struct connection_point_finder - { - template COMET_FORCEINLINE static ::IConnectionPoint* find_connection_point(T*, const IID&) - { - return 0; - } - }; - - } - - namespace impl { - - - template struct ATL_NO_VTABLE inherit_all_ex_unknown; - -#ifdef COMET_GOOD_RECURSIVE_STRUCT - // Remove level of indirection. PC-lint cannot handle it, and MSVC7 - // should be ale to. - template struct ATL_NO_VTABLE inherit_all_ex_unknown - : public ITF_LIST::head, public inherit_all_ex_unknown - { - inherit_all_ex_unknown( ::IUnknown *initParam) - : ITF_LIST::head(initParam), inherit_all_ex_unknown< COMET_STRICT_TYPENAME ITF_LIST::tail >(initParam) - {} - }; - template<> struct inherit_all_ex_unknown { inherit_all_ex_unknown(::IUnknown *) {} }; - -#else // COMET_GOOD_RECURSIVE_STRUCT - template struct ATL_NO_VTABLE inherit_all_ex_aux_unknown - : public HEAD, public inherit_all_ex_unknown - { - inherit_all_ex_aux_unknown( ::IUnknown *initParam) - : HEAD(initParam), inherit_all_ex_unknown(initParam) - {} - }; - -// COMET_CONFIG_H is always defined! This is just a trick to get Doxygen to ignore the following declaration that -// otherwise seems to be cause an exception in Doxygen 1.2.8 -#ifdef COMET_CONFIG_H - template struct ATL_NO_VTABLE inherit_all_ex_unknown - : public inherit_all_ex_aux_unknown - { - inherit_all_ex_unknown( ::IUnknown *initParam) - :inherit_all_ex_aux_unknown< COMET_STRICT_TYPENAME ITF_LIST::head, COMET_STRICT_TYPENAME ITF_LIST::tail >(initParam) - { - } - }; - template<> struct inherit_all_ex_unknown { inherit_all_ex_unknown(::IUnknown *) {} }; -#endif // COMET_CONFIG_H -#endif // COMET_GOOD_RECURSIVE_STRUCT - - - - } - - - COMET_WRAP_EACH_DECLARE( connection_point_for) - - - /** \struct implement_cpc cp.h comet/cp.h - * Implement a connection point container that can handle multiple - * connection points. - * This should be added to the \link comet::make_list list \endlink of implemented interfaces for a coclass as it - * implements IConnectionPointContainer (which will be required for a qi). - * - * The class is used by the default coclass implementation to provide \ref cometconnectionpoints. - * - * \param ITF_LST \link comet::make_list List \endlink of connection points interfaces to implement. - */ - template< typename ITF_LST> struct ATL_NO_VTABLE implement_cpc : public IConnectionPointContainer - , public impl::inherit_all_ex_unknown< COMET_WRAP_EACH(connection_point_for, ITF_LST) > - { - typedef IConnectionPointContainer interface_is; - public: - implement_cpc() - : impl::inherit_all_ex_unknown< COMET_WRAP_EACH(comet::connection_point_for, ITF_LST) >((::IUnknown *)this) - {} - - protected: - friend struct impl::connection_point_finder; - /// \name IConnectionPointContainer interface - //@{ - STDMETHOD(EnumConnectionPoints)(IEnumConnectionPoints**) - { - return E_NOTIMPL; - } - - STDMETHOD(FindConnectionPoint)(REFIID riid, IConnectionPoint** ppCP) - { - if (!ppCP) return E_POINTER; - - const IID& iid = riid; - - *ppCP = impl::connection_point_finder::find_connection_point(this, iid); - - if ( *ppCP !=NULL) - { - (*ppCP)->AddRef(); - return S_OK; - } - return CONNECT_E_NOCONNECTION; - } - //@} - }; - - - /** \class connection_point_impl cp.h comet/cp.h - * Implements a connection point. - * \param Itf Interface of connection point. - */ - template class ATL_NO_VTABLE connection_point_impl : public embedded_object< IUnknown, IConnectionPoint > - { - public: - bool is_connected() const - { return !connections_.empty(); } - protected: - connection_point_impl(::IUnknown* pUnk) : next_cookie_(1), embedded_object< IUnknown, IConnectionPoint >(pUnk) {} - - /// \name IConnectionPoint interface - //@{ - STDMETHOD(GetConnectionInterface)(IID* pIID) - { - *pIID = uuidof(); - return S_OK; - } - - STDMETHOD(GetConnectionPointContainer)(IConnectionPointContainer** ppCPC) { - com_ptr p; - p = try_cast(com_ptr< ::IUnknown >(get_parent())); - *ppCPC = com_ptr::detach( p ); - return S_OK; - } - - STDMETHOD(Advise)(::IUnknown* pUnkSink, DWORD* pdwCookie) - { - try { - connections_[next_cookie_] = try_cast( com_ptr< ::IUnknown >(pUnkSink) ); - } - catch (...) { - return CONNECT_E_CANNOTCONNECT; - } - *pdwCookie = next_cookie_++; - return S_OK; - } - STDMETHOD(Unadvise)(DWORD dwCookie) - { - CONNECTIONS::iterator it = connections_.find(dwCookie); - if (it == connections_.end()) return CONNECT_E_NOCONNECTION; - connections_.erase(it); - return S_OK; - } - - STDMETHOD(EnumConnections)(IEnumConnections** ppEnum) - { - try { - *ppEnum = com_ptr::detach( stl_enumeration::create(connections_, get_unknown()) ); - } catch (...) { - return E_FAIL; - } - return S_OK; - } - //@} - - typedef std::map > CONNECTIONS; - CONNECTIONS connections_; - private: - UINT next_cookie_; - }; - - /** \class sink_impl cp.h comet/cp.h - * Implement a sink for a connection pointer. - * \param Itf interface to implement. - */ - template class ATL_NO_VTABLE sink_impl : public static_object - { - public: - /** Advise this object as sinking connections from \p t. - */ - void advise(const com_ptr< ::IUnknown>& t) - { - if (ptr_) throw std::runtime_error("Cannot double advise."); - com_ptr cpc( try_cast(t) ); - IConnectionPoint* cp; - cpc->FindConnectionPoint( uuidof(), &cp) | raise_exception; - - HRESULT hr = cp->Advise(static_cast< ::IUnknown* >(static_cast(this)), &cookie_); - - cp->Release(); - - hr | raise_exception; - - ptr_ = t; - } - - /** Unadvise this interface from object \p t. - */ - void unadvise() - { - if (ptr_) { - com_ptr cpc( try_cast(ptr_) ); - IConnectionPoint* cp; - cpc->FindConnectionPoint( uuidof(), &cp) | raise_exception; - - HRESULT hr = cp->Unadvise(cookie_); - cookie_ = 0; - ptr_ = 0; - - cp->Release(); - - hr | raise_exception; - } - } - - /** Get event object. - */ - com_ptr< ::IUnknown> object() - { - return ptr_; - } - - /** Return true if advised. - */ - bool is_advised() - { - return !ptr_.is_null(); - } - - protected: - sink_impl() : cookie_(0) {} - ~sink_impl() { unadvise(); } - private: - DWORD cookie_; - com_ptr< ::IUnknown> ptr_; - }; - //@} - -} - -#pragma warning( pop ) - -#endif diff --git a/EyeTab_SP2/comet/cptraits.h b/EyeTab_SP2/comet/cptraits.h deleted file mode 100644 index 539b4e8..0000000 --- a/EyeTab_SP2/comet/cptraits.h +++ /dev/null @@ -1,118 +0,0 @@ -/** \file - * Connection-point traits. - */ - -/* Copyright © 2002 Michael Geddes - * Copyright © 2013 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef INCLUDE_COMET_CPTRAITS_H -#define INCLUDE_COMET_CPTRAITS_H - -#ifdef _SHOW_INC -#pragma message(" #Include " __FILE__) -#endif - -#include -#include // raise_exception - -#include // HRESULT - -namespace comet -{ - /*! \struct cp_throw cptraits.h comet/cptraits.h - * Default 'throw' traits for connection-points. - * \code Usage - * connection_point_for::connection_point.Fire_MyEvent( arg1, comet::cp_throw()); - * \endcode - */ - struct cp_throw - { - - /// Constructor - called before iterating over the connection-points. - cp_throw() : _hr_(S_OK) { } - - /// Destructor - called after iterating over all the connection-points. - ~cp_throw() { _hr_ | raise_exception ; } - - /*! Called when a connection point fails. - * Can also be used to remember the hresult for the destructor. - * - * \retval true Cause the on_fail method to be called. - * \retval false Ignore the failure. - */ - bool check_fail(HRESULT hr) - { - if( FAILED(hr) ) - _hr_ = hr; - return false; - } - - /*! Called when check_fail returns true. - * \param par_connects Reference to the STL container containing the connection-points. - * \param par_it The iterator of the failed connection-point. - */ - template - static bool on_fail(CONNECTIONS &par_connects, const typename CONNECTIONS::iterator & par_it) - { - COMET_NOTUSED(par_it); - COMET_NOTUSED(par_connects); - return false; - } - - protected: - HRESULT _hr_; - - }; - - /*! \struct cp_nothrow_remove cptraits.h comet/cptraits.h - * Traits for connection-points, errors cause the connection-point to auto-remove. - * \code - * connection_point_for::connection_point.Fire_MyEvent( arg1, comet::cp_nothrow_remove()); - * \endcode - * \sa cp_throw - */ - struct cp_nothrow_remove - { - //! Called when a connection point fails. - bool check_fail( HRESULT _hr_) throw() { return FAILED(_hr_); } - - //! Called when check_fail returns true. - template - static bool on_fail(CONNECTIONS &par_connects, const typename CONNECTIONS::iterator &par_it ) throw() - { - try{ par_connects.erase(par_it); }catch(...) {} - return false; - } - }; - - - /*! \struct cp_nothrow cptraits.h comet/cptraits.h - * Tratis for connection-points, errors are ignored. - * \code - * connection_point_for::connection_point.Fire_MyEvent( arg1, comet::cp_nothrow()); - * \endcode - * \sa cp_throw - */ - struct cp_nothrow - { - //! Called when a connection point fails. - bool check_fail( HRESULT _hr_) throw() { return FAILED(_hr_); } - - //! Called when check_fail returns true. - template - static bool on_fail(CONNECTIONS &par_connects, const typename CONNECTIONS::iterator &par_it ) throw() { return false; } - }; -} -#endif /* INCLUDE_COMET_CPTRAITS_H */ diff --git a/EyeTab_SP2/comet/currency.h b/EyeTab_SP2/comet/currency.h deleted file mode 100644 index 567f93d..0000000 --- a/EyeTab_SP2/comet/currency.h +++ /dev/null @@ -1,474 +0,0 @@ -/** \file - * Currency wrapper. - */ -/* Copyright © 2001 Michael Geddes, Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_CURRENCY_H -#define COMET_CURRENCY_H - -#include - -#include -#include - -#include - -#include -#include - -namespace comet -{ - - class bstr_t; - - // currency_t - /////////////// - - /*! \addtogroup COMType - */ - //@{ - - /** Wrapper for CURRENCY type. - * CURRENCY is a fixed point (to 4 decimal places) 64 bit value. - */ - - class currency_t - { - public: - /// Default Constructor - currency_t() throw() { cy_.int64 = 0; } - - /// CY constructor. - currency_t(const CY &cy): cy_(cy) { } - - /// Double Conversion constructor. - explicit currency_t(double val) - { - VarCyFromR8(val,&cy_) | raise_exception; - } - -#if 0 -// //! Construct currency from CY/CURRENCY. -// /*! -// Takes ownership of specified CY value. To prevent misuse the CY must be wrapped using auto_attach. -// -// \code -// currency_t cy( auto_attach( myCY ) ); -// \endcode -// -// \param cyVal -// Value to initialise currency_t from. -// */ -// currency_t( const impl::auto_attach_t &cyVal) throw() : cy_(cyVal.get()) -// {} -#endif //0 - - /// Long Conversion constructor. - currency_t( long val ) - { - VarCyFromI4(val,&cy_) | raise_exception; - } - - currency_t( int val ) - { - VarCyFromI4(val,&cy_) | raise_exception; - } - - void swap(currency_t& c) throw() - { - std::swap(cy_, c.cy_); - } - - static const currency_t& create_const_reference(const CY& s) throw() - { return *reinterpret_cast(&s); } - - static currency_t& create_reference(CY& s) throw() - { return *reinterpret_cast(&s); } - - //! \name Assignment Operators - //@{ - currency_t &operator=(double newVal) - { - currency_t c( newVal ); - swap(c); - return *this; - } - currency_t &operator=(long newVal) - { - currency_t c( newVal ); - swap(c); - return *this; - } - currency_t &operator=(int newVal) - { - currency_t c( newVal ); - swap(c); - return *this; - } - currency_t &operator=(const tagCY &newVal) throw() - { - cy_ = newVal; - return *this; - } - //@} - - /// \name Mathematical Operators - //@{ - currency_t &operator+=(const currency_t &cy) - { - currency_t c( *this + cy ); - swap(c); - return *this; - } - currency_t &operator-=(const currency_t &cy) - { - currency_t c( *this - cy ); - swap(c); - return *this; - } - currency_t &operator*=(const currency_t &cy) - { - currency_t c( *this * cy ); - swap(c); - return *this; - } - currency_t &operator*=(long cy) - { - currency_t c( *this * cy ); - swap(c); - return *this; - } - currency_t &operator*=(int val) - { - return operator*=((long)val); - } - currency_t &operator*=(double val) - { - cy_.int64 = (LONGLONG)(cy_.int64 * val); - return *this; - } - - currency_t &operator/=(int val) const - { - return operator/=((long)val); - } - currency_t &operator/=(long val) - { - - if(!valid()) - { - // Check for invalid number - return *this; - } - - // Check for divide by 0 - if (val == 0) - { - // Set to maximum negative value - cy_.Hi = 0x80000000; - cy_.Lo = 0x00000000; - - return *this; - } - cy_.int64/=val; - - return *this; - } - - currency_t operator+(const currency_t &cy)const - { - currency_t rv; - VarCyAdd(cy_,cy.cy_,&rv.cy_) | raise_exception ; - return rv; - } - currency_t operator-(const currency_t &cy)const - { - currency_t rv; - VarCySub(cy_,cy.cy_,&rv.cy_) | raise_exception ; - return rv; - } - currency_t operator*(const currency_t &cy)const - { - currency_t rv; - VarCyMul(cy_,cy.cy_,&rv.cy_) | raise_exception ; - return rv; - } - currency_t operator*(long cy)const - { - currency_t rv; - VarCyMulI4(cy_,cy,&rv.cy_) | raise_exception; - return rv; - } - currency_t operator*(int cy)const - { - return operator *((long)cy); - } - - currency_t operator*(double cy) const - { - currency_t val(*this); - val *=cy; - return val; - } - - - /// Calculate approximate ratio. - double operator/(const currency_t &cy)const - { - return ((double)cy_.int64 /(double)cy.cy_.int64); - } - - /// Divide by int. - currency_t operator/(int val) const - { - return operator/((long)val); - } - /// Divide by long. - currency_t operator/(long val) const - { - currency_t tmp(cy_); - tmp/=val; - return tmp; - } - - /// Divide by double - double operator/(double val) const - { - if(!valid()) - { - // Check for invalid number - throw std::invalid_argument("Invalid divide"); - } - - // Check for divide by 0 - if (val == 0) - { - throw std::overflow_error("Divide by 0"); - } - return cy_.int64/(val*10000); - } - - /// Unary negate. - currency_t operator-()const - { - currency_t cy; - VarCyNeg(cy_,&(cy.cy_)) | raise_exception; - return cy; - } - - //@} - - /** Rounds the value to specified number of decimal places. - * \param decimals Number of places to round to. - */ - currency_t &round_to(int decimals) - { - VarCyRound(cy_,decimals,&cy_) | raise_exception; - return *this; - } - - /// \name Logical Operators - //@{ - - bool operator!=(const currency_t &cy) const { return cmp(cy)!=0; } - bool operator!=(double val) const{ return cmp(val)!=0; } - bool operator==(const currency_t &cy) const { return cmp(cy)==0; } - bool operator==(double val) const{ return cmp(val)==0; } - bool operator<=(const currency_t &cy) const{ return cmp(cy)<=0; } - bool operator<=(double val) const{ return cmp(val)<=0; } - bool operator>=(const currency_t &cy) const{ return cmp(cy)>=0; } - bool operator>=(double val) const{ return cmp(val)>=0; } - bool operator<(const currency_t &cy) const{ return cmp(cy)<0; } - bool operator<(double val) const{ return cmp(val)<0; } - bool operator>(const currency_t &cy) const{ return cmp(cy)>0; } - bool operator>(double val) const{ return cmp(val)>0; } - - //@} - - /** Compares the value like strcmp. - * \param cy Number to be compared. - */ - int cmp(const currency_t &cy) const - { - return _cmpResult(VarCyCmp(cy_,cy.cy_)); - - } - - /** Compares the value like strcmp. - * \param cy Number to be compared. - */ - int cmp(double cy) const - { - return _cmpResult(VarCyCmpR8(cy_,cy)); - } - - - //! \name Access converters - //@{ - tagCY get() const { return cy_;} - tagCY in() const { return cy_;} - tagCY *in_ptr() const { return const_cast(&cy_);} - tagCY *out() { return &cy_;} - tagCY *inout() { return &cy_;} - //@} - - -#if 0 - friend std::ostream &operator <<(std::ostream &str, const currency_t &val) - { - std::string strval=val.format( 1, str.precision(), str.width() ); - return str<< strval.c_str(); - } -#endif - - - - friend - std::basic_ostream &operator<<(std::basic_ostream &str, const currency_t &val) - { - std::basic_string strval; - val.do_format(strval, 1, str.precision(), str.width() ); - return str << strval.c_str(); - } - - friend - std::basic_ostream &operator<<(std::basic_ostream &str, const currency_t &val) - { - std::basic_string strval; - val.do_format(strval, 1, str.precision(), str.width() ); - return str << strval.c_str(); - } - - //! Format the string with the given digits, precision and width. - std::basic_string format( - std::streamsize mindigits=0, std::streamsize minprecision=0, - std::streamsize width=0) const - { - std::basic_string strval; - do_format(strval, mindigits, minprecision, width); - return strval; - } - - //! Parse the string to a currency. - currency_t &parse( const bstr_t &str, LCID locale =::GetThreadLocale() ); -/* { - VarCyFromStr( str.in(), locale, 0, &cy_ ) | raise_exception; - return *this; - }*/ - - protected: - /** Return a string representation of the value. - * \param val output string (return values can't automatically detect template arguments) - * \param mindigits Minimum number before decimal point. - * \param minprecision Minimum number after decimal point. - * \todo Obey ostream formats for: fillchar(), ios_base::left, ios_base::internal, ios_base::showpos - */ - template - void do_format( - std::basic_string& val, std::streamsize mindigits, - std::streamsize minprecision, std::streamsize /*width*/) const - { - COMET_ASSERT(mindigits>=0 && minprecision >=0 ); - if(minprecision> 4) minprecision =4; - - // Add in the 4 fixed decimal points - std::streamsize pr = - ((0 <= minprecision && minprecision <=4) ? - (4-minprecision) : 0); - mindigits+=4; - - val.erase(); - val.reserve(22); - LONGLONG value=cy_.int64; - bool neg=value<0; - if(neg) - { - value=-value; - } - // Put in the digits backwards - std::streamsize digit=0; - bool output=false; - while(value !=0 || digit < mindigits) - { - CH dig=CH(value%10); - if(output || true==(output= (dig >0 || digit>=pr))) // Once 'output' is set - output everything. - { - val+=(CH('0'+dig)); - } - if(++digit == 4) - { - val+=CH('.'); - output=true; - } - value/=10; - } - if(neg) - { - val+=CH('-'); - } - - // Now reverse the digits - std::reverse(val.begin(), val.end()); - } - public: - - /// Returns true if this is a valid number - bool valid() const throw() - { return !(cy_.Hi==(long)0x80000000 && cy_.Lo==0);} - - /// Detaches the CY value. Provided for consistancy. - CY detach() throw() - { - CY val = cy_; - cy_.int64 = 0; - return val; - } - - /// Detaches the CY value. Provided for consistancy. - static CY detach(currency_t& cy) throw() - { - return cy.detach(); - } - - private: - CY cy_; - - static int _cmpResult(HRESULT hr) - { - if(SUCCEEDED(hr)) - { - switch(hr) - { - case VARCMP_LT: - return -1; - case VARCMP_EQ : - return 0; - case VARCMP_GT: - return 1; - case VARCMP_NULL: - COMET_ASSERT(!"What do we do with this?"); - } - } - else - { - hr | raise_exception; - } - return 0; // shut the compiler up - } - }; - //@} -} - -#endif // COMET_CURRENCY_H diff --git a/EyeTab_SP2/comet/date.h b/EyeTab_SP2/comet/date.h deleted file mode 100644 index e577cac..0000000 --- a/EyeTab_SP2/comet/date.h +++ /dev/null @@ -1,396 +0,0 @@ -/** \file - * Date wrapper (part of datetime). - */ -/* -* Copyright © 2004 Michael Geddes -* -* This material is provided "as is", with absolutely no warranty -* expressed or implied. Any use is at your own risk. Permission to -* use or copy this software for any purpose is hereby granted without -* fee, provided the above notices are retained on all copies. -* Permission to modify the code and to distribute modified code is -* granted, provided the above notices are retained, and a notice that -* the code was modified is included with the above copyright notice. -* -* This header is part of Comet version 2. -* https://github.com/alamaison/comet -*/ - -#ifndef INCLUDE_COMET_DATE_H -#define INCLUDE_COMET_DATE_H - -#ifdef _SHOW_INC -#pragma message(" #Include " __FILE__) -#endif -#include - -namespace comet -{ - /*! \addtogroup Misc - */ - //@{ - - //! Wrapper for a date only class. - /**This is based on an integer version of DATE, except that it is an - * absolute offset from 1/1/0. - */ - struct dateonly_t : protected impl::datetime_base - { - - /// constructor - dateonly_t() { dt_ = 0; } - - /// Construct from a datetime_t. - explicit dateonly_t( const datetime_t &dt) - { - if (dt == dt_invalid ) - dt_ = dt_invalid_; - else if (dt == dt_null) - dt_ = dt_null_; - else - dt_ = split_oledate_as_absdate_( dt.get()); - } - - /// Attach from a long. - dateonly_t( const impl::auto_attach_t &dateval) - { - dt_ = dateval.get(); - } - - /// Get the raw 'long' value. - long get() const { return dt_; } - dateonly_t &operator=(const impl::auto_attach_t & dateval) - { - dt_ = dateval.get(); - return *this; - } - - /// Initialise as invalid. - dateonly_t( dt_invalid_t ) { dt_ = dt_invalid_; } - /// Initialise as null. - dateonly_t( dt_null_t ) { dt_ = dt_null_; } - /// Initialise as zero. - dateonly_t( dt_zero_t) { dt_ = 0; } - - - /// Construct from year/month/day. - dateonly_t( int year, int month, int day ) - { - if (!absdate_from_date_( &dt_, year, month, day)) - set_invalid_(); - } - - /// Get a 'NULL' datetime. - static dateonly_t get_null() { return dateonly_t( dt_null_ ); } - /// Get a 'zero' datetime. - static dateonly_t get_zero() { return dateonly_t( 0 ); } - - /// Return today. - static dateonly_t today() - { - return dateonly_t(datetime_t::now()); - } - /// Return today (UTC). - static dateonly_t today_utc() - { - return dateonly_t(datetime_t::now_utc()); - } - - /// Return year/month/day values. - void split(int *year, int *month, int *day) const - { - if(!good() || ! date_from_absdate_( dt_, year, month, day)) - throw datetime_exception("Invalid Date"); - } - - /** Set date part as year/month/day. - * \param year Year (from year 0 - as in 2000). - * \param month Month of year (1-based). - * \param day Day of month (1-based). - * \retval true Successfully set date. - * \retval false Conversion unsuccessful - date not set. - */ - bool set_date( int year, int month, int day) - { - return absdate_from_date_( &dt_, year, month, day); - } - - /// Convert to datetime. - operator datetime_t() const - { - if (!good()) return datetime_t((DATE)dt_); - return datetime_t(join_absdate_as_oledate_( dt_, 0)); - } - - /// \name Access date parts. - //@{ - /// Year. - int year() const - { - int year; - split(&year,NULL,NULL); - return year; - } - /// Month of year (1-based) - int month() const - { - int year,month,day; - split(&year,&month,&day); - return month; - } - /// Day of month (1-based) - int day() const - { - int year,month,day; - split(&year,&month,&day); - return day; - } - /// The day of week. - datetime_t::day_of_week dow() const - { - int wday; - if(!good() || ! dow_from_absdate_( dt_, &wday)) - throw datetime_exception("Invalid Date"); - return datetime_t::day_of_week(wday); - } - /// Day of the year (0 -based) - int year_day() const - { - if (good()) - { - int y,m,d; - date_from_absdate_(dt_, &y,&m,&d); - long firstday; - if ( absdate_from_date_(&firstday, y, 1, 1)) - return 1 + ( dt_ - firstday); - } - throw datetime_exception("Invalid Date"); - } - /// Days in the month. - int days_in_month() const - { - int year,month,day; - split(&year,&month,&day); - return days_in_month(year,month); - } - - //@} - - /** Add specified number of months. - * If the day is not valid, force to the last day in the month. - */ - dateonly_t &add_months(int inc_months) - { - int year,month,day; - split(&year,&month,&day); - long months = (month-1)+(year*12)+inc_months; - - long quot,rem; - quot = months/12; - rem = months%12; - set_date( quot, rem+1, day); - return *this; - } - - /// Add specified number of years. - dateonly_t &add_years(int inc_years) - { - int year,month,day; - split(&year,&month,&day); - set_date( year+inc_years, month, day); - return *this; - } - - ///\name Comparison operators - //@{ - bool operator==(const dateonly_t& date) const { return date.dt_ == dt_; } - bool operator!=(const dateonly_t& date) const{ return date.dt_ != dt_; } - bool operator<(const dateonly_t& date) const - { - COMET_ASSERT( good() ); - COMET_ASSERT( date.good() ); - return dt_ < date.dt_; - } - bool operator>(const dateonly_t& date) const - { - COMET_ASSERT( good() ); - COMET_ASSERT( date.good() ); - return dt_ > date.dt_; - } - bool operator<=(const dateonly_t& date) const - { - COMET_ASSERT( good() ); - COMET_ASSERT( date.good() ); - return dt_ <= date.dt_; - } - bool operator>=(const dateonly_t& date) const - { - COMET_ASSERT( good() ); - COMET_ASSERT( date.good() ); - return dt_ >= date.dt_; - } - bool operator==(dt_invalid_t) const { return invalid(); } - bool operator!=(dt_invalid_t) const { return !invalid(); } - bool operator==(dt_zero_t) const { return dt_==0; } - bool operator!=(dt_zero_t) const { return dt_!=0; } - bool operator==(dt_null_t) const { return null(); } - bool operator!=(dt_null_t) const { return !null(); } - //@} - - ///\name Arithmetic operators - //@{ - dateonly_t operator+(long dateSpan) const - { - dateonly_t dt(*this); - dt+=dateSpan; - return dt; - } - dateonly_t operator-(long dateSpan) const - { - dateonly_t dt(*this); - dt-=dateSpan; - return dt; - } - dateonly_t& operator+=(long dateSpan) - { - COMET_ASSERT( good() ); - dt_ += dateSpan; - return *this; - } - dateonly_t& operator-=(long dateSpan) - { - COMET_ASSERT( good() ); - dt_ -= dateSpan; - return *this; - } - long operator-(const dateonly_t& date) const - { - COMET_ASSERT( good() ); - COMET_ASSERT( date.good() ); - return dt_ - date.dt_; - } - dateonly_t &operator++() - { - COMET_ASSERT( good() ); - ++dt_; - return *this; - } - dateonly_t operator++(int) - { - COMET_ASSERT( good() ); - dateonly_t t(*this); - ++dt_; - return t; - } - dateonly_t &operator--() - { - COMET_ASSERT( good() ); - --dt_; - return *this; - } - dateonly_t operator--(int) - { - COMET_ASSERT( good() ); - dateonly_t t(*this); - --dt_; - return t; - } - //@} - - /// return true if the date is marked 'invalid'. - inline bool invalid() const { return dt_ == ( dt_invalid_); } - /// Return true if the date is marked 'null' - inline bool null() const { return dt_ == ( dt_null_); } - - /// return true if date is zero - inline bool zero() const { return dt_ == 0; } - - /// Return true if the date is usable. - inline bool good() const - { - switch (dt_) - { - case 0: case dt_invalid_: case dt_null_: return false; - default: return true; - } - } - - /** Format as bstr. - * \param flags Format (can be or-ed). All format_flags are valid. - * \param locale Locale ID (default to User Default. - */ - bstr_t format( datetime_t::format_flags flags = datetime_t::ff_default , LCID locale = LOCALE_USER_DEFAULT) const - { - flags = datetime_t::format_flags((flags | datetime_t::ff_date_only) & ~datetime_t::ff_time_only); - bstr_t strDate; - if (null() || invalid()) - return strDate; - - DATE dt = join_absdate_as_oledate_( dt_, 0); - VarBstrFromDate(dt, locale, flags, strDate.out()) | raise_exception; - return strDate; - } - - /** Parse bstring to a datetime_t. - * \param val String to parse. - * \param flags valid format_flags are: ff_default, ff_system_locale, ff_hijri, ff_time_only, ff_date_only - * \param locale Locale to use. Default \p locale is the user default. - */ - dateonly_t &parse( const bstr_t &val, datetime_t::format_flags flags = datetime_t::ff_default, LCID locale = LOCALE_USER_DEFAULT) - { - flags = datetime_t::format_flags((flags | datetime_t::ff_date_only) & ~datetime_t::ff_time_only); - DATE dt; - VarDateFromStr( val.in(), locale, flags, &dt) | raise_exception; - dt_ = split_oledate_as_absdate_( dt); - - return *this; - } - - /** Format as basic_string. - * \param fmt See system documentation for strftime for details. - */ - template - std::basic_string format( const std::basic_string &fmt ) const - { - return format(fmt.c_str()); - } - - /** Format as basic_string. - * \param fmt See system documentation for strftime for details. - */ - template - std::basic_string format( const CHAR *fmt ) const - { - // Just use datetime_t to handle this. - datetime_t dt(*this); - return dt.format(fmt); - } - - /// Stream operator. - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const dateonly_t &val) - { - os << val.format(); - return os; - } - - /// Stream operator. - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const dateonly_t &val) - { - os << val.format(); - return os; - } - - static inline int days_in_month(int year, int month) - { - return impl::datetime_base::days_in_month(year,month); - } - - protected: - explicit dateonly_t(long l) { dt_ = l; } - }; - //@} -}; - -#endif /* INCLUDE_COMET_DATE_H */ diff --git a/EyeTab_SP2/comet/datetime.h b/EyeTab_SP2/comet/datetime.h deleted file mode 100644 index 351a9d1..0000000 --- a/EyeTab_SP2/comet/datetime.h +++ /dev/null @@ -1,1943 +0,0 @@ -/** \file - * Wrappers for DATE. - */ - -/* Copyright © 2001 Michael Geddes - * - * This class was originally based on ATL/MFC code, however the original - * implementations have almost entirely been replaced with more efficient code. - * The core date algorithms are from boost. - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ -#ifndef COMET_DATETIME_H -#define COMET_DATETIME_H - -#include -#include -#include - -#include -#include - -// The Platform SDK does not define VAR_FOURDIGITYEARS -#ifndef VAR_FOURDIGITYEARS -#define VAR_FOURDIGITYEARS ((DWORD)0x00000040) -#endif - -namespace comet -{ - -#define COMET_DIVMOD_( quot,rem, val1, val2) quot = (val1)/(val2); rem = (val1)%(val2); - - -/*! \addtogroup ErrorHandling - */ -//@{ -//! Exception for datetimes. -class datetime_exception : public std::exception -{ -public: - datetime_exception( const char *desc) : desc_(desc) - {} - - const char* what() const throw() - { - return desc_.c_str(); - } - -private: - std::string desc_; -}; - -//@} - -/*! \addtogroup COMType - */ -//@{ -/// Initialise date/time value as invalid. -static struct dt_invalid_t {} dt_invalid; -/// Initialise date/time value as null. -static struct dt_null_t {} dt_null; -/// Initialise date/time value as zero. -static struct dt_zero_t { - operator double() const { return 0.;} - operator long() const { return 0;} -} dt_zero; - -// timeperiod_t -///////////////// - -/** \class timeperiod_t datetime.h comet/datetime.h - * Time-period. Used with datetime_t math. - */ -class timeperiod_t -{ - enum { - dt_invalid_ = 2147483647L, - }; - /// Days. - double pd_; -public: - /// Default Constructor. - timeperiod_t() : pd_(0.){} - - /// Construct invalid - timeperiod_t( dt_invalid_t ) : pd_(dt_invalid_) {} - /// Construct zero - timeperiod_t( dt_zero_t) : pd_(0.) {} - - timeperiod_t( double period) :pd_(period){} - timeperiod_t( float period) :pd_(period){} - timeperiod_t( long period) :pd_(period){} - timeperiod_t( int period) :pd_(period){} - timeperiod_t( short period) :pd_(period){} - timeperiod_t( unsigned long period) :pd_(period){} - timeperiod_t( unsigned int period) :pd_(period){} - timeperiod_t( unsigned short period) :pd_(period){} - - timeperiod_t( long days, long hours) - : pd_(days + hours/24){} - timeperiod_t( long days, long hours, long minutes) - : pd_(days + (hours*60+minutes)/(24.*60.)){} - timeperiod_t( long days, long hours, long minutes, long seconds, long milliseconds=0 ) - : pd_(days + ((hours*3600000L) + (minutes*60000L)+ (seconds*1000L)+ milliseconds)/86400000.){} - - /// \name Assignment operators - //@{ - timeperiod_t &operator =( const double &period){pd_=period; return *this;} - timeperiod_t &operator =( float period){pd_=period; return *this;} - timeperiod_t &operator =( long period){pd_=period; return *this;} - timeperiod_t &operator =( int period){pd_=period; return *this;} - timeperiod_t &operator =( short period){pd_=period; return *this;} - //@} - - /// Return time-period as a double (days). - operator double() const{return pd_;} - - /// \name Comparison operators. - //@{ - bool operator ==(const timeperiod_t &prd) const { return pd_ == prd.pd_; } - bool operator !=(const timeperiod_t &prd) const { return pd_ != prd.pd_; } - bool operator < (const timeperiod_t &prd) const { return pd_ < prd.pd_; } - bool operator > (const timeperiod_t &prd) const { return pd_ > prd.pd_; } - bool operator <=(const timeperiod_t &prd) const { return pd_ <= prd.pd_; } - bool operator >=(const timeperiod_t &prd) const { return pd_ >= prd.pd_; } - bool operator ==(dt_invalid_t) const { return pd_ == dt_invalid_; } - bool operator !=(dt_invalid_t) const { return pd_ != dt_invalid_; } - - // These shouldn't be needed. - template bool operator < (T prd) const { return pd_ < double(prd); } - template bool operator <= (T prd) const { return pd_ <= double(prd); } - template bool operator > (T prd) const { return pd_ > double(prd); } - template bool operator >= (T prd) const { return pd_ >= double(prd); } - template bool operator == (T prd) const { return pd_ == double(prd); } - template bool operator != (T prd) const { return pd_ != double(prd); } - - //@} - /// \name Simple math operators. - //@{ - timeperiod_t operator+(const timeperiod_t &prd) const { return pd_ + prd.pd_; } - timeperiod_t operator-(const timeperiod_t &prd) const { return pd_ - prd.pd_; } - timeperiod_t &operator+=(const timeperiod_t &prd) { pd_ += prd.pd_; return *this; } - timeperiod_t &operator-=(const timeperiod_t &prd) { pd_ -= prd.pd_; return *this; } - timeperiod_t operator-() const { return -pd_; } - //@} - - /// \name Conversion functions - //@{ - double as_days() { return pd_; } - void as_days(double prd) { pd_=prd; } - double as_hours() { return pd_*24; } - void as_hours(double prd) { pd_= prd/24; } - double as_minutes() { return pd_*24*60; } - void as_minutes(double prd) { pd_= prd/(24*60); } - double as_seconds() { return pd_*24*60*60; } - void as_seconds(double prd) { pd_= prd/(24*60*60); } - //@} - - /// Split up the time period into days/hours/minutes/seconds. - /** Backwards compatible. - * \deprecated - */ - void split( long& days, long& hours, long& minutes, long& seconds ) - { - split(&days,&hours,&minutes,&seconds); - } - /// Split up the time period into days/hours/minutes/seconds. - void split( long *days, long *hours, long *minutes, long *seconds, long *milliseconds = 0) - { - // Split into days and milliseconds. - double int_part; - long mspart = long(modf(pd_, &int_part) * 86400000); - *days = long(int_part); - // Optimise for integer. - if (mspart == 0 ) - { - *days = *hours = *minutes = *seconds = 0; - if (milliseconds!=NULL) *milliseconds =0; - return; - } - // Split up parts. - long ms, quot, quot2; - COMET_DIVMOD_(quot, ms, mspart, 1000); - COMET_DIVMOD_(quot2, *seconds, quot, 60); - COMET_DIVMOD_( *hours, *minutes, quot2, 60); - if( milliseconds != NULL) - *milliseconds = ms; - } - - /// Set as days/hours/minutes/seconds. - void set_period( long days, long hours, long minutes, long seconds, long milliseconds=0 ) - { - pd_ = days + ((hours*3600000L) + (minutes*60000L)+ (seconds*1000L)+ milliseconds)/86400000.; - } - - /// Return true if the period is invalid. - bool invalid() const - { - return pd_ == (double)(dt_invalid_); - } - /// Return true if the period is not invalid. - bool good() const - { - return !invalid(); - } - /** return true if the period is valid. - * \deprecated - */ - bool valid() const { return !invalid(); } - - /// Return an invalid period. - static timeperiod_t invalid_period() { return timeperiod_t( (double)(dt_invalid_)); } - -}; - - -/// A wrapper for choosing strftime/wcsftime based on char type. -template< typename CHAR > -inline size_t str_formattime( CHAR *strDest, size_t maxsize, const CHAR *format, const struct tm *timeptr ) -{ - return -1; -} -/// @if Internal -template<> -inline size_t str_formattime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr ) -{ - return strftime( strDest, maxsize, format, timeptr ); -} - -template<> -inline size_t str_formattime( wchar_t *strDest, size_t maxsize, const wchar_t *format, const struct tm *timeptr ) -{ - return wcsftime( strDest, maxsize, format, timeptr ); -} - -namespace impl { -// Internally used to group div/mod so optimiser is likely to pick it up. - - const double half_millisecond = 1.0/172800000.0; - - template - struct datetime_base - { - T dt_; - - enum convert_mode { - cmBoth, - cmOnlyTime, - cmOnlyDate - }; - - - /*! Convert absolute date to date-parts. - */ - static bool date_from_absdate_( long daysAbsolute, int *tm_year, int *tm_mon, int *tm_mday ); - - /*! Convert absolute date to day-of-week. - */ - static bool dow_from_absdate_( long daysAbsolute, int *tm_wday) - { - // Calculate the day of week (sun=0, mon=1...) - // -1 because 1/1/0 is Sat. - *tm_wday = (int)((daysAbsolute + 1) % 7L); - return true; - } - - /*! Convert date parts to absolute date. - */ - static bool absdate_from_date_( long *daysAbsolute, int tm_year, int tm_mon, int tm_mday); - - /*! Convert time in milliseconds to time of day parts. - */ - static bool time_from_milliseconds_( long milliseconds, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms); - /*! Convert time-of-day parts to milliseconds. - */ - static bool milliseconds_from_time_( long *milliseconds, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms); - - /*! Convert ole date to datetime-parts. - */ - static bool datetime_from_oledate_( DATE date, int *tm_year, int *tm_mon, int *tm_mday, int *tm_dow, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms, convert_mode mode); - - /*! Get date part of oledate. - */ - static inline long split_oledate_as_absdate_( DATE date ) - { - double val = to_double(date)+ (693959 + 1721060) + half_millisecond; // Add days from 1/1/0 to 12/30/1899 - return long(floor(val)); - } - /*! Split oledate into date/milliseconds. - */ - static inline long split_oledate_as_absdate_( DATE date, long *ms_part,bool need_ms_part ) - { - double val = to_double(date)+ (693959 + 1721060) + half_millisecond; // Add days from 1/1/0 to 12/30/1899 - if (!need_ms_part) return long(floor(val)); - *ms_part = long(modf(val, &val) * 86400000); - return long(val); - } - - /*! Join oledate. - */ - static inline DATE join_absdate_as_oledate_( long absDate, long ms_part) - { - return to_date( (double(absDate) + (ms_part / 86400000.)) - 693959 - 1721060 ); - } - - - /*! Convert datetime-parts to ole date. - */ - static bool oledate_from_datetime_( DATE *date, unsigned short tm_year, unsigned short tm_mon, unsigned short tm_mday, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms, convert_mode mode); - - /*! Convert TM to OLE date. - * Sets the date to invalid if unsuccessful. - * \retval true Successful conversion. - */ - static bool from_tm_( const struct tm &src, DATE *dt, convert_mode mode); - - /*! Convert OLE date to TM. - * \retval true Successful conversion. - */ - static bool to_tm_( DATE dt, struct tm *dest, int *ms); - - void set_invalid_() { dt_ = ((T) dt_invalid_); } - void set_null_() { dt_ = ((T) dt_null_); } - - /// Convert offset from 0 to DATE type. - static DATE to_date( double dbl) - { - if(dbl>0) return dbl; - double t=floor(dbl); - return t+(t-dbl); - } - /// Convert DATE type to offset from 0. - static double to_double( DATE dt) - { - if(dt>=0) return dt; - double t = ceil(dt); - return t-(dt-t); - } - - /// Set to value \a dt and check the range. - bool set_check_range_( T dt) - { - bool result = (dt <= dt_max && dt >= dt_min); - if (result) - dt_ = dt; - return result; - } - /// Set the value to \a dt and set 'invalid' if out of range. - void set_invalid_check_range_(T dt) - { - if (!set_check_range_(dt) ) - set_invalid_(); - } - - /// Return true if \a year is a leap-year. - static bool is_leap_year( long year) - { - if ((year & 0x3) != 0) return false; - // && ((year % 100) != 0 || (year % 400) == 0); - long quot,rem; - COMET_DIVMOD_(quot,rem, year, 100); - if (rem != 0) return true; - return ((quot & 0x3) == 0); - } - - enum { - dt_max = 2958465L, // about year 9999 - dt_null_ = 2147483648L, - dt_invalid_ = 2147483647L, - dt_min = (-657434L) // about year 100 - }; - - - static int days_in_month(int year, int month) - { - switch (month) - { - case 2: return (is_leap_year(year)?29:28); - case 4: case 6: case 9: case 11: - return 30; - default:return 31; - }; - } - - }; - //! @endif - - - // Convert TM to OLE date - template - bool - datetime_base::from_tm_( const struct tm &src, DATE *dt, convert_mode mode) - { - return oledate_from_datetime_( dt, unsigned short(src.tm_year + 1900),unsigned short( src.tm_mon+1),unsigned short( src.tm_mday),unsigned short( src.tm_hour),unsigned short( src.tm_min),unsigned short( src.tm_sec), 0U, mode); - } - - // Convert OLE date to TM. \retval true Successful conversion. - template - bool - datetime_base::to_tm_( DATE dt, struct tm *dest, int *ms) - { - int y,m,d; - if ( !datetime_from_oledate_( dt, &y, &m, &d, &dest->tm_wday, &dest->tm_hour, &dest->tm_min, &dest->tm_sec, NULL, cmBoth) ) - return false; - dest->tm_year = y; - dest->tm_mon = m; - dest->tm_mday = d; - - - if (dest->tm_year != 0) - { - long firstday, thisday; - absdate_from_date_( &thisday, y,m,d); - absdate_from_date_(&firstday, y, 1, 1); - dest->tm_yday = 1+ ( thisday - firstday); - // Convert afx internal tm to format expected by runtimes (_tcsftime, etc) - dest->tm_year -= 1900; // year is based on 1900 - dest->tm_mon -= 1; // month of year is 0-based - dest->tm_isdst = -1; // Don't know DST status. - } - else - dest->tm_yday = 0; - return true; - } - - // Convert OLE date to date-parts. - template - bool - datetime_base::date_from_absdate_(long daysAbsolute , int *tm_year, int *tm_mon, int *tm_mday) - { - // These algorithms are taken from the gregorian_calendar - // calculations in boost. - typedef long date_int_type; - typedef int year_type; - date_int_type dayNumber = daysAbsolute; - date_int_type a = dayNumber + 32044 ; - date_int_type b = (4*a + 3)/146097; - date_int_type c = a-((146097*b)/4); - date_int_type d = (4*c + 3)/1461; - date_int_type e = c - (1461*d)/4; - date_int_type m = (5*e + 2)/153; - *tm_mday = static_cast(e - ((153*m + 2)/5) + 1); - *tm_mon = static_cast(m + 3 - 12 * (m/10)); - *tm_year = static_cast(100*b + d - 4800 + (m/10)); - return true; - } - - // Convert date parts to absolute date. - template - bool - datetime_base::absdate_from_date_( long *daysAbsolute, int tm_year, int tm_month, int tm_mday) - { - // These algorithms are taken from the gregorian_calendar - // calculations in boost. - unsigned short a = static_cast((14-tm_month)/12); - unsigned short y = static_cast(tm_year + 4800 - a); - unsigned short m = static_cast(tm_month + 12*a - 3); - unsigned long d = tm_mday + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; - - *daysAbsolute = d; - - return true; - } - - // Convert OLE time to time of day parts. - template - bool - datetime_base::time_from_milliseconds_( long milliseconds, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms) - { - if (milliseconds == 0 ) - { - *tm_hour = *tm_min = *tm_sec = 0; - if (tm_ms!=NULL) *tm_ms =0; - return true; - } - long ms, quot, quot2; - COMET_DIVMOD_(quot, ms, milliseconds, 1000); - COMET_DIVMOD_(quot2, *tm_sec, quot, 60); - COMET_DIVMOD_( *tm_hour, *tm_min, quot2, 60); - if( tm_ms != NULL) - *tm_ms = ms; - return true; - } - - // Convert time-of-day parts to milliseconds. - template - bool - datetime_base::milliseconds_from_time_( long *milliseconds, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms) - { - if ( tm_hour > 23 || tm_min > 59 || tm_sec> 59) return false; - - *milliseconds = (tm_hour* 3600000L) + (tm_min*60000L)+ (tm_sec*1000)+ tm_ms; - return true; - } - - // - template - bool - datetime_base::datetime_from_oledate_( DATE date, int *tm_year, int *tm_mon, int *tm_mday, int *tm_wday, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms, convert_mode mode) - { - long datePart, msPart; - datePart = split_oledate_as_absdate_(date, &msPart, mode != cmOnlyDate); - if ( mode != cmOnlyDate && !time_from_milliseconds_( msPart, tm_hour, tm_min, tm_sec, tm_ms)) - return false; - return (mode == cmOnlyTime) || (date_from_absdate_( datePart, tm_year, tm_mon, tm_mday)) && ( (tm_wday==NULL) || dow_from_absdate_(datePart, tm_wday)); - } - - // Convert datetime-parts to ole date. - template - bool - datetime_base::oledate_from_datetime_( DATE *date, unsigned short tm_year, unsigned short tm_mon, unsigned short tm_mday, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms, convert_mode mode) - { - long datePart = 0, timePart = 0; - if (mode != cmOnlyDate && !milliseconds_from_time_( &timePart, tm_hour, tm_min, tm_sec, tm_ms)) - return false; - if (mode != cmOnlyTime && !absdate_from_date_( &datePart, tm_year, tm_mon, tm_mday)) - return false; - *date = join_absdate_as_oledate_(datePart, timePart); - return true; - } -} - - -/** \class datetime_t datetime.h comet\datetime.h - * Wrapper for DATE. - * DATE/TIME Represented as days + fraction of days. - */ -class datetime_t : private impl::datetime_base -{ -public: - - /// UTC/Local conversion mode. - struct utc_convert_mode - { - enum type - { - none, ///< No conversion. - local_to_utc, ///< Convert from local to utc. - utc_to_local ///< Convert from utc to local. - }; - }; - - /// Describe how to get the timezone bias. - struct timezone_bias_mode - { - enum type - { - standard, ///< Standard timezone offset - daylight_saving ///< Summer timezone offset - }; - }; - - /// Root which a time uses as an offset. - struct locality - { - enum type - { - utc, ///< A local timezone date/time. - local ///< A UTC date/time. - }; - }; - - /** \name Constructors. - * Attach to various system date/time types. - */ - //@{ - /// Constructor - datetime_t() { dt_ = 0.;} - - /// Constructor from raw DATE type. - explicit datetime_t(DATE date) - { - dt_ = date; - } - - //! Construct from date/time components. - /** If conversion fails, an valid() will return false. - */ - explicit datetime_t(int year, int month, int day, int hours=-1, int minutes=0, int seconds=0, int milliseconds=0) - { - if (!oledate_from_datetime_( &dt_, (unsigned short)year, (unsigned short)month, - (unsigned short)day, (unsigned short)hours, (unsigned short)minutes, (unsigned short)seconds, (unsigned short) milliseconds, - (hours < 0)?cmOnlyDate:cmBoth )) - set_invalid_(); - } - - /// Initialise as invalid. - datetime_t( dt_invalid_t) { dt_ = dt_invalid_; } - /// Initialise as null. - datetime_t( dt_null_t) { dt_ = dt_null_; } - /// Initialise as zero. - datetime_t( dt_zero_t) { dt_ = 0.; } - - /// Get a 'NULL' datetime. - static datetime_t get_null() { return datetime_t( DATE(dt_null_) ); } - /// Get a 'zero' datetime. - static datetime_t get_zero() { return datetime_t( DATE(0) ); } - - - //! Construct from a SYSTEMTIME. - /** Defaults to no conversion! - * \sa from_systemtime to_systemtime - */ - explicit datetime_t(const SYSTEMTIME& systimeSrc) - { - if (!from_systemtime(systimeSrc)) - set_invalid_(); - } - - /** - * Construct from a @e SYSTEMTIME. - * - * @param source - * @e SYSTEMTIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - */ - explicit datetime_t( - const SYSTEMTIME& source, utc_convert_mode::type utc_mode, - const datetime_t& conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) - { - if (!from_systemtime(source, utc_mode, conversion_time, utc_or_local)) - set_invalid_(); - } - - /** - * Construct from a @e SYSTEMTIME. - * - * @param source - * @e SYSTEMTIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param bias_mode - * Specify whether the local time is daylight/standard time. - */ - explicit datetime_t( - const SYSTEMTIME& source, utc_convert_mode::type utc_mode, - timezone_bias_mode::type bias_mode) - { - if (!from_systemtime(source, utc_mode, bias_mode)) - set_invalid_(); - } - - /** - * Construct from a @e FILETIME. - * - * Defaults to no timezone conversion. FILETIME values are a tricky beast. - * FILETIMEs on FAT are local, as are ZIP files (mostly). On shares and - * NTFS, they are UTC. - * - * @param source - * @e FILETIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - * - * @sa from_filetime to_filetime - */ - explicit datetime_t( - const FILETIME& source, - utc_convert_mode::type utc_mode=utc_convert_mode::none, - const datetime_t& conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) - { - if (!from_filetime(source, utc_mode, conversion_time, utc_or_local)) - set_invalid_(); - } - - /** - * Construct from a @e FILETIME. - * - * Defaults to no timezone conversion. FILETIME values are a tricky beast. - * FILETIMEs on FAT are local, as are ZIP files (mostly). On shares and - * NTFS, they are UTC. - * - * @param source - * @e FILETIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param bias_mode - * Specify whether the local time is daylight/standard time. - * - * @sa from_filetime to_filetime - */ - explicit datetime_t( - const FILETIME& source, utc_convert_mode::type utc_mode, - timezone_bias_mode::type bias_mode) - { - if (!from_filetime(source, utc_mode, bias_mode)) - set_invalid_(); - } - - /** - * Construct from a Unix time. - * - * Defaults to conversion from utc to local time as time_t is in UTC. - * - * @param source - * Unix time being converted. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - * - * @sa from_unixtime to_unixtime - */ - explicit datetime_t( - time_t source, - utc_convert_mode::type utc_mode=utc_convert_mode::utc_to_local, - const datetime_t& conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) - { - if (!from_unixtime(source, utc_mode, conversion_time, utc_or_local)) - set_invalid_(); - } - - /** - * Construct from a Unix time. - * - * Defaults to conversion from utc to local time as time_t is in UTC. - * - * @param source - * Unix time being converted. - * @param utc_mode - * Timezone conversion mode. - * @param bias_mode - * Specify whether the local time is daylight/standard time. - * - * @sa from_unixtime to_unixtime - */ - explicit datetime_t( - time_t source, utc_convert_mode::type utc_mode, - timezone_bias_mode::type bias_mode) - { - if (!from_unixtime(source, utc_mode, bias_mode)) - set_invalid_(); - } - - //! Copy constructor. - datetime_t(const datetime_t& date) - { - dt_ = date.dt_; - } - - //@} - - /// Create a const reference. - static const datetime_t& create_const_reference(const DATE& s) throw() - { return *reinterpret_cast(&s); } - /// Create a non-const reference. - static datetime_t& create_reference(DATE& s) throw() - { return *reinterpret_cast(&s); } - - /// Day-of-week enumeration. - enum day_of_week { - dow_sun=0, dow_mon, dow_tue, dow_wed, dow_thu, dow_fri, dow_sat - }; - - /// Return the current time. - static datetime_t now() - { - SYSTEMTIME lt; - ::GetLocalTime(<); - return datetime_t(lt); - } - /// Return the current utc time. - static datetime_t now_utc() - { - SYSTEMTIME lt; - ::GetSystemTime(<); - return datetime_t(lt); - } - - /** Add specified number of months. - * If the day is not valid (ie 1 month from 31 December) - * an exception will be thrown. - * \todo Add an enum to be more smart about this. - */ - datetime_t &add_months(int inc_months) - { - int year,month,day; - - split_date(&year,&month,&day); - long months = (month-1)+(year*12)+inc_months; - - long quot,rem; - COMET_DIVMOD_(quot, rem, months, 12); - if(!set_date( quot, rem+1, day)) - throw datetime_exception("Invalid Date"); - - return *this; - } - - /// Add specified number of years. - datetime_t &add_years(int inc_years) - { - int year,month,day; - split_date(&year,&month,&day); - if(!set_date( year+inc_years, month, day)) - throw datetime_exception("Invalid Date"); - return *this; - } - - /// Return year/month/day values. - void split_date(int *year, int *month, int *day) const - { - if (good()) - { - long datePart = split_oledate_as_absdate_(dt_); - if (date_from_absdate_( datePart, year, month, day) ) - return; - } - throw datetime_exception("Invalid Date"); - } - - /// Return hours/minutes/second values. - void split_time( int *hours, int *minutes, int *seconds, int *milliseconds=NULL) const - { - if(!good() || !datetime_from_oledate_(dt_, NULL, NULL, NULL, NULL, hours, minutes, seconds, milliseconds, cmOnlyTime)) - throw datetime_exception("Invalid DateTime"); - } - /// Return date/time split up. - void split(int *year, int *month, int *day, int *hours, int *minutes, int *seconds, int *milliseconds=NULL) - { - if(!good() || !datetime_from_oledate_(dt_, year, month, day, NULL, hours, minutes, seconds, milliseconds, cmBoth)) - throw datetime_exception("Invalid DateTime"); - } - - - /// \name Access date/time parts. - //@{ - /// Year. - int year() const - { - int year,month,day; - split_date(&year,&month,&day); - return year; - } - /// Month of year (1-based) - int month() const - { - int year,month,day; - split_date(&year,&month,&day); - return month; - } - /// Day of month (1-based) - int day() const - { - int year,month,day; - split_date(&year,&month,&day); - return day; - } - /// Hour part of time (0-based) ??? - int hour() const - { - int hours,minutes,seconds; - split_time(&hours,&minutes,&seconds); - return hours; - } - /// Minute part of time (0-based) - int minute() const - { - int hours,minutes,seconds; - split_time(&hours,&minutes,&seconds); - return minutes; - } - /// Second - int second() const - { - int hours,minutes,seconds; - split_time(&hours,&minutes,&seconds); - return seconds; - } - /// Milliseconds - int millisecond() const - { - int hours,minutes,seconds,ms; - split_time(&hours,&minutes,&seconds,&ms); - return ms; - } - - /// The day of week. - day_of_week dow() const - { - long datePart; - datePart = split_oledate_as_absdate_(dt_); - int wday; - if(!good() || !dow_from_absdate_(datePart, &wday)) - throw datetime_exception("Invalid Date"); - return day_of_week(wday); - } - /// Day of the year (0 -based) - int year_day() const - { - if (good()) - { - long datepart = split_oledate_as_absdate_(dt_); - int y,m,d; - date_from_absdate_(datepart, &y,&m,&d); - long firstday; - if ( absdate_from_date_(&firstday, y, 1, 1)) - return 1+ ( datepart - firstday); - } - throw datetime_exception("Invalid Date"); - } - /// Days in the month; - int days_in_month() - { - int year,month,day; - split_date(&year,&month,&day); - return impl::datetime_base::days_in_month(year,month); - } - //@} - static inline int days_in_month(int year, int month) - { - return impl::datetime_base::days_in_month(year,month); - } - - /// \name Assignment operators - //@{ - - datetime_t &operator=( const datetime_t& date) - { - dt_ = date.dt_; - return *this; - } - - datetime_t &operator=( DATE date ) - { - set_invalid_check_range_(date); - return *this; - } - //@} - - ///\name Comparison operators - //@{ - bool operator==(const datetime_t& date) const{ return date.dt_==dt_; } - bool operator!=(const datetime_t& date) const{ return date.dt_!=dt_; } - bool operator<(const datetime_t& date) const { return to_double(dt_)(const datetime_t& date) const{ return to_double(dt_)>to_double(date.dt_); } - bool operator<=(const datetime_t& date) const{ return to_double(dt_)<=to_double(date.dt_); } - bool operator>=(const datetime_t& date) const{ return to_double(dt_)>=to_double(date.dt_); } - bool operator==(dt_invalid_t) const { return invalid(); } - bool operator!=(dt_invalid_t) const { return !invalid(); } - bool operator==(dt_zero_t) const { return dt_==0.; } - bool operator!=(dt_zero_t) const { return dt_!=0.; } - bool operator==(dt_null_t) const { return null(); } - bool operator!=(dt_null_t) const { return !null(); } - //@} - - ///\name Arithmetic operators - //@{ - datetime_t operator+(const timeperiod_t& dateSpan) const - { - datetime_t dt(*this); - dt+=dateSpan; - return dt; - } - datetime_t operator-(const timeperiod_t& dateSpan) const - { - datetime_t dt(*this); - dt-=dateSpan; - return dt; - } - datetime_t& operator+=(const timeperiod_t &dateSpan) - { - COMET_ASSERT( good() ); - if(!good()) - set_invalid_(); - else - set_invalid_check_range_(to_date( to_double(dt_) + (double)dateSpan )); - - return *this; - } - datetime_t& operator-=(const timeperiod_t &dateSpan) - { - COMET_ASSERT( good() ); - if(!good()) - set_invalid_(); - else - set_invalid_check_range_(to_date( to_double(dt_) - (double)dateSpan )); - return *this; - } - timeperiod_t operator-(const datetime_t& date) const - { - COMET_ASSERT( good() && date.good() ); - if( !good() || ! date.good()) - return timeperiod_t::invalid_period(); - return to_double(dt_) - to_double(date.dt_); - } - datetime_t &operator++() - { - (*this)+=1; - return *this; - } - datetime_t operator++(int) - { - datetime_t t(*this); (*this)+=1; return t; - } - datetime_t &operator--() - { - (*this)-=1; return *this; - } - - datetime_t operator--(int) - { - datetime_t t(*this); (*this)-=1; return t; - } - //@} - - /// return true if the date is marked 'invalid'. - inline bool invalid() const { return dt_ == ((double) dt_invalid_); } - /// return true if the date is marked 'null' - inline bool null() const { return dt_ == ((double) dt_null_); } - - /// return true if date is zero - inline bool zero() const { return dt_ == 0; } - - /** return true if the date is not marked 'invalid'. - * \deprecated - */ - inline bool valid() const { return !invalid(); } - - /// Return true if the date is usable. - inline bool good() const - { - switch ((long)dt_) - { - case dt_invalid_: case dt_null_: return false; - default: return true; - } - } - - ///\name Accessor methods - //@{ - DATE get() const { if(invalid()) throw("Invalid Date"); return null()?0:dt_;} - DATE in() const { return get(); } - DATE *in_ptr() const { return const_cast(&dt_);} - DATE *out() { return &dt_;} - DATE *inout() { return &dt_;} - //@} - /** Set date part as year/month/day. - * \param year Year (from year 0 - as in 2000). - * \param month Month of year (1-based). - * \param day Day of month (1-based). - * \retval true Successfully set date. - * \retval false Conversion unsuccessful - date not set. - */ - bool set_date( int year, int month, int day) - { - long datePart, timePart; - datePart = split_oledate_as_absdate_(dt_, &timePart, true); - if (!absdate_from_date_(&datePart, year,month, day)) - return false; - dt_ = join_absdate_as_oledate_( datePart, timePart); - return true; - } - - /** Set time part as hours/minutes/seconds. - * \param hours As in a 24-hour clock. - * \param minutes Minutes past the hour. - * \param seconds Seconds past the minute. - * \param milliseconds Milliseconds past the second. - * \retval true Successfully set time. - * \retval false Conversion unsuccessful - time not set. - */ - bool set_time( int hours, int minutes, int seconds, int milliseconds =0) - { - long datePart, timePart; - datePart = split_oledate_as_absdate_(dt_, &timePart, true); - if (!milliseconds_from_time_(&timePart, (unsigned short)hours, (unsigned short)minutes, (unsigned short)seconds, (unsigned short)milliseconds)) - return false; - dt_ = join_absdate_as_oledate_( datePart, timePart); - return true; - } - /** Set both date and time. - * \param year Year (from year 0 - as in 2000). - * \param month Month of year (1-based). - * \param day Day of month (1-based). - * \param hours As in a 24-hour clock. - * \param minutes Minutes past the hour. - * \param seconds Seconds past the minute. - * \param milliseconds Milliseconds past the second. - * \retval true Successfully set date/time. - * \retval false Conversion unsuccessful - date/time not set. - */ - bool set_date_time(int year, int month, int day, int hours, int minutes, int seconds, int milliseconds = 0 ) - { - return oledate_from_datetime_(&dt_, (unsigned short)year, (unsigned short)month, (unsigned short)day, (unsigned short)hours, (unsigned short)minutes, (unsigned short)seconds, (unsigned short)milliseconds, cmBoth); - } - - /// Flags for formatting. - enum format_flags{ - ff_default = 0, ///< Default formatting. - ff_system_locale = LOCALE_NOUSEROVERRIDE, ///< Use system locale - ff_hijri = VAR_CALENDAR_HIJRI, ///< Use HIJRI calendar. - ff_thai = 0x10, /* VAR_CALENDAR_THAI, */ ///< Use thai calendar. - ff_gregorian = 0x20, /*VAR_CALENDAR_GREGORIAN*/ ///< Use gregorian calendar. - ff_four_digits = VAR_FOURDIGITYEARS, ///< Four digits for years - ff_time_only = VAR_TIMEVALUEONLY, ///< Only output time. - ff_date_only = VAR_DATEVALUEONLY ///< Only output date. - }; - /** Parse bstring to a datetime_t. - * \param val String to parse. - * \param flags valid format_flags are: ff_default, ff_system_locale, ff_hijri, ff_time_only, ff_date_only - * \param locale Locale to use. Default \p locale is the user default. - */ - datetime_t &parse( const bstr_t &val, format_flags flags = ff_default, LCID locale = LOCALE_USER_DEFAULT) - { - VarDateFromStr( val.in(), locale, flags, &dt_) | raise_exception; - return *this; - } - - /** Return a double that is sortable / can be subtracted. - * Dates before 12/30/1899 will not sort propperly. - */ - double as_sortable_double() const { COMET_ASSERT( good() ); return to_double(dt_); } - -public: - - /** - * Convert a local time to UTC. - * - * Takes a local time (like that inside a ZIP file, or on a FAT file - * system) and converts it to UTC, using the timezone rules in effect as - * of the date specified. Typically the "as of" date is specified as the - * modification or creation date of the ZIP file, or left missing to - * default to the given local date. It is also possible to specify if the - * "as of" date is in UTC or not. If missing, it defaults to false. - */ - - /** - * Create UTC version of this local time. - * - * Assuming this datetime is a local time (like that inside a ZIP file or - * on a FAT file system) this creates a new version of it as a UTC datetime. - * By default, the adjustment is made based on the timezone rules that - * would have been in effect at the UTC date this object represents. - * However, the time can also be converted as though it were on another - * date by passing another date as an argument. - * - * Typically the "as of" date is specified as the current time or possibly - * the modification or creation date of an enclosing ZIP file. - * - * @param as_of_date - * Optional alternative date on which to base the timezone conversion. - * @param utc_or_local - * Whether `as_of_date` is a local or UTC date. Defaults to UTC. - */ - datetime_t local_to_utc( - datetime_t as_of_date=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) const - { - // if they didn't specify an AS OF date, use the current date which - // will be local - if (as_of_date.invalid()) - { - utc_or_local = locality::local; // no break - as_of_date = *this; - } - - double timezone_bias = - local_timezone_bias(as_of_date, utc_or_local) / (24.*60.); - double local_date_continuous = to_double(dt_); - DATE utc_date = to_date(local_date_continuous + timezone_bias); - - return datetime_t(utc_date); - } - - /** - * Create a UTC version of this local time, explicitly using standard - * time or daylight savings. - * - * Assuming this datetime is a local time (like that inside a ZIP file or - * on a FAT file system) this creates a new version of it as a UTC datetime. - * Depending on the argument passed, the adjustment is made as though - * daylight savings were in operation in the local timezone or not. - * - * @param bias_mode - * Whether to assume daylight savings is in effect. - * - * - standard: create local time as though it were not - * daylight savings time - * - daylight_savings: create local time as though it were daylight - * savings time - */ - datetime_t local_to_utc(timezone_bias_mode::type bias_mode) const - { - double timezone_bias = local_timezone_bias(bias_mode) / (24.*60.); - double local_date_continuous = to_double(dt_); - DATE utc_date = to_date(local_date_continuous + timezone_bias); - - return datetime_t(utc_date); - } - - /** - * Create local time version of this UTC time. - * - * Assuming this datetime is a UTC time (like that on an NTFS file system) - * this creates a new version of it in the local timezone. By default, - * the adjustment is made based on the timezone rules that would have been - * in effect at the UTC date this object represents. However, the time can - * also be converted as though it were on another date by passing another - * date as an argument. - * - * Typically the "as of" date is specified as the current time or possibly - * the modification or creation date of an enclosing ZIP file. - * - * @param as_of_date - * Optional alternative date on which to base the timezone conversion. - * @param utc_or_local - * Whether `as_of_date` is a local or UTC date. Defaults to UTC. - */ - datetime_t utc_to_local( - datetime_t as_of_date=datetime_t(dt_invalid), - locality::type utc_or_local=locality::utc) const - { - // if they didn't specify an AS OF date, use the current date which - // will be UTC - if (as_of_date.invalid()) - { - as_of_date = *this; - utc_or_local = locality::utc; - } - - long timezone_bias = local_timezone_bias(as_of_date, utc_or_local); - double timezone_bias_days = timezone_bias / (24.*60.); - double utc_date_continuous = to_double(dt_); - DATE local_date = to_date(utc_date_continuous - timezone_bias_days); - - return datetime_t(local_date); - } - - /** - * Create local time version of this UTC time, explicitly using standard - * time or daylight savings. - * - * Assuming this datetime is a UTC time (like that on an NTFS file system) - * this creates a new version of it in the local timezone. Depending on - * the argument passed, the adjustment is made as though daylight savings - * were in operation in the timezone or not. - * - * @param bias_mode - * Whether to assume daylight savings. - * - * - standard: create local time as though it were not - * daylight savings time - * - daylight_savings: create local time as though it were daylight - * savings time - */ - datetime_t utc_to_local(timezone_bias_mode::type bias_mode) const - { - long timezone_bias = local_timezone_bias(bias_mode); - double timezone_bias_days = timezone_bias / (24.*60.); - double utc_date_continuous = to_double(dt_); - DATE local_date = to_date(utc_date_continuous - timezone_bias_days); - - return datetime_t(local_date); - } - - /** Convert to SYSTEMTIME struct. - */ - bool to_systemtime( SYSTEMTIME *sysTime) const - { - int year,month,day,dow,hour,minute,second,ms; - if (!datetime_from_oledate_( dt_, &year, &month, &day, &dow, &hour, &minute, &second, &ms, cmBoth)) - return false; - sysTime->wYear = (short)year; - sysTime->wMonth = (short)month; - sysTime->wDay = (short)day; - sysTime->wDayOfWeek = (short)dow; // Sunday=0 - sysTime->wHour = (short)hour; - sysTime->wMinute = (short)minute; - sysTime->wSecond = (short)second; - sysTime->wMilliseconds = (short)ms; - return true; - } - - /** Convert from a \e SYSTEMTIME struct. - */ - bool from_systemtime(const SYSTEMTIME& src) - { - return oledate_from_datetime_( &dt_, src.wYear, src.wMonth, src.wDay, src.wHour, src.wMinute, src.wSecond, src.wMilliseconds, cmBoth); - } - - /** - * Convert from a @e SYSTEMTIME struct. - * - * @param source - * @e SYSTEMTIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - */ - bool from_systemtime( - const SYSTEMTIME& source, utc_convert_mode::type utc_mode, - const datetime_t& conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) - { - if (!from_systemtime(source)) - return false; - - switch(utc_mode) - { - case utc_convert_mode::none: - break; - case utc_convert_mode::local_to_utc: - *this = local_to_utc(conversion_time, utc_or_local); - break; - case utc_convert_mode::utc_to_local: - *this = utc_to_local(conversion_time, utc_or_local); - break; - } - return true; - } - - /** - * Convert from a @e SYSTEMTIME struct. - * - * @param source - * @e SYSTEMTIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param bias_mode - * Specify whether the local time is daylight/standard time. - */ - bool from_systemtime( - const SYSTEMTIME& source, utc_convert_mode::type utc_mode, - timezone_bias_mode::type bias_mode) - { - if (!from_systemtime(source)) - return false; - - switch(utc_mode) - { - case utc_convert_mode::none: - break; - case utc_convert_mode::local_to_utc: - *this = local_to_utc(bias_mode); - break; - case utc_convert_mode::utc_to_local: - *this = utc_to_local(bias_mode); - break; - } - return true; - } - - /** Convert from a \e FILETIME struct. - */ - bool from_filetime(const FILETIME& src) - { - double ftd = (((__int64(src.dwHighDateTime) << 32 | src.dwLowDateTime)/(36000000000.)) - 2620920.)/24; - return set_check_range_( to_date(ftd)); - } - - /** - * Convert from a @e FILETIME struct. - * - * @param source - * @e FILETIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - */ - bool from_filetime( - const FILETIME& source, utc_convert_mode::type utc_mode, - const datetime_t& conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) - { - if (!from_filetime(source)) - return false; - - switch(utc_mode) - { - case utc_convert_mode::none: - break; - case utc_convert_mode::local_to_utc: - *this = local_to_utc(conversion_time, utc_or_local); - break; - case utc_convert_mode::utc_to_local: - *this = utc_to_local(conversion_time, utc_or_local); - break; - } - return true; - } - - /** - * Convert from a @e FILETIME struct. - * - * @param source - * @e FILETIME being converted. - * @param utc_mode - * Timezone conversion mode. - * @param bias_mode - * Specify whether the local time is daylight/standard time. - */ - bool from_filetime( - const FILETIME& source, utc_convert_mode::type utc_mode, - timezone_bias_mode::type bias_mode) - { - if (!from_filetime(source)) - return false; - - switch(utc_mode) - { - case utc_convert_mode::none: - break; - case utc_convert_mode::local_to_utc: - *this = local_to_utc(bias_mode); - break; - case utc_convert_mode::utc_to_local: - *this = utc_to_local(bias_mode); - break; - } - return true; - } - - /** Convert to a \e FILETIME struct. - */ - bool to_filetime( FILETIME *filetime) const - { - double val = ((to_double(dt_) * 24.) + 2620920.)*(36000000000.) ; - - __int64 llval = __int64(val); - filetime->dwHighDateTime = long (llval >> 32); - filetime->dwLowDateTime = long (llval); - return val > 0; - } - - /** Convert from a \e tm struct. - */ - bool from_tm(const struct tm &tm_time) - { - return from_tm_( tm_time, &dt_, cmBoth); - } - - /** - * Convert from a @e tm struct. - * @param tm_time - * @e tm struct being converted. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * Only used if the information cannot be derived from the @e tm struct. - * @param utc_or_local - * Whether the optional conversion date is UTC or local. - */ - bool from_tm( - const struct tm &tm_time, utc_convert_mode::type utc_mode, - datetime_t conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) - { - if(!from_tm(tm_time)) - return false; - - switch(utc_mode) - { - case utc_convert_mode::none: - break; - case utc_convert_mode::local_to_utc: - // Take advantage of tm_isdst to work out dst mode! - // - // XXX: This doesn't use the conversion_time at all. No, I don't - // know why we have this behaviour - if (tm_time.tm_isdst == 0) - { - *this = local_to_utc(timezone_bias_mode::standard); - } - else if (tm_time.tm_isdst > 0) - { - *this = local_to_utc(timezone_bias_mode::daylight_saving); - } - else - { - *this = local_to_utc(conversion_time, utc_or_local); - } - break; - case utc_convert_mode::utc_to_local: - *this = utc_to_local(conversion_time, utc_or_local); - break; - } - - return true; - } - - /** - * Convert from a @e tm struct. - * - * @param tm_time - * @e 'tm' struct being converted. - * @param utc_mode - * Timezone conversion mode. - * @param daylight_hint - * Strategy to use for daylight savings time if it cannot be derived - * from the @e tm struct. - */ - bool from_tm( - const struct tm &tm_time, utc_convert_mode::type utc_mode, - timezone_bias_mode::type daylight_hint) - { - if(!from_tm(tm_time)) - return false; - - switch(utc_mode) - { - case utc_convert_mode::none: - break; - case utc_convert_mode::local_to_utc: - // Take advantage of tm_isdst to work out dst mode! - // - // XXX: This overrides the specified conversion. No, I don't - // know why we have this behaviour - if (tm_time.tm_isdst == 0) - { - *this = local_to_utc(timezone_bias_mode::standard); - } - else if (tm_time.tm_isdst > 0) - { - *this = local_to_utc(timezone_bias_mode::daylight_saving); - } - else - { - *this = local_to_utc(daylight_hint); - } - break; - case utc_convert_mode::utc_to_local: - *this = utc_to_local(daylight_hint); - break; - } - - return true; - } - - - /** - * Convert from a @e time_t value. - * - * @param source - * Unix time to convert. - * @param utc_mode - * Timezone conversion mode. By default converts a UTC time_t into - * a local datetime. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - */ - bool from_unixtime( - time_t source, - utc_convert_mode::type utc_mode=utc_convert_mode::utc_to_local, - const datetime_t& conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) - { - FILETIME ft; - __int64 ll = (__int64(source) * 10000000L) + 116444736000000000L; - ft.dwLowDateTime = (DWORD) ll; - ft.dwHighDateTime = (DWORD)(ll >>32); - return from_filetime(ft, utc_mode, conversion_time, utc_or_local); - } - - /** - * Convert from a @e time_t value. - * - * @param source - * Unix time being converted. - * @param utc_mode - * Timezone conversion mode. - * @param bias_mode - * Specify whether the local time is daylight/standard time. - */ - bool from_unixtime( - time_t source, utc_convert_mode::type utc_mode, - timezone_bias_mode::type bias_mode) - { - FILETIME ft; - __int64 ll = (__int64(source) * 10000000L) + 116444736000000000L; - ft.dwLowDateTime = (DWORD) ll; - ft.dwHighDateTime = (DWORD)(ll >>32); - return from_filetime(ft, utc_mode, bias_mode); - } - - /** - * Convert to a @e time_t value. - * - * @param unix_time_out - * Destination of conversion result. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - */ - bool to_unixtime( - time_t* unix_time_out, - utc_convert_mode::type utc_mode=utc_convert_mode::local_to_utc, - const datetime_t& conversion_time=datetime_t(dt_invalid), - locality::type utc_or_local=locality::local) const - { - datetime_t dtval; - - switch(utc_mode) - { - case utc_convert_mode::none: - dtval = *this; - break; - case utc_convert_mode::local_to_utc: - dtval = local_to_utc(conversion_time, utc_or_local); - break; - case utc_convert_mode::utc_to_local: - dtval = utc_to_local(conversion_time, utc_or_local); - break; - } - - FILETIME ft; - if (!dtval.to_filetime(&ft)) - return false; - - *unix_time_out = - time_t(((__int64(ft.dwHighDateTime) << 32 | ft.dwLowDateTime) - - 116444736000000000L)/10000000L); - return true; - } - - /** - * Convert to a @e time_t value. - * - * @param unix_time_out - * Destination of conversion result. - * @param utc_mode - * Timezone conversion mode. - * @param conversion_time - * Optional override date to use for calculating daylight/standard time. - * @param utc_or_local - * Specify whether the override time is a UTC or local date. - */ - bool to_unixtime( - time_t* unix_time_out, utc_convert_mode::type utc_mode, - timezone_bias_mode::type bias_mode) const - { - datetime_t dtval; - - switch(utc_mode) - { - case utc_convert_mode::none: - dtval = *this; - break; - case utc_convert_mode::local_to_utc: - dtval = local_to_utc(bias_mode); - break; - case utc_convert_mode::utc_to_local: - dtval = utc_to_local(bias_mode); - break; - } - - FILETIME ft; - if (!dtval.to_filetime(&ft)) - return false; - - *unix_time_out = - time_t(((__int64(ft.dwHighDateTime) << 32 | ft.dwLowDateTime) - - 116444736000000000L)/10000000L); - return true; - } - - /** - * Calculate the local timezone's offset from UTC on the given date, in - * minutes. - * - * This offset is called the bias and is the number of minutes to subtract - * from a UTC time to make a local one. - * - * @param dt - * The date and time for which to calculate the bias. - * @param is_utc - * Whether to interpret the date as UTC or local. - * - * @todo A better way might be to make UTCness a fundamental property of - * times at construction so they know whether they are URL or local - * themselves. - */ - static long local_timezone_bias(datetime_t dt, locality::type utc_or_local) - { - TIME_ZONE_INFORMATION tzi; - ::GetTimeZoneInformation(&tzi); - - long baseBias = tzi.Bias; - - // if we've even got both time zones set, we have to choose which is - // active... - if ((tzi.DaylightDate.wMonth != 0) && (tzi.StandardDate.wMonth != 0)) - { - // all local standard time/daylight savings time rules are based on - // local-time, so add the base bias FIRST - if (utc_or_local == locality::utc) - dt -= (baseBias / (24.*60.)); - - SYSTEMTIME sysTime; - if (!dt.to_systemtime(&sysTime)) - throw datetime_exception("Invalid Date"); - - bool DSTbeforeLST = - tzi.DaylightDate.wMonth < tzi.StandardDate.wMonth; - - bool afterDaylightStarts = - tz_on_or_after_in_year(sysTime, tzi.DaylightDate); - bool afterStandardStarts = - tz_on_or_after_in_year(sysTime, tzi.StandardDate); - - if (((afterDaylightStarts== afterStandardStarts)!= DSTbeforeLST)) - return baseBias + tzi.DaylightBias; - } - - return baseBias + tzi.StandardBias; - } - - /** - * Calculate the local timezone's offset from UTC in minutes. - * - * The value depends on the argument to the function which specifies - * whether to assume daylight savings is in operation in the local timezone. * occuring outside of daylight savings time. - */ - static long local_timezone_bias(timezone_bias_mode::type dst_state) - { - TIME_ZONE_INFORMATION tzi; - ::GetTimeZoneInformation(&tzi); - - switch (dst_state) - { - case timezone_bias_mode::standard: - return tzi.Bias + tzi.StandardBias; - case timezone_bias_mode::daylight_saving: - return tzi.Bias + tzi.DaylightBias; - default: - COMET_ASSERT(!"Invalid timezone daylight savings state"); - } - } - -protected: - - /** Compares two SYSTEMTIME values to decide if the second is after (or on) the - * first. - * If the year is supplied, the two dates are assumed static, otherwise it - * computes the proper day-of-week instance (like last Sunday in October) for - * the specified test year. See the encoding rules documented with - * TIME_ZONE_INFORMATION - */ - static bool tz_on_or_after_in_year(SYSTEMTIME testST, SYSTEMTIME tziST) - { - // assume month check first... - long cmp = testST.wMonth - tziST.wMonth; - if (cmp!=0) - return cmp > 0; - - SYSTEMTIME absST; - - // if year is given, then the specified date is already exact... - if (tziST.wYear != 0) - { - // first test the year... - cmp = testST.wYear - tziST.wYear; - if (cmp !=0) - return cmp > 0; - // carry on with the exact day known - absST = tziST; - } - else - { - // compute the appropriate day from the specified instance of the set day-of-week - // use the testST's year for the year in the calculation - tz_convert_relative_dow_to_absolute(testST, tziST, &absST); - } - - // month same... check day/hour/minute/second/millisecond - if ((cmp = testST.wDay - absST.wDay)==0) - if ((cmp = testST.wHour - absST.wHour)==0) - if ((cmp = testST.wMinute - absST.wMinute)==0) - if ((cmp = testST.wSecond - absST.wSecond)==0) - cmp = testST.wMilliseconds - absST.wMilliseconds; - return cmp >= 0; - } - - // Computes the proper day-of-week instance (like last Sunday in October) for the - // specified test year. See the encoding rules documented with TIME_ZONE_INFORMATION. - // This ASSUMES that testST.wMonth == tziST.wMonth - static void tz_convert_relative_dow_to_absolute(const SYSTEMTIME &testST , const SYSTEMTIME &tziST, SYSTEMTIME *absST) - { - COMET_ASSERT(testST.wMonth == tziST.wMonth); - - // Set up the absolute date except for wDay, which we must find - absST->wYear = testST.wYear; // year is only valid in the testST - int month = absST->wMonth = tziST.wMonth; - absST->wDayOfWeek = tziST.wDayOfWeek; - - absST->wHour = tziST.wHour; - absST->wMinute = tziST.wMinute; - absST->wSecond = tziST.wSecond; - absST->wMilliseconds = tziST.wMilliseconds; - - // Find a day of the month that falls on the same day of the week as - // the transition. - - // If test day is the 29th of the month (testST.wDay = 29) and today - // is a Tuesday (testST.wDayOfWeek = 2) and the transition occurs on - // Sunday (testST.wDayOfWeek = 0) we compute absDay = 29 + 0 + 7 - - // 2, giving the 34th - - // then adjust that to a day of month adjustment - long absDay = ((testST.wDay + tziST.wDayOfWeek + (7-1) - testST.wDayOfWeek) % 7) +1; - - // now multiply this time the "which DOW" setting from the TZI - // (1 = first, 5 = last) - // add the requisite number of weeks to the base point - absDay += (7 * (tziST.wDay - 1)); - - // and if we exceeded the number of days in the month, back up by a - // week (this handles the 5=last situation) - - int daysInMonth = days_in_month( absST->wYear, month); - - if (absDay > daysInMonth) - absDay -= 7; - - absST->wDay = (unsigned short)absDay; - } - -public: - - /** Format datetime_t as bstr. - * \param flags Format (can be or-ed). All format_flags are valid. - * \param locale Locale ID (default to User Default. - */ - bstr_t format( format_flags flags = ff_default , LCID locale = LOCALE_USER_DEFAULT) const - { - bstr_t strDate; - if (!good()) - { - return strDate; - } - VarBstrFromDate(dt_, locale, flags, strDate.out()) | raise_exception; - return strDate; - } - - /** Format datetime_t as basic_string. - * \param fmt See system documentation for strftime for details. - */ - template - std::basic_string format( const std::basic_string &fmt ) const - { - return format(fmt.c_str()); - } - - /** Format datetime_t as basic_string. - * \param fmt See system documentation for strftime for details. - */ - template - std::basic_string format( const CHAR *fmt ) const - { - if (!good()) - { - return std::basic_string(); - } - struct tm src; - if(!to_tm_( dt_, &src, NULL)) - throw datetime_exception("Invalid Date"); - - typename auto_buffer_t::size_type capacity = 50; - auto_buffer_t buf(capacity); - size_t ret; - while( (ret = str_formattime( buf.get() , capacity, fmt, &src ))==0 && capacity < 1024) - { - capacity += 50; - buf.resize(capacity); - } - if(ret == 0) - buf.at(0)='\0'; - - return std::basic_string(buf.get(), ret); - } - - /// Detach the raw date from the class. - DATE detach() - { - DATE val = dt_; - dt_ = 0.; - return val; - } - - /// Detach the raw date from the class. - static DATE detach( datetime_t &dt) - { - return dt.detach(); - } - - /// Stream operator. - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const datetime_t &val) - { - os << val.format(); - return os; - } - - /// Stream operator. - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const datetime_t &val) - { - os << val.format(); - return os; - } - -private: -}; -#undef COMET_DIVMOD_ -//@} - -} -#endif diff --git a/EyeTab_SP2/comet/dispatch.h b/EyeTab_SP2/comet/dispatch.h deleted file mode 100644 index c631a71..0000000 --- a/EyeTab_SP2/comet/dispatch.h +++ /dev/null @@ -1,675 +0,0 @@ -/** \file - * Provides dispatch driver via wrap_t< ::IDispatch> - * Provides dynamic implementation of IDispatch via dynamic_dispatch. - */ -/* - * Copyright © 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_DISPATCH_H -#define COMET_DISPATCH_H - -#include - -#include - -namespace comet { - /*! \addtogroup Interfaces - */ - //@{ - - /** Specialisation of wrap_t for IDispatch. - * Implements wrappers for the call-by name and call-by dispid for IDispatch methods - * and properties. The wrapper supports properties with up to 3 arguments and methods - * with up to 4 arguments. - * \code - com_ptr disp( my_dual_interface); - variant_t val = disp->get(L"Name"); - * \endcode - * See \ref cometcomptrsmartwrapper for details on wrap_t. - */ - template<> struct wrap_t< ::IDispatch> - { - /** Get property by dispid. - */ - variant_t get(DISPID id) - { - VARIANT result; - VARIANT* vars = 0; - DISPPARAMS disp = { vars, 0, 0, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - /** Get property by name. - */ - variant_t get(const wchar_t* name) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return get(id); - } - - /** Get property by dispid with 1 argument. - */ - variant_t get(DISPID id, const variant_t& a0) - { - VARIANT result; - VARIANT vars[1]; vars[0] = a0.in(); - DISPPARAMS disp = { vars, 0, 1, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - /** Get property by name with 1 argument. - */ - variant_t get(const wchar_t* name, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return get(id, a0); - } - - /** Get property by dispid with 2 arguments. - */ - variant_t get(DISPID id, const variant_t& a1, const variant_t& a0) - { - VARIANT result; - VARIANT vars[2]; vars[0] = a0.in(); vars[1] = a1.in(); - DISPPARAMS disp = { vars, 0, 2, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - /** Get property by name with 2 arguments. - */ - variant_t get(const wchar_t* name, const variant_t& a1, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return get(id, a1, a0); - } - - /** Get property by dispid with 3 arguments. - */ - variant_t get(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - VARIANT result; - VARIANT vars[3]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); - DISPPARAMS disp = { vars, 0, 3, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - /** Get property by name with 3 arguments. - */ - variant_t get(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return get(id, a2, a1, a0); - } - - /** Put property by dispid. - */ - void put(DISPID id, const variant_t& val) - { - VARIANT vars[1]; vars[0] = val.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 1, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - /** Put property by name. - */ - void put(const wchar_t* name, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - put(id, val); - } - - /** Put property with 1 argument by dispid. - */ - void put(DISPID id, const variant_t& a1, const variant_t& val) - { - VARIANT vars[2]; vars[0] = val.in(); vars[1] = a1.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 2, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - /** Put property with 1 argument by name. - */ - void put(const wchar_t* name, const variant_t& a1, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - put(id, a1, val); - } - - - /** Put property with 2 arguments by dispid. - */ - void put(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - VARIANT vars[3]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 3, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - /** Put property with 2 arguments by name. - */ - void put(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - put(id, a2, a1, val); - } - - /** Put property with 3 arguments by dispid. - */ - void put(DISPID id, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - VARIANT vars[4]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 4, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - /** Put property with 3 arguments by name. - */ - void put(const wchar_t* name, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - put(id, a3, a2, a1, val); - } - - /** Put property by reference by dispid. - */ - void putref(DISPID id, const variant_t& val) - { - VARIANT vars[1]; vars[0] = val.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 1, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - /** Put property by reference by name. - */ - void putref(const wchar_t* name, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - putref(id, val); - } - - void putref(DISPID id, const variant_t& a1, const variant_t& val) - { - VARIANT vars[2]; vars[0] = val.in(); vars[1] = a1.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 2, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - void putref(const wchar_t* name, const variant_t& a1, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - putref(id, a1, val); - } - - void putref(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - VARIANT vars[3]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 3, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - void putref(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - putref(id, a2, a1, val); - } - - void putref(DISPID id, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - VARIANT vars[4]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); - DISPID did = DISPID_PROPERTYPUT; - DISPPARAMS disp = { vars, &did, 4, 1 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - } - - void putref(const wchar_t* name, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - putref(id, a3, a2, a1, val); - } - - /** Call method by dispid. - */ - variant_t call(DISPID id) - { - VARIANT result; - VARIANT* vars = 0; - DISPPARAMS disp = { vars, 0, 0, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - /** Call method by name. - */ - variant_t call(const wchar_t* name) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return call(id); - } - - variant_t call(DISPID id, const variant_t& a0) - { - VARIANT result; - VARIANT vars[1]; vars[0] = a0.in(); - DISPPARAMS disp = { vars, 0, 1, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - variant_t call(const wchar_t* name, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return call(id, a0); - } - - variant_t call(DISPID id, const variant_t& a1, const variant_t& a0) - { - VARIANT result; - VARIANT vars[2]; vars[0] = a0.in(); vars[1] = a1.in(); - DISPPARAMS disp = { vars, 0, 2, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - variant_t call(const wchar_t* name, const variant_t& a1, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return call(id, a1, a0); - } - - variant_t call(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - VARIANT result; - VARIANT vars[3]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); - DISPPARAMS disp = { vars, 0, 3, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - variant_t call(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return call(id, a2, a1, a0); - } - - variant_t call(DISPID id, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - VARIANT result; - VARIANT vars[4]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); - DISPPARAMS disp = { vars, 0, 4, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - - variant_t call(const wchar_t* name, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return call(id, a3, a2, a1, a0); - } - variant_t call(DISPID id, const variant_t& a4, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - VARIANT result; - VARIANT vars[5]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); vars[4] = a4.in(); - DISPPARAMS disp = { vars, 0, 5, 0 }; - HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return auto_attach(result); - } - variant_t call(const wchar_t* name, const variant_t& a4, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) - { - DISPID id; - HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); - if (FAILED(hr)) throw_com_error(raw(this), hr); - return call(id, a4, a3, a2, a1, a0); - } - }; - /** \class dynamic_dispatch dispatch.h comet/dispatch.h - * Implementation of a dynamic IDispatch, allowing methods to be added to - * an IDispatch implementation. - * The class needs to be inherited from to be able to add methods. - * Each method can have up to 4 parameters. - */ - -template class ATL_NO_VTABLE dynamic_dispatch : public ::IDispatch { - - struct method_ptr { - bool has_retval; - union { - void (BASE::*pm00)(); - void (BASE::*pm01)(const variant_t&); - void (BASE::*pm02)(const variant_t&, const variant_t&); - void (BASE::*pm03)(const variant_t&, const variant_t&, const variant_t&); - void (BASE::*pm04)(const variant_t&, const variant_t&, const variant_t&, const variant_t&); - - variant_t (BASE::*pm10)(); - variant_t (BASE::*pm11)(const variant_t&); - variant_t (BASE::*pm12)(const variant_t&, const variant_t&); - variant_t (BASE::*pm13)(const variant_t&, const variant_t&, const variant_t&); - variant_t (BASE::*pm14)(const variant_t&, const variant_t&, const variant_t&, const variant_t&); - }; - }; - - typedef std::map NAMEMAP; - NAMEMAP name_map_; - - // Workaround VC internal compiler error - struct wrap_map_t { - std::map m; - }; - typedef std::map MAP; - MAP map_; - - void add_method(const wchar_t* name, method_ptr p, DISPID id, int type) - { - if (id == flag_value) - { - NAMEMAP::const_iterator it = name_map_.find(name); - if (it == name_map_.end()) - { - id = 100000 + map_.size(); - while (map_.find(id) != map_.end()) ++id; - } - else - { - id = it->second; - } - } - - name_map_[name] = id; - map_[id].m[type] = p; - } - enum { flag_value = MINLONG }; - public: - typedef ::IDispatch interface_is; - - protected: - - void remove(const wchar_t* name) - { - NAMEMAP::iterator it = name_map_.find(name); - if (it != name_map_.end()) { - DISPID id = it->second; - name_map_.erase(it); - - map_.erase(id); - } - } - - void add_method(const wchar_t* name, void (BASE::*pm)(), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm00 = pm; add_method( name, p, id, 0 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm01 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm02 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm03 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm04 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, variant_t (BASE::*pm)(), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm10 = pm; add_method( name, p, id, 0 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm11 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm12 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm13 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_METHOD ); } - - void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm14 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_METHOD ); } - - void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm01 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_PROPERTYPUT ); } - - void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm02 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_PROPERTYPUT ); } - - void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm03 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_PROPERTYPUT ); } - - void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm04 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_PROPERTYPUT ); } - - void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm01 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_PROPERTYPUTREF ); } - - void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm02 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_PROPERTYPUTREF ); } - - void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm03 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_PROPERTYPUTREF ); } - - void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = false; p.pm04 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_PROPERTYPUTREF ); } - - void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm10 = pm; add_method( name, p, id, 0 << 16 | DISPATCH_PROPERTYGET ); } - - void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm11 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_PROPERTYGET ); } - - void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm12 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_PROPERTYGET ); } - - void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm13 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_PROPERTYGET ); } - - void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) - { method_ptr p; p.has_retval = true; p.pm14 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_PROPERTYGET ); } - - private: - STDMETHOD(Invoke)(DISPID id, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pd, VARIANT* pVarResult, EXCEPINFO* pe, UINT* pu) - { - unsigned type = pd->cArgs << 16 | (wFlags & 15); - typename MAP::const_iterator it2 = map_.find(id); - if (it2 == map_.end()) return DISP_E_MEMBERNOTFOUND; - - typename std::map::const_iterator it = it2->second.m.find(type); - if (it == it2->second.m.end()) return DISP_E_BADPARAMCOUNT; - - try { - - if (pd->cNamedArgs > 1) return DISP_E_NONAMEDARGS; - - if (pd->cNamedArgs == 1) { - - if ((wFlags & 15) != DISPATCH_PROPERTYPUT && (wFlags & 15) != DISPATCH_PROPERTYPUTREF) return DISP_E_NONAMEDARGS; - if (pd->rgdispidNamedArgs[0] != DISPID_PROPERTYPUT) return DISP_E_NONAMEDARGS; - - switch (pd->cArgs) - { - case 1: - (static_cast(this)->*it->second.pm01)(variant_t::create_reference(pd->rgvarg[0])); - break; - case 2: - (static_cast(this)->*it->second.pm02)(variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); - break; - case 3: - (static_cast(this)->*it->second.pm03)(variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); - break; - case 4: - (static_cast(this)->*it->second.pm04)(variant_t::create_reference(pd->rgvarg[3]), variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); - break; - default: - return DISP_E_MEMBERNOTFOUND; - } - - } - else - { - - variant_t rv; - if (it->second.has_retval) - { - switch (pd->cArgs) - { - case 0: - rv = (static_cast(this)->*it->second.pm10)(); - break; - case 1: - rv = (static_cast(this)->*it->second.pm11)(variant_t::create_reference(pd->rgvarg[0])); - break; - case 2: - rv = (static_cast(this)->*it->second.pm12)(variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); - break; - case 3: - rv = (static_cast(this)->*it->second.pm13)(variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[1])); - break; - case 4: - rv = (static_cast(this)->*it->second.pm14)(variant_t::create_reference(pd->rgvarg[3]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[0])); - break; - default: - return DISP_E_MEMBERNOTFOUND; - } - } - else - { - switch (pd->cArgs) - { - case 0: - (static_cast(this)->*it->second.pm00)(); - break; - case 1: - (static_cast(this)->*it->second.pm01)(variant_t::create_reference(pd->rgvarg[0])); - break; - case 2: - (static_cast(this)->*it->second.pm02)(variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); - break; - case 3: - (static_cast(this)->*it->second.pm03)(variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); - break; - case 4: - (static_cast(this)->*it->second.pm04)(variant_t::create_reference(pd->rgvarg[3]), variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); - break; - default: - return DISP_E_MEMBERNOTFOUND; - } - } - if (pVarResult) *pVarResult = rv.detach(); - } - - - } catch (com_error& err) { - return impl::return_com_error(err); - } catch (const std::exception& err) { - return impl::return_com_error(err); - } catch (HRESULT hr) { - return hr; - } catch (...) { - return E_FAIL; - } - - return S_OK; - - } - - STDMETHOD(GetIDsOfNames)(REFIID, WCHAR** names, unsigned int c, LCID, DISPID* dispid) - { - bool failed = false; - for (size_t i=0; isecond; - } - } - return failed ? DISP_E_UNKNOWNNAME : S_OK; - } - - STDMETHOD(GetTypeInfo)(UINT, LCID, ITypeInfo**) - { return E_NOTIMPL; } - - STDMETHOD(GetTypeInfoCount)(UINT *it) - { *it = 0; return S_OK; } - - }; -//@} -} - -#endif diff --git a/EyeTab_SP2/comet/enum.h b/EyeTab_SP2/comet/enum.h deleted file mode 100644 index 9d3c6d8..0000000 --- a/EyeTab_SP2/comet/enum.h +++ /dev/null @@ -1,29 +0,0 @@ -/** \file - * Legacy header for enum-related implementations and iterators. - * - * This exists for backward compatibility only. Include specific headers - * instead. - */ -/* - * Copyright © 2000 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_ENUM_H -#define COMET_ENUM_H - -#include -#include -#include - -#endif diff --git a/EyeTab_SP2/comet/enum_common.h b/EyeTab_SP2/comet/enum_common.h deleted file mode 100644 index b1d1bcd..0000000 --- a/EyeTab_SP2/comet/enum_common.h +++ /dev/null @@ -1,187 +0,0 @@ -/** \file - * Code common to enumerator implementations. - */ -/* - * Copyright © 2000 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_ENUM_IMPL_H -#define COMET_ENUM_IMPL_H - -#include - -#include -#include -#include - -namespace comet { - - namespace impl { - - template struct type_policy; - - template<> struct type_policy - { - template - static void init(VARIANT& t, const S& s) - { ::VariantInit(&t); t = variant_t::detach( variant_t(s) ); } - - static void clear(VARIANT& t) { ::VariantClear(&t); } - }; - - template<> struct type_policy - { - template - static void init(CONNECTDATA& t, const S& s) - { - t.dwCookie = s.first; - t.pUnk = - com_ptr::detach(com_ptr(s.second)); - } - - static void clear(CONNECTDATA& t) { t.pUnk->Release(); } - }; - - template< - typename Itf, typename T, typename CONVERTER, typename Source> - class enumeration : public simple_object - { - typedef type_policy policy; - public: - /// \name Interface \p Itf - //@{ - STDMETHOD(Next)(ULONG celt, T *rgelt, ULONG* pceltFetched) - { - if (pceltFetched) - *pceltFetched = 0; - if (!rgelt) - return E_POINTER; - - UINT i = 0; - typename Source::const_iterator backup_it_ = source_.current(); - try - { - while (i < celt && source_.current() != source_.end()) - { - policy::init(rgelt[i], converter_(*source_.current())); - ++i; - ++source_.current(); - } - if (pceltFetched) - *pceltFetched = i; - } - catch (...) - { - source_.current() = backup_it_; - for (size_t j = 0; j <= i; ++j) - policy::clear(rgelt[j]); - return E_FAIL; - } - - return i == celt ? S_OK : S_FALSE; - } - - STDMETHOD(Reset)() - { - try - { - source_.current() = source_.begin(); - } - catch (...) { return E_FAIL; } - return S_OK; - } - - STDMETHOD(Skip)(ULONG celt) - { - try - { - while (celt--) source_.current()++; - } - catch (...) { return E_FAIL; } - return S_OK; - } - - STDMETHOD(Clone)(Itf** ppenum) - { - try - { - enumeration* new_enum = - new enumeration(source_, converter_); - new_enum->AddRef(); - *ppenum = new_enum; - } - catch (...) { return E_FAIL; } - return S_OK; - } - //@} - - enumeration( - typename Source source, const CONVERTER& converter) - : source_(source), converter_(converter) {} - - Source source_; - CONVERTER converter_; - - private: - enumeration(const enumeration&); - enumeration& operator=(const enumeration&); - }; - - } - - /** \struct enumerated_type_of enum.h comet/enum.h - * Traits wrapper mapping COM Enumeration interface to element. - */ - template struct enumerated_type_of; - - template<> struct enumerated_type_of - { typedef VARIANT is; }; - - template<> struct enumerated_type_of - { typedef IConnectionPoint* is; }; - - template<> struct enumerated_type_of - { typedef CONNECTDATA is; }; - - /** \struct ptr_converter enum.h comet/enum.h - * IUnknown Converter for containers containing Comet objects. - * \relates stl_enumeration - */ - template struct ptr_converter : std::unary_function< com_ptr, T> - { - com_ptr operator()(const T& x) { return impl::cast_to_unknown(x); } - }; - - /** \struct ptr_converter_select1st enum.h comet/enum.h - * IUnknown Converter for containers containing Comet objects as the first - * elment of a pair. - * \relates stl_enumeration - */ - template struct ptr_converter_select1st : std::unary_function< com_ptr, T> - { - com_ptr operator()(const T& x) { return impl::cast_to_unknown(x.first); } - }; - - /** \struct ptr_converter_select2nd enum.h comet/enum.h - * IUnknown Converter for containers containing Comet objects as the second - * elment of a pair. - * \relates stl_enumeration - */ - template struct ptr_converter_select2nd : std::unary_function< com_ptr, T> - { - com_ptr operator()(const T& x) { return impl::cast_to_unknown(x.second); } - }; -} - -#endif diff --git a/EyeTab_SP2/comet/enum_iterator.h b/EyeTab_SP2/comet/enum_iterator.h deleted file mode 100644 index c95a018..0000000 --- a/EyeTab_SP2/comet/enum_iterator.h +++ /dev/null @@ -1,179 +0,0 @@ -/** \file - * Standard C++ iterators wrapping any COM enumerator - */ -/* - * Copyright © 2000 Sofus Mortensen - * Copyright © 2011 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_ENUM_ITERATOR_H -#define COMET_ENUM_ITERATOR_H - -#include - -#include -#include - -#include - -namespace comet { - - /** - * STL style iterator for COM enumerator interfaces - */ - template::is> - class enum_iterator : public std::iterator - { - typedef E enumerator_type; - typedef typename enumerated_type_of::is element_type; - typedef impl::type_policy policy; - - com_ptr enum_; - - static value_type policy_init(const element_type& element) - { - value_type out; - policy::init(out, element); - return out; - } - - static value_type copy_value_from_other(const enum_iterator& other) - { - if (other.is_value_set_) - { - value_type v; - policy::init(v, other.value_); - return v; - } - else - { - return value_type(); - } - } - - value_type value_; - - /** - * Flag that ensures the value only gets cleared if it's been set. - * - * Clearing an uninitialised value could be disastrous as it could - * contain any random bits which the clearing code could interpret as - * pointers. - * - * This could happen in the situation where the enumerator has no - * items so the value never gets set. - */ - bool is_value_set_; - - public: - enum_iterator(const com_ptr& e) : - enum_(e), is_value_set_(false) - { - next(); - } - - enum_iterator() : is_value_set_(false) {} - - enum_iterator(const enum_iterator& other) : - enum_(other.enum_), value_(copy_value_from_other(other)), - is_value_set_(other.is_value_set_) {} - - enum_iterator& operator=(const enum_iterator& other) - { - enum_iterator copy(other); - swap(copy); - return *this; - } - - void swap(enum_iterator& other) - { - enum_.swap(other.enum_); - std::swap(value_, other.value_); - } - - /** Move to next element. */ - enum_iterator& operator++() - { - next(); - return *this; - } - - /** Move to next element (post increment). */ - enum_iterator operator++(int) - { - enum_iterator t(*this); - operator++(); - return t; - } - - /** - * Compare against end. - * Comparisons against a non-end iterator throw an exception. - * \todo Look into doing element comparisons. - */ - bool operator!=(const enum_iterator& other) - { - if (enum_ && other.enum_) - throw std::logic_error( - "enum_iterator comparison does not work"); - - return enum_ || other.enum_; - } - - /** Current element. */ - value_type& operator*() - { - return value_; - } - - value_type* operator->() - { - return &value_; - } - - private: - - void next() - { - if (enum_) - { - unsigned long fetched = 0; - element_type pod; - - enum_->Next(1, &pod, &fetched) | raise_exception; - if (fetched == 0) - { - enum_ = NULL; - return; - } - - try - { - if (is_value_set_) - policy::clear(value_); - value_ = policy_init(pod); - is_value_set_ = true; - } - catch (...) - { - policy::clear(pod); - throw; - } - policy::clear(pod); - } - } - }; -} - -#endif diff --git a/EyeTab_SP2/comet/error.h b/EyeTab_SP2/comet/error.h deleted file mode 100644 index b0c86f7..0000000 --- a/EyeTab_SP2/comet/error.h +++ /dev/null @@ -1,429 +0,0 @@ -/** \file - * Provide COM Error support. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_ERROR_H -#define COMET_ERROR_H - -#include - -#include -#include - -#include -#include -#include -#include - -#pragma warning(push) -#pragma warning(disable : 4290) - -namespace comet { - - namespace impl { - - inline com_ptr GetErrorInfo() throw() - { - IErrorInfo* ei = 0; - ::GetErrorInfo(0, &ei); - return com_ptr(auto_attach(ei)); - } - - inline com_ptr CreateErrorInfo() throw() - { - ICreateErrorInfo* cei = 0; - ::CreateErrorInfo(&cei); - return com_ptr(auto_attach(cei)); - } - - template inline bool supports_ErrorInfo(Itf* p) - { - com_ptr q = com_cast(com_ptr(p)); - if (q == 0) return false; - return S_OK == q->InterfaceSupportsErrorInfo(uuidof()); - } - - } - - - /** \class com_error error.h comet/error.h - * COM error. - */ - class com_error : public std::runtime_error - { - public: - //! Construct com_error from HRESULT. - /*! - \param hr - HRESULT value of error. - */ - explicit com_error(HRESULT hr) : hr_(hr), std::runtime_error("") - {} - - //! Construct com_error from HRESULT and textual description. - /*! - \param msg - Description of error. - \param hr - HRESULT value of error. - */ - explicit com_error(const bstr_t& msg, HRESULT hr = E_FAIL) : hr_(hr), std::runtime_error("") - { - com_ptr cei(impl::CreateErrorInfo()); - if ( !cei.is_null() ) { - try { - cei->SetDescription(msg.in()); - ei_ = com_ptr( com_cast(cei)) ; - } catch (std::bad_alloc&) - {} - } - } - //! Construct com_error from HRESULT, textual description, source, iid, help. - /*! - \param msg Description of error. - \param hr HRESULT value of error. - \param src Description of source line - \param iid Interface the error was on - \param helpFile Name of help file - \param helpContext Name of help Context - */ - explicit com_error(const bstr_t &msg, HRESULT hr, const bstr_t &src, const uuid_t &iid = uuid_t(), - const bstr_t &helpFile=bstr_t(), DWORD helpContext = -1) - : hr_(hr), std::runtime_error("") - { - com_ptr cei(impl::CreateErrorInfo()); - if ( ! cei.is_null() ) - { - try { - cei->SetDescription(msg.in()); - if (!src.is_null() ) - cei->SetSource( src.in() ); - if (iid != uuid_t()) - cei->SetGUID( iid ); - if (!helpFile.is_null()) - { - cei->SetHelpFile( helpFile.in() ); - cei->SetHelpContext( helpContext ); - } - ei_ = com_ptr( com_cast(cei)) ; - } catch (std::bad_alloc&) - {} - } - } - - /// Construct with an error-info and hresult. - explicit com_error(HRESULT hr, const com_ptr& ei) - : hr_(hr), ei_(ei), std::runtime_error("") - {} - - public: - //! Return a string with a description of the error - /*! - what() uses Description from IErrorInfo if such is present, otherwise FormatMessage is used - to create a description of the HRESULT error value. - - \retval - A const char* string with a textual description of the error. - */ - const char* what() const throw() - { - try { - if (what_.empty()) { - what_ = s_str(); - } - } catch (std::bad_alloc&) { - return 0; - } - - return what_.c_str(); - } - /// Returns a std::string with a description of the error. - std::string s_str() const - { - std::string ret; - get_str(ret); - return ret; - } - /// Returns a std::wstring with a description of the error. - std::wstring w_str() const - { - std::wstring ret; - get_str(ret); - return ret; - } - /// Returns a tstring with a description of the error. - tstring t_str() const - { - tstring ret; - get_str(ret); - return ret; - } - - private: - void get_str(std::string& ret) const - { - if (ei_.is_null() == false) - { - bstr_t bs; - if (SUCCEEDED(ei_->GetDescription(bs.out())) && !bs.is_empty()) - { - ret= bs.s_str(); - return; - } - } - - char* lpMsgBuf; - if (FormatMessageA( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, NULL, hr_, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language - reinterpret_cast(&lpMsgBuf), 0, NULL)) - { - char* lpEnd = lpMsgBuf; - while (*lpEnd != '\0') - lpEnd++; - - while (lpEnd > lpMsgBuf && // Trim trailing newlines - (*(lpEnd - 1) == '\n' || *(lpEnd - 1) == '\r')) - lpEnd--; - - ret.assign(lpMsgBuf, lpEnd - lpMsgBuf); - LocalFree(lpMsgBuf); - } - } - - void get_str(std::wstring& ret) const - { - if (ei_.is_null() == false) - { - bstr_t bs; - if (SUCCEEDED(ei_->GetDescription(bs.out())) && !bs.is_empty()) - { - ret = bs.w_str(); - return; - } - } - - wchar_t* lpMsgBuf; - if (FormatMessageW( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, NULL, hr_, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language - reinterpret_cast(&lpMsgBuf), 0, NULL)) - { - wchar_t* lpEnd = lpMsgBuf; - while (*lpEnd != L'\0') - lpEnd++; - - while (lpEnd > lpMsgBuf && // Trim trailing newlines - (*(lpEnd - 1) == L'\n' || *(lpEnd - 1) == L'\r')) - lpEnd--; - - ret.assign(lpMsgBuf, lpEnd - lpMsgBuf); - LocalFree(lpMsgBuf); - } - } - - public: - - /** Return the HRESULT for the error. - */ - HRESULT hr() const throw() - { - return hr_; - } - - /// \name wrappers for IErrorInfo - //@{ - - /// Description of the error. - bstr_t description() const - { - bstr_t rv; - if (!ei_.is_null()) ei_->GetDescription( rv.out() ) | raise_exception; - return rv; - } - - /// The error source description. - bstr_t source() const - { - bstr_t rv; - if (!ei_.is_null()) ei_->GetSource( rv.out() ) | raise_exception; - return rv; - } - - /// Interface IID. - GUID guid() const - { - GUID rv; - if (!ei_.is_null()) ei_->GetGUID( &rv ) | raise_exception; - else ZeroMemory(&rv, sizeof(rv)); - return rv; - } - - /// Helpfile name. - bstr_t help_file() const - { - bstr_t rv; - if (!ei_.is_null()) ei_->GetHelpFile( rv.out() ) | raise_exception; - return rv; - } - - - /// Help conext. - DWORD help_context() const - { - DWORD rv = 0; - if (!ei_.is_null()) ei_->GetHelpContext( &rv ) | raise_exception; - return rv; - } - //@} - - /// Return the error-info object. - com_ptr get_ei() const - { - return ei_; - } - - private: - mutable std::string what_; - com_ptr ei_; - HRESULT hr_; - }; - - - namespace impl { - - inline HRESULT return_com_error(HRESULT hr, const bstr_t &desc, const bstr_t &src = auto_attach(BSTR(NULL)), - const uuid_t &iid=CLSID_NULL, const bstr_t &helpFile=bstr_t(), DWORD helpContext = -1) - { - com_ptr cei(impl::CreateErrorInfo()); - if (cei.is_null() == false) { - try { - cei->SetDescription(desc.in()); - if (!src.is_null() ) - cei->SetSource( src.in() ); - if (iid != uuid_t()) - cei->SetGUID( iid ); - if (!helpFile.is_null()) - { - cei->SetHelpFile( helpFile.in() ); - cei->SetHelpContext( helpContext ); - } - com_ptr ei = com_cast(cei); - ::SetErrorInfo(0, ei.in()); - } catch (std::bad_alloc&) - {} - } - return hr; - } - inline HRESULT return_com_error(const std::exception& err, const bstr_t &src = auto_attach(BSTR(NULL)), - const uuid_t &iid=CLSID_NULL, const bstr_t &helpFile=bstr_t(), DWORD helpContext = -1) - { - return return_com_error( E_FAIL, bstr_t(err.what()),src,iid,helpFile, helpContext ); - } - inline HRESULT return_com_error(const com_error& err, const bstr_t &src = bstr_t(), const uuid_t &iid = CLSID_NULL) throw() - { - const bstr_t &cursrc =err.source(); - const uuid_t &curiid =err.guid(); - // Return error info with more info. - return return_com_error( err.hr(), err.description(), cursrc.is_null()?src:cursrc, - curiid.is_null()?iid:curiid, err.help_file(), err.help_context()); - } - - - inline void throw_com_error_(HRESULT hr, const com_ptr& ei) - { - throw_error_handler::throw_error(hr, ei); - } - - // Raising an HRESULT with a message - inline void raise_exception_t::operator()(const bstr_t& msg, HRESULT hr/* = E_FAIL*/) const - { - throw com_error(msg, hr); - } - - // Raising an HRESULT - inline void raise_exception_t::operator()(HRESULT hr) const - { - throw com_error(hr); - } - - } // namespace impl - - /*! \addtogroup ErrorHandling - */ - //@{ - - /** Throw COM error using com_error, using HRESULT and IErrorInfo. - */ - template inline void throw_com_error(Itf* p, HRESULT hr) - { - if (impl::supports_ErrorInfo(p)) - { - com_ptr ei = impl::GetErrorInfo(); - if (ei.is_null() == false) impl::throw_com_error_(hr, ei); - } - throw com_error(hr); - } - - template - inline void throw_error_handler::throw_error(HRESULT hr, const com_ptr &ei) - { - throw com_error(hr, ei); - } - - /** - * Construct exception for a method called on a raw COM interface. - * - * This method aims to imbue the com_error with as much information about - * the failure as possible: - * - If the interface supports IErrorInfo, the information is taken from - * the last ErrorInfo set on the current thread. - * - If not, the HRESULT alone determines the message. - * - * Use this constructor immediately after an interface returns a - * failure code before any other code can call SetErrorInfo and - * overwrite the error. - * - * \param failure_source Interface operator method returned a failure code. - * \param hr HRESULT value of error. - * - * \todo Can we add an optional user-defined message to this? - */ - template - com_error com_error_from_interface(Itf* failure_source, HRESULT hr) - { - if (impl::supports_ErrorInfo(failure_source)) - return com_error(hr, impl::GetErrorInfo()); - else - return com_error(hr); - } - - template - com_error com_error_from_interface( - com_ptr failure_source, HRESULT hr) - { - return com_error_from_interface(failure_source.get(), hr); - } - - //@} -} - -#pragma warning(pop) - -#endif diff --git a/EyeTab_SP2/comet/error_fwd.h b/EyeTab_SP2/comet/error_fwd.h deleted file mode 100644 index 9a71c8c..0000000 --- a/EyeTab_SP2/comet/error_fwd.h +++ /dev/null @@ -1,119 +0,0 @@ -/** \file - * Error forwarding - using operator|. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_ERROR_FWD_H -#define COMET_ERROR_FWD_H - -#include - -#include -#include - -#include - -#pragma warning(push) -#pragma warning(disable : 4290) - -namespace comet { - template class com_ptr; - class bstr_t; - - class com_error; - /*! \addtogroup ErrorHandling - */ - //@{ - namespace impl { - class raise_exception_t - { - public: - // Raising a std::exception - // inline void operator()(const std::exception& err) const; - - // Raising an HRESULT with a message - inline void operator()(const bstr_t& msg, HRESULT hr = E_FAIL) const; - - // Raising an HRESULT - inline void operator()(HRESULT hr) const; - }; - - } - - //! Raise exception "function" - /*! - raise_exception can by used in two different ways: - - First example. The 'do or die' paradigm using overloaded operator|. - Here try() is a function that returns an HRESULT. If try fails an exception will be raised. - \code - try() | raise_exception; - \endcode - - Second example. Using raise_exception as an exception throwing function. - \code - raise_exception(E_POINTER); - raise_exception(L"Ran out of toilet paper!", E_FAIL); - \endcode - - */ - static impl::raise_exception_t raise_exception; - - //! Overload for the 'do or die' useage of raise_exception. - /*! - \code - try() | raise_exception; - \endcode - */ - - namespace impl{ - inline HRESULT operator|(HRESULT hr, const impl::raise_exception_t&) - {if (FAILED(hr)) raise_exception(hr); return hr; } - } - using impl::operator|; - - /**! \struct throw_error_handler error_fwd.h comet\error_fwd.h - * Overridable error info handling. - * To override the error handling, use code like this, making sure - * that you define the handler before including comet/error.h. - \code - #include - template<> struct throw_error_handler - { - static inline void throw_error(HRESULT hr, const com_ptr &ei); - }; - #include - // #include - template<> - inline void throw_error_handler::throw_error(HRESULT hr, const com_ptr &ei) - { - .... Override here .... - } - \endcode - */ - - template - struct throw_error_handler - { - /// Called to throw the error. - static inline void throw_error(HRESULT hr, const com_ptr &ei); - }; - //@} -} - -#pragma warning(pop) - -#endif diff --git a/EyeTab_SP2/comet/exe_server.h b/EyeTab_SP2/comet/exe_server.h deleted file mode 100644 index 5d53fae..0000000 --- a/EyeTab_SP2/comet/exe_server.h +++ /dev/null @@ -1,292 +0,0 @@ -/** \file - * exe-server classes. - */ -/* - * Copyright © 2001, 2002 Mikael Lindgren, Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_EXE_SERVER_H -#define COMET_EXE_SERVER_H - -#include -#include - -namespace comet { - - namespace impl { - template struct register_class_entry - { - typedef COMET_STRICT_TYPENAME CLS_LIST::head CLASS; - typedef COMET_STRICT_TYPENAME CLS_LIST::tail NEXT; - - template struct register_info - { - DWORD id; - }; - - static register_info& get_register_info() - { - static register_info info; - return info; - } - COMET_FORCEINLINE static HRESULT register_class_object(DWORD context, DWORD flags) - { - const IID& clsid = comtype::uuid(); - ::IUnknown* p = impl::coclass_table_entry::factory::get(clsid); - if (p) - { - HRESULT hr = ::CoRegisterClassObject(clsid, p, context, flags, &get_register_info().id); - p->Release(); - if (hr != S_OK) - return hr; - } - return register_class_entry::register_class_object(context, flags); - } - - COMET_FORCEINLINE static void revoke_class_object() - { - ::CoRevokeClassObject(get_register_info().id); - register_class_entry::revoke_class_object(); - } - }; - - template <> struct register_class_entry - { - COMET_FORCEINLINE static HRESULT register_class_object(DWORD context, DWORD flags) - { - COMET_NOTUSED(context); - COMET_NOTUSED(flags); - return S_OK; - } - - COMET_FORCEINLINE static void revoke_class_object() - { - } - }; - }; - - /*! \addtogroup Server - */ - //@{ - - //! Define an EXE server - template > class exe_server : private thread - { -#if !(_WIN32_WINNT >= 0x0400 ) && !defined(_WIN32_DCOM) - // Implementing a free threaded exe server requires NT 4.0 or better. - COMET_STATIC_ASSERT(FREE_THREADED == false); -#endif - - typedef coclass_table COCLASS_TABLE; - - enum { terminate_pause = 1000, idle_shutdown_time = 5000 }; - - public: - exe_server(HINSTANCE instance); - exe_server(HINSTANCE instance, const GUID& appid, const tstring& appid_descr); - ~exe_server(); - - HRESULT run(); - - HRESULT register_server(); - HRESULT unregister_server(); - HRESULT register_class_objects(DWORD context, DWORD flags); - void revoke_class_objects(); - - private: - event shutdown_event_; - DWORD main_thread_id_; - const GUID* appid_; - tstring appid_descr_; - - virtual DWORD thread_main(); - }; - //@} - - template - exe_server::exe_server(HINSTANCE instance): - main_thread_id_(::GetCurrentThreadId()), - appid_(0) - { - module_t& m = module(); - - m.instance(instance); - m.set_shutdown_event(shutdown_event_); - - // initialize static variables in factory::get to avoid potential thread safety problem. - ::IUnknown* cf = COCLASS_TABLE::find(IID_NULL); - } - - template - exe_server::exe_server(HINSTANCE instance, const GUID& appid, const tstring& appid_descr): - main_thread_id_(::GetCurrentThreadId()), - appid_(&appid), appid_descr_(appid_descr) - { - module_t& m = module(); - - m.instance(instance); - m.set_shutdown_event(shutdown_event_); - - // initialize static variables in factory::get to avoid potential thread safety problem. - ::IUnknown* cf = COCLASS_TABLE::find(IID_NULL); - } - - template - exe_server::~exe_server() - { - module().clear_shutdown_event(); - } - - template - HRESULT exe_server::run() - { - thread::start(); - - HRESULT hr; -#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM - if (FREE_THREADED) - { - hr = register_class_objects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE|REGCLS_SUSPENDED); - if (SUCCEEDED(hr)) - hr = ::CoResumeClassObjects(); - } - else -#endif - hr = register_class_objects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE); - - if (SUCCEEDED(hr)) - { - MSG msg; - while (::GetMessage(&msg, 0, 0, 0)) - ::DispatchMessage(&msg); - } - else if (thread::running()) - { - shutdown_event_.set(); - thread::wait(0); - } - - revoke_class_objects(); - Sleep(terminate_pause); //wait for any threads to finish - - module().shutdown(); - - return hr; - } - - template - HRESULT exe_server::register_server() - { - TCHAR filename[MAX_PATH]; - - GetModuleFileName(module().instance(), filename, MAX_PATH); - - { - HRESULT hr = impl::typelibrary_registration::perform(filename, false); - if(FAILED(hr)) return SELFREG_E_TYPELIB; - } - - try { - if (appid_) - { - tstring key(_T("AppID\\{") + uuid_t(*appid_).str() + _T("}")); - - regkey rkey(HKEY_CLASSES_ROOT); - rkey.create(key)[_T("")] = appid_descr_; - } - COCLASS_TABLE::registration(filename, false, false, appid_); - } - catch (const com_error &e) - { - unregister_server(); - return impl::return_com_error(e); - } - catch (const std::exception &e) - { - unregister_server(); - ::OutputDebugStringA(e.what()); - return E_FAIL; - } - - return S_OK; - } - - template - HRESULT exe_server::unregister_server() - { - TCHAR filename[MAX_PATH]; - GetModuleFileName(module().instance(), filename, MAX_PATH); - - impl::typelibrary_registration::perform(filename, true); - - if (appid_) - { - tstring key(_T("AppID\\{") + uuid_t(*appid_).str() + _T("}")); - - regkey rkey(HKEY_CLASSES_ROOT); - rkey.delete_subkey_nothrow(key); - } - COCLASS_TABLE::registration(filename, true, false, appid_); - return S_OK; - } - - template - HRESULT exe_server::register_class_objects(DWORD context, DWORD flags) - { - return impl::register_class_entry::register_class_object(context, flags); - } - - template - void exe_server::revoke_class_objects() - { - impl::register_class_entry::revoke_class_object(); - } - - template - DWORD exe_server::thread_main() - { - module_t& m = module(); - - while (1) - { - shutdown_event_.wait(); - do - { - m.reset_activity_flag(); - } while (shutdown_event_.wait(idle_shutdown_time)); - // timed out - - if (!m.has_activity()) // if no activity let's really bail - { -#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM - if (FREE_THREADED) - { - ::CoSuspendClassObjects(); - if (!m.has_activity()) - break; - } - else - break; -#else - break; -#endif - } - } - ::PostThreadMessage(main_thread_id_, WM_QUIT, 0, 0); - return 0; - } -}; - - -#endif diff --git a/EyeTab_SP2/comet/functor.h b/EyeTab_SP2/comet/functor.h deleted file mode 100644 index 56a36f3..0000000 --- a/EyeTab_SP2/comet/functor.h +++ /dev/null @@ -1,1341 +0,0 @@ -/** \file - * Functor implementation. - * - * functor.h is based on the functor library presented in Chapter 5 of - * "Modern C++ Design" by Andrei Alexandrescu. - * - */ - -/* - * Copyright © 2001 Sofus Mortensen, Michael Geddes - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_FUNCTOR_H -#define COMET_FUNCTOR_H - -#include -#include -#include -#include - -namespace comet { - /*! \addtogroup Misc - */ - //@{ - -#ifdef COMET_PARTIAL_SPECIALISATION - -namespace detail { - - template struct parameter_type_aux - { - typedef const T& result; - }; - - template struct parameter_type_aux - { - typedef T result; - }; - -}; - -/** \struct parameter_type functor.h comet/functor.h - * Gives us a reference to a type. If the type is already a reference, then - * just returns the type. - */ -template struct parameter_type -{ - enum { is_ref = type_traits::is_reference::value }; - /// A reference to \p T or \p T if it is already a reference. - typedef typename detail::parameter_type_aux< (is_ref!=0) ,T >::result result; -}; -#else // COMET_PARTIAL_SPECIALISATION -namespace detail { - - template struct parameter_type_aux - { - template struct X - { - typedef const T& result; - }; - }; - - template<> struct parameter_type_aux - { - template struct X - { - typedef T result; - }; - }; - -}; - -template struct parameter_type -{ - enum { is_ref = type_traits::is_reference::value }; - typedef detail::parameter_type_aux< (is_ref!=0) >::X::result result; -}; -#endif // COMET_PARTIAL_SPECIALISATION - -#ifndef COMET_PARTIAL_SPECIALISATION - -#define COMET_PARTIAL_NAME( name ) X -#define COMET_PARTIAL_NS_1(A) >::X -#define COMET_PARTIAL_NS_2(A,B) >::X -#define COMET_PARTIAL_NS_3(A,B,C) >::X - -#define COMET_DEFINE_PARTIAL( X1, X2 , name) \ -template < X1 > struct name\ -{ \ - template < X2 > class X - -#define COMET_SPECIALISE_PARTIAL( SX1, X2 , name) \ -template <> struct name\ -{ \ - template < X2 > class X - -#define COMET_DEFINE_PARTIAL2( X1, X2, X3 , name) \ -template < X1 > struct name\ -{ \ - template < X2, X3 > class X - -#define COMET_SPECIALISE_PARTIAL2( SX1, X2, X3 , name) \ -template <> struct name\ -{ \ - template < X2, X3 > class X - -#define COMET_DEFINE_PARTIAL3( X1, X2, X3, X4 , name) \ -template < X1 > struct name\ -{ \ - template < X2, X3, X4 > class X - -#define COMET_SPECIALISE_PARTIAL3( SX1, X2, X3, X4 , name) \ -template <> struct name\ -{ \ - template < X2, X3, X4 > class X - - -#define COMET_CLOSE_PARTIAL() }; - -#else - -#define COMET_PARTIAL_NAME( name ) name -#define COMET_PARTIAL_NS_1(A) ,A> -#define COMET_PARTIAL_NS_2(A,B) ,A,B> -#define COMET_PARTIAL_NS_3(A,B,C) ,A,B,C> - -#define COMET_CLOSE_PARTIAL() - -#define COMET_PARTIAL_CONSTRUCTOR( name ) name - -#define COMET_DEFINE_PARTIAL(TN1, X1, TN2, X2 , name) \ -template class name - -#define COMET_SPECIALISE_PARTIAL( SX1, TN2,X2 , name) \ -template < TN2 X2 > class name - -#define COMET_DEFINE_PARTIAL2( TN1,X1,TN2,X2,TN3,X3 , name) \ -template class name - -#define COMET_SPECIALISE_PARTIAL2( SX1, TN2,X2, TN3,X3 , name) \ -template < TN2 X2, TN3 X3 > class name - -#define COMET_DEFINE_PARTIAL3(TN1,X1, TN2,X2, TN3,X3, TN4,X4 , name) \ -template < TN1 X1, TN2 X2, TN3 X3,TN4 X4 > class name - -#define COMET_SPECIALISE_PARTIAL3( SX1, TN2,X2, TN3,X3, TN4,X4 , name) \ -template < TN2 X2, TN3 X3, TN4 X4 > class name - -#endif - -/** \struct parameter_types functor.h comet/functor.h - * Gives the parameter type of parameters 1 thru 16. - * This gaurantees the arguments pass by reference, without breaking if it is already a - * reference. - * \sa parameter_type - */ -template struct parameter_types -{ - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_1; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_2; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_3; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_4; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_5; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_6; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_7; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_8; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_9; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_10; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_11; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_12; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_13; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_14; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_15; - typedef typename parameter_type< typename typelist::type_at::result >::result PARM_16; -}; - -template class functor_impl; - - -/** \struct functor_impl_aux functor.h comet/functor.h - * Virtual interface for functor implementation. - * Provide partial specialisation of functor_impl to parameter type. - * \param L number of arguments. - * \param R Return type. - * \param LIST Argument list. - */ -COMET_DEFINE_PARTIAL2( int,L,typename,R,typename,LIST,functor_impl_aux) : public parameter_types -{ - /** Virtual override to call the function. - * \param arguments Whatever arguments provided by \a LIST - * \return Return type is \a R - */ - virtual R operator()( nil arguments ) = 0; - - /** Clone the functor. (easiest way of managing memory - should only be - * a light implementation anyway). - */ - virtual functor_impl* clone() const = 0; - /** Provide virtual destruction. - */ - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - - -COMET_SPECIALISE_PARTIAL2( 0, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(1, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(2, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(3, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(4, typename,R, typename,LIST,functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(5,typename,R, typename,LIST,functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(6, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(7, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(8, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(9, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(10, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(11, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(12, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(13, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(14, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13, PARM_14 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(15, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13, PARM_14, PARM_15 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2(16, typename,R, typename,LIST, functor_impl_aux) : public parameter_types -{ -public: - virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13, PARM_14, PARM_15, PARM_16 ) = 0; - virtual functor_impl* clone() const = 0; - virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} -}; -COMET_CLOSE_PARTIAL() - - -/** \struct functor_handler functor.h comet/functor.h - * Provide implementation of functor_impl virtual type for functions. - * The implementation is effectively 'partially specialised' to return type. - */ -COMET_DEFINE_PARTIAL2(typename,RT, typename,PF, typename,FUN, functor_handler) - : public functor_impl< typename PF::result_type, typename PF::parm_list > -{ -public: - typedef typename PF::result_type result_type; - - COMET_PARTIAL_NAME(functor_handler)(const FUN& fun) : fun_(fun) {} - functor_impl< typename PF::result_type, typename PF::parm_list >* clone() const - { return new COMET_PARTIAL_NAME(functor_handler)(*this); } - - result_type operator()( ) - { return fun_( ); } - - result_type operator()( typename PF::PARM_1 p1 ) - { return fun_( p1 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) - { return fun_( p1, p2 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) - { return fun_( p1, p2, p3 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) - { return fun_( p1, p2, p3, p4 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) - { return fun_( p1, p2, p3, p4, p5 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) - { return fun_( p1, p2, p3, p4, p5, p6 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) - { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } - -private: - FUN fun_; - -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL2( void, typename,PF, typename,FUN , functor_handler) - : public functor_impl< typename PF::result_type, typename PF::parm_list > -{ -public: - typedef typename PF::result_type result_type; - - COMET_PARTIAL_NAME(functor_handler)(const FUN& fun) : fun_(fun) {} - - functor_impl< typename PF::result_type, typename PF::parm_list >* clone() const - { return new COMET_PARTIAL_NAME(functor_handler)(*this); } - result_type operator()( ) - { fun_( ); } - - result_type operator()( typename PF::PARM_1 p1 ) - { fun_( p1 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) - { fun_( p1, p2 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) - { fun_( p1, p2, p3 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) - { fun_( p1, p2, p3, p4 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) - { fun_( p1, p2, p3, p4, p5 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) - { fun_( p1, p2, p3, p4, p5, p6 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) - { fun_( p1, p2, p3, p4, p5, p6, p7 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) - { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } - - -private: - FUN fun_; - -}; -COMET_CLOSE_PARTIAL() - -/** \struct memfun_handler functor.h comet/functor.h - * Provide implementation of functor_impl virtual type for calling a member on - * an object. - * The implementation is effectively 'partially specialised' to return type. - * \param RT Return type - * \param PF Parameter types - * \param OBJ_PTR Object pointer type - * \param MEMFN_PTR Function pointer type - */ -COMET_DEFINE_PARTIAL3(typename,RT,typename,PF, typename,OBJ_PTR, typename,MEMFN_PTR , memfun_handler) - : public functor_impl -{ -private: - OBJ_PTR obj_; - MEMFN_PTR memfn_; - -public: - typedef typename PF::result_type result_type; - - COMET_PARTIAL_NAME(memfun_handler)(const OBJ_PTR& obj, MEMFN_PTR memfn) : obj_(obj), memfn_(memfn) {} - - functor_impl* clone() const - { return new COMET_PARTIAL_NAME(memfun_handler)(*this); } - - result_type operator()( ) - { return ((*obj_).*memfn_)( ); } - - result_type operator()( typename PF::PARM_1 p1 ) - { return ((*obj_).*memfn_)( p1 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) - { return ((*obj_).*memfn_)( p1, p2 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) - { return ((*obj_).*memfn_)( p1, p2, p3 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) - { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } - -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL3( void, typename,PF, typename,OBJ_PTR, typename,MEMFN_PTR , memfun_handler) - : public functor_impl -{ -public: - typedef typename PF::result_type result_type; - - COMET_PARTIAL_NAME(memfun_handler)(const OBJ_PTR& obj, MEMFN_PTR memfn) : obj_(obj), memfn_(memfn) {} - - functor_impl* clone() const - { return new COMET_PARTIAL_NAME(memfun_handler)(*this); } - - result_type operator()( ) - { ((*obj_).*memfn_)( ); } - - result_type operator()( typename PF::PARM_1 p1 ) - { ((*obj_).*memfn_)( p1 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) - { ((*obj_).*memfn_)( p1, p2 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) - { ((*obj_).*memfn_)( p1, p2, p3 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } - - result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) - { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } - -private: - OBJ_PTR obj_; - MEMFN_PTR memfn_; -}; -COMET_CLOSE_PARTIAL() - -/** \class functor_impl functor.h comet/functor.h - * Implementation of a functor. - * \param R Return type. - * \param LIST List of argument types. - */ -template -class ATL_NO_VTABLE functor_impl : public functor_impl_aux< typelist::length::value COMET_PARTIAL_NS_2(R,LIST) -{}; - -template class functor; - -/** Provide various operator() versions to call the virtual functor. - * This is Effectively paritally specialised to return type (for void - * implementation). - * \param R Return type. - * \param LIST argument list. - */ -COMET_DEFINE_PARTIAL( typename,R,typename,LIST, functor_operators ) : public parameter_types -{ - typedef functor BASE; -public: - R operator()( ) - { return (*(static_cast(this)->impl()))( ); } - - R operator()( PARM_1 p1 ) - { return (*(static_cast(this)->impl()))( p1 ); } - - R operator()( PARM_1 p1, PARM_2 p2 ) - { return (*(static_cast(this)->impl()))( p1, p2 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } - - R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15, PARM_16 p16 ) - { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } - -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL( void,typename,LIST , functor_operators) - : public parameter_types -{ - typedef functor BASE; -public: - - void operator()( ) - { (*(static_cast(this)->impl()))( ); } - - void operator()( PARM_1 p1 ) - { (*(static_cast(this)->impl()))( p1 ); } - - void operator()( PARM_1 p1, PARM_2 p2 ) - { (*(static_cast(this)->impl()))( p1, p2 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3 ) - { (*(static_cast(this)->impl()))( p1, p2, p3 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } - - void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15, PARM_16 p16 ) - { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } - -}; -COMET_CLOSE_PARTIAL() - -/** \class functor functor.h comet/functor.h - * Functor pointer class and implementation factory. This provides the interface to the functor library. - * \param R Return type - * \param LIST List of types using \link make_list comet::make_list \endlink - */ -template class functor : public functor_operators IMPL; - - typedef R result_type; - typedef LIST parm_list; - - functor() {}; - functor(const functor& f) : impl_((f.impl_.get()== NULL) ? NULL: f.impl_->clone()) {} - explicit functor(std::auto_ptr< IMPL > impl) : impl_(impl) {} - - template explicit functor(int, FUN fun) : impl_(new functor_handler), FUN)(fun)) - {} - - template functor(int, const OBJ_PTR& obj, MEMFN_PTR memfn) - : impl_(new memfun_handlerCOMET_PARTIAL_NS, OBJ_PTR, MEMFN_PTR>(obj, memfn)) - {} - - functor& operator=(const functor& rhs) - { - std::auto_ptr tmp((rhs.impl_.get() == NULL)? NULL: rhs.impl_->clone()); - impl_ = tmp; - return *this; - } - - std::auto_ptr &impl(){return impl_;} - - bool is_null() const { return impl_.get() == NULL; } -protected: - std::auto_ptr impl_; -}; - -/** \class chainer functor.h comet/functor.h - * Implements a functor that chains one functor to another functor. - * \param R Return type - * \param LIST Typelist of arguments - * \sa chain - */ -COMET_DEFINE_PARTIAL(typename,R, typename,LIST, chainer) : public functor_impl -{ -private: -typedef functor FUN; - -FUN fun1_; -FUN fun2_; - - -public: -COMET_PARTIAL_NAME(chainer)(const FUN& fun1, const FUN& fun2) : fun1_(fun1), fun2_(fun2) -{} - -COMET_PARTIAL_NAME(chainer)(const COMET_PARTIAL_NAME(chainer)& x) : fun1_(x.fun1_), fun2_(x.fun2_) -{} - -functor_impl* clone() const -{ return new COMET_PARTIAL_NAME(chainer)(*this); } - - R operator()( ) - { - fun1_( ); - return fun2_( ); - } - - R operator()( typename FUN::PARM_1 p1 ) - { - fun1_( p1 ); - return fun2_( p1 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2 ) - { - fun1_( p1, p2 ); - return fun2_( p1, p2 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3 ) - { - fun1_( p1, p2, p3 ); - return fun2_( p1, p2, p3 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4 ) - { - fun1_( p1, p2, p3, p4 ); - return fun2_( p1, p2, p3, p4 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5 ) - { - fun1_( p1, p2, p3, p4, p5 ); - return fun2_( p1, p2, p3, p4, p5 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6 ) - { - fun1_( p1, p2, p3, p4, p5, p6 ); - return fun2_( p1, p2, p3, p4, p5, p6 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); - } - - R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15, typename FUN::PARM_16 p16 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); - return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); - } - - -}; -COMET_CLOSE_PARTIAL() - -/** Specialisation for void. - */ -COMET_SPECIALISE_PARTIAL( void, typename,LIST , chainer ) - : public functor_impl -{ -private: - typedef functor FUN; - - FUN fun1_; - FUN fun2_; - - -public: - COMET_PARTIAL_NAME(chainer)(const FUN& fun1, const FUN& fun2) : fun1_(fun1), fun2_(fun2) - {} - - COMET_PARTIAL_NAME(chainer)(const COMET_PARTIAL_NAME(chainer)& x) : fun1_(x.fun1_), fun2_(x.fun2_) - {} - - functor_impl* clone() const - { return new COMET_PARTIAL_NAME(chainer)(*this); } - - void operator()( ) - { - fun1_( ); - fun2_( ); - } - - void operator()( typename FUN::PARM_1 p1 ) - { - fun1_( p1 ); - fun2_( p1 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2 ) - { - fun1_( p1, p2 ); - fun2_( p1, p2 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3 ) - { - fun1_( p1, p2, p3 ); - fun2_( p1, p2, p3 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4 ) - { - fun1_( p1, p2, p3, p4 ); - fun2_( p1, p2, p3, p4 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5 ) - { - fun1_( p1, p2, p3, p4, p5 ); - fun2_( p1, p2, p3, p4, p5 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6 ) - { - fun1_( p1, p2, p3, p4, p5, p6 ); - fun2_( p1, p2, p3, p4, p5, p6 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7 ); - fun2_( p1, p2, p3, p4, p5, p6, p7 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); - } - - void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15, typename FUN::PARM_16 p16 ) - { - fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); - fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); - } - -}; -COMET_CLOSE_PARTIAL() - -/** \class binder_first functor.h comet/functor.h - * Implements a functor that calls the first parameter bound to a specified - * type. The functor type implemented is effectively functor. - * \sa bind_first - */ -COMET_DEFINE_PARTIAL( typename,R, typename,LIST, binder_first) - : public functor_impl -{ - public: - typedef functor outgoing_type; - typedef typename functor::PARM_1 bound_type; - typedef R result_type; - - private: - functor fun_; - bound_type bound_; - public: - COMET_PARTIAL_NAME(binder_first)(const functor& fun, bound_type bound) : bound_(bound) - { - fun_ = fun; - } - - COMET_PARTIAL_NAME(binder_first)(const COMET_PARTIAL_NAME(binder_first)& x) : bound_(x.bound_) - { - fun_ = x.fun_; - } - - functor_impl* clone() const - { return new COMET_PARTIAL_NAME(binder_first)(*this); } - - result_type operator()() - { - return fun_(bound_ ); - } - - result_type operator()( typename outgoing_type::PARM_1 p1) - { - return fun_(bound_, p1); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2) - { - return fun_(bound_, p1, p2); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3) - { - return fun_(bound_, p1, p2, p3); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4) - { - return fun_(bound_, p1, p2, p3, p4); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5) - { - return fun_(bound_, p1, p2, p3, p4, p5); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); - } - - result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15, typename outgoing_type::PARM_16 p16) - { - return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); - } - - -}; -COMET_CLOSE_PARTIAL() - -COMET_SPECIALISE_PARTIAL( void, typename,LIST , binder_first) - : public functor_impl -{ -public: -typedef functor outgoing_type; -typedef typename functor::PARM_1 bound_type; -typedef void result_type; - -private: -functor fun_; -bound_type bound_; -public: -COMET_PARTIAL_NAME(binder_first)(const functor& fun, bound_type bound) : bound_(bound) -{ - fun_ = fun; -} - -COMET_PARTIAL_NAME(binder_first)(const COMET_PARTIAL_NAME(binder_first)& x) : bound_(x.bound_) -{ - fun_ = x.fun_; -} - -functor_impl* clone() const -{ return new COMET_PARTIAL_NAME(binder_first)(*this); } - -result_type operator()() -{ - fun_(bound_ ); -} - -result_type operator()( typename outgoing_type::PARM_1 p1) -{ - fun_(bound_, p1); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2) -{ - fun_(bound_, p1, p2); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3) -{ - fun_(bound_, p1, p2, p3); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4) -{ - fun_(bound_, p1, p2, p3, p4); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5) -{ - fun_(bound_, p1, p2, p3, p4, p5); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); -} - -result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15, typename outgoing_type::PARM_16 p16) -{ - fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); -} - -}; -COMET_CLOSE_PARTIAL() - -/** Constructs a functor that calls a function with an extra parameter (at the - * beginning) of type \p T. This gets called with the value \p bound. - * \relates binder - */ -template -functor bind_first( const functor& fun, const T& bound) -{ - return functor(std::auto_ptr< functor::IMPL >(new binder_firstCOMET_PARTIAL_NS(fun, bound))); -} - -/** Chains \p fun1 to \p fun2. - * \return functor chaining \p fun1 to \p fun2 - * \relates chainer - */ -template -functor chain( const functor& fun1, const functor& fun2) -{ - return functor(std::auto_ptr< functor::IMPL >(new chainer - -#include - -namespace comet { - /*! \addtogroup COMType - */ - //@{ - - class GIT; - - /// Type-safe GIT Cookie. - template class GIT_cookie - { - friend class GIT; - public: - GIT_cookie(const GIT_cookie& c) : cookie_(c.cookie_) {} - explicit GIT_cookie(DWORD c) : cookie_(c) {} - GIT_cookie() : cookie_(0) {} - - DWORD get_cookie() const { return cookie_; } - private: - DWORD cookie_; - }; - - /// Global Interface Table wrapper. - class GIT { - public: - GIT() : git_(CLSID_StdGlobalInterfaceTable) - {} - - /** Register Interface in the GIT. - * \param ptr Interface to register. - * \return Type-safe cookie. - */ - template - GIT_cookie register_interface(com_ptr const & ptr) - { - DWORD cookie; - git_->RegisterInterfaceInGlobal(ptr.get(), uuidof(), &cookie) | raise_exception; - return GIT_cookie(cookie); - } - - /** Retrieve Interface in the GIT. - * \param c Cookie - * \return Marshalled interface. - */ - template - com_ptr get_interface(GIT_cookie const& c) - { - Itf* itf; - git_->GetInterfaceFromGlobal(c.get_cookie(), uuidof(), reinterpret_cast(&itf)) | raise_exception; - return auto_attach(itf); - } - - /** Revoke the cookie from the GIT. - * \param c Cookie. - */ - template - void revoke_interface(GIT_cookie const& c) - { - HRESULT hr = git_->RevokeInterfaceFromGlobal(c.get_cookie()); - hr; - assert(SUCCEEDED(hr)); - } - - private: - com_ptr< ::IGlobalInterfaceTable> git_; - }; - //@} - -} // namespace comet - -#endif diff --git a/EyeTab_SP2/comet/handle.h b/EyeTab_SP2/comet/handle.h deleted file mode 100644 index 085bb19..0000000 --- a/EyeTab_SP2/comet/handle.h +++ /dev/null @@ -1,363 +0,0 @@ -/** \file -* Wrapper for Win32 API HANDLE. -*/ -/* -* Copyright © 2001,2004 Sofus Mortensen, Michael Geddes -* -* This material is provided "as is", with absolutely no warranty -* expressed or implied. Any use is at your own risk. Permission to -* use or copy this software for any purpose is hereby granted without -* fee, provided the above notices are retained on all copies. -* Permission to modify the code and to distribute modified code is -* granted, provided the above notices are retained, and a notice that -* the code was modified is included with the above copyright notice. -* -* This header is part of Comet version 2. -* https://github.com/alamaison/comet -*/ - -#ifndef COMET_HANDLE_H -#define COMET_HANDLE_H - -#include -#include -#include -#include -#include - -#include - -namespace comet { - - /*! \addtogroup COMType - */ - //@{ - - /** Base and policy class for auto_handle_wrap_t type. - * This provides the destroy/detach operations for auto_handle_wrap_t as well as - * providing a base class to contain the handle and to add functions to - * that are specific to the handle type. - * \relates auto_handle_wrap_t - * \sa auto_handle_wrap_t - */ - template< typename H, long INVALID_HANDLE_ > - class handle_policy_base_t - { - public: - /// Default constructor. - handle_policy_base_t() : handle_(reinterpret_cast(INVALID_HANDLE_)) {} - - explicit handle_policy_base_t( H handle) : handle_(handle) {} - - typedef H value_type; - - //! Implicit conversion to HANDLE - operator H() const throw() - { - // This function seemed not to work with returning a namespaced - // type. - return handle_; - } - static inline H invalid_handle() { return reinterpret_cast(INVALID_HANDLE_) ;} - - /// Is the handle valid? - bool valid() const - { - return handle_ != invalid_handle(); - } - - /// Detach a raw handle - H detach_handle() - { - return swap_handle(invalid_handle()); - } - - //! Detaches currently held handle without closing it. - static inline value_type detach( handle_policy_base_t &handle )throw() - { - return handle.detach_handle(); - } - - protected: - /// Destructor to prevent one of these from being created by itself. - ~handle_policy_base_t() - { } - - /// Detach the contained handle to the passed in. - void detach_to(handle_policy_base_t &rhs) throw() - { - value_type handle(handle_); - handle_= invalid_handle(); - rhs.handle_ = handle; - } - - H get_handle() const { return handle_; } - H *get_handle_ptr() { return &handle_;} - - H swap_handle(H new_handle) - { - H old = handle_; - handle_ = new_handle; - return old; - } - - private: - H handle_; - }; - - /** \class handle_nothrow_error_policy_t handle.h comet/handle.h - * Nothrow Error policy. - * \relates auto_handle_wrap_t - */ - struct handle_nothrow_error_policy_t - { - static void on_error() - { } - }; - - /** \class handle_throw_error_policy_t handle.h comet/handle.h - * Throwing Error policy. - * \relates auto_handle_wrap_t - */ - struct handle_throw_error_policy_t - { - static void on_error() - { - DWORD err = GetLastError(); - raise_exception(HRESULT_FROM_WIN32(err)); - } - }; - - /** \class auto_handle_wrap_t handle.h comet/handle.h - * Wrapper for a Win32 API/GDI HANDLE. - * Behaves similarly to an auto_ptr in that it implements single-reference, - * reference counting, with reference-transferring assignment and - * copy-construction. - */ - - template - class auto_handle_wrap_t : public handle_policy_base_t - { - typedef typename handle_policy_base_t::value_type value_type; - protected: - - /// Call destroy_handle - static inline bool destroy_( value_type h) - { - return C_::destroy_handle(h); - } - - /// Destroy the handle passed in. - /** Must be implemented by the parent class. - */ - static bool destroy_handle(value_type h); - - typedef handle_policy_base_t policy_base ; - - void set_handle( value_type h ) throw() - { - destroy_(this->swap_handle( h)); - } - - static bool expect_nonzero( BOOL value) - { - bool is_ok = (value != FALSE); - if (!is_ok) - ERROR_POLICY::on_error(); - return is_ok; - } - public: - - /// default constructor. - auto_handle_wrap_t() throw() - {} - - /// A reference to a handle. - typedef const C_ &ref; - - /** Assign by auto_attach. - */ - auto_handle_wrap_t( const impl::auto_attach_t &handle ) throw() - : policy_base(handle.get()) - {} - - /** Non-const copy constructor - takes control of the reference. - * \param rhs Handle to detach from. - */ - auto_handle_wrap_t( auto_handle_wrap_t &rhs) throw() - { - rhs.detach_to(*this); - } - - /** Non-const copy constructor - takes control of the reference. - * \param rhs Handle to detach from. - */ - auto_handle_wrap_t( policy_base &rhs) throw() - { - rhs.detach_to(*this); - } - - /** Destructor - closes the handle. - */ - ~auto_handle_wrap_t() throw() - { - destroy_(get()); - } - - - //! Assignment from similar handles. - /** Typically, there might be a different error policy. - */ - template - auto_handle_wrap_t & operator=(auto_handle_wrap_t& rhs) throw() - { - close_handle(); - rhs.detach_to(*this); - return *this; - } - - //! Assign by auto_attach - C_ &operator=(const impl::auto_attach_t &handle ) - { - close_handle(); - set_handle(handle.get()); - return *static_cast(this); - } - - //! Closes the currently held handle (if any). - bool close() throw() - { - return destroy_(policy_base::detach(*this)); - } - - //! \name Accessor methods - //@{ - - //! Fitter method. - /*! - Used when calling a function that take a HANDLE* argument. - - \code - auto_handle read_pipe, write_pipe; - - CreatePipe(read_pipe.out(), write_pipe.out(), 0, 0)); - \endcode - */ - typename policy_base::value_type* out() throw() - { - close_handle(); - return this->get_handle_ptr(); - } - - typename policy_base::value_type get() const throw() - { return this->get_handle(); } - typename policy_base::value_type in() const throw() - { return this->get_handle(); } - typename policy_base::value_type *inout() throw() - { return this->get_handle_ptr(); } - //@} - - static inline const C_ &create_const_reference(const value_type &val) - { return *reinterpret_cast(&val); } - - static inline C_ &create_reference(value_type &val) - { return *reinterpret_cast(&val); } - - /// Destroy a reference. - static bool destroy_reference(value_type h) - { - return true; - } - - private: - - //! Closes the currently held handle (if any). - inline void close_handle() - { - if (!close()) - ERROR_POLICY::on_error(); - } - }; - - namespace impl - { - /** \internal - */ - class THIS_IS_NOT_ALLOWED - { - ~THIS_IS_NOT_ALLOWED() {} - }; - } - - /// Disallow closing of a const handle. - template< typename H, long INVALID_HANDLE_ > - inline impl::THIS_IS_NOT_ALLOWED CloseHandle(const handle_policy_base_t&); - - /// Make sure closing of an auto_handle_wrap_t detaches first. - /** \return true if CloseHandle was successful. - */ - template< typename H, long INVALID_HANDLE_ > - bool CloseHandle(handle_policy_base_t &rhs) - { - return rhs.close(); - } - - /// Wrapper for HANDLE type - template< typename ERROR_POLICY = handle_nothrow_error_policy_t > - struct auto_handle_t : auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY > - { - typedef auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY > handle_base; - - /// Default constructor. - auto_handle_t() {} - /// Copy constructor. - auto_handle_t( auto_handle_t &rhs) - : auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY >(rhs) - {} - - /// Auto_attach constructor. - auto_handle_t( const impl::auto_attach_t< HANDLE > &rhs ) - : auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY >(rhs) - { } - /// Default assignment. - auto_handle_t &operator=(auto_handle_t &rhs) - { - handle_base::operator=(rhs); - return *this; - } - auto_handle_t &operator=( const impl::auto_attach_t &rhs) - { - handle_base::operator=(rhs); - return *this; - } - - /// Destroy a handle - static bool destroy_handle( HANDLE h) - { - return ::CloseHandle(h) != FALSE; - } - - }; - - /// Auto handle - wrapper for HANLDE. - typedef auto_handle_t<> auto_handle; - /// Auto handle - throwing wrapper for HANDLE. - typedef auto_handle_t< handle_throw_error_policy_t > auto_handle_throw; - - /// Create a reference object to a handle that doesn't destroy it's contents. - template - struct auto_reference_t : T - { - auto_reference_t( const comet::impl::auto_attach_t &rhs ) : T(rhs) - {} - ~auto_reference_t() - { - destroy_reference(this->detach_handle()); - } - }; - //@} -} - -using comet::CloseHandle; - -#endif diff --git a/EyeTab_SP2/comet/handle_except.h b/EyeTab_SP2/comet/handle_except.h deleted file mode 100644 index f5bf6b1..0000000 --- a/EyeTab_SP2/comet/handle_except.h +++ /dev/null @@ -1,363 +0,0 @@ -/** \file - * Handle Comet exceptions. - */ -/* - * Copyright 2003 Atex Media Command. All rights reserved. - * Copyright (C) 2013 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ -#ifndef COMET_HANDLE_EXCEPT_H -#define COMET_HANDLE_EXCEPT_H - -#ifdef _SHOW_INC -#pragma message(" #Include " __FILE__) -#endif - -#include - -/** \page comethandleexception Custom Exception Handling - This allows the user to define how exception handling happens for a particular library. - - Unfortunately due to a compiler bug in MSVC 6 (fixed in 7), some of the - functionality won't be available for that compiler (this has also limited - the customisability originally designed for). - - To override the default behavior, specialise the struct - comet::comet_exception_handler and implement the functions defined - in the default implementation comet::comet_exception_handler. - \code - comet { - template<> - struct comet_exception_handler : comet_exception_handler - { - static inline HRESULT catcher_all( const source_info_t &info) - { - throw; - } - }; - } - \endcode - - With a suitable compiler, the method comet::comet_exception_handler::rethrow can be - overridden to provide support for custom exceptions. - - Don't try putting a try catch round a throw in \p catcher_all as the resulting destruct-twice - of the exception when using MSV6 will cause very hard to trace bugs. - */ - -#ifdef COMET_DISABLE_EXCEPTION_RETHROW_CATCH -#define COMET_CATCH_CLASS_EX(funcName,iid) \ - catch ( const com_error &err) { \ - return comet_exception_handler::catcher_com_error(err, impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ - } catch ( const std::exception &err) { \ - return comet_exception_handler::catcher_exception(err, impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ - } catch ( HRESULT hr ) { \ - return comet_exception_handler::catcher_hr(hr, impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ - } catch (...) { \ - return comet_exception_handler::catcher_all( impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ - } - -#define COMET_CATCH_UNKNOWN(funcName, iid, clsname) \ - catch ( const com_error &err) { \ - comet_exception_handler::catcher_com_error(err, source_info_t(funcName, iid, clsname)); \ - } catch ( const std::exception &err) { \ - comet_exception_handler::catcher_exception(err, source_info_t(funcName, iid, clsname)); \ - } catch ( HRESULT hr ) { \ - comet_exception_handler::catcher_hr(hr, source_info_t(funcName, iid, clsname)); \ - } catch (...) { \ - comet_exception_handler::catcher_all( source_info_t(funcName, iid, clsname)); \ - } - - -#else // COMET_DISABLE_EXCEPTION_RETHROW_CATCH - -#define COMET_CATCH_CLASS_EX( funcName, iid) \ - catch ( ... ) { \ - return comet_exception_handler::rethrow( impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ - } - -#define COMET_CATCH_UNKNOWN(funcName, iid, clsname) \ - catch ( ... ) { \ - comet_exception_handler::rethrow( source_info_t(funcName, iid, clsname)); \ - } - -#endif - -/** Macro used in implementation wrappers to hide a bug with catching rethrown - * classes. - */ - -#define COMET_CATCH_CLASS(funcName) COMET_CATCH_CLASS_EX(funcName, comtype::uuid()) - -// We define these new catch macros because the ones above don't seem to work. -// They use a mystery _B to get the class name. It may have been part of the -// old code-generation mechanism which we don't support any more. -#define COMET_CATCH_INTERFACE_BOUNDARY(funcName) \ - catch ( ... ) { \ - return ::comet::comet_exception_handler::rethrow( \ - ::comet::source_info_t( \ - funcName, ::comet::comtype::uuid())); \ - } - -#define COMET_CATCH_CLASS_INTERFACE_BOUNDARY(funcName, clsName) \ - catch ( ... ) { \ - return ::comet::comet_exception_handler::rethrow( \ - ::comet::source_info_t( \ - funcName, ::comet::comtype::uuid(), clsName)); \ - } - -namespace comet { - - /*! \addtogroup ErrorHandling - */ - //@{ - /// Specifies the source of an exception. - struct source_info_t - { - /// Default Constructor - source_info_t() {} - /// Constructor to fill in a few elements. - source_info_t(const bstr_t &par_function, const uuid_t &par_interface_uuid = uuid_t(), const bstr_t &par_coclass_name = bstr_t() ) - : function_name(par_function), interface_uuid(par_interface_uuid), coclass_name(par_coclass_name) {} - - bstr_t function_name; ///< Name of the function being called. - bstr_t coclass_name; ///< Coclass the method belongs to. - uuid_t coclass_uuid; ///< CLSID of the coclass. - uuid_t interface_uuid; ///< IID of the interface - - bstr_t source_override; ///< Used to override the source description. - - /** Returns the 'source' description, either 'source_overrride' or the - * concatenation of the coclass and function_name. - */ - bstr_t source() const - { - if ( !source_override.is_empty()) - { - return source_override; - } - if (coclass_name.is_empty()) - { - return function_name; - } - if (function_name.is_empty()) - { - return coclass_name; - } - return coclass_name + L"." + function_name; - } - - }; - - namespace impl - { - /** Redirect logging to calllog if enabled. - * Used so that if call-logging is loaded, the default action is to - * redirect the logging to the call-logger. - * \internal - */ - template - struct call_logger_redirect_ - { - template - struct exe - { - static inline void log_exception( - const tstring& /*type*/, const tstring& /*desc*/, - const source_info_t& /*errorSource*/, - const source_info_t& /*callSource*/) - { } - static inline bool can_log_exception() - { return false; } - }; - }; - } - - /** \struct error_logger_ handle_except.h comet/handle_except.h - * Default to NULL logger - and description of 'error logger' concept. - * Specialise to \b true to override. - */ - template - struct error_logger_ - { - /** Should the error be logged? - * \return Return true to allow error to be logged. - */ - static inline bool can_log_exception() - { - return impl::call_logger_redirect_::template exe::can_log_exception(); - } - - /// Called by exception handlers to provide logging for errors. - static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource ,const source_info_t &callSource ) - { - impl::call_logger_redirect_::template exe::log_exception(type,desc,errorSource, callSource); - } - - }; - - /** Common exception handler for comet. - * Specialize to \c true to overide the behaviour. It is usually convenient - * to inherit the comet_exception_handler from - * comet_exception_handler. - */ - template< bool OVERRIDE> - struct comet_exception_handler - { -#ifndef COMET_DISABLE_EXCEPTION_RETHROW_CATCH - /** Override to modify which exceptions are caught. - * Note that due to a severe bug in MSVC 6, this will not be called in that - * case. - */ - static inline HRESULT rethrow(const source_info_t &info) - { - try { - throw; - } catch ( const com_error &err) - { - return catcher_com_error( err, info); - } - catch ( const std::exception &err) - { - return catcher_exception( err, info); - } - catch ( HRESULT hr ) - { - return catcher_hr( hr, info ); - } - catch (...) - { - return catcher_all(info); - } - - } -#endif // COMET_DISABLE_EXCEPTION_RETHROW_CATCH - - /// Override to modify handling of com_error - static inline HRESULT catcher_com_error( const com_error &err,const source_info_t &info) - { - if ( error_logger_::can_log_exception() ) - { - source_info_t errorInfo; - errorInfo.interface_uuid = err.guid(); - errorInfo.source_override = err.source(); - error_logger_::log_exception( _T("comet::com_error"), err.t_str(), errorInfo, info); - } - return impl::return_com_error(err, info.source(), info.interface_uuid); - } - /// Override to modify handling of std::exception - static inline HRESULT catcher_exception(const std::exception& err,const source_info_t &info) - { - if ( error_logger_::can_log_exception() ) - { - error_logger_::log_exception( _T("std::exception"), - bstr_t(err.what()).t_str(), - source_info_t(), info); - } - return impl::return_com_error(err, info.source(), info.interface_uuid); - } - /// Override to modify handling of HRESULT - static inline HRESULT catcher_hr( HRESULT hr,const source_info_t &info) - { - return impl::return_com_error(hr, bstr_t(), info.source(), info.interface_uuid); - } - /// This can be overridden to provide handling of other exceptions. - static inline HRESULT catcher_all( const source_info_t &info) - { - COMET_NOTUSED(info); - throw; - } - }; - - - namespace impl - { - /** Marker for using the coclass information. - * \relates handle_exception_default - */ - struct handle_exception_default_marker {}; - - /** Call the coclasses exception handler if it is marked. - * \relates handle_exception_default - */ - template - struct do_get_source_info_t - { - /** Call the classes exception handler. - * \relates handle_exception_default - */ - template - struct execute_handle - { - inline static void get_source_info(O * pThis, source_info_t &info) - { - pThis->get_source_info_( info ); - } - }; - /** Call the default global exception handler. - * \relates handle_exception_default - */ - template <> - struct execute_handle - { - inline static void get_source_info(O *pThis, const source_info_t &info ) - { - COMET_NOTUSED(pThis); - COMET_NOTUSED(info); - // return impl::do_handle_exception(src); - } - }; - - /** Called by the interface wrappers to call the exception handlers. - * \relates handle_exception_default - */ - inline static source_info_t exec( O *pThis, source_info_t info) - { - // Either call the coclass exception handler, or the project default. - execute_handle::exists>::get_source_info( pThis, info); - /* ERRORS: If the conversion is ambiguous here, then there are probably two ways of - * getting to handle_exception_default_marker, usually via handle_exception_default, - * which is already provided by by IProvideClassInfoImpl. - */ - return info; - } - }; - } - - /** \struct handle_exception_default server.h comet/server.h - * Used by the exception handler to provide source information for the specified CoClass. - * Inherit from this class or IProvideClassInfoImpl to make sure that the - * coclass name is known about for custom coclasses. - */ - template - struct handle_exception_default - : impl::handle_exception_default_marker // Required to mark the class as being able to handle exceptions with coclass information - { - void get_source_info_( source_info_t &info) - { - info.coclass_name = COCLASS::name(); - info.coclass_uuid = comtype::uuid(); - } - }; - // Handles the case where there is no coclass, and therefore no coclass name. - template<> - struct handle_exception_default : impl::handle_exception_default_marker - { - void get_source_info_( source_info_t &info) - { - COMET_NOTUSED(info); - } - }; - //@} -} -#endif /* COMET_HANDLE_EXCEPT_H */ diff --git a/EyeTab_SP2/comet/impqi.h b/EyeTab_SP2/comet/impqi.h deleted file mode 100644 index 67e1f07..0000000 --- a/EyeTab_SP2/comet/impqi.h +++ /dev/null @@ -1,546 +0,0 @@ -/** \file - * Implementation of QueryInterface. - */ -/* - * Copyright © 2000-2002 Sofus Mortensen, Michael Geddes - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_IMPQI_H -#define COMET_IMPQI_H - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace comet { - /*! \addtogroup Interfaces - */ - //@{ - - - - namespace impl { - - /** Base class for recognising qi hook. - * \internal - */ - class qi_hook_itf_tag {}; - - } - - class qi_hook {}; - - template class qi_hook_itf : public impl::qi_hook_itf_tag{ - public: - typedef Itf exposes; - virtual com_ptr get_interface_ptr(const com_ptr< ::IUnknown>&) throw() = 0; - }; - - namespace impl { - - template COMET_FORCEINLINE bool is_interface_compatible(const uuid_t& iid, Itf*) - { - if (iid == uuidof()) return true; - else return is_interface_compatible::base>(iid, 0); - } - - template<> COMET_FORCEINLINE bool is_interface_compatible< ::IUnknown >(const uuid_t&, ::IUnknown*) - { - return false; - } - - template<> COMET_FORCEINLINE bool is_interface_compatible(const uuid_t&, nil*) - { - return false; - } - enum use_cast_t {uc_false=0, uc_static, uc_static_op, uc_qi_hook_itf, uc_qi_hook }; - - - // remove enum for VC2005B2 - template - struct find_compatibility_aux - { - template - struct with - { - enum { is = false }; - - template inline static bool qi(P *, const uuid_t& , com_ptr< ::IUnknown>& ) - { - return false; - } - }; - }; - - template<> - struct find_compatibility_aux - { - template struct with { - template static bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) - { - if (is_interface_compatible(iid, 0)) - { - unk = static_cast< ::IUnknown* >(static_cast(This)); - return true; - } - return false; - } - }; - }; - - template<> - struct find_compatibility_aux - { - template struct with { - template static bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) - { - if (is_interface_compatible(iid,0)) { - unk = static_cast*>(This)->get_interface_ptr( cast_to_unknown(This) ); - return true; - } - return false; - } - }; - }; - - template<> - struct find_compatibility_aux - { - template struct with { - template static bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) - { - if ( static_cast(This)->qi(This, iid, unk) ) - return true; - else - return false; - } - }; - }; - -/* template<> - struct find_compatibility_aux - { - template - struct with - { - static bool is( const uuid_t &iid){ return is_interface_compatible(iid,0);} - template - static com_ptr< ::IUnknown> cast_from(T *This) - { -#ifndef NDEBUG - try { -#endif - return static_cast*>(This)->get_interface_ptr( cast_to_unknown(This) ); -#ifndef NDEBUG - } catch (...) { - // get_interface_ptr is not allowed to throw. Return null pointer on failure - COMET_ASSERT(0); - return 0; - } -#endif - } - }; - }; - - template<> - struct find_compatibility_aux - { - template - struct with - { - static bool is( const uuid_t &iid){ return true; } - - template - static com_ptr< ::IUnknown> cast_from(T *This) - { - Itf:: - } - }; - };*/ - - template< typename Itf> - struct use_cast_aux - { - enum { is_static = (type_traits::conversion::exists) }; - enum { is_static_op =(type_traits::is_cast_operator_compatible::is)}; - enum { is_qi_hook_itf = (type_traits::conversion::exists) }; - enum { is_qi_hook = (type_traits::conversion::exists) }; - // GCC Doesn't handle evaluation of ?: opeators in templates yet. -// enum { is = (int)( is_static ? uc_static: ( is_static_op ? uc_static_op : uc_false)) - enum { is = is_static * uc_static + - is_qi_hook_itf * uc_qi_hook_itf + - is_qi_hook * uc_qi_hook + - is_static_op * uc_static_op }; - }; - - template - struct find_compatibility - { - enum { needs_cast_ = use_cast_aux::is }; - typedef find_compatibility_aux< (use_cast_t)needs_cast_ > compatible; - - COMET_FORCEINLINE static bool with(const uuid_t &iid) - { return compatible::template with::is(iid); }; - template - COMET_FORCEINLINE static com_ptr< ::IUnknown> cast_from( T *This) - { return compatible::template with::cast_from(This); } - }; - - template struct interface_finder - { - template COMET_FORCEINLINE static bool find_interface(T* This, const uuid_t& iid, com_ptr< ::IUnknown>& rv) - { - typedef typename find_compatibility_aux< (use_cast_t)use_cast_aux< COMET_STRICT_TYPENAME ITF_LIST::head >::is >::template with fc; - if ( fc::qi(This, iid, rv) ) - return true; - else - return interface_finder< COMET_STRICT_TYPENAME ITF_LIST::tail>::find_interface(This, iid, rv); - } - - COMET_FORCEINLINE static bool find_interface_2(const uuid_t& iid) - { - if (is_interface_compatible(iid, 0)) return true; - return interface_finder< COMET_STRICT_TYPENAME ITF_LIST::tail>::find_interface_2(iid); - } - }; - - template<> struct interface_finder - { - template COMET_FORCEINLINE static bool find_interface(T*, const uuid_t&, com_ptr< ::IUnknown>&) - { return false; } - - COMET_FORCEINLINE static bool find_interface_2(const uuid_t&) - { - return false; - } - }; - -/* template<> struct interface_finder > - { - template COMET_FORCEINLINE static ::IUnknown* find_interface(T*, const uuid_t&) - { - return 0; - } - };*/ - - } - - /** \struct typelibrary_loader impqi.h comet/impqi.h - * Type Library Loader. - * Allow provision for different means of loading a type-library. - * \param TL A \e Comet type-library. - */ - template - struct typelibrary_loader - { - //! Load the type-library. - /** Create a different template instantiation of this to load - * type-libraries from a different source (example - from a second - * resource in the dll). - */ - static inline HRESULT load( ITypeLib **pTypeLib) - { return LoadRegTypeLib(uuidof(), TL::major_version, TL::minor_version, LANG_NEUTRAL, pTypeLib); } - }; - - /** \struct implement_qi impqi.h comet/impqi.h - * Implementation of QueryInterface. Inherits from all the types defined - * in \p ITF_LIST. - * \param ITF_LIST interface implementation list. - */ - template class ATL_NO_VTABLE implement_qi : public typelist::inherit_all - { - private: - // Hide qi - void qi(); - public: - /** Get at the unknown for this class. Is here for compatibility when using - * implement_internal_qi via aggregateable_coclass for getting at a - * pointer from which to QueryInterface from. - */ - ::IUnknown* get_unknown()const - { return static_cast< typename ITF_LIST::head * >(const_cast *>(this)); } - - STDMETHOD(QueryInterface)(REFIID riid, void** ppv) - { - const uuid_t& iid = uuid_t::create_const_reference(riid); - com_ptr< ::IUnknown> p; - - impl::interface_finder::find_interface(this, iid, p); - - if (!p) { - if (riid != IID_IUnknown) { - *ppv = 0; - return E_NOINTERFACE; - } - p = get_unknown(); -// p = static_cast< ::IUnknown* >(static_cast< typename ITF_LIST::head * >(this)); - } - - *ppv = reinterpret_cast(p.detach()); - - return S_OK; - } - }; - - /** \struct implement_internal_qi impqi.h comet/impqi.h - * Implementation of QueryInterfaceInternal. Inherits from all the types defined - * in \p ITF_LIST. This implementation is used in aggregation. - * \param ITF_LIST interface implementation list. - */ - template class ATL_NO_VTABLE implement_internal_qi : public typelist::inherit_all - { - private: - void qi(); - public: - /** Get at the unknown for this class. Is especially useful using - * aggregateable_coclass in getting at a pointer from which to - * QueryInterface from. - */ - ::IUnknown* get_unknown()const - { return static_cast< typename ITF_LIST::head * >( const_cast *>(this)); } - - HRESULT QueryInterfaceInternal(REFIID riid, void** ppv) - { - const IID& iid = riid; - com_ptr< ::IUnknown> p; - - impl::interface_finder::find_interface(this, iid, p); - - if (!p) { - if (riid != IID_IUnknown) { - *ppv = 0; - return E_NOINTERFACE; - } -// p = cast_to_unknown(this); - p = static_cast< ::IUnknown* >(static_cast(this)); - } - - *ppv = reinterpret_cast(p.detach()); - - return S_OK; - } - }; - - namespace impl { - template ::IUnknown* cast_to_unknown(implement_qi* iq) - { return static_cast< typename ITF_LIST::head*>(iq); } - } - - /** \class impl_dispatch impqi.h comet/impqi.h - * Implement IDispatch via type-library. - */ - template class ATL_NO_VTABLE impl_dispatch : public BASE - { - protected: - /// \name IDispatch Interface - //@{ - STDMETHOD(GetTypeInfo)(UINT, LCID, ITypeInfo** ti) - { - *ti = get_ti(); - if (*ti) - { - (*ti)->AddRef(); - return S_OK; - } - return E_NOTIMPL; - } - - STDMETHOD(GetTypeInfoCount)(UINT *it) - { *it = 1; return S_OK; } - - STDMETHOD(GetIDsOfNames)(REFIID, OLECHAR** pNames, UINT cNames, LCID, DISPID* pdispids) - { - ITypeInfo* ti = get_ti(); - if (ti) - return ti->GetIDsOfNames(pNames, cNames, pdispids); - else - return E_NOTIMPL; - } - - STDMETHOD(Invoke)(DISPID id, REFIID, LCID, WORD wFlags, DISPPARAMS *pd, VARIANT* pVarResult, EXCEPINFO* pe, UINT* pu) - { - ITypeInfo* ti = get_ti(); - if (ti) - { - void* pThis = static_cast(this); - return ti->Invoke(pThis, id, wFlags, pd, pVarResult, pe, pu); - } - else - return E_NOTIMPL; - } - //@} - private: - ITypeInfo* get_ti() - { - static ITypeInfo* ti_; - if (ti_ == 0) - { - auto_cs lock(module().cs()); - if (ti_ == 0) - { - com_ptr ptl; - - typelibrary_loader::load(ptl.out()); - if (ptl) ptl->GetTypeInfoOfGuid(uuidof(), &ti_); - - if (ti_ != 0) module().add_object_to_dispose( impl::create_itf_releaser(ti_) ); - } - } - return ti_; - } - -// static ITypeInfo* ti_; - }; - - template class com_ptr; - -#if 0 - /** \class aggregates_interface impqi.h comet/impqi.h - * Used as an implementation for an interface to Aggregate the required - * interface. - */ - template< typename Itf > - class aggregates_interface - { - public: - /** Set the inner-unknown returned from the call to CoCreateInstance. - */ - void set_aggregate(const com_ptr< ::IUnknown>& aggobj) { ag_object_ = com_cast(aggobj); } - /** Used by QueryInteface algorithms to work out the interface - * exposed by this class. - */ - typedef Itf exposes; - - operator Itf*() throw() - { - com_ptr< ::IUnknown> test = ag_object_; - return ag_object_.in(); -// return com_ptr( com_cast(ag_object_) ); - } - protected: - com_ptr ag_object_; - - }; -#endif - - - - - - -/* class FTM : public qi_hook_itf - { - private: - com_ptr get_interface_ptr(const com_ptr< ::IUnknown>& This) throw() - { - ::IUnknown* ftm = 0; - CoCreateFreeThreadedMarshaler(This.in(), &ftm); - return com_cast(ftm); - } - };*/ - - /** \struct FTM impqi.h comet/impqi.h - * Aggregate the Free Threaded Marshaller. - * \code - class coclass_implementation - : public coclass - { - ... - }; - \endcode - */ - struct FTM : public qi_hook - { - template - bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) - { - if (iid != uuidof()) return false; - ::IUnknown* ftm = 0; - CoCreateFreeThreadedMarshaler(impl::cast_to_unknown(This), &ftm); - unk = com_ptr< ::IMarshal>( com_cast(ftm) ); - return unk != 0; - } - }; - - /** \struct aggregates impqi.h comet/impqi.h - * Aggregate an interface. - * \code - class coclass_implementation - : public coclass > - { - coclass_implementation() - { - aggregatescreate_aggregate::create_aggregate(this, CLSCTX_ALL); - } - }; - \endcode - - \sa coclass - */ - template class aggregates : public qi_hook - { - com_ptr< ::IUnknown> inner_; - public: - template bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) - { - typedef typename make_list::result TL; - if (typelist::length::value > 0) { - if (impl::interface_finder::find_interface_2(iid) == false) return false; - } - if (inner_ == 0) return false; - ::IUnknown* p; - if (SUCCEEDED(inner_.raw()->QueryInterface(iid, reinterpret_cast(&p)))) - { - unk = auto_attach(p); - return true; - } - return false; - } - protected: - template void create_aggregate(T *This, DWORD dwClsContext = CLSCTX_ALL) - { ::IUnknown* unk_this = impl::cast_to_unknown(This); inner_ = com_ptr< ::IUnknown>(uuidof(), com_ptr< ::IUnknown>::create_reference(unk_this), dwClsContext); } - }; - -/* template class aggregates_interface : public qi_hook_itf - { - private: - com_ptr< ::IUnknown> inner_; - com_ptr get_interface_ptr(const com_ptr< ::IUnknown>&) - { return com_cast(inner_); } - protected: - template void create_aggregate(const CLSID& clsid, implement_qi* This, DWORD dwClsContext = CLSCTX_ALL) - { - ::IUnknown* unk_this = static_cast< typename ITF_LIST::head*>(This); - inner_ = com_ptr< ::IUnknown>(clsid, com_ptr< ::IUnknown>::create_reference(unk_this), dwClsContext); - } - - template void create_aggregate(const wchar_t* progid, implement_qi* This, DWORD dwClsContext = CLSCTX_ALL) - { - ::IUnknown* unk_this = static_cast< typename ITF_LIST::head*>(This); - inner_ = com_ptr< ::IUnknown>(progid, com_ptr< ::IUnknown>::create_reference(unk_this), dwClsContext); - } - };*/ - - //@} -} - -#endif diff --git a/EyeTab_SP2/comet/interface.h b/EyeTab_SP2/comet/interface.h deleted file mode 100644 index cfaefb4..0000000 --- a/EyeTab_SP2/comet/interface.h +++ /dev/null @@ -1,256 +0,0 @@ -/** \file - * Provide comtype which supplies information about UUIDs & inheritance, - * potentially from Interfaces not defined using a COMET type-library. Also - * defines specialisations for some such standard interfaces. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_INTERFACE_H -#define COMET_INTERFACE_H - -#include - -#include -#include -#include - -#include -#include -#include - -#pragma warning(push, 4) -// NB: coclass_implementation _must_ have no data members. -// The comet framework uses the test -// sizeof coclass_implementation == sizeof coclass_implementation -// in order to determine whether the user has specialized based on T or not. -// The logic here is that any real implementation will have a size that is at least -// sizeof IUnknown, because any real coclass_implementation must at least derive -// off IUnknown and have a "vtable" pointer. -/** \class coclass_implementation interface.h comet/interface.h - * Utility class to make the implementation of a coclass accessible from the - * servers. Implementations of coclasses defined in the type library should - * all be specialisations of this class if they are to be exposed by the - * comet server. - */ -template class coclass_implementation {}; - -#pragma warning(pop) - -namespace comet { - - /** Provide a means for defining new comtype definitions. - */ - template struct uuid_comtype - { - static const uuid_t& uuid() { return uuid_t::create_const_reference(*ItfID); } - typedef BASE base; - }; - - - /** Provide access to uuid and base type of objects. - * Specializations allow access to information relevant to non-comet - * defined interfaces. - */ - template struct comtype { - static const IID& uuid() throw() { return comtype::uuid(); } - typedef typename comtype::base base; - }; - - template<> struct comtype { -// static const IID& uuid() throw() { throw std::logic_error("interface.h:35"); return IID_NULL; } - typedef nil base; - }; - - template<> struct comtype< ::IUnknown > - { - static const IID& uuid() { return IID_IUnknown; } - typedef nil base; - }; - - template<> struct comtype - { - static const IID& uuid() { return IID_IConnectionPoint; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() { return IID_IConnectionPointContainer; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() { return IID_IEnumConnections; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() { return IID_IDispatch; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() { return IID_IEnumVARIANT; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() { return IID_ISupportErrorInfo; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() { return IID_IErrorInfo; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IProvideClassInfo; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IPersist; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IPersistFile; } - typedef ::IPersist base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IPersistStream; } - typedef ::IPersist base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IPersistStreamInit; } - typedef ::IPersist base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IMessageFilter; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IProvideClassInfo2; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IMarshal; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IFontDisp; } - typedef ::IDispatch base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IPictureDisp; } - typedef ::IDispatch base; - }; - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IGlobalInterfaceTable; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IClassFactory; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IStream; } - typedef ::IUnknown base; - }; - - template<> struct comtype - { - static const IID& uuid() throw() { return IID_ISequentialStream; } - typedef ::IUnknown base; - }; - - - - //! C++ replacement of VC's __uuidof() - /*! - Use this function to an IID to an interface or coclass. - */ - template inline const uuid_t& uuidof(Itf * = 0) throw() - { return uuid_t::create_const_reference(comtype::uuid()); } - - namespace impl { - - template struct interface_lookup - { - static bool supports(const uuid_t& iid) - { - if (iid == uuidof()) - return true; - else - return interface_lookup< typename comtype::base >::supports(); - } - - template static Itf* cast(T* t) - { - return static_cast(t); - } - }; - - template<> struct interface_lookup - { - static bool supports(const uuid_t&) - { - return false; - } - - }; - -/* template<> struct interface_lookup > - { - static bool supports(const uuid_t&) - { - return false; - } - - };*/ - } - -} // namespace - -#endif diff --git a/EyeTab_SP2/comet/invariant_lock.h b/EyeTab_SP2/comet/invariant_lock.h deleted file mode 100644 index 25215c7..0000000 --- a/EyeTab_SP2/comet/invariant_lock.h +++ /dev/null @@ -1,126 +0,0 @@ -/** \file - * Implementation of invariant_lock asserts. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen, Paul Hollingsworth - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_UTIL_H -#define COMET_UTIL_H - -#include - -#include - -#include - -namespace comet { - /*! \addtogroup Misc - */ - //@{ - - /** Contains implementation of invariant_lock asserts. - */ - namespace invariant_lock_impl { - - /** Provides base class for invariant_locks. - * \sa create_invariant_lock enforcer simple_enforcer - */ - class invariant_lock - { - protected: - invariant_lock() {} - invariant_lock(const invariant_lock& /*rhs*/) {} - }; - - /** A version of invariant_lock able to call any void member of a class. - * The member should provide an assertable condition that gets asserted - * on creation and destruction of the lock. - * \sa create_invariant_lock - */ - template struct enforcer : public invariant_lock - { - void (CLASS::*m_passert) () const; - const CLASS *m_pobj; - - enforcer(const CLASS *pobj, void (CLASS::*passert) () const - ) : m_pobj(pobj), m_passert(passert) - { - (m_pobj->*m_passert)(); - } - ~enforcer() - { - (m_pobj->*m_passert)(); - } - }; - - /** A version of invariant_lock that calls public method \b assert_valid on - * construction and destruction of the lock. - * \sa create_invariant_lock - */ - template struct simple_enforcer : public invariant_lock - { - const CLASS *m_pobj; - simple_enforcer(const CLASS *pobj) : m_pobj(pobj) - { - m_pobj->assert_valid(); - } - - ~simple_enforcer() - { - m_pobj->assert_valid(); - } - }; - } // namespace invariant_lock_impl - - /*! Create an invariant_lock. - * \param pobj The class with the invariant assert - * \param assert_member The void member to call on construct & destruct - * \author Paul Hollingsworth (Paul@PaulHollingsworth.com) - * \relates invariant_lock_impl::invariant_lock - * \sa enforcer - */ - template - invariant_lock_impl::enforcer create_invariant_lock(const CLASS *pobj, void (CLASS::*assert_member) () const) - { - return invariant_lock_impl::enforcer(pobj, assert_member); - } - - /*! Create a simple invariant lock. - * This lock will expect assert_valid to be publicly defined on the object - * provided. - * \param pobj The class with the invariant assert. - * \relates invariant_lock_impl::invariant_lock - * \sa simple_enforcer - * \author Paul Hollingsworth (Paul@PaulHollingsworth.com) - */ - template - invariant_lock_impl::simple_enforcer create_invariant_lock(const CLASS *pobj) - { - return pobj; - } - - /*! Pointer class to an invariant_lock. - * Assigning a temporary to a const reference will cause the object to be - * kept for the scope of the const reference. - * \relates invariant_lock_impl::invariant_lock - * \sa create_invariant_lock - * \author Paul Hollingsworth (Paul@PaulHollingsworth.com) - */ - typedef invariant_lock_impl::invariant_lock &invariant_lock; - //@} - -} // namespace - -#endif diff --git a/EyeTab_SP2/comet/lw_lock.h b/EyeTab_SP2/comet/lw_lock.h deleted file mode 100644 index c5752f1..0000000 --- a/EyeTab_SP2/comet/lw_lock.h +++ /dev/null @@ -1,228 +0,0 @@ -/** \file - * Lightweight Multiple Reader Single Writer lock. - * - * See \ref cometlwlock. - * - * The lw_lock class is heavily based on class LightweightLock written by Brad Wilson. - * see http://www.quality.nu/dotnetguy/archive/fog0000000007.aspx - * \author Brad Wilson - * \author Sofus Mortensen - */ - -// Copyright (C) 1995-2002 Brad Wilson -// -// This material is provided "as is", with absolutely no warranty -// expressed or implied. Any use is at your own risk. Permission to -// use or copy this software for any purpose is hereby granted without -// fee, provided the above notices are retained on all copies. -// Permission to modify the code and to distribute modified code is -// granted, provided the above notices are retained, and a notice that -// the code was modified is included with the above copyright notice. -// -//////////////////////////////////////////////////////////////////////// - -/** \page cometlwlock Lightweight Lock - This lightweight lock class was adapted from samples and ideas that - were put across the ATL mailing list. It is a non-starving, kernel- - free lock that does not order writer requests. It is optimized for - use with resources that can take multiple simultaneous reads, - particularly when writing is only an occasional task. - - Multiple readers may acquire the lock without any interference with - one another. As soon as a writer requests the lock, additional - readers will spin. When the pre-writer readers have all given up - control of the lock, the writer will obtain it. After the writer - has rescinded control, the additional readers will gain access - to the locked resource. - - This class is very lightweight. It does not use any kernel objects. - It is designed for rapid access to resources without requiring - code to undergo process and ring changes. Because the "spin" - method for this lock is "Sleep(0)", it is a good idea to keep - the lock only long enough for short operations; otherwise, CPU - will be wasted spinning for the lock. You can change the spin - mechanism by #define'ing COMET_LW_LOCK_SPIN before including this - header file. - - VERY VERY IMPORTANT: If you have a lock open with read access and - attempt to get write access as well, you will deadlock! Always - rescind your read access before requesting write access (and, - of course, don't rely on any read information across this). - - This lock works in a single process only. It cannot be used, as is, - for cross-process synchronization. To do that, you should convert - this lock to using a semaphore and mutex, or use shared memory to - avoid kernel objects. - */ - -/* - * Copyright © 2002 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#include -#include - -#include - -namespace comet { - -#ifndef COMET_LW_LOCK_SPIN -#define COMET_LW_LOCK_SPIN Sleep(0) -#endif - /*! \addtogroup Misc - */ - //@{ - - /** Provide a lightweight lock imlementation. - * See \ref cometlwlock for more information and warnings. - * \sa auto_reader_lock auto_writer_lock - */ - class lw_lock - { - // Interface - - public: - /// Constructor - lw_lock() - { - reader_count_ = 0; - writer_count_ = 0; - } - - /// Destructor - ~lw_lock() - { - COMET_ASSERT( reader_count_ == 0 ); - COMET_ASSERT( writer_count_ == 0 ); - } - - /// Reader lock acquisition - void enter_reader() const - { - for (;;) - { - // If there's a writer already, spin without unnecessarily - // interlocking the CPUs - - if( writer_count_ != 0 ) - { - COMET_LW_LOCK_SPIN; - continue; - } - - // Add to the readers list - - InterlockedIncrement((long *)&reader_count_ ); - - // Check for writers again (we may have been pre-empted). If - // there are no writers writing or waiting, then we're done. - - if( writer_count_ == 0 ) - break; - - // Remove from the readers list, spin, try again - - InterlockedDecrement((long *)&reader_count_ ); - COMET_LW_LOCK_SPIN; - } - } - - /// Reader lock release - void leave_reader() const - { - InterlockedDecrement((long *)&reader_count_ ); - } - - /// Writer lock acquisition - void enter_writer() - { - // See if we can become the writer (expensive, because it inter- - // locks the CPUs, so writing should be an infrequent process) - - while( InterlockedExchange((long *)&writer_count_, 1 ) == 1 ) - { - COMET_LW_LOCK_SPIN; - } - - // Now we're the writer, but there may be outstanding readers. - // Spin until there aren't any more; new readers will wait now - // that we're the writer. - - while( reader_count_ != 0 ) - { - COMET_LW_LOCK_SPIN; - } - } - - /// Writer lock release - void leave_writer() - { - writer_count_ = 0; - } - - // Implementation - - private: - mutable long volatile reader_count_; - mutable long volatile writer_count_; - - // Declare class non-copyable - lw_lock(const lw_lock&); - lw_lock& operator=(const lw_lock&); - }; - - /** \class auto_reader_lock lw_lock.h comet/lw_lock.h - * Auto-release locking class for lw_lock Read acces. - * \sa lw_lock auto_writer_lock - */ - class auto_reader_lock { - public: - explicit auto_reader_lock(const lw_lock& cs) : cs_(cs) { - cs_.enter_reader(); - } - - ~auto_reader_lock() { - cs_.leave_reader(); - } - - private: - auto_reader_lock& operator=(const auto_reader_lock&); - auto_reader_lock(const auto_reader_lock&); - - const lw_lock& cs_; - }; - - /** \class auto_writer_lock lw_lock.h comet/lw_lock.h - * Auto-release locking class for lw_lock write acces. - * \sa lw_lock auto_reader_lock - */ - class auto_writer_lock { - public: - explicit auto_writer_lock(lw_lock& cs) : cs_(cs) { - cs_.enter_writer(); - } - - ~auto_writer_lock() { - cs_.leave_writer(); - } - - private: - auto_writer_lock& operator=(const auto_writer_lock&); - auto_writer_lock(const auto_writer_lock&); - - lw_lock& cs_; - }; - //@} - -} diff --git a/EyeTab_SP2/comet/module.h b/EyeTab_SP2/comet/module.h deleted file mode 100644 index 2bfb8c6..0000000 --- a/EyeTab_SP2/comet/module.h +++ /dev/null @@ -1,274 +0,0 @@ -/** \file - * Main functionality for providing a COM module. - */ -/* - * Copyright © 2000-2002 Sofus Mortensen, Paul Hollingsworth, Michael Geddes, Mikael Lindgren - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_MODULE_H -#define COMET_MODULE_H - -#include -#include -#include -#include - -namespace comet { - - /*!\addtogroup Server - */ - //@{ - namespace impl { - /** \internal - * 'Command' base class. - */ - struct cmd_t - { - virtual void cmd() = 0; - cmd_t() {} - private: - cmd_t(const cmd_t&); - cmd_t& operator=(const cmd_t&); - }; - - /** \internal - * 'Command' to delete a pointer. - * - */ - template - struct itf_releaser_t : public cmd_t - { - void cmd() { IUnknown *p = p_; p_=NULL; p->Release(); } - itf_releaser_t(T *&p) :p_(p) { } - private: - T *&p_; - itf_releaser_t(const itf_releaser_t&); - itf_releaser_t& operator=(const itf_releaser_t&); - }; - - template - cmd_t *create_itf_releaser( T *&p) - { - return new itf_releaser_t(p); - } - - /** 'Command' to Call object_dispose on an object. - * \internal - */ - template - struct pointer_deleter_t : public cmd_t - { - void cmd() { T *p = p_; p_=NULL; delete p;} - pointer_deleter_t(T *&p) :p_(p) { } - private: - T *&p_; - pointer_deleter_t(const pointer_deleter_t&); - pointer_deleter_t& operator=(const pointer_deleter_t&); - }; - - /** 'Command' to Call object_dispose on an object. - * \internal - */ - template - struct object_disposer_t : public cmd_t - { - void cmd() { p_->object_dispose(); } - object_disposer_t( T*p) : p_(p) {} - private: - T *p_; - object_disposer_t(const object_disposer_t &); - object_disposer_t &operator=(const object_disposer_t &); - }; - } - //! Create a pointer deleter command. - /** A command to delete pointers, commonly used for shutdown. - * \code - module().add_object_to_dispose(create_pointer_deleter(new my_class_t())); - * \endcode - * \sa module_t::add_object_to_dispose - */ - template - impl::cmd_t *create_pointer_deleter( T *&p) - { - return new impl::pointer_deleter_t(p); - } - //! Create an interface releaser command. - /** A command to release COM objects, commonly used for shutdown. - * Used for singletons. - * \code - module().add_object_to_dispose(create_interface_releaser(new my_coclass())); - * \endcode - * \sa module_t::add_object_to_dispose - */ - template - impl::cmd_t *create_interface_releaser( T *&p) - { - return new impl::itf_releaser_t(p); - } - - //! Create a more generic object 'disposer'. - /** Creates a Command that calls a static object_dispose(p) method. - * \code - class my_class_t - { - object_dispose( my_class_t *val) - { - val->destroy_myself(); - } - }; - module().add_object_to_dispose(create_object_disposer(new my_class_t())); - * \endcode - * \sa module_t::add_object_to_dispose - */ - template - impl::cmd_t *create_object_disposer( T *p ) - { - return new impl::object_disposer_t(p); - } - - /// COM module. - struct module_t - { - //! \name Attributes - //@{ - /// Return current reference count. - long rc() - { - return rc_; - } - /// Retun the HINSTANCE of the module. - HINSTANCE instance() const - { - return instance_; - } - - /// Set the hinstance of the module. - void instance(HINSTANCE h) - { - instance_ = h; - } - - /// Return the module's critical_section. - /** \code - auto_cs lock( module().cs() ); - \endcode - */ - const critical_section& cs() const - { - return cs_; - } - - //@} - - //! \name Operations - //@{ - - /// Add to the module locks. - void lock() - { - if (InterlockedIncrement(&rc_) == 1 && shutdown_event_ != 0) - { - auto_cs lock(cs_); - if ( shutdown_event_->is_set()) - shutdown_event_->reset(); - } - } - - /// Decrement the module lock. - void unlock() - { - if(InterlockedDecrement(&rc_)==0) - { - activity_ = true; - if (shutdown_event_ != 0) - { - auto_cs lock(cs_); - shutdown_event_->set(); - } - } - } - - /// Shutdown the server. - void shutdown() - { - for (std::vector::iterator it = objects_to_dispose_.begin(); it != objects_to_dispose_.end(); ++it) - { - (*it)->cmd(); - delete *it; - } - objects_to_dispose_.clear(); - } - - /// Set an event for shutdown. - void set_shutdown_event(event& shutdown_event) - { - shutdown_event_ = &shutdown_event; - } - - /// Remove the event for on shutdown. - void clear_shutdown_event() - { - shutdown_event_ = 0; - } - - /// Returns if there has been activity on the module since last reset. - bool has_activity() const - { - return rc_ != 0 || activity_; - } - - /// Reset the activity marker. - void reset_activity_flag() - { - activity_ = false; - } - - /// Add an objet to be disposed on shutdown. - void add_object_to_dispose(impl::cmd_t* p) - { - auto_cs lock(cs_); - objects_to_dispose_.push_back(p); - } - //@} - - private: - long rc_; - bool activity_; - event* shutdown_event_; - HINSTANCE instance_; - critical_section cs_; - - module_t() : rc_(0), activity_(false), - shutdown_event_(0), instance_(0) - {} - - std::vector objects_to_dispose_; - - friend module_t& module(); - - // declare non-copyable - module_t(const module_t&); - module_t& operator=(const module_t&); - }; - - //! global module object - inline module_t& module() - { - static module_t m; - return m; - } - //@} -} - -#endif diff --git a/EyeTab_SP2/comet/oleidl_comtypes.h b/EyeTab_SP2/comet/oleidl_comtypes.h deleted file mode 100644 index 79eec24..0000000 --- a/EyeTab_SP2/comet/oleidl_comtypes.h +++ /dev/null @@ -1,72 +0,0 @@ -/** \file - * comtype<> definitions for interfaces in the COM header file OLEIDL.H. - * \author Gabriel Barta - */ -/* - * Copyright © 2002 Gabriel Barta - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_OLEIDL_COMTYPES_H -#define COMET_OLEIDL_COMTYPES_H - -#include - -namespace comet { - template<> struct comtype< ::IOleAdviseHolder> - : public uuid_comtype< ::IOleAdviseHolder,&IID_IOleAdviseHolder, ::IUnknown> {} ; - template<> struct comtype< ::IOleCache> - : public uuid_comtype< ::IOleCache,&IID_IOleCache, ::IUnknown> {} ; - template<> struct comtype< ::IOleCache2> - : public uuid_comtype< ::IOleCache2,&IID_IOleCache2, ::IOleCache> {} ; - template<> struct comtype< ::IOleCacheControl> - : public uuid_comtype< ::IOleCacheControl,&IID_IOleCacheControl, ::IUnknown> {} ; - template<> struct comtype< ::IParseDisplayName> - : public uuid_comtype< ::IParseDisplayName,&IID_IParseDisplayName, ::IUnknown> {} ; - template<> struct comtype< ::IOleContainer> - : public uuid_comtype< ::IOleContainer,&IID_IOleContainer, ::IParseDisplayName> {} ; - template<> struct comtype< ::IOleClientSite> - : public uuid_comtype< ::IOleClientSite,&IID_IOleClientSite, ::IUnknown> {} ; - template<> struct comtype< ::IOleObject> - : public uuid_comtype< ::IOleObject,&IID_IOleObject, ::IUnknown> {} ; - template<> struct comtype< ::IOleWindow> - : public uuid_comtype< ::IOleWindow,&IID_IOleWindow, ::IUnknown> {} ; - template<> struct comtype< ::IOleLink> - : public uuid_comtype< ::IOleLink,&IID_IOleLink, ::IUnknown> {} ; - template<> struct comtype< ::IOleItemContainer> - : public uuid_comtype< ::IOleItemContainer,&IID_IOleItemContainer, ::IOleContainer> {} ; - template<> struct comtype< ::IOleInPlaceUIWindow> - : public uuid_comtype< ::IOleInPlaceUIWindow,&IID_IOleInPlaceUIWindow, ::IOleWindow> {} ; - template<> struct comtype< ::IOleInPlaceActiveObject> - : public uuid_comtype< ::IOleInPlaceActiveObject,&IID_IOleInPlaceActiveObject, ::IOleWindow> {} ; - template<> struct comtype< ::IOleInPlaceFrame> - : public uuid_comtype< ::IOleInPlaceFrame,&IID_IOleInPlaceFrame, ::IOleInPlaceUIWindow> {} ; - template<> struct comtype< ::IOleInPlaceObject> - : public uuid_comtype< ::IOleInPlaceObject,&IID_IOleInPlaceObject, ::IOleWindow> {} ; - template<> struct comtype< ::IOleInPlaceSite> - : public uuid_comtype< ::IOleInPlaceSite,&IID_IOleInPlaceSite, ::IOleWindow> {} ; - template<> struct comtype< ::IContinue> - : public uuid_comtype< ::IContinue,&IID_IContinue, ::IUnknown> {} ; - template<> struct comtype< ::IViewObject> - : public uuid_comtype< ::IViewObject,&IID_IViewObject, ::IUnknown> {} ; - template<> struct comtype< ::IViewObject2> - : public uuid_comtype< ::IViewObject2,&IID_IViewObject2, ::IViewObject> {} ; - template<> struct comtype< ::IDropSource> - : public uuid_comtype< ::IDropSource,&IID_IDropSource, ::IUnknown> {} ; - template<> struct comtype< ::IDropTarget> - : public uuid_comtype< ::IDropTarget,&IID_IDropTarget, ::IUnknown> {} ; - template<> struct comtype< ::IEnumOLEVERB> - : public uuid_comtype< ::IEnumOLEVERB,&IID_IEnumOLEVERB, ::IUnknown> {} ; -}; - -#endif //COMET_OLEIDL_COMTYPES_H diff --git a/EyeTab_SP2/comet/ptr.h b/EyeTab_SP2/comet/ptr.h deleted file mode 100644 index 3e101a6..0000000 --- a/EyeTab_SP2/comet/ptr.h +++ /dev/null @@ -1,1261 +0,0 @@ -/** \file - * Provides the com_ptr type. - */ -/* - * Copyright © 2000-2002 Sofus Mortensen, Michael Geddes - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ -/*! \addtogroup COMType - */ -//@{ - -/** \page cometcomptr Comet com_ptr - * \section cometcomptroverview Overview - * The \link comet::com_ptr com_ptr \endlink type is essentially a reference - * counting wrapper for objects that support AddRef / Release in a way that - * is STL container compatible. - * - * It also provides a mechanism for doing casting (QueryInterface) assignments - * as well as for doing assignment-compatible assignments and for providing - * smart wrappers for the interfaces. - * - * \section cometcomptrwrapping What Can Be Wrapped? - * - * The com_ptr has been designed to allow most classes to be wrapped, specifically - * it allows for wrapping ::IUnknown based interfaces, and also coclass implementations. - * - * It should be noted that some coclasses can have two implementations of - * ::IUnknown (aggregateable coclasses being a prime example). These classes - * support \link comet::implement_qi::get_unknown get_unknown() \endlink which allows - * the com_ptr to get a the unknown responsible for the lifetime management of - * the object. - * - * \section cometcomptrassign Assigning Pointers - * - * There are three ways of assigning and constructing com_ptr objects, depending on your - * objective; direct assignment and the two cast operators com_cast and try_cast. - * - * \subsection cometcomptrassigndirect Direct Assignment - - * The first way is trivial, but quite important and is the simple - * assignment of one com_ptr to another. This is done in such a way as to make - * it possible to assign assignment compatible interfaces (eg an ::IUnknown pointer can be - * assigned from an ::IDispatch pointer). A compile-time error will occur if - * the pointers are not compatible. - * - * Unfortunately there are certain circumstances that MSVC6 compiler does not - * provide a complete enough template instantiation backtrace in order to be - * able to directly work out an offending assignment. Our appologies, but a - * decent compiler would be more accomodating! - * - * \subsection cometcomptrassignquery Casting Assignment - * - * To cause a COM cast or ::QueryInterface to happen, you need to use the - * wrapper functions com_cast and try_cast. The cause a QueryInterface on - * both assignment and construction, allowing you the choice between having - * an exception thrown on failure (try_cast) or to silently fail leaving the - * object NULL (com_cast). - * - * \code - - com_ptr viewobj = com_cast( obj ); // <-- non-throwing query-interface - if (viewobj.is_null()) - { - com_ptr viewobj2 = try_cast( obj ); // <-- throwing query-interface - viewobj = viewobj2; // <-- Assignment between assignment compatible types. - } - * \endcode - - * This shows the three different ways of assigning. The first uses com_cast - * that causes the assignment to do a QueryInterface, but does not throw an - * error. The second uses try_cast that again causes the assignment to - * do a QueryInterface, but causes errors to be thrown. The third assignment is - * for assignment compatible objects only, and will cause a compiler-error - * unless (in this case) IViewObject2 inherits off IViewObject (which it does).

- * - * \subsection cometcomptrassignvariant Assignment From a variant_t - * - * Assignment to a com_ptr from a variant_t must be done by either com_cast or - * try_cast, as any assignment from a variant is effectively a cast. - * - * \section cometcomptrsmartwrapper Smart Wrappers - * - * The com_ptr \link comet::com_ptr::operator-> operator-> \endlink provides wrapped - * access to the methods on the interface. For interfaces that have been - * generated by tlb2h, the interface returned is a wrapper that allows access - * only to the wrapped methods, otherwise, access to the raw interface is - * default. - * - * The design of the wrappers allows for system interfaces to be wrapped as - * well. There is an \link comet::com_ptr< ::IDispatch> IDispatch wrapper \endlink - * defined in comet/dispatch.h that provides methods to call functions and - * property accessors by name or by dispatch id. - * - * There is also a wrapper for the API TypeLibrary information interfaces - * defined in comet/tlbinfo.h. In addition to providing some simple wrappers - * to hide the raw COM types, it also provides accessor wrappers to the structs - * that are allocated/deallocated by the interfaces. - * - * \subsection cometcomptrsmartwrapperdetail Implementation - * It is not necessary to know how the wrappers are implemented in order - * to use them, however the technique is quite interesting. - * - * They key to the wrappers is template specialisation. The operator-> - * returns the 'this' pointer with a reinterpret_cast to a wrap_t - * struct instantiated to the interface contained by the com_ptr. The default - * wrap_t template definition is to inherit from the interface, thus giving - * direct access to methods. - * - * The tlb2h generated headers (as well as comet/tlbinfo.h and - * a0omet/dispatch.h) provide alternate specialisations for wrap_t that wrap the - * arguments and call the real methods (which would be Invoke if it is an dispinterface) - * by using reinterpret_cast to cast back to the original interface. - * - * \section cometcomptraccess Raw COM Access - * Whether calling raw COM interfaces, or trying to understand how the wrappers - * work, you will come across the \ref cometrawcomaccess methods. These are standard - * across the types (see \ref cometrawcomaccess), however com_ptr classes also - * have a raw() method that is equivalent to get() and proivdes access to the - * raw COM methods. - */ - //@} - -#ifndef COMET_PTR_H -#define COMET_PTR_H - -#include - -#include - -#include -#include -#include -#include -#include - -// Primary namespace for comet -namespace comet { - class uuid_t; - - template struct wrap_t : public Itf {}; - - template<> struct wrap_t< ::IUnknown> {}; - - template Itf* raw( wrap_t* p ) { return reinterpret_cast(p); } - -// template struct prop_wrapper : public Itf {}; - - // Forward declaration - class variant_t; - template class com_ptr; - class identity_ptr; - namespace thread_model{ - enum thread_model_t; - } - template struct coclass; - template struct aggregate_inner_unknown ; - - // comet implementation details - namespace impl { - - template class com_cast_t { - public: - explicit com_cast_t(Itf* p) : ptr_(p) {}; - Itf* get() const { return ptr_; } - private: - Itf* ptr_; - com_cast_t& operator=(const com_cast_t&); - }; - - template<> class com_cast_t { - public: - explicit com_cast_t(const variant_t& v) : val_(v) {}; - const variant_t& get() const { return val_; } - private: - const variant_t& val_; - com_cast_t& operator=(const com_cast_t&); - }; - - /** Allow calling specific, known ambiguous IUnknown implementations. - * \param B \b true Call via get_unknown. \b false Call directly - */ - template - struct IUnknown_caller - { - template< typename T > static inline long AddRef( T *y) - { return y->AddRef(); } - template static inline long Release( T *y) - { return y->Release(); } - template static inline HRESULT QueryInterface( T *y, REFIID iid, void **NewIface) - { return y->QueryInterface(iid, (void **)NewIface); } - }; - - template <> - struct IUnknown_caller - { - template static inline long AddRef( T *y) - { return y->get_unknown()->AddRef(); } - template< typename T> static inline long Release( T *y) - { return y->get_unknown()->Release(); } - template static inline HRESULT QueryInterface( T *y, REFIID iid, void **NewIface) - { return y->get_unknown()->QueryInterface(iid, NewIface); } - }; -// template struct implement_internal_qi; - - /** Namespace for dummy functions for allowing IUnknown choice to be - * deferred to the get_unknown() function. - */ - namespace unknown_choice - { -// template long dummy_( coclass *); -// template long dummy_(implement_internal_qi *); - template long dummy_(aggregate_inner_unknown *); - char dummy_( ... ); - } - - /** \internal - */ - template - struct iunknown_chooser - { - - enum { matches = (sizeof( unknown_choice::dummy_( static_cast< C *>(0) ))==sizeof(long)) }; - }; - - } - /*! \addtogroup COMType - */ - //@{ - - //! Cast com_ptr. - /*! Allows QueryInterface when casting to different com_ptr type. - \code - com_ptr foo; - com_ptr bar; - bar = com_cast(foo); - if (!bar.is_null()) { - // Cast is ok. - bar->DoTheThing(); - } - \endcode - * \param t com_ptr to cast - * \relates com_ptr - */ - template inline impl::com_cast_t com_cast(const com_ptr& t) { return impl::com_cast_t(t.get()); } - template inline impl::com_cast_t com_cast(Itf* t) { return impl::com_cast_t(t); } - inline impl::com_cast_t com_cast(const variant_t& v) { return impl::com_cast_t(v); } - - namespace impl { - template class try_cast_t { - public: - explicit try_cast_t(Itf* p) : ptr_(p) {}; - Itf* get() const { return ptr_; } - private: - Itf* ptr_; - try_cast_t& operator=(const try_cast_t&); - }; - - template<> class try_cast_t { - public: - explicit try_cast_t(const variant_t& v) : val_(v) {}; - const variant_t& get() const { return val_; } - private: - const variant_t& val_; - try_cast_t& operator=(const try_cast_t&); - }; - } - - - namespace impl { - - //! IUnknown wrapper. - /** Hides the members of IUnknown. - * \relates com_ptr - */ - template class safe_interface : public Itf { - private: - HRESULT __stdcall QueryInterface(REFIID, void**); - ULONG __stdcall AddRef(); - ULONG __stdcall Release(); - }; - - } - - //! Represents the identity Unknown of an object. - /** Is the only really efficient and safe way of representing an object for - * comparisons. - */ - class identity_ptr - { - public: - //! Default constructor. - /** Initialises the pointer to Null. - */ - identity_ptr() throw() : ptr_(NULL){} - //! Destructor. - /** Releases the pointer. - */ - ~identity_ptr() throw() { release();} - - //! Copy constructor. - /*! Simple pointer copy. They are both already identity unknowns. - */ - identity_ptr( const identity_ptr &rhs) : ptr_(rhs.ptr_) {addref();} - - //! Constructor from Try Cast. - /*! Used for construction from any Interface pointer. Always QIs to - * guarantee this is the identity. - */ - template - explicit identity_ptr( const impl::try_cast_t &x ) throw(com_error) - : ptr_(NULL) - { - IUnknown *p=static_cast(x.get()); - if (p != NULL) - p->QueryInterface(uuidof< ::IUnknown >(), reinterpret_cast(&ptr_)) | raise_exception; - } - - //! Constructor from variant_t Try Cast. - /*! Used for construction from a variant. Always QIs to - * guarantee this is the identity. - */ - inline explicit identity_ptr(const impl::try_cast_t& v) throw(com_error); - - //! Constructor from Com Cast. - /*! Used for construction from any Interface pointer. Always QIs to - * guarantee this is the identity. - */ - template - explicit identity_ptr( const impl::com_cast_t &x ) throw(com_error) - : ptr_(NULL) - { - IUnknown *p=static_cast(x.get()); - if (p != NULL) - p->QueryInterface(uuidof< ::IUnknown >(), reinterpret_cast(&ptr_)); - } - //! Constructor from variant_t com_cast. - /*! Used for construction from a variant. Always QIs to - * guarantee this is the identity. - */ - inline explicit identity_ptr(const impl::com_cast_t& v) throw(com_error); - - //! Constructions of null pointer - /*! - \param null - Only 0 is valid. Any other value will cause E_POINTER to be thrown. - - \exception com_error - Throws E_POINTER if a non-zero value is specified. - */ - explicit identity_ptr(int null) throw(com_error) - : ptr_(NULL) - { if(null != 0) raise_exception(E_POINTER); } - - //! Copy assignment. - /*! Don't QI as this is definitely identity already. - */ - identity_ptr &operator =( const identity_ptr &rhs) throw() - { - identity_ptr tmp(rhs); - swap(tmp); - return *this; - } - - //! Other assignment. - /*! Always QIs. Handles other assignments that have - * available constructors. - */ - template - identity_ptr &operator =(const T &rhs) throw(com_error) - { - identity_ptr tmp(rhs); - swap(tmp); - return *this; - } - //! Null assignment - /*! - Only null is allowed as argument. Attempting to assign a non-zero value will result in E_POINTER (wrapped in com_error) being thrown. - - \exception com_error - Throw E_POINTER if a non-zero value is specified. - */ - identity_ptr& operator=(int null) throw(com_error) - { if(null != 0) raise_exception(E_POINTER); release(); return *this; } - - /// Get at the raw pointer. - IUnknown *get() const throw() { return ptr_; } - /// Pass to an [in] parameter. - IUnknown *in() const throw() { return ptr_; } - /// Get at raw interface. - IUnknown *raw() const throw() { return ptr_; } - - //! Returns true if the wrapped pointer is null. - bool is_null() const throw() - { return (ptr_ ==NULL); } - - //! Null comparison - /*! - Only comparison with a value of zero is allowed. Non-zero values will result - in E_POINTER (wrapped in com_error) being thrown. - - \exception com_error - */ - bool operator==(int null) const - { if (null != 0) raise_exception(E_POINTER); return is_null(); } - //! Null comparison - /*! - Only comparison with a value of zero is allowed. Non-zero values will result - in E_POINTER (wrapped in com_error) being thrown. - - \exception com_error - */ - bool operator!=(int null) const - { if (null != 0) raise_exception(E_POINTER); return !is_null(); } - - /**! \name Pointer Comparison - */ - //@{ - bool operator<(const identity_ptr& x) const throw() - { return ptr_ < x.ptr_; } - - bool operator>(const identity_ptr& x) const throw() - { return ptr_ > x.ptr_; } - - - bool operator<=(const identity_ptr& x) const throw() - { return ptr_ <= x.ptr_; } - - bool operator>=(const identity_ptr& x) const throw() - { return ptr_ >= x.ptr_; } - - bool operator==(const identity_ptr& x) const throw() - { return (ptr_ == x.ptr_); } - - bool operator!=(const identity_ptr& x) const throw() - { return ptr_ != x.ptr_; } - //@} - - protected: - IUnknown *ptr_; - - void swap(identity_ptr& x) throw() - { std::swap(ptr_, x.ptr_); } - - void addref() const throw() - { if (ptr_ != NULL) ptr_->AddRef(); } - - void release() throw() - { if (ptr_ != NULL) { ptr_->Release(); ptr_ = NULL; } } - - private: - // Can't use an identity_ptr for out, inout, use com_ptr - IUnknown **inout(); - IUnknown *out(); - - }; - - //! Interface smart pointer - /*! \note All members are exception safe. - * \sa cometcomptr - */ - template class com_ptr - { - public: - const uuid_t& iid() const throw() - { return uuidof(); } - - private: - enum{ chooser_matches_= impl::iunknown_chooser::matches }; - typedef typename impl::IUnknown_caller< chooser_matches_ > Unknown_caller_; - - void addref() const throw() - { if (ptr_) Unknown_caller_::AddRef(ptr_); } - - void release() throw() - { if (ptr_) { Unknown_caller_::Release(ptr_); ptr_ = 0; } } - - public: - //! Type of pointer to wrapped interface - typedef Itf* interface_pointer; - - //! Safe interface pointer. - /*! - Interface pointer where the methods from IUnknown have been hidden. - */ -#ifndef COMET_USE_RAW_WRAPPERS - typedef wrap_t* safe_interface_pointer; -#else - typedef impl::safe_interface< Itf >* safe_interface_pointer; -#endif - - private: - interface_pointer ptr_; - - public: - //! Default constructor - /*! - Initialises the wrapped pointer to null. - */ - com_ptr() throw() : ptr_(NULL) {} - - //! Destructor - /*! - Calls Release() on pointer if necessary. - */ - ~com_ptr() throw() - { release(); } - - //! Upcasting constructor - /*! - Used for upcasting interface pointer without invocation of QueryInterface. - - This contructor only allows com_ptr upcasts. - - \param x - com_ptr to cast. - */ - - // If you are getting: - // error C2440: '=' : cannot convert from 'struct ... - // - // Use either try_cast or com_cast to cast from one interface to another - // example: - // - // com_ptr p = try_cast( q ); - // - // or - // - // com_ptr p = com_cast( q ); - template com_ptr(const com_ptr& x) throw() - { ptr_ = (Itf2*)x.get(); addref(); } - - //! QueryInterface construction - /*! - Uses QueryInterface to query for interface of type Itf. If the pointer is incompatible, the pointer will be initialised to null. - - \code - com_ptr foo; - com_ptr bar( com_cast(foo) ); - \endcode - - \param x - com_ptr to cast - */ - template com_ptr(const impl::com_cast_t& x) throw() - { ptr_ = NULL; Itf2* p = x.get(); if (p != NULL) Unknown_caller_::QueryInterface(p, iid(), reinterpret_cast(&ptr_)); } - // ^ Note: no error checking!!! - - //! QueryInterface construction - /*! - Uses QueryInterface to query for interface of type Itf. Should the pointer be incompatible, com_error will be thrown. - - \code - com_ptr foo = Foo::create(); - com_ptr bar( try_cast(foo) ); - \endcode - - \param x - com_ptr to cast - - \exception com_error - Throws E_NOINTERFACE if cast fails. - Throws E_POINTER if pointer is zero. - */ - template com_ptr(const impl::try_cast_t& x) throw(com_error) - : ptr_(NULL) - { - Itf2* p = x.get(); if (p == NULL) return; - Unknown_caller_::QueryInterface(p, iid(), reinterpret_cast(&ptr_)) | raise_exception; - if (ptr_ == NULL) raise_exception(E_NOINTERFACE); - } - - //! Copy constructor - /*! - \param x com_ptr to copy. - */ - com_ptr(const com_ptr& x) throw() - : ptr_(x.ptr_) - { addref(); } - - //! Copy from identity_unknown class. - /** Itf must be IUnknown for this to work. Otherwise use try_cast or - * com_cast. - */ - com_ptr( const identity_ptr &x) throw() - : ptr_(x.ptr_) - { addref(); } - - private: - // If you are getting: - // error C2248: '=' : cannot access private member ... - // - // Use either try_cast or com_cast to convert a variant_t to a com_ptr. - // example: - // - // com_ptr p = try_cast( v ); - // - // or - // - // com_ptr p = com_cast( v ); - com_ptr(const variant_t&); - com_ptr& operator=(const variant_t&); - - public: - - //! Construction from variant_t - /*! - This constructor does not throw. The wrapped pointer is initialised to null if the variant is incompatible. - - \param v - Wrapped com_variant to construct com_ptr from - */ - com_ptr(const impl::com_cast_t& v) throw() - { create_nothrow(v.get()); } - - //! Construction from variant_t - /*! - Throws com_error should the variant be incompatible. - - \param v - Wrapped com_variant to construct com_ptr from - - \exception com_error - Throws E_NOINTERFACE if cast fails. - */ - com_ptr(const impl::try_cast_t& v) throw(com_error) - { create(v.get()); } - - //! Construction from a raw interface pointer - /*! - Calls AddRef, and thus does \em not take ownership of the pointer. - - \param p - Interface pointer to construct com_ptr from. - */ - com_ptr(interface_pointer p) throw() - : ptr_(p) - { addref(); } - - //! Attach construction of raw interface pointer - /*! - An attachment construction does not AddRef on the interface, and is said - to take ownership of the interface pointer. - - \param p - auto_attach wrapped pointer to construct com_ptr from. - */ - com_ptr(const impl::auto_attach_t& p) throw() - : ptr_( p.get() ) - {} - - //! Construction from CLSID - /*! - \param clsid - Class ID of coclass. - \param dwClsContext - Class context to create object in. - - \exception com_error - */ - explicit com_ptr(const uuid_t& clsid, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) - { create(clsid, NULL, dwClsContext); } - - //! Construction of aggregated object from CLSID - /*! - \param clsid - Class ID of coclass. - \param outer - Pointer to outer object. - \param dwClsContext - Class context to create object in. - - \exception com_error - */ - /*template*/ com_ptr(const uuid_t& clsid, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) - { create(clsid, outer, dwClsContext); } - - //! Constructions of null pointer - /*! - \param null - Only 0 is valid. Any other value will cause E_POINTER to be thrown. - - \exception com_error - Throws E_POINTER if a non-zero value is specified. - */ - explicit com_ptr(int null) throw(com_error) - : ptr_(NULL) - { if(null != 0) raise_exception(E_POINTER); } - - //! Construction from ProgID - /*! - \param progid - ProgID of class. - \param dwClsContext - Class context to create object in. - - \exception com_error - */ - explicit com_ptr(const wchar_t* progid, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) - { create(progid, 0, dwClsContext); } - - //! Construction from ProgID - /*! - \param progid - ProgID of class. - \param outer - Pointer to outer object. - \param dwClsContext - Class context to create object in. - - \exception com_error - */ - /*template */com_ptr(const wchar_t* progid, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) - { create(progid, outer, dwClsContext); } - - //! Construction using CoGetObject - explicit com_ptr(const wchar_t* name, BIND_OPTS& bind_opts) - { create(name, bind_opts); } - - //! Arrow operator - /*! - Used to access methods and properties of the wrapped interface. - - \note The methods of IUnknown are deliberately hidden. - */ - safe_interface_pointer operator->() const throw(com_error) - { if( ptr_ == NULL) raise_exception(E_POINTER); return get_safe_ptr(); } - - //! Assignment of raw interface pointer - com_ptr& operator=(interface_pointer x) throw() - { com_ptr t(x); swap(t); return *this; } - - //! QueryInterface assignment - /*! - In order to cast unrelated interfaces you must use either com_cast or try_cast. - - A com_cast that fails results in a null pointer assignment. - - \code - com_ptr foo; - com_ptr bar; - bar = com_cast(foo); - if (!bar.is_null()) { - // Cast is ok. - bar->DoTheThing(); - } - \endcode - */ - template com_ptr& operator=(const impl::com_cast_t& x) throw() - { com_ptr t(x); swap(t); return *this; } - - //! QueryInterface assignment - /*! - In order to cast unrelated interfaces you must use either com_cast or try_cast. - - A try_cast that fails will throw E_NOINTERFACE wrapped in com_error. - - \code - com_ptr foo; - com_ptr bar; - try { - bar = try_cast(foo); - bar->DoTheThing(); - } catch (com_error&) { - // Cast didn't work. - } - \endcode - - \exception com_error - Throws E_NOINTERFACE if cast fails. - */ - template com_ptr& operator=(const impl::try_cast_t& x) throw(com_error) - { com_ptr t(x); swap(t); return *this; } - - template - com_ptr& operator=(const com_ptr& x) throw() - { com_ptr t(x); swap(t); return *this; } - - //! Default assigment operator. - com_ptr& operator=(const com_ptr& x) throw() - { com_ptr t(x); swap(t); return *this; } - - //! Null assignment - /*! - Only null is allowed as argument. Attempting to assign a non-zero value will result in E_POINTER (wrapped in com_error) being thrown. - - \exception com_error - Throw E_POINTER if a non-zero value is specified. - */ - com_ptr& operator=(int null) throw(com_error) - { if(null != 0) raise_exception(E_POINTER); release(); return *this; } - - //! Attaching assignment - /*! - Attaches a raw interface pointer to the com_ptr. - - \code - com_ptr foo; - foo = auto_attach( raw_foo_pointer ); - \endcode - */ - com_ptr& operator=(const impl::auto_attach_t& p) throw() - { release(); ptr_ = p.get(); return *this; } - - private: - template - int compare_unknown(const com_ptr& x) const throw(com_error) - { - if ( (void *)ptr_ == (void *)x.get()) return 0; - ::IUnknown* p1 = 0; - ::IUnknown* p2 = 0; - - if (ptr_ != NULL) { - Unknown_caller_::QueryInterface(ptr_,uuidof< ::IUnknown >(), reinterpret_cast(&p1)) | raise_exception; - p1->Release(); - } - - if (x.get()) { - Unknown_caller_::QueryInterface(x.get(), uuidof< ::IUnknown >(), reinterpret_cast(&p2)) | raise_exception; - p2->Release(); - } - - return p1 - p2; - } - int compare_unknown(const identity_ptr& x) const throw(com_error) - { - if (ptr_ == x.get()) return 0; - ::IUnknown* p1 = 0; - ::IUnknown* p2 = 0; - - if (ptr_ != NULL) { - Unknown_caller_::QueryInterface(x.get(), uuidof< ::IUnknown >(), reinterpret_cast(&p2)) | raise_exception; - p2->Release(); - } - - return p1 - p2; - } - public: - /**! \name Pointer Comparison - */ - //@{ - template bool operator<(const T& x) const throw(com_error) - { return compare_unknown(x) < 0; } - - template bool operator>(const T& x) const throw(com_error) - { return compare_unknown(x) > 0; } - - template bool operator<=(const T& x) const throw(com_error) - { return compare_unknown(x) <= 0; } - - template bool operator>=(const T& x) const throw(com_error) - { return compare_unknown(x) >= 0; } - - /** Object equality. - */ - template bool operator==(const com_ptr& x) const throw(com_error) - { return compare_unknown(x) == 0; } - - template bool operator!=(const com_ptr& x) const throw(com_error) - { return compare_unknown(x) != 0; } - - //@} - - //! Returns true if the wrapped pointer is null. - bool is_null() const throw() - { return (ptr_ ==NULL); } - - //! Returns true if the wrapped pointer is null. - bool operator!() const throw() - { return is_null(); } - - //! Null comparison - /*! - Only comparison with a value of zero is allowed. Non-zero values will result - in E_POINTER (wrapped in com_error) being thrown. - - \exception com_error - */ - bool operator==(int null) const - { if (null != 0) raise_exception(E_POINTER); return is_null(); } - - //! Null comparison - /*! - Only comparison with a value of zero is allowed. Non-zero values will result - in E_POINTER (wrapped in com_error) being thrown. - - \exception com_error - */ - bool operator!=(int null) const - { if (null != 0) raise_exception(E_POINTER); return !is_null(); } - - //! Pointer comparison - /*! - Returns true if the two pointers are the same. - */ - template inline bool same_pointer( const com_ptr &x) const throw(com_error) - { return (IUnknown *) ptr_ == (IUnknown *)x.ptr_; } - - //! Swap operation - /*! - This method is very fast, since it does not call AddRef or Release. - */ - void swap(com_ptr& x) throw() - { std::swap(ptr_, x.ptr_); } - - //! Detaches ownership. - /*! - Detaches the pointer from the wrapper and returns it as raw pointer. - - This method is primarily for use by the interface wrapper code. You should very seldomly find use for it. - */ - interface_pointer detach() throw() - { interface_pointer t = ptr_; ptr_ = 0; return t; } - - //! Detaches ownership - /*! - */ - static interface_pointer detach(com_ptr& x) throw() - { return x.detach(); } - - /**! Create a const reference to a pointer without invoking reference-counting. - * Since neither constructor or destructor get called. - */ - static const com_ptr& create_const_reference(const interface_pointer& x) - { return *reinterpret_cast(&x); } - - /**! Create a reference to a pointer without invoking reference-counting. - * Since neither constructor or destructor get called. - */ - static com_ptr& create_reference(interface_pointer& x) - { return *reinterpret_cast(&x); } - - //! \name Adapter methods. - //@{ - - //! [in] adapter - /*! - Used when calling raw interfaces that require an [in] IXXX * argument. - - \code - com_ptr foo; - HRESULT hr = pRawInterface->raw_Method(foo.in()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - interface_pointer in() const throw() - { return ptr_; } - - interface_pointer raw() const throw() - { return ptr_; } - - interface_pointer get() const throw() - { return ptr_; } - - //! [out] adapter. - /*! - Used when calling raw interfaces that require an [out] IXXX ** argument. - - \code - com_ptr foo; - HRESULT hr = pRawInterface->raw_MethodThatReturnsPtr(foo.out()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - interface_pointer* out() throw() - { release(); return &ptr_; } - - //! [in, out] adapter. - /*! - Used when calling raw interfaces that require an [in, out] IXXX ** argument. - - \code - com_ptr foo; - HRESULT hr = pRawInterface->raw_MethodThatChangesPtr(foo.inout()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - interface_pointer* inout() throw() - { return &ptr_; } - - //@} - - private: - class bool_tester - { void operator delete(void*); }; - - public: - operator bool_tester*() const throw() - { if (is_null()) return 0; static bool_tester test; return &test; } - - private: - safe_interface_pointer get_safe_ptr() const throw() - { return reinterpret_cast(ptr_); } - - inline void create_nothrow(const variant_t& v) throw(); - - inline void create(const variant_t& v) throw(com_error); - - void create(const uuid_t& clsid, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) - { CoCreateInstance(clsid, outer.in(), dwClsContext, iid(), reinterpret_cast(&ptr_)) | raise_exception; } - - void create(const wchar_t* clsidString, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) - { - if (clsidString == NULL) raise_exception(E_INVALIDARG); - - CLSID clsid; - - if (clsidString[0] == '{') - CLSIDFromString(const_cast(clsidString), &clsid) | raise_exception; - else - CLSIDFromProgID(clsidString, &clsid) | raise_exception; - - create(clsid, outer, dwClsContext);; - } - - void create(const wchar_t* name, BIND_OPTS& bind_opts) throw(com_error) - { CoGetObject(name, &bind_opts, iid(), reinterpret_cast(&ptr_)) | raise_exception; } - }; // class - - //! Comparison with null - /*! - Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. - - \relates com_ptr - \exception com_error - Throws E_POINTER if a non-zero value is specified. - */ - template inline bool operator==(int null, const com_ptr& x) throw(com_error) - { if(null != 0) raise_exception(E_POINTER); return x.is_null(); } - - //! Comparison with null - /*! - Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. - - \relates identity_ptr - \exception com_error - Throws E_POINTER if a non-zero value is specified. - */ - static inline bool operator==(int null, const identity_ptr& x) throw(com_error) - { if(null != 0) raise_exception(E_POINTER); return x.is_null(); } - - //! Comparison with null - /*! - Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. - - \relates com_ptr - \exception com_error - Throws E_POINTER if a non-zero value is specified. - */ - template inline bool operator!=(int null, const com_ptr& x) throw(com_error) - { return x != null; } - - //! Comparison with null - /*! - Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. - - \relates com_ptr - \exception com_error - Throws E_POINTER if a non-zero value is specified. - */ - inline static bool operator!=(int null, const identity_ptr& x) throw(com_error) - { if(null != 0) raise_exception(E_POINTER); return !x.is_null(); } - - namespace impl { - template - class try_caster_t - { - com_ptr ptr_; - public: - template - try_caster_t( const com_ptr &ptr2) - : ptr_(try_cast(ptr2)) - {} - - const com_ptr &get() const { return ptr_; } - - }; - } - /*! Version of try_cast more to the style of \b dynamic_cast. - This is aimed at being used for casts that get used once in an environment with many interfaces. - \code - com_ptr session; - com_ptr = try_cast( try_cast_ptr(session)->User() ); - \endcode - The impl::try_caster_t is implementation only - let the compiler do the - cast from com_ptr to impl::try_caster_t. Note that try_cast would still - be the preferred method for most casts. - \sa try_cast - \relates com_ptr - */ - template inline com_ptr try_cast_ptr( const impl::try_caster_t &caster) - { return (com_ptr)caster.get(); } - - //! Cast com_ptr. - /*! - Allows QueryInterface when casting to different com_ptr type. - - \code - com_ptr foo; - com_ptr bar; - try { - bar = try_cast(foo); - bar->DoTheThing(); - } catch (com_error&) { - // Cast didn't work. - } - \endcode - - */ - template inline impl::try_cast_t try_cast(const com_ptr& t) { return impl::try_cast_t(t.get()); } - static inline impl::try_cast_t< ::IUnknown> try_cast(const identity_ptr& t) { return impl::try_cast_t< ::IUnknown>(t.get()); } - template inline impl::try_cast_t try_cast(Itf* t) { return impl::try_cast_t(t); } - inline impl::try_cast_t try_cast(const variant_t& v) { return impl::try_cast_t(v); } - //@} - -} // namespace - -#include -#include - -namespace comet { - template - inline void com_ptr::create_nothrow(const variant_t& v) throw() - { - ptr_ = 0; - ::IUnknown *pUnk; - switch (v.get_vt()) { - case VT_DISPATCH: - pUnk = V_DISPATCH(&v.get()); - break; - case VT_UNKNOWN: - pUnk = V_UNKNOWN(&v.get()); - break; - case VT_DISPATCH|VT_BYREF: - pUnk = *V_DISPATCHREF(&v.get()); - break; - case VT_UNKNOWN|VT_BYREF: - pUnk = *V_UNKNOWNREF(&v.get()); - break; - default: - // don't try anything fancy. - return; - } - if( pUnk ==NULL) return; - Unknown_caller_::QueryInterface(pUnk,iid(), reinterpret_cast(&ptr_)); - } - template - inline void com_ptr::create(const variant_t& v) throw(com_error) - { - ptr_ = 0; - ::IUnknown *pUnk; - switch (v.get_vt()) { - case VT_DISPATCH: - pUnk = V_DISPATCH(&v.get()); - break; - case VT_UNKNOWN: - pUnk = V_UNKNOWN(&v.get()); - break; - case VT_DISPATCH|VT_BYREF: - pUnk = *V_DISPATCHREF(&v.get()); - break; - case VT_UNKNOWN|VT_BYREF: - pUnk = *V_UNKNOWNREF(&v.get()); - break; - case VT_EMPTY: - case VT_NULL: - pUnk = NULL; - break; - default: - // don't try anything fancy. - raise_exception( E_INVALIDARG ); - } - if( pUnk ==NULL) return; - Unknown_caller_::QueryInterface(pUnk,iid(), reinterpret_cast(&ptr_)) | raise_exception; - } - - inline identity_ptr::identity_ptr(const impl::try_cast_t& v) throw(com_error) - : ptr_(NULL) - { - VARIANT vv = v.get().get(); - ::IUnknown *pUnk; - switch (V_VT(&vv)) { - case VT_DISPATCH: - pUnk = V_DISPATCH(&vv); - break; - case VT_UNKNOWN: - pUnk = V_UNKNOWN(&vv); - break; - case VT_DISPATCH|VT_BYREF: - pUnk = *V_DISPATCHREF(&vv); - break; - case VT_UNKNOWN|VT_BYREF: - pUnk = *V_UNKNOWNREF(&vv); - break; - case VT_EMPTY: - case VT_NULL: - pUnk = NULL; - break; - default: - // don't try anything fancy. - raise_exception( E_INVALIDARG ); - } - if( pUnk ==NULL) return; - pUnk->QueryInterface( IID_IUnknown, reinterpret_cast(&ptr_)) | raise_exception; - } - - inline identity_ptr::identity_ptr(const impl::com_cast_t& v) throw(com_error) - : ptr_(NULL) - { - VARIANT vv = v.get().get(); - ::IUnknown *pUnk; - switch (V_VT(&vv)) { - case VT_DISPATCH: - pUnk = V_DISPATCH(&vv); - break; - case VT_UNKNOWN: - pUnk = V_UNKNOWN(&vv); - break; - case VT_DISPATCH|VT_BYREF: - pUnk = *V_DISPATCHREF(&vv); - break; - case VT_UNKNOWN|VT_BYREF: - pUnk = *V_UNKNOWNREF(&vv); - break; - default: - // don't try anything fancy. - return; - } - if( pUnk ==NULL) return; - pUnk->QueryInterface( IID_IUnknown, reinterpret_cast(&ptr_)); - } -} - -namespace boost { - template inline Itf* get_pointer(const comet::com_ptr& sp) - { - return sp.raw(); - } - static inline IUnknown* get_pointer(const comet::identity_ptr &sp) - { - return sp.raw(); - } -} - -//! Macro that specialises std::swap for com_ptr. -#define COMET_SPECIALISE_STD_SWAP_ITF(Itf) namespace std { inline void swap(comet::com_ptr& x, comet::com_ptr& y) {x.swap(y); } } - -#endif - diff --git a/EyeTab_SP2/comet/reference_count.h b/EyeTab_SP2/comet/reference_count.h deleted file mode 100644 index 020ad36..0000000 --- a/EyeTab_SP2/comet/reference_count.h +++ /dev/null @@ -1,100 +0,0 @@ -/** \file - * Implements a class that maintains a reference count. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen, Paul Hollingsworth - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_REFERENCE_COUNT_H -#define COMET_REFERENCE_COUNT_H - -#include -#include - -namespace comet { - /*! \addtogroup Misc - */ - //@{ - /// Simple reference counter. - class reference_count - { - public: - reference_count() : rc_(0) {}; - explicit reference_count(size_t x) : rc_(reinterpret_cast(x)) {}; - - reference_count(const reference_count& x) : rc_(x.rc_) {}; - - enum { FLAGVALUE = 1 }; - bool is_flag() const { - return reinterpret_cast(rc_) == 1; - } - - // is_null - /** Implies that the there are currently no outstanding references - * to this object. - */ - bool is_null() const { - return rc_ == 0; - } - - /// Increment count. - size_t operator++() { - if (!rc_) { - rc_ = new size_t(1); - } - return ++*rc_; - } - - /// Decrement count. - size_t operator--() { - if (rc_) { - if (--*rc_ == 0) { - delete rc_; - rc_ = 0; - return 0; - } - return *rc_; - } - return 0; - } - - void clear() { - rc_ = 0; - } - - void swap(reference_count &rhs) throw() { - std::swap(rc_, rhs.rc_); - } - - reference_count& operator=(reference_count& x) - { - rc_ = x.rc_; - return *this; - } - - private: - size_t* rc_; - }; // class reference_count - //@} -} // namespace comet - -namespace std { - //! Specialisation of std::swap for reference_count. - template<> inline void swap(comet::reference_count &lhs, comet::reference_count &rhs) COMET_STD_SWAP_NOTHROW - { - lhs.swap(rhs); - } -} - -#endif diff --git a/EyeTab_SP2/comet/registry.h b/EyeTab_SP2/comet/registry.h deleted file mode 100644 index 3c2d787..0000000 --- a/EyeTab_SP2/comet/registry.h +++ /dev/null @@ -1,1302 +0,0 @@ -/** \file - * Windows Registry iteration and manipulation functions. - */ -/* - * Copyright © 2000, 2001 Paul Hollingsworth - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_REGISTRY_H -#define COMET_REGISTRY_H - -#include - -#include -#include -#include - -#ifdef __BORLANDC__ - #define COMET_ITERATOR_VOID(tag) std::iterator -#else - #ifndef __SGI_STL - #ifdef __MINGW32__ - #define COMET_ITERATOR_VOID(tag) std::forward_iterator - #else - #ifdef _CPPLIB_VER - #define COMET_ITERATOR_VOID(tag) std::iterator - #else - #define COMET_ITERATOR_VOID(tag) std::iterator - #endif - #endif - #else - #define COMET_ITERATOR_VOID(tag) std::iterator - #endif -#endif - -namespace comet { - /** Contains implementation of registry classes. - */ - namespace registry { - /// Unicode compatible string class used in registry operations. -// typedef std::basic_string tstring; - - namespace impl { - // Only when an iterator is dereferenced - // do we want to go about reading the value - // from the registry. This requires us to create - // a temporary object. But in order to overload - // operator->, our temporary object must overload - // operator-> - and often it doesn't. - // Proxy is here to effectively overload operator-> for the temporary - // object. - template - class proxy - { - T t_; - public: - proxy(const T &t) : t_(t) {} - T *operator->() - { - return &t_; - } - - const T *operator->() const - { - return &t_; - } - }; - - class key_base - { - HKEY key_; - mutable reference_count rc_; - - static bool valid_key_(HKEY key) { - return key != 0; - } - - void close_() { - if(valid_key_(key_) && (--rc_ == 0)) { - LONG errcode = ::RegCloseKey(key_); - COMET_ASSERT(ERROR_SUCCESS == errcode); - /* C4189 */ errcode; - } - key_ = 0; // invalidate key handle - } - public: - key_base(const key_base &rhs) - : key_(rhs.key_) { - if(valid_key_(key_)) - ++rhs.rc_; - rc_ = rhs.rc_; - } - - key_base(HKEY key = 0) : key_(key) { - } - - ~key_base() throw() { - close_(); - } - - key_base &operator=(const key_base &rhs) - { - key_base tmp(rhs); - swap(tmp); - return *this; - } - - void swap(key_base &rhs) throw() { - std::swap(key_, rhs.key_); - std::swap(rc_, rhs.rc_); - } - - LONG open(const tstring &subkey, - REGSAM sam_desired, - HKEY *childkey) const { - *childkey = 0; - return ::RegOpenKeyEx(key_, - subkey.c_str(), - 0, - sam_desired, - childkey); - } - - HKEY open_nothrow(const tstring &subkey, - REGSAM sam_desired, - LONG *errcode) const { - HKEY childkey_ = 0; - LONG errcode_ = open(subkey, - sam_desired, - &childkey_); - if(errcode) *errcode = errcode_; - return childkey_; - } - - LONG create(const tstring &subkey, - DWORD options, - REGSAM sam_desired, - LPSECURITY_ATTRIBUTES security_attributes, - LPDWORD disposition, - HKEY *childkey) const { - return ::RegCreateKeyEx(key_, - subkey.c_str(), - 0, - REG_NONE, - options, - sam_desired, - security_attributes, - childkey, - disposition); - } - - HKEY create_nothrow(const tstring &subkey, - DWORD options, - REGSAM sam_desired, - LPSECURITY_ATTRIBUTES security_attributes, - LPDWORD disposition, - LONG *errcode) const { - HKEY childkey = 0; - LONG errcode_ = create(subkey, - options, - sam_desired, - security_attributes, - disposition, - &childkey); - if(errcode) *errcode = errcode_; - return childkey; - } - - LONG flush_nothrow() const { - return ::RegFlushKey(key_); - } - - LONG delete_subkey_nothrow(const tstring &subkey) const { - return ::RegDeleteKey(key_, subkey.c_str()); - } - - LONG delete_value_nothrow(const tstring &value_name) const { - return ::RegDeleteValue(key_, value_name.c_str()); - } - - void close() { - close_(); - } - - HKEY get() const { - return key_; - } - - bool is_valid() const throw() - { - return key_ ? true : false; - } - - operator const void *() const throw() - { - return is_valid() ? this : 0; - } - }; // class key_base - - // Enumerating through keys or values is - // very similar. These two class encapsulate - // all that is different between the two algorithms. - struct next_value - { - static LONG perform(HKEY key, - DWORD dwIndex, - LPTSTR lpName, - LPDWORD lpcName) - { - return ::RegEnumValue(key, dwIndex, lpName, lpcName, 0, 0, 0, 0); - } - }; - - struct next_key - { - static LONG perform(HKEY key, - DWORD dwIndex, - LPTSTR lpName, - LPDWORD lpcName) - { - return ::RegEnumKeyEx(key, dwIndex, lpName, lpcName, 0, 0, 0, 0); - } - }; - } // namespace impl - - - /** \struct name_iterator registry.h comet/registry.h - * Iterates through a list of names. The names might be either key - * names or value names, depending on get_next. - */ - template - struct name_iterator : public COMET_ITERATOR_VOID(std::forward_iterator_tag) - { - // key_ is the only assignment that can fail. So - // we make it the first member, so that - // default assignment is exception safe. - impl::key_base key_; - DWORD index_; - DWORD buf_size_; - DWORD num_values_; - - static void check_exception_(LONG errcode) - { - if(ERROR_SUCCESS != errcode) - error_policy::on_error(errcode); - } - - // Is this iterator an end iterator? - bool is_end() const - { - return key_ ? false : true; - } - - // Make this iterator an end - // iterator - void make_end() - { - key_.close(); - } - - public: - typedef tstring value_type; - name_iterator(const impl::key_base &key, - DWORD num_values, - DWORD buf_size) - : key_(key), - num_values_(num_values), - buf_size_(buf_size), - index_(0) - { - if(0 == num_values) - make_end(); - } - - void swap(name_iterator &rhs) - { - key_.swap(rhs.key_); - std::swap(index_, rhs.index_); - std::swap(buf_size_, rhs.buf_size_); - std::swap(num_values_, rhs.num_values_); - } - - name_iterator &operator=(const name_iterator &rhs) - { - key_ = rhs.key_; - index_ = rhs.index_; - buf_size_ = rhs.buf_size_; - num_values_ = rhs.num_values_; - return *this; - } - - impl::key_base key() const - { - return key_; - } - - name_iterator() - { - make_end(); - } - - value_type operator*() const - { - tstring::value_type *buf = static_cast(_alloca(buf_size_)); - DWORD dummy = buf_size_; - check_exception_(get_next::perform(key_.get(), - index_, - buf, - &dummy)); - return buf; - } - - impl::proxy operator->() const - { - return **this; - } - - name_iterator &operator++() - { - ++index_; - if(index_ == num_values_) - make_end(); - return *this; - } - - name_iterator operator++(int) const - { - name_iterator retval = *this; - ++(*this); - return retval; - } - - bool operator==(const name_iterator &rhs) const - { - if(is_end()) return rhs.is_end(); - if(rhs.is_end()) return is_end(); - return index_ == rhs.index_; - } - - bool operator!=(const name_iterator &rhs) const - { - return !(*this == rhs); - } - }; - - /** \class value registry.h comet/registry.h - * A pseudo-reference to a value in the registry. - * Assign to instances of this object to make changes to the corresponding registry value - * Read from this object to read values from the registry. - */ - template - class value - { - impl::key_base key_; - tstring value_name_; - static void check_exception_(LONG errcode) - { - if(ERROR_SUCCESS != errcode) - error_policy::on_error(errcode); - } - static void type_mismatch() - { - error_policy::on_typemismatch(); - } - - LONG get_value_(DWORD *type, - BYTE *buffer, - DWORD *number_bytes) const - { - return ::RegQueryValueEx(key_.get(), - value_name_.c_str(), - 0, - type, - buffer, - number_bytes); - } - - void get_value(DWORD *type, - BYTE *buffer, - DWORD *number_bytes) const { - check_exception_( - get_value_(type, - buffer, - number_bytes) - ); - } - - LONG set_value_(DWORD type, - const BYTE *data, - DWORD number_bytes) - { - return ::RegSetValueEx(key_.get(), - value_name_.c_str(), - 0, - type, - data, - number_bytes); - } - - void set_value(DWORD type, - const BYTE *data, - DWORD number_bytes) - { - check_exception_( - set_value_(type, - data, - number_bytes)); - } - - tstring name() const - { - return value_name_; - } - public: - - //! This can be used to query if a value exists. - /*! - For example: - \code - string get_thread_model(const regkey &clsid_key) - { - regkey::value_type t = clsid_key.open("InprocServer32", KEY_READ)["ThreadingModel"]; - if(t.exists()) - return t.str(); - else - return "Single"; - } - \endcode - */ - bool exists() const - { - return ERROR_SUCCESS == get_value_(0, 0, 0); - } - - value(const impl::key_base &key, - const tstring &value_name) - : key_(key), - value_name_(value_name) - { - } - - //! Non throwing swap - /*! This is for efficiency only. - operator= is overloaded to have a different - meaning (copying one part of the - registry to another part of the registry). - */ - void swap(value &rhs) - { - key_.swap(rhs.key_); - value_name_.swap(rhs.value_name_); - } - - - //! Get a value of any type. The arguments are passed directly to RegQueryValueEx - /*! - \param type Pointer to the type - can be 0 - \param buffer Pointer to a buffer - can be 0 - \param number_bytes Indicates size of the buffer - can be 0 if buffer is 0 - */ - void get(DWORD *type, - BYTE *buffer, - DWORD *number_bytes) const - { - get_value(type, - buffer, - number_bytes); - } - - //! Get a value - return errcode - /*! - \param type Pointer to the type - can be 0 - \param buffer Pointer to a buffer - can be 0 - \param number_bytes Indicates size of the buffer - can be 0 if buffer is 0 - */ - LONG get_nothrow(DWORD *type, - BYTE *buffer, - DWORD *number_bytes) const - { - return get_value_(type, buffer, number_bytes); - } - - //! Set a value arbitrarily. The arguments are passed directly to RegSetValueEx - /*! - \param type Type to set it to (e.g. REG_SZ) - \param buffer Pointer to a buffer - \param number_bytes Indicates size of the buffer - */ - void set(DWORD type, - const BYTE *buffer, - DWORD number_bytes) - { - set_value(type, - buffer, - number_bytes); - } - - //! Set a value - return errcode - /*! - \param type Type to set it to (e.g. REG_SZ) - \param buffer Pointer to a buffer - \param number_bytes Indicates size of the buffer - */ - LONG set_nothrow(DWORD type, - const BYTE *buffer, - DWORD number_bytes) - { - return set_value_(type, buffer, number_bytes); - } - - //! Interpret value as a string - /*! - \exception com_error If the type is not REG_SZ or REG_EXPAND_SZ (using standard error_policy) - */ - tstring str() const - { - DWORD number_bytes = 0; - DWORD type; - get_value(&type, - 0, - &number_bytes); - if( (REG_SZ != type) && (REG_EXPAND_SZ != type)) - type_mismatch(); - BYTE *buffer = static_cast(_alloca(number_bytes)); - get_value(0, - buffer, - &number_bytes); - return tstring(reinterpret_cast(buffer), - (number_bytes/sizeof(tstring::value_type)) - 1); - } - - tstring str(const tstring& default_val) const - { - DWORD number_bytes = 0; - DWORD type; - if (get_value_(&type, - 0, - &number_bytes) != ERROR_SUCCESS) return default_val; - if( (REG_SZ != type) && (REG_EXPAND_SZ != type)) - type_mismatch(); - BYTE *buffer = static_cast(_alloca(number_bytes)); - get_value(0, - buffer, - &number_bytes); - return tstring(reinterpret_cast(buffer), - (number_bytes/sizeof(tstring::value_type)) - 1); - } - - //! Implicit conversion to string. - operator tstring() const - { - return str(); - } - - //! Implicit conversion to unsigned int - operator DWORD() const - { - return dword(); - } - - //! Interpret value as a DWORD - /*! - \exception com_error If the type is not REG_DWORD or REG_DWORD_LITTLE_ENDIAN (using standard error_policy) - */ - DWORD dword() const - { - DWORD number_bytes = sizeof( DWORD ); - DWORD type; - DWORD retval; - get_value(&type, - reinterpret_cast(&retval), - &number_bytes); - if( (REG_DWORD != type) && (REG_DWORD_LITTLE_ENDIAN != type) ) - type_mismatch(); - return retval; - } - - DWORD dword(DWORD default_val) const - { - DWORD number_bytes = sizeof( DWORD ); - DWORD type; - DWORD retval; - if (get_value_(&type, - reinterpret_cast(&retval), - &number_bytes) != ERROR_SUCCESS) return default_val; - if( (REG_DWORD != type) && (REG_DWORD_LITTLE_ENDIAN != type) ) - type_mismatch(); - return retval; - } - - // These two operators are currently useless - // because VC++ 6.0 appears to have a bug - - // it claims that no conversion to pair - // exists even though it clearly does here. - // However, it's possible these would be - // useful on other compilers (or future compilers). - operator std::pair() const - { - return std::make_pair(name(), str()); - } - - operator std::pair() const - { - return std::make_pair(name(), dword()); - } - - //! Assign a string value and set the type to REG_SZ - value &operator=(const tstring &rhs) - { - set_value(REG_SZ, - reinterpret_cast(rhs.c_str()), - (rhs.length() + 1) * sizeof ( tstring::value_type)); - return *this; - } - - //! Assign a DWORD value and set the type to REG_DWORD - value &operator=(const DWORD &rhs) - { - set_value(REG_DWORD, - reinterpret_cast(&rhs), - sizeof (DWORD) ); - return *this; - } - - //! Assign an integer value - sets type to REG_DWORD - value &operator=(int rhs) - { - return *this = DWORD(rhs); - } - - //! Assign value from another registry value - /*! - Because value objects always refer to a part of the registry, - this effectively copies a registry value - from somewhere else in the registry. - */ - value &operator=(const value &rhs) - { - DWORD type; - DWORD size; - rhs.get_value(&type, - 0, - &size); - BYTE *buffer = static_cast(_alloca(size)); - rhs.get_value_(0, - buffer, - &size); - set_value(type, - buffer, - size); - return *this; - } - }; // class value - - /** \class const_value_iterator registry.h comet/registry.h - * Forward const iterator over registry values. - */ - template - class const_value_iterator : public COMET_ITERATOR_VOID(std::forward_iterator_tag) - { - typedef const value second_type; - typedef std::pair value_type_; - - value_type_ get_value() const - { - tstring name = *index_; - return std::make_pair(name, second_type(index_.key(), name) ); - } - protected: - name_iterator index_; - public: - typedef value_type_ value_type; - - const_value_iterator(const impl::key_base &key, - DWORD num_values, - DWORD buf_size) - : index_(key, num_values, buf_size) - { - } - - const_value_iterator() {} - - void swap(const_value_iterator &rhs) - { - index_.swap(rhs.index_); - } - - value_type operator*() const - { - return get_value(); - } - - const_value_iterator &operator++() - { - ++index_; - return *this; - } - - const_value_iterator operator++(int) - { - const_value_iterator retval(*this); - ++(*this); - return retval; - } - - impl::proxy operator->() - { - return **this; - } - - bool operator==(const const_value_iterator &rhs) const - { - return index_ == rhs.index_; - } - - bool operator!=(const const_value_iterator &rhs) const - { - return index_ != rhs.index_; - } - }; - - /** \class value_iterator registry.h comet/registry.h - * Forward iterator over registry values. - */ - template - class value_iterator : public const_value_iterator - { - typedef value second_type; - typedef std::pair value_type_; - typedef const_value_iterator base; - value_type_ get_value() const - { - tstring name = *this->index_; - return std::make_pair(name, second_type(this->index_.key(), name) ); - } - - public: - typedef value_type_ value_type; - value_iterator(const impl::key_base &key, - DWORD num_values, - DWORD buf_size) - : base(key, num_values, buf_size) {} - - value_iterator() {} - - value_type operator*() const - { - return get_value(); - } - - value_iterator &operator++() - { - base::operator++(); - return *this; - } - - value_iterator operator++(int) - { - value_iterator retval(*this); - ++(*this); - return retval; - } - - impl::proxy operator->() - { - return get_value(); - } - - bool operator==(const value_iterator &rhs) const - { - return this->index_ == rhs.index_; - } - - bool operator!=(const value_iterator &rhs) const - { - return this->index_ != rhs.index_; - } - }; - - /** \struct collection registry.h comet/registry.h - * STL style container class for various types of registry based - * aggregations. - */ - template - struct collection - { - impl::key_base key_; - DWORD num_values_; - DWORD buf_size_; - - public: - collection(const impl::key_base &key, - DWORD num_values, - DWORD buf_size) - : key_(key), - num_values_(num_values), - buf_size_(buf_size) - { - } - - typedef iterator_ iterator; - typedef const_iterator_ const_iterator; - typedef typename iterator_::value_type value_type; - typedef size_t size_type; - - //! Number of elements in the collection - size_type size() const { return num_values_; } - - //! Exception safe swap - void swap(collection &rhs) - { - key_.swap(rhs.key_); - std::swap(num_values_, rhs.num_values_); - std::swap(buf_size_, rhs.buf_size_); - } - - //! Get the first iterator - iterator begin() - { - return iterator(key_, num_values_, buf_size_); - } - - //! Signature iterator marking the end of the sequence - iterator end() - { - return iterator(); - } - - const_iterator begin() const - { - return const_iterator(key_, num_values_, buf_size_); - } - - const_iterator end() const - { - return const_iterator(); - } - }; - - /** \class info registry.h comet/registry.h - * Structure returned by regkey.enumerate() - */ - template - class info - { - // Make key_ the first member - this - // ensures exception safe assignment. - impl::key_base key_; - - // Number of values - DWORD num_values_; - - // Maximum length of a value name - DWORD value_name_tchars_; - - // Number of sub keys - DWORD num_subkeys_; - - // Maximum length of a sub key name - DWORD subkey_name_tchars_; - - static void check_exception_(LONG errcode) - { - if(ERROR_SUCCESS != errcode) - error_policy::on_error(errcode); - } - - static DWORD bytes(DWORD tchars) - { - return (tchars + 1) * sizeof( tstring::value_type); - } - public: - info(const impl::key_base &key) - : key_(key) - { - check_exception_(::RegQueryInfoKey(key_.get(), - 0, // lpClass - reserved - 0, // lpcClass - reserved - 0, // lpReserved - &num_subkeys_, - &subkey_name_tchars_, - 0, // lpcMaxClassLen - I think this is also reserved - &num_values_, - &value_name_tchars_, - 0, // lpcMaxValueLen - not necessary for us - 0, // lpcbSecurityDescriptor - 0)); // lpftLastWriteTime - } - - //! Exception safe swap - void swap(info &rhs) - { - key_.swap(rhs.key_); - std::swap(num_subkeys_, rhs.num_subkeys_); - std::swap(subkey_name_tchars_, rhs.subkey_name_tchars_); - std::swap(value_name_tchars_, rhs.value_name_tchars_); - std::swap(num_values_, rhs.num_values_); - } - - //! Type returned by values() - typedef collection, const_value_iterator > values_type; - - //! Type returned by value_names() - typedef collection > value_names_type; - - //! Type returned by subkeys() - typedef collection > subkeys_type; - - //! Number of values under this key (excluding the default value) - size_t num_values() const - { - return num_values_; - } - - //! Number of subkeys under this key - size_t num_subkeys() const - { - return num_subkeys_; - } - - //! Length of the longest value_name under this key (in TCHARs) - size_t max_value_name() const - { - return value_name_tchars_; - } - - //! Length of the longest subkey name under this key (in TCHARs) - size_t max_subkey_name() const - { - return subkey_name_tchars_; - } - - //! Return the collection of values - /*! - The value_type of the collection is std::pair, regkey::mapped_type> - regkey::mapped_type has implicit conversions to unsigned int and std::basic_string however. - Example - copy all value-name/value pairs into a map - \code - typedef std::basic_string tstring; - regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); - map values_map; - copy(info.values().begin(), info.values().end(), inserter(values_map, values_map.end())); - \endcode - Example - copy all value-name/value pairs into a string map - exception will - be thrown if a non string value is encountered. - \code - typedef std::basic_string tstring; - regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); - map values_map; - copy(info.values().begin(), info.values().end(), inserter(values_map, values_map.end())); - \endcode - Example - copy all value-name/value pairs into a string/int map - exception will - be thrown if a non string value is encountered. - \code - typedef std::basic_string tstring; - regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); - map values_map; - copy(info.values().begin(), info.values().end(), inserter(values_map, values_map.end())); - \endcode - */ - values_type values() const - { - return values_type(key_, num_values_, bytes(value_name_tchars_)); - } - - //! Returns the collection of value names - /*! The value_type of the collection is std::basic_string. - Example - copy all value names of HKEY_LOCAL_MACHINE into a list - \code - regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); - vector value_names; - copy(info.value_names().begin(), info.value_names().end(), back_inserter(value_names)); - \endcode - */ - value_names_type value_names() const - { - return value_names_type(key_, num_values_, bytes(value_name_tchars_)); - } - - //! Returns the collection of subkey names - /*! The value_type of the collection is std::basic_string. - Example - copy all subkeys of HKEY_LOCAL_MACHINE into a list - \code - regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); - vector subkey_names; - copy(info.subkeys().begin(), info.subkeys().end(), back_inserter(subkey_names)); - \endcode - */ - subkeys_type subkeys() const - { - return subkeys_type(key_, num_subkeys_, bytes(subkey_name_tchars_)); - } - }; - -#ifdef __BORLANDC__ - using impl::key_base; -#endif - - /** \class key registry.h comet/registry.h - * Registry key wrapper. - Because an HKEY cannot be duplicated in a platform independent way, - reference counting is used to enable copying of key objects. - - Methods with the _nothrow suffix do not throw exceptions other than - std::bad_alloc. - - Key instances can be used as output iterators for std::pair - assignments. The second argument of each pair must be assignable to - an instance of regkey::mapped_type. Currently, this means that the - second member of each pair must be convertable to either an int, - unsigned int, or std::basic_string. - Example: - \code - regkey the_key = regkey(HKEY_LOCAL_MACHINE).open("Software\\Comet"); - map names; - names["one"] = "one"; - names["two"] = "two"; - copy(names.begin(), names.end(), the_key); - map values; - values["three"] = 3; - values["four"] = 4; - copy(values.begin(), values.end(), the_key); - \endcode - */ - template - class key : private impl::key_base { - private: - static void check_exception_(LONG errcode) - { - if(ERROR_SUCCESS != errcode) - error_policy::on_error(errcode); - } - public: - key(HKEY key_handle = 0) : key_base(key_handle) {} - - //! Copy a key. - /*! In reality this - only increments a reference count. - We have to use reference counting - because ::DuplicateHandle does not - work for registry keys on windows 95/98. - */ - - key(const key &rhs) - : key_base(rhs) { - } - //! Copy a key. - /*! This is useful for attaching to keys from a name iterator. - */ - key( const impl::key_base &rhs) - : key_base(rhs) { - } - - void swap(key &rhs) - { - key_base::swap(rhs); - } - - //! Operator overload to allow you to put key instances in a conditional. - /*! This operator allows you to write code like this: - \code - if(subkey = key(HKEY_LOCAL_MACHINE).open_nothrow(_T("Software"))) - { - ... - }; - \endcode - const void * is used instead of the more obvious "bool" to disable - implicit conversions to int and the like. - Example: - \code - int success = key(HKEY_LOCAL_MACHINE).open_nothrow(_T("Software")); // Won't compile fortunately!! - \endcode - */ - operator const void *() const throw() - { - return is_valid() ? this : 0; - } - - - //! Open a subkey - key open(const tstring &subkey, - REGSAM sam_desired = KEY_ALL_ACCESS) const { - HKEY childkey_ = 0; - check_exception_( - key_base::open(subkey, - sam_desired, - &childkey_) - ); - return childkey_; - } - - //! Open a subkey, no exceptions - key open_nothrow(const tstring &subkey, - REGSAM sam_desired = KEY_ALL_ACCESS, - LONG *errcode = 0) const { - return key_base::open_nothrow(subkey, - sam_desired, errcode); - } - - //! Create a subkey - key create(const tstring &subkey, - DWORD options = REG_OPTION_NON_VOLATILE, - REGSAM sam_desired = KEY_ALL_ACCESS, - LPSECURITY_ATTRIBUTES security_attributes = 0, - LPDWORD disposition = 0) const { - HKEY childkey_ = 0; - check_exception_( - key_base::create(subkey, - options, - sam_desired, - security_attributes, - disposition, - &childkey_) - ); - return childkey_; - } - - //! Create a subkey - no exceptions - key create_nothrow(const tstring &subkey, - DWORD options = REG_OPTION_NON_VOLATILE, - REGSAM sam_desired = KEY_ALL_ACCESS, - LPSECURITY_ATTRIBUTES security_attributes = 0, - LPDWORD disposition = 0, - LONG *errcode = 0) const { - return key_base::create_nothrow(subkey, - options, - sam_desired, - security_attributes, - disposition, - errcode); - } - - //! Call RegFlushKey with the contained key - void flush() const { - check_exception_( - flush_nothrow() - ); - } - - //! Call RegFlushKey with the contained key - no exceptions - LONG flush_nothrow() const { - return key_base::flush_nothrow(); - } - - //! Delete the subkey - /*! Warning - the behaviour is different - between WinNT and Win95/98 if - sub keys are present. - See documentation for ::RegDeleteKey for - more information. - */ - void delete_subkey(const tstring &subkey) const { - check_exception_( - delete_subkey_nothrow(subkey.c_str()) - ); - } - - //! Delete the subkey - /*! Warning - the behaviour is different - between WinNT and Win95/98 if - sub keys are present. - See documentation for ::RegDeleteKey for - more information. - */ - LONG delete_subkey_nothrow(const tstring &subkey) const { - return key_base::delete_subkey_nothrow(subkey); - } - - //! delete a value - void delete_value(const tstring &value_name) const { - check_exception_( - delete_value_nothrow(value_name) - ); - } - - //! delete a value - no exceptions - LONG delete_value_nothrow(const tstring &value_name) const { - return key_base::delete_value_nothrow(value_name); - } - - //! Release reference to the key. - /*! Note that this will only call ::RegCloseKey - if this was the last reference to the outstanding key. - This method is implicitly called by the destructor. - */ - void close() { - key_base::close(); - } - - //! Get access to the raw key without releasing ownership - HKEY get() const { - return key_base::get(); - } - - typedef value mapped_type; - - // All of these methods are const because I figured - // it was more useful. It allows you to create - // temporary regkey objects for the purposes of - // updating. - - //! Get a reference to a value in the registry. - /*! The returned value can be used on both sides of an assignment. Example: - \code - key.get_value("Name") = "Paul"; - string name = key.get_value("Name"); - cout << key.get_value("Name").str() << endl; - \endcode - */ - mapped_type get_value(const tstring &value_name = _T("")) const - { - return mapped_type(*this, value_name); - } - - //! Subscript operator overload - syntactic sugar for get_value(). - /*! Example: - \code - key["Name"] = "Paul"; - string name = key["Name"]; - cout << key["Name"].str() << endl; - \endcode - */ - mapped_type operator[](const tstring &value_name) const - { - return get_value(value_name); - } - - //! Type returned by enumerate() - typedef info info_type; - //! Type returned by enumerate().subkeys() - typedef typename info_type::subkeys_type subkeys_type; - //! Type returned by enumerate().values() - typedef typename info_type::values_type values_type; - //! Type returned by enumerate().value_names() - typedef typename info_type::value_names_type value_names_type; - - //! Enumerate the subkeys, values or value_names, or obtain other information about the key. See also info. - /*! - The enumerate() method effectively calls RegQueryInfoKey, so you should - minimize the number of calls to enumerate() if efficiency is - a concern. e.g. - The following - \code - regkey::info_type info = key.enumerate(); - copy(info.values().begin(), info.values().end(), inserter(value_map, value_map.end())); - \endcode - is more efficient than - \code - copy(key.enumerate().values().begin(), key.enumerate().values().end(), inserter(value_map, value_map.end())); - \endcode - The second version will end up calling RegQueryInfoKey twice. - */ - info_type enumerate() const - { - return info_type(*this); - } - - //! Part of making key into an output iterator - key &operator*() - { - return *this; - } - - //! Assignment. This is designed to work with 'std::pair's - the value type of map classes - template - key &operator=(const T &val) - { - get_value(val.first) = val.second; - return *this; - } - - //! Exception safe assignment operator. - //! Can still throw std::bad_alloc due - //! to reference counting. - //template<> - key &operator=(const key &rhs) - { - key_base::operator=(rhs); - return *this; - } - - //! Noop increment - key &operator++() { return *this; } - //! Noop decrement - key &operator++(int) { return *this; } - }; // class key - } // namespace registry -} // namespace comet - -#endif // COMET_REGISTRY_H diff --git a/EyeTab_SP2/comet/regkey.h b/EyeTab_SP2/comet/regkey.h deleted file mode 100644 index 882dcd2..0000000 --- a/EyeTab_SP2/comet/regkey.h +++ /dev/null @@ -1,65 +0,0 @@ -/** \file - * Base regkey type and error-policy definition. - */ -/* - * Copyright © 2000, 2001 Paul Hollingsworth - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_REGKEY_H -#define COMET_REGKEY_H - -#include - -#include -#include - -namespace comet -{ - /** \struct reg_error regkey.h comet/regkey.h - * Standard error policy, mainly for use by registry functions. - */ - struct reg_error - { - static void on_error(LONG errcode) - { - throw com_error(HRESULT_FROM_WIN32(errcode)); - } - - static void on_typemismatch() - { - throw com_error(HRESULT_FROM_WIN32(ERROR_INVALID_DATATYPE)); - } - }; - - /** Standard type for use when dealing with registry keys. - */ - typedef registry::key regkey; - -} - -namespace std { - - COMET_DECLARE_SWAP(comet::regkey) - COMET_DECLARE_SWAP(comet::regkey::info_type) - COMET_DECLARE_SWAP(comet::regkey::mapped_type) - COMET_DECLARE_SWAP(comet::regkey::values_type) - COMET_DECLARE_SWAP(comet::regkey::subkeys_type) - COMET_DECLARE_SWAP(comet::regkey::value_names_type) - COMET_DECLARE_SWAP(comet::regkey::values_type::iterator) - COMET_DECLARE_SWAP(comet::regkey::values_type::const_iterator) - COMET_DECLARE_SWAP(comet::regkey::subkeys_type::iterator) - COMET_DECLARE_SWAP(comet::regkey::value_names_type::iterator) -} - -#endif diff --git a/EyeTab_SP2/comet/safearray.h b/EyeTab_SP2/comet/safearray.h deleted file mode 100644 index 6851e9b..0000000 --- a/EyeTab_SP2/comet/safearray.h +++ /dev/null @@ -1,1498 +0,0 @@ -/** \file - * SafeArray wrapper implementation. - */ -/* - * Copyright © 2000, 2001, 2002 Sofus Mortensen, Michael Geddes - * Copyright © 2012 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_SAFEARRAY_H -#define COMET_SAFEARRAY_H - -#include -#include -#include -#include -#include -//#include -#include -#include -#include - -#include -#include -#include - -#ifndef NDEBUG -#define COMET_ITERATOR_DEBUG -#endif - -namespace comet { - - - namespace impl { - - template - struct access_operator - { - // Has operator -> - template - struct base - { - T *operator->() - { - return &(static_cast(this)->operator*()); - } - }; - }; - // Doesn't have operator-> - template<> - struct access_operator - { - template - struct base - { - }; - }; - - template struct sa_traits; //Moved to common.h - - template class sa_iterator; - - template struct const_traits { - typedef T value_type; - typedef typename sa_traits::const_reference reference; - typedef const T* pointer; - }; - - template struct nonconst_traits { - typedef T value_type; - typedef typename sa_traits::reference reference; - typedef T* pointer; - }; - - - template<> struct sa_traits : public basic_sa_traits {}; - template<> struct sa_traits : public basic_sa_traits {}; - - template<> struct sa_traits : public basic_sa_traits {}; - template<> struct sa_traits : public basic_sa_traits {}; - - template<> struct sa_traits : public basic_sa_traits {}; - template<> struct sa_traits : public basic_sa_traits {}; - template<> struct sa_traits : public basic_sa_traits {}; - - template<> struct sa_traits : public basic_sa_traits {}; - template<> struct sa_traits : public basic_sa_traits {}; - - template<> struct sa_traits - { - typedef VARIANT raw; - - enum { vt = VT_VARIANT }; - enum { check_type = impl::stct_features_ok }; - enum { extras_type = stet_null }; - - typedef variant_t value_type; - typedef variant_t& reference; - typedef const variant_t& const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } - - typedef sa_iterator > iterator; - typedef sa_iterator > const_iterator; - - static bool are_features_ok(unsigned short f) { return (f & FADF_VARIANT) != 0; } - static com_ptr get_record_info() { return 0; } - }; - - template<> struct sa_traits - { - enum { vt = VT_BSTR }; - enum { check_type = impl::stct_vt_ok }; - enum { extras_type = stet_null }; - - typedef BSTR raw; - typedef bstr_t value_type; - typedef bstr_t& reference; - typedef const bstr_t& const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } - - typedef sa_iterator > iterator; - typedef sa_iterator > const_iterator; - - static bool are_features_ok(unsigned short f) { return (f & FADF_BSTR) != 0; } - static com_ptr get_record_info() { return 0; } - }; - - template<> struct sa_traits - { - enum { vt = VT_CY }; - enum { check_type = impl::stct_vt_ok }; - enum { extras_type = impl::stet_null }; - - typedef CY raw; - typedef currency_t value_type; - typedef currency_t& reference; - typedef const currency_t& const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } - - typedef sa_iterator > iterator; - typedef sa_iterator > const_iterator; - - static bool are_features_ok(unsigned short) { return true; } - static com_ptr get_record_info() { return 0; } - }; - - template<> struct sa_traits - { - enum { vt = VT_DATE }; - enum { check_type = impl::stct_vt_ok }; - enum { extras_type = impl::stet_null }; - - typedef DATE raw; - typedef datetime_t value_type; - typedef datetime_t& reference; - typedef const datetime_t& const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } - - typedef sa_iterator > iterator; - typedef sa_iterator > const_iterator; - - static bool are_features_ok(unsigned short) { return true; } - static com_ptr get_record_info() { return 0; } - }; - - template<> struct sa_traits - { - enum { vt = VT_BOOL }; - enum { check_type = impl::stct_vt_ok }; - enum { extras_type = impl::stet_null }; - - typedef VARIANT_BOOL raw; - typedef variant_bool_t value_type; - typedef variant_bool_t& reference; - typedef const variant_bool_t& const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } - - typedef sa_iterator > iterator; - typedef sa_iterator > const_iterator; - - static bool are_features_ok(unsigned short) { return true; } - static com_ptr get_record_info() { return 0; } - }; - - template<> struct sa_traits: sa_traits - { - }; - - template<> struct sa_traits< com_ptr< ::IUnknown> > - { - enum { vt = VT_UNKNOWN }; - enum { check_type = impl::stct_vt_ok }; - enum { extras_type = impl::stet_iid }; - - typedef IUnknown* raw; - typedef com_ptr< ::IUnknown> value_type; - typedef com_ptr< ::IUnknown>& reference; - typedef const com_ptr< ::IUnknown>& const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast*>(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast*>(&x); } - - typedef sa_iterator, nonconst_traits > > iterator; - typedef sa_iterator, const_traits > > const_iterator; - - static bool are_features_ok(unsigned short f) { return (f & (FADF_UNKNOWN|FADF_DISPATCH)) != 0; } - static com_ptr get_record_info() { return 0; } - static const uuid_t& iid() { return uuid_t::create_const_reference(IID_IUnknown); } - }; - - template<> struct sa_traits< com_ptr< ::IDispatch> > - { - enum { vt = VT_DISPATCH }; - enum { check_type = impl::stct_vt_ok }; - enum { extras_type = impl::stet_iid }; - - typedef IDispatch* raw; - typedef com_ptr< ::IDispatch> value_type; - typedef com_ptr< ::IDispatch>& reference; - typedef const com_ptr< ::IDispatch>& const_reference; - - static reference create_reference(raw& x) { return *reinterpret_cast*>(&x); } - static const_reference create_const_reference(raw& x) { return *reinterpret_cast*>(&x); } - - typedef sa_iterator, nonconst_traits > > iterator; - typedef sa_iterator, const_traits > > const_iterator; - - static bool are_features_ok(unsigned short f) { return (f & FADF_DISPATCH) != 0; } - static com_ptr get_record_info() { return 0; } - - static const uuid_t& iid() { return uuid_t::create_const_reference(IID_IDispatch); } - }; - -#ifdef COMET_ITERATOR_DEBUG -#define COMET_SAIT_THIS ,this -#define COMET_SAIT_ITER(CONT_, IT_, TRAITS_) impl::sa_debug_iterator - - template - struct sa_debug_traits - { - typedef TRAITS traits; - typedef typename TRAITS::value_type value_type; - typedef typename TRAITS::raw raw; - typedef typename TRAITS::reference reference; - typedef typename TRAITS::iterator nonconst_iterator; - typedef typename TRAITS::iterator iterator; - typedef typename TRAITS::const_iterator const_iterator; - }; - template - struct sa_const_debug_traits - { - typedef TRAITS traits; - typedef typename TRAITS::value_type value_type; - typedef typename TRAITS::raw raw; - typedef typename TRAITS::const_reference reference; - typedef typename TRAITS::iterator nonconst_iterator; - typedef typename TRAITS::const_iterator iterator; - typedef typename TRAITS::const_iterator const_iterator; - }; - - template< typename CONT, typename TRAITS> - class sa_debug_iterator : public std::iterator, - public access_operator::result>::template base > - { - public: - const CONT *cont_; - typename TRAITS::iterator iter_; - - template - sa_debug_iterator(IT ptr, const CONT *cont) : iter_(ptr), cont_(cont) {} - - sa_debug_iterator( const sa_debug_iterator > &nc_it ) : iter_(nc_it.iter_), cont_(nc_it.cont_) {} - - sa_debug_iterator(): cont_(NULL) {} - - typename TRAITS::iterator get_raw()const { return iter_; } - typename TRAITS::const_iterator get_const_raw()const { return iter_; } - - - sa_debug_iterator operator++(int) { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( get_const_raw() < cont_->end().get_raw() ); - sa_debug_iterator t(*this); - ++iter_; - return t; - } - - sa_debug_iterator& operator++() { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( get_const_raw() < cont_->end().get_raw() ); - ++iter_; - return *this; - } - - sa_debug_iterator operator--(int) { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( get_const_raw() > cont_->begin().get_raw() ); - sa_debug_iterator t(*this); - --iter_; - return t; - } - - sa_debug_iterator& operator--() { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( get_const_raw() > cont_->begin().get_raw() ); - --iter_; - return *this; - } - - typename TRAITS::reference operator[](size_t n) { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( (get_const_raw()+ n) >= cont_->begin().get_raw()); - COMET_ASSERT( (get_const_raw()+n) < cont_->end().get_raw() ); - return iter_[n]; - } - - sa_debug_iterator& operator+=(size_t n) { - COMET_ASSERT(cont_!=NULL); - COMET_ASSERT((get_const_raw()+ n) >= cont_->begin().get_raw()); - COMET_ASSERT((get_const_raw()+n) <= cont_->end().get_raw() ); - iter_ += n; - return *this; - } - - sa_debug_iterator& operator-=(size_t n) { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( (get_const_raw()- n) >= cont_->begin().get_raw()); - COMET_ASSERT( (get_const_raw()- n) <= cont_->end().get_raw() ); - iter_ -= n; - return *this; - } - - ptrdiff_t operator-(const sa_debug_iterator& it) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( cont_ == it.cont_); - return iter_ - it.iter_; - } - - bool operator<(const sa_debug_iterator& it) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( cont_ == it.cont_); - return iter_ < it.iter_; - } - - bool operator>(const sa_debug_iterator& it) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( cont_ == it.cont_); - return iter_ > it.iter_; - } - - bool operator<=(const sa_debug_iterator& it) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( cont_ == it.cont_); - return iter_ <= it.iter_; - } - - bool operator>=(const sa_debug_iterator& it) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( cont_ == it.cont_); - return iter_ >= it.iter_; - } - - bool operator==(const sa_debug_iterator& it) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( cont_ == it.cont_); - return iter_ == it.iter_; - } - - bool operator!=(const sa_debug_iterator& it) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( cont_ == it.cont_); - return iter_ != it.iter_; - } - - sa_debug_iterator operator+(size_t n) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( (get_const_raw() + n) >= cont_->begin().get_raw()); - COMET_ASSERT( (get_const_raw() + n) <= cont_->end().get_raw() ); - return sa_debug_iterator( iter_+n, cont_); - } - - sa_debug_iterator operator-(size_t n) const { - COMET_ASSERT( cont_!=NULL); - COMET_ASSERT( (get_const_raw() - n) >= cont_->begin().get_raw()); - COMET_ASSERT( (get_const_raw() - n) <= cont_->end().get_raw() ); - return sa_debug_iterator( iter_-n, cont_); - } - - typename TRAITS::reference operator*() { - COMET_ASSERT( cont_ != NULL); - COMET_ASSERT( (get_const_raw()) >= cont_->begin().get_raw()); - COMET_ASSERT( (get_const_raw()) < cont_->end().get_raw() ); - return *iter_; - } - }; - - -#else // COMET_ITERATOR_DEBUG -#define COMET_IT_DBG__(x) -#define COMET_SAIT_THIS -#define COMET_SAIT_ITER(CONT_, IT_, TRAITS_) IT_ -#endif // COMET_ITERATOR_DEBUG - - - /** \internal - */ - template class sa_iterator : public std::iterator, - public access_operator::result>::template base< T, sa_iterator > - - { - typedef sa_iterator > nonconst_self; - public: - typedef sa_traits traits; - typename traits::raw* ptr_; - - typedef typename TR::pointer pointer; - typedef typename TR::reference reference; - typedef ptrdiff_t difference_type; - - sa_iterator(const nonconst_self& it ) - : ptr_(it.get_raw()) - {} - - explicit sa_iterator(typename traits::raw* ptr) : ptr_(ptr) {} - - sa_iterator() {} - - typename traits::raw* get_raw() const - { - return ptr_; - } - - sa_iterator operator++(int) { - sa_iterator t(*this); - ++ptr_; - return t; - } - - sa_iterator& operator++() { - ++ptr_; - return *this; - } - - sa_iterator operator--(int) { - sa_iterator t(*this); - --ptr_; - return t; - } - - sa_iterator& operator--() { - --ptr_; - return *this; - } - - reference operator[](size_t n) { - return traits::create_reference(ptr_[n]); - } - - sa_iterator& operator+=(size_t n) { - ptr_ += n; - return *this; - } - - sa_iterator& operator-=(size_t n) { - ptr_ -= n; - return *this; - } - - difference_type operator-(const sa_iterator& it) const { - return ptr_ - it.ptr_; - } - - bool operator<(const sa_iterator& it) const { - return ptr_ < it.ptr_; - } - - bool operator>(const sa_iterator& it) const { - return ptr_ > it.ptr_; - } - - bool operator<=(const sa_iterator& it) const { - return ptr_ <= it.ptr_; - } - - bool operator>=(const sa_iterator& it) const { - return ptr_ >= it.ptr_; - } - - bool operator==(const sa_iterator& it) const { - return ptr_ == it.ptr_; - } - - bool operator!=(const sa_iterator& it) const { - return ptr_ != it.ptr_; - } - - sa_iterator operator+(size_t n) const { - return sa_iterator(ptr_ + n); - } - - sa_iterator operator-(size_t n) const { - return sa_iterator(ptr_ - n); - } - - template friend sa_iterator operator+(size_t n, const sa_iterator& it); - // friend sa_iterator operator+(size_t n, const sa_iterator&); - - reference operator*() { return traits::create_reference(*ptr_); } - }; - - } - - namespace impl - { - template - class safearray_auto_ref_t; - - template - class safearray_auto_const_ref_t; - }; - - /*! \addtogroup COMType - */ - //@{ - /**STL container compatible wrapper for a safearray. - * Provides forwards and reverse iterators. - */ -#ifdef COMET_PARTIAL_SPECIALISATION - - template - struct get_extras - { - static void *extras(){ return 0; } - }; - template - struct get_extras - { - static void *extras(){ return impl::sa_traits::get_record_info().in(); } - }; - template - struct get_extras - { - static void *extras(){ return impl::sa_traits::iid().in_ptr(); } - }; - - template - struct traits_sanity_check - { static inline void check( const SAFEARRAY *psa) { } }; - template - struct traits_sanity_check - { - static void check(SAFEARRAY *psa) { - if ((psa->fFeatures & FADF_HAVEVARTYPE)!=0) - { - VARTYPE vt; - ::SafeArrayGetVartype(psa, &vt) | raise_exception ; - if(vt != impl::sa_traits::vt) - throw std::runtime_error("safearray_t: VarType mismatch"); - } - } - }; - template - struct traits_sanity_check { - static void check(SAFEARRAY *psa) - { - uuid_t iid; - ::SafeArrayGetIID(psa, &iid) | raise_exception; - if( iid != impl::sa_traits::iid() ) - throw std::runtime_error("safearray_t: IID mismatch"); - } - }; -#endif - template class safearray_t - { - public: - typedef impl::sa_traits traits; - typedef size_t size_type; ///< type for sizes (bounds etc). - typedef long index_type; ///< Type for indexing into the array - typedef ptrdiff_t difference_type; ///< Type for pointer differences - typedef typename traits::value_type value_type; ///< The type of the contained value . - typedef typename traits::reference reference; ///< Safearray reference type - typedef typename traits::const_reference const_reference; ///< Safearray const reference type - - typedef typename COMET_SAIT_ITER( safearray_t, traits::iterator, impl::sa_debug_traits ) - iterator; ///< Iterator type - typedef typename COMET_SAIT_ITER( safearray_t, traits::const_iterator, impl::sa_const_debug_traits) - const_iterator; ///< Const iterator type - -#if defined(COMET_STD_ITERATOR) - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; -#else - // workaround for broken reverse_iterator implementations due to no partial specialisation - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; -#endif - - //! \name Iterator functions - //@{ - iterator begin() { - return iterator(get_array() COMET_SAIT_THIS ); - } - - iterator end() { - return iterator(get_array() + size() COMET_SAIT_THIS ); - } - - const_iterator begin() const { - return const_iterator(get_array() COMET_SAIT_THIS) ; - } - - const_iterator end() const { - return const_iterator(get_array() + size() COMET_SAIT_THIS ); - } - - reverse_iterator rbegin() { - return reverse_iterator(end()); - } - - reverse_iterator rend() { - return reverse_iterator(begin()); - } - - const_reverse_iterator rbegin() const { - return const_reverse_iterator(end()); - } - - const_reverse_iterator rend() const { - return const_reverse_iterator(begin()); - } - //@} - - /// The number of elements in the array. - size_type size() const { - return psa_ ? psa_->rgsabound[0].cElements : 0; - } - - /// Returns whether the array is empty. - bool is_empty() const { - return size() == 0; - } - - /// Returns element n relative to lower_bound() - reference operator[](index_type n) { - COMET_ASSERT( (size_type)(n - lower_bound()) < size() ); - return traits::create_reference(get_element(n)); - } - - /// Returns const element n relative to lower_bound() - const_reference operator[](index_type n) const { - COMET_ASSERT( (size_type)(n - lower_bound()) < size() ); - return traits::create_reference(get_element(n)); - } - - //! Returns element n relative to lower_bound(). - /*! \throw out_of_range The index is out of range. - */ - reference at(index_type n) { - range_check(n); - return traits::create_reference(get_element(n)); - } - - //! Returns const element n relative to lower_bound(). - /*! \throw out_of_range The index is out of range. - */ - const_reference at(index_type n) const { - range_check(n); - return traits::create_reference(get_element(n)); - } - - //! The front element. - reference front() { return *begin(); } - //! The front element - const. - const_reference front() const { return *begin(); } - //! The back element. - reference back() { return *(end() - 1); } - //! The back element - const. - const_reference back() const { return *(end() - 1); } - - private: -#ifndef COMET_PARTIAL_SPECIALISATION - template - struct get_extras - { - static void *extras(){ return 0; } - }; - template<> - struct get_extras - { - static void *extras(){ return impl::sa_traits::get_record_info().in(); } - }; - template<> - struct get_extras - { - static void *extras(){ return impl::sa_traits::iid().in_ptr(); } - }; -#endif - public: - - /// \name Constructors - //@{ - /// Construct a null array. - safearray_t() : psa_(0) - {} - - /*! Attach to (and take ownership of) an existing array. - \code - SAFEARRAY *psa = SafeArrayCreateVectorEx(VT_BSTR, 0, 5, NULL); - safearray_t sa(auto_attach(psa)); - \endcode - */ - safearray_t(const impl::auto_attach_t& psa) : psa_(psa.get()) - { - sanity_check(psa_); - - if (psa_) try { - ::SafeArrayLock(psa_) | raise_exception; - } catch (...) - { - ::SafeArrayDestroy(psa_); - throw; - } - } - - /// Copy from a variant, making converting if necessary. - safearray_t(const variant_t& var) - { - if(var.get_vt() == (VT_ARRAY|traits::vt)) - { - SafeArrayCopy(var.in().parray, &psa_) | raise_exception; - } else { - variant_t v2(var, VT_ARRAY|traits::vt); - SafeArrayCopy(v2.in().parray, &psa_) | raise_exception; - } - - if (psa_) try { - ::SafeArrayLock(psa_) | raise_exception; - } catch (...) - { - ::SafeArrayDestroy(psa_); - throw; - } - - } - - /// Copy construction - safearray_t(const safearray_t& sa) - { - ::SafeArrayCopy(sa.psa_, &psa_) | raise_exception; - - if (psa_) try { - ::SafeArrayLock(psa_) | raise_exception; - } catch (...) - { - ::SafeArrayDestroy(psa_); - throw; - } - } - - /// Construct a new safearray vector. - /*! \param sz Size of the vector. - * \param lb Lower bound for the vector. - */ - explicit safearray_t(size_type sz, index_type lb) - { - if (sz > (std::numeric_limits::max)() || - sz < (std::numeric_limits::min)()) - throw std::overflow_error( - "Cannot create array of requested size"); - -#ifndef COMET_PARTIAL_SPECIALISATION - psa_ = ::SafeArrayCreateVectorEx( - traits::vt, lb, static_cast(sz), - get_extras::extras()); -#else - psa_ = ::SafeArrayCreateVectorEx( - traits::vt, lb, static_cast(sz), - get_extras::extras()); -#endif - if (psa_ == 0) throw std::bad_alloc(); - - try { - ::SafeArrayLock(psa_) | raise_exception; - } catch (...) - { - ::SafeArrayDestroy(psa_); - throw; - } - } - - /// Construct a new safearray vector. - /*! \param sz Size of the vector. - * \param lb Lower bound for the vector. - * \param val Initial value for the elements. - */ - safearray_t(size_type sz, index_type lb, const T& val) - { -#ifndef COMET_PARTIAL_SPECIALISATION - psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz, get_extras::extras()); -#else - psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz, get_extras::extras()); -#endif // COMET_PARTIAL_SPECIALISATION - if (psa_ == 0) throw std::bad_alloc(); - - try { - ::SafeArrayLock(psa_) | raise_exception; - - for (iterator it = begin(); it != end(); ++it) *it = val; - } catch (...) { - ::SafeArrayUnlock(psa_); - ::SafeArrayDestroy(psa_); - throw; - } - } - - /// Construct a safearray from an iterator, specifying the lower bound. - /** \param first First element of the container. - * \param last Beyond the last element of the container. - * \param lb Lower bound of the new safearray_t. - */ - template safearray_t(InputIterator first, InputIterator last, index_type lb) - { - initialise_aux(first, last, lb, type_traits::int_holder< type_traits::is_integer::result >()); - } - //@} - -private: - template void initialise_aux(InputIterator first, InputIterator last, index_type lb, type_traits::int_holder) - { - size_type sz = std::distance(first, last); -#ifndef COMET_PARTIAL_SPECIALISATION - psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); -#else - psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); -#endif //COMET_PARTIAL_SPECIALISATION - - if (psa_ == 0) throw std::bad_alloc(); - - try { - ::SafeArrayLock(psa_) | raise_exception; - - for (iterator it = begin(); first != last; ++first, ++it) { - *it = *first; - } - } catch (...) { - ::SafeArrayUnlock(psa_); - ::SafeArrayDestroy(psa_); - throw; - } - } - - template void initialise_aux(Integer sz, Integer lb, index_type dummy, type_traits::int_holder) - { -#ifndef COMET_PARTIAL_SPECIALISATION - psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); -#else - psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); -#endif // COMET_PARTIAL_SPECIALISATION - - if (psa_ == 0) throw std::bad_alloc(); - - ::SafeArrayLock(psa_) | raise_exception; - } - -public: - /// Resize the array, preserving lower_bound - /** If the array is null, uses 0. - */ - void resize(size_type n) - { - resize_bound(n, (psa_==NULL)?0:lower_bound()); - } - /// Resize the array, specifying the lower_bound - // This has been renamed to prevent ambiguous functions when T = size_type - void resize_bound(size_type n, size_type lb) - { - safearray_t t(n, lb); - - iterator i1 = begin(); - iterator i2 = t.begin(); - - for (;i1 != end() && i2 != t.end(); ++i1, ++i2) { - std::swap(*i1, *i2); - } - - swap(t); - } - - /** Resize the array, preserving lower_bound and specifying an initial - * value for uninitialised values. - */ - void resize( size_type n, const T& val) { - resize_bound(n,(psa_==NULL)?0:lower_bound(),val); - } - /** Resize the array, specifying lower_bound and specifying an initial - * value for uninitialised values. - */ - void resize_bound(size_type n, size_type lb, const T& val) { - safearray_t t(n, lb); - - iterator i1 = begin(); - iterator i2 = t.begin(); - - for (;i1 != end() && i2 != t.end(); ++i1, ++i2) { - std::swap(*i1, *i2); - } - - for (;i2 != t.end(); ++i2) *i2 = val; - - swap(t); - } - - /// Assign the safearray to be \p v elements of \p val. - void assign(size_type n, const T& val) { - safearray_t t(n, lower_bound(), val); - swap(t); - } - - /// Assign the safearray from a f \p first and \p last iterators. - template void assign(InputIterator first, InputIterator last) { - assign_aux(first, last, type_traits::int_holder< type_traits::is_integer::result >()); - } - - /** Return the IRecordInfo struct for the array for VT_RECORD. - */ - com_ptr get_record_info() - { - com_ptr rec_info; - ::SafeArrayGetRecordInfo(psa_, rec_info.out()) | raise_exception; - return rec_info; - } - /** Get the Variant Type of the members of the array. - */ - VARTYPE get_vt() - { - // Something appears broken in SafeArrayGetVartype - returning VT_UNKNOWN when it has FADF_DISPATCH set. - if (psa_->fFeatures & FADF_DISPATCH) return VT_DISPATCH; - if (psa_->fFeatures & FADF_UNKNOWN) return VT_UNKNOWN; - VARTYPE retval; - ::SafeArrayGetVartype(psa_, &retval) | raise_exception; - return retval; - } - - /** Return interface-id of the members of the array. - */ - uuid_t get_iid() - { - uuid_t iid; - ::SafeArrayGetIID(psa_, &iid) | raise_exception; - return iid; - } - -private: - template void assign_aux(InputIterator first, InputIterator last, type_traits::int_holder) - { - safearray_t t( first, last, lower_bound() ); - swap(t); - } - - template void assign_aux(Integer sz, const T& val, type_traits::int_holder) - { - safearray_t t(sz, lower_bound(), val); - swap(t); - } -public: - - /// Insert \p n elements of \p val at position \p pos. - void insert(iterator pos, size_type n, const T& val) { - safearray_t t(n+size(), lower_bound()); - iterator i1 = t.begin(); - iterator i2 = begin(); - - for (;i2 != pos; ++i1, ++i2) *i1 = *i2; - for (;n>0;--n, ++i1) *i1 = val; - for (;i2 != end(); ++i1, ++i2) *i1 = *i2; - - swap(t); - } - - - /// Insert elements coppied from iterator \p first to \p last at position pos. - template void insert(iterator pos, InputIterator first, InputIterator last) { - insert_aux(pos, first, last, type_traits::int_holder::result >()); - } - - /// Push an element to the back of the list (ensure lower-bound); - void push_back( const T& val, index_type lb ) - { - safearray_t t(size()+1, lb); - - iterator i1 = begin(), i2 = t.begin(); - - for (;i1 != end() ; ++i1, ++i2) - std::swap(*i1, *i2); - - *i2 = val; - - swap(t); - } - - /// Push an element to the back of the list. - inline void push_back( const T& val) - { - push_back(val, lower_bound()); - } - - /// Pop an element from the back of the list. - inline void pop_back() - { - size_type lastone = size(); - if (lastone > 0) - erase(begin()+(lastone-1)); - } - - /// Push an element to the front of the list (ensure lower-bound). - void push_front( const T &val, index_type lb) - { - safearray_t t(size()+1, lb); - - iterator i1 = begin(), i2 = t.begin(); - - *i2 = val; - - for (++i2; i1 != end(); ++i1, ++i2) - std::swap(*i1, *i2); - - swap(t); - } - /// Push an element to the front of the list. - inline void push_front( const T &val) - { - push_front(val, lower_bound()); - } - /// Pop an element from the front of the list. - inline void pop_front() - { - erase(begin()); - } - - /// Erase a specified item. - /** \param it Item to erase - * \return Item beyond erased item. - */ - iterator erase(iterator it) - { - if (it == end()) - return end(); - size_type where= it-begin(); - - safearray_t t(size()-1, lower_bound()); - iterator ret = t.end(); - iterator i1 = begin(), i2 = t.begin(); - // Copy up to iterator - for (; i1 != end() && i1 != it; ++i1, ++i2) - std::swap(*i1,*i2); - ++i1;// Skip this one - for (; i1 != end(); ++i1, ++i2) - std::swap(*i1,*i2); - - swap(t); - return begin()+where; - } - - /// Erase a range of items. - /** \param first Item to erase from - * \param second Item after range to be erased. - * \return Item beyond erased range. - */ - iterator erase(iterator first, iterator second) - { - safearray_t t(size()-(second-first), lower_bound()); - size_type where= first-begin(); - iterator i1 = begin(), i2 = t.begin(); - // Copy up to first. - for (; i1 != end() && i1 != first; ++i1, ++i2) - std::swap(*i1,*i2); - // Skip up to second - for( ; i1 != second; ++i1) - ; - // skip to end. - for (; i1 != end(); ++i1, ++i2) - std::swap(*i1,*i2); - - swap(t); - return begin()+where; - } - - - private: - template void insert_aux(iterator pos, InputIterator first, InputIterator last, type_traits::int_holder) { - size_type n = std::distance(first, last); - - safearray_t t(n+size(), lower_bound()); - iterator i1 = t.begin(); - iterator i2 = begin(); - - for (;i2 != pos; ++i1, ++i2) *i1 = *i2; - for (;first != last; ++i1, ++first) *i1 = *first; - for (;i2 != end(); ++i1, ++i2) *i1 = *i2; - - swap(t); - } - - template void insert_aux(iterator pos, Integer n, const T& val, type_traits::int_holder) { - safearray_t t(n+size(), lower_bound()); - iterator i1 = t.begin(); - iterator i2 = begin(); - - for (;i2 != pos; ++i1, ++i2) *i1 = *i2; - for (;n>0;--n, ++i1) *i1 = val; - for (;i2 != end(); ++i1, ++i2) *i1 = *i2; - - swap(t); - } - public: - - //! \name Assignment Operators - //@{ - safearray_t& operator=(const safearray_t& sa) - { - safearray_t t(sa); - swap(t); - return *this; - } - - safearray_t& operator=(const variant_t& v) - { - safearray_t t(v); - swap(t); - return *this; - } - - safearray_t& operator=(const impl::auto_attach_t& sa) - { - safearray_t t(sa); - swap(t); - return *this; - } - //@} - - private: - void destroy() { - if (psa_ != 0) { - COMET_ASSERT(psa_->cLocks == 1); - ::SafeArrayUnlock(psa_); - ::SafeArrayDestroy(psa_); - psa_ = 0; - } - } - - public: - - ~safearray_t() { - destroy(); - } - - /// Unlock and detach a raw SAFEARRAY. - SAFEARRAY* detach() { - if (psa_) { - ::SafeArrayUnlock(psa_); - } - SAFEARRAY* rv = psa_; - psa_ = 0; - return rv; - } - - /*! Detach the safearray to the variant \p var. - The safearray becomes invalid after this point. - \code - safe_array_t ints(2,0); - variant_t var; - ints.detach_to(var); - \endcode - */ - void detach_to( variant_t &var) - { - COMET_ASSERT(psa_->cLocks == 1); - if (psa_) ::SafeArrayUnlock(psa_) | raise_exception; - var = auto_attach( psa_ ); - psa_= 0; - } - - /*! Detach a safearray from the variant \p var. - An attempt is made to cast the type of the variant before attaching. - */ - void detach_from( variant_t &var) - { - if(var.get_vt()!=(VT_ARRAY|traits::vt)) - { - var.change_type(VT_ARRAY|traits::vt); - } - safearray_t t(auto_attach(var.detach().parray)); - swap(t); - } - - /// The lower bound of the array. - /** \sa get_at - */ - index_type lower_bound() const { - return psa_ ? psa_->rgsabound[0].lLbound : 0; - } - - /// Change the lower_bound of the array. - void lower_bound(index_type lb) { - psa_->rgsabound[0].lLbound = lb; - } - - private: - class sa_auto_lock_t - { - SAFEARRAY** ppsa_; - - // These are not available - sa_auto_lock_t(); - sa_auto_lock_t(const sa_auto_lock_t&); - sa_auto_lock_t& operator=(const sa_auto_lock_t&); - public: - operator SAFEARRAY**() throw() { return ppsa_; } - - sa_auto_lock_t(SAFEARRAY** ppsa) : ppsa_(ppsa) {} - - ~sa_auto_lock_t() - { - if (*ppsa_) { - HRESULT hr = ::SafeArrayLock(*ppsa_); - COMET_ASSERT( SUCCEEDED(hr) ); - hr; - } - } - }; - - public: - //! \name Access converters - //@{ - SAFEARRAY* in() const throw() { - return const_cast(psa_); - } - SAFEARRAY** in_ptr() const throw() { - return const_cast(&psa_); - } - sa_auto_lock_t inout() throw() { - if (psa_) { - ::SafeArrayUnlock(psa_); - } - return &psa_; - } - sa_auto_lock_t out() throw() { - destroy(); - return &psa_; - } - //@} - /*! Detach a raw SAFEARRAY pointer from a safearray_t. - */ - static SAFEARRAY* detach(safearray_t& sa) - { - return sa.detach(); - } - - /** Create a reference to a safearray from a raw SAFEARRAY pointer. - * Mainly used by the implementation wrappers. - */ - static const impl::safearray_auto_const_ref_t create_const_reference(SAFEARRAY* const & sa); - static impl::safearray_auto_ref_t create_reference(SAFEARRAY* & sa); - - /** Create a reference to a safearray from a variant. - \code - function( const variant_t &var) - { - const safe_array &stringarray = safe_array::create_reference( var ); - } - \endcode - */ - static const impl::safearray_auto_const_ref_t create_const_reference(const variant_t &var); - /** Create c const reference to a safearray from a variant. - */ - static impl::safearray_auto_ref_t create_reference(variant_t &var); - - void swap(safearray_t& sa) throw() - { - std::swap(psa_, sa.psa_); - } - - private: - - void range_check(index_type n) const { - size_type m = (size_type)(n - lower_bound()); - if (/*m < 0 || */ m >= size()) throw std::out_of_range("safearray_t"); - } - - typename traits::raw* get_array() const { - if (psa_) { - COMET_ASSERT(psa_->cLocks != 0); - return static_cast(psa_->pvData); - } - return NULL; - } - - typename traits::raw& get_element(size_type n) const { - return get_array()[n - lower_bound()]; - } - - protected: - SAFEARRAY* psa_; - -#ifndef COMET_PARTIAL_SPECIALISATION - - template< enum impl::sa_traits_check_type STCT > - struct traits_sanity_check - { static inline void check( const SAFEARRAY *psa) { } }; - template<> - struct traits_sanity_check - { - static void check(SAFEARRAY *psa) { - if ((psa->fFeatures & FADF_HAVEVARTYPE)!=0) - { - VARTYPE vt; - ::SafeArrayGetVartype(psa, &vt) | raise_exception ; - if(vt != impl::sa_traits::vt) - throw std::runtime_error("safearray_t: VarType mismatch"); - } - } - }; - template<> - struct traits_sanity_check { - static void check(SAFEARRAY *psa) - { - uuid_t iid; - ::SafeArrayGetIID(psa, &iid) | raise_exception; - if( iid != impl::sa_traits::iid() ) - throw std::runtime_error("safearray_t: IID mismatch"); - } - }; -#endif - /// Make sure the passed in safearray agrees with the type of the safearray_t - static void sanity_check(SAFEARRAY* psa) { - if (psa == 0) return; - if (psa->cDims != 1) throw std::runtime_error("safearray_t: Invalid dimension"); - if (!traits::are_features_ok( psa->fFeatures )) throw std::runtime_error("safearray_t: fFeatures is invalid"); -#ifndef COMET_PARTIAL_SPECIALISATION - traits_sanity_check< impl::sa_traits_check_type(traits::check_type)>::check(psa); -#else - traits_sanity_check::check(psa); -#endif - if (sizeof(T) != psa->cbElements) throw std::runtime_error("safearray_t: cbElements mismatch"); - } - - }; - //@} - - namespace impl { - - template< typename T> - class safearray_auto_ref_t : public safearray_t - { - // Don't allow any of these. - safearray_auto_ref_t(); - safearray_auto_ref_t &operator=(const safearray_auto_ref_t &); - safearray_auto_ref_t &operator=(const safearray_t &); - safearray_t& operator=(const impl::auto_attach_t &); - void swap(safearray_t& sa); - - // Remember where we got the original for a non-const reference - SAFEARRAY *& psa_; - - public: - safearray_auto_ref_t(const safearray_auto_ref_t &sa) - : safearray_t(auto_attach(sa.psa_)), psa_(sa.psa_) - { - COMET_STATIC_ASSERT(false); - } - - explicit safearray_auto_ref_t(SAFEARRAY *& psa) - : safearray_t(auto_attach(psa)), psa_(psa) - { - } - - ~safearray_auto_ref_t() - { - psa_ = this->detach(); - } - }; - - template< typename T> - class safearray_auto_const_ref_t : public safearray_t - { - // Don't allow any of these. - safearray_auto_const_ref_t(); - safearray_auto_const_ref_t &operator=(const safearray_auto_const_ref_t &); - safearray_auto_const_ref_t &operator=(const safearray_t &); - safearray_t& operator=(const impl::auto_attach_t &); - void swap(safearray_t& sa); - - public: - safearray_auto_const_ref_t(const safearray_auto_const_ref_t &sa) - : safearray_t(auto_attach(sa.psa_)) - { - COMET_STATIC_ASSERT(false); - } - - explicit safearray_auto_const_ref_t(SAFEARRAY *psa) - : safearray_t(auto_attach(psa)) - { - } - - ~safearray_auto_const_ref_t() - { - this->detach(); - } - }; - - } - - template - const impl::safearray_auto_const_ref_t safearray_t::create_const_reference(SAFEARRAY* const & sa) - { - return impl::safearray_auto_const_ref_t(sa); - } - template - impl::safearray_auto_ref_t safearray_t::create_reference(SAFEARRAY* & sa) - { - return impl::safearray_auto_ref_t(sa); - } - template - const impl::safearray_auto_const_ref_t safearray_t::create_const_reference(const variant_t &var) - { - if(var.get_vt()!=(VT_ARRAY|traits::vt)) - throw std::exception("unexepected array type"); - - SAFEARRAY *sa = var.get().parray; - return impl::safearray_auto_const_ref_t(sa); - } - template - impl::safearray_auto_ref_t safearray_t::create_reference(variant_t &var) - { - if(var.get_vt()!=(VT_ARRAY|traits::vt)) - throw std::exception("unexepected array type"); - - SAFEARRAY *sa = var.get().parray; - return impl::safearray_auto_ref_t(sa); - } - - - - template inline comet::impl::sa_iterator operator+(size_t n, const comet::impl::sa_iterator& it) { - return it + n; - } - -} // namespace comet - -namespace { - COMET_STATIC_ASSERT( sizeof(SAFEARRAY*) == sizeof(comet::safearray_t) ); -} - -namespace std { - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW; - template<> inline void swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW; -} - -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } -template<> inline void std::swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } - -#endif diff --git a/EyeTab_SP2/comet/scope_guard.h b/EyeTab_SP2/comet/scope_guard.h deleted file mode 100644 index cdb1387..0000000 --- a/EyeTab_SP2/comet/scope_guard.h +++ /dev/null @@ -1,363 +0,0 @@ -/** \file - * Scope-guards can be used to proivde transactional integrity. - * - * scope_guard and friends are adopted from source by Andrei Alexandrescu and Petru Marginean. - * - * See the
article. - */ -/* - * Copyright © 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - - -#ifndef COMET_SCOPE_GUARD_H -#define COMET_SCOPE_GUARD_H - -#include - -namespace comet { - - /*! \addtogroup Misc - */ - //@{ - namespace impl { - - /** Base class providing dismission and safe execution primitives. - */ - class scope_guard_impl_base - { - scope_guard_impl_base& operator =(const scope_guard_impl_base&); - protected: - ~scope_guard_impl_base() - { - } - scope_guard_impl_base(const scope_guard_impl_base& other) throw() - : dismissed_(other.dismissed_) - { - other.dismiss(); - } - template static void safe_execute(J& j) throw() - { - if (!j.dismissed_) - try - { - j.execute(); - } - catch(...) - { - } - } - - mutable bool dismissed_; - public: - scope_guard_impl_base() throw() : dismissed_(false) - { - } - void dismiss() const throw() - { - dismissed_ = true; - } - }; - - /** 0 parameter scope guard. - * \internal - */ - template class scope_guard_impl_0 : public scope_guard_impl_base - { - public: - ~scope_guard_impl_0() throw() - { - safe_execute(*this); - } - - void execute() - { - fun_(); - } - - scope_guard_impl_0(F fun) : fun_(fun) - {} - - private: - F fun_; - }; - - /** 1 parameter scope guard. - * \internal - */ - template class scope_guard_impl_1 : public scope_guard_impl_base - { - public: - ~scope_guard_impl_1() throw() - { - safe_execute(*this); - } - - void execute() - { - fun_(p1_); - } - - scope_guard_impl_1(F fun, P1 p1) : fun_(fun), p1_(p1) - {} - - private: - F fun_; - const P1 p1_; - }; - - /** 2 parameter scope guard. - * \internal - */ - template class scope_guard_impl_2: public scope_guard_impl_base - { - public: - ~scope_guard_impl_2() throw() - { - safe_execute(*this); - } - - void execute() - { - fun_(p1_, p2_); - } - - scope_guard_impl_2(F fun, P1 p1, P2 p2) : fun_(fun), p1_(p1), p2_(p2) - {} - - private: - F fun_; - const P1 p1_; - const P2 p2_; - }; - - /** 3 parameter scope guard. - * \internal - */ - template class scope_guard_impl_3 : public scope_guard_impl_base - { - public: - ~scope_guard_impl_3() throw() - { - safe_execute(*this); - } - - void execute() - { - fun_(p1_, p2_, p3_); - } - - scope_guard_impl_3(F fun, P1 p1, P2 p2, P3 p3) : fun_(fun), p1_(p1), p2_(p2), p3_(p3) - {} - - private: - F fun_; - const P1 p1_; - const P2 p2_; - const P3 p3_; - }; - - /** 0 parameter object scope guard. - * \internal - */ - template class obj_scope_guard_impl_0 : public scope_guard_impl_base - { - public: - ~obj_scope_guard_impl_0() throw() - { - safe_execute(*this); - } - - void execute() - { - (obj_.*memFun_)(); - } - - obj_scope_guard_impl_0(Obj& obj, MemFun memFun) - : obj_(obj), memFun_(memFun) {} - - private: - Obj& obj_; - MemFun memFun_; - }; - - /** 1 parameter object scope guard. - * \internal - */ - template class obj_scope_guard_impl_1 : public scope_guard_impl_base - { - public: - ~obj_scope_guard_impl_1() throw() - { - safe_execute(*this); - } - - void execute() - { - (obj_.*memFun_)(p1_); - } - - obj_scope_guard_impl_1(Obj& obj, MemFun memFun, P1 p1) - : obj_(obj), memFun_(memFun), p1_(p1) {} - - private: - Obj& obj_; - MemFun memFun_; - const P1 p1_; - }; - - /** 2 parameter object scope guard. - * \internal - */ - template class obj_scope_guard_impl_2 : public scope_guard_impl_base - { - public: - ~obj_scope_guard_impl_2() throw() - { - safe_execute(*this); - } - - void execute() - { - (obj_.*memFun_)(p1_, p2_); - } - - obj_scope_guard_impl_2(Obj& obj, MemFun memFun, P1 p1, P2 p2) - : obj_(obj), memFun_(memFun), p1_(p1), p2_(p2) {} - - private: - Obj& obj_; - MemFun memFun_; - const P1 p1_; - const P2 p2_; - }; - - /** Implementation to allow argument to be passed by reference. - * \internal - * \sa make_guard - */ - template class ref_holder - { - T& ref_; - public: - ref_holder(T& ref) : ref_(ref) {} - operator T& () const - { - return ref_; - } - private: - // Disable assignment - not implemented - ref_holder& operator=(const ref_holder&); - }; - - } - - /** Allow an argument to be passed by reference. - * \code - * scope_guard guard = make_guard( fun, by_ref(long) ); - * \endcode - * \relates comet::scope_guard - * \internal - */ - template inline impl::ref_holder by_ref(T& t) - { - return impl::ref_holder(t); - } - - /** Implements a scope guard with 0 parameters. - * \param fun Function or \link functor comet::functor \endlink - * \relates comet::scope_guard - * \internal - */ - template inline impl::scope_guard_impl_0 make_guard(F fun) - { - return impl::scope_guard_impl_0(fun); - } - - /** Implements a scope guard with 1 parameter. - * \param fun Function or \link functor comet::functor \endlink - * \relates comet::scope_guard - * \sa by_ref - * \internal - */ - template inline impl::scope_guard_impl_1 make_guard(F fun, P1 p1) - { - return impl::scope_guard_impl_1(fun, p1); - } - - /** Implements a scope guard with 2 parameters. - * \param fun Function or \link functor comet::functor \endlink - * \relates comet::scope_guard - * \sa by_ref - * \internal - */ - template inline impl::scope_guard_impl_2 make_guard(F fun, P1 p1, P2 p2) - { - return impl::scope_guard_impl_2(fun, p1, p2); - } - - /** Implements a scope guard with 3 parameters. - * \param fun Function or \link functor comet::functor \endlink - * \relates comet::scope_guard - * \sa by_ref - * \internal - */ - template inline impl::scope_guard_impl_3 make_guard(F fun, P1 p1, P2 p2, P3 p3) - { - return impl::scope_guard_impl_3(fun, p1, p2, p3); - } - - /** Implements a scope guard with 0 parameters, calling a memeber function on an object. - * \param fun Function or \link functor comet::functor \endlink - * \relates comet::scope_guard - */ - template inline impl::obj_scope_guard_impl_0 make_obj_guard(Obj& obj, MemFun memFun) - { - return impl::obj_scope_guard_impl_0(obj, memFun); - } - - /** Implements a scope guard with 1 parameter, calling a memeber function on an object. - * \param fun Function or \link functor comet::functor \endlink - * \relates comet::scope_guard - * \sa by_ref - * \internal - */ - template inline impl::obj_scope_guard_impl_1 make_obj_guard(Obj& obj, MemFun memFun, P1 p1) - { - return impl::obj_scope_guard_impl_1(obj, memFun, p1); - } - - /** Implements a scope guard with 2 parameters, calling a memeber function on an object. - * \param fun Function or \link functor comet::functor \endlink - * \relates comet::scope_guard - * \sa by_ref - * \internal - */ - template inline impl::obj_scope_guard_impl_2 make_obj_guard(Obj& obj, MemFun memFun, P1 p1, P2 p2) - { - return impl::obj_scope_guard_impl_2(obj, memFun, p1, p2); - } - - /** Pointer to a scope guard. - * Relies on const references holding on to an assigned stack object for - * the scope of the reference. - * \sa scope_guard_impl_0 obj_scope_guard_impl_0 scope_guard_impl_1 obj_scope_guard_impl_1 scope_guard_impl_2 obj_scope_guard_impl_2 - */ - typedef const impl::scope_guard_impl_base& scope_guard; - - //@} - -} // namespace - -#endif diff --git a/EyeTab_SP2/comet/server.h b/EyeTab_SP2/comet/server.h deleted file mode 100644 index 3d87786..0000000 --- a/EyeTab_SP2/comet/server.h +++ /dev/null @@ -1,1588 +0,0 @@ -/** \file - * Main functionality for providing a COM server dll. - */ -/* - * Copyright © 2000-2002 Sofus Mortensen, Paul Hollingsworth, Michael Geddes, Mikael Lindgren - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_SERVER_H -#define COMET_SERVER_H - -#include -#ifdef COMET_GCC_HEADERS -#include -#else // COMET_GCC_HEADERS -#include -#endif // COMET_GCC_HEADERS - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -/** \page cometclassfactory Comet Class Factories - * Comet currently has support for \ref cometclassfactorystandard (non-aggregating), \ref cometclassfactoryaggregating and - * \ref cometclassfactorysingleton class factories. As there has been no demand for custom - * class factories yet, there is currently no support for them. - * - * The different class-factories are enabled by specialising the - * coclass_implementation to inherit off different classes. - * - * \section cometclassfactorystandard Standard - * - * The trigger classes for standard class-factory are either comet::coclass, or - * comet::simple_object. - * - * There is nothing much more noteworthy about this form except that it will - * return CLASS_E_NOAGGREGATION if aggregation is specified. - * - * \section cometclassfactoryaggregating Aggregating - * - * The trigger classes for the aggregating class-factory are comet::aggregateable_coclass or - * comet::aggregateable_object. - * - * The implementation of aggregation in comet is similar to the - * poly-aggregateable implementations found in ATL; there is no - * aggregation-only coclass implementation. - * - * The aggregating class factory will hook up aggegation if an IUnknown is - * supplied. - * - * \section cometclassfactorysingleton Singleton - * - * The trigger classes for the singleton class-factory are - * comet::singleton_coclass or comet::singleton_object. - * - * The singleton class-factory will cause all CreateObject calls for this class to - * return the same object. The life-time of the object is from first call till - * just before the dll/exe is unloaded. - * - * More complex requirements are anticipated, however they have not been - * implemented. - */ - /*! \defgroup Server Server implementation details. - */ - //@{ - -/** Template class for specifying your own custom registration. - - The default template does nothing - define a specialization of ::custom_registration - for each Coclass that you wish to have custom registration. - - on_register is called \em after the standard registration. - on_unregister is called \em before the standard unregistration. - - Common initialization and cleanup code for both registration and unregistration - can be put in the constructor and destructor. - - All exceptions thrown by on_unregister are caught and discarded. - - Example usage: - \code - class custom_registration - { - comet::regkey key_; - public: - custom_registration() - { - key_ = comet::regkey(HKEY_LOCAL_MACHINE).open(_T("Software\\AcmeCorp\\AcmePayroll")); - }; - void on_register(const TCHAR *filename) - { - key_.create(_T("Bill Bloggs")); - } - void on_unregister(const TCHAR *filename) - { - key_.delete_subkey(_T("Bill Bloggs")); - } - }; - \endcode -*/ -template -class custom_registration -{ -public: - void on_register(const TCHAR *) {} - void on_unregister(const TCHAR *) {} -}; -//@} - -namespace comet { - - - namespace impl { - - enum factory_type_t { ft_standard, ft_aggregateable, ft_singleton }; - - inline void create_record_info( const IID& lib_guid, const IID& rec_guid, unsigned short major_version, unsigned short minor_version, IRecordInfo*& ri ) - { - auto_cs lock( module().cs() ); - - if (!ri) { - com_ptr tl; - LoadRegTypeLib(lib_guid, - major_version, - minor_version, - GetUserDefaultLCID(), - tl.out()) | raise_exception; - com_ptr ti; - tl->GetTypeInfoOfGuid(rec_guid, ti.out()) | raise_exception; - GetRecordInfoFromTypeInfo(ti.in(), &ri) | raise_exception; - module().add_object_to_dispose( impl::create_itf_releaser( ri ) ); - } - } - - template struct interface_wrapper : public T - { - typedef T interface_is; - }; - - template class ATL_NO_VTABLE simple_object_aux : - public implement_qi< typelist::append< T, - make_list >::result > > - { - public: -// enum { factory_type = ft_standard }; - - STDMETHOD_(ULONG, AddRef)() - { - LONG rc = InterlockedIncrement(&rc_); - if (rc_ == 1) module().lock(); - return rc; - } - - STDMETHOD_(ULONG, Release)() - { - LONG rc = InterlockedDecrement(&rc_); - if (rc == 0) { - try { - delete this; - } COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); - module().unlock(); - } - return rc; - } - - STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) - { - return S_OK; - } - - void so_internal_addref() { ++rc_; } - void so_internal_release() { --rc_; } - - protected: - simple_object_aux() : rc_(0) {} - virtual ~simple_object_aux() {} - private: - long rc_; - - // non-copyable - simple_object_aux(const simple_object_aux&); - simple_object_aux& operator=(const simple_object_aux&); - }; - - } - /*!\defgroup Objects Classes used as bases for COM objects. - */ - //@{ - /** Provide an inner unknown for aggregation. - * This is the unknown that handles lifetime of an aggregateable object. - */ - template - struct aggregate_inner_unknown : IUnknown - { - aggregate_inner_unknown() : rc_(0) {} - - STDMETHOD_(ULONG, AddRef)() - { - if (rc_ == 0) module().lock(); - return InterlockedIncrement(&rc_); - } - - STDMETHOD_(ULONG, Release)() - { - size_t rc = InterlockedDecrement(&rc_); - if (rc == 0) { - try { - delete static_cast(this); - } - COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); - module().unlock(); - } - return rc; - } - - STDMETHOD(QueryInterface)(REFIID riid, void **pv) - { - if(riid == IID_IUnknown) - { - *pv=get_inner(); - AddRef(); - return S_OK; - } - return static_cast(this)->QueryInterfaceInternal(riid, pv); - } - - IUnknown *get_inner() { return static_cast(this); } - - private: - long rc_; - }; - - /** Provides the outer-unknown for aggregation. - * This unkonwn points to the agregating unknown if aggregation occured, or - * to the aggregate_inner_unknown class if it didn't. - * This also implements the interfaces and QueryInterface. - */ - template - class aggregate_outer_unknown : public implement_internal_qi< - typelist::append >::result > - > - { - public: - aggregate_outer_unknown(): outer_(NULL) {} - - STDMETHOD_(ULONG, AddRef)() - { - //assert(outer_!=NULL); - return outer_->AddRef(); - } - - STDMETHOD_(ULONG, Release)() - { - //assert(outer_!=NULL); - return outer_->Release(); - } - STDMETHOD(QueryInterface)(REFIID riid, void** ppv) - { - //assert(outer_!=NULL); - return outer_->QueryInterface(riid, ppv); - } - STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) - { - return S_OK; - } - void set_outer_(IUnknown *outer){ outer_ = outer;} - - - private: - IUnknown *outer_; - }; - //@} - - namespace impl { - - template class ATL_NO_VTABLE aggregateable_object_aux : public aggregate_outer_unknown, public aggregate_inner_unknown > - { - public: - aggregateable_object_aux() - { - set_outer_(static_cast(static_cast< aggregate_inner_unknown > *>(this))); - } - - protected: - virtual ~aggregateable_object_aux() {} - friend struct aggregate_inner_unknown >; - private: - // non-copyable - aggregateable_object_aux(const aggregateable_object_aux&); - aggregateable_object_aux& operator=(const aggregateable_object_aux&); - }; - - } - - /*!\addtogroup Objects - */ - //@{ - /*! \class aggregateable_object server.h comet/server.h - Implement a user aggregateable object. - \code - class my_class : public aggregateable_object< IFooImpl, IBarImpl > - { - ... - }; - \endcode - \sa handle_exception_default IProvideClassInfoImpl simple_object - */ - template class ATL_NO_VTABLE aggregateable_object : public impl::aggregateable_object_aux< typename make_list::result > - { - public: - enum { factory_type = impl::ft_aggregateable }; - }; - - /*! \class simple_object server.h comet/server.h - A simple reference counted COM object. - \code - class my_class : public simple_object< IFooImpl, IBarImpl > - { - ... - }; - \endcode - \sa handle_exception_default IProvideClassInfoImpl aggregateable_object - */ - template class ATL_NO_VTABLE simple_object : public impl::simple_object_aux< typename make_list::result > - { - public: - enum { factory_type = impl::ft_standard }; - }; - //@} - - namespace impl { - - - - template class ATL_NO_VTABLE static_object_aux : - public implement_qi< typelist::append< T, make_list >::result > > - { - public: - STDMETHOD_(ULONG, AddRef)() - { - module().lock(); - return 2; - } - - STDMETHOD_(ULONG, Release)() - { - module().unlock(); - return 1; - } - - STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) - { - return S_OK; - } - protected: - static_object_aux() {} - virtual ~static_object_aux() {} - }; - - } - - /*!\addtogroup Objects - */ - //@{ - /*! \class static_object server.h comet/server.h - A simple static allocated COM object. - \code - class my_class : public static_object< IFooImpl, IBarImpl > - { - ... - }; - \endcode - * \sa handle_exception_default IProvideClassInfoImpl - */ - template class ATL_NO_VTABLE static_object : public impl::static_object_aux< typename make_list::result > - { - }; - - /*! \class singleton_object server.h comet/server.h - A simple singleton allocated COM object. - \code - class my_class : public singleton_object< IFooImpl, IBarImpl > - { - ... - }; - \endcode - * \sa handle_exception_default IProvideClassInfoImpl - */ - template class ATL_NO_VTABLE singleton_object : public impl::static_object_aux< typename make_list::result > - { - public: - enum { factory_type = impl::ft_singleton }; - void set_dispose_command_( impl::cmd_t *) { } - }; - - - /*! \class embedded_object server.h comet/server.h - * - * \sa handle_exception_default IProvideClassInfoImpl - * \todo documentation - */ - template class ATL_NO_VTABLE embedded_object : - public implement_qi< typelist::append< typename make_list::result, typename make_list >::result > > - { - public: - STDMETHOD_(ULONG, AddRef)() - { - return parent_->AddRef(); - } - - STDMETHOD_(ULONG, Release)() - { - return parent_->Release(); - } - - STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) - { - return S_OK; - } - - protected: - explicit embedded_object(PARENT* parent) : parent_(parent) {} - - PARENT* get_parent() const { return parent_; } - - typedef embedded_object base_class; - private: - PARENT* parent_; - - // non-copyable - embedded_object(const embedded_object&); - embedded_object& operator=(const embedded_object&); - }; - - /*! \class embedded_object2 server.h comet/server.h - * - * \sa handle_exception_default IProvideClassInfoImpl - * \todo documentation - */ - template class ATL_NO_VTABLE embedded_object2 : - public implement_qi< typelist::append< typename make_list::result, make_list >::result > > - { - public: - STDMETHOD_(ULONG, AddRef)() - { - if (rc_ == 0) module().lock(); - long r = InterlockedIncrement(&rc_); - if (is_connected_) return parent_->AddRef(); - return r; - } - - STDMETHOD_(ULONG, Release)() - { - size_t rc = InterlockedDecrement(&rc_); - - if (is_connected_) return parent_->Release(); - - if (rc == 0) { - try { - delete this; - } - COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); - module().unlock(); - } - return rc; - } - - STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) - { - return S_OK; - } - - void disconnect() - { - // todo make thread safe! - - if (is_connected_) { - is_connected_ = false; - - for (long i=0; iRelease(); - - // Provoke destruction if necessary. - AddRef(); - Release(); - } - } - - protected: - explicit embedded_object2(PARENT* parent) : parent_(parent), rc_(0), is_connected_(true) {} - - virtual ~embedded_object2() {} - - PARENT* get_parent() const { return parent_; } - - typedef embedded_object2 base_class; - private: - PARENT* parent_; - bool is_connected_; - long rc_; - - // non-copyable - embedded_object2(const embedded_object2&); - embedded_object2& operator=(const embedded_object2&); - }; - //@} - - /// Base class for class factories. - template class class_factory_base : public IClassFactory - { - public: - STDMETHOD_(ULONG, AddRef)() - { - if (LOCK_MODULE) module().lock(); - return 2; - } - - STDMETHOD_(ULONG, Release)() - { - if (LOCK_MODULE) module().unlock(); - return 1; - } - - STDMETHOD(QueryInterface)(REFIID riid, void **pv) - { - if (!pv) return E_POINTER; - *pv = 0; - if (riid == IID_IClassFactory) *pv = static_cast(this); - if (riid == IID_IUnknown) *pv = this; - - if (*pv == NULL) return E_NOINTERFACE; - - AddRef(); - return S_OK; - } - - STDMETHOD(LockServer)(BOOL bLock) - { - if (bLock) - module().lock(); - else - module().unlock(); - return S_OK; - } - protected: - HRESULT handle_exception( const bstr_t &src ) - { -#ifndef COMET_DISABLE_EXCEPTION_RETHROW_CATCH - return comet_exception_handler::rethrow( source_info_t( src, IID_IUnknown, L"ClassFactory") ); -#else // COMET_DISABLE_EXCEPTION_RETHROW_CATCH - return comet_exception_handler::catcher_hr(E_FAIL, source_info_t(src, IID_IUnknown, L"ClassFactory") ); -#endif // COMET_DISABLE_EXCEPTION_RETHROW_CATCH - } - }; - - //! Basic class-factory. - template class class_factory : public class_factory_base - { - public: - STDMETHOD(CreateInstance)(::IUnknown *pUnkOuter, REFIID riid, void **ppv) - { - if (pUnkOuter) return CLASS_E_NOAGGREGATION; - *ppv = 0; - - if (!LOCK_MODULE) module().lock(); - - T::coclass_type* t; - try { - t = new T; - } - catch (...) - { - if (!LOCK_MODULE) module().unlock(); - return handle_exception( bstr_t(L"CreateInstance(") + bstr_t(uuid_t::create_const_reference(riid),true ) + ")" ); - } - - t->AddRef(); - HRESULT hr = t->QueryInterface(riid, ppv); - t->Release(); - - if (!LOCK_MODULE) module().unlock(); - - return hr; - } - - }; - - //! Class factory for aggregateable objects. - template class class_factory_agg : public class_factory_base - { - STDMETHOD(CreateInstance)(::IUnknown *pUnkOuter, REFIID riid, void **ppv) - { - *ppv = 0; - - if (!LOCK_MODULE) module().lock(); - - T* t; - try { - t = new T; - } - catch (...) - { - if (!LOCK_MODULE) module().unlock(); - return handle_exception( bstr_t(L"CreateInstance(") + bstr_t(uuid_t::create_const_reference(riid),true ) + ")" ); - } - if(pUnkOuter!=NULL) - { - if(riid!=IID_IUnknown) - { - if (!LOCK_MODULE) module().unlock(); - return CLASS_E_NOAGGREGATION; - } - t->set_outer_(pUnkOuter); - } - - t->get_inner()->AddRef(); - HRESULT hr = t->get_inner()->QueryInterface(riid, ppv); - t->get_inner()->Release(); - - if (!LOCK_MODULE) module().unlock(); - - return hr; - } - }; - - /// Class factory for singletons. - template class class_factory_singleton : public class_factory_base - { - public: - class_factory_singleton() : obj_(NULL), primed_(0) - { } - - STDMETHOD(CreateInstance)(::IUnknown *pUnkOuter, REFIID riid, void **ppv) - { - *ppv = 0; - if(pUnkOuter!=NULL) - return CLASS_E_NOAGGREGATION; - - if (!LOCK_MODULE) module().lock(); - - // Add this to the list to get the object disposed on - // moudle terminate. - if (0==InterlockedExchange(&primed_, 1)) - { - module().add_object_to_dispose( create_object_disposer(this) ); - } - - if (obj_ == NULL ) - { - - try { - // Create a new instance, but make sure only one is - // used if there is contention. - T *newVal = new T; - newVal->set_dispose_command_( create_object_disposer(this)); -#ifndef InterlockedCompareExchangePointer - InterlockedCompareExchange( &(void *&)obj_, newVal, 0); -#else - InterlockedCompareExchangePointer( &(void *&)obj_, newVal, 0); -#endif - } - catch (...) - { - if (!LOCK_MODULE) module().unlock(); - return handle_exception( bstr_t(L"CreateInstance(") + bstr_t(uuid_t::create_const_reference(riid),true ) + ")" ); - } - } - - HRESULT hr = obj_->QueryInterface(riid, ppv); - - if (!LOCK_MODULE) module().unlock(); - - return hr; - } - - // Called by object_disposer on module terminate. - void object_dispose() - { - if (obj_ != NULL) - { - T *t= obj_; - obj_ = NULL; - CoDisconnectObject(t->get_unknown(), 0); - delete t; - } - } - - T *obj_; - long primed_; - private: - }; - - - /*!\addtogroup Objects - */ - //@{ - /** Enumerate thread_model. - */ - namespace thread_model { - /** Enumerate thread_model. - */ - enum thread_model_t { - Apartment = 0, ///< Apartment threaded. - Free = 1, ///< Free threaded. - Both = 2, ///< Both threaded (either apartment or free) - Neutral = 3 ///< Netural threaded. - }; - } - //@} - - //! Provide static string description of thread models. - template - struct tm_properties; - - template<> struct tm_properties - { - COMET_FORCEINLINE static const TCHAR *string() { return _T("Apartment"); } - }; - - template<> struct tm_properties - { - COMET_FORCEINLINE static const TCHAR *string() { return _T("Free"); } - }; - - template<> struct tm_properties - { - COMET_FORCEINLINE static const TCHAR *string() { return _T("Both"); } - }; - - template<> struct tm_properties - { - COMET_FORCEINLINE static const TCHAR *string() { return _T("Neutral"); } - }; - - /*! \defgroup Interfaces Interface implementations. - */ - //@{ - /*! \class IProvideClassInfoImpl server.h comet/server.h - * This class provides IProvideClassInfo interfaces for simple, static, embeded or - * other custom classes. - * IProvideClassInfoImpl is used by coclass and aggregateable_coclass by - * default. - * This class also provides class name information to the exception - * handler. - * \sa default_exception_handler_traits - */ - template class IProvideClassInfoImpl : public IProvideClassInfo, public handle_exception_default - { - public: - typedef IProvideClassInfo interface_is; - STDMETHOD(GetClassInfo)(ITypeInfo **ppTypeInfo) throw() - { - if(!ppTypeInfo) return E_POINTER; - *ppTypeInfo = 0; - ITypeLib *pTypeLib; - typedef typename COCLASS::type_library COCLASS_typelib; - HRESULT hr = typelibrary_loader::load(&pTypeLib); - - if(FAILED(hr)) return hr; - hr = pTypeLib->GetTypeInfoOfGuid(uuidof(), ppTypeInfo); - pTypeLib->Release(); - return hr; - } - }; - /** \struct coclass server.h comet/server.h - * Implement a standard coclass with interfaces defined in TypeLibrary and - * implemented within the class \p T and thread model \p TM, followed by a - * list of extra interfaces to implement. - * Provides IProvideClassInfo and ISupportErrorInfo as standard. - * \code - template<> - class coclass_implementation : public coclass - { - // ... - }; - * \endcode - * The thread model can be specified for the coclass, and as well, extra - * interfaces can be implemented by specifying them at the end. - * \code - template<> - class coclass_implementation : public coclass - { - // ... - }; - * \endcode - * \sa FTM aggregates thread_model::thread_model_t - */ - -/* template struct ATL_NO_VTABLE coclass : public impl::simple_object_aux< typelist::append >::result > > { - enum { thread_model = TM }; - static const TCHAR* get_progid() { return 0; } - };*/ - //@} - - /*!\addtogroup Objects - */ - //@{ - template struct ATL_NO_VTABLE coclass : public impl::simple_object_aux< typelist::append< typelist::append< typename T::interface_impls, typename make_list::result>, typename make_list >::result > > { - typedef coclass coclass_type; - enum { factory_type = impl::ft_standard }; - enum { thread_model = TM }; - static const TCHAR* get_progid() { return 0; } - }; - //@} - -// COMET_WRAP_EACH_DECLARE(aggregates_interface); - - namespace impl { - template - struct append3 - { - typedef typelist::append first_two; - typedef typelist::append list; - }; - } -#ifdef NOTNOW - /** \struct coclass_aggregates server.h comet/server.h - * Implement a coclass with interfaces defined in TypeLibrary and - * implemented by the class, as well as supporting specified aggregated interfaces. - * Provides IProvideClassInfo and ISupportErrorInfo as standard. - * \code - * template<> - * class coclass_implementation - * : public coclass_aggregates::result> - * { - * public: - * coclass_implementation() - * { - * aggregates_interface::set_aggregate(com_ptr(CoClassForAggIFace,com_cast(this))); - * } - * // ... - * }; - * \endcode - * \note This should provide IProvideMultipleClassInfo. - */ - -/* template - struct ATL_NO_VTABLE coclass_aggregates : public impl::simple_object_aux >::result > > - { - enum { thread_model = TM }; - static const TCHAR* get_progid() { return 0; } - };*/ -#endif //0 - - /*!\addtogroup Objects - */ - //@{ - /** \struct aggregateable_coclass server.h comet/server.h - * Implement an aggregateable coclass with interfaces defined in TypeLibrary and - * implemented within the class T. - * Provides IProvideClassInfo and ISupportErrorInfo as standard. - * \code - * template<> - * class coclass_implementation - * : public aggregateable_coclass - * { - * // .... - * }; - * \endcode - */ - - template - struct ATL_NO_VTABLE aggregateable_coclass : public impl::aggregateable_object_aux< typelist::append< typename T::interface_impls, typename make_list >::result > > - { - typedef aggregateable_coclass coclass_type; - enum { thread_model = TM }; - enum { factory_type = impl::ft_aggregateable }; - static const TCHAR* get_progid() { return 0; } - aggregateable_coclass() {} - protected: - ~aggregateable_coclass() {} - private: - aggregateable_coclass(const aggregateable_coclass&); - aggregateable_coclass& operator=(const aggregateable_coclass&); - }; - - /** \class singleton_coclass server.h comet/server.h - * Implement a singleton coclass within interfaces defined in TypeLibrary - * and implemented with the class T. - * Gets cleaned up when dll unloads. - * Provides IProvideClassInfo and ISupportErrorInfo as standard. - \code - class coclass_implementation - : public singleton_coclass - { - // .... - }; - \endcode - */ - template< typename T, enum thread_model::thread_model_t TM = thread_model::Apartment> - struct ATL_NO_VTABLE singleton_coclass : public impl::static_object_aux< - typelist::append< typename T::interface_impls, typename make_list >::result > - > - { - typedef singleton_coclass coclass_type; - enum { thread_model = TM }; - enum { factory_type = impl::ft_singleton }; - void set_dispose_command_( impl::cmd_t *) { } - static const TCHAR* get_progid() { return 0; } - singleton_coclass() {} - ~singleton_coclass() {} - - private: - singleton_coclass(const singleton_coclass&); - singleton_coclass& operator=(const singleton_coclass&); - }; - - template< typename T, enum thread_model::thread_model_t TM = thread_model::Apartment> - struct ATL_NO_VTABLE singleton_autorelease_coclass : public impl::static_object_aux< - typelist::append< typename T::interface_impls, typename make_list >::result > - > - { - singleton_autorelease_coclass() : rc_(0), dispose_(0) {} - ~singleton_autorelease_coclass() - { delete dispose_; } - - STDMETHOD_(ULONG, AddRef)() - { - if (rc_ == 0) module().lock(); - return InterlockedIncrement(&rc_); - } - - STDMETHOD_(ULONG, Release)() - { - LONG rc = InterlockedDecrement(&rc_); - if (rc == 0) { - try { - if (dispose_!=NULL) - dispose_->cmd(); - - } COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); - module().unlock(); - } - return rc; - } - - typedef singleton_autorelease_coclass coclass_type; - enum { thread_model = TM }; - enum { factory_type = impl::ft_singleton }; - static const TCHAR* get_progid() { return 0; } - - void set_dispose_command_( impl::cmd_t *p) - { - delete dispose_; - dispose_ = p; - } - - private: - singleton_autorelease_coclass(const singleton_autorelease_coclass&); - singleton_autorelease_coclass& operator=(const singleton_autorelease_coclass&); - long rc_; - impl::cmd_t *dispose_; - }; - //@} - - - namespace impl { - template - class reghelper_t - { - // convert_string is overloaded to select the correct - // behaviour based on argument type. - // dest_size is the number of bytes, not the number of characters. - COMET_FORCEINLINE static void convert_string(wchar_t *dest, size_t dest_size, const wchar_t *src) - { - ::memcpy(dest, src, dest_size); - } - - COMET_FORCEINLINE static void convert_string(char *dest, size_t dest_size, const wchar_t *src) - { - ::WideCharToMultiByte(CP_ACP, 0, src, -1, dest, dest_size, 0, 0); - } - - static void removekey(const tstring& key); - static void addkey(const tstring& key, const tstring& valueName, const tstring& value); - static void addkey(const tstring& key, const tstring& value); - static tstring StringFromUUID(REFCLSID rclsid); - static void updatekey(bool unregister, const tstring &key, const tstring &valueName, const tstring &value); - static void updatekey(bool unregister, const tstring &key, const tstring &value); - public: - static void update_coclass(bool unregister, - const CLSID &rclsid, - const TCHAR *filename, - const TCHAR *thread_model, - const TCHAR *coclass_name, - const TCHAR *progid, - unsigned long version, - const GUID &rlibid, - bool inproc_server, - const GUID* appid); - }; // reghelper_t - - template - void reghelper_t::removekey(const tstring& key) - { - regkey rkey(HKEY_CLASSES_ROOT); - rkey.delete_subkey_nothrow(key); - } - - template - void reghelper_t::addkey(const tstring& key, const tstring& valueName, const tstring& value) - { - regkey rkey(HKEY_CLASSES_ROOT); - rkey.create(key)[valueName] = value; - } - - template - void reghelper_t::addkey(const tstring& key, const tstring& value) - { - regkey rkey(HKEY_CLASSES_ROOT); - rkey.create(key)[_T("")] = value; - } - - template - tstring reghelper_t::StringFromUUID(REFCLSID rclsid) - { - wchar_t *ws; - ::StringFromCLSID(rclsid, &ws); - size_t num_chars = wcslen(ws) + 1; - size_t bytes = num_chars * sizeof (TCHAR); - TCHAR *s = static_cast(_alloca(bytes)); - convert_string(s, bytes, ws); - CoTaskMemFree(ws); - return s; - } - - template - void reghelper_t::updatekey(bool unregister, const tstring &key, const tstring &valueName, const tstring &value) - { - if(unregister) - removekey(key); - else - addkey(key, valueName, value); - } - - template - void reghelper_t::updatekey(bool unregister, const tstring &key, const tstring &value) - { - if(unregister) - removekey(key); - else - addkey(key, value); - } - - template - void reghelper_t::update_coclass(bool unregister, - const CLSID &rclsid, - const TCHAR *filename, - const TCHAR *thread_model, - const TCHAR *coclass_name, - const TCHAR *progid, - unsigned long version, - const GUID &rlibid, - bool inproc_server, - const GUID* /*appid*/) - { - tstring clsid = StringFromUUID(rclsid); - tstring name = _T("CLSID\\") + clsid; - tstring typelib = StringFromUUID(rlibid); - // On WinNT/Win2000, subkeys must be deleted before parent keys. - // Therefore, be sure to specify changes to subkeys before - // changes to parent keys - otherwise the server will not - // cleanly remove all keys when it is unregistered. - if (inproc_server) - { - updatekey(unregister, name + _T("\\InprocServer32"), filename); - updatekey(unregister, name + _T("\\InprocServer32"), _T("ThreadingModel"), thread_model); - } - else - { - updatekey(unregister, name + _T("\\LocalServer32"), filename); - updatekey(unregister, name + _T("\\Programmable"), _T("")); - } - updatekey(unregister, name + _T("\\TypeLib"), typelib); -// updatekey(unregister, name, coclass_name); - - if (progid != 0) - { - tstring prgid(progid); - - if (version != 0) - { - TCHAR buffer[35]; -#if _MSC_VER >= 1400 - _ultot_s(version, buffer, 35, 10); - tstring prgid_ver(prgid + _T(".") + buffer); -#else - tstring prgid_ver(prgid + _T(".") + _ultot(version, buffer, 10)); -#endif - - updatekey(unregister, name + _T("\\ProgID"), prgid_ver); - updatekey(unregister, prgid + _T("\\CurVer"), prgid_ver); - updatekey(unregister, prgid_ver + _T("\\CLSID"), clsid); - updatekey(unregister, prgid_ver, coclass_name); - } - else - { - updatekey(unregister, name + _T("\\ProgID"), prgid); - } - - updatekey(unregister, prgid + _T("\\CLSID"), clsid); - updatekey(unregister, prgid, coclass_name); - } - - updatekey(unregister, name, coclass_name); - -// if (progid != 0) { -// updatekey(unregister, name + _T("\\ProgID"), progid); -// updatekey(unregister, tstring(progid) + _T("\\CLSID"), clsid); -// updatekey(unregister, progid, coclass_name); -// } - } - - typedef reghelper_t reghelper; - -#ifndef COMET_PARTIAL_SPECIALISATION - - template - struct entry_builder; - - template struct THE_FOLLOWING_COCLASS_HAS_NOT_BEEN_IMPLEMENTED; - template<> struct THE_FOLLOWING_COCLASS_HAS_NOT_BEEN_IMPLEMENTED {}; - - template<> struct entry_builder - { - template - struct registration - { - COMET_FORCEINLINE static void perform(const TCHAR*, bool, bool, const GUID* ) - { -#ifndef COMET_ALLOW_UNIMPLEMENTED_COCLASSES - THE_FOLLOWING_COCLASS_HAS_NOT_BEEN_IMPLEMENTED x; -#endif - } - }; - - template - struct factory - { - COMET_FORCEINLINE static ::IUnknown* get(const CLSID&) - { - return 0; - } - }; - }; // entry_builder - - template<> struct entry_builder - { - template - struct registration - { - static void perform(const TCHAR *filename, bool unregister, bool inproc_server, const GUID* appid) - { - if(unregister) { - try { - custom_registration().on_unregister(filename); - } - catch(...) - { - - } - } - - reghelper::update_coclass(unregister, - uuidof(), - filename, - tm_properties::thread_model>::string(), - CLASS::name(), - coclass_implementation::get_progid(), - CLASS::major_version, - uuidof(), - inproc_server, - appid); - - if(!unregister) - custom_registration().on_register(filename); - } // perform - }; // registration - - - template - struct factory_builder { }; - - template<> struct factory_builder - { - template - struct factory - { - typedef class_factory is_factory; - }; - }; - template<> struct factory_builder - { - template - struct factory - { - typedef class_factory_agg is_factory; - }; - }; - template<> struct factory_builder - { - template - struct factory - { - typedef class_factory_singleton is_factory; - }; - }; - - template - struct factory_type - { - typedef COMET_STRICT_TYPENAME factory_builder< CLASS::factory_type >::factory::is_factory factory; - }; - template - struct factory - { - typedef typename factory_type< coclass_implementation, LOCK_MODULE >::factory CLASS_FACTORY; - - COMET_FORCEINLINE static ::IUnknown* get(const CLSID& clsid) - { - static CLASS_FACTORY class_factory_; - - // NB: This might cause problems if CLASS_FACTORY - // implemented more than one interface. If so, this logic will - // have to be changed to inline the QueryInterface call instead. - if (clsid == uuidof()) - return &class_factory_; - return 0; - } // get - }; // factory - }; // entry_builder - - template - struct coclass_table_entry - { - // We use sizeof here to determine if there is a specialization of coclass_implementation. - // It is relying on the fact that any real implementation of coclass_implementation - // must be at least sizeof IUnknown, whereas the default sizeof implementation - // is always just a dummy class. - enum { is_undefined = sizeof (coclass_implementation) == sizeof( coclass_implementation) }; - - typedef typename entry_builder::factory factory; - typedef typename entry_builder::registration registration; - }; - -#else // COMET_PARTIAL_SPECIALISATION - template - struct entry_builder - { - typedef nil factory; - typedef nil registration; - }; - - template struct entry_builder - { - struct registration - { - COMET_FORCEINLINE static void perform(const TCHAR*, bool, bool, const GUID* ) {} - }; - - struct factory - { - COMET_FORCEINLINE static ::IUnknown* get(const CLSID&) - { - return 0; - } - }; - }; // entry_builder - - template - struct factory_builder_aux { }; - - template struct factory_builder_aux - { - typedef class_factory is_factory; - }; - template struct factory_builder_aux - { - typedef class_factory_agg is_factory; - }; - template struct factory_builder_aux - { - typedef class_factory_singleton is_factory; - }; - - - template struct entry_builder - { - struct registration - { - static void perform(const TCHAR *filename, bool unregister, bool inproc_server, const GUID* appid) - { - if(unregister) { - try { - custom_registration().on_unregister(filename); - } catch(...) {} - } - - reghelper::update_coclass(unregister, - uuidof(), - filename, - tm_properties::thread_model>::string(), - CLASS::name(), - coclass_implementation::get_progid(), - CLASS::major_version, - uuidof(), - inproc_server, - appid); - - if(!unregister) - custom_registration().on_register(filename); - } // perform - }; // registration - - struct factory_type - { - enum {type_ = coclass_implementation::factory_type }; - typedef typename factory_builder_aux< type_, coclass_implementation, FACTORY_LOCK_MODULE >::is_factory factory; - }; - struct factory - { - typedef typename factory_type::factory CLASS_FACTORY; - - COMET_FORCEINLINE static ::IUnknown* get(const CLSID& clsid) - { - static CLASS_FACTORY class_factory_; - - // NB: This might cause problems if CLASS_FACTORY - // implemented more than one interface. If so, this logic will - // have to be changed to inline the QueryInterface call instead. - if (clsid == uuidof()) - return &class_factory_; - return 0; - } // get - }; // factory - }; // entry_builder - - template - struct coclass_table_entry - { - // We use sizeof here to determine if there is a specialization of coclass_implementation. - // It is relying on the fact that any real implementation of coclass_implementation - // must be at least sizeof IUnknown, whereas the default sizeof implementation - // is always just a dummy class. - enum { is_undefined = (sizeof(coclass_implementation) == sizeof(coclass_implementation)) }; - - typedef typename entry_builder::factory factory; - typedef typename entry_builder::registration registration; - }; -#endif // COMET_PARTIAL_SPECIALISATION - - } // namespace impl - - /*! \addtogroup Server - */ - //@{ - template - class coclass_table - { - public: - COMET_FORCEINLINE static ::IUnknown* find(const CLSID& clsid) - { - ::IUnknown *ret = impl::coclass_table_entry::factory::get(clsid); - return ret ? ret : coclass_table::find(clsid); - } - - COMET_FORCEINLINE static void registration(const TCHAR* filename, bool unregister, bool inproc_server = true, const GUID* appid = 0) - { - impl::coclass_table_entry::registration::perform(filename, unregister, inproc_server, appid); - coclass_table::registration(filename, unregister, inproc_server, appid); - } - }; - - struct coclass_term - { - COMET_FORCEINLINE static ::IUnknown* find(const IID&) - { - return 0; - } - COMET_FORCEINLINE static void registration(const TCHAR*, bool, bool = true, const GUID* = 0) {} - }; - -// template<> class coclass_table > : public coclass_term {}; - template<> class coclass_table : public coclass_term {}; - template<> class coclass_table : public coclass_term {}; - - enum { NO_EMBEDDED_TLB = 1}; - - template - struct com_server_traits { - enum { flags = FL }; - enum { embedded_tlb = !(flags & NO_EMBEDDED_TLB) }; - }; - /** Main COM DLL module implementation. - * Called my the COMET_DECLARE_DLL_FUNCTIONS macro - provides implementation - * for the DLL entry points. - * \sa COMET_DECLARE_DLL_FUNCTIONS - */ - template > class com_server - { - typedef coclass_table COCLASS_TABLE; - public: - static BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID); - static HRESULT DllCanUnloadNow(); - static HRESULT DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv); - static HRESULT DllRegisterServer(); - static HRESULT DllUnregisterServer(); - }; - //@} - template - BOOL WINAPI com_server::DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID) - { - if (dwReason == DLL_PROCESS_ATTACH) - { - module().instance(hInstance); - DisableThreadLibraryCalls(hInstance); - - // initialize static variables in factory::get to avoid potential thread safety problem. - ::IUnknown* cf = COCLASS_TABLE::find(IID_NULL); - /* prevent warning */ cf; - } - else if (dwReason == DLL_PROCESS_DETACH) - { - module().shutdown(); - } - return TRUE; - } - - template - HRESULT com_server::DllCanUnloadNow() - { - return module().rc() == 0 ? S_OK : S_FALSE; - } - - template - HRESULT com_server::DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) - { - ::IUnknown* cf = COCLASS_TABLE::find(rclsid); - if (cf == 0) return CLASS_E_CLASSNOTAVAILABLE; - - return cf->QueryInterface(riid, ppv); - } - - namespace impl { - template - struct typelibrary_registration - { - static void convert(wchar_t *dest, const char *src) - { - size_t cs = 0; -#if _MSC_VER >=1400 - ::mbstowcs_s(&cs, dest, MAX_PATH, src, MAX_PATH); -#else - cs = ::mbstowcs(dest,src, MAX_PATH); -#endif - } - static void convert(wchar_t *dest, const wchar_t *src) - { -#if _MSC_VER >= 1400 - ::wcscpy_s(dest, MAX_PATH, src); -#else - ::wcscpy(dest, src); -#endif - } - static HRESULT perform(const TCHAR *filename, bool unregister) throw() - { - wchar_t wfilename[MAX_PATH]; - convert(wfilename, filename); - ITypeLib* tl; - HRESULT hr = LoadTypeLib(wfilename, &tl); - if (SUCCEEDED(hr)) { - if(unregister) { - TLIBATTR *tla = 0; - hr = tl->GetLibAttr(&tla); - if (SUCCEEDED(hr)) { - hr = UnRegisterTypeLib(tla->guid, tla->wMajorVerNum, tla->wMinorVerNum, tla->lcid, tla->syskind); - tl->ReleaseTLibAttr(tla); - } - } - else - hr = RegisterTypeLib(tl, wfilename, 0); - tl->Release(); - } - return hr; - } - }; - - template<> struct typelibrary_registration<0> - { - COMET_FORCEINLINE static HRESULT perform(const TCHAR *, bool) - { - return S_OK; - } - }; - } // namespace impl - - template - HRESULT com_server::DllRegisterServer() - { - TCHAR filename[MAX_PATH]; - - GetModuleFileName(module().instance(), filename, MAX_PATH); - - { - HRESULT hr = impl::typelibrary_registration::perform(filename, false); - if(FAILED(hr)) return SELFREG_E_TYPELIB; - } - - try { - COCLASS_TABLE::registration(filename, false); - } - catch (const com_error &e) - { - DllUnregisterServer(); - return impl::return_com_error(e); - } - catch (const std::exception &e) - { - DllUnregisterServer(); - ::OutputDebugStringA(e.what()); - return E_FAIL; - } - - return S_OK; - } - - template - HRESULT com_server::DllUnregisterServer() - { - TCHAR filename[MAX_PATH]; - GetModuleFileName(module().instance(), filename, MAX_PATH); - - impl::typelibrary_registration::perform(filename, true); - - COCLASS_TABLE::registration(filename, true); - return S_OK; - } -/** Declares the DLL Functions and passes them through to \a SERVER static - * functions. - * \sa com_server - */ - -#define COMET_DECLARE_DLL_FUNCTIONS(SERVER) \ -extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID) \ -{ \ - return SERVER::DllMain(hInstance, dwReason, 0); \ -} \ - \ -STDAPI DllCanUnloadNow() \ -{ \ - return SERVER::DllCanUnloadNow(); \ -} \ - \ -STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) \ -{ \ - return SERVER::DllGetClassObject(rclsid, riid, ppv); \ -} \ - \ -STDAPI DllRegisterServer() \ -{ \ - return SERVER::DllRegisterServer(); \ -} \ - \ -STDAPI DllUnregisterServer() \ -{ \ - return SERVER::DllUnregisterServer(); \ -} - -} - -#endif diff --git a/EyeTab_SP2/comet/smart_enum.h b/EyeTab_SP2/comet/smart_enum.h deleted file mode 100644 index c45f53b..0000000 --- a/EyeTab_SP2/comet/smart_enum.h +++ /dev/null @@ -1,139 +0,0 @@ -/** \file - * _NewEnum style COM enumerator backed by a smart pointer to items. - */ -/* - * Copyright © 2010 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_SMART_ENUM_H -#define COMET_SMART_ENUM_H - -#include - -#include -#include - -namespace comet { - - namespace impl { - - template - class smart_enum_source - { - public: - typedef typename SmartPtr::element_type::const_iterator - const_iterator; - - explicit smart_enum_source(SmartPtr source) - : source_(source), it_(begin()) {} - - const_iterator begin() - { - return source_->begin(); - } - - const_iterator end() - { - return source_->end(); - } - - const_iterator& current() - { - return it_; - } - - private: - SmartPtr source_; - const_iterator it_; - }; - - } - - /** - * Implements _NewEnum style COM object on top of smart pointer to - * a collection. - * \param Itf Enumeration Interface. - * \param C STL Style container. - * \param T Iteration Element type - * \param CONVERTER Converts container element to \p T type. (std::identity) - * \sa stl_enumeration create_enum - */ - template< - typename Itf, typename SmartPtr, typename T, - typename CONVERTER=std::identity< - COMET_STRICT_TYPENAME SmartPtr::element_type::value_type> > - class smart_enumeration : - public impl::enumeration< - Itf, T, CONVERTER, impl::smart_enum_source > - { - public: - smart_enumeration( - SmartPtr container, const CONVERTER& converter=CONVERTER()) - : enumeration( - impl::smart_enum_source(container), converter) {} - - private: - smart_enumeration(const smart_enumeration&); - smart_enumeration& operator=(const smart_enumeration&); - }; - - /** - * Smart Enumeration creation helper. - * - * Creates the enumeration with the element type specified by the - * enumerated_type_of policy. To specify the element type explicitly, use - * smart_enumeration directly. - * - * \tparam ET Enumeration Type e.g. IEnumUnknown. - * \tparam SmartPtr Smart pointer (inferred from @a container parameter). - * - * \param container Smart pointer to an STL collection - * e.g. auto_ptr. - */ - template - inline com_ptr make_smart_enumeration(SmartPtr container) - { - typedef typename enumerated_type_of::is T; - typedef std::identity< - COMET_STRICT_TYPENAME SmartPtr::element_type::value_type> - CONVERTER; - return new smart_enumeration(container); - } - - /** - * Smart Enumeration creation helper with custom converter. - * - * Creates the enumeration with the element type specified by the - * enumerated_type_of policy. To specify the element type explicitly, use - * smart_enumeration directly. - * - * \tparam ET Enumeration Type e.g. IEnumUnknown. - * \tparam SmartPtr Smart pointer (inferred from @a container parameter). - * \tparam CONVERTER Converter type (inferred from @a converter). - * - * \param container Smart pointer to an STL collection - * e.g. auto_ptr. - * \param converter Custom converter. - */ - template - inline com_ptr make_smart_enumeration( - SmartPtr container, const CONVERTER& converter) - { - typedef typename enumerated_type_of::is T; - return new smart_enumeration( - container, converter); - } -} - -#endif diff --git a/EyeTab_SP2/comet/static_assert.h b/EyeTab_SP2/comet/static_assert.h deleted file mode 100644 index b0bfe44..0000000 --- a/EyeTab_SP2/comet/static_assert.h +++ /dev/null @@ -1,54 +0,0 @@ -/** \file - Provide compile-time asserts. - See www.boost.org for most recent version including documentation. - \author John Maddock - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_STATIC_ASSERT_H -#define COMET_STATIC_ASSERT_H - -#include - -// (C) Copyright John Maddock 2000. -// Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for most recent version including documentation. - -/* - Revision history: - 02 August 2000 - Initial version. -*/ - -namespace comet { - namespace impl { - - template struct COMPILE_TIME_ASSERTION_FAILURE; - - template <> struct COMPILE_TIME_ASSERTION_FAILURE{}; - - template struct ct_assert_test{}; - - } -} - -#define COMET_STATIC_ASSERT( B ) typedef ::comet::impl::ct_assert_test)> comet_static_assert_typedef_ - -#endif diff --git a/EyeTab_SP2/comet/stl.h b/EyeTab_SP2/comet/stl.h deleted file mode 100644 index a6ac7c0..0000000 --- a/EyeTab_SP2/comet/stl.h +++ /dev/null @@ -1,69 +0,0 @@ -/** \file - Provide STL extensions. - */ -/* - * Copyright © 2001 Sofus Mortensen - * Copyright © 2013 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_STL_H -#define COMET_STL_H - -#include - -#include - -// add identity, select1st, and select2nd. -#if !defined(__SGI_STL_PORT) && !defined(__MINGW32__) -namespace std { - /** \internal - */ - template struct identity : public unary_function { - T operator()(const T& t) { return t; } - }; - - /** \internal - */ - template struct select1st : public unary_function { - typename T::first_type operator()(const T& t) { return t.first; } - }; - - /** \internal - */ - template struct select2nd : public unary_function { - typename T::second_type operator()(const T& t) { return t.second; } - }; -} -#else -#include -#endif - -template class delete_fun : public std::unary_function { - public: - void operator()(T& x) { delete x; } -}; - -template class delete2nd_fun : public std::unary_function { - public: - void operator()(T& x) { delete x.second; } -}; - -template class delete1st_fun : public std::unary_function { - public: - void operator()(T& x) { delete x.first; } -}; - - - -#endif diff --git a/EyeTab_SP2/comet/stl_enum.h b/EyeTab_SP2/comet/stl_enum.h deleted file mode 100644 index 7537b2d..0000000 --- a/EyeTab_SP2/comet/stl_enum.h +++ /dev/null @@ -1,188 +0,0 @@ -/** \file - * Implement _NewEnum style classes and iterators. - */ -/* - * Copyright © 2000 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_STL_ENUM_H -#define COMET_STL_ENUM_H - -#include - -#include -#include -#include -#include - -namespace comet { - - namespace impl { - - template - class stl_enum_source - { - public: - typedef typename Collection::const_iterator const_iterator; - - explicit stl_enum_source( - const Collection& container, com_ptr outer) - : outer_(outer), container_(container), it_(begin()) {} - - const_iterator begin() - { - return container_.begin(); - } - - const_iterator end() - { - return container_.end(); - } - - const_iterator& current() - { - return it_; - } - - private: - - // Not copy-assignable - stl_enum_source& operator=(const stl_enum_source&); - - com_ptr outer_; - const Collection& container_; - const_iterator it_; - }; - - } - - /** \class stl_enumeration_t enum.h comet/enum.h - * Implements _NewEnum style COM object. - * \param Itf Enumeration Interface. - * \param C STL Style container. - * \param T Iteration Element type (VARIANT) - * \param CONVERTER Converts container element to \p T type. (std::identity) - * \sa stl_enumeration create_enum - */ - template< - typename Itf, typename C, typename T=VARIANT, - typename CONVERTER=std::identity, - typename TH=::IUnknown> - class stl_enumeration_t : - public impl::enumeration< - Itf, T, CONVERTER, impl::stl_enum_source > - { - public: - - stl_enumeration_t( - const C& container, TH* outer=0, - const CONVERTER& converter=CONVERTER()) - : enumeration( - impl::stl_enum_source(container, outer), converter) {} - - private: - stl_enumeration_t(const stl_enumeration_t&); - stl_enumeration_t& operator=(const stl_enumeration_t&); - }; - - /** - * STL Enumeration creation helper. - * - * Creates the enumeration with the element type specified by the - * enumerated_type_of policy. To specify the element type directly, use - * stl_enumeration_t. - * - * \param ET Enumeration Type e.g. IEnumUnknown. - */ - template - struct stl_enumeration - { - - /** Auto-Create a _NewEnum enumerator from an STL container. - * No contained object. - * \param container STL Container. - */ - template - static com_ptr create(const C& container) - { - typedef typename enumerated_type_of::is T; - typedef std::identity - CONVERTER; - return new stl_enumeration_t( - container, 0); - } - - /** Auto-Create a _NewEnum enumerator from an STL container. - * \param container STL Container. - * \param th Outer or \e this pointer. - */ - template - static com_ptr create(const C& container, TH* th) - { - typedef typename enumerated_type_of::is T; - typedef std::identity - CONVERTER; - return new stl_enumeration_t( - container, th); - } - - /** Auto-Create a _NewEnum enumerator from an STL container, specifying - * a converter. - * \param container STL Container. - * \param th Outer or \e this pointer. - * \param converter Converter type (convert Container element to - * iterator interface element types). - */ - template - static com_ptr create( - const C& container, TH* th, const CONVERTER& converter) - { - typedef typename enumerated_type_of::is T; - return new stl_enumeration_t( - container, th, converter); - } - }; - - /*! Creates IEnumVARIANT enumeration of a STL container. - * \param container STL Container. - * \param th Outer or \e this pointer. - \code - com_ptr get__NewEnum() { - return create_enum( collection_, this ); - } - \endcode - * \relates stl_enumeration - */ - template - com_ptr create_enum(const C& container, TH* th = 0) - { - return stl_enumeration::create(container, th); - } - - //! Creates IEnumVARIANT enumeration of a STL container with a converter. - /*! \param container STL Container. - * \param th Outer or \e this pointer. - * \param converter Converter type (convert Container element to VARIANT) - * \sa ptr_converter ptr_converter_select1st ptr_converter_select2nd - * \relates stl_enumeration - */ - template - com_ptr create_enum(const C& container, TH* th, CONVERTER converter) - { - return stl_enumeration::create(container, th, converter); - } - -} - -#endif diff --git a/EyeTab_SP2/comet/stream.h b/EyeTab_SP2/comet/stream.h deleted file mode 100644 index 7d91c43..0000000 --- a/EyeTab_SP2/comet/stream.h +++ /dev/null @@ -1,1566 +0,0 @@ -/** \file - * IStream adapters. - */ -/* - * Copyright (C) 2013 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_STREAM_H -#define COMET_STREAM_H - -#include - -#include // bstr_t -#include // com_error -#include // COMET_CATCH_CLASS_INTERFACE_BOUNDARY -#include // simple_object - -#include // assert -#include -#include // numeric_limits -#include - -#include // StringCbCopyW - -namespace comet { - -namespace impl { - - static const size_t COPY_CHUNK_SIZE = 512; - - /** - * Used to clear stream failure on exiting a scope. - * - * Useful when trying an operation and converting any failure to an - * exception. In that case there is no need for the stream object to - * also retain evidence of the failure. - * - * Note, only clears `failbit`. `eofbit` is left alone as it is a - * valid consequence of operations performed by the wrapper. `badbit` is - * also left as these errors are unrecoverable and therefore the - * stream is as good as dead; a caller of the unwrapped stream needs - * to know that. - */ - template - class stream_failure_cleanser - { - public: - explicit stream_failure_cleanser(Stream& stream) - : m_stream(stream) - {} - - ~stream_failure_cleanser() throw() - { - try - { - m_stream.clear(m_stream.rdstate() & ~std::ios_base::failbit); - } - catch (const std::exception&) - {} - } - - private: - stream_failure_cleanser(const stream_failure_cleanser&); - stream_failure_cleanser& operator=(const stream_failure_cleanser&); - - Stream& m_stream; - }; - - // These do_read/write helper functions dispatch the stream-type specific code - // so that we only need one class to implement all the stream adapters - - inline void do_istream_read( - std::istream& stream, void* buffer, ULONG buffer_size_in_bytes, - ULONG& bytes_read_out) - { - typedef std::istream stream_type; - - // - // IMPORTANT: The bytes_read_out count must be correct even in the - // error case, EVEN if that error is an exception, because the caller - // can treat an error as EOF (see Read method docs). - // - // However, in the error case it is acceptable to make the read count - // smaller than the actual number of bytes read (e.g. 0) because the - // caller is losing the unread part of the stream anyway. Losing a few - // extra bytes that are already in the buffer but not declared valid - // by the byte count will not make the situation worse. - - bytes_read_out = 0U; - - stream.read( - reinterpret_cast(buffer), - buffer_size_in_bytes / sizeof(std::istream::char_type)); - - // Any failure not caused by eof is a failure. - // Badbit is always a failure because, even if we are at eof, the stream - // encountered a problem that needs reporting. - if (stream.bad() || (stream.fail() && !stream.eof())) - { - throw std::runtime_error("Reading from stream failed"); - } - else - { - if (stream.gcount() >= 0 && - // temp conversion to unsigned larger than ULONG to catch - // values larger than ULONG - static_cast(stream.gcount()) < - (std::numeric_limits::max)() / - sizeof(std::istream::char_type)) - { - bytes_read_out = static_cast( - stream.gcount() * sizeof(std::istream::char_type)); - } - - assert(stream.eof() || bytes_read_out == buffer_size_in_bytes); - } - } - - inline void do_ostream_write( - std::ostream& stream, const void* buffer, ULONG buffer_size_in_bytes, - ULONG& bytes_written_out) - { - // If there is an error we cannot get a reliable write count, even - // if we were to use stream.rdbuf()->sputn, because the failure - // might well happen during the flush operation which doesn't let - // us find out how much was flushed before failing. - - typedef std::ostream stream_type; - - bytes_written_out = 0U; - - stream.write( - reinterpret_cast(buffer), - buffer_size_in_bytes / sizeof(std::ostream::char_type)); - - try - { - stream.flush(); - } - catch (const std::exception& e) - { - throw com_error(e.what(), STG_E_MEDIUMFULL); - } - - if (stream.good()) - { - bytes_written_out = buffer_size_in_bytes; - } - else - { - throw com_error("Writing to stream failed", STG_E_MEDIUMFULL); - } - } - - /** Ensure read position updated even in case of exception */ - template - class read_position_finaliser - { - public: - read_position_finaliser( - Stream& stream, std::streampos& new_position_out) - : m_stream(stream), m_new_position_out(new_position_out) - {} - - ~read_position_finaliser() throw() - { - try - { - // we still want the read position if previous op failed - m_stream.clear(); - - std::streampos new_position = m_stream.tellg(); - if (m_stream) - { - m_new_position_out = new_position; - } - else - { - m_new_position_out = std::streampos(); - } - } - catch (...) - { - // We tried. Nothing else we can do - // - // We likely ended up here in the exception unwinding of a - // failed seek because a non-seekable stream chose to let us - // know by throwing an exception from the streambuf - // (e.g. Boost.IOStream). Non-seekable is also non-tellable so - // telgp does the same thing. - // - // We have prevent this exception propagating else we get an - // thrown while unwinding another exception causing terminate() - m_new_position_out = std::streampos(-1); - } - } - - private: - - read_position_finaliser(const read_position_finaliser&); - read_position_finaliser& operator=(const read_position_finaliser&); - - Stream& m_stream; - std::streampos& m_new_position_out; - }; - - /** Ensure write position updated even in case of exception */ - template - class write_position_finaliser - { - public: - write_position_finaliser( - Stream& stream, std::streampos& new_position_out) - : m_stream(stream), m_new_position_out(new_position_out) - {} - - ~write_position_finaliser() throw() - { - try - { - // we still want the write position if previous op failed - m_stream.clear(); - - std::streampos new_position = m_stream.tellp(); - if (m_stream) - { - m_new_position_out = new_position; - } - else - { - m_new_position_out = std::streampos(); - } - } - catch (...) - { - // We tried. Nothing else we can do - // - // We likely ended up here in the exception unwinding of a - // failed seek because a non-seekable stream chose to let us - // know by throwing an exception from the streambuf - // (e.g. Boost.IOStream). Non-seekable is also non-tellable so - // tellp does the same thing. - // - // We have prevent this exception propagating else we get an - // thrown while unwinding another exception causing terminate() - m_new_position_out = std::streampos(-1); - } - } - - private: - write_position_finaliser(const write_position_finaliser&); - write_position_finaliser& operator=(const write_position_finaliser&); - - Stream& m_stream; - std::streampos& m_new_position_out; - }; - - /** - * Copies `streampos` out-parameter to ULARGE_INTEGER out parameter - * in the face of exceptions. - * - * Using this class means you can concentrate on keeping the `streampos` - * variable updated, confident in the knowledge the the COM-interface - * ULARGE_INTEGER parameter will eventually be updated to match it, - * no matter what. - * - * Assumes that the source out parameter is guaranteed to be valid at - * all times. Valid doesn't necessarily mean correct but that it always - * contains the value we want to set the out parameter to, even if that is - * wrong (for instance failure while calculating correct position). - */ - class position_out_converter - { - public: - - position_out_converter( - std::streampos& source_out_parameter, - ULARGE_INTEGER* destination_out_parameter) - : - m_source(source_out_parameter), - m_destination(destination_out_parameter) {} - - ~position_out_converter() - { - if (m_destination) - { - try - { - // Convert to streamoff because streampos may not - // be an integer. streamoff is guaranteed to be. - std::streamoff offset_from_beginning = m_source; - if (offset_from_beginning < 0) - { - // Invalid offset, for example seeking not supported - // The error itself is dealt with right after seeking - // so this class just has to convert it to something - // reasonable for an unsigned value - m_destination->QuadPart = 0U; - } - else - { - m_destination->QuadPart = offset_from_beginning; - } - } - catch(const std::exception&) - { - // Only way this can happen is if streampos refuses to - // convert to streamoff in which case we really are screwed. - m_destination->QuadPart = 0U; - } - } - } - - private: - position_out_converter(const position_out_converter&); - position_out_converter& operator=(const position_out_converter&); - - std::streampos& m_source; - ULARGE_INTEGER* m_destination; - }; - - /** - * Increments a total counter with an increment are end of scope, - * regardless of how that scope is ended. - * - * Assumes the increment parameter is valid at all times. - */ - class byte_count_incrementer - { - public: - byte_count_incrementer( - ULARGE_INTEGER* total, ULONG& increment) - : m_total(total), m_increment(increment) {} - - ~byte_count_incrementer() - { - if (m_total) - { - m_total->QuadPart += m_increment; - } - } - - private: - - byte_count_incrementer(const byte_count_incrementer&); - byte_count_incrementer& operator=(const byte_count_incrementer&); - - ULARGE_INTEGER* m_total; - ULONG& m_increment; - }; - - template - class position_resetter - { - public: - position_resetter(StreamTraits& traits, std::streampos position) - : - m_traits(traits), m_position(position) {} - - ~position_resetter() - { - try - { - std::streampos new_position; - m_traits.do_seek( - m_position, std::ios_base::beg, new_position); - - assert(new_position == m_position); - } - catch (const std::exception&) - {} - } - - private: - position_resetter(const position_resetter&); - position_resetter& operator=(const position_resetter&); - - StreamTraits& m_traits; - std::streampos m_position; - }; - - /** - * Calculate offset of end of stream from start. - */ - template - inline std::streamoff stream_size(StreamTraits& traits) - { - position_resetter(traits, traits.do_tell()); - - std::streampos new_position; - traits.do_seek(0, std::ios_base::end, new_position); - - return new_position; - } - - template - class stream_traits; - - template - class stream_traits - { - public: - explicit stream_traits(Stream& stream) : m_stream(stream) {} - - void do_read( - void* buffer, ULONG buffer_size_in_bytes, - ULONG& bytes_read_out) - { - do_istream_read( - m_stream, buffer, buffer_size_in_bytes, bytes_read_out); - } - - void do_write( - const void* /*buffer*/, - ULONG /*buffer_size_in_bytes*/, ULONG& bytes_written_out) - { - bytes_written_out = 0U; - throw com_error( - "std::istream does not support writing", STG_E_ACCESSDENIED); - } - - void do_seek( - std::streamoff offset, std::ios_base::seekdir way, - std::streampos& new_position_out) - { - read_position_finaliser position_out_updater( - m_stream, new_position_out); - - if (!m_stream.seekg(offset, way)) - { - throw std::runtime_error("Unable to change read position"); - } - } - - std::streampos do_tell() - { - std::streampos pos = m_stream.tellg(); - if (!m_stream) - { - throw std::runtime_error("Stream position unavailable"); - } - - return pos; - } - - void do_flush() - { - throw com_error( - "std::istream does not support committing data", - STG_E_ACCESSDENIED); - } - - private: - stream_traits(const stream_traits&); - stream_traits& operator=(const stream_traits&); - - Stream& m_stream; - }; - - template - class stream_traits - { - public: - explicit stream_traits(Stream& stream) : m_stream(stream) {} - - void do_read( - void* /*buffer*/, - ULONG /*buffer_size_in_bytes*/, ULONG& bytes_read_out) - { - bytes_read_out = 0U; - throw com_error( - "std::ostream does not support reading", STG_E_ACCESSDENIED); - } - - void do_write( - const void* buffer, - ULONG buffer_size_in_bytes, ULONG& bytes_written_out) - { - do_ostream_write( - m_stream, buffer, buffer_size_in_bytes, bytes_written_out); - } - - void do_seek( - std::streamoff offset, std::ios_base::seekdir way, - std::streampos& new_position_out) - { - write_position_finaliser position_out_updater( - m_stream, new_position_out); - - if (!m_stream.seekp(offset, way)) - { - throw std::runtime_error("Unable to change write position"); - } - } - - std::streampos do_tell() - { - std::streampos pos = m_stream.tellp(); - if (!m_stream) - { - throw std::runtime_error("Stream position unavailable"); - } - - return pos; - } - - void do_flush() - { - if (!m_stream.flush()) - { - throw std::runtime_error( - "Unable to flush buffer to output sequence"); - } - } - - private: - stream_traits(const stream_traits&); - stream_traits& operator=(const stream_traits&); - - Stream& m_stream; - }; - - template - class stream_traits - { - private: - - enum last_stream_operation - { - read, - write - }; - - public: - explicit stream_traits(Stream& stream) - : m_stream(stream), m_last_op(read) {} - - void do_read( - void* buffer, ULONG buffer_size_in_bytes, ULONG& bytes_read_out) - { - bytes_read_out = 0U; - - // sync reading position with writing position, which was the last - // one used and is allowed to be different in C++ streams but - // not COM IStreams - if (m_last_op == write) - { - m_stream.seekg(m_stream.tellp()); - // We ignore errors syncing the positions as even iostreams may - // not be seekable at all - - m_last_op = read; - } - assert(m_last_op == read); - - do_istream_read( - m_stream, buffer, buffer_size_in_bytes, bytes_read_out); - } - - void do_write( - const void* buffer, ULONG buffer_size_in_bytes, - ULONG& bytes_written_out) - { - bytes_written_out = 0U; - - // sync writing position with reading position, which was the last - // one used and is allowed to be different in C++ streams but - // not COM IStreams - if (m_last_op == read) - { - m_stream.seekp(m_stream.tellg()); - // We ignore errors syncing the positions as even iostreams may - // not be seekable at all - - m_last_op = write; - } - assert(m_last_op == write); - - do_ostream_write( - m_stream, buffer, buffer_size_in_bytes, bytes_written_out); - } - - void do_seek( - std::streamoff offset, std::ios_base::seekdir way, - std::streampos& new_position_out) - { - - // Unlike with do_read/do_write, we do not ignore errors when - // trying to sync the read/write positions as, if the - // first seek succeeded, we know the stream supports - // seeking. Therefore a later error is really an error. - - if (m_last_op == read) - { - read_position_finaliser position_out_updater( - m_stream, new_position_out); - - if (!m_stream.seekg(offset, way)) - { - throw std::runtime_error("Unable to change read position"); - } - else - { - if (!m_stream.seekp(m_stream.tellg())) - { - throw std::runtime_error( - "Unable to synchronise write position"); - } - } - } - else - { - write_position_finaliser position_out_updater( - m_stream, new_position_out); - - if (!m_stream.seekp(offset, way)) - { - throw std::runtime_error("Unable to change write position"); - } - else - { - if (!m_stream.seekg(m_stream.tellp())) - { - throw std::runtime_error( - "Unable to synchronise read position"); - } - } - } - } - - std::streampos do_tell() - { - std::streampos pos; - if (m_last_op == read) - { - pos = m_stream.tellg(); - } - else - { - pos = m_stream.tellp(); - } - - if (!m_stream) - { - throw std::runtime_error("Stream position unavailable"); - } - - return pos; - } - - void do_flush() - { - if (!m_stream.flush()) - { - throw std::runtime_error( - "Unable to flush buffer to output sequence"); - } - } - - private: - stream_traits(const stream_traits&); - stream_traits& operator=(const stream_traits&); - - Stream& m_stream; - last_stream_operation m_last_op; - }; - - /** - * Wrap COM IStream interface around C++ IOStream. - * - * Unlike C++ streams which may have separate read and write positions that - * move independently, COM IStreams assume a single combined read/write head. - * Therefore this wrapper always starts the next read or write operation - * from the where the last operation finished, regardless of whether that - * operation was a call to `Read` or `Write`. - * - * @note This only applies for as long as the read/write positions are - * modified only via this wrapper. If the positions are modified by - * directly on the underlying IOStream, it is undefined whether the - * starting point for the next call to `Read`/`Write` is syncronised - * with the end of the previous operation. - * - * If operations on the inner stream results in failure (the `failbit` - * is set), this is communicated via the COM-interface return code. The - * `failbit` is cleared before the call returns. This allows further - * wrapper methods to be called without having the clear the bit directly - * on the underlying stream. Fatal errors (`badbit`) and end-of-file - * (`eofbit`) are left unchanged and remain visible in the underlying - * stream. - */ - template - class adapted_stream : public simple_object - { - private: - - typedef impl::stream_traits< - Stream, - type_traits::super_sub_class::result, - type_traits::super_sub_class::result - > stream_traits_type; - - public: - - adapted_stream(Stream& stream, const bstr_t& optional_name) - : m_stream(stream), m_traits(stream), - m_optional_name(optional_name) {} - - /** - * Fill the given buffer with data read from the wrapped C++ stream. - * - * @param [in] buffer - * Destination of bytes to be read. - * - * @param [in] buffer_size - * Size of `buffer` and, therefore, the maximum number of bytes - * this method will read. The method may read fewer than this - * number of bytes if the request cannot be fulfilled - * (e.g. end-of-file, error), in which case only the portion of - * `buffer` up to `*read_count_out` bytes from the start - * may be considered valid. - * - * @param [out] read_count_out - * Number of bytes actually read into `buffer`. In other words, - * the extent of the valid bytes in `buffer` once this method - * returns. This value is correct whether the method returns - * success or an error code. - * - * @returns - * Error code indicating the success or failure of the method. - * @retval `S_OK` - * If `buffer` was completely filled. - * @retval `S_FALSE` if EOF reached before `buffer` was filled. - * `*read_count_out` gives the number of bytes that were read. - * @retval a COM error code - * If there was a read error. - * - * Error behaviour rationale - * ------------------------- - * - * MSDN says that, if `read_count_out` < `buffer_size`, callers - * should treat both error codes and success codes as meaning - * the end-of-file was reached. However, doing so means they will be - * unable to distinguish EOF from a genuine read error. Therefore, - * we make the stronger guarantee that only `S_FALSE` means EOF - * while an error code always indicates a read error. - * To accommodate callers who follow the documentation on MSDN, - * we ensure that the read-count out-variable is correct even if the - * wrapped stream encountered an error (`failbit`, `badbit`) or - * threw an exception, because the caller may use the byte-count to - * decide which bytes of the partial read are valid. - * - * In the error case, `*read_count_out` may be less than the number - * of bytes actually read from the wrapped stream. This is for - * performance reasons: unless we read from the wrapped stream one - * byte at a time, there is no way to calculate the the exact number - * of bytes read if an exception is thrown part way through reading. - * Byte-by-byte reading is hopelessly slow for some applications, such - * as an unbuffered stream over a network, so our behaviour is a - * pragmatic compromise. We believe it is within the (vaguely) - * documented behaviour of `IStream` to treat the out-count in this way - * for error cases as the count still delimits a valid region of bytes. - */ - virtual HRESULT STDMETHODCALLTYPE Read( - void* buffer, ULONG buffer_size, ULONG* read_count_out) - { - impl::stream_failure_cleanser state_resetter(m_stream); - - if (read_count_out) - { - *read_count_out = 0U; - } - - try - { - if (!buffer) - { - throw com_error("No buffer given", STG_E_INVALIDPOINTER); - } - - // We use a dummy read count location if one is not given so - // that do_read can keep it updated correctly even if - // do_read throws an exception. - ULONG dummy_read_count = 0U; - if (!read_count_out) - { - read_count_out = &dummy_read_count; - } - - m_traits.do_read(buffer, buffer_size, *read_count_out); - - if (*read_count_out < buffer_size) - { - assert(m_stream.eof()); - - return S_FALSE; - } - else - { - assert(*read_count_out == buffer_size); - assert(m_stream.good()); - return S_OK; - } - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Read", "adapted_stream"); - } - - /** - * Write the given data to the wrapped C++ stream's controlled sequence. - * - * The wrapped stream is flushed before this method returns to ensure - * the data is written to the controlled sequence (and any associated - * errors are detected) rather than just to the stream's buffer. - * Therefore, best performance is obtained if this method is called with - * as much data as possible for the fewest number of flushes. - * - * @param [in] data - * Bytes to write to the controlled sequence. - * - * @param [in] data_size - * Size of `data` and the number of bytes to write. - * - * @param [out] written_count_out - * Number of bytes guaranteed to be written to the controlled - * sequence. This will be `data_size` if writing succeeded. If - * an error occurred, this may be fewer than the actual number of - * bytes written to the sequence. - * - * @returns - * Error code indicating the success or failure of the method. - * @retval `S_OK` - * If `data` was completely written to the wrapped stream's - * controlled sequence. - * @retval a COM error code - * If there was a write error. - * - * Error behaviour rationale - * ------------------------- - * - * If writing succeeds, `*written_count_out` equals `data_size`. If - * writing encountered an error `*written_count_out` will be set to zero, - * even if some bytes were written out. We do this for performance - * reasons: unless we write the data one byte at a time to the wrapped - * stream _and flush the stream after each byte_, the C++ streams don't - * provide a way to count the exact number of bytes written to the - * stream's controlled sequence. Byte-by-byte writing is hopelessly - * slow for some applications, such as a stream over a network, so our - * behaviour is a pragmatic compromise. - * We believe it is within the (vaguely) documented behaviour of - * `IStream` to treat the out-count in this way for error cases. - * It may seem strange that this method even has an out-count if it - * was no intended to be meaningful in the error case (the count would - * be equal to `data_size` in the success case), however we believe - * it was only intended to be meaningful for non-blocking writes to - * asynchronous stream (`E_PENDING` would be returned) which this - * wrapper is not (see http://bit.ly/1hZGy1L). - */ - virtual HRESULT STDMETHODCALLTYPE Write( - const void* data, ULONG data_size, ULONG* written_count_out) - { - stream_failure_cleanser state_resetter(m_stream); - - if (written_count_out) - { - *written_count_out = 0U; - } - - try - { - if (!data) - { - throw com_error("Buffer not given", STG_E_INVALIDPOINTER); - } - - // We use a dummy written count out location if one is not - // given so that do_write can keep it updated correctly even if - // do_write throws an exception. - ULONG dummy_written_count = 0U; - if (!written_count_out) - { - written_count_out = &dummy_written_count; - } - - m_traits.do_write(data, data_size, *written_count_out); - - if (*written_count_out < data_size) - { - throw com_error( - "Unable to complete write operation", STG_E_MEDIUMFULL); - } - else - { - assert(*written_count_out == data_size); - return S_OK; - } - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Write", "adapted_stream"); - } - - virtual HRESULT STDMETHODCALLTYPE Seek( - LARGE_INTEGER offset, DWORD origin, - ULARGE_INTEGER* new_position_out) - { - stream_failure_cleanser state_resetter(m_stream); - - std::streampos new_stream_position_out = std::streampos(); - impl::position_out_converter out_param_guard( - new_stream_position_out, new_position_out); - - try - { - std::ios_base::seekdir way; - if (origin == STREAM_SEEK_CUR) - { - way = std::ios_base::cur; - } - else if (origin == STREAM_SEEK_SET) - { - way = std::ios_base::beg; - } - else if (origin == STREAM_SEEK_END) - { - way = std::ios_base::end; - } - else - { - throw com_error( - "Unrecognised stream seek origin", - STG_E_INVALIDFUNCTION); - } - - if (offset.QuadPart > - (std::numeric_limits::max)()) - { - throw com_error( - "Seek offset too large", STG_E_INVALIDFUNCTION); - } - else if (offset.QuadPart < - (std::numeric_limits::min)()) - { - throw com_error( - "Seek offset too small", STG_E_INVALIDFUNCTION); - } - else - { - try - { - m_traits.do_seek( - static_cast(offset.QuadPart), - way, new_stream_position_out); - } - // Translate logic_errors (and subtypes) as they - // correspond (very roughly) to the kinds of errors - // for which IStream::Seek is documented to return - // STG_E_INVALIDFUNCTION - catch(const std::logic_error& e) - { - throw com_error(e.what(), STG_E_INVALIDFUNCTION); - } - - return S_OK; - } - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Seek", "adapted_stream"); - } - - /** - * Expand stream to given size. - * - * The will only increase a stream's size if it is smaller than the - * given size. If the stream size is already equal or bigger, it - * remains unchanged. - * - * Not all streams support changing size. In particular, `istream`s - * do not support this method. - */ - virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER new_size) - { - try - { - stream_failure_cleanser state_resetter(m_stream); - - position_resetter resetter( - m_traits, m_traits.do_tell()); - - if (new_size.QuadPart > 0) - { - ULARGE_INTEGER new_end_position; - new_end_position.QuadPart = new_size.QuadPart - 1; - - std::streamoff new_offset; - if ((std::numeric_limits::max)() < 0) - { - assert(!"Purely negative number!"); - throw com_error( - "Seek offset too large", STG_E_INVALIDFUNCTION); - } - else if (new_end_position.QuadPart > - static_cast( - (std::numeric_limits::max)())) - { - throw com_error( - "Seek offset too large", STG_E_INVALIDFUNCTION); - } - else - { - new_offset = static_cast( - new_end_position.QuadPart); - } - - std::streamoff existing_end = stream_size(m_traits); - - if (new_offset > existing_end) - { - std::streampos new_position; - m_traits.do_seek( - new_offset, std::ios_base::beg, new_position); - - assert(std::streamoff(new_position) == new_offset); - - // Force the stream to expand by writing NUL at - // new extent - ULONG bytes_written; - m_traits.do_write("\0", 1, bytes_written); - assert(bytes_written == 1); - } - } - - return S_OK; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("SetSize", "adapted_stream"); - } - - virtual HRESULT STDMETHODCALLTYPE CopyTo( - IStream* destination, ULARGE_INTEGER amount, - ULARGE_INTEGER* bytes_read_out, ULARGE_INTEGER* bytes_written_out) - { - stream_failure_cleanser state_resetter(m_stream); - - ULARGE_INTEGER dummy_read_out; - if (!bytes_read_out) - { - bytes_read_out = &dummy_read_out; - } - bytes_read_out->QuadPart = 0U; - - ULARGE_INTEGER dummy_written_out; - if (!bytes_written_out) - { - bytes_written_out = &dummy_written_out; - } - bytes_written_out->QuadPart = 0U; - - try - { - - if (!destination) - { - throw com_error( - "Destination stream not given", STG_E_INVALIDPOINTER); - } - - std::vector buffer(COPY_CHUNK_SIZE); - - // Perform copy operation in chunks COPY_CHUNK bytes big - // The chunk must be less than the biggest ULONG in size - // because of the limits of the Read/Write API. Of course - // it will be in any case as it would be insane to use more - // memory than that, but we make sure anyway using the first - // min comparison - do { - ULONG next_chunk_size = - static_cast( - min( - (std::numeric_limits::max)(), - min( - amount.QuadPart - bytes_read_out->QuadPart, - buffer.size()))); - - ULONG read_this_round = 0U; - ULONG written_this_round = 0U; - - // These two take care of updating the total on each pass - // round the loop as well as on termination, exception or - // natural. - // - // The means the out counts are valid even in the failure - // case. MSDN says they don't have to be but, as we can, - // we might as well - impl::byte_count_incrementer read_incrementer( - bytes_read_out, read_this_round); - - impl::byte_count_incrementer write_incrementer( - bytes_written_out, written_this_round); - - m_traits.do_read( - &buffer[0], next_chunk_size, read_this_round); - HRESULT hr = destination->Write( - &buffer[0], read_this_round, &written_this_round); - if (FAILED(hr)) - { - com_error_from_interface(destination, hr); - } - - if (read_this_round < next_chunk_size) - { - // EOF - break; - } - - } while (amount.QuadPart > bytes_read_out->QuadPart); - - return S_OK; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("CopyTo", "adapted_stream"); - } - - /** - * Flush data in the buffer to the controlled output sequence. - * - * This implementation doesn't support transactions so ignores - * the commit flags. - * - * Fails if called with an istream. - */ - virtual HRESULT STDMETHODCALLTYPE Commit(DWORD /*commit_flags*/) - { - stream_failure_cleanser state_resetter(m_stream); - - try - { - m_traits.do_flush(); - return S_OK; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Commit", "adapted_stream"); - } - - virtual HRESULT STDMETHODCALLTYPE Revert() - { - try - { - throw com_error("Transactions not supported", E_NOTIMPL); - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Revert", "adapted_stream"); - } - - virtual HRESULT STDMETHODCALLTYPE LockRegion( - ULARGE_INTEGER /*offset*/, ULARGE_INTEGER /*extent*/, - DWORD /*lock_type*/) - { - try - { - throw com_error( - "Locking not supported", STG_E_INVALIDFUNCTION); - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("LockRegion", "adapted_stream"); - } - - virtual HRESULT STDMETHODCALLTYPE UnlockRegion( - ULARGE_INTEGER /*offset*/, ULARGE_INTEGER /*extent*/, - DWORD /*lock_type*/) - { - try - { - throw com_error( - "Locking not supported", STG_E_INVALIDFUNCTION); - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("UnlockRegion", "adapted_stream"); - } - - /** - * Get some metadata about the stream. - * - * The name returned (if requested) is the name optionally given - * in the constructor. If not given in the constructor, an - * empty string is returned. - * - * Some fields, such as the date fields, are not valid as that data - * is not available for IOStreams. - */ - virtual HRESULT STDMETHODCALLTYPE Stat( - STATSTG* attributes_out, DWORD stat_flag) - { - try - { - if (!attributes_out) - { - throw com_error("STATSTG not given", STG_E_INVALIDPOINTER); - } - - *attributes_out = STATSTG(); - - attributes_out->type = STGTY_STREAM; - - try - { - attributes_out->cbSize.QuadPart = - impl::stream_size(m_traits); - } - catch (const std::exception&) - { - // Swallow non-bad errors as many stream are not seekable and - // therefore not sizeable - if (m_stream.bad()) - throw; - } - - // Must be last as, after we detach, any failure will leak - // memory - if (!(stat_flag & STATFLAG_NONAME)) - { - // pwcsName is NOT a BSTR. It's a null-terminated OLESTR - // managed by the COM memory allocator - - size_t buffer_size = m_optional_name.size() + 1; - size_t buffer_size_in_bytes = - buffer_size * sizeof(wchar_t); - - attributes_out->pwcsName = static_cast( - ::CoTaskMemAlloc(buffer_size_in_bytes)); - if (!attributes_out->pwcsName) - { - throw com_error( - "Unable to allocate memory for stream name", - STG_E_INSUFFICIENTMEMORY); - } - - try - { - HRESULT hr = ::StringCbCopyW( - attributes_out->pwcsName, buffer_size_in_bytes, - m_optional_name.c_str()); - if (FAILED(hr)) - { - throw com_error( - "Unable to copy stream name to STATSTG", hr); - } - } - catch(...) - { - ::CoTaskMemFree(attributes_out->pwcsName); - throw; - } - } - - return S_OK; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Stat", "adapted_stream"); - } - - /** - * Cloning not supported for IOStreams as they are not copyable. - */ - virtual HRESULT STDMETHODCALLTYPE Clone(IStream** stream_out) - { - if (stream_out) - { - *stream_out = NULL; - } - - try - { - throw com_error( - "Cloning not supported", STG_E_INVALIDFUNCTION); - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Clone", "adapted_stream"); - } - - private: - - Stream& m_stream; - stream_traits_type m_traits; - bstr_t m_optional_name; - }; - - template - class adapted_stream_pointer : public simple_object - { - public: - - adapted_stream_pointer(StreamPtr stream, const bstr_t& optional_name) - : m_stream(stream), m_inner(adapt_stream(*m_stream, optional_name)) - {} - - // The forwarded methods must return their HRESULT by throwing and - // catching in order to propagate the IErrorInfo upwards. - - virtual HRESULT STDMETHODCALLTYPE Read( - void* buffer, ULONG buffer_size, ULONG* read_count_out) - { - if (read_count_out) - { - *read_count_out = 0U; - } - - try - { - HRESULT hr = m_inner->Read(buffer, buffer_size, read_count_out); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "Read", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE Write( - const void* buffer, ULONG buffer_size, ULONG* written_count_out) - { - if (written_count_out) - { - *written_count_out = 0U; - } - - try - { - HRESULT hr = m_inner->Write( - buffer, buffer_size, written_count_out); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "Write", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE Seek( - LARGE_INTEGER offset, DWORD origin, - ULARGE_INTEGER* new_position_out) - { - if (new_position_out) - { - new_position_out->QuadPart = 0U; - } - - try - { - HRESULT hr = m_inner->Seek(offset, origin, new_position_out); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "Seek", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER new_size) - { - try - { - HRESULT hr = m_inner->SetSize(new_size); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "SetSize", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE CopyTo( - IStream* destination, ULARGE_INTEGER amount, - ULARGE_INTEGER* bytes_read_out, ULARGE_INTEGER* bytes_written_out) - { - if (bytes_read_out) - { - bytes_read_out->QuadPart = 0U; - } - - if (bytes_written_out) - { - bytes_written_out->QuadPart = 0U; - } - - try - { - HRESULT hr = m_inner->CopyTo( - destination, amount, bytes_read_out, bytes_written_out); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "CopyTo", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE Commit(DWORD commit_flags) - { - try - { - HRESULT hr = m_inner->Commit(commit_flags); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "Commit", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE Revert() - { - try - { - HRESULT hr = m_inner->Revert(); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "Revert", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE LockRegion( - ULARGE_INTEGER offset, ULARGE_INTEGER extent, DWORD lock_type) - { - try - { - HRESULT hr = m_inner->LockRegion(offset, extent, lock_type); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "LockRegion", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE UnlockRegion( - ULARGE_INTEGER offset, ULARGE_INTEGER extent, DWORD lock_type) - { - try - { - HRESULT hr = m_inner->UnlockRegion(offset, extent, lock_type); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "UnlockRegion", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE Stat( - STATSTG* attributes_out, DWORD stat_flag) - { - if (attributes_out) - { - *attributes_out = STATSTG(); - } - - try - { - HRESULT hr = m_inner->Stat(attributes_out, stat_flag); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "Stat", "adapted_stream_pointer"); - } - - virtual HRESULT STDMETHODCALLTYPE Clone(IStream** stream_out) - { - if (stream_out) - { - *stream_out = NULL; - } - - try - { - HRESULT hr = m_inner->Clone(stream_out); - if (FAILED(hr)) - throw com_error_from_interface(m_inner, hr); - - return hr; - } - COMET_CATCH_CLASS_INTERFACE_BOUNDARY( - "Clone", "adapted_stream_pointer"); - } - - private: - - StreamPtr m_stream; - com_ptr m_inner; - }; - -} - -/** - * Wrap COM IStream interface around C++ IOStream. - * - * The caller must ensure that the C++ IOStream remains valid until the - * last reference to the returned wrapper is released. - * - * Unlike C++ streams which may have separate read and write positions that - * move independently, COM IStreams assume a single combined read/write head. - * Therefore this wrapper always starts the next read or write operation - * from the where the last operation finished, regardless of whether that - * operation was a call to `Read` or `Write`. - * - * @note This only applies for as long as the read/write positions are - * modified only via this wrapper. If the positions are modified by - * directly on the underlying IOStream, it is undefined whether the - * starting point for the next call to `Read`/`Write` is syncronised - * with the end of the previous operation. - * - * If operations on the inner stream results in failure (the `failbit` - * is set), this is communicated via the COM-interface return code. The - * `failbit` is cleared before the call returns. This allows further - * wrapper methods to be called without having the clear the bit directly - * on the underlying stream. Fatal errors (`badbit`) and end-of-file - * (`eofbit`) are left unchanged and remain visible in the underlying - * stream. - */ -template -inline com_ptr adapt_stream( - Stream& stream, const bstr_t& optional_name=bstr_t()) -{ - return new impl::adapted_stream(stream, optional_name); -} - -/** - * Wrap COM IStream interface around pointer (usually smart) to C++ IOStream. - * - * If the pointer type is a smart pointer, the caller need not must ensure - * the lifetime of the C++ IOStream exceeds that of the adapter; the smart - * pointer takes care of ensuring this. - * - * The main reason for having this function in addition to `adapt_stream` is - * support the common case where a COM stream is intended to be the sole owner - * of the C++ stream with which it is created. This allows the caller to - * create the IStream and forget about the C++ stream. Using `adapt_stream` - * they would have to manage the lifetime of both. - * - * When we support movable types (C++11 or Boost.Move emulation), this method - * would become unnecessary for this purpose as the C++ stream could simply - * be moved into the adapter - */ -template -inline com_ptr adapt_stream_pointer( - StreamPtr stream_pointer, const bstr_t& optional_name=bstr_t()) -{ - return new impl::adapted_stream_pointer( - stream_pointer, optional_name); -} - -} - -#endif diff --git a/EyeTab_SP2/comet/threading.h b/EyeTab_SP2/comet/threading.h deleted file mode 100644 index a4a79ab..0000000 --- a/EyeTab_SP2/comet/threading.h +++ /dev/null @@ -1,228 +0,0 @@ -/** \file - * Threading support. - */ -/* - * Copyright © 2001-2002 Sofus Mortensen, Mikael Lindgren - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_THREADING_H -#define COMET_THREADING_H - -#include -#include - -#include - -namespace comet { - -/** \class critical_section threading.h comet/threading.h - * wrapper for Win32 CRITICAL_SECTION. - */ -class critical_section { -public: - critical_section() { - ::InitializeCriticalSection(&cs_); - } - - ~critical_section() { - ::DeleteCriticalSection(&cs_); - } - - void enter() const { - ::EnterCriticalSection(&cs_); - } - - void leave() const { - ::LeaveCriticalSection(&cs_); - } - -private: - critical_section(const critical_section&); - critical_section& operator=(const critical_section&); - - mutable CRITICAL_SECTION cs_; -}; - -/** \class auto_cs threading.h comet/threading.h - * Stack based critical-section resource obtaining and releasing. - */ -class auto_cs { -public: - explicit auto_cs(const critical_section& cs) : cs_(cs) { - cs_.enter(); - } - - ~auto_cs() { - cs_.leave(); - } - -private: - auto_cs& operator=(const auto_cs&); - auto_cs(const auto_cs&); - - const critical_section& cs_; -}; - -/** \class locking_ptr threading.h comet/threading.h - Locking pointer. - Based on an article on the volatile keyword by Andrei Alexandrescu - See article. - */ -template class locking_ptr { -public: - locking_ptr(volatile T& obj, critical_section& cs) : - pointer_(const_cast(&obj)), - cs_(cs) - { - cs_.enter(); - } - - ~locking_ptr() - { - cs_.leave(); - } - - T& operator*() - { - return *pointer_; - } - - T* operator->() - { - return pointer_; - } - -private: - T* pointer_; - critical_section& cs_; - - locking_ptr(const locking_ptr&); - locking_ptr& operator=(const locking_ptr&); -}; - -class thread -{ -private: - DWORD id_; - auto_handle handle_; - - // declare non-copyable - thread(thread const& ); - thread& operator=(thread const& ); -public: - thread() : id_(0) - {} - - const auto_handle& start() - { - handle_ = auto_attach(::CreateThread(0, 0, &thread::start_proc, this, 0, &id_)); - return handle_; - } - - const auto_handle& handle() const - { - return handle_; - } - - void exit(DWORD exit_code) - { - ::ExitThread(exit_code); - } - - void suspend() - { - ::SuspendThread(handle_); - } - - void resume() - { - ::ResumeThread(handle_); - } - - bool running() - { - DWORD code; - return handle_ && - ::GetExitCodeThread(handle_, &code) && - code == STILL_ACTIVE; - } - - bool wait(DWORD timeout = INFINITE) - { - return ::WaitForSingleObject(handle_, timeout) == WAIT_OBJECT_0; - } - -private: - static DWORD _stdcall start_proc(void* param) - { - return static_cast(param)->thread_main(); - } - - virtual DWORD thread_main() = 0; -}; - -class event -{ -private: - auto_handle handle_; - - // declare non-copyable - event(event const& ); - event& operator=(event const& ); -public: - explicit event(bool initial_state = false) - { - handle_ = auto_attach(::CreateEvent(0, false, initial_state, 0)); - } - - explicit event(const TCHAR* name, bool initial_state = false) - { - handle_ = auto_attach(::CreateEvent(0, false, initial_state, name)); - } - - void set() - { - if (0 == ::SetEvent(handle_)) - { - DWORD err = GetLastError(); - raise_exception(HRESULT_FROM_WIN32(err)); - } - } - - void reset() - { - if (0==::ResetEvent(handle_) ) - { - DWORD err = GetLastError(); - raise_exception(HRESULT_FROM_WIN32(err)); - } - } - - bool wait(DWORD timeout = INFINITE) - { - return ::WaitForSingleObject(handle_, timeout) == WAIT_OBJECT_0; - } - - bool is_set() - { - return ::WaitForSingleObject(handle_, 0) == WAIT_OBJECT_0; - } - - operator HANDLE() const - { return handle_; } -}; - -} - -#endif diff --git a/EyeTab_SP2/comet/tlbinfo.h b/EyeTab_SP2/comet/tlbinfo.h deleted file mode 100644 index 38a4900..0000000 --- a/EyeTab_SP2/comet/tlbinfo.h +++ /dev/null @@ -1,451 +0,0 @@ -/** \file - * Wrappers for ITypeLibInfo. - */ -/* - * Copyright © 2002 Michael Geddes. - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_TLIBINFO_H -#define COMET_TLIBINFO_H - -#ifdef _SHOW_INC -#pragma message(" #Include " __FILE__) -#endif - -#include -#include -#include - -namespace comet -{ - template<> struct comtype - { - static const IID& uuid() throw() { return IID_IPictureDisp; } - typedef ::IUnknown base; - }; - template<> struct comtype - { - static const IID& uuid() throw() { return IID_ITypeInfo; } - typedef ::IUnknown base; - }; - template<> struct comtype - { - static const IID& uuid() throw() { return IID_ITypeInfo2; } - typedef ::ITypeInfo base; - }; - /*! \addtogroup Interfaces - */ - //@{ - namespace impl - { - /// A class to handle the auto-releaseing of structs returned by by the Typeinfo interfaces. - template< typename B, typename T> - struct tlib_info - { - typedef void (__stdcall B::*RelFunc)(T*); - template< RelFunc RELEASE> - struct typeinfo_attr_base - { - public: - typeinfo_attr_base() : info_(NULL), attrib_(NULL), rc_(NULL) {} - typeinfo_attr_base( const com_ptr &info, T *attrib ) : info_(info),attrib_(attrib),rc_(NULL) - { - if (attrib != NULL) - { - rc_ = new long; - (*rc_)=1; - } - } - typeinfo_attr_base( const typeinfo_attr_base &base) - : info_(base.info_), attrib_(base.attrib_), rc_(base.rc_) - { - ++*rc_; - } - ~typeinfo_attr_base() - { - release(); - } - typeinfo_attr_base &operator =( const typeinfo_attr_base &base) - { - release(); - info_= base.info_; - attrib_= base.attrib_; - rc_ = base.rc_; - ++*rc_; - return *this; - } - void release() - { - if(attrib_ != NULL && rc_ != NULL ) - { - if (0 == --*rc_) - { - (info_.raw()->*RELEASE)( attrib_); - delete rc_; - } - rc_ = NULL; - attrib_ = NULL; - info_ = NULL; - } - } - - - T *operator->() const - { - if( attrib_ ==NULL ) throw com_error(E_POINTER); - return attrib_; - } - bool is_null() const { return attrib_ == NULL; } - protected: - long *rc_; - T *attrib_; - com_ptr info_; - }; - }; - }; - - /// Auto-release wrapper for TYPEATTR. - typedef impl::tlib_info::typeinfo_attr_base< &ITypeInfo::ReleaseTypeAttr > type_attr_t; - /// Auto-release wrapper for FUNCDESC. - typedef impl::tlib_info::typeinfo_attr_base< &ITypeInfo::ReleaseFuncDesc > func_desc_t; - /// Auto-release wrapper for VARDESC. - typedef impl::tlib_info::typeinfo_attr_base< &ITypeInfo::ReleaseVarDesc > var_desc_t; - - /// Auto-release wrapper for TLIBATTR. - typedef impl::tlib_info::typeinfo_attr_base< &ITypeLib::ReleaseTLibAttr > tlibattr_t; - - - /** Flags for GetImplTypeFlags. - * \sa IMPLTYPEFLAGS - */ - enum impl_type_flag - { - eft_default=0x1, ///< The interface or dispinterface represents the default for the source or sink. - eft_source =0x2, ///< This member of a coclass is called rather than implemented. - eft_restricted=0x4, ///< The member should not be displayed or programmable by users. - eft_defaultvtable=0x8 ///< Sinks receive events through the VTBL. - }; - - /** Specialisation wrapper for ITypeInfo. - * \struct wrap_t tlbinfo.h comet/tlbinfo.h - * Wrapper for ITypeInfo typelib information. - * \sa ITypeInfo - */ - template<> - struct wrap_t - { - private: - inline ITypeInfo *raw_(){ return reinterpret_cast(this); } - public: - - /** Returns a wrapped Type Attributes struct. - * \sa TYPEATTR - */ - type_attr_t GetTypeAttr() - { - TYPEATTR *pTypeAttr; - raw_()->GetTypeAttr( &pTypeAttr) | raise_exception ; - return type_attr_t( raw_(), pTypeAttr); - } - - /// Returns an ITypeComp interface. - com_ptr GetTypeComp() - { - com_ptr ppTComp; - raw_()->GetTypeComp( ppTComp.out()) | raise_exception; - return ppTComp; - } - - /** Get the function description struct. - * \sa FUNCDESC - */ - func_desc_t GetFuncDesc( unsigned int index) - { - FUNCDESC *pFuncDesc ; - raw_()->GetFuncDesc(index, &pFuncDesc) | raise_exception ; - return func_desc_t( raw_(), pFuncDesc); - } - - /** Get the Variable/Constant/Datamember description. - * \sa VARDESC - */ - var_desc_t GetVarDesc( unsigned int index ) - { - VARDESC *pVarDesc; - raw_()->GetVarDesc( index,&pVarDesc) | raise_exception; - return var_desc_t(raw_(), pVarDesc); - } - - -#ifdef NOT_YET - std::list GetNames( MEMBERID memid ) - { - /* [local] */ HRESULT GetNames( /* [in] */ MEMBERID memid, /* [length_is][size_is][out] */ BSTR *rgBstrNames, - /* [in] */ UINT cMaxNames, /* [out] */ UINT *pcNames) ; - } -#endif // - - /// Retrieves the type description of implemented interface types. - HREFTYPE GetRefTypeOfImplType( unsigned int index) - { - HREFTYPE reftype; - raw_()->GetRefTypeOfImplType(index, &reftype) | raise_exception; - return reftype; - } - - /// Retrieves the type description of implemented interface types. - long GetImplTypeFlags( int index) - { - INT implTypeFlags; - raw_()->GetImplTypeFlags( index, &implTypeFlags) |raise_exception; - return implTypeFlags; - } - -#ifdef NOT_YET - std::vector GetIDsOfNames( const std::vector &rgsNames); - { - /* [local] */ HRESULT GetIDsOfNames( - /* [size_is][in] */ LPOLESTR *rgszNames, - /* [in] */ UINT cNames, - /* [size_is][out] */ MEMBERID *pMemId) ; - } - - /* [local] */ HRESULT Invoke( - /* [in] */ PVOID pvInstance, - /* [in] */ MEMBERID memid, - /* [in] */ WORD wFlags, - /* [out][in] */ DISPPARAMS *pDispParams, - /* [out] */ VARIANT *pVarResult, - /* [out] */ EXCEPINFO *pExcepInfo, - /* [out] */ UINT *puArgErr) ; -#endif // NOT_YET - /// Raw wrapper to make sure comet still works/compiles. - HRESULT GetIDsOfNames( LPOLESTR *rgszNames, UINT cNames, - MEMBERID *pMemId) - { - return raw_()->GetIDsOfNames( rgszNames, cNames, pMemId); - } - - /// Raw wrapper to make sure comet still works/compiles. - HRESULT Invoke( PVOID pvInstance, MEMBERID memid, WORD wFlags, - DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, - UINT *puArgErr) - { - return raw_()->Invoke( pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); - } - - bool GetIDOfName( const wchar_t *name, MEMBERID *id) - { - wchar_t *ucname = const_cast(name); - return SUCCEEDED(raw_()->GetIDsOfNames( &ucname, 1, id)); - } - - - /// Get the documentation for the specified MEMBERID. - void GetDocumentation(MEMBERID memid, bstr_t *name, bstr_t *docString, DWORD *helpcontext, bstr_t *helpfile) - { - raw_()->GetDocumentation(memid, name?name->out():NULL, docString?docString->out():NULL, - helpcontext, helpfile? helpfile->out():NULL) | raise_exception; - } - /** Get the member name for the specified MEMBERID. - * This is a shortcut for GetDocumentation. - */ - - bstr_t GetMemberName(MEMBERID memid) - { - bstr_t name; - raw_()->GetDocumentation(memid, name.out(), NULL, NULL, NULL) | raise_exception; - return name; - } - bstr_t GetName() - { - return GetMemberName(-1); - } - -#if NOT_YET - /* [local] */ HRESULT GetDllEntry( - /* [in] */ MEMBERID memid, - /* [in] */ INVOKEKIND invKind, - /* [out] */ BSTR *pBstrDllName, - /* [out] */ BSTR *pBstrName, - /* [out] */ WORD *pwOrdinal) ; -#endif // NOT_YET - - /** Get the referenced Type information. - */ - com_ptr GetRefTypeInfo( HREFTYPE refType) - { - com_ptr refinfo; - raw_()->GetRefTypeInfo( refType, refinfo.out()) | raise_exception; - return refinfo; - } - -#if NOT_YET - /* [local] */ HRESULT AddressOfMember( /* [in] */ MEMBERID memid, /* [in] */ INVOKEKIND invKind, - /* [out] */ PVOID *ppv) ; - - /* [local] */ HRESULT CreateInstance( /* [in] */ IUnknown *pUnkOuter, /* [in] */ REFIID riid, - /* [iid_is][out] */ PVOID *ppvObj) ; - - HRESULT GetMops( /* [in] */ MEMBERID memid, /* [out] */ BSTR *pBstrMops) ; -#endif // NOT_YET - - /** Get the typelib containing this definition. - * \return A pair containing the typelibrary and the index of the type description within the type library. - */ - std::pair< com_ptr, UINT > GetContainingTypeLib() - { - std::pair< com_ptr, UINT> result; - raw_()->GetContainingTypeLib( result.first.out(), &(result.second) ) | raise_exception; - return result; - } - }; - //@} - - template<> - struct wrap_t : wrap_t - { - TYPEKIND GetTypeKind() - { - TYPEKIND tkind; - raw_()->GetTypeKind(&tkind) | raise_exception; - return tkind; - } - private: - inline ITypeInfo2 *raw_(){ return reinterpret_cast(this); } - }; - - - /*! \addtogroup Interfaces - */ - //@{ - - /// Specialisation to handle TypeLibrary API. - template<> - struct wrap_t - { - inline ITypeLib *raw_(){ return reinterpret_cast(this); } - unsigned int GetTypeInfoCount() - { - return raw_()->GetTypeInfoCount(); - } - - /// Get typeinfo at specified index. - com_ptr GetTypeInfo( UINT index) - { - com_ptr tinfo; - raw_()->GetTypeInfo( index, tinfo.out()) | raise_exception; - return tinfo; - } - - /// Get type of information at specified index. - TYPEKIND GetTypeInfoType( UINT index) - { - TYPEKIND retval; - raw_()->GetTypeInfoType( index, &retval) | raise_exception; - return retval; - } - - /// Get typeinfo given GUID. - com_ptr GetTypeInfoOfGuid( const uuid_t &guid ) - { - com_ptr tinfo; - raw_()->GetTypeInfoOfGuid( guid, tinfo.out()) | raise_exception; - return tinfo; - } - /// Get Raw Typeinfo of guid. - HRESULT GetTypeInfoOfGuid( REFGUID guid, ITypeInfo **ppTinfo) - { - return raw_()->GetTypeInfoOfGuid( guid,ppTinfo); - } - - /// Get attributes of the typelibrary. - tlibattr_t GetLibAttr() - { - TLIBATTR *attr; - raw_()->GetLibAttr( &attr) | raise_exception; - return tlibattr_t( raw_(), attr); - } - - com_ptr GetTypeComp() - { - com_ptr typecomp; - raw_()->GetTypeComp( typecomp.out() ) | raise_exception; - return typecomp; - } - - void GetDocumentation(int index, bstr_t *name, bstr_t *docString, DWORD *helpcontext, bstr_t *helpfile) - { - raw_()->GetDocumentation(index, name?name->out():NULL, docString?docString->out():NULL, - helpcontext, helpfile? helpfile->out():NULL) | raise_exception; - } - bstr_t GetItemName(int index) - { - bstr_t name; - raw_()->GetDocumentation(index, name.out(), NULL, NULL, NULL) | raise_exception; - return name; - } - bstr_t GetName() - { - return GetItemName(-1); - } - - bool IsName( const bstr_t &name, unsigned long hashval ) - { - BOOL ret; - raw_()->IsName( name.in(), hashval, &ret) | raise_exception; - return ret!=0; - } - - std::pair, MEMBERID> FindName( const bstr_t &name) - { - std::pair, MEMBERID> result; - USHORT tofind = 1; - raw_()->FindName(name.in(), 0, result.first.out(), &result.second, &tofind) | raise_exception; - return result; - } -#ifdef NOT_YET - std::list, MEMBERID> >FindName( const bstr_t &name, int max) - {} - [local] - HRESULT FindName( - [in, out] LPOLESTR szNameBuf, - [in] ULONG lHashVal, - [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo, - [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId, - [in, out] USHORT * pcFound - ); -#endif // LATER - - - }; - - /// Load typeinfo from a file. - namespace typeinfo - { - /** Whether to register the typelibrary on load. - * \relates typeinfo::LoadTypeLib - */ - enum regkind_t { reg_default = REGKIND_DEFAULT, reg_register = REGKIND_REGISTER, reg_none = REGKIND_NONE } ; - /// Load typeinfo from a file. - static inline com_ptr LoadTypeLib( const bstr_t &filename, regkind_t regkind= reg_default) - { - com_ptr tlib; - LoadTypeLibEx(filename.in(), (REGKIND)(regkind), tlib.out()) | raise_exception; - return tlib; - } - } - //@} -} // namespace comet -#endif /* COMET_TLIBINFO_H */ diff --git a/EyeTab_SP2/comet/tstring.h b/EyeTab_SP2/comet/tstring.h deleted file mode 100644 index 6520524..0000000 --- a/EyeTab_SP2/comet/tstring.h +++ /dev/null @@ -1,124 +0,0 @@ -/** \file - * C++ Std. lib TCHAR mappings. - */ -/* - * Copyright © 2002 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_TSTRING_H -#define COMET_TSTRING_H - -#include -#include -#include - -namespace comet { - - /*! \addtogroup WinUtil - */ - //@{ - -#if defined(_MBCS) && !defined(_UNICODE) && !defined(COMET_NO_MBCS_WARNING) -#pragma message( "Warning: _MBCS is defined. Be aware that tstring does not support multi-byte character strings" ) -#endif - /** \page comettstring Comet tstring type. - * In order for comet projects to more easily support unicode via the - * windows file "tchar.h", many comet classes support the type #comet::tstring which is - * a convenience typedef to basic_string. Associated with - * \link comet::tstring tstring \endlink are all or most of the other STL - * classes that have a \p char argument to the templates. - * - * In addition to being used by comet, this is a generally useful series - * of typedefs to be used when combining STL types with tchar.h compatible - * projects. - * - * There are two area to be particularly wary of with STL and tchar.h. - * - * The first is that the filename argument for file streams are always - * narrow char *. I would suggest using a #comet::bstr_t which will - * convert for you, especially in UNICODE (actually UCS2 little-endien) projects. - * - * The second is that tstring support for multi-byte character strings is - * very minimal. Embedded NULLs in the stream are not a problem for - * copying around, however none of the parsing/searching/comparison - * methods cope with multi-byte character sets. - * - * I believe that part of the reason for this is the platform specific - * nature of multi-byte, and the internal support for a variety of - * different MBCS implementations by Microsoft. - */ - - /** TCHAR version of std::basic_string. - * See \ref comettstring - */ - typedef std::basic_string< TCHAR > tstring; - - /** TCHAR version of std::basic_ios. - * \relates tstring - */ - typedef std::basic_ios > tios; - /** TCHAR version of std::basic_streambuf. - * \relates tstring - */ - typedef std::basic_streambuf > tstreambuf; - /** TCHAR version of std::basic_istream. - * \relates tstring - */ - typedef std::basic_istream > tistream; - /** TCHAR version of std::basic_ostream. - * \relates tstring - */ - typedef std::basic_ostream > tostream; - /** TCHAR version of std::basic_iostream. - * \relates tstring - */ - typedef std::basic_iostream > tiostream; - /** TCHAR version of std::basic_stringbuf. - * \relates tstring - */ - typedef std::basic_stringbuf, std::allocator > tstringbuf; - /** TCHAR version of std::basic_istringstream. - * \relates tstring - */ - typedef std::basic_istringstream, std::allocator > tistringstream; - /** TCHAR version of std::basic_ostringstream. - * \relates tstring - */ - typedef std::basic_ostringstream, std::allocator > tostringstream; - /** TCHAR version of std::basic_stringstream. - * \relates tstring - */ - typedef std::basic_stringstream, std::allocator > tstringstream; - /** TCHAR version of std::basic_filebuf. - * \relates tstring - */ - typedef std::basic_filebuf > tfilebuf; - /** TCHAR version of std::basic_ifstream. - * \relates tstring - */ - typedef std::basic_ifstream > tifstream; - /** TCHAR version of std::basic_ofstream. - * \relates tstring - */ - typedef std::basic_ofstream > tofstream; - /** TCHAR version of std::basic_fstream. - * \relates tstring - */ - typedef std::basic_fstream > tfstream; - - //@} -} - - -#endif diff --git a/EyeTab_SP2/comet/type_traits.h b/EyeTab_SP2/comet/type_traits.h deleted file mode 100644 index 45f7c3a..0000000 --- a/EyeTab_SP2/comet/type_traits.h +++ /dev/null @@ -1,262 +0,0 @@ -/** \file - * Interrogate traits of template types. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen, Paul Hollingsworth - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -/* - * Partial copyright for is_const, is_volatile and is_reference. - * - * (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. - * Permission to copy, use, modify, sell and - * distribute this software is granted provided this copyright notice appears - * in all copies. This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ - -#ifndef COMET_TYPE_TRAITS_H -#define COMET_TYPE_TRAITS_H - -namespace comet { - - /** Provides structs to interrogate traits of template types. - */ - namespace type_traits { - - ////////////////////////////////////////////////////////////////////////// - // From www.boost.org - - //* is a type T declared const - is_const - namespace detail{ - typedef char yes_result; - typedef char (&no_result)[8]; - yes_result is_const_helper(const volatile void*); - no_result is_const_helper(volatile void *); - yes_result is_volatile_helper(const volatile void*); - no_result is_volatile_helper(const void *); - - template struct helper { T t; }; - } - - template struct is_const - { - enum{ result = (sizeof(detail::yes_result) == sizeof( detail::is_const_helper( - & ((reinterpret_cast *>(0))->t)) - )) - }; - }; - - template struct is_volatile - { - enum{ result = (sizeof(detail::yes_result) == sizeof(detail::is_volatile_helper( - & ((reinterpret_cast *>(0))->t)) - )) - }; - }; - -# pragma warning(push) -# pragma warning(disable: 4181) - - //* is a type T a reference type - is_reference - template struct is_reference - { - private: - typedef T const volatile cv_t; - public: - enum // dwa 10/27/00 - VC6.4 seems to choke on short-circuit (&&,||) - { // evaluations in constant expressions - value = !is_const::result | !is_volatile::result - }; - }; - - template <> struct is_reference - { - enum{ value = false }; - }; - -# pragma warning(pop) - - - ////////////////////////////////////////////////////////////////////////// - - template struct is_integer { enum { result = false }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; -// template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - template<> struct is_integer { enum { result = true }; }; - - //! @if Internal - /** Taken from STLPort. - * \internal - */ - struct _PointerShim { - // Since the compiler only allows at most one non-trivial - // implicit conversion we can make use of a shim class to - // be sure that IsPtr below doesn't accept classes with - // implicit pointer conversion operators - _PointerShim(const volatile void*); // no implementation - }; - //! @endif - - // These are the discriminating functions - static char __cdecl _IsP(bool, _PointerShim); // no implementation is required - static char* __cdecl _IsP(bool, ...); // no implementation is required - - template - struct is_pointer { - // This template meta function takes a type T - // and returns true exactly when T is a pointer. - // One can imagine meta-functions discriminating on - // other criteria. - static _Tp& __null_rep(); - enum { result = (sizeof(_IsP(false,__null_rep())) == sizeof(char)) }; - }; - - // Work out whether the Type is something we can use operator-> on - // (hopefully). If we fail, the worst we get is a level 3 warinng. - template - struct is_class_pointer - { - enum { result = (is_pointer<_Tp>::result && ! is_integer<_Tp>::result) }; - }; - - template struct int_holder - { - enum { result = x }; - }; - - template struct type_holder - { - typedef T result; - }; - -/* template class is_static_compatible - { - class yes { }; - class no {char a[10]; }; - - static yes test( U * ); - static no test( ... ); - - public: - enum { is = sizeof(test(static_cast(0))) == sizeof(yes) ? true : false }; - };*/ - - template class is_cast_operator_compatible - { - protected: - class yes { }; - class no {char a[10]; }; - - static yes test( U* ); - static no test( ... ); - - public: - enum { is = sizeof(test(*static_cast(0))) == sizeof(yes) /*? 1 : 0 */}; - }; - -#ifndef COMET_PARTIAL_SPECIALISATION - template struct conversion_aux - { - template class X - { - protected: - class yes { }; - class no {char a[10]; }; - static T makeT(); - - static yes test(U); - static no test(...); - public: - enum { exists = sizeof(test(makeT())) == sizeof(yes) }; - enum { same_type = false }; - }; - - - template<> class X - { - public: - enum { exists = true }; - enum { same_type = true }; - }; - - }; - template struct conversion - { - enum { exists = conversion_aux::X::exists }; - enum { same_type = conversion_aux::X::same_type }; - enum { exists_two_way = exists && conversion_aux::X::exists }; - }; -#else - template struct conversion - { - protected: - class yes { }; - class no {char a[10]; }; - static T makeT(); - - static yes test(U); - static no test(...); - public: - enum { exists = sizeof(test(makeT())) == sizeof(yes) }; - enum { same_type = false }; - enum { exists_two_way = conversion::exists}; - - }; - template struct conversion - { - - enum { exists = true }; - enum { same_type = true }; - enum { exists_two_way = true}; - }; - -#endif // COMET_PARTIAL_SPECIALISATION - - template struct super_sub_class - { - enum { result = conversion::exists && !conversion::same_type }; - }; - - inline bool is_null_vtable_entry(void *p,short n) - { - return ((n<0)?true:(0==(*reinterpret_cast(reinterpret_cast(*(reinterpret_cast(p)))+n)))); - } - - } - - namespace impl { - - // used by NutshellImpl's - struct false_type {}; - struct true_type {}; - - template struct is_one { typedef false_type val; }; - template<> struct is_one<1> { typedef true_type val; }; - - } - - -} - - -#endif diff --git a/EyeTab_SP2/comet/typelist.h b/EyeTab_SP2/comet/typelist.h deleted file mode 100644 index 8af6ab8..0000000 --- a/EyeTab_SP2/comet/typelist.h +++ /dev/null @@ -1,450 +0,0 @@ -/** \file - * Implementation of Lists of types. - * Type lists are rather integral to the operation of Comet, and provide us - * with many of the mechanisms that allow us to all but remove the need for - * \#define macros in code. - */ -/* - * Copyright © 2000-2002 Sofus Mortensen, Michael Geddes - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_TYPELIST_H -#define COMET_TYPELIST_H - -#include - -namespace comet { - - /** \struct nil typelist.h comet/typelist.h - * End of list type. - */ - struct nil {}; - - template - struct tl_t { - typedef T head; - typedef U tail; - }; - -#ifndef COMET_TL_TRUNC -#ifndef __BORLANDC__ -#define COMET_TL_LIST( X01,X02,X03,X04,X05,X06,X07,X08,X09, \ - X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ - X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ - X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) \ - X01,X02,X03,X04,X05,X06,X07,X08,X09, \ - X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ - X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ - X30,X31,X32,X33,X34,X35,X36,X37,X38,X39 -#else -#define COMET_TL_LIST( X01,X02,X03,X04,X05,X06,X07,X08,X09, \ - X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ - X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ - X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) \ - X01,X02,X03,X04,X05,X06,X07,X08,X09, \ - X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ - X20,X21,X22,X23,X24,X25,X26,X27,X28,X29 -#endif -#else -#define COMET_TL_LIST( X01,X02,X03,X04,X05,X06,X07,X08,X09, \ - X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ - X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ - X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) \ - X01,X02,X03,X04,X05,X06,X07,X08,X09,X10 -#endif - - - -#define COMET_LIST_TEMPLATE \ - typename X00=comet::nil, COMET_TL_LIST( typename X01=comet::nil, typename X02=comet::nil, typename X03=comet::nil, typename X04=comet::nil, \ - typename X05=comet::nil, typename X06=comet::nil, typename X07=comet::nil, typename X08=comet::nil, typename X09=comet::nil, \ - typename X10=comet::nil, typename X11=comet::nil, typename X12=comet::nil, typename X13=comet::nil, typename X14=comet::nil, \ - typename X15=comet::nil, typename X16=comet::nil, typename X17=comet::nil, typename X18=comet::nil, typename X19=comet::nil, \ - typename X20=comet::nil, typename X21=comet::nil, typename X22=comet::nil, typename X23=comet::nil, typename X24=comet::nil, \ - typename X25=comet::nil, typename X26=comet::nil, typename X27=comet::nil, typename X28=comet::nil, typename X29=comet::nil, \ - typename X30=comet::nil, typename X31=comet::nil, typename X32=comet::nil, typename X33=comet::nil, typename X34=comet::nil, \ - typename X35=comet::nil, typename X36=comet::nil, typename X37=comet::nil, typename X38=comet::nil, typename X39=comet::nil) - -#define COMET_LIST_TEMPLATE_0 typename X00, COMET_TL_LIST(\ - typename X01, typename X02, typename X03, typename X04, \ - typename X05, typename X06, typename X07, typename X08, typename X09, \ - typename X10, typename X11, typename X12, typename X13, typename X14, \ - typename X15, typename X16, typename X17, typename X18, typename X19, \ - typename X20, typename X21, typename X22, typename X23, typename X24, \ - typename X25, typename X26, typename X27, typename X28, typename X29, \ - typename X30, typename X31, typename X32, typename X33, typename X34, \ - typename X35, typename X36, typename X37, typename X38, typename X39) - -#define COMET_LIST_ARG_1 X00, COMET_TL_LIST(\ - X01,X02,X03,X04,X05,X06,X07,X08,X09, \ - X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ - X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ - X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) - -#define COMET_LIST_ARG_0 COMET_TL_LIST(\ - X01,X02,X03,X04,X05,X06,X07,X08,X09, \ - X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ - X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ - X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) - -#define COMET_LIST_NIL comet::nil, COMET_TL_LIST(\ - comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil, \ - comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil, \ - comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil, \ - comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil) - - /** \struct make_list typelist.h comet/typelist.h - * Construct a 'type list' of up to 40 types. - * A list is a 'head-tail' list terminated by a 'nil' tail struct. - * It is most easily constructe by using make_list: - \code - comet::make_list< FooType,BarType>::result - \endcode - - * The \e concept of a type-list is that it is either \link comet::nil nil \endlink - * or a struct containing a \e typedef of \p head to the first element in the - * list and a typedef of \p tail to a type-list that contains the rest of - * the list. - * - * This means that for a type-list \e LST - * \code - LST::head - \endcode - * is the first element in the list (assuming it is not - * \link comet::nil nil \endlink) and - * \code - LST::head::tail::head - \endcode - would be the second element in the list (assuming LST::head::tail is not - \link comet::nil nil \endlink), and so on. - - * Two type lists can be appended together with typelist::append. - - \sa typelist::append - */ - template struct make_list - { - typedef tl_t::result> result; - }; - - template<> struct make_list - { - typedef nil result; - }; - - namespace typelist { - - template struct length - { - enum { value = 1 + length< typename L::tail>::value }; - }; - - template<> struct length - { - enum { value = 0 }; - }; - -#ifdef COMET_PARTIAL_SPECIALISATION - //! Find the type at the specified index. - /** \param L Type List - * \param idx Index - */ - template struct type_at - { - typedef typename type_at::result result; - }; - template struct type_at - { - typedef typename L::head result; - }; - template< unsigned idx> struct type_at - { - typedef nil result; - }; - template<> struct type_at - { - typedef nil result; - }; - - - /** \internal - */ - template struct index_of_aux - { - enum { value = 1+(index_of_aux::value) }; - }; - template< typename L, typename T> struct index_of_aux - { - enum { value = 0 }; - }; - /** Find the index of the type \a T in the type-list \a L. - * The result is in index_of::value. - */ - template struct index_of - { - enum { value = index_of_aux::value }; - }; - - -#else - template struct type_at; - - template struct type_at_aux - { - template struct X - { - typedef typename type_at::result result; -// typedef type_at_aux::X::result result; - }; - - template<> struct X<0> - { - typedef typename L::head result; - }; - }; - - template<> struct type_at_aux - { - template struct X - { - typedef nil result; - }; - }; - - -/* template<> struct type_at_aux< make_list<> > - { - template struct X - { - typedef nil result; - }; - };*/ - - template struct type_at - { - typedef typename type_at_aux::X::result result; - }; - - template struct index_of; - - template struct index_of_aux - { - template struct X1 - { - template struct X2 - { - enum { value = 1 + index_of::value }; - }; - - template<> struct X2 - { - enum { value = 0 }; - }; - }; - }; - - template struct index_of - { - enum { value = index_of_aux::X1::X2::value }; - }; -#endif // COMET_PARTIAL_SPECIALISATION - -#undef COMET_LIST_ARG - -#ifdef COMET_PARTIAL_SPECIALISATION - - /** \struct append typelist.h comet/typelist.h - * Appends two type-lists together. - * Example: - * \code - comet::typelist::append< - comet::make_list< Type1, Type2 >::result, - comet::make_list< Type3, Type4 >::result - > - \endcode - \sa make_list - */ - template struct append - { - typedef typename L1::head head; - typedef append tail; - }; - - template struct append - { - typedef typename L2::head head; - typedef typename L2::tail tail; - }; - template struct append,L2> - { - typedef typename L2::head head; - typedef typename L2::tail tail; - }; - template<> struct append - { - typedef nil head; - typedef nil tail; - }; - template struct append_element - { - typedef typename append::result>::head head; - typedef typename append::result>::tail tail; - }; -#else // COMET_PARTIAL_SPECIALISATION - - template struct append; - - namespace impl { - - template struct append_aux - { - template struct with - { - typedef typename L1::head head; - typedef typename append tail; -// typedef typename append_aux::with tail; - }; - - template<> struct with - { - typedef typename L1::head head; - typedef typename L1::tail tail; - }; - }; - - template<> struct append_aux - { - template struct with - { - typedef typename L2::head head; - typedef typename L2::tail tail; - }; - }; - -/* template<> struct append_aux > - { - template struct with - { - typedef typename L2::head head; - typedef typename L2::tail tail; - }; - };*/ - - } - - template struct append - { - typedef typename impl::append_aux::with::head head; - typedef typename impl::append_aux::with::tail tail; - }; - - template struct append_element - { - typedef typename impl::append_aux::with< typename make_list::result >::head head; - typedef typename impl::append_aux::with< typename make_list::result >::tail tail; - }; -#endif // COMET_PARTIAL_SPECIALISATION - - -#ifdef COMET_NESTED_TEMPLATES - /** \struct wrap_each typelist.h comet/typelist.h - * Wrap each of the elements of a list in the specified template class. - * Due to lack of support for template parameter to templates by Microsoft, - * macros have been defined as a necessary evil to get arround this. - * The macros are #COMET_WRAP_EACH_DECLARE and #COMET_WRAP_EACH. - * There is a propper implementation for compilers that support nested - * interfaces, which will be selected by the macro as appropriate. - * \sa COMET_WRAP_EACH_DECLARE COMET_WRAP_EACH - */ - template< template< typename > class T, typename L1> struct wrap_each; - namespace impl - { - template< template< typename > class T, typename L1> struct wrap_each_aux - { - typedef wrap_each x; - }; - template< template< typename > class T> struct wrap_each_aux< T, nil> - { - typedef nil x; - }; - } - - template< template< typename > class T, typename L1> struct wrap_each - { - typedef T head; - typedef typename impl::wrap_each_aux::x tail; - }; - - template< template< typename > class T> struct wrap_each< T, ::comet::nil > - { - }; - /** \def COMET_WRAP_EACH_DECLARE(T) - * Declare a template for wrapping each element in the specified type. - * \relates wrap_each - */ -#define COMET_WRAP_EACH_DECLARE(T) -// MSVC7.1 doesn't like this: -// template< template< typename > class T1, typename L1> struct wrap_each; - - /** \def COMET_WRAP_EACH(T, L1) - * Produce a list L2 that consists of each member of list L1 wrapped in type T. - * This is very much a Lambda calculus concept for those who care. - * \relates wrap_each - */ -#define COMET_WRAP_EACH(T, L1) typelist::wrap_each - -#else // COMET_NESTED_TEMPLATES -#define COMET_WRAP_EACH_DECLARE(T) \ - template< typename L1 > struct wrap_each_aux##T; \ - namespace impl \ - { \ - template< typename L1> struct p_wrap_each_aux##T \ - { \ - typedef wrap_each_aux##T x; \ - }; \ - template<> struct p_wrap_each_aux##T < ::comet::nil> \ - { \ - typedef ::comet::nil x; \ - }; \ - }; \ - template< typename L1> struct wrap_each_aux##T \ - { \ - typedef T head; \ - typedef typename impl::p_wrap_each_aux##T < typename L1::tail>::x tail;\ - }; \ - template<> struct wrap_each_aux##T< ::comet::nil> { }; - -#define COMET_WRAP_EACH(T, L1) wrap_each_aux##T - -#endif // COMET_NESTED_TEMPLATES - - template struct ATL_NO_VTABLE inherit_all - : public ITF_LIST::head, public inherit_all - {}; - - template<> struct inherit_all {}; -// template<> struct inherit_all > {}; - - } - -/* MSVC7 chokes on this one - not actually used anywhere - - template struct select - { - typedef typelist::type_at< make_list::result, idx>::result result; - };*/ - -} // namespace - -#endif diff --git a/EyeTab_SP2/comet/unittest.h b/EyeTab_SP2/comet/unittest.h deleted file mode 100644 index d53821a..0000000 --- a/EyeTab_SP2/comet/unittest.h +++ /dev/null @@ -1,86 +0,0 @@ -/** \file - * Unit-test wrapper. - */ -/* - * Copyright © 2000, 2001 Paul Hollingsworth - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_UNITTEST_H -#define COMET_UNITTEST_H - -#include -#include - -namespace comet { - //! Define a unit test \a n. - template - struct test - { - void run() {} - }; - - int current_test = 0; - - //! Run \a n tests. - /** \sa test - */ - template - struct tester - { - inline static void runtests() - { - tester::runtests(); - current_test = n; - test().run(); - } - }; - - template<> - struct tester<0> - { - static void runtests() {} - }; -} // namespace comet - -//! Implement Main function for testing. -template -struct main_t -{ - /// Call to run tests. - static int call(int argc, const char * const argv[]) - { - using std::cout; - using std::cerr; - using std::endl; - try { - comet::tester<64>::runtests(); - } catch (const std::exception &e) { - std::cerr << "Test #" << comet::current_test << " failed - error message: <" << e.what() << ">" << endl; - return 1; - } - catch(...) { - std::cerr << "Test #" << comet::current_test << " failed with an unrecognized exception" << endl; - return 2; - } - std::cout << "Ran all tests successfully" <::call(argc,argv);\ -} - -#endif diff --git a/EyeTab_SP2/comet/util.h b/EyeTab_SP2/comet/util.h deleted file mode 100644 index 0e514e0..0000000 --- a/EyeTab_SP2/comet/util.h +++ /dev/null @@ -1,125 +0,0 @@ -/** \file - * Various utilities. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_UTIL_H -#define COMET_UTIL_H - -#include - -#include - -#include -#include - -namespace comet { - - /*! \addtogroup WinUtil - */ - //@{ - //! Automatic handling of CoInitialize / CoUninitialize. - class auto_coinit { - public: -#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM - explicit auto_coinit(COINIT ci) { - ::CoInitializeEx(0, ci) | raise_exception; - } -#endif - - auto_coinit() { ::CoInitialize(0) | raise_exception; } - - ~auto_coinit() { ::CoUninitialize(); } - - private: - auto_coinit& operator=(const auto_coinit&); - auto_coinit(const auto_coinit&); - }; - - // For backward compatibility. - typedef auto_coinit auto_CoInitialize; - - /// Returns the class id of the free threaded marshaler - inline CLSID get_clsid_of_ftm() - { - CLSID rv; - class Dummy : public static_object<> {} dummy; - - IUnknown* pUnk = 0; - ::CoCreateFreeThreadedMarshaler(&dummy, &pUnk) | raise_exception; - - com_ptr marshal = try_cast(pUnk); - - marshal.raw()->GetUnmarshalClass(IID_IUnknown, &dummy, MSHCTX_INPROC,0,MSHLFLAGS_NORMAL, &rv) | raise_exception; - return rv; - } - - /** - * Returns true if and only if object is aggregating the free threaded marshaler. - */ - inline bool is_object_aggregating_ftm(const com_ptr& p) - { - com_ptr marshal = com_cast(p); - if (marshal == 0) return false; - - class Dummy : public static_object<> {} dummy; - - CLSID clsid = CLSID_NULL; - marshal.raw()->GetUnmarshalClass(IID_IUnknown, &dummy, MSHCTX_INPROC,0,MSHLFLAGS_NORMAL, &clsid); - - CLSID ftm_clsid = get_clsid_of_ftm(); - return clsid == ftm_clsid ? true : false; - } - -#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM - /** - * Returns true if and only if current apartment is the MTA. - */ - inline bool is_mta() - { - if (SUCCEEDED(::CoInitializeEx(0, COINIT_MULTITHREADED))) - { - ::CoUninitialize(); - return true; - } - return false; - } -#endif - /** - * Returns true if and only if current apartment is an STA. - */ - inline bool is_sta() - { - if (SUCCEEDED(::CoInitialize(0))) - { - ::CoUninitialize(); - return true; - } - return false; - } - - /** - * Returns true if and only if specified ptr is a standard proxy. - */ - inline bool is_std_proxy(const com_ptr& unk) - { - com_ptr pm; - return SUCCEEDED(unk.raw()->QueryInterface(IID_IProxyManager, reinterpret_cast(pm.out()))); - } - -} // namespace - -#endif diff --git a/EyeTab_SP2/comet/uuid.h b/EyeTab_SP2/comet/uuid.h deleted file mode 100644 index ffd9802..0000000 --- a/EyeTab_SP2/comet/uuid.h +++ /dev/null @@ -1,88 +0,0 @@ -/** \file - * uuid wrapper class. - */ -/* - * Copyright © 2001, 2002 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_UUID_H -#define COMET_UUID_H - -#include -#include -#include - -#pragma comment( lib, "Rpcrt4" ) - -namespace comet { - - template - void uuid_t::copy_to_str(C s[36]) const throw() - { - const unsigned char *p = reinterpret_cast(this); - - for (int i=0; i<20; ++i) - { - int j = uuid_table()[i]; - if (j >= 0) - { - const unsigned char byt = p[j]; - *s = hex_table()[byt >> 4]; - ++s; - *s = hex_table()[byt & 0xf]; - } - else *s = L'-'; - ++s; - } - } - - template - bool uuid_t::init_from_str(const C s[], size_t len) throw() - { - unsigned char *p = reinterpret_cast(this); - - bool has_brace; - switch (len) - { - default: return false; - case 36: has_brace = false; break; - case 38: - if (*s != C('{')) - return false; - has_brace = true; - ++s; - break; - } - - int i; - for (i=0; i<20; ++i) - { - int j = uuid_table()[i]; - if (j >= 0) - { - int a = parse_nibble(*s); - ++s; - int b = parse_nibble(*s); - p[j] = unsigned char(a << 4 | b); - } - else if (*s != C('-')) - return false; - ++s; - } - return (! has_brace) || (*s == C('}')); - } - -} - -#endif diff --git a/EyeTab_SP2/comet/uuid_fwd.h b/EyeTab_SP2/comet/uuid_fwd.h deleted file mode 100644 index 316178f..0000000 --- a/EyeTab_SP2/comet/uuid_fwd.h +++ /dev/null @@ -1,441 +0,0 @@ -/** \file - * uuid wrapper class. - */ -/* - * Copyright © 2001, 2002 Sofus Mortensen - * Copyright © 2013 Alexander Lamaison - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_UUID_FWD_H -#define COMET_UUID_FWD_H - -#include -#include - -#include -#include -#include -#include -#include - -namespace comet{ - - -/*! \addtogroup COMType - */ -//@{ - -/// UUID wrapper. -class uuid_t : public COMET_GUID_BASE -{ - struct unitialized_t {}; - uuid_t(unitialized_t) {} - - friend class bstr_t; - -public: - /// Default constructor - constructs a nil uuid. - uuid_t() - { - UuidCreateNil(this); - } - - /// Copy constructor - uuid_t(const COMET_GUID_BASE& u) - { - memcpy(this, &u, sizeof(COMET_GUID_BASE)); - } - - /// Assignment operator - uuid_t& operator=(const COMET_GUID_BASE& u) - { - memcpy(this, &u, sizeof(COMET_GUID_BASE)); - return *this; - } - - /// \name Construct uuid from string - //@{ - explicit uuid_t(const std::string& s) - { - if (!init_from_str(s.c_str(), s.length())) - throw std::runtime_error(err_msg()); - } - - explicit uuid_t(const char* s) - { - if (!init_from_str(s, strlen(s))) - throw std::runtime_error(err_msg()); - } - - explicit uuid_t(const std::wstring& s) - { - if (!init_from_str(s.c_str(), s.length())) - throw std::runtime_error(err_msg()); - } - - explicit uuid_t(const wchar_t* s) - { - if (!init_from_str(s, wcslen(s))) - throw std::runtime_error(err_msg()); - } - - explicit uuid_t(const bstr_t& bs); - //@} - - //! Generate new guid. - static uuid_t create() - { - unitialized_t x; - uuid_t g(x); - UuidCreate(&g); - return g; - } - - //! Set to nil uuid. - void clear() - { - UuidCreateNil(this); - } - - //! Returns hash of uuid - unsigned short hash() const - { - RPC_STATUS status; - unsigned short r = UuidHash(const_cast(this), &status); - if (status != RPC_S_OK) - throw std::runtime_error("uuid_t::hash - UuidHash failed."); - return r; - } - - //! Convert uuid to string - //@{ - /// Return a std::string version of the uuid. - std::string str() const - { - std::string r; - r.resize(36); - copy_to_str(&r[0]); - return r; - } - /// Return a std::string version of the uuid. - inline std::string s_str() const - { - return str(); - } - - /// Return a std::wstring version of the uuid. - std::wstring w_str() const - { - std::wstring r; - r.resize(36); - copy_to_str(&r[0]); - return r; - } - - /// Return a tstring (templated to TCHAR) version of the uuid. - tstring t_str() const - { - tstring r; - r.resize(36); - copy_to_str(&r[0]); - return r; - } - //@} - - /// Returns true if and only if uuid is nil. - bool is_null() const throw() - { - return ((PLONG) this)[0] == 0 && - ((PLONG) this)[1] == 0 && - ((PLONG) this)[2] == 0 && - ((PLONG) this)[3] == 0; - } - - //! Returns true if and only if uuid is nil - bool operator!() const throw() - { - return is_null(); - } - - /// Output to an ostream. - template - friend inline std::basic_ostream& operator<<(std::basic_ostream& os, const uuid_t& u); - - /// Input from an ostream - template - friend inline std::basic_istream& operator>>(std::basic_istream& is, uuid_t& u); - - /** \internal - */ - class bool_tester - { void operator delete(void*); }; - - /// Copy the uuid_t to a string/container. - template void copy_to_str(C s[]) const throw(); - /// Initialise the uuid_t from a string/container. - template bool init_from_str(const C s[], size_t len) throw(); - - static const int* uuid_table() - { - static const int table[] = { 3, 2, 1, 0, -1, 5, 4, -1, 7, 6, -1, 8, 9, -1, 10, 11, 12, 13, 14, 15 }; - return table; - } - - static const char* hex_table() - { - static const char hex[] = "0123456789abcdef"; - return hex; - } - - static const char* err_msg() - { - static const char msg[] = "uuid_t: invalid format"; - return msg; - } - - static int parse_nibble(int c) - { - return c >= 'A' ? (c|0x20) - 'a' + 10 : c - '0'; - } - - /// Compare two guids. - inline long cmp(const comet::uuid_t &rhs) const - { - long i; // The code below may be a bit dense, but it is compact and works. - if((i = (Data1 - rhs.Data1)) == 0 && (i = (Data2 - rhs.Data2)) == 0 && (i = (Data3 - rhs.Data3)) == 0) - (i = ::memcmp(Data4, rhs.Data4, 8)); - return i; - } - - /// Compare two guids for equality. - inline bool is_equal( const comet::uuid_t &rhs) const - { - // From ATL - return ((PLONG) this)[0] == ((PLONG) &rhs)[0] && - ((PLONG) this)[1] == ((PLONG) &rhs)[1] && - ((PLONG) this)[2] == ((PLONG) &rhs)[2] && - ((PLONG) this)[3] == ((PLONG) &rhs)[3]; - } - -public: - /**\internal - */ - operator bool_tester*() const throw() - { if (is_null()) return 0; static bool_tester test; return &test; } - - /// Construct const reference to uuid from a raw GUID - static const uuid_t& create_const_reference(const COMET_GUID_BASE& x) - { - return *reinterpret_cast(&x); - } - - /// Construct reference to uuid from a raw GUID - static uuid_t& create_reference(COMET_GUID_BASE& x) - { - return *reinterpret_cast(&x); - } - - //! \name Methods for converting uuid to raw GUID when calling raw COM functions or legacy code. - //@{ - COMET_GUID_BASE* out() { return this; } - COMET_GUID_BASE* inout() { return this; } - COMET_GUID_BASE in() const { return *this; } - COMET_GUID_BASE* in_ptr() const { return const_cast(static_cast(this)); } - //@} -}; -//@} - -/// \name comparison operators -//@{ -/** Equals operator. - * \relates uuid_t - */ -inline bool operator==(const comet::uuid_t& lhs, const comet::uuid_t& rhs) -{ - return lhs.is_equal(rhs); -} - -/** Inequality operator. - * \relates uuid_t - */ -inline bool operator!=(const comet::uuid_t& lhs, const comet::uuid_t& rhs) -{ - return !lhs.is_equal(rhs); -} - -/** Equals operator. - * \relates uuid_t - */ -inline bool operator==(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) -{ - return lhs.is_equal( comet::uuid_t::create_const_reference(rhs) ); -} - -/** Inequality operator. - * \relates uuid_t - */ -inline bool operator!=(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) -{ - return !lhs.is_equal( comet::uuid_t::create_const_reference(rhs) ); -} - -/** Equals operator. - * \relates uuid_t - */ -inline bool operator==(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) -{ - return comet::uuid_t::create_const_reference(lhs).is_equal(rhs); -} - -/** Inequality operator. - * \relates uuid_t - */ -inline bool operator!=(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) -{ - return !comet::uuid_t::create_const_reference(lhs).is_equal(rhs); -} - -/** Less-than operator. - * \relates uuid_t - */ -inline bool operator<(const comet::uuid_t& lhs, const comet::uuid_t& rhs) -{ - return lhs.cmp(rhs)<0; -} - -/** Less-than operator. - * \relates uuid_t - */ -inline bool operator<(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) -{ - return lhs.cmp(comet::uuid_t::create_const_reference(rhs))<0; -} - -/** Less-than operator. - * \relates uuid_t - */ -inline bool operator<(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) -{ - return comet::uuid_t::create_const_reference(lhs).cmp(rhs)<0; -} - -/** Greater-than-equals operator. - * \relates uuid_t - */ -inline bool operator>=(const comet::uuid_t& lhs, const comet::uuid_t& rhs) -{ - return lhs.cmp(rhs)>=0; -} - -/** Greater-than-equals operator. - * \relates uuid_t - */ -inline bool operator>=(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) -{ - return lhs.cmp(comet::uuid_t::create_const_reference(rhs))>=0; -} - -/** Greater-than-equals operator. - * \relates uuid_t - */ -inline bool operator>=(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) -{ - return comet::uuid_t::create_const_reference(lhs).cmp(rhs)>=0; -} - -/** Greater-than operator. - * \relates uuid_t - */ -inline bool operator>(const comet::uuid_t& lhs, const comet::uuid_t& rhs) -{ - return lhs.cmp(rhs)>0; -} - -/** Greater-than operator. - * \relates uuid_t - */ -inline bool operator>(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) -{ - return lhs.cmp(comet::uuid_t::create_const_reference(rhs))>0; -} - -/** Greater-than operator. - * \relates uuid_t - */ -inline bool operator>(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) -{ - return comet::uuid_t::create_const_reference(lhs).cmp(rhs)>0; -} - -/** Less-than-equals operator. - * \relates uuid_t - */ -inline bool operator<=(const comet::uuid_t& lhs, const comet::uuid_t& rhs) -{ - return lhs.cmp(rhs)<=0; -} - -/** Less-than-equals operator. - * \relates uuid_t - */ -inline bool operator<=(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) -{ - return lhs.cmp(comet::uuid_t::create_const_reference(rhs))<=0; -} - -/** Less-than-equals operator. - * \relates uuid_t - */ -inline bool operator<=(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) -{ - return comet::uuid_t::create_const_reference(lhs).cmp(rhs)<=0; -} -//@} - -/// \name overloads for output/input to/from streams -/// @{ - -/** Output to an ostream. - * \relates uuid_t - */ -template -inline std::basic_ostream& operator<<(std::basic_ostream& os, const comet::uuid_t& u) -{ - E buf[36]; - u.copy_to_str(buf); - os.write(buf, 36); - return os; -} - -/** Input from an istream. - * \relates uuid_t - */ -template -inline std::basic_istream& operator>>(std::basic_istream& is, comet::uuid_t& u) -{ - typename std::basic_istream::sentry se(is); - if (se) - { - E buf[36]; - is.read(buf, 36); - if (!u.init_from_str(buf, is.gcount())) - is.setstate(std::ios::badbit); - } - return is; -} -//@} - -} // namespace comet - -#endif diff --git a/EyeTab_SP2/comet/variant.h b/EyeTab_SP2/comet/variant.h deleted file mode 100644 index 95129e2..0000000 --- a/EyeTab_SP2/comet/variant.h +++ /dev/null @@ -1,1054 +0,0 @@ -/** \file - * Wrapper for VARIANT. - */ -/* - * Copyright © 2000, 2001 Sofus Mortensen, Michael Geddes - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_VARIANT_H -#define COMET_VARIANT_H - -#include -#include -#include -#include -#include -#include -#include - -#include - -#pragma warning(push) -#pragma warning(disable : 4127) - -#define COMET_VARIANT_OPERATOR(op, name) \ - variant_t operator##op(const variant_t& x) const \ - { \ - VARIANT t; \ - Var##name(const_cast(get_var()), const_cast(x.get_var()), &t) | raise_exception; \ - return auto_attach(t); \ - } \ - \ - variant_t& operator##op##=(const variant_t& x) \ - { \ - return operator=(operator##op(x)); \ - } - -#define COMET_VARIANT_CONVERTERS_EX_(type, vartype, func) \ - variant_t(type x) throw() \ - { \ - V_##vartype(this) = x; V_VT(this) = VT_##vartype; \ - } \ - \ - func() const \ - { \ - if (V_VT(this) == VT_##vartype) return V_##vartype(this); \ - variant_t v(*this, VT_##vartype); \ - return V_##vartype(v.get_var()); \ - } \ - \ - variant_t& operator=(type x) throw() \ - { \ - clear(); \ - V_##vartype(this) = x; V_VT(this) = VT_##vartype; \ - return *this; \ - } - -#define COMET_VARIANT_CONVERTERS_EXPLICIT(type, vartype, funcname) COMET_VARIANT_CONVERTERS_EX_(type,vartype, type funcname) -#define COMET_VARIANT_CONVERTERS(type, vartype) COMET_VARIANT_CONVERTERS_EX_(type,vartype, operator type ) - -#define COMET_VARIANT_FRIENDS(type) \ - inline bool operator!=(type x, const variant_t& y) { return y != x; } \ - inline bool operator==(type x, const variant_t& y) { return y == x; } \ - inline bool operator<(type x, const variant_t& y) { return y > x; } \ - inline bool operator<=(type x, const variant_t& y) { return y >= x; } \ - inline bool operator>(type x, const variant_t& y) { return y < x; } \ - inline bool operator>=(type x, const variant_t& y) { return y <= x; } - -namespace comet { - - template class safearray_t; - - namespace impl { - - template - inline HRESULT compare(const T& operand1, const T& operand2) - { - if (operand1 == operand2) - return VARCMP_EQ; - else if (operand1 < operand2) - return VARCMP_LT; - else - return VARCMP_GT; - } - - /** - * Comparison workaround for broken VarCmp. - * - * VarCmp() doesn't work for several of the numeric types - * (VT_I1, VT_INT, VT_UI2, VT_UI4, VT_UINT or VT_UI8) so we have - * to do these ourselves. - * - * @see http://source.winehq.org/WineAPI/VarCmp.html - */ - inline HRESULT var_cmp( - VARIANT* lhs, VARIANT* rhs, LCID lcid, ULONG flags) - { - switch (V_VT(lhs)) - { - case VT_I1: - return compare(V_I1(lhs), V_I1(rhs)); - case VT_INT: - return compare(V_INT(lhs), V_INT(rhs)); - case VT_UI2: - return compare(V_UI2(lhs), V_UI2(rhs)); - case VT_UI4: - return compare(V_UI4(lhs), V_UI4(rhs)); - case VT_UINT: - return compare(V_UINT(lhs), V_UINT(rhs)); - case VT_UI8: - return compare(V_UI8(lhs), V_UI8(rhs)); - default: - return ::VarCmp(lhs, rhs, lcid, flags); - } - } - - }; - - template class com_ptr; - - - /*! \addtogroup COMType - */ - //@{ - - //! Wrapper for VARIANT type. - /** variant_t is exception safe (basic and strong guarantee). - */ - class variant_t : private ::tagVARIANT - { - private: - void init() throw() - { - //::VariantInit(this); - tagVARIANT * x = this; - V_VT(x)= VT_EMPTY; - } - - void create(const VARIANT& v) throw(com_error) - { - HRESULT hr = ::VariantCopy(this, const_cast(&v)); - if (FAILED(hr)) { - ::VariantClear(this); - raise_exception(hr); - } - } - - public: - //! Default constructor - variant_t() throw() - { - init(); - } - - private: - struct tagMissing {}; - - variant_t(const tagMissing&) throw() - { - init(); - vt = VT_ERROR; - scode = DISP_E_PARAMNOTFOUND; - } - - struct tagNothing {}; - - variant_t(const tagNothing&) throw() - { - init(); - vt = VT_DISPATCH; - pdispVal = 0; - } - - struct tagNull {}; - - variant_t(const tagNull&) throw() - { - init(); - vt = VT_NULL; - } - - public: - //! Return a variant constructed as missing. - /** (VT_ERROR with code DISP_E_PARAMNOTFOUND ) - */ - static const variant_t& missing() - { - static tagMissing t; - static variant_t v(t); - return v; - } - - //! Return a variant contructed as nothing. - /** (VT_DISPATCH with value 0) - */ - static const variant_t& nothing() - { - static tagNothing t; - static variant_t v(t); - return v; - } - - //! Return a variant constructed as null (VT_NULL). - static const variant_t& null() - { - static tagNull t; - static variant_t v(t); - return v; - } - - //! Copy constructor - /*! - \exception com_error - Thrown if underlying VariantCopy fails. - */ - variant_t(const variant_t& v) throw(com_error) - { - init(); - create(v); - } - - public: - - //! VariantChangeType Constructor - /*! - Copies variant and changes to specified type. - - \note Unlike the _variant_t of VC, variant_t uses Thread Locale for type changes instead of the user setting. - - \par v - Variant to copy from - \par vartype - Type to change to. - - \exception com_error - Thrown if underlying VariantChangeTypeEx fails. - */ - variant_t(const variant_t& v, VARTYPE vartype) throw(com_error) - { - init(); - if (vartype != V_VT(&v)) - ::VariantChangeTypeEx(get_var(), - const_cast(v.get_var()), - GetThreadLocale(), - 0, vartype) | raise_exception; - else - ::VariantCopy(this, const_cast(v.get_var())); - } - - variant_t(const variant_t& v, VARTYPE vartype, std::nothrow_t) throw(com_error) - { - init(); - if (vartype != V_VT(&v)) - ::VariantChangeTypeEx(get_var(), - const_cast(v.get_var()), - GetThreadLocale(), - 0, vartype); - else - ::VariantCopy(this, const_cast(v.get_var())); - } - - //! Constructor - /*! - \exception com_error - Thrown if underlying VariantCopy fails. - */ - explicit variant_t(const VARIANT& v) throw(com_error) - { - init(); - create(v); - } - - //! Attaching constructor - /*! - Takes ownership of specified VARIANT. - - \param v - auto_attach wrapper variant to attach to the variant_t - */ - variant_t(const impl::auto_attach_t& v) throw() - { - memcpy(this, &const_cast(v.get()), sizeof(VARIANT)); - } - - private: - void clear() COMET_THROWS_ASSERT - { - HRESULT hr = ::VariantClear(this); - COMET_ASSERT(SUCCEEDED(hr)); - /* Avoid C4189 */ hr; - } - - public: - - //! Destructor - /*! - \note Be aware that the underlying call to VariantClear may fail. - But since we are not allowed to throw any exceptions (Otherwise STL containers cannot guarantee exception safety) - from within a - destructor, a failing VariantClear will be ignored. - Instead we assert for success in debug and ignore in release. - */ - ~variant_t() throw() - { - clear(); - } - - /// \name com_ptr conversion. - //@{ - private: - template inline void create(const com_ptr& x) throw(); - - - public: - template variant_t(const com_ptr& x) throw() - { - init(); - create(x); - } - - template - variant_t& operator=(const com_ptr& x) throw() - { - clear(); create(x); return *this; - } - - //@} - - - //!\name bool Conversion - //@{ - variant_t(bool x) throw() { - init(); - V_VT(this) = VT_BOOL; - V_BOOL(this) = x ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; - } - - operator bool() const throw() - { - if (V_VT(this) == VT_BOOL) return (V_BOOL(this) != COMET_VARIANT_FALSE); - variant_t v(*this, VT_BOOL); - return (V_BOOL(&v) != COMET_VARIANT_FALSE); - } - - variant_t& operator=(bool x) throw() - { - clear(); - V_VT(this) = VT_BOOL; - V_BOOL(this) = x ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; - return *this; - } - - //@} - - //!\name string Conversion - //@{ - variant_t(const bstr_t& s) throw(std::bad_alloc) - { - init(); - bstr_t t(s); - V_BSTR(this) = bstr_t::detach(t); - V_VT(this) = VT_BSTR; - } - - variant_t(const wchar_t* s) throw(std::bad_alloc) - { - init(); - bstr_t t(s); - V_BSTR(this) = bstr_t::detach(t); - V_VT(this) = VT_BSTR; - } - - variant_t(const std::wstring& s) throw(std::bad_alloc) - { - init(); - bstr_t t(s); - V_BSTR(this) = bstr_t::detach(t); - V_VT(this) = VT_BSTR; - } - - variant_t(const std::string& s) throw(std::bad_alloc) - { - init(); - bstr_t bs(s); - V_BSTR(this) = bstr_t::detach(bs); - V_VT(this) = VT_BSTR; - } - - variant_t(const char* x) - { - init(); - V_BSTR(this) = bstr_t::detach(x); - V_VT(this) = VT_BSTR; - } - - /** Attach a BSTR to a variant. - * \code - bstr_t val = L"A large string"; - variant_t(auto_attach(val.detach())); - \endcode - */ - variant_t( const impl::auto_attach_t &bstrVal) - { - V_BSTR(this) = bstrVal.get(); - V_VT(this) = VT_BSTR; - } - -/* operator bstr_t() const - { - if (V_VT(this) == VT_BSTR) return V_BSTR(this); - variant_t v(*this, VT_BSTR); - VARIANT t = v.detach(); - return auto_attach(V_BSTR(&t)); - }*/ - - bstr_t str() const - { - if (V_VT(this) == VT_BSTR) return V_BSTR(this); - if (V_VT(this) == (VT_BSTR | VT_BYREF)) return *V_BSTRREF(this); - if (V_VT(this) == VT_NULL) return bstr_t(); - variant_t v(*this, VT_BSTR); - VARIANT t = v.detach(); - return auto_attach(V_BSTR(&t)); - } - - operator bstr_t() const - { - return str(); - } - - operator std::wstring() const - { - if (V_VT(this) == VT_BSTR) return V_BSTR(this); - if (V_VT(this) == (VT_BSTR | VT_BYREF)) return *V_BSTRREF(this); - if (V_VT(this) == VT_NULL) return std::wstring(); - variant_t v(*this, VT_BSTR); - return V_BSTR(&v) ? std::wstring(V_BSTR(&v)) : std::wstring(); - } - - operator std::string() const - { - return str().s_str(); - } - - variant_t& operator=(const bstr_t& s) - { - variant_t t(s); - swap(t); - return *this; - } - - variant_t& operator=(const wchar_t* s) - { - variant_t t(s); - swap(t); - return *this; - } - - variant_t& operator=(const char* s) - { - variant_t t(s); - swap(t); - return *this; - } - - variant_t& operator=(const std::wstring& s) - { - variant_t t(s); - swap(t); - return *this; - } - - variant_t& operator=(const std::string& s) - { - variant_t t(s); - swap(t); - return *this; - } - - //@} - - //! \name safearray Conversions - //@{ - template - variant_t(const safearray_t &x) - { - safearray_t sa( x ); - V_ARRAY(this) = sa.detach(); - V_VT(this) = (VT_ARRAY | safearray_t::traits::vt); - } - - template - variant_t& operator=(const safearray_t &x) throw() - { - variant_t t(x); - swap(t); - return *this; - } - - /** Allow attaching a SAFEARRAY to a variant. - * \code - * safearray_t array; - * variant_t(auto_attach(array.detach())); - * \endcode - */ - variant_t( const impl::auto_attach_t &psa) - { - V_ARRAY(this) = psa.get(); - VARTYPE vt; - SafeArrayGetVartype( psa.get(), &vt) | raise_exception; - V_VT(this) = VARTYPE(VT_ARRAY | vt) ; - } - - - //@} - - //! \name Numeric Conversions - //@{ - - COMET_VARIANT_CONVERTERS_EXPLICIT(short, I2, as_short); - inline operator short() const { return as_short(); } - COMET_VARIANT_CONVERTERS_EXPLICIT(int, I4, as_int); // Do not use VT_INT, because VariantChangeTypeEx does not support VT_INT. - inline operator int() const { return as_int(); } - COMET_VARIANT_CONVERTERS_EXPLICIT(long, I4, as_long); - inline operator long() const { return as_long(); } - COMET_VARIANT_CONVERTERS_EXPLICIT(LONGLONG, I8, as_longlong); - inline operator LONGLONG() const { return as_longlong(); } - COMET_VARIANT_CONVERTERS_EXPLICIT(float, R4, as_float); - inline operator float() const { return as_float(); } - COMET_VARIANT_CONVERTERS_EXPLICIT(double, R8, as_double); - inline operator double() const { return as_double(); } - // These can't have implicit conversions as they cause confusion when - // assigning some common objects from variant_ts. - COMET_VARIANT_CONVERTERS_EXPLICIT(char, I1, as_char); - COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned char, UI1, as_uchar); - COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned short, UI2, as_ushort); - COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned int, UI4, as_uint); - COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned long, UI4, as_ulong); - COMET_VARIANT_CONVERTERS_EXPLICIT(ULONGLONG, UI8, as_ulonglong); - COMET_VARIANT_CONVERTERS_EXPLICIT(DECIMAL, DECIMAL, as_decimal); - - wchar_t as_wchar_t() const { return as_ushort(); } - //@} - // CONVERTERS(DATE, DATE); - - //! \name Currency Conversions - //@{ - - variant_t(const currency_t &x) throw() - { - V_CY(this) = x.get(); - V_VT(this) = VT_CY; - } - - operator currency_t() const - { - return as_curency(); - } - currency_t as_curency() const - { - if (V_VT(this) == VT_CY) return V_CY(this); - variant_t v(*this, VT_CY); - return V_CY(v.get_var()); - } - - variant_t& operator=(const currency_t &x) throw() - { - clear(); - V_CY(this) = x.get(); - V_VT(this) = VT_CY; - return *this; - } - - //@} - - //! \name Date Conversions - //@{ - - variant_t(const datetime_t &x) throw() - { - V_DATE(this) = x.get(); - V_VT(this) = VT_DATE; - } - - operator datetime_t() const - { - if (V_VT(this) == VT_DATE) return datetime_t(V_DATE(this)); - variant_t v(*this, VT_DATE); - return datetime_t(V_DATE(v.get_var())); - } - - variant_t& operator=(const datetime_t &x) throw() - { - clear(); - V_DATE(this) = x.get(); - V_VT(this) = VT_DATE; - return *this; - } - - //@} - /// swap routine, fast with nothrow guarantee - void swap(variant_t& x) throw() - { - ::tagVARIANT t; - memcpy(&t, this, sizeof(VARIANT)); - memcpy(this, &x, sizeof(VARIANT)); - memcpy(&x, &t, sizeof(VARIANT)); - } - - /// Assignment operator - variant_t& operator=(const variant_t& x) throw(com_error) - { - variant_t t(x); - swap(t); - return *this; - } - - //! \name Comparison operators - //@{ - template - bool operator==(const T& x) const throw(com_error) - { - return operator==( variant_t(x) ); - } - - bool operator==(const variant_t& x) const throw(com_error) - { - if (V_VT(&x) != V_VT(this)) { - if (V_VT(this) == VT_EMPTY || V_VT(&x) == VT_EMPTY) return false; - variant_t tmp(x, V_VT(this), std::nothrow); - if (V_VT(&tmp) != V_VT(this)) return false; - return VARCMP_EQ == (impl::var_cmp(const_cast(get_var()), const_cast(tmp.get_var()), GetThreadLocale(), 0) | raise_exception) ; - } else { - switch (impl::var_cmp(const_cast(get_var()), const_cast(x.get_var()), GetThreadLocale(), 0)) - { - case VARCMP_EQ: - case VARCMP_NULL: - return true; - default: - return false; - } - } - } - - template - bool operator!=(const T& x) const throw(com_error) - { - return !operator==(variant_t(x)); - } - - bool operator!=(const variant_t& x) const throw(com_error) - { - return !operator==(x); - } - - template - bool operator<(const T& x) const throw(com_error) - { - return operator<(variant_t(x)); - } - - bool operator<(const variant_t& x) const throw(com_error) - { - if (V_VT(&x) != V_VT(this)) { - return VARCMP_LT == (impl::var_cmp(const_cast(get_var()), const_cast(variant_t(x, V_VT(this)).get_var()), GetThreadLocale(), 0) | raise_exception); - } else { - return VARCMP_LT == (impl::var_cmp(const_cast(get_var()), const_cast(x.get_var()), GetThreadLocale(), 0) | raise_exception); - } - } - - template - bool operator<=(const T& x) const throw(com_error) - { - return operator<=(variant_t(x)); - } - - template - bool operator>(const T& x) const throw(com_error) - { - return operator>(variant_t(x)); - } - - bool operator>(const variant_t& x) const throw(com_error) - { - if (V_VT(&x) != V_VT(this)) { - return VARCMP_GT == (impl::var_cmp(const_cast(get_var()), const_cast(variant_t(x, V_VT(this)).get_var()), GetThreadLocale(), 0) | raise_exception); - } else { - return VARCMP_GT == (impl::var_cmp(const_cast(get_var()), const_cast(x.get_var()), GetThreadLocale(), 0) | raise_exception); - } - } - - bool operator<=(const variant_t& x) const throw(com_error) - { - return !operator>(x); - } - - template - bool operator>=(const T& x) const throw(com_error) - { - return operator>=(variant_t(x)); - } - - bool operator>=(const variant_t& x) const throw(com_error) - { - return !operator<(x); - } - - //@} - - //! \name Mathematical operators - //@{ - COMET_VARIANT_OPERATOR(+,Add); - COMET_VARIANT_OPERATOR(-,Sub); - COMET_VARIANT_OPERATOR(*,Mul); - COMET_VARIANT_OPERATOR(/,Div); - COMET_VARIANT_OPERATOR(&,And); - COMET_VARIANT_OPERATOR(|,Or); - COMET_VARIANT_OPERATOR(^,Xor); - COMET_VARIANT_OPERATOR(%,Mod); - - variant_t operator-() const - { - VARIANT t; - VarNeg(const_cast(get_var()), &t) | raise_exception; - return auto_attach(t); - } - - void change_type(VARTYPE vartype) throw(com_error) - { - if (vartype != V_VT(this)) - ::VariantChangeTypeEx(get_var(), - get_var(), - GetThreadLocale(), - 0, vartype) | raise_exception; - } - - //@} - - //! Is variant a BSTR - bool is_string() const - { - return VT_BSTR == get_vt(true); - } - - //! Is variant an IDispatch or IUnknown pointer? - bool is_object() const - { - return VT_UNKNOWN == get_vt(true) || VT_DISPATCH == get_vt(true); - } - - /*! Is variant empty. - * This compares strictly to VT_EMPTY. - */ - bool is_empty() const throw() - { - return VT_EMPTY == get_vt(); - } - /*! Is variant 'NULL'. - * This compares strictly to VT_NULL. - */ - bool is_null() const throw() - { - return VT_NULL == get_vt(); - } - - /**! Is variant Nothing. - * Is this a NULL pointer, empty, or null. - * This returns true if the value would cleanly try_cast to a NULL - * com_ptr. - */ - bool is_nothing() const throw() - { - switch (get_vt()) { - case VT_DISPATCH: return NULL == V_DISPATCH(&get()); - case VT_UNKNOWN: return NULL == V_UNKNOWN(&get()); - case VT_DISPATCH|VT_BYREF: return NULL == *V_DISPATCHREF(&get()); - case VT_UNKNOWN|VT_BYREF: return NULL == *V_UNKNOWNREF(&get()); - case VT_EMPTY: - case VT_NULL: return true; - } - return false; - } - - - //! \name Accessor Functions - //@{ - const VARIANT& get() const throw() - { - return *get_var(); - } - - VARTYPE get_vt() const throw() - { - return VARTYPE(V_VT(this)); - } - - VARTYPE get_vt(bool ignore_byref) const throw() - { - return ignore_byref ? VARTYPE(V_VT(this) & ~VT_BYREF) : VARTYPE(V_VT(this)); - } - - static VARIANT detach(variant_t& v) throw() - { - return v.detach(); - } - - VARIANT detach() throw() - { - VARIANT r = *get_var(); - V_VT(this) = VT_EMPTY; - return r; - } - - static const variant_t& create_const_reference(const VARIANT& x) - { - return *reinterpret_cast(&x); - } - - static variant_t& create_reference(VARIANT& x) - { - return *reinterpret_cast(&x); - } - - //! [in] adapter. - /*! - Used when calling raw interfaces that require an [in] VARIANT argument. - - \code - variant_t v; - HRESULT hr = pRawInterface->raw_Method(v.in()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - VARIANT in() const throw() - { - return *get_var(); - } - - //! [in] adapter. - /*! - Used when calling raw interfaces that require an [in] VARIANT* argument. - - \code - variant_t v; - HRESULT hr = pRawInterface->raw_Method(v.in_ptr()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - VARIANT* in_ptr() const throw() - { - return const_cast(get_var()); - } - - //! [out] adapter. - /*! - Used when calling raw interfaces that require an [out] VARIANT * argument. - - \code - variant_t v; - HRESULT hr = pRawInterface->raw_MethodThatReturnsVariant(v.out()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - VARIANT* out() throw() - { - clear(); - new (this) variant_t(); - return get_var(); - } - - //! [in, out] adapter. - /*! - Used when calling raw interfaces that require an [in, out] VARIANT * argument. - - \code - variant_t v; - HRESULT hr = pRawInterface->raw_MethodThatChangesVariant(v.inout()); - \endcode - - Only use this wrapper when forced to deal with raw interface. - */ - VARIANT* inout() throw() - { - return get_var(); - } - //@} - - private: -#define __COMET_VARAIANT_OUT(vartype) case VT_##vartype: os << V_##vartype(this); break -#define __COMET_VARAIANT_OUT_CAST(vartype,cast) case VT_##vartype: os << cast(V_##vartype(this)); break - template - std::basic_ostream &output(std::basic_ostream &os) const - { - switch (V_VT(this)) - { - __COMET_VARAIANT_OUT_CAST(I1, short); - __COMET_VARAIANT_OUT(I2); - __COMET_VARAIANT_OUT(I4); - __COMET_VARAIANT_OUT(INT); - __COMET_VARAIANT_OUT_CAST(UI1, (unsigned short)); - __COMET_VARAIANT_OUT(UI2); - __COMET_VARAIANT_OUT(UI4); - __COMET_VARAIANT_OUT(UINT); - __COMET_VARAIANT_OUT(R4); - __COMET_VARAIANT_OUT(R8); -// __COMET_VARAIANT_OUT_CAST(CY, currency_t::create_const_reference); -// __COMET_VARAIANT_OUT_CAST(DATE, datetime_t::create_const_reference); - default: - os << std::basic_string(*this); - break; - } - return os; - } -#undef __COMET_VARAIANT_OUT - public: - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const variant_t &val) - { - return val.output(os); - } - - friend - std::basic_ostream &operator<<(std::basic_ostream &os, const variant_t &val) - { - return val.output(os); - } - - private: - const VARIANT* get_var() const throw() - { -#ifndef __BORLANDC__ - return static_cast(this); -#else - return reinterpret_cast(this); -#endif - } - - VARIANT* get_var() throw() - { -#ifdef __BORLANDC__ -#if __BORLANDC__ >= 0x0551 - return reinterpret_cast(this); -#else - return static_cast(this); -#endif -#else - return reinterpret_cast(this); -#endif - } - }; - //@} - - COMET_VARIANT_FRIENDS(short); - COMET_VARIANT_FRIENDS(int); - COMET_VARIANT_FRIENDS(long); - COMET_VARIANT_FRIENDS(float); - COMET_VARIANT_FRIENDS(double); - - COMET_VARIANT_FRIENDS(const char*); - COMET_VARIANT_FRIENDS(const wchar_t*); - - COMET_VARIANT_FRIENDS(const std::wstring&); - COMET_VARIANT_FRIENDS(const std::string&); - - COMET_VARIANT_FRIENDS(const DECIMAL&); - -} // namespace - -#include -#include - -namespace comet{ - template inline void variant_t::create(const com_ptr& x) throw() - { - com_ptr< ::IDispatch > p( com_cast(x) ); - if (p != 0) { - V_VT(this) = VT_DISPATCH; - V_DISPATCH(this) = p.detach(); - } else { - V_VT(this) = VT_UNKNOWN; -// VTT_(punkVal) = static_cast<::IUnknown*>(com_ptr(x).detach()); - com_ptr< ::IUnknown > p( com_cast(x) ); - V_UNKNOWN(this) = p.detach(); - } - } - -} - -namespace std { - template<> inline void swap(comet::variant_t& x, comet::variant_t& y) COMET_STD_SWAP_NOTHROW - { - x.swap(y); - } -} - -#undef COMET_VARIANT_CONVERTERS -#undef COMET_VARIANT_CONVERTERS_EX_ -#undef COMET_VARIANT_CONVERTERS_EXPLICIT -#undef COMET_VARIANT_OPERATOR -#undef COMET_VARIANT_FRIENDS - -namespace comet { - /*! \addtogroup COMType - */ - //@{ - - inline bool operator!=(const bstr_t& b, const variant_t& v) - { - return v != b; - } - - inline bool operator==(const bstr_t& b, const variant_t& v) - { - return v == b; - } - - inline bool operator<(const bstr_t& b, const variant_t& v) - { - return v > b; - } - - inline bool operator>(const bstr_t& b, const variant_t& v) - { - return v < b; - } - - inline bool operator<=(const bstr_t& b, const variant_t& v) - { - return v >= b; - } - - inline bool operator>=(const bstr_t& b, const variant_t& v) - { - return v <= b; - } - //@} -} - -#pragma warning(pop) - -#endif diff --git a/EyeTab_SP2/comet/variant_iterator.h b/EyeTab_SP2/comet/variant_iterator.h deleted file mode 100644 index 618df94..0000000 --- a/EyeTab_SP2/comet/variant_iterator.h +++ /dev/null @@ -1,149 +0,0 @@ -/** \file - * Standard C++ iterators wrapping IEnumVARIANT objects. - */ -/* - * Copyright © 2000 Sofus Mortensen - * - * This material is provided "as is", with absolutely no warranty - * expressed or implied. Any use is at your own risk. Permission to - * use or copy this software for any purpose is hereby granted without - * fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * - * This header is part of Comet version 2. - * https://github.com/alamaison/comet - */ - -#ifndef COMET_VARIANT_ITERATOR_H -#define COMET_VARIANT_ITERATOR_H - -#include - -#include -#include - -#include - -namespace comet { - - /** \class variant_iterator enum.h comet/enum.h - * STL style iterator for IEnumVariant interface. - */ - class variant_iterator - { - com_ptr enum_; - variant_t ce_; - public: - /** Constructor. - */ - variant_iterator( const com_ptr& e ) : enum_(e) { - next(); - } - - variant_iterator() {} - - /** Move to next element. - */ - variant_iterator& operator++() { - next(); - return *this; - } - - bool operator!=(const variant_iterator& v) { - if (!v.enum_.is_null()) - throw std::logic_error( - "variant_iterator comparison does not work"); - - return !enum_.is_null(); - } - - /** Move to next element (post increment). - */ - variant_iterator operator++(int) { - variant_iterator t(*this); - operator++(); - return t; - } - - /** Current element. - */ - variant_t& operator*() { - return ce_; - } - private: - void next() { - if (enum_) { - unsigned long x = 0; - enum_->Next(1, ce_.out(), &x) | raise_exception; - if (x == 0) enum_ = 0; - } - } - }; - - /** \class itf_iterator enum.h comet/enum.h - * STL style Iterator for IEnumVARIANT interface returning a contained - * interface pointer. - */ - template class itf_iterator - { - com_ptr enum_; - com_ptr p_; - public: - /** Constructor. - */ - itf_iterator( const com_ptr& e ) : enum_(e) { - next(); - } - - itf_iterator() {} - - /** Move to next element. - */ - itf_iterator& operator++() { - next(); - return *this; - } - - bool operator!=(const itf_iterator& v) { - if (v.enum_) - throw std::logic_error( - "itf_iterator comparison does not work"); - - return enum_ != 0; - } - - /** Move to next element. - */ - itf_iterator operator++(int) { - itf_iterator t(*this); - operator++(); - return t; - } - - /** Access element. - */ - com_ptr& operator*() { - return p_; - } - private: - void next() { - if (enum_) { - unsigned long x = 0; - variant_t v; - enum_->Next(1, v.out(), &x) | raise_exception; - if (x == 0) { - enum_ = 0; - p_ = 0; - } - else { - p_ = try_cast(v); - } - } - } - }; - -} - -#endif diff --git a/EyeTab_SP2/comet_task_ptr.h b/EyeTab_SP2/comet_task_ptr.h deleted file mode 100644 index 62fe384..0000000 --- a/EyeTab_SP2/comet_task_ptr.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef comet_task_ptr_h__ -#define comet_task_ptr_h__ - -#include - -namespace comet { - template - class task_ptr { - public: - task_ptr() : _ptr(0) {} - task_ptr(T* ptr) : _ptr(ptr) {} - - task_ptr( const task_ptr& other ); // non construction-copyable - task_ptr( task_ptr&& other ); // non construction-movable - task_ptr& operator=( const task_ptr& ); // non copyable - task_ptr& operator=( task_ptr&& ); // non movable - - ~task_ptr() { - free(); - } - - void free() { - if (_ptr) { - CoTaskMemFree(_ptr); - } - _ptr = 0; - } - - bool alloc(size_t size) { - free(); - _ptr = ::CoTaskMemAlloc(size); - return _ptr != NULL; - } - - bool realloc(size_t size) { - _ptr = ::CoTaskMemRealloc(_ptr, size); - return _ptr != NULL; - } - - T* in() { - return _ptr; - } - - T** inout() { - return &_ptr; - } - - T** out() { - free(); - return &_ptr; - } - - typedef task_ptr _Myt; - _TYPEDEF_BOOL_TYPE; - _OPERATOR_BOOL() const _NOEXCEPT - { // test for non-null pointer - return (_ptr != 0 ? _CONVERTIBLE_TO_TRUE : 0); - } - - T& operator[](size_t i) { - return _ptr[i]; - } - const T& operator[](size_t i) const { - return _ptr[i]; - } - T* operator->() { - return _ptr; - } - T operator*() { - return _ptr; - } - - private: - T* _ptr; - }; -} - -#endif // comet_task_ptr_h__ diff --git a/EyeTab_SP2/format.cc b/EyeTab_SP2/format.cc deleted file mode 100644 index 8bb7c6b..0000000 --- a/EyeTab_SP2/format.cc +++ /dev/null @@ -1,733 +0,0 @@ -/* - String formatting library for C++ - - Copyright (c) 2012, Victor Zverovich - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// Disable useless MSVC warnings. -#undef _CRT_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#undef _SCL_SECURE_NO_WARNINGS -#define _SCL_SECURE_NO_WARNINGS - -#include "format.h" - -#include -#include -#include - -using fmt::ULongLong; - -namespace { - -#ifndef _MSC_VER - -inline int SignBit(double value) { - // When compiled in C++11 mode signbit is no longer a macro but a function - // defined in namespace std and the macro is undefined. - using namespace std; - return signbit(value); -} - -inline int IsInf(double x) { -#ifdef isinf - return isinf(x); -#else - return std::isinf(x); -#endif -} - -#define FMT_SNPRINTF snprintf - -#else // _MSC_VER - -inline int SignBit(double value) { - if (value < 0) return 1; - if (value == value) return 0; - int dec = 0, sign = 0; - char buffer[2]; // The buffer size must be >= 2 or _ecvt_s will fail. - _ecvt_s(buffer, sizeof(buffer), value, 0, &dec, &sign); - return sign; -} - -inline int IsInf(double x) { return !_finite(x); } - -inline int FMT_SNPRINTF(char *buffer, size_t size, const char *format, ...) { - va_list args; - va_start(args, format); - int result = vsnprintf_s(buffer, size, _TRUNCATE, format, args); - va_end(args); - return result; -} - -#endif // _MSC_VER - -const char RESET_COLOR[] = "\x1b[0m"; -} - -template -int fmt::internal::CharTraits::FormatFloat( - char *buffer, std::size_t size, const char *format, - unsigned width, int precision, T value) { - if (width == 0) { - return precision < 0 ? - FMT_SNPRINTF(buffer, size, format, value) : - FMT_SNPRINTF(buffer, size, format, precision, value); - } - return precision < 0 ? - FMT_SNPRINTF(buffer, size, format, width, value) : - FMT_SNPRINTF(buffer, size, format, width, precision, value); -} - -template -int fmt::internal::CharTraits::FormatFloat( - wchar_t *buffer, std::size_t size, const wchar_t *format, - unsigned width, int precision, T value) { - if (width == 0) { - return precision < 0 ? - swprintf(buffer, size, format, value) : - swprintf(buffer, size, format, precision, value); - } - return precision < 0 ? - swprintf(buffer, size, format, width, value) : - swprintf(buffer, size, format, width, precision, value); -} - -const char fmt::internal::DIGITS[] = - "0001020304050607080910111213141516171819" - "2021222324252627282930313233343536373839" - "4041424344454647484950515253545556575859" - "6061626364656667686970717273747576777879" - "8081828384858687888990919293949596979899"; - -#define FMT_POWERS_OF_10(factor) \ - factor * 10, \ - factor * 100, \ - factor * 1000, \ - factor * 10000, \ - factor * 100000, \ - factor * 1000000, \ - factor * 10000000, \ - factor * 100000000, \ - factor * 1000000000 - -const uint32_t fmt::internal::POWERS_OF_10_32[] = {0, FMT_POWERS_OF_10(1)}; -const uint64_t fmt::internal::POWERS_OF_10_64[] = { - 0, - FMT_POWERS_OF_10(1), - FMT_POWERS_OF_10(ULongLong(1000000000)), - // Multiply several constants instead of using a single long long constants - // to avoid warnings about C++98 not supporting long long. - ULongLong(1000000000) * ULongLong(1000000000) * 10 -}; - -void fmt::internal::ReportUnknownType(char code, const char *type) { - if (std::isprint(static_cast(code))) { - throw fmt::FormatError(fmt::str( - fmt::Format("unknown format code '{}' for {}") << code << type)); - } - throw fmt::FormatError( - fmt::str(fmt::Format("unknown format code '\\x{:02x}' for {}") - << static_cast(code) << type)); -} - - -// Fills the padding around the content and returns the pointer to the -// content area. -template -typename fmt::BasicWriter::CharPtr - fmt::BasicWriter::FillPadding(CharPtr buffer, - unsigned total_size, std::size_t content_size, wchar_t fill) { - std::size_t padding = total_size - content_size; - std::size_t left_padding = padding / 2; - Char fill_char = static_cast(fill); - std::fill_n(buffer, left_padding, fill_char); - buffer += left_padding; - CharPtr content = buffer; - std::fill_n(buffer + content_size, padding - left_padding, fill_char); - return content; -} - -template -typename fmt::BasicWriter::CharPtr - fmt::BasicWriter::PrepareFilledBuffer( - unsigned size, const AlignSpec &spec, char sign) { - unsigned width = spec.width(); - if (width <= size) { - CharPtr p = GrowBuffer(size); - *p = sign; - return p + size - 1; - } - CharPtr p = GrowBuffer(width); - CharPtr end = p + width; - Alignment align = spec.align(); - // TODO: error if fill is not convertible to Char - Char fill = static_cast(spec.fill()); - if (align == ALIGN_LEFT) { - *p = sign; - p += size; - std::fill(p, end, fill); - } else if (align == ALIGN_CENTER) { - p = FillPadding(p, width, size, fill); - *p = sign; - p += size; - } else { - if (align == ALIGN_NUMERIC) { - if (sign) { - *p++ = sign; - --size; - } - } else { - *(end - size) = sign; - } - std::fill(p, end - size, fill); - p = end; - } - return p - 1; -} - -template -template -void fmt::BasicWriter::FormatDouble( - T value, const FormatSpec &spec, int precision) { - // Check type. - char type = spec.type(); - bool upper = false; - switch (type) { - case 0: - type = 'g'; - break; - case 'e': case 'f': case 'g': - break; - case 'F': -#ifdef _MSC_VER - // MSVC's printf doesn't support 'F'. - type = 'f'; -#endif - // Fall through. - case 'E': case 'G': - upper = true; - break; - default: - internal::ReportUnknownType(type, "double"); - break; - } - - char sign = 0; - // Use SignBit instead of value < 0 because the latter is always - // false for NaN. - if (SignBit(value)) { - sign = '-'; - value = -value; - } else if (spec.sign_flag()) { - sign = spec.plus_flag() ? '+' : ' '; - } - - if (value != value) { - // Format NaN ourselves because sprintf's output is not consistent - // across platforms. - std::size_t size = 4; - const char *nan = upper ? " NAN" : " nan"; - if (!sign) { - --size; - ++nan; - } - CharPtr out = FormatString(nan, size, spec); - if (sign) - *out = sign; - return; - } - - if (IsInf(value)) { - // Format infinity ourselves because sprintf's output is not consistent - // across platforms. - std::size_t size = 4; - const char *inf = upper ? " INF" : " inf"; - if (!sign) { - --size; - ++inf; - } - CharPtr out = FormatString(inf, size, spec); - if (sign) - *out = sign; - return; - } - - std::size_t offset = buffer_.size(); - unsigned width = spec.width(); - if (sign) { - buffer_.reserve(buffer_.size() + (std::max)(width, 1u)); - if (width > 0) - --width; - ++offset; - } - - // Build format string. - enum { MAX_FORMAT_SIZE = 10}; // longest format: %#-*.*Lg - Char format[MAX_FORMAT_SIZE]; - Char *format_ptr = format; - *format_ptr++ = '%'; - unsigned width_for_sprintf = width; - if (spec.hash_flag()) - *format_ptr++ = '#'; - if (spec.align() == ALIGN_CENTER) { - width_for_sprintf = 0; - } else { - if (spec.align() == ALIGN_LEFT) - *format_ptr++ = '-'; - if (width != 0) - *format_ptr++ = '*'; - } - if (precision >= 0) { - *format_ptr++ = '.'; - *format_ptr++ = '*'; - } - if (internal::IsLongDouble::VALUE) - *format_ptr++ = 'L'; - *format_ptr++ = type; - *format_ptr = '\0'; - - // Format using snprintf. - Char fill = static_cast(spec.fill()); - for (;;) { - std::size_t size = buffer_.capacity() - offset; - Char *start = &buffer_[offset]; - int n = internal::CharTraits::FormatFloat( - start, size, format, width_for_sprintf, precision, value); - if (n >= 0 && offset + n < buffer_.capacity()) { - if (sign) { - if ((spec.align() != ALIGN_RIGHT && spec.align() != ALIGN_DEFAULT) || - *start != ' ') { - *(start - 1) = sign; - sign = 0; - } else { - *(start - 1) = fill; - } - ++n; - } - if (spec.align() == ALIGN_CENTER && - spec.width() > static_cast(n)) { - unsigned width = spec.width(); - CharPtr p = GrowBuffer(width); - std::copy(p, p + n, p + (width - n) / 2); - FillPadding(p, spec.width(), n, fill); - return; - } - if (spec.fill() != ' ' || sign) { - while (*start == ' ') - *start++ = fill; - if (sign) - *(start - 1) = sign; - } - GrowBuffer(n); - return; - } - buffer_.reserve(n >= 0 ? offset + n + 1 : 2 * buffer_.capacity()); - } -} - -// Throws Exception(message) if format contains '}', otherwise throws -// FormatError reporting unmatched '{'. The idea is that unmatched '{' -// should override other errors. -template -void fmt::BasicFormatter::ReportError( - const Char *s, StringRef message) const { - for (int num_open_braces = num_open_braces_; *s; ++s) { - if (*s == '{') { - ++num_open_braces; - } else if (*s == '}') { - if (--num_open_braces == 0) - throw fmt::FormatError(message); - } - } - throw fmt::FormatError("unmatched '{' in format"); -} - -// Parses an unsigned integer advancing s to the end of the parsed input. -// This function assumes that the first character of s is a digit. -template -unsigned fmt::BasicFormatter::ParseUInt(const Char *&s) const { - assert('0' <= *s && *s <= '9'); - unsigned value = 0; - do { - unsigned new_value = value * 10 + (*s++ - '0'); - if (new_value < value) // Check if value wrapped around. - ReportError(s, "number is too big in format"); - value = new_value; - } while ('0' <= *s && *s <= '9'); - return value; -} - -template -inline const typename fmt::BasicFormatter::Arg - &fmt::BasicFormatter::ParseArgIndex(const Char *&s) { - unsigned arg_index = 0; - if (*s < '0' || *s > '9') { - if (*s != '}' && *s != ':') - ReportError(s, "invalid argument index in format string"); - if (next_arg_index_ < 0) { - ReportError(s, - "cannot switch from manual to automatic argument indexing"); - } - arg_index = next_arg_index_++; - } else { - if (next_arg_index_ > 0) { - ReportError(s, - "cannot switch from automatic to manual argument indexing"); - } - next_arg_index_ = -1; - arg_index = ParseUInt(s); - } - if (arg_index >= args_.size()) - ReportError(s, "argument index is out of range in format"); - return *args_[arg_index]; -} - -template -void fmt::BasicFormatter::CheckSign(const Char *&s, const Arg &arg) { - char sign = static_cast(*s); - if (arg.type > LAST_NUMERIC_TYPE) { - ReportError(s, - Format("format specifier '{}' requires numeric argument") << sign); - } - if (arg.type == UINT || arg.type == ULONG || arg.type == ULONG_LONG) { - ReportError(s, - Format("format specifier '{}' requires signed argument") << sign); - } - ++s; -} - -template -void fmt::BasicFormatter::DoFormat() { - const Char *start = format_; - format_ = 0; - next_arg_index_ = 0; - const Char *s = start; - BasicWriter &writer = *writer_; - while (*s) { - Char c = *s++; - if (c != '{' && c != '}') continue; - if (*s == c) { - writer.buffer_.append(start, s); - start = ++s; - continue; - } - if (c == '}') - throw FormatError("unmatched '}' in format"); - num_open_braces_= 1; - writer.buffer_.append(start, s - 1); - - const Arg &arg = ParseArgIndex(s); - - FormatSpec spec; - int precision = -1; - if (*s == ':') { - ++s; - - // Parse fill and alignment. - if (Char c = *s) { - const Char *p = s + 1; - spec.align_ = ALIGN_DEFAULT; - do { - switch (*p) { - case '<': - spec.align_ = ALIGN_LEFT; - break; - case '>': - spec.align_ = ALIGN_RIGHT; - break; - case '=': - spec.align_ = ALIGN_NUMERIC; - break; - case '^': - spec.align_ = ALIGN_CENTER; - break; - } - if (spec.align_ != ALIGN_DEFAULT) { - if (p != s) { - if (c == '}') break; - if (c == '{') - ReportError(s, "invalid fill character '{'"); - s += 2; - spec.fill_ = c; - } else ++s; - if (spec.align_ == ALIGN_NUMERIC && arg.type > LAST_NUMERIC_TYPE) - ReportError(s, "format specifier '=' requires numeric argument"); - break; - } - } while (--p >= s); - } - - // Parse sign. - switch (*s) { - case '+': - CheckSign(s, arg); - spec.flags_ |= SIGN_FLAG | PLUS_FLAG; - break; - case '-': - CheckSign(s, arg); - break; - case ' ': - CheckSign(s, arg); - spec.flags_ |= SIGN_FLAG; - break; - } - - if (*s == '#') { - if (arg.type > LAST_NUMERIC_TYPE) - ReportError(s, "format specifier '#' requires numeric argument"); - spec.flags_ |= HASH_FLAG; - ++s; - } - - // Parse width and zero flag. - if ('0' <= *s && *s <= '9') { - if (*s == '0') { - if (arg.type > LAST_NUMERIC_TYPE) - ReportError(s, "format specifier '0' requires numeric argument"); - spec.align_ = ALIGN_NUMERIC; - spec.fill_ = '0'; - } - // Zero may be parsed again as a part of the width, but it is simpler - // and more efficient than checking if the next char is a digit. - unsigned value = ParseUInt(s); - if (value > INT_MAX) - ReportError(s, "number is too big in format"); - spec.width_ = value; - } - - // Parse precision. - if (*s == '.') { - ++s; - precision = 0; - if ('0' <= *s && *s <= '9') { - unsigned value = ParseUInt(s); - if (value > INT_MAX) - ReportError(s, "number is too big in format"); - precision = value; - } else if (*s == '{') { - ++s; - ++num_open_braces_; - const Arg &precision_arg = ParseArgIndex(s); - ULongLong value = 0; - switch (precision_arg.type) { - case INT: - if (precision_arg.int_value < 0) - ReportError(s, "negative precision in format"); - value = precision_arg.int_value; - break; - case UINT: - value = precision_arg.uint_value; - break; - case LONG: - if (precision_arg.long_value < 0) - ReportError(s, "negative precision in format"); - value = precision_arg.long_value; - break; - case ULONG: - value = precision_arg.ulong_value; - break; - case LONG_LONG: - if (precision_arg.long_long_value < 0) - ReportError(s, "negative precision in format"); - value = precision_arg.long_long_value; - break; - case ULONG_LONG: - value = precision_arg.ulong_long_value; - break; - default: - ReportError(s, "precision is not integer"); - } - if (value > INT_MAX) - ReportError(s, "number is too big in format"); - precision = static_cast(value); - if (*s++ != '}') - throw FormatError("unmatched '{' in format"); - --num_open_braces_; - } else { - ReportError(s, "missing precision in format"); - } - if (arg.type != DOUBLE && arg.type != LONG_DOUBLE) { - ReportError(s, - "precision specifier requires floating-point argument"); - } - } - - // Parse type. - if (*s != '}' && *s) - spec.type_ = static_cast(*s++); - } - - if (*s++ != '}') - throw FormatError("unmatched '{' in format"); - start = s; - - // Format argument. - switch (arg.type) { - case INT: - FormatInt(arg.int_value, spec); - break; - case UINT: - FormatInt(arg.uint_value, spec); - break; - case LONG: - FormatInt(arg.long_value, spec); - break; - case ULONG: - FormatInt(arg.ulong_value, spec); - break; - case LONG_LONG: - FormatInt(arg.long_long_value, spec); - break; - case ULONG_LONG: - FormatInt(arg.ulong_long_value, spec); - break; - case DOUBLE: - writer.FormatDouble(arg.double_value, spec, precision); - break; - case LONG_DOUBLE: - writer.FormatDouble(arg.long_double_value, spec, precision); - break; - case CHAR: { - if (spec.type_ && spec.type_ != 'c') - internal::ReportUnknownType(spec.type_, "char"); - typedef typename BasicWriter::CharPtr CharPtr; - CharPtr out = CharPtr(); - if (spec.width_ > 1) { - Char fill = static_cast(spec.fill()); - out = writer.GrowBuffer(spec.width_); - if (spec.align_ == ALIGN_RIGHT) { - std::fill_n(out, spec.width_ - 1, fill); - out += spec.width_ - 1; - } else if (spec.align_ == ALIGN_CENTER) { - out = writer.FillPadding(out, spec.width_, 1, fill); - } else { - std::fill_n(out + 1, spec.width_ - 1, fill); - } - } else { - out = writer.GrowBuffer(1); - } - *out = arg.int_value; - break; - } - case STRING: { - if (spec.type_ && spec.type_ != 's') - internal::ReportUnknownType(spec.type_, "string"); - const Char *str = arg.string.value; - std::size_t size = arg.string.size; - if (size == 0) { - if (!str) - throw FormatError("string pointer is null"); - if (*str) - size = std::char_traits::length(str); - } - writer.FormatString(str, size, spec); - break; - } - case POINTER: - if (spec.type_ && spec.type_ != 'p') - internal::ReportUnknownType(spec.type_, "pointer"); - spec.flags_= HASH_FLAG; - spec.type_ = 'x'; - FormatInt(reinterpret_cast(arg.pointer_value), spec); - break; - case CUSTOM: - if (spec.type_) - internal::ReportUnknownType(spec.type_, "object"); - arg.custom.format(writer, arg.custom.value, spec); - break; - default: - assert(false); - break; - } - } - writer.buffer_.append(start, s); -} - -void fmt::ColorWriter::operator()(const fmt::BasicWriter &w) const { - char escape[] = "\x1b[30m"; - escape[3] = '0' + color_; - std::fputs(escape, stdout); - std::fwrite(w.data(), 1, w.size(), stdout); - std::fputs(RESET_COLOR, stdout); -} - -// Explicit instantiations for char. - -template void fmt::BasicWriter::FormatDouble( - double value, const FormatSpec &spec, int precision); - -template void fmt::BasicWriter::FormatDouble( - long double value, const FormatSpec &spec, int precision); - -template fmt::BasicWriter::CharPtr - fmt::BasicWriter::FillPadding(CharPtr buffer, - unsigned total_size, std::size_t content_size, wchar_t fill); - -template fmt::BasicWriter::CharPtr - fmt::BasicWriter::PrepareFilledBuffer( - unsigned size, const AlignSpec &spec, char sign); - -template void fmt::BasicFormatter::ReportError( - const char *s, StringRef message) const; - -template unsigned fmt::BasicFormatter::ParseUInt(const char *&s) const; - -template const fmt::BasicFormatter::Arg - &fmt::BasicFormatter::ParseArgIndex(const char *&s); - -template void fmt::BasicFormatter::CheckSign( - const char *&s, const Arg &arg); - -template void fmt::BasicFormatter::DoFormat(); - -// Explicit instantiations for wchar_t. - -template void fmt::BasicWriter::FormatDouble( - double value, const FormatSpec &spec, int precision); - -template void fmt::BasicWriter::FormatDouble( - long double value, const FormatSpec &spec, int precision); - -template fmt::BasicWriter::CharPtr - fmt::BasicWriter::FillPadding(CharPtr buffer, - unsigned total_size, std::size_t content_size, wchar_t fill); - -template fmt::BasicWriter::CharPtr - fmt::BasicWriter::PrepareFilledBuffer( - unsigned size, const AlignSpec &spec, char sign); - -template void fmt::BasicFormatter::ReportError( - const wchar_t *s, StringRef message) const; - -template unsigned fmt::BasicFormatter::ParseUInt( - const wchar_t *&s) const; - -template const fmt::BasicFormatter::Arg - &fmt::BasicFormatter::ParseArgIndex(const wchar_t *&s); - -template void fmt::BasicFormatter::CheckSign( - const wchar_t *&s, const Arg &arg); - -template void fmt::BasicFormatter::DoFormat(); diff --git a/EyeTab_SP2/format.h b/EyeTab_SP2/format.h deleted file mode 100644 index c4b91bc..0000000 --- a/EyeTab_SP2/format.h +++ /dev/null @@ -1,1500 +0,0 @@ -/* - String formatting library for C++ - - Copyright (c) 2012, Victor Zverovich - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef FORMAT_H_ -#define FORMAT_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __GNUC__ -# define FMT_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) -# define FMT_GCC_EXTENSION __extension__ -#else -# define FMT_GCC_EXTENSION -#endif - -// Compatibility with compilers other than clang. -#ifndef __has_feature -# define __has_feature(x) 0 -# define __has_builtin(x) 0 -#endif - -#ifndef FMT_USE_INITIALIZER_LIST -# define FMT_USE_INITIALIZER_LIST \ - (__has_feature(cxx_generalized_initializers) || \ - (FMT_GCC_VERSION >= 404 && __cplusplus >= 201103) || _MSC_VER >= 1800) -#endif - -#if FMT_USE_INITIALIZER_LIST -# include -#endif - -// Define FMT_USE_NOEXCEPT to make format use noexcept (C++11 feature). -#if FMT_USE_NOEXCEPT || __has_feature(cxx_noexcept) || \ - (FMT_GCC_VERSION >= 408 && __cplusplus >= 201103) -# define FMT_NOEXCEPT(expr) noexcept(expr) -#else -# define FMT_NOEXCEPT(expr) -#endif - -#if _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4521) -#endif - -namespace fmt { - -// Fix the warning about long long on older versions of GCC -// that don't support the diagnostic pragma. -FMT_GCC_EXTENSION typedef long long LongLong; -FMT_GCC_EXTENSION typedef unsigned long long ULongLong; - -namespace internal { - -#if _SECURE_SCL -template -inline stdext::checked_array_iterator CheckPtr(T *ptr, std::size_t size) { - return stdext::checked_array_iterator(ptr, size); -} -#else -template -inline T *CheckPtr(T *ptr, std::size_t) { return ptr; } -#endif - -// A simple array for POD types with the first SIZE elements stored in -// the object itself. It supports a subset of std::vector's operations. -template -class Array { - private: - std::size_t size_; - std::size_t capacity_; - T *ptr_; - T data_[SIZE]; - - void Grow(std::size_t size); - - // Do not implement! - Array(const Array &); - void operator=(const Array &); - - public: - Array() : size_(0), capacity_(SIZE), ptr_(data_) {} - ~Array() { - if (ptr_ != data_) delete [] ptr_; - } - - // Returns the size of this array. - std::size_t size() const { return size_; } - - // Returns the capacity of this array. - std::size_t capacity() const { return capacity_; } - - // Resizes the array. If T is a POD type new elements are not initialized. - void resize(std::size_t new_size) { - if (new_size > capacity_) - Grow(new_size); - size_ = new_size; - } - - void reserve(std::size_t capacity) { - if (capacity > capacity_) - Grow(capacity); - } - - void clear() { size_ = 0; } - - void push_back(const T &value) { - if (size_ == capacity_) - Grow(size_ + 1); - ptr_[size_++] = value; - } - - // Appends data to the end of the array. - void append(const T *begin, const T *end); - - T &operator[](std::size_t index) { return ptr_[index]; } - const T &operator[](std::size_t index) const { return ptr_[index]; } -}; - -template -void Array::Grow(std::size_t size) { - capacity_ = (std::max)(size, capacity_ + capacity_ / 2); - T *p = new T[capacity_]; - std::copy(ptr_, ptr_ + size_, CheckPtr(p, capacity_)); - if (ptr_ != data_) - delete [] ptr_; - ptr_ = p; -} - -template -void Array::append(const T *begin, const T *end) { - std::ptrdiff_t num_elements = end - begin; - if (size_ + num_elements > capacity_) - Grow(num_elements); - std::copy(begin, end, CheckPtr(ptr_, capacity_) + size_); - size_ += num_elements; -} - -template -class CharTraits; - -template -class BasicCharTraits { - public: -#if _SECURE_SCL - typedef stdext::checked_array_iterator CharPtr; -#else - typedef Char *CharPtr; -#endif -}; - -template <> -class CharTraits : public BasicCharTraits { - private: - // Conversion from wchar_t to char is not supported. - static char ConvertChar(wchar_t); - - public: - typedef const wchar_t *UnsupportedStrType; - - static char ConvertChar(char value) { return value; } - - template - static int FormatFloat(char *buffer, std::size_t size, - const char *format, unsigned width, int precision, T value); -}; - -template <> -class CharTraits : public BasicCharTraits { - public: - typedef const char *UnsupportedStrType; - - static wchar_t ConvertChar(char value) { return value; } - static wchar_t ConvertChar(wchar_t value) { return value; } - - template - static int FormatFloat(wchar_t *buffer, std::size_t size, - const wchar_t *format, unsigned width, int precision, T value); -}; - -// Selects uint32_t if FitsIn32Bits is true, uint64_t otherwise. -template -struct TypeSelector { typedef uint32_t Type; }; - -template <> -struct TypeSelector { typedef uint64_t Type; }; - -// Checks if a number is negative - used to avoid warnings. -template -struct SignChecker { - template - static bool IsNegative(T) { return false; } -}; - -template <> -struct SignChecker { - template - static bool IsNegative(T value) { return value < 0; } -}; - -// Returns true if value is negative, false otherwise. -// Same as (value < 0) but doesn't produce warnings if T is an unsigned type. -template -inline bool IsNegative(T value) { - return SignChecker::is_signed>::IsNegative(value); -} - -template -struct IntTraits { - // Smallest of uint32_t and uint64_t that is large enough to represent - // all values of T. - typedef typename - TypeSelector::digits <= 32>::Type MainType; -}; - -template -struct IsLongDouble { enum {VALUE = 0}; }; - -template <> -struct IsLongDouble { enum {VALUE = 1}; }; - -void ReportUnknownType(char code, const char *type); - -extern const uint32_t POWERS_OF_10_32[]; -extern const uint64_t POWERS_OF_10_64[]; - -#if FMT_GCC_VERSION >= 400 || __has_builtin(__builtin_clzll) -// Returns the number of decimal digits in n. Leading zeros are not counted -// except for n == 0 in which case CountDigits returns 1. -inline unsigned CountDigits(uint64_t n) { - // Based on http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 - // and the benchmark https://github.com/localvoid/cxx-benchmark-count-digits. - uint64_t t = (64 - __builtin_clzll(n | 1)) * 1233 >> 12; - return t - (n < POWERS_OF_10_64[t]) + 1; -} -# if FMT_GCC_VERSION >= 400 || __has_builtin(__builtin_clz) -// Optional version of CountDigits for better performance on 32-bit platforms. -inline unsigned CountDigits(uint32_t n) { - uint32_t t = (32 - __builtin_clz(n | 1)) * 1233 >> 12; - return t - (n < POWERS_OF_10_32[t]) + 1; -} -# endif -#else -// Slower version of CountDigits used when __builtin_clz is not available. -inline unsigned CountDigits(uint64_t n) { - unsigned count = 1; - for (;;) { - // Integer division is slow so do it for a group of four digits instead - // of for every digit. The idea comes from the talk by Alexandrescu - // "Three Optimization Tips for C++". See speed-test for a comparison. - if (n < 10) return count; - if (n < 100) return count + 1; - if (n < 1000) return count + 2; - if (n < 10000) return count + 3; - n /= 10000u; - count += 4; - } -} -#endif - -extern const char DIGITS[]; - -template -class FormatterProxy; - -// Formats a decimal unsigned integer value writing into buffer. -template -void FormatDecimal(Char *buffer, UInt value, unsigned num_digits) { - --num_digits; - while (value >= 100) { - // Integer division is slow so do it for a group of two digits instead - // of for every digit. The idea comes from the talk by Alexandrescu - // "Three Optimization Tips for C++". See speed-test for a comparison. - unsigned index = (value % 100) * 2; - value /= 100; - buffer[num_digits] = internal::DIGITS[index + 1]; - buffer[num_digits - 1] = internal::DIGITS[index]; - num_digits -= 2; - } - if (value < 10) { - *buffer = static_cast('0' + value); - return; - } - unsigned index = static_cast(value * 2); - buffer[1] = internal::DIGITS[index + 1]; - buffer[0] = internal::DIGITS[index]; -} -} - -/** - \rst - A string reference. It can be constructed from a C string, ``std::string`` - or as a result of a formatting operation. It is most useful as a parameter - type to allow passing different types of strings in a function, for example:: - - Formatter<> Format(StringRef format); - - Format("{}") << 42; - Format(std::string("{}")) << 42; - Format(Format("{{}}")) << 42; - \endrst - */ -template -class BasicStringRef { - private: - const Char *data_; - mutable std::size_t size_; - - public: - /** - Constructs a string reference object from a C string and a size. - If *size* is zero, which is the default, the size is computed with - `strlen`. - */ - BasicStringRef(const Char *s, std::size_t size = 0) : data_(s), size_(size) {} - - /** - Constructs a string reference from an `std::string` object. - */ - BasicStringRef(const std::basic_string &s) - : data_(s.c_str()), size_(s.size()) {} - - /** - Converts a string reference to an `std::string` object. - */ - operator std::basic_string() const { - return std::basic_string(data_, size()); - } - - /** - Returns the pointer to a C string. - */ - const Char *c_str() const { return data_; } - - /** - Returns the string size. - */ - std::size_t size() const { - if (size_ == 0) size_ = std::char_traits::length(data_); - return size_; - } -}; - -typedef BasicStringRef StringRef; -typedef BasicStringRef WStringRef; - -class FormatError : public std::runtime_error { - public: - explicit FormatError(const std::string &message) - : std::runtime_error(message) {} -}; - -enum Alignment { - ALIGN_DEFAULT, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, ALIGN_NUMERIC -}; - -// Flags. -enum { SIGN_FLAG = 1, PLUS_FLAG = 2, HASH_FLAG = 4 }; - -// An empty format specifier. -struct EmptySpec {}; - -// A type specifier. -template -struct TypeSpec : EmptySpec { - Alignment align() const { return ALIGN_DEFAULT; } - unsigned width() const { return 0; } - - bool sign_flag() const { return false; } - bool plus_flag() const { return false; } - bool hash_flag() const { return false; } - - char type() const { return TYPE; } - char fill() const { return ' '; } -}; - -// A width specifier. -struct WidthSpec { - unsigned width_; - // Fill is always wchar_t and cast to char if necessary to avoid having - // two specialization of WidthSpec and its subclasses. - wchar_t fill_; - - WidthSpec(unsigned width, wchar_t fill) : width_(width), fill_(fill) {} - - unsigned width() const { return width_; } - wchar_t fill() const { return fill_; } -}; - -// An alignment specifier. -struct AlignSpec : WidthSpec { - Alignment align_; - - AlignSpec(unsigned width, wchar_t fill, Alignment align = ALIGN_DEFAULT) - : WidthSpec(width, fill), align_(align) {} - - Alignment align() const { return align_; } -}; - -// An alignment and type specifier. -template -struct AlignTypeSpec : AlignSpec { - AlignTypeSpec(unsigned width, wchar_t fill) : AlignSpec(width, fill) {} - - bool sign_flag() const { return false; } - bool plus_flag() const { return false; } - bool hash_flag() const { return false; } - - char type() const { return TYPE; } -}; - -// A full format specifier. -struct FormatSpec : AlignSpec { - unsigned flags_; - char type_; - - FormatSpec(unsigned width = 0, char type = 0, wchar_t fill = ' ') - : AlignSpec(width, fill), flags_(0), type_(type) {} - - bool sign_flag() const { return (flags_ & SIGN_FLAG) != 0; } - bool plus_flag() const { return (flags_ & PLUS_FLAG) != 0; } - bool hash_flag() const { return (flags_ & HASH_FLAG) != 0; } - - char type() const { return type_; } -}; - -// An integer format specifier. -template , typename Char = char> -class IntFormatSpec : public SpecT { - private: - T value_; - - public: - IntFormatSpec(T value, const SpecT &spec = SpecT()) - : SpecT(spec), value_(value) {} - - T value() const { return value_; } -}; - -// A string format specifier. -template -class StrFormatSpec : public AlignSpec { - private: - const T *str_; - - public: - StrFormatSpec(const T *str, unsigned width, wchar_t fill) - : AlignSpec(width, fill), str_(str) {} - - const T *str() const { return str_; } -}; - -/** - Returns an integer format specifier to format the value in base 2. - */ -IntFormatSpec > bin(int value); - -/** - Returns an integer format specifier to format the value in base 8. - */ -IntFormatSpec > oct(int value); - -/** - Returns an integer format specifier to format the value in base 16 using - lower-case letters for the digits above 9. - */ -IntFormatSpec > hex(int value); - -/** - Returns an integer formatter format specifier to format in base 16 using - upper-case letters for the digits above 9. - */ -IntFormatSpec > hexu(int value); - -/** - \rst - Returns an integer format specifier to pad the formatted argument with the - fill character to the specified width using the default (right) numeric - alignment. - - **Example**:: - - std::string s = str(Writer() << pad(hex(0xcafe), 8, '0')); - // s == "0000cafe" - - \endrst - */ -template -IntFormatSpec, Char> pad( - int value, unsigned width, Char fill = ' '); - -#define DEFINE_INT_FORMATTERS(TYPE) \ -inline IntFormatSpec > bin(TYPE value) { \ - return IntFormatSpec >(value, TypeSpec<'b'>()); \ -} \ - \ -inline IntFormatSpec > oct(TYPE value) { \ - return IntFormatSpec >(value, TypeSpec<'o'>()); \ -} \ - \ -inline IntFormatSpec > hex(TYPE value) { \ - return IntFormatSpec >(value, TypeSpec<'x'>()); \ -} \ - \ -inline IntFormatSpec > hexu(TYPE value) { \ - return IntFormatSpec >(value, TypeSpec<'X'>()); \ -} \ - \ -template \ -inline IntFormatSpec > pad( \ - IntFormatSpec > f, unsigned width) { \ - return IntFormatSpec >( \ - f.value(), AlignTypeSpec(width, ' ')); \ -} \ - \ -/* For compatibility with older compilers we provide two overloads for pad, */ \ -/* one that takes a fill character and one that doesn't. In the future this */ \ -/* can be replaced with one overload making the template argument Char */ \ -/* default to char (C++11). */ \ -template \ -inline IntFormatSpec, Char> pad( \ - IntFormatSpec, Char> f, \ - unsigned width, Char fill) { \ - return IntFormatSpec, Char>( \ - f.value(), AlignTypeSpec(width, fill)); \ -} \ - \ -inline IntFormatSpec > pad( \ - TYPE value, unsigned width) { \ - return IntFormatSpec >( \ - value, AlignTypeSpec<0>(width, ' ')); \ -} \ - \ -template \ -inline IntFormatSpec, Char> pad( \ - TYPE value, unsigned width, Char fill) { \ - return IntFormatSpec, Char>( \ - value, AlignTypeSpec<0>(width, fill)); \ -} - -DEFINE_INT_FORMATTERS(int) -DEFINE_INT_FORMATTERS(long) -DEFINE_INT_FORMATTERS(unsigned) -DEFINE_INT_FORMATTERS(unsigned long) -DEFINE_INT_FORMATTERS(LongLong) -DEFINE_INT_FORMATTERS(ULongLong) - -/** - \rst - Returns a string formatter that pads the formatted argument with the fill - character to the specified width using the default (left) string alignment. - - **Example**:: - - std::string s = str(Writer() << pad("abc", 8)); - // s == "abc " - - \endrst - */ -template -inline StrFormatSpec pad( - const Char *str, unsigned width, Char fill = ' ') { - return StrFormatSpec(str, width, fill); -} - -inline StrFormatSpec pad( - const wchar_t *str, unsigned width, char fill = ' ') { - return StrFormatSpec(str, width, fill); -} - -template -class BasicFormatter; - -/** - \rst - This template provides operations for formatting and writing data into - a character stream. The output is stored in a memory buffer that grows - dynamically. - - You can use one of the following typedefs for common character types: - - +---------+----------------------+ - | Type | Definition | - +=========+======================+ - | Writer | BasicWriter | - +---------+----------------------+ - | WWriter | BasicWriter | - +---------+----------------------+ - - **Example**:: - - Writer out; - out << "The answer is " << 42 << "\n"; - out.Format("({:+f}, {:+f})") << -3.14 << 3.14; - - This will write the following output to the ``out`` object: - - .. code-block:: none - - The answer is 42 - (-3.140000, +3.140000) - - The output can be converted to an ``std::string`` with ``out.str()`` or - accessed as a C string with ``out.c_str()``. - \endrst - */ -template -class BasicWriter { - private: - enum { INLINE_BUFFER_SIZE = 500 }; - mutable internal::Array buffer_; // Output buffer. - - friend class BasicFormatter; - - typedef typename internal::CharTraits::CharPtr CharPtr; - -#if _SECURE_SCL - static Char *GetBase(CharPtr p) { return p.base(); } -#else - static Char *GetBase(Char *p) { return p; } -#endif - - static CharPtr FillPadding(CharPtr buffer, - unsigned total_size, std::size_t content_size, wchar_t fill); - - // Grows the buffer by n characters and returns a pointer to the newly - // allocated area. - CharPtr GrowBuffer(std::size_t n) { - std::size_t size = buffer_.size(); - buffer_.resize(size + n); - return internal::CheckPtr(&buffer_[size], n); - } - - CharPtr PrepareFilledBuffer(unsigned size, const EmptySpec &, char sign) { - CharPtr p = GrowBuffer(size); - *p = sign; - return p + size - 1; - } - - CharPtr PrepareFilledBuffer(unsigned size, const AlignSpec &spec, char sign); - - // Formats an integer. - template - void FormatInt(T value, const Spec &spec); - - // Formats a floating-point number (double or long double). - template - void FormatDouble(T value, const FormatSpec &spec, int precision); - - // Formats a string. - template - CharPtr FormatString( - const StringChar *s, std::size_t size, const AlignSpec &spec); - - // This method is private to disallow writing a wide string to a - // char stream and vice versa. If you want to print a wide string - // as a pointer as std::ostream does, cast it to const void*. - // Do not implement! - void operator<<(typename internal::CharTraits::UnsupportedStrType); - - public: - /** - Returns the number of characters written to the output buffer. - */ - std::size_t size() const { return buffer_.size(); } - - /** - Returns a pointer to the output buffer content. No terminating null - character is appended. - */ - const Char *data() const { return &buffer_[0]; } - - /** - Returns a pointer to the output buffer content with terminating null - character appended. - */ - const Char *c_str() const { - std::size_t size = buffer_.size(); - buffer_.reserve(size + 1); - buffer_[size] = '\0'; - return &buffer_[0]; - } - - /** - Returns the content of the output buffer as an `std::string`. - */ - std::basic_string str() const { - return std::basic_string(&buffer_[0], buffer_.size()); - } - - /** - \rst - Formats a string sending the output to the writer. Arguments are - accepted through the returned ``BasicFormatter`` object using inserter - operator ``<<``. - - **Example**:: - - Writer out; - out.Format("Current point:\n"); - out.Format("({:+f}, {:+f})") << -3.14 << 3.14; - - This will write the following output to the ``out`` object: - - .. code-block:: none - - Current point: - (-3.140000, +3.140000) - - The output can be accessed using :meth:`data` or :meth:`c_str`. - - See also `Format String Syntax`_. - \endrst - */ - BasicFormatter Format(StringRef format); - - BasicWriter &operator<<(int value) { - return *this << IntFormatSpec(value); - } - BasicWriter &operator<<(unsigned value) { - return *this << IntFormatSpec(value); - } - BasicWriter &operator<<(long value) { - return *this << IntFormatSpec(value); - } - BasicWriter &operator<<(unsigned long value) { - return *this << IntFormatSpec(value); - } - BasicWriter &operator<<(LongLong value) { - return *this << IntFormatSpec(value); - } - - /** - Formats *value* and writes it to the stream. - */ - BasicWriter &operator<<(ULongLong value) { - return *this << IntFormatSpec(value); - } - - BasicWriter &operator<<(double value) { - FormatDouble(value, FormatSpec(), -1); - return *this; - } - - /** - Formats *value* using the general format for floating-point numbers - (``'g'``) and writes it to the stream. - */ - BasicWriter &operator<<(long double value) { - FormatDouble(value, FormatSpec(), -1); - return *this; - } - - /** - * Writes a character to the stream. - */ - BasicWriter &operator<<(char value) { - *GrowBuffer(1) = value; - return *this; - } - - BasicWriter &operator<<(wchar_t value) { - *GrowBuffer(1) = internal::CharTraits::ConvertChar(value); - return *this; - } - - /** - Writes *value* to the stream. - */ - BasicWriter &operator<<(const fmt::BasicStringRef value) { - const Char *str = value.c_str(); - std::size_t size = value.size(); - std::copy(str, str + size, GrowBuffer(size)); - return *this; - } - - template - BasicWriter &operator<<(const IntFormatSpec &spec) { - internal::CharTraits::ConvertChar(FillChar()); - FormatInt(spec.value(), spec); - return *this; - } - - template - BasicWriter &operator<<(const StrFormatSpec &spec) { - const StringChar *s = spec.str(); - FormatString(s, std::char_traits::length(s), spec); - return *this; - } - - void Write(const std::basic_string &s, const FormatSpec &spec) { - FormatString(s.data(), s.size(), spec); - } - - void Clear() { - buffer_.clear(); - } -}; - -template -template -typename BasicWriter::CharPtr BasicWriter::FormatString( - const StringChar *s, std::size_t size, const AlignSpec &spec) { - CharPtr out = CharPtr(); - if (spec.width() > size) { - out = GrowBuffer(spec.width()); - Char fill = static_cast(spec.fill()); - if (spec.align() == ALIGN_RIGHT) { - std::fill_n(out, spec.width() - size, fill); - out += spec.width() - size; - } else if (spec.align() == ALIGN_CENTER) { - out = FillPadding(out, spec.width(), size, fill); - } else { - std::fill_n(out + size, spec.width() - size, fill); - } - } else { - out = GrowBuffer(size); - } - std::copy(s, s + size, out); - return out; -} - -template -template -void BasicWriter::FormatInt(T value, const Spec &spec) { - unsigned size = 0; - char sign = 0; - typedef typename internal::IntTraits::MainType UnsignedType; - UnsignedType abs_value = value; - if (internal::IsNegative(value)) { - sign = '-'; - ++size; - abs_value = 0 - abs_value; - } else if (spec.sign_flag()) { - sign = spec.plus_flag() ? '+' : ' '; - ++size; - } - switch (spec.type()) { - case 0: case 'd': { - unsigned num_digits = internal::CountDigits(abs_value); - CharPtr p = - PrepareFilledBuffer(size + num_digits, spec, sign) + 1 - num_digits; - internal::FormatDecimal(GetBase(p), abs_value, num_digits); - break; - } - case 'x': case 'X': { - UnsignedType n = abs_value; - bool print_prefix = spec.hash_flag(); - if (print_prefix) size += 2; - do { - ++size; - } while ((n >>= 4) != 0); - Char *p = GetBase(PrepareFilledBuffer(size, spec, sign)); - n = abs_value; - const char *digits = spec.type() == 'x' ? - "0123456789abcdef" : "0123456789ABCDEF"; - do { - *p-- = digits[n & 0xf]; - } while ((n >>= 4) != 0); - if (print_prefix) { - *p-- = spec.type(); - *p = '0'; - } - break; - } - case 'b': case 'B': { - UnsignedType n = abs_value; - bool print_prefix = spec.hash_flag(); - if (print_prefix) size += 2; - do { - ++size; - } while ((n >>= 1) != 0); - Char *p = GetBase(PrepareFilledBuffer(size, spec, sign)); - n = abs_value; - do { - *p-- = '0' + (n & 1); - } while ((n >>= 1) != 0); - if (print_prefix) { - *p-- = spec.type(); - *p = '0'; - } - break; - } - case 'o': { - UnsignedType n = abs_value; - bool print_prefix = spec.hash_flag(); - if (print_prefix) ++size; - do { - ++size; - } while ((n >>= 3) != 0); - Char *p = GetBase(PrepareFilledBuffer(size, spec, sign)); - n = abs_value; - do { - *p-- = '0' + (n & 7); - } while ((n >>= 3) != 0); - if (print_prefix) - *p = '0'; - break; - } - default: - internal::ReportUnknownType(spec.type(), "integer"); - break; - } -} - -template -BasicFormatter BasicWriter::Format(StringRef format) { - BasicFormatter f(*this, format.c_str()); - return f; -} - -typedef BasicWriter Writer; -typedef BasicWriter WWriter; - -// The default formatting function. -template -void Format(BasicWriter &w, const FormatSpec &spec, const T &value) { - std::basic_ostringstream os; - os << value; - w.Write(os.str(), spec); -} - -namespace internal { -// Formats an argument of a custom type, such as a user-defined class. -template -void FormatCustomArg( - BasicWriter &w, const void *arg, const FormatSpec &spec) { - Format(w, spec, *static_cast(arg)); -} -} - -/** - \rst - The :cpp:class:`fmt::BasicFormatter` template provides string formatting - functionality similar to Python's `str.format - `__. - The class provides operator<< for feeding formatting arguments and all - the output is sent to a :cpp:class:`fmt::Writer` object. - \endrst - */ -template -class BasicFormatter { - private: - BasicWriter *writer_; - - enum Type { - // Numeric types should go first. - INT, UINT, LONG, ULONG, LONG_LONG, ULONG_LONG, DOUBLE, LONG_DOUBLE, - LAST_NUMERIC_TYPE = LONG_DOUBLE, - CHAR, STRING, WSTRING, POINTER, CUSTOM - }; - - typedef void (*FormatFunc)( - BasicWriter &w, const void *arg, const FormatSpec &spec); - - // A format argument. - class Arg { - private: - // This method is private to disallow formatting of arbitrary pointers. - // If you want to output a pointer cast it to const void*. Do not implement! - template - Arg(const T *value); - - // This method is private to disallow formatting of arbitrary pointers. - // If you want to output a pointer cast it to void*. Do not implement! - template - Arg(T *value); - - struct StringValue { - const Char *value; - std::size_t size; - }; - - struct CustomValue { - const void *value; - FormatFunc format; - }; - - public: - Type type; - union { - int int_value; - unsigned uint_value; - double double_value; - long long_value; - unsigned long ulong_value; - LongLong long_long_value; - ULongLong ulong_long_value; - long double long_double_value; - const void *pointer_value; - StringValue string; - CustomValue custom; - }; - mutable BasicFormatter *formatter; - - Arg(short value) : type(INT), int_value(value), formatter(0) {} - Arg(unsigned short value) : type(UINT), int_value(value), formatter(0) {} - Arg(int value) : type(INT), int_value(value), formatter(0) {} - Arg(unsigned value) : type(UINT), uint_value(value), formatter(0) {} - Arg(long value) : type(LONG), long_value(value), formatter(0) {} - Arg(unsigned long value) : type(ULONG), ulong_value(value), formatter(0) {} - Arg(LongLong value) - : type(LONG_LONG), long_long_value(value), formatter(0) {} - Arg(ULongLong value) - : type(ULONG_LONG), ulong_long_value(value), formatter(0) {} - Arg(float value) : type(DOUBLE), double_value(value), formatter(0) {} - Arg(double value) : type(DOUBLE), double_value(value), formatter(0) {} - Arg(long double value) - : type(LONG_DOUBLE), long_double_value(value), formatter(0) {} - Arg(char value) : type(CHAR), int_value(value), formatter(0) {} - Arg(wchar_t value) - : type(CHAR), int_value(internal::CharTraits::ConvertChar(value)), - formatter(0) {} - - Arg(const Char *value) : type(STRING), formatter(0) { - string.value = value; - string.size = 0; - } - - Arg(Char *value) : type(STRING), formatter(0) { - string.value = value; - string.size = 0; - } - - Arg(const void *value) - : type(POINTER), pointer_value(value), formatter(0) {} - - Arg(void *value) : type(POINTER), pointer_value(value), formatter(0) {} - - Arg(const std::string &value) : type(STRING), formatter(0) { - string.value = value.c_str(); - string.size = value.size(); - } - - Arg(StringRef value) : type(STRING), formatter(0) { - string.value = value.c_str(); - string.size = value.size(); - } - - template - Arg(const T &value) : type(CUSTOM), formatter(0) { - custom.value = &value; - custom.format = &internal::FormatCustomArg; - } - - ~Arg() FMT_NOEXCEPT(false) { - // Format is called here to make sure that a referred object is - // still alive, for example: - // - // Print("{0}") << std::string("test"); - // - // Here an Arg object refers to a temporary std::string which is - // destroyed at the end of the statement. Since the string object is - // constructed before the Arg object, it will be destroyed after, - // so it will be alive in the Arg's destructor where Format is called. - // Note that the string object will not necessarily be alive when - // the destructor of BasicFormatter is called. - if (formatter) - formatter->CompleteFormatting(); - } - }; - - enum { NUM_INLINE_ARGS = 10 }; - internal::Array args_; // Format arguments. - - const Char *format_; // Format string. - int num_open_braces_; - int next_arg_index_; - - friend class internal::FormatterProxy; - - // Forbid copying from a temporary as in the following example: - // fmt::Formatter<> f = Format("test"); // not allowed - // This is done because BasicFormatter objects should normally exist - // only as temporaries returned by one of the formatting functions. - // Do not implement. - BasicFormatter(const BasicFormatter &); - BasicFormatter& operator=(const BasicFormatter &); - - void ReportError(const Char *s, StringRef message) const; - - unsigned ParseUInt(const Char *&s) const; - - // Parses argument index and returns an argument with this index. - const Arg &ParseArgIndex(const Char *&s); - - void CheckSign(const Char *&s, const Arg &arg); - - // Parses the format string and performs the actual formatting, - // writing the output to writer_. - void DoFormat(); - - // Formats an integer. - // TODO: remove - template - void FormatInt(T value, const FormatSpec &spec) { - *writer_ << IntFormatSpec(value, spec); - } - - struct Proxy { - BasicWriter *writer; - const Char *format; - - Proxy(BasicWriter *w, const Char *fmt) : writer(w), format(fmt) {} - }; - - protected: - const Char *TakeFormatString() { - const Char *format = this->format_; - this->format_ = 0; - return format; - } - - void CompleteFormatting() { - if (!format_) return; - DoFormat(); - } - - public: - // Constructs a formatter with a writer to be used for output and a format - // string. - BasicFormatter(BasicWriter &w, const Char *format = 0) - : writer_(&w), format_(format) {} - -#if FMT_USE_INITIALIZER_LIST - // Constructs a formatter with formatting arguments. - BasicFormatter(BasicWriter &w, - const Char *format, std::initializer_list args) - : writer_(&w), format_(format) { - // TODO: don't copy arguments - args_.reserve(args.size()); - for (const Arg &arg: args) - args_.push_back(&arg); - } -#endif - - // Performs formatting if the format string is non-null. The format string - // can be null if its ownership has been transferred to another formatter. - ~BasicFormatter() { - CompleteFormatting(); - } - - BasicFormatter(BasicFormatter &f) : writer_(f.writer_), format_(f.format_) { - f.format_ = 0; - } - - // Feeds an argument to a formatter. - BasicFormatter &operator<<(const Arg &arg) { - arg.formatter = this; - args_.push_back(&arg); - return *this; - } - - operator internal::FormatterProxy() { - return internal::FormatterProxy(this); - } - - operator StringRef() { - CompleteFormatting(); - return StringRef(writer_->c_str(), writer_->size()); - } -}; - -template -inline std::basic_string str(const BasicWriter &f) { - return f.str(); -} - -template -inline const Char *c_str(const BasicWriter &f) { return f.c_str(); } - -namespace internal { - -template -class FormatterProxy { - private: - BasicFormatter *formatter_; - - public: - explicit FormatterProxy(BasicFormatter *f) : formatter_(f) {} - - BasicWriter *Format() { - formatter_->CompleteFormatting(); - return formatter_->writer_; - } -}; -} - -/** - Returns the content of the output buffer as an `std::string`. - */ -inline std::string str(internal::FormatterProxy p) { - return p.Format()->str(); -} - -/** - Returns a pointer to the output buffer content with terminating null - character appended. - */ -inline const char *c_str(internal::FormatterProxy p) { - return p.Format()->c_str(); -} - -inline std::wstring str(internal::FormatterProxy p) { - return p.Format()->str(); -} - -inline const wchar_t *c_str(internal::FormatterProxy p) { - return p.Format()->c_str(); -} - -/** - A formatting action that does nothing. - */ -class NoAction { - public: - /** Does nothing. */ - template - void operator()(const BasicWriter &) const {} -}; - -/** - \rst - A formatter with an action performed when formatting is complete. - Objects of this class normally exist only as temporaries returned - by one of the formatting functions. You can use this class to create - your own functions similar to :cpp:func:`fmt::Format()`. - - **Example**:: - - struct PrintError { - void operator()(const fmt::Writer &w) const { - fmt::Print("Error: {}\n") << w.str(); - } - }; - - // Formats an error message and prints it to stdout. - fmt::Formatter ReportError(const char *format) { - fmt::Formatter f(format); - return f; - } - - ReportError("File not found: {}") << path; - \endrst - */ -template -class Formatter : private Action, public BasicFormatter { - private: - BasicWriter writer_; - bool inactive_; - - // Forbid copying other than from a temporary. Do not implement. - Formatter(const Formatter &); - Formatter& operator=(const Formatter &); - - public: - /** - \rst - Constructs a formatter with a format string and an action. - The action should be an unary function object that takes a const - reference to :cpp:class:`fmt::BasicWriter` as an argument. - See :cpp:class:`fmt::NoAction` and :cpp:class:`fmt::Write` for - examples of action classes. - \endrst - */ - explicit Formatter(BasicStringRef format, Action a = Action()) - : Action(a), BasicFormatter(writer_, format.c_str()), - inactive_(false) { - } - - Formatter(Formatter &f) - : Action(f), BasicFormatter(writer_, f.TakeFormatString()), - inactive_(false) { - f.inactive_ = true; - } - - /** - Performs the actual formatting, invokes the action and destroys the object. - */ - ~Formatter() FMT_NOEXCEPT(false) { - if (!inactive_) { - this->CompleteFormatting(); - (*this)(writer_); - } - } -}; - -/** - Fast integer formatter. - */ -class FormatInt { - private: - // Buffer should be large enough to hold all digits (digits10 + 1), - // a sign and a null character. - enum {BUFFER_SIZE = std::numeric_limits::digits10 + 3}; - mutable char buffer_[BUFFER_SIZE]; - char *str_; - - // Formats value in reverse and returns the number of digits. - char *FormatDecimal(ULongLong value) { - char *buffer_end = buffer_ + BUFFER_SIZE - 1; - while (value >= 100) { - // Integer division is slow so do it for a group of two digits instead - // of for every digit. The idea comes from the talk by Alexandrescu - // "Three Optimization Tips for C++". See speed-test for a comparison. - unsigned index = (value % 100) * 2; - value /= 100; - *--buffer_end = internal::DIGITS[index + 1]; - *--buffer_end = internal::DIGITS[index]; - } - if (value < 10) { - *--buffer_end = static_cast('0' + value); - return buffer_end; - } - unsigned index = static_cast(value * 2); - *--buffer_end = internal::DIGITS[index + 1]; - *--buffer_end = internal::DIGITS[index]; - return buffer_end; - } - - void FormatSigned(LongLong value) { - ULongLong abs_value = value; - bool negative = value < 0; - if (negative) - abs_value = 0 - value; - str_ = FormatDecimal(abs_value); - if (negative) - *--str_ = '-'; - } - - public: - explicit FormatInt(int value) { FormatSigned(value); } - explicit FormatInt(long value) { FormatSigned(value); } - explicit FormatInt(LongLong value) { FormatSigned(value); } - explicit FormatInt(unsigned value) : str_(FormatDecimal(value)) {} - explicit FormatInt(unsigned long value) : str_(FormatDecimal(value)) {} - explicit FormatInt(ULongLong value) : str_(FormatDecimal(value)) {} - - /** - Returns the number of characters written to the output buffer. - */ - std::size_t size() const { return buffer_ - str_ + BUFFER_SIZE - 1; } - - /** - Returns a pointer to the output buffer content. No terminating null - character is appended. - */ - const char *data() const { return str_; } - - /** - Returns a pointer to the output buffer content with terminating null - character appended. - */ - const char *c_str() const { - buffer_[BUFFER_SIZE - 1] = '\0'; - return str_; - } - - /** - Returns the content of the output buffer as an `std::string`. - */ - std::string str() const { return std::string(str_, size()); } -}; - -// Formats a decimal integer value writing into buffer and returns -// a pointer to the end of the formatted string. This function doesn't -// write a terminating null character. -template -inline void FormatDec(char *&buffer, T value) { - typename internal::IntTraits::MainType abs_value = value; - if (internal::IsNegative(value)) { - *buffer++ = '-'; - abs_value = 0 - abs_value; - } - if (abs_value < 100) { - if (abs_value < 10) { - *buffer++ = static_cast('0' + abs_value); - return; - } - unsigned index = static_cast(abs_value * 2); - *buffer++ = internal::DIGITS[index]; - *buffer++ = internal::DIGITS[index + 1]; - return; - } - unsigned num_digits = internal::CountDigits(abs_value); - internal::FormatDecimal(buffer, abs_value, num_digits); - buffer += num_digits; -} - -/** - \rst - Formats a string similarly to Python's `str.format - `__. - Returns a temporary formatter object that accepts arguments via - operator ``<<``. - - *format* is a format string that contains literal text and replacement - fields surrounded by braces ``{}``. The formatter object replaces the - fields with formatted arguments and stores the output in a memory buffer. - The content of the buffer can be converted to ``std::string`` with - :cpp:func:`fmt::str()` or accessed as a C string with - :cpp:func:`fmt::c_str()`. - - **Example**:: - - std::string message = str(Format("The answer is {}") << 42); - - See also `Format String Syntax`_. - \endrst -*/ -inline Formatter<> Format(StringRef format) { - Formatter<> f(format); - return f; -} - -inline Formatter Format(WStringRef format) { - Formatter f(format); - return f; -} - -/** A formatting action that writes formatted output to stdout. */ -class Write { - public: - /** Writes the output to stdout. */ - void operator()(const BasicWriter &w) const { - std::fwrite(w.data(), 1, w.size(), stdout); - } -}; - -// Formats a string and prints it to stdout. -// Example: -// Print("Elapsed time: {0:.2f} seconds") << 1.23; -inline Formatter Print(StringRef format) { - Formatter f(format); - return f; -} - -enum Color {BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE}; - -/** A formatting action that writes colored output to stdout. */ -class ColorWriter { - private: - Color color_; - - public: - explicit ColorWriter(Color c) : color_(c) {} - - /** Writes the colored output to stdout. */ - void operator()(const BasicWriter &w) const; -}; - -// Formats a string and prints it to stdout with the given color. -// Example: -// PrintColored(fmt::RED, "Elapsed time: {0:.2f} seconds") << 1.23; -inline Formatter PrintColored(Color c, StringRef format) { - Formatter f(format, ColorWriter(c)); - return f; -} -} - -#if _MSC_VER -# pragma warning(pop) -#endif - -#endif // FORMAT_H_ diff --git a/EyeTab_SP2/stdafx.cpp b/EyeTab_SP2/stdafx.cpp new file mode 100644 index 0000000..4a882c7 --- /dev/null +++ b/EyeTab_SP2/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// EyeTab_SP2.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/EyeTab_SP2/stdafx.h b/EyeTab_SP2/stdafx.h new file mode 100644 index 0000000..b005a83 --- /dev/null +++ b/EyeTab_SP2/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/EyeTab_SP2/targetver.h b/EyeTab_SP2/targetver.h new file mode 100644 index 0000000..87c0086 --- /dev/null +++ b/EyeTab_SP2/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/EyeTab_SP2/videoInput.h b/EyeTab_SP2/videoInput.h new file mode 100644 index 0000000..19d380b --- /dev/null +++ b/EyeTab_SP2/videoInput.h @@ -0,0 +1,194 @@ +#pragma once + +#include + + +struct IMFMediaSource; + +// Structure for collecting info about types of video, which are supported by current video device +struct MediaType +{ + unsigned int MF_MT_FRAME_SIZE; + + unsigned int height; + + unsigned int width; + + unsigned int MF_MT_YUV_MATRIX; + + unsigned int MF_MT_VIDEO_LIGHTING; + + unsigned int MF_MT_DEFAULT_STRIDE; + + unsigned int MF_MT_VIDEO_CHROMA_SITING; + + GUID MF_MT_AM_FORMAT_TYPE; + + wchar_t *pMF_MT_AM_FORMAT_TYPEName; + + unsigned int MF_MT_FIXED_SIZE_SAMPLES; + + unsigned int MF_MT_VIDEO_NOMINAL_RANGE; + + unsigned int MF_MT_FRAME_RATE; + + unsigned int MF_MT_FRAME_RATE_low; + + unsigned int MF_MT_PIXEL_ASPECT_RATIO; + + unsigned int MF_MT_PIXEL_ASPECT_RATIO_low; + + unsigned int MF_MT_ALL_SAMPLES_INDEPENDENT; + + unsigned int MF_MT_FRAME_RATE_RANGE_MIN; + + unsigned int MF_MT_FRAME_RATE_RANGE_MIN_low; + + unsigned int MF_MT_SAMPLE_SIZE; + + unsigned int MF_MT_VIDEO_PRIMARIES; + + unsigned int MF_MT_INTERLACE_MODE; + + unsigned int MF_MT_FRAME_RATE_RANGE_MAX; + + unsigned int MF_MT_FRAME_RATE_RANGE_MAX_low; + + GUID MF_MT_MAJOR_TYPE; + + wchar_t *pMF_MT_MAJOR_TYPEName; + + GUID MF_MT_SUBTYPE; + + wchar_t *pMF_MT_SUBTYPEName; + + MediaType(); + ~MediaType(); + void Clear(); +}; + +// Structure for collecting info about one parametr of current video device +struct Parametr +{ + long CurrentValue; + + long Min; + + long Max; + + long Step; + + long Default; + + long Flag; + + Parametr(); +}; + +// Structure for collecting info about 17 parametrs of current video device +struct CamParametrs +{ + Parametr Brightness; + Parametr Contrast; + Parametr Hue; + Parametr Saturation; + Parametr Sharpness; + Parametr Gamma; + Parametr ColorEnable; + Parametr WhiteBalance; + Parametr BacklightCompensation; + Parametr Gain; + + + Parametr Pan; + Parametr Tilt; + Parametr Roll; + Parametr Zoom; + Parametr Exposure; + Parametr Iris; + Parametr Focus; +}; + +/// The only visiable class for controlling of video devices in format singelton +class videoInput +{ +public: + virtual ~videoInput(void); + + // Getting of static instance of videoInput class + static videoInput& getInstance(); + + // Closing video device with deviceID + void closeDevice(unsigned int deviceID); + + // Setting callback function for emergency events(for example: removing video device with deviceID) with userData + void setEmergencyStopEvent(unsigned int deviceID, void *userData, void(*func)(int, void *)); + + // Closing all devices + void closeAllDevices(); + + // Getting of parametrs of video device with deviceID + CamParametrs getParametrs(unsigned int deviceID); + + // Setting of parametrs of video device with deviceID + void setParametrs(unsigned int deviceID, CamParametrs parametrs); + + // Getting numbers of existence videodevices with listing in consol + unsigned int listDevices(bool silent = false); + + // Getting numbers of formats, which are supported by videodevice with deviceID + unsigned int getCountFormats(unsigned int deviceID); + + // Getting width of image, which is getting from videodevice with deviceID + unsigned int getWidth(unsigned int deviceID); + + // Getting height of image, which is getting from videodevice with deviceID + unsigned int getHeight(unsigned int deviceID); + + // Getting name of videodevice with deviceID + wchar_t *getNameVideoDevice(unsigned int deviceID); + + // Getting interface MediaSource for Media Foundation from videodevice with deviceID + IMFMediaSource *getMediaSource(unsigned int deviceID); + + // Getting format with id, which is supported by videodevice with deviceID + MediaType getFormat(unsigned int deviceID, int unsigned id); + + // Checking of existence of the suitable video devices + bool isDevicesAcceable(); + + // Checking of using the videodevice with deviceID + bool isDeviceSetup(unsigned int deviceID); + + // Checking of using MediaSource from videodevice with deviceID + bool isDeviceMediaSource(unsigned int deviceID); + + // Checking of using Raw Data of pixels from videodevice with deviceID + bool isDeviceRawDataSource(unsigned int deviceID); + + // Setting of the state of outprinting info in consol + void setVerbose(bool state); + + // Initialization of video device with deviceID by media type with id + bool setupDevice(unsigned int deviceID, unsigned int id = 0); + + // Initialization of video device with deviceID by wisth w, height h and fps idealFramerate + bool setupDevice(unsigned int deviceID, unsigned int w, unsigned int h, unsigned int idealFramerate = 30); + + // Checking of recivig of new frame from video device with deviceID + bool isFrameNew(unsigned int deviceID); + + // Writing of Raw Data pixels from video device with deviceID with correction of RedAndBlue flipping flipRedAndBlue and vertical flipping flipImage + bool getPixels(unsigned int deviceID, unsigned char * pixels, bool flipRedAndBlue = false, bool flipImage = false); + +private: + + bool accessToDevices; + + videoInput(void); + + void processPixels(unsigned char * src, unsigned char * dst, unsigned int width, unsigned int height, unsigned int bpp, bool bRGB, bool bFlip); + + void updateListOfDevices(); +}; + diff --git a/EyeTab_SP2/videoInput.lib b/EyeTab_SP2/videoInput.lib new file mode 100644 index 0000000000000000000000000000000000000000..78df916b7da9ee0eb105d73ed3a52a9146004e0b GIT binary patch literal 5829386 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%0Ai=Uu9P216USOvU+ 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%0A-eN92b=RxRH}bD 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

L`O_EzruDR;@G!`(d3wE~!V_jjc3Z%7PnKGNhf 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

Mh%(N;SgEpK?*C$BuKg3s{F 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 z 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

a>E9W>_s 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 z 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

jZtWr1ER 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 z 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

BeEdHsZ&qtHmwajbt~mqmL>!H3cAAM9c%C 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%0AGzSsg{*aP=Qs6!TX$y0om8&Rv%>c& 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

x>9@RZIc!gB= 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 K42YpBvi}9(zff8L literal 0 HcmV?d00001 diff --git a/README.md b/README.md index b8b9fce..f709688 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,32 @@ -EyeTab -====== +# EyeTab + +EyeTab is a __3D model-based gaze tracker__ that runs entirely on unmodified commodity tablet computers, taking their limited computational and sensor resources into account. + +The code is available in two forms: + +* A _basic_ version which runs on a supplied example video file. This should give you an idea of the system's operation. +* An _extended_ version for real-time operation on a _Microsoft Surface Pro 2_. Unfortunately camera APIs are non-trivial, so this is not guaranteed to work on other tablet devices. + +## System overview + +# Deployment instructions + +EyeTab is written in Visual C++, a small extension of C++ which includes ... It should also work fine as generic C++ with minor replacements of VC++ code. + +I chose not to include Visual Studio _solution_ and _project_ files as these will vary depending on how your dependency installations are laid out. + +A very rough guide for setting this code up from scratch: + +1. Make a new empty console application in Visual Studio. +2. Correctly include, link, and input the system dependencies. +3. Copy the source, header and resource files into your empty project. + +## Dependencies + +The system has several dependencies: + +* [OpenCV](http://jquery.com/) - a multi-purpose computer vision library +* [TBB](http://jquery.com/) - for multi-threading +* [Eigen](http://jquery.com/) - provides simple vector maths + +In addition, the SP2 version of the system depends on [VideoInput](http://jquery.com/) for providing high-resolution access to the front-facing camera. OpenCV's camera API is broken and does not support this.