[matroska] r1109 - in trunk/MatroskaUtils: . GDC GDC/GDCMatroska GDC/common ShellExtension tinyxml

[email protected]
Newsgroups gmane.comp.multimedia.matroska.cvs
Message-ID <[email protected]>
Author: jcsston
Date: 2005-03-25 20:27:44 +0300 (Fri, 25 Mar 2005)
New Revision: 1109

Added:
   trunk/MatroskaUtils/GDC/
   trunk/MatroskaUtils/GDC/GDCMatroska/
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.aps
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.cpp
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.def
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.idl
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rc
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rgs
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.tlb
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.vcproj
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_i.c
   trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_p.c
   trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.cpp
   trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.h
   trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.rgs
   trunk/MatroskaUtils/GDC/GDCMatroska/ReadMe.txt
   trunk/MatroskaUtils/GDC/GDCMatroska/dlldata.c
   trunk/MatroskaUtils/GDC/GDCMatroska/registration.ico
   trunk/MatroskaUtils/GDC/GDCMatroska/resource.h
   trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.cpp
   trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h
   trunk/MatroskaUtils/GDC/GoogleDesktopComponent.sln
   trunk/MatroskaUtils/GDC/common/
   trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentCommon.vcproj
   trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.cpp
   trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.def
   trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.h
   trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h
   trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.idl
   trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_i.c
   trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_p.c
   trunk/MatroskaUtils/GDC/common/dlldata.c
   trunk/MatroskaUtils/GDC/common/stdafx.cpp
   trunk/MatroskaUtils/GDC/common/stdafx.h
   trunk/MatroskaUtils/Jorys_Southern_I_gotta_go_get_me_some_of_there_Matroska_files.mp3
   trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.cpp
   trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h
   trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.cpp
   trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h
   trunk/MatroskaUtils/resource.cpp
Removed:
   trunk/MatroskaUtils/ShellExtension/MatroskaProp.dsp
   trunk/MatroskaUtils/ShellExtension/MatroskaProp.dsw
   trunk/MatroskaUtils/tinyxml/TinyXml.dsp
   trunk/MatroskaUtils/tinyxml/TinyXml.dsw
Modified:
   trunk/MatroskaUtils/tinyxml/
Log:
New Google Desktop Search Plugin

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.aps
===================================================================
(Binary files differ)


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.aps
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.cpp
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,76 @@
+// GDCMatroska.cpp : Implementation of DLL Exports.
+
+#include "stdafx.h"
+#include <atlstr.h>
+
+#include <initguid.h>
+#include "GDCMatroska_i.c"
+
+class CGDCMatroskaModule : public CAtlDllModuleT< CGDCMatroskaModule >
+{
+public :
+  DECLARE_LIBID(LIBID_GDCMatroskaLib)
+  DECLARE_REGISTRY_APPID_RESOURCEID(IDR_SAMPLE, "{2F0D88B3-5ADC-44B3-BED0-FAF9823C839D}")
+};
+
+CGDCMatroskaModule _AtlModule;
+
+
+// DLL Entry Point
+extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
+{
+  hInstance;
+  return _AtlModule.DllMain(dwReason, lpReserved); 
+}
+
+
+// Used to determine whether the DLL can be unloaded by OLE
+STDAPI DllCanUnloadNow(void)
+{
+  return _AtlModule.DllCanUnloadNow();
+}
+
+
+// Returns a class factory to create an object of the requested type
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
+{
+  return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
+}
+
+
+// DllRegisterServer - Adds entries to the system registry
+STDAPI DllRegisterServer(void)
+{
+  // registers object, typelib and all interfaces in typelib
+  HRESULT hr = _AtlModule.DllRegisterServer();
+
+  if (SUCCEEDED(hr))
+  {
+    // Create our icon path 
+    CStringW module_name;
+    CStringW icon_name;
+    ::GetModuleFileNameW(_AtlBaseModule.GetModuleInstance(), CStrBufW(module_name, 1024), 1023);
+    icon_name.Format(L"%ls,%d", module_name, IDI_REGISTRATIONICON);
+
+    // register our module
+    const wchar_t *suffixes[] = { L"mkv", L"mka" };
+    hr = RegisterComponentHelper(CLSID_IndexMatroska, 
+      L"Matroska Crawler", 
+      L"Indexes Matroska Audio/Video files", 
+      icon_name, 2, suffixes);
+  }
+
+  return hr;
+}
+
+
+// DllUnregisterServer - Removes entries from the system registry
+STDAPI DllUnregisterServer(void)
+{
+  HRESULT hr = UnregisterComponentHelper(CLSID_IndexMatroska);
+  // ignore error...
+
+  hr = _AtlModule.DllUnregisterServer();
+
+  return hr;
+}

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.def
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.def	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.def	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,9 @@
+; GDCMatroska.def : Declares the module parameters.
+
+LIBRARY      "GDCMatroska.DLL"
+
+EXPORTS
+	DllCanUnloadNow		PRIVATE
+	DllGetClassObject	PRIVATE
+	DllRegisterServer	PRIVATE
+	DllUnregisterServer	PRIVATE

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.idl
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.idl	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.idl	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,39 @@
+// GDCMatroska.idl : IDL source for GDCMatroska
+//
+
+// This file will be processed by the MIDL tool to
+// produce the type library (GDCMatroska.tlb) and marshalling code.
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+[
+	object,
+	uuid(3219E2BC-E7AB-456d-AA17-600E3BDC418D),
+	dual,
+	nonextensible,
+	helpstring("IIndexMatroska Interface"),
+	pointer_default(unique)
+]
+interface IIndexMatroska : IDispatch{
+  [id(1), helpstring("method HandleFile")] 
+  HRESULT HandleFile(BSTR full_path_to_file, IDispatch *event_factory);
+};
+
+[
+	uuid(5D10BF95-A849-47dd-9978-65A5F8F940E1),
+	version(1.0),
+	helpstring("GDCMatroska 1.0 Type Library")
+]
+library GDCMatroskaLib
+{
+	importlib("stdole2.tlb");
+	[
+		uuid(364F941C-6DB0-437d-BBB9-22FCBA88DE30),
+		helpstring("IndexMatroska Class")
+	]
+	coclass IndexMatroska
+	{
+		[default] interface IIndexMatroska;
+	};
+};

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rc
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rc	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rc	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,129 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#include ""winres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "1 TYPELIB ""GDCMatroska.tlb""\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904e4"
+        BEGIN
+            VALUE "FileDescription", "Matroska Audio/Video File crawler component"
+            VALUE "FileVersion", "1.0.0.1"
+            VALUE "LegalCopyright", "(c) 2005 Jory Stone"
+            VALUE "InternalName", "GDCMatroska.dll"
+            VALUE "OriginalFilename", "GDCMatroska.dll"
+            VALUE "ProductName", "Google Desktop Search API"
+            VALUE "ProductVersion", "1.0.0.1"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1252
+    END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// REGISTRY
+//
+
+IDR_SAMPLE              REGISTRY                "GDCMatroska.rgs"
+IDR_INDEXMATROSKA       REGISTRY                "IndexMatroska.rgs"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_REGISTRATIONICON    ICON                    "registration.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE 
+BEGIN
+    IDS_PROJNAME            "GDCMatroska"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+1 TYPELIB "GDCMatroska.tlb"
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rgs
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rgs	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.rgs	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,11 @@
+HKCR
+{
+  NoRemove AppID
+  {
+    '%APPID%' = s 'GDCMatroska'
+    'GDCMatroska.DLL'
+    {
+      val AppID = s '%APPID%'
+    }
+  }
+}

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.tlb
===================================================================
(Binary files differ)


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.tlb
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.vcproj
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.vcproj	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska.vcproj	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="GDCMatroska"
+	ProjectGUID="{D850DCDA-78AD-42C1-BF71-B5995900BCA9}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			UseOfATL="0"
+			CharacterSet="1">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories=".\;..\;..\..\;..\..\..\libebml;..\..\..\libebml\src\platform\win32;..\..\..\libmatroska"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;GDCMATROSKA_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="Unicows.lib"
+				OutputFile="$(OutDir)/GDCMatroska.dll"
+				LinkIncremental="2"
+				ModuleDefinitionFile="GDCMatroska.def"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/GDCMatroska.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/GDCMatroska.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			CharacterSet="1"
+			ManagedExtensions="FALSE">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories=".\;..\;..\..\;..\..\..\libebml;..\..\..\libebml\src\platform\win32;..\..\..\libmatroska"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;GDCMATROSKA_EXPORTS"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="Unicows.lib"
+				OutputFile="$(OutDir)/GDCMatroska.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="GDCMatroska.def"
+				DelayLoadDLLs=""
+				GenerateDebugInformation="TRUE"
+				GenerateMapFile="TRUE"
+				MapFileName="$(OutDir)/$(ProjectName).map"
+				MapExports="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/GDCMatroska.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath=".\GDCMatroska.cpp">
+			</File>
+			<File
+				RelativePath=".\GDCMatroska.idl">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCMIDLTool"
+						TypeLibraryName="./$(ProjectName).tlb"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCMIDLTool"
+						TypeLibraryName="./$(ProjectName).tlb"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\IndexMatroska.cpp">
+			</File>
+			<File
+				RelativePath=".\stdafx.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath=".\IndexMatroska.h">
+			</File>
+			<File
+				RelativePath=".\stdafx.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+			<File
+				RelativePath=".\GDCMatroska.def">
+			</File>
+			<File
+				RelativePath=".\GDCMatroska.rc">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_h.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,246 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Thu Mar 24 23:40:26 2005
+ */
+/* Compiler settings for .\GDCMatroska.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data 
+    VC __declspec() decoration level: 
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __GDCMatroska_h_h__
+#define __GDCMatroska_h_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */ 
+
+#ifndef __IIndexMatroska_FWD_DEFINED__
+#define __IIndexMatroska_FWD_DEFINED__
+typedef interface IIndexMatroska IIndexMatroska;
+#endif 	/* __IIndexMatroska_FWD_DEFINED__ */
+
+
+#ifndef __IndexMatroska_FWD_DEFINED__
+#define __IndexMatroska_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class IndexMatroska IndexMatroska;
+#else
+typedef struct IndexMatroska IndexMatroska;
+#endif /* __cplusplus */
+
+#endif 	/* __IndexMatroska_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void * ); 
+
+#ifndef __IIndexMatroska_INTERFACE_DEFINED__
+#define __IIndexMatroska_INTERFACE_DEFINED__
+
+/* interface IIndexMatroska */
+/* [unique][helpstring][nonextensible][dual][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IIndexMatroska;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("3219E2BC-E7AB-456d-AA17-600E3BDC418D")
+    IIndexMatroska : public IDispatch
+    {
+    public:
+        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE HandleFile( 
+            BSTR full_path_to_file,
+            IDispatch *event_factory) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IIndexMatroskaVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IIndexMatroska * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IIndexMatroska * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IIndexMatroska * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
+            IIndexMatroska * This,
+            /* [out] */ UINT *pctinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
+            IIndexMatroska * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
+            IIndexMatroska * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+        
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
+            IIndexMatroska * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+        
+        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *HandleFile )( 
+            IIndexMatroska * This,
+            BSTR full_path_to_file,
+            IDispatch *event_factory);
+        
+        END_INTERFACE
+    } IIndexMatroskaVtbl;
+
+    interface IIndexMatroska
+    {
+        CONST_VTBL struct IIndexMatroskaVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IIndexMatroska_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IIndexMatroska_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IIndexMatroska_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IIndexMatroska_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IIndexMatroska_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IIndexMatroska_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IIndexMatroska_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IIndexMatroska_HandleFile(This,full_path_to_file,event_factory)	\
+    (This)->lpVtbl -> HandleFile(This,full_path_to_file,event_factory)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IIndexMatroska_HandleFile_Proxy( 
+    IIndexMatroska * This,
+    BSTR full_path_to_file,
+    IDispatch *event_factory);
+
+
+void __RPC_STUB IIndexMatroska_HandleFile_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IIndexMatroska_INTERFACE_DEFINED__ */
+
+
+
+#ifndef __GDCMatroskaLib_LIBRARY_DEFINED__
+#define __GDCMatroskaLib_LIBRARY_DEFINED__
+
+/* library GDCMatroskaLib */
+/* [helpstring][version][uuid] */ 
+
+
+EXTERN_C const IID LIBID_GDCMatroskaLib;
+
+EXTERN_C const CLSID CLSID_IndexMatroska;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("364F941C-6DB0-437d-BBB9-22FCBA88DE30")
+IndexMatroska;
+#endif
+#endif /* __GDCMatroskaLib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *, unsigned long            , BSTR * ); 
+unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned char *, BSTR * ); 
+unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); 
+void                      __RPC_USER  BSTR_UserFree(     unsigned long *, BSTR * ); 
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_i.c
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_i.c	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_i.c	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,90 @@
+
+
+/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
+
+/* link this file in with the server and any clients */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Thu Mar 24 23:40:26 2005
+ */
+/* Compiler settings for .\GDCMatroska.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data 
+    VC __declspec() decoration level: 
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#if !defined(_M_IA64) && !defined(_M_AMD64)
+
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+
+
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifdef _MIDL_USE_GUIDDEF_
+
+#ifndef INITGUID
+#define INITGUID
+#include <guiddef.h>
+#undef INITGUID
+#else
+#include <guiddef.h>
+#endif
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+        DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#else // !_MIDL_USE_GUIDDEF_
+
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+
+typedef struct _IID
+{
+    unsigned long x;
+    unsigned short s1;
+    unsigned short s2;
+    unsigned char  c[8];
+} IID;
+
+#endif // __IID_DEFINED__
+
+#ifndef CLSID_DEFINED
+#define CLSID_DEFINED
+typedef IID CLSID;
+#endif // CLSID_DEFINED
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+        const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+
+#endif !_MIDL_USE_GUIDDEF_
+
+MIDL_DEFINE_GUID(IID, IID_IIndexMatroska,0x3219E2BC,0xE7AB,0x456d,0xAA,0x17,0x60,0x0E,0x3B,0xDC,0x41,0x8D);
+
+
+MIDL_DEFINE_GUID(IID, LIBID_GDCMatroskaLib,0x5D10BF95,0xA849,0x47dd,0x99,0x78,0x65,0xA5,0xF8,0xF9,0x40,0xE1);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_IndexMatroska,0x364F941C,0x6DB0,0x437d,0xBB,0xB9,0x22,0xFC,0xBA,0x88,0xDE,0x30);
+
+#undef MIDL_DEFINE_GUID
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
+

Added: trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_p.c
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_p.c	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/GDCMatroska_p.c	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,362 @@
+
+
+/* this ALWAYS GENERATED file contains the proxy stub code */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Thu Mar 24 23:40:26 2005
+ */
+/* Compiler settings for .\GDCMatroska.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data 
+    VC __declspec() decoration level: 
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#if !defined(_M_IA64) && !defined(_M_AMD64)
+
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+#if _MSC_VER >= 1200
+#pragma warning(push)
+#endif
+#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
+#pragma warning( disable: 4211 )  /* redefine extent to static */
+#pragma warning( disable: 4232 )  /* dllimport identity*/
+#define USE_STUBLESS_PROXY
+
+
+/* verify that the <rpcproxy.h> version is high enough to compile this file*/
+#ifndef __REDQ_RPCPROXY_H_VERSION__
+#define __REQUIRED_RPCPROXY_H_VERSION__ 475
+#endif
+
+
+#include "rpcproxy.h"
+#ifndef __RPCPROXY_H_VERSION__
+#error this stub requires an updated version of <rpcproxy.h>
+#endif // __RPCPROXY_H_VERSION__
+
+
+#include "GDCMatroska_h.h"
+
+#define TYPE_FORMAT_STRING_SIZE   57                                
+#define PROC_FORMAT_STRING_SIZE   43                                
+#define TRANSMIT_AS_TABLE_SIZE    0            
+#define WIRE_MARSHAL_TABLE_SIZE   1            
+
+typedef struct _MIDL_TYPE_FORMAT_STRING
+    {
+    short          Pad;
+    unsigned char  Format[ TYPE_FORMAT_STRING_SIZE ];
+    } MIDL_TYPE_FORMAT_STRING;
+
+typedef struct _MIDL_PROC_FORMAT_STRING
+    {
+    short          Pad;
+    unsigned char  Format[ PROC_FORMAT_STRING_SIZE ];
+    } MIDL_PROC_FORMAT_STRING;
+
+
+static RPC_SYNTAX_IDENTIFIER  _RpcTransferSyntax = 
+{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
+
+
+extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;
+extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
+
+
+extern const MIDL_STUB_DESC Object_StubDesc;
+
+
+extern const MIDL_SERVER_INFO IIndexMatroska_ServerInfo;
+extern const MIDL_STUBLESS_PROXY_INFO IIndexMatroska_ProxyInfo;
+
+
+extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
+
+#if !defined(__RPC_WIN32__)
+#error  Invalid build platform for this stub.
+#endif
+
+#if !(TARGET_IS_NT50_OR_LATER)
+#error You need a Windows 2000 or later to run this stub because it uses these features:
+#error   /robust command line switch.
+#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
+#error This app will die there with the RPC_X_WRONG_STUB_VERSION error.
+#endif
+
+
+static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
+    {
+        0,
+        {
+
+	/* Procedure HandleFile */
+
+			0x33,		/* FC_AUTO_HANDLE */
+			0x6c,		/* Old Flags:  object, Oi2 */
+/*  2 */	NdrFcLong( 0x0 ),	/* 0 */
+/*  6 */	NdrFcShort( 0x7 ),	/* 7 */
+/*  8 */	NdrFcShort( 0x10 ),	/* x86 Stack size/offset = 16 */
+/* 10 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 12 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 14 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */
+			0x3,		/* 3 */
+/* 16 */	0x8,		/* 8 */
+			0x5,		/* Ext Flags:  new corr desc, srv corr check, */
+/* 18 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 20 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 22 */	NdrFcShort( 0x0 ),	/* 0 */
+
+	/* Parameter full_path_to_file */
+
+/* 24 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 26 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */
+/* 28 */	NdrFcShort( 0x1c ),	/* Type Offset=28 */
+
+	/* Parameter event_factory */
+
+/* 30 */	NdrFcShort( 0xb ),	/* Flags:  must size, must free, in, */
+/* 32 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */
+/* 34 */	NdrFcShort( 0x26 ),	/* Type Offset=38 */
+
+	/* Return value */
+
+/* 36 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */
+/* 38 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */
+/* 40 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+			0x0
+        }
+    };
+
+static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
+    {
+        0,
+        {
+			NdrFcShort( 0x0 ),	/* 0 */
+/*  2 */	
+			0x12, 0x0,	/* FC_UP */
+/*  4 */	NdrFcShort( 0xe ),	/* Offset= 14 (18) */
+/*  6 */	
+			0x1b,		/* FC_CARRAY */
+			0x1,		/* 1 */
+/*  8 */	NdrFcShort( 0x2 ),	/* 2 */
+/* 10 */	0x9,		/* Corr desc: FC_ULONG */
+			0x0,		/*  */
+/* 12 */	NdrFcShort( 0xfffc ),	/* -4 */
+/* 14 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 16 */	0x6,		/* FC_SHORT */
+			0x5b,		/* FC_END */
+/* 18 */	
+			0x17,		/* FC_CSTRUCT */
+			0x3,		/* 3 */
+/* 20 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 22 */	NdrFcShort( 0xfff0 ),	/* Offset= -16 (6) */
+/* 24 */	0x8,		/* FC_LONG */
+			0x8,		/* FC_LONG */
+/* 26 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 28 */	0xb4,		/* FC_USER_MARSHAL */
+			0x83,		/* 131 */
+/* 30 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 32 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 34 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 36 */	NdrFcShort( 0xffde ),	/* Offset= -34 (2) */
+/* 38 */	
+			0x2f,		/* FC_IP */
+			0x5a,		/* FC_CONSTANT_IID */
+/* 40 */	NdrFcLong( 0x20400 ),	/* 132096 */
+/* 44 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 46 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 48 */	0xc0,		/* 192 */
+			0x0,		/* 0 */
+/* 50 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 52 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 54 */	0x0,		/* 0 */
+			0x46,		/* 70 */
+
+			0x0
+        }
+    };
+
+static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] = 
+        {
+            
+            {
+            BSTR_UserSize
+            ,BSTR_UserMarshal
+            ,BSTR_UserUnmarshal
+            ,BSTR_UserFree
+            }
+
+        };
+
+
+
+/* Object interface: IUnknown, ver. 0.0,
+   GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
+
+
+/* Object interface: IDispatch, ver. 0.0,
+   GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
+
+
+/* Object interface: IIndexMatroska, ver. 0.0,
+   GUID={0x3219E2BC,0xE7AB,0x456d,{0xAA,0x17,0x60,0x0E,0x3B,0xDC,0x41,0x8D}} */
+
+#pragma code_seg(".orpc")
+static const unsigned short IIndexMatroska_FormatStringOffsetTable[] =
+    {
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    0
+    };
+
+static const MIDL_STUBLESS_PROXY_INFO IIndexMatroska_ProxyInfo =
+    {
+    &Object_StubDesc,
+    __MIDL_ProcFormatString.Format,
+    &IIndexMatroska_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0
+    };
+
+
+static const MIDL_SERVER_INFO IIndexMatroska_ServerInfo = 
+    {
+    &Object_StubDesc,
+    0,
+    __MIDL_ProcFormatString.Format,
+    &IIndexMatroska_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0,
+    0};
+CINTERFACE_PROXY_VTABLE(8) _IIndexMatroskaProxyVtbl = 
+{
+    &IIndexMatroska_ProxyInfo,
+    &IID_IIndexMatroska,
+    IUnknown_QueryInterface_Proxy,
+    IUnknown_AddRef_Proxy,
+    IUnknown_Release_Proxy ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfoCount */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfo */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetIDsOfNames */ ,
+    0 /* IDispatch_Invoke_Proxy */ ,
+    (void *) (INT_PTR) -1 /* IIndexMatroska::HandleFile */
+};
+
+
+static const PRPC_STUB_FUNCTION IIndexMatroska_table[] =
+{
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    NdrStubCall2
+};
+
+CInterfaceStubVtbl _IIndexMatroskaStubVtbl =
+{
+    &IID_IIndexMatroska,
+    &IIndexMatroska_ServerInfo,
+    8,
+    &IIndexMatroska_table[-3],
+    CStdStubBuffer_DELEGATING_METHODS
+};
+
+static const MIDL_STUB_DESC Object_StubDesc = 
+    {
+    0,
+    NdrOleAllocate,
+    NdrOleFree,
+    0,
+    0,
+    0,
+    0,
+    0,
+    __MIDL_TypeFormatString.Format,
+    1, /* -error bounds_check flag */
+    0x50002, /* Ndr library version */
+    0,
+    0x6000169, /* MIDL Version 6.0.361 */
+    0,
+    UserMarshalRoutines,
+    0,  /* notify & notify_flag routine table */
+    0x1, /* MIDL flag */
+    0, /* cs routines */
+    0,   /* proxy/server info */
+    0   /* Reserved5 */
+    };
+
+const CInterfaceProxyVtbl * _GDCMatroska_ProxyVtblList[] = 
+{
+    ( CInterfaceProxyVtbl *) &_IIndexMatroskaProxyVtbl,
+    0
+};
+
+const CInterfaceStubVtbl * _GDCMatroska_StubVtblList[] = 
+{
+    ( CInterfaceStubVtbl *) &_IIndexMatroskaStubVtbl,
+    0
+};
+
+PCInterfaceName const _GDCMatroska_InterfaceNamesList[] = 
+{
+    "IIndexMatroska",
+    0
+};
+
+const IID *  _GDCMatroska_BaseIIDList[] = 
+{
+    &IID_IDispatch,
+    0
+};
+
+
+#define _GDCMatroska_CHECK_IID(n)	IID_GENERIC_CHECK_IID( _GDCMatroska, pIID, n)
+
+int __stdcall _GDCMatroska_IID_Lookup( const IID * pIID, int * pIndex )
+{
+    
+    if(!_GDCMatroska_CHECK_IID(0))
+        {
+        *pIndex = 0;
+        return 1;
+        }
+
+    return 0;
+}
+
+const ExtendedProxyFileInfo GDCMatroska_ProxyFileInfo = 
+{
+    (PCInterfaceProxyVtblList *) & _GDCMatroska_ProxyVtblList,
+    (PCInterfaceStubVtblList *) & _GDCMatroska_StubVtblList,
+    (const PCInterfaceName * ) & _GDCMatroska_InterfaceNamesList,
+    (const IID ** ) & _GDCMatroska_BaseIIDList,
+    & _GDCMatroska_IID_Lookup, 
+    1,
+    2,
+    0, /* table of [async_uuid] interfaces */
+    0, /* Filler1 */
+    0, /* Filler2 */
+    0  /* Filler3 */
+};
+#if _MSC_VER >= 1200
+#pragma warning(pop)
+#endif
+
+
+#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
+

Added: trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.cpp
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,219 @@
+
+// 
+// Sample crawler capture component. This component registers for .lnk files
+// 
+
+#include "stdafx.h"
+#include <atlstr.h>
+#include <atlsafe.h>
+#include <shobjidl.h>
+#include <shlguid.h>
+#include "IndexMatroska.h"
+#include "../common/GoogleDesktopSearchAPI.h"
+
+#include "GDCMatroska_i.c"
+
+// CIndexMatroska
+
+CIndexMatroska::CIndexMatroska() 
+{
+  m_hMatroskaPropDLL = NULL;
+}
+
+CString CIndexMatroska::GetRegistryValue(HKEY hBaseKey, TCHAR *reg_key, TCHAR *value_key, TCHAR *default_value)
+{	
+  CString ret_value = default_value;
+  HKEY key_handle = NULL;
+  DWORD lpType = NULL;
+  DWORD state = 0;
+  TCHAR key_text[MAX_PATH+2];
+  DWORD size = MAX_PATH;
+
+  RegCreateKeyEx(hBaseKey, reg_key, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key_handle, &state);  
+  if(state == REG_OPENED_EXISTING_KEY) {
+    RegQueryValueEx(key_handle, value_key, 0, &lpType, (BYTE*)key_text, &size);	
+    ret_value = key_text;
+  }
+  RegCloseKey(key_handle);
+  return ret_value;
+}
+
+HRESULT CIndexMatroska::LoadMatroskaPropLibrary()
+{
+  m_hMatroskaPropDLL = LoadLibrary(_T("MatroskaProp"));
+  if (m_hMatroskaPropDLL == NULL) {
+    CString filename = GetRegistryValue(HKEY_CLASSES_ROOT, _T("CLSID\\") _T("{780BCB64-0CAF-473c-A9FC-E08C03D75515}") _T("\\InProcServer32\\"), _T(""), _T(""));
+    if (filename.GetLength() > 0) {
+      m_hMatroskaPropDLL = LoadLibrary(filename);
+    }
+  }
+  if (m_hMatroskaPropDLL == NULL)
+    return E_FAIL;
+
+  fnCreateParserObject = (CreateParserObject_def)GetProcAddress(m_hMatroskaPropDLL, "CreateParserObject");
+  if (fnCreateParserObject == NULL)
+    return E_FAIL;
+
+  fnDeleteParserObject = (DeleteParserObject_def)GetProcAddress(m_hMatroskaPropDLL, "DeleteParserObject");    
+  if (fnDeleteParserObject == NULL)
+    return E_FAIL;
+
+  /*
+  fnFillParserObject = (FillParserObject_def)GetProcAddress(m_hMatroskaPropDLL, "FillParserObject");    
+  fnGetTrackCount = (GetTrackCount_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackCount");
+  fnGetTrackUID = (GetTrackUID_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackUID");
+  fnGetTrackType = (GetTrackType_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackType");
+  fnGetTrackTypeLen = (GetTrackTypeLen_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackTypeLen");
+  fnGetTrackTypeStr = (GetTrackTypeStr_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackTypeStr");
+  fnGetTrackCodecIDLen = (GetTrackCodecIDLen_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackCodecIDLen");
+  fnGetTrackCodecIDStr = (GetTrackCodecIDStr_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackCodecIDStr");
+  fnGetTrackLength = (GetTrackLength_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackLength");
+  fnGetTrackVideoInfo = (GetTrackVideoInfo_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackVideoInfo");
+  fnGetTrackAudioInfo = (GetTrackAudioInfo_def)GetProcAddress(m_hMatroskaPropDLL, "GetTrackAudioInfo");
+  */
+  return S_OK;
+}
+
+STDMETHODIMP CIndexMatroska::InterfaceSupportsErrorInfo(REFIID riid)
+{
+  static const IID* arr[] = 
+  {
+    &IID_IIndexMatroska
+  };
+
+  for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
+  {
+    if (InlineIsEqualGUID(*arr[i],riid))
+      return S_OK;
+  }
+  return S_FALSE;
+}
+
+STDMETHODIMP CIndexMatroska::HandleFile(BSTR full_path_to_file, IDispatch *event_factory) 
+{
+  USES_CONVERSION;
+  CComPtr<IGoogleDesktopSearchEventFactory> spEventFactory;
+  CComPtr<IDispatch> spEventDisp;  
+  HRESULT hr;
+  
+  hr  = event_factory->QueryInterface(&spEventFactory);
+  if (FAILED(hr))
+    return Error(L"No event factory", IID_IIndexMatroska, hr);
+
+  hr = spEventFactory->CreateEvent(CComBSTR(CLSID_IndexMatroska), CComBSTR(L"Google.Desktop.MediaFile"), &spEventDisp);
+  if (FAILED(hr))
+    return Error(L"Unable to create event", IID_IIndexMatroska, hr);
+    
+  CComQIPtr<IGoogleDesktopSearchEvent> spEvent(spEventDisp);
+  
+  ATLASSERT(spEventDisp && spEvent);
+  if (spEvent == NULL)
+    return Error(L"Event does not implement IGoogleDesktopSearchEvent", IID_IIndexMatroska, E_UNEXPECTED);
+
+  CStringW strOriginal = full_path_to_file;
+  if (PathFileExists(strOriginal)) {
+    WIN32_FIND_DATA wfd;
+    if (!GetFileAttributesEx(strOriginal, GetFileExInfoStandard, &wfd))
+      return HRESULT_FROM_WIN32(::GetLastError());
+
+    SYSTEMTIME systemTime;
+    FileTimeToSystemTime(&wfd.ftCreationTime, &systemTime);
+
+    // convert the date to the variant format
+    double varDate;
+    SystemTimeToVariantTime(&systemTime, &varDate);
+    
+    hr = spEvent->AddProperty(CComBSTR(L"uri"), CComVariant(full_path_to_file));
+    if (SUCCEEDED(hr))
+      hr = spEvent->AddProperty(CComBSTR(L"last_modified_time"), CComVariant(varDate, VT_DATE));
+    
+    CStringW content;
+    
+    MatroskaUtilsNamespace::MatroskaInfoParser *pParser = new MatroskaUtilsNamespace::MatroskaInfoParser(strOriginal);
+    //hr = fnCreateParserObject((void **)&pParser, W2A(strOriginal));
+    pParser->ParseFile();
+    MatroskaUtilsNamespace::MatroskaTrackInfo *pVideoTrack = pParser->GetFirstVideoTrack();
+    MatroskaUtilsNamespace::MatroskaTrackInfo *pAudioTrack = pParser->GetFirstAudioTrack();
+    MatroskaUtilsNamespace::MatroskaTrackInfo *pSubtitleTrack = pParser->GetFirstSubtitleTrack();
+
+    content.Format(L"Muxing App: %s", A2W(pParser->GetMuxingApp()));
+
+    hr = spEvent->AddProperty(CComBSTR(L"content"), CComVariant(content));
+
+    double duration = pParser->GetSegmentInfo()->GetDuration();
+    duration = duration * 1000.0 * 1000.0;
+    hr = spEvent->AddProperty(CComBSTR(L"length"), CComVariant(((int)duration)));
+
+    if (pVideoTrack != NULL) {
+      hr = spEvent->AddProperty(CComBSTR(L"format"), CComVariant("video/x-matroska"));      
+    } else if (pAudioTrack != NULL) {
+      hr = spEvent->AddProperty(CComBSTR(L"format"), CComVariant("audio/x-matroska"));
+    } else if (pSubtitleTrack != NULL) {
+      hr = spEvent->AddProperty(CComBSTR(L"format"), CComVariant("text/x-matroska"));
+    } else {
+      hr = spEvent->AddProperty(CComBSTR(L"format"), CComVariant("application/x-matroska"));
+    }
+
+    if (pVideoTrack != NULL && pVideoTrack->GetVideoInfo() != NULL) {
+      MatroskaUtilsNamespace::MatroskaVideoTrackInfo *info = pVideoTrack->GetVideoInfo();
+      hr = spEvent->AddProperty(CComBSTR(L"width"), CComVariant(info->video_Width));
+      hr = spEvent->AddProperty(CComBSTR(L"height"), CComVariant(info->video_Height));
+    }
+
+    if (pAudioTrack != NULL && pAudioTrack->GetAudioInfo() != NULL) {
+      MatroskaUtilsNamespace::MatroskaAudioTrackInfo *info = pAudioTrack->GetAudioInfo();
+      hr = spEvent->AddProperty(CComBSTR(L"channels"), CComVariant(info->audio_Channels));
+    }
+
+    UTFstring s;
+    std::string s2;
+    int t;
+
+    s = pParser->GetTagComment();
+    if (s.length() > 0) {
+      hr = spEvent->AddProperty(CComBSTR(L"comments"), CComVariant(s.c_str()));
+    }
+
+    s = pParser->GetTagAlbum();
+    if (s.length() > 0) {
+      hr = spEvent->AddProperty(CComBSTR(L"album_title"), CComVariant(s.c_str()));
+    }
+
+    s = pParser->GetTagArtist();
+    if (s.length() > 0) {
+      hr = spEvent->AddProperty(CComBSTR(L"artist"), CComVariant(s.c_str()));
+    }
+
+    t = pParser->GetTagDiscTrack();
+    if (t > 0) {
+      hr = spEvent->AddProperty(CComBSTR(L"track_number"), CComVariant(t));
+    }
+
+    t = pParser->GetTagYear();
+    if (t > 0) {
+      hr = spEvent->AddProperty(CComBSTR(L"year"), CComVariant(t));
+    }
+
+    t = pParser->GetTagYear();
+    if (t > 0) {
+      hr = spEvent->AddProperty(CComBSTR(L"year_published"), CComVariant(t));
+    }
+
+    s2 = pParser->GetTagGenre();
+    if (s2.length() > 0) {
+      hr = spEvent->AddProperty(CComBSTR(L"genre"), CComVariant(s2.c_str()));
+    }
+
+    //hr = fnDeleteParserObject((void **)&pParser);
+    delete pParser;
+
+    if (FAILED(hr))
+      return Error(L"AddProperty failed", IID_IIndexMatroska, hr);
+
+    hr = spEvent->Send(EventFlagIndexable);
+    if (FAILED(hr))
+      return Error(L"Send failed", IID_IIndexMatroska, hr);
+  }
+   
+  return hr;
+}

Added: trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.h
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,78 @@
+// IndexShortcut.h : Declaration of the CIndexShortcut
+
+#pragma once
+#include "resource.h"       // main symbols
+
+#include "GDCMatroska_h.h"
+#include "MatroskaUtils.h"
+
+typedef LONG (WINAPI *CreateParserObject_def)(void **, char *);
+typedef LONG (WINAPI *FillParserObject_def)(void **, bool parseTags, bool parseWholeFile);
+typedef LONG (WINAPI *DeleteParserObject_def)(void **);
+typedef LONG (WINAPI *GetTrackCount_def)(void **);
+typedef LONG (WINAPI *GetTrackUID_def)(void **, int);
+typedef LONG (WINAPI *GetTrackType_def)(void **, int);
+typedef LONG (WINAPI *GetTrackTypeLen_def)(void **, int);
+typedef LONG (WINAPI *GetTrackTypeStr_def)(void **, int, char *);
+typedef LONG (WINAPI *GetTrackCodecIDLen_def)(void **, int);
+typedef LONG (WINAPI *GetTrackCodecIDStr_def)(void **, int, char *);
+typedef LONG (WINAPI *GetTrackLength_def)(void **, int);
+typedef LONG (WINAPI *GetTrackVideoInfo_def)(void **, int, void *);
+typedef LONG (WINAPI *GetTrackAudioInfo_def)(void **, int, void *);
+typedef LONG (WINAPI *SetAR_def)(void **, int, int, int);
+
+// CIndexShortcut
+
+class ATL_NO_VTABLE CIndexMatroska : 
+  public CComObjectRootEx<CComSingleThreadModel>,
+  public CComCoClass<CIndexMatroska, &CLSID_IndexMatroska>,
+  public ISupportErrorInfo,
+  public IDispatchImpl<IIndexMatroska, &IID_IIndexMatroska, &LIBID_GDCMatroskaLib, /*wMajor =*/ 1, /*wMinor =*/ 0> {
+public:
+  CIndexMatroska();
+
+  DECLARE_REGISTRY_RESOURCEID(IDR_INDEXSHORTCUT)
+
+  BEGIN_COM_MAP(CIndexMatroska)
+    COM_INTERFACE_ENTRY(IIndexMatroska)
+    COM_INTERFACE_ENTRY(IDispatch)
+    COM_INTERFACE_ENTRY(ISupportErrorInfo)
+  END_COM_MAP()
+
+  // ISupportsErrorInfo
+  STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
+
+  DECLARE_PROTECT_FINAL_CONSTRUCT()
+
+  CString GetRegistryValue(HKEY hBaseKey, TCHAR *reg_key, TCHAR *value_key, TCHAR *default_value);
+  HRESULT LoadMatroskaPropLibrary();
+
+  HRESULT FinalConstruct() {
+    LoadMatroskaPropLibrary();
+    return S_OK;
+  }
+  
+  void FinalRelease() {
+    FreeLibrary(m_hMatroskaPropDLL);
+  }
+  
+  CreateParserObject_def fnCreateParserObject;
+  FillParserObject_def fnFillParserObject;
+  DeleteParserObject_def fnDeleteParserObject;
+  GetTrackCount_def fnGetTrackCount;
+  GetTrackUID_def fnGetTrackUID;
+  GetTrackType_def fnGetTrackType;
+  GetTrackTypeLen_def fnGetTrackTypeLen;
+  GetTrackTypeStr_def fnGetTrackTypeStr;
+  GetTrackCodecIDLen_def fnGetTrackCodecIDLen;
+  GetTrackCodecIDStr_def fnGetTrackCodecIDStr;
+  GetTrackLength_def fnGetTrackLength;
+  GetTrackVideoInfo_def fnGetTrackVideoInfo;
+  GetTrackAudioInfo_def fnGetTrackAudioInfo;
+  HMODULE m_hMatroskaPropDLL;
+public:
+  // IIndexShortcut implementation
+  STDMETHOD(HandleFile)(BSTR full_path_to_file, IDispatch *event_factory);
+};
+
+OBJECT_ENTRY_AUTO(__uuidof(IndexMatroska), CIndexMatroska)

Added: trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.rgs
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.rgs	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/IndexMatroska.rgs	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,27 @@
+HKCR
+{
+  GDCMatroska.IndexShortcut.1 = s 'IndexMatroska Class'
+  {
+    CLSID = s '{364F941C-6DB0-437d-BBB9-22FCBA88DE30}'
+  }
+  GDCMatroska.IndexShortcut = s 'IndexMatroska Class'
+  {
+    CLSID = s '{364F941C-6DB0-437d-BBB9-22FCBA88DE30}'
+    CurVer = s 'GoogleDesktopComponentSample1.IndexMatroska.1'
+  }
+  NoRemove CLSID
+  {
+    ForceRemove {364F941C-6DB0-437d-BBB9-22FCBA88DE30} = s 'IndexMatroska Class'
+    {
+      ProgID = s 'GDCMatroska.IndexMatroska.1'
+      VersionIndependentProgID = s 'GDCMatroska.IndexMatroska'
+      ForceRemove 'Programmable'
+      InprocServer32 = s '%MODULE%'
+      {
+        val ThreadingModel = s 'Both'
+      }
+      val AppID = s '%APPID%'
+      'TypeLib' = s '{5D10BF95-A849-47dd-9978-65A5F8F940E1}'
+    }
+  }
+}

Added: trunk/MatroskaUtils/GDC/GDCMatroska/ReadMe.txt
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/ReadMe.txt	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/ReadMe.txt	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,40 @@
+========================================================================
+    DYNAMIC LINK LIBRARY : GDCMatroska Project Overview
+========================================================================
+
+AppWizard has created this GDCMatroska DLL for you.  
+This file contains a summary of what you will find in each of the files that
+make up your GDCMatroska application.
+
+
+GDCMatroska.vcproj
+    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.
+
+GDCMatroska.cpp
+    This is the main DLL source file.
+
+	When created, this DLL does not export any symbols. As a result, it  
+	will not produce a .lib file when it is built. If you wish this project 
+	to be a project dependency of some other project, you will either need to 
+	add code to export some symbols from the DLL so that an export library 
+	will be produced, or you can set the Ignore Input Library property to Yes 
+	on the General propert page of the Linker folder in the project's Property 
+	Pages dialog box.
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named GDCMatroska.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.
+
+/////////////////////////////////////////////////////////////////////////////

Added: trunk/MatroskaUtils/GDC/GDCMatroska/dlldata.c
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/dlldata.c	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/dlldata.c	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,38 @@
+/*********************************************************
+   DllData file -- generated by MIDL compiler 
+
+        DO NOT ALTER THIS FILE
+
+   This file is regenerated by MIDL on every IDL file compile.
+
+   To completely reconstruct this file, delete it and rerun MIDL
+   on all the IDL files in this DLL, specifying this file for the
+   /dlldata command line option
+
+*********************************************************/
+
+#define PROXY_DELEGATION
+
+#include <rpcproxy.h>
+
+#ifdef __cplusplus
+extern "C"   {
+#endif
+
+EXTERN_PROXY_FILE( GDCMatroska )
+
+
+PROXYFILE_LIST_START
+/* Start of list */
+  REFERENCE_PROXY_FILE( GDCMatroska ),
+/* End of list */
+PROXYFILE_LIST_END
+
+
+DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
+
+#ifdef __cplusplus
+}  /*extern "C" */
+#endif
+
+/* end of generated dlldata file */

Added: trunk/MatroskaUtils/GDC/GDCMatroska/registration.ico
===================================================================
(Binary files differ)


Property changes on: trunk/MatroskaUtils/GDC/GDCMatroska/registration.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/MatroskaUtils/GDC/GDCMatroska/resource.h
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/resource.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/resource.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,20 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by GoogleDesktopComponentSample1.rc
+//
+#define IDS_PROJNAME                    100
+#define IDR_SAMPLE                      101
+#define IDR_INDEXMATROSKA               102
+#define IDI_ICON1                       201
+#define IDI_REGISTRATIONICON            201
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        202
+#define _APS_NEXT_COMMAND_VALUE         32768
+#define _APS_NEXT_CONTROL_VALUE         201
+#define _APS_NEXT_SYMED_VALUE           103
+#endif
+#endif

Added: trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.cpp
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// GDCMatroska.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

Added: trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h
===================================================================
--- trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GDCMatroska/stdafx.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,43 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+
+// Modify the following defines if you have to target a platform prior to the ones specified below.
+// Refer to MSDN for the latest info on corresponding values for different platforms.
+#ifndef WINVER				// Allow use of features specific to Windows 95 and Windows NT 4 or later.
+#define WINVER 0x0400		// Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
+#endif
+
+#ifndef _WIN32_WINNT		// Allow use of features specific to Windows NT 4 or later.
+#define _WIN32_WINNT 0x0400	// Change this to the appropriate value to target Windows 2000 or later.
+#endif						
+
+#ifndef _WIN32_WINDOWS		// Allow use of features specific to Windows 98 or later.
+#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
+#endif
+
+#ifndef _WIN32_IE			// Allow use of features specific to IE 4.0 or later.
+#define _WIN32_IE 0x0400	// Change this to the appropriate value to target IE 5.0 or later.
+#endif
+
+#define _ATL_APARTMENT_THREADED
+#define _ATL_NO_AUTOMATIC_NAMESPACE
+
+//#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit
+
+// turns off ATL's hiding of some common and often safely ignored warning messages
+#define _ATL_ALL_WARNINGS
+
+
+#include "resource.h"
+#include <atlbase.h>
+#include <atlcom.h>
+
+#include "../common/GoogleDesktopSearchAPI.h"
+#include "../common/GoogleDesktopComponentRegistration.h"
+
+using namespace ATL;

Added: trunk/MatroskaUtils/GDC/GoogleDesktopComponent.sln
===================================================================
--- trunk/MatroskaUtils/GDC/GoogleDesktopComponent.sln	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/GoogleDesktopComponent.sln	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,58 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmatroska", "..\..\libmatroska\make\vc7\lib\static\libmatroska.v71.vcproj", "{FD69BB21-A9BF-4486-9B8A-F0E88C82F704}"
+	ProjectSection(ProjectDependencies) = postProject
+		{168C0F0D-9975-4D24-885C-87A9B018617E} = {168C0F0D-9975-4D24-885C-87A9B018617E}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libebml", "..\..\libebml\make\vc7\lib\libebml.v71.vcproj", "{168C0F0D-9975-4D24-885C-87A9B018617E}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MatroskaUtils", "..\MatroskaUtils.vcproj", "{E3C2A4E1-3DC5-4B67-A3F1-D8AB645DC750}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GoogleDesktopComponentCommon", "common\GoogleDesktopComponentCommon.vcproj", "{5A0D55C3-7C2A-4B61-8F28-6B757052788F}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GDCMatroska", "GDCMatroska\GDCMatroska.vcproj", "{D850DCDA-78AD-42C1-BF71-B5995900BCA9}"
+	ProjectSection(ProjectDependencies) = postProject
+		{168C0F0D-9975-4D24-885C-87A9B018617E} = {168C0F0D-9975-4D24-885C-87A9B018617E}
+		{FD69BB21-A9BF-4486-9B8A-F0E88C82F704} = {FD69BB21-A9BF-4486-9B8A-F0E88C82F704}
+		{5A0D55C3-7C2A-4B61-8F28-6B757052788F} = {5A0D55C3-7C2A-4B61-8F28-6B757052788F}
+		{E3C2A4E1-3DC5-4B67-A3F1-D8AB645DC750} = {E3C2A4E1-3DC5-4B67-A3F1-D8AB645DC750}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{FD69BB21-A9BF-4486-9B8A-F0E88C82F704}.Debug.ActiveCfg = Debug|Win32
+		{FD69BB21-A9BF-4486-9B8A-F0E88C82F704}.Debug.Build.0 = Debug|Win32
+		{FD69BB21-A9BF-4486-9B8A-F0E88C82F704}.Release.ActiveCfg = Release|Win32
+		{FD69BB21-A9BF-4486-9B8A-F0E88C82F704}.Release.Build.0 = Release|Win32
+		{168C0F0D-9975-4D24-885C-87A9B018617E}.Debug.ActiveCfg = Debug|Win32
+		{168C0F0D-9975-4D24-885C-87A9B018617E}.Debug.Build.0 = Debug|Win32
+		{168C0F0D-9975-4D24-885C-87A9B018617E}.Release.ActiveCfg = Release|Win32
+		{168C0F0D-9975-4D24-885C-87A9B018617E}.Release.Build.0 = Release|Win32
+		{E3C2A4E1-3DC5-4B67-A3F1-D8AB645DC750}.Debug.ActiveCfg = Debug Minimal|Win32
+		{E3C2A4E1-3DC5-4B67-A3F1-D8AB645DC750}.Debug.Build.0 = Debug Minimal|Win32
+		{E3C2A4E1-3DC5-4B67-A3F1-D8AB645DC750}.Release.ActiveCfg = Release Minimal|Win32
+		{E3C2A4E1-3DC5-4B67-A3F1-D8AB645DC750}.Release.Build.0 = Release Minimal|Win32
+		{5A0D55C3-7C2A-4B61-8F28-6B757052788F}.Debug.ActiveCfg = Debug|Win32
+		{5A0D55C3-7C2A-4B61-8F28-6B757052788F}.Debug.Build.0 = Debug|Win32
+		{5A0D55C3-7C2A-4B61-8F28-6B757052788F}.Release.ActiveCfg = Release|Win32
+		{5A0D55C3-7C2A-4B61-8F28-6B757052788F}.Release.Build.0 = Release|Win32
+		{D850DCDA-78AD-42C1-BF71-B5995900BCA9}.Debug.ActiveCfg = Debug|Win32
+		{D850DCDA-78AD-42C1-BF71-B5995900BCA9}.Debug.Build.0 = Debug|Win32
+		{D850DCDA-78AD-42C1-BF71-B5995900BCA9}.Release.ActiveCfg = Release|Win32
+		{D850DCDA-78AD-42C1-BF71-B5995900BCA9}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentCommon.vcproj
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentCommon.vcproj	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentCommon.vcproj	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="GoogleDesktopComponentCommon"
+	ProjectGUID="{5A0D55C3-7C2A-4B61-8F28-6B757052788F}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="4"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="4"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath=".\GoogleDesktopComponentRegistration.h">
+			</File>
+			<File
+				RelativePath=".\stdafx.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+			<File
+				RelativePath=".\GoogleDesktopComponentRegistration.def">
+			</File>
+		</Filter>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath=".\GoogleDesktopComponentRegistration.cpp">
+			</File>
+			<File
+				RelativePath=".\GoogleDesktopSearchAPI.idl">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCMIDLTool"
+						GenerateTypeLibrary="TRUE"
+						TypeLibraryName=""
+						HeaderFileName="$(InputName).h"
+						DLLDataFileName=""/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCMIDLTool"
+						GenerateTypeLibrary="FALSE"
+						TypeLibraryName=""
+						HeaderFileName="$(InputName).h"
+						DLLDataFileName=""/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\stdafx.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.cpp
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,78 @@
+// Copyright 2004 Google Inc
+// All rights reserved
+// 
+#include "stdafx.h"
+#include <atlsafe.h>
+
+#include "GoogleDesktopSearchAPI.h"
+#include "GoogleDesktopComponentRegistration.h"
+
+extern "C" HRESULT RegisterComponentHelper(REFCLSID clsid,
+                                const wchar_t *title, 
+                                const wchar_t *description,
+                                const wchar_t *icon,
+                                int num_suffixes,
+                                const wchar_t *suffixes[]) { 
+  CComPtr<IGoogleDesktopSearchComponentRegister> spRegister;
+  HRESULT hr;
+  
+  hr = spRegister.CoCreateInstance(CLSID_GoogleDesktopSearchRegister);
+  
+  if (SUCCEEDED(hr)) {
+    ATLASSERT(spRegister != NULL);
+    
+    // Component description is 6 strings
+    CComSafeArray<VARIANT> arr_descr(6);
+
+    arr_descr.SetAt(0, CComVariant(L"Title"));
+    arr_descr.SetAt(1, CComVariant(title));
+    arr_descr.SetAt(2, CComVariant(L"Description"));
+    arr_descr.SetAt(3, CComVariant(description));
+    arr_descr.SetAt(4, CComVariant(L"Icon"));
+    arr_descr.SetAt(5, CComVariant(icon));
+
+    // our CLSID in string format
+    CComBSTR clsid(clsid);
+    
+    // Wrap description array in variant
+    CComVariant descr(arr_descr.m_psa);
+    CComPtr<IGoogleDesktopSearchComponentRegistration> spRegistration;
+
+    // and register
+    hr = spRegister->RegisterComponent(clsid, descr, &spRegistration);
+    if (FAILED(hr))
+      return hr;
+
+    ATLASSERT(FAILED(hr) || spRegistration);
+
+    // success, now register extensions
+    for (int i = 0; SUCCEEDED(hr) && i < num_suffixes; i++) 
+      hr = spRegistration->RegisterExtension(CComBSTR(suffixes[i]));
+      
+    // revoke our registration in case any of our extensions fail to register
+    if (FAILED(hr)) {
+      // ignore the error - we've already failed
+      HRESULT ignore;
+      
+      ignore = spRegister->UnregisterComponent(CComBSTR(clsid));
+    }
+  }
+
+  return hr;
+}
+
+extern "C" HRESULT UnregisterComponentHelper(REFCLSID clsid) {
+   CComPtr<IGoogleDesktopSearchComponentRegister> spRegister;
+  HRESULT hr;
+  
+  hr = spRegister.CoCreateInstance(CLSID_GoogleDesktopSearchRegister);
+  
+  if (SUCCEEDED(hr)) { 
+    // our CLSID in string format
+    CComBSTR bstrClsid(clsid);
+  
+    hr = spRegister->UnregisterComponent(bstrClsid);
+  }
+  
+  return hr;
+}

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.def
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.def	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.def	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,5 @@
+LIBRARY			GoogleDesktopComponentRegistration
+
+EXPORTS
+	RegisterComponentHelper
+	UnregisterComponentHelper
\ No newline at end of file

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.h
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopComponentRegistration.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,20 @@
+// Copyright 2004 Google Inc
+// All rights reserved
+// 
+#ifndef __GOOGLE_DESKTOP_COMPONENT_REGISTRATION_H__
+#define __GOOGLE_DESKTOP_COMPONENT_REGISTRATION_H__
+
+// Attempts to register the provided CLSID with GDS
+// if num_suffixes is zero does not attempt to register for crawl 
+// events
+extern "C" HRESULT RegisterComponentHelper(REFCLSID clsid,
+                                const wchar_t *title, 
+                                const wchar_t *description,
+                                const wchar_t *icon,
+                                int num_suffixes,
+                                const wchar_t *suffixes[]);
+
+extern "C" HRESULT UnregisterComponentHelper(REFCLSID clsid);
+
+
+#endif  // __GOOGLE_DESKTOP_COMPONENT_REGISTRATION_H__

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,891 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Thu Mar 24 22:19:47 2005
+ */
+/* Compiler settings for .\GoogleDesktopSearchAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data 
+    VC __declspec() decoration level: 
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __GoogleDesktopSearchAPI_h__
+#define __GoogleDesktopSearchAPI_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */ 
+
+#ifndef __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__
+#define __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchComponentRegistration IGoogleDesktopSearchComponentRegistration;
+#endif 	/* __IGoogleDesktopSearchComponentRegistration_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__
+#define __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchComponentRegister IGoogleDesktopSearchComponentRegister;
+#endif 	/* __IGoogleDesktopSearchComponentRegister_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEvent_FWD_DEFINED__
+#define __IGoogleDesktopSearchEvent_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchEvent IGoogleDesktopSearchEvent;
+#endif 	/* __IGoogleDesktopSearchEvent_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEventFactory_FWD_DEFINED__
+#define __IGoogleDesktopSearchEventFactory_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchEventFactory IGoogleDesktopSearchEventFactory;
+#endif 	/* __IGoogleDesktopSearchEventFactory_FWD_DEFINED__ */
+
+
+#ifndef __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+#define __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+typedef interface DGoogleDesktopSearchFileNotify DGoogleDesktopSearchFileNotify;
+#endif 	/* __DGoogleDesktopSearchFileNotify_FWD_DEFINED__ */
+
+
+#ifndef __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+#define __DGoogleDesktopSearchFileNotify_FWD_DEFINED__
+typedef interface DGoogleDesktopSearchFileNotify DGoogleDesktopSearchFileNotify;
+#endif 	/* __DGoogleDesktopSearchFileNotify_FWD_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEvent_FWD_DEFINED__
+#define __IGoogleDesktopSearchEvent_FWD_DEFINED__
+typedef interface IGoogleDesktopSearchEvent IGoogleDesktopSearchEvent;
+#endif 	/* __IGoogleDesktopSearchEvent_FWD_DEFINED__ */
+
+
+#ifndef __GoogleDesktopSearch_FWD_DEFINED__
+#define __GoogleDesktopSearch_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class GoogleDesktopSearch GoogleDesktopSearch;
+#else
+typedef struct GoogleDesktopSearch GoogleDesktopSearch;
+#endif /* __cplusplus */
+
+#endif 	/* __GoogleDesktopSearch_FWD_DEFINED__ */
+
+
+#ifndef __GoogleDesktopSearchRegister_FWD_DEFINED__
+#define __GoogleDesktopSearchRegister_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class GoogleDesktopSearchRegister GoogleDesktopSearchRegister;
+#else
+typedef struct GoogleDesktopSearchRegister GoogleDesktopSearchRegister;
+#endif /* __cplusplus */
+
+#endif 	/* __GoogleDesktopSearchRegister_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void * ); 
+
+/* interface __MIDL_itf_GoogleDesktopSearchAPI_0000 */
+/* [local] */ 
+
+#include <winerror.h>
+#define E_EXTENSION_REGISTERED           MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0001)
+#define E_COMPONENT_NOT_REGISTERED       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0002)
+#define E_NO_SUCH_SCHEMA                 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0003)
+#define E_NO_SUCH_PROPERTY               MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0004)
+#define E_COMPONENT_DISABLED             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0005)
+#define E_COMPONENT_ALREADY_REGISTERED   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0006)
+#define S_INDEXING_PAUSED                MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x0007)
+#define E_EVENT_TOO_LARGE                MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0008)
+#define E_SERVICE_NOT_RUNNING            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0009)
+#define E_INVALID_EVENT_FLAGS            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x000A)
+
+
+extern RPC_IF_HANDLE __MIDL_itf_GoogleDesktopSearchAPI_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_GoogleDesktopSearchAPI_0000_v0_0_s_ifspec;
+
+#ifndef __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchComponentRegistration */
+/* [unique][oleautomation][dual][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IGoogleDesktopSearchComponentRegistration;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("151857B2-26E0-4f4d-ACED-4F7E4B2065EF")
+    IGoogleDesktopSearchComponentRegistration : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE RegisterExtension( 
+            /* [in] */ BSTR extension_handled) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchComponentRegistrationVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IGoogleDesktopSearchComponentRegistration * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IGoogleDesktopSearchComponentRegistration * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [out] */ UINT *pctinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+        
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+        
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *RegisterExtension )( 
+            IGoogleDesktopSearchComponentRegistration * This,
+            /* [in] */ BSTR extension_handled);
+        
+        END_INTERFACE
+    } IGoogleDesktopSearchComponentRegistrationVtbl;
+
+    interface IGoogleDesktopSearchComponentRegistration
+    {
+        CONST_VTBL struct IGoogleDesktopSearchComponentRegistrationVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchComponentRegistration_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchComponentRegistration_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchComponentRegistration_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchComponentRegistration_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchComponentRegistration_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchComponentRegistration_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IGoogleDesktopSearchComponentRegistration_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchComponentRegistration_RegisterExtension(This,extension_handled)	\
+    (This)->lpVtbl -> RegisterExtension(This,extension_handled)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegistration_RegisterExtension_Proxy( 
+    IGoogleDesktopSearchComponentRegistration * This,
+    /* [in] */ BSTR extension_handled);
+
+
+void __RPC_STUB IGoogleDesktopSearchComponentRegistration_RegisterExtension_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchComponentRegistration_INTERFACE_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchComponentRegister */
+/* [unique][oleautomation][dual][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IGoogleDesktopSearchComponentRegister;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("9B311E80-BC95-4518-A58C-446EC9A082B5")
+    IGoogleDesktopSearchComponentRegister : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE RegisterComponent( 
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ VARIANT component_description,
+            /* [retval][out] */ IGoogleDesktopSearchComponentRegistration **registration) = 0;
+        
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE UnregisterComponent( 
+            /* [in] */ BSTR component_guid_or_progid) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchComponentRegisterVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IGoogleDesktopSearchComponentRegister * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IGoogleDesktopSearchComponentRegister * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [out] */ UINT *pctinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+        
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+        
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *RegisterComponent )( 
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ VARIANT component_description,
+            /* [retval][out] */ IGoogleDesktopSearchComponentRegistration **registration);
+        
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterComponent )( 
+            IGoogleDesktopSearchComponentRegister * This,
+            /* [in] */ BSTR component_guid_or_progid);
+        
+        END_INTERFACE
+    } IGoogleDesktopSearchComponentRegisterVtbl;
+
+    interface IGoogleDesktopSearchComponentRegister
+    {
+        CONST_VTBL struct IGoogleDesktopSearchComponentRegisterVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchComponentRegister_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchComponentRegister_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchComponentRegister_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchComponentRegister_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchComponentRegister_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchComponentRegister_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IGoogleDesktopSearchComponentRegister_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchComponentRegister_RegisterComponent(This,component_guid_or_progid,component_description,registration)	\
+    (This)->lpVtbl -> RegisterComponent(This,component_guid_or_progid,component_description,registration)
+
+#define IGoogleDesktopSearchComponentRegister_UnregisterComponent(This,component_guid_or_progid)	\
+    (This)->lpVtbl -> UnregisterComponent(This,component_guid_or_progid)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegister_RegisterComponent_Proxy( 
+    IGoogleDesktopSearchComponentRegister * This,
+    /* [in] */ BSTR component_guid_or_progid,
+    /* [in] */ VARIANT component_description,
+    /* [retval][out] */ IGoogleDesktopSearchComponentRegistration **registration);
+
+
+void __RPC_STUB IGoogleDesktopSearchComponentRegister_RegisterComponent_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchComponentRegister_UnregisterComponent_Proxy( 
+    IGoogleDesktopSearchComponentRegister * This,
+    /* [in] */ BSTR component_guid_or_progid);
+
+
+void __RPC_STUB IGoogleDesktopSearchComponentRegister_UnregisterComponent_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchComponentRegister_INTERFACE_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchEvent */
+/* [unique][oleautomation][dual][uuid][object] */ 
+
+
+enum EventFlags
+    {	EventFlagIndexable	= 0x1,
+	EventFlagHistorical	= 0x10
+    } ;
+
+EXTERN_C const IID IID_IGoogleDesktopSearchEvent;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("BDAC0047-4759-43a1-BA04-B148E1679E87")
+    IGoogleDesktopSearchEvent : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE AddProperty( 
+            BSTR property_name,
+            VARIANT property_value) = 0;
+        
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE Send( 
+            long event_flags) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchEventVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IGoogleDesktopSearchEvent * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IGoogleDesktopSearchEvent * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
+            IGoogleDesktopSearchEvent * This,
+            /* [out] */ UINT *pctinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+        
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
+            IGoogleDesktopSearchEvent * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+        
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *AddProperty )( 
+            IGoogleDesktopSearchEvent * This,
+            BSTR property_name,
+            VARIANT property_value);
+        
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *Send )( 
+            IGoogleDesktopSearchEvent * This,
+            long event_flags);
+        
+        END_INTERFACE
+    } IGoogleDesktopSearchEventVtbl;
+
+    interface IGoogleDesktopSearchEvent
+    {
+        CONST_VTBL struct IGoogleDesktopSearchEventVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchEvent_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchEvent_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchEvent_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchEvent_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchEvent_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchEvent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IGoogleDesktopSearchEvent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchEvent_AddProperty(This,property_name,property_value)	\
+    (This)->lpVtbl -> AddProperty(This,property_name,property_value)
+
+#define IGoogleDesktopSearchEvent_Send(This,event_flags)	\
+    (This)->lpVtbl -> Send(This,event_flags)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEvent_AddProperty_Proxy( 
+    IGoogleDesktopSearchEvent * This,
+    BSTR property_name,
+    VARIANT property_value);
+
+
+void __RPC_STUB IGoogleDesktopSearchEvent_AddProperty_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEvent_Send_Proxy( 
+    IGoogleDesktopSearchEvent * This,
+    long event_flags);
+
+
+void __RPC_STUB IGoogleDesktopSearchEvent_Send_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchEvent_INTERFACE_DEFINED__ */
+
+
+#ifndef __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__
+#define __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__
+
+/* interface IGoogleDesktopSearchEventFactory */
+/* [unique][oleautomation][dual][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IGoogleDesktopSearchEventFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("A79E51C6-DB2D-4a44-848E-A8EBB22E5337")
+    IGoogleDesktopSearchEventFactory : public IDispatch
+    {
+    public:
+        virtual /* [id] */ HRESULT STDMETHODCALLTYPE CreateEvent( 
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ BSTR schema_name,
+            /* [retval][out] */ IDispatch **event) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IGoogleDesktopSearchEventFactoryVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IGoogleDesktopSearchEventFactory * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IGoogleDesktopSearchEventFactory * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
+            IGoogleDesktopSearchEventFactory * This,
+            /* [out] */ UINT *pctinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+        
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+        
+        /* [id] */ HRESULT ( STDMETHODCALLTYPE *CreateEvent )( 
+            IGoogleDesktopSearchEventFactory * This,
+            /* [in] */ BSTR component_guid_or_progid,
+            /* [in] */ BSTR schema_name,
+            /* [retval][out] */ IDispatch **event);
+        
+        END_INTERFACE
+    } IGoogleDesktopSearchEventFactoryVtbl;
+
+    interface IGoogleDesktopSearchEventFactory
+    {
+        CONST_VTBL struct IGoogleDesktopSearchEventFactoryVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IGoogleDesktopSearchEventFactory_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IGoogleDesktopSearchEventFactory_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define IGoogleDesktopSearchEventFactory_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define IGoogleDesktopSearchEventFactory_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IGoogleDesktopSearchEventFactory_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IGoogleDesktopSearchEventFactory_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IGoogleDesktopSearchEventFactory_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IGoogleDesktopSearchEventFactory_CreateEvent(This,component_guid_or_progid,schema_name,event)	\
+    (This)->lpVtbl -> CreateEvent(This,component_guid_or_progid,schema_name,event)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE IGoogleDesktopSearchEventFactory_CreateEvent_Proxy( 
+    IGoogleDesktopSearchEventFactory * This,
+    /* [in] */ BSTR component_guid_or_progid,
+    /* [in] */ BSTR schema_name,
+    /* [retval][out] */ IDispatch **event);
+
+
+void __RPC_STUB IGoogleDesktopSearchEventFactory_CreateEvent_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif 	/* __IGoogleDesktopSearchEventFactory_INTERFACE_DEFINED__ */
+
+
+
+#ifndef __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__
+#define __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__
+
+/* library GoogleDesktopSearchAPILib */
+/* [helpstring][version][uuid] */ 
+
+
+
+
+EXTERN_C const IID LIBID_GoogleDesktopSearchAPILib;
+
+#ifndef __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__
+#define __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__
+
+/* dispinterface DGoogleDesktopSearchFileNotify */
+/* [uuid] */ 
+
+
+EXTERN_C const IID DIID_DGoogleDesktopSearchFileNotify;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+    MIDL_INTERFACE("A1DE6DB8-B20F-445c-BFDE-16C8D53A2FA1")
+    DGoogleDesktopSearchFileNotify : public IDispatch
+    {
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct DGoogleDesktopSearchFileNotifyVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            DGoogleDesktopSearchFileNotify * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            DGoogleDesktopSearchFileNotify * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( 
+            DGoogleDesktopSearchFileNotify * This,
+            /* [out] */ UINT *pctinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( 
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ UINT iTInfo,
+            /* [in] */ LCID lcid,
+            /* [out] */ ITypeInfo **ppTInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( 
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ REFIID riid,
+            /* [size_is][in] */ LPOLESTR *rgszNames,
+            /* [in] */ UINT cNames,
+            /* [in] */ LCID lcid,
+            /* [size_is][out] */ DISPID *rgDispId);
+        
+        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( 
+            DGoogleDesktopSearchFileNotify * This,
+            /* [in] */ DISPID dispIdMember,
+            /* [in] */ REFIID riid,
+            /* [in] */ LCID lcid,
+            /* [in] */ WORD wFlags,
+            /* [out][in] */ DISPPARAMS *pDispParams,
+            /* [out] */ VARIANT *pVarResult,
+            /* [out] */ EXCEPINFO *pExcepInfo,
+            /* [out] */ UINT *puArgErr);
+        
+        END_INTERFACE
+    } DGoogleDesktopSearchFileNotifyVtbl;
+
+    interface DGoogleDesktopSearchFileNotify
+    {
+        CONST_VTBL struct DGoogleDesktopSearchFileNotifyVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define DGoogleDesktopSearchFileNotify_QueryInterface(This,riid,ppvObject)	\
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define DGoogleDesktopSearchFileNotify_AddRef(This)	\
+    (This)->lpVtbl -> AddRef(This)
+
+#define DGoogleDesktopSearchFileNotify_Release(This)	\
+    (This)->lpVtbl -> Release(This)
+
+
+#define DGoogleDesktopSearchFileNotify_GetTypeInfoCount(This,pctinfo)	\
+    (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define DGoogleDesktopSearchFileNotify_GetTypeInfo(This,iTInfo,lcid,ppTInfo)	\
+    (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define DGoogleDesktopSearchFileNotify_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)	\
+    (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define DGoogleDesktopSearchFileNotify_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)	\
+    (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+#endif 	/* __DGoogleDesktopSearchFileNotify_DISPINTERFACE_DEFINED__ */
+
+
+EXTERN_C const CLSID CLSID_GoogleDesktopSearch;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("579822B3-44CD-4786-83E0-AE32BCB9E6B1")
+GoogleDesktopSearch;
+#endif
+
+EXTERN_C const CLSID CLSID_GoogleDesktopSearchRegister;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("BB8B07A0-B8D1-44e0-A262-C9B7212AEC68")
+GoogleDesktopSearchRegister;
+#endif
+#endif /* __GoogleDesktopSearchAPILib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *, unsigned long            , BSTR * ); 
+unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned char *, BSTR * ); 
+unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); 
+void                      __RPC_USER  BSTR_UserFree(     unsigned long *, BSTR * ); 
+
+unsigned long             __RPC_USER  VARIANT_UserSize(     unsigned long *, unsigned long            , VARIANT * ); 
+unsigned char * __RPC_USER  VARIANT_UserMarshal(  unsigned long *, unsigned char *, VARIANT * ); 
+unsigned char * __RPC_USER  VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * ); 
+void                      __RPC_USER  VARIANT_UserFree(     unsigned long *, VARIANT * ); 
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.idl
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.idl	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI.idl	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,227 @@
+// Copyright 2004-2005 Google Inc.
+// All Rights Reserved
+//
+import "oaidl.idl";
+import "ocidl.idl";
+
+
+cpp_quote("#include <winerror.h>")
+
+// GDS API specific HRESULTs
+cpp_quote("#define E_EXTENSION_REGISTERED           MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0001)")
+cpp_quote("#define E_COMPONENT_NOT_REGISTERED       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0002)")
+cpp_quote("#define E_NO_SUCH_SCHEMA                 MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0003)")
+cpp_quote("#define E_NO_SUCH_PROPERTY               MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0004)")
+cpp_quote("#define E_COMPONENT_DISABLED             MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0005)")
+cpp_quote("#define E_COMPONENT_ALREADY_REGISTERED   MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0006)")
+cpp_quote("#define S_INDEXING_PAUSED                MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x0007)")
+cpp_quote("#define E_EVENT_TOO_LARGE                MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0008)")
+cpp_quote("#define E_SERVICE_NOT_RUNNING            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0009)")
+cpp_quote("#define E_INVALID_EVENT_FLAGS            MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x000A)")
+
+[
+  object,
+  uuid(151857B2-26E0-4f4d-ACED-4F7E4B2065EF),
+  dual,
+  oleautomation,
+  pointer_default(unique)
+]
+// Components interested in crawl events call this to register their
+// event interest. Components who are only interested in generating
+// events needn't concern themselves with this interface.
+interface IGoogleDesktopSearchComponentRegistration: IDispatch 
+{
+  // Must be invoked by every component interested in receiving
+  // crawler events for a file extension.
+  // @param extension_handled an extension this component wishes to handle
+  // @return S_OK on success
+  //         E_EXTENSION_REGISTERED in case the extension conflicts with an
+  //            existing registration. 
+  //         another appropriate error.
+  [id(0x00000001)]
+  HRESULT RegisterExtension(
+              [in] BSTR extension_handled);
+};
+
+[
+  object,
+  uuid(9B311E80-BC95-4518-A58C-446EC9A082B5),
+  dual,
+  oleautomation,
+  pointer_default(unique)
+]
+// Components are required to to call this interface to register
+// themselves with Google Desktop Search before they can send events
+// or receive crawl events.
+interface IGoogleDesktopSearchComponentRegister: IDispatch {
+  // Must be invoked by every component interested in generating
+  // events or receiving crawler events.
+  // @param component_guid_or_progid a string spelling out the component's GUID 
+  //        or its ProgID.
+  // @param component_description is a VARIANT containing a SAFEARRY. 
+  //        The safearray contains pairs, where element 2N is the name of 
+  //        a descriptive parameter, and element 2N+1 is the value of that
+  //        parameter. 
+  //        Mandated description parameters are:
+  //          - "Title" component title as displayed on the preference page.
+  //          - "Description", component description as displayed on the 
+  //             preferences page.
+  //          - "ICON" the component icon, which is a string pointing to an ICON
+  //             resource. This string is of the format <module>,<id>, e.g
+  //             "c:\program files\boo\comp.dll,23".
+  // @return S_OK on success, appropriate error on failure, such
+  //        as if the component's classID or appID is not registered, 
+  //        if the component is prohibited by policy or whatever.
+  // @note for executables and plugins that wish to generate events, we 
+  //        mandate that they register a classid and/or a progid, in order 
+  //        to have a guaranteed unique identifier for the event generator.
+  [id(0x00000001)]
+  HRESULT RegisterComponent(
+              [in] BSTR component_guid_or_progid,
+              [in] VARIANT component_description,
+              [out, retval] IGoogleDesktopSearchComponentRegistration **registration);
+
+  // Invoked by a component on unregistration. 
+  // Cancels the component registration, along with all file types
+  // it has registed for.
+  [id(0x00000002)]
+  HRESULT UnregisterComponent(
+              [in] BSTR component_guid_or_progid);
+};
+
+[
+  object,
+  uuid(BDAC0047-4759-43a1-BA04-B148E1679E87),
+  dual,
+  oleautomation,
+  pointer_default(unique)
+]
+// Event interface, one of these is constructed for every event generated
+// by a component
+interface IGoogleDesktopSearchEvent: IDispatch
+{
+  enum EventFlags 
+  {
+    // Set this flag on all events
+    EventFlagIndexable   = 0x00000001,
+    // Set this flag when the event is historical, i.e. generated from a crawl
+    // over files or other data generated in the past. This is as opposed to 
+    // events generated in realtime from events presently occurring
+    EventFlagHistorical  = 0x00000010
+  };
+
+  // Add a typed property.
+  // @param property_name name of the property, the name must exist in 
+  //    the selected schema.
+  // @param property_value value of the property, must be typed appropriately
+  //    for the selected schema.
+  // @return 
+  //        S_OK in success,
+  //        E_NO_SUCH_PROPERTY if property does not exist,
+  //          any of the errors returned from VariantChangeType if the 
+  //          type of the property does not match the type declared in the schema,
+  //          or cannot be coerced to the correct type.
+  //        Another appropriate error value.
+  [id(0x00000001)]
+  HRESULT AddProperty(BSTR property_name, VARIANT property_value);
+  
+  // Sends the event. 
+  // @param event_flags event flags, a bitwise OR of EventFlags enumeration
+  //        values.
+  // @note events sent as result of crawl event notifications should have 
+  //        not set the EventFlagHistorical flag, since the event might have 
+  //        been generated as result of realtime filesystem changes.
+  // @note it is not possible to resend, nor to add properties to a sent event.
+  [id(0x00000002)]
+  HRESULT Send(long event_flags);
+};
+
+[
+  object,
+  uuid(A79E51C6-DB2D-4a44-848E-A8EBB22E5337),
+  dual,
+  oleautomation,
+  pointer_default(unique)
+]
+// Factory interface to yield new events.
+interface IGoogleDesktopSearchEventFactory: IDispatch
+{
+  // Creates a new event to the specified schema.
+  // @param component_guid_or_progid a string spelling out the creating 
+  //        component's GUID or its appID.
+  // @param schema_name the requested event schema.
+  // @return S_OK on success,
+  //        E_NO_SUCH_SCHEMA if schema does not exist,
+  //        otherwise an appropriate error
+  [id(0x00000001)]
+  HRESULT CreateEvent(
+              [in] BSTR component_guid_or_progid,
+              [in ]BSTR schema_name,
+              [out, retval] IDispatch **event);
+};
+
+
+[
+  uuid(A1DE6DB8-B20F-445c-BFDE-16C8D53A2FA1)
+]
+// This is implemented by components that wish to receive crawl notifications
+// The component is responsible for instantiating the event factory and 
+// issuing the appropriate events
+dispinterface DGoogleDesktopSearchFileNotify
+{
+properties:
+methods:
+  // Invoked when the crawler comes across a file registered to this 
+  // component. Crawl components implement this function, then create and send
+  // zero or more events - as appropriate for the file.
+  // @param full_path_to_file the file to handle
+  // @param event_factory event factory for creating the events
+  // @return 
+  //      S_OK if the file was handled, 
+  //      an appropriate error otherwise.
+  // @note the crawler may do special handling for certain error values. 
+  //      In particular it may retry indexing for some specific errors, 
+  //      such as e.g.HRESULT_FROM_WIN32(ERROR_SHARING_VIOLATION), so components
+  //      should be as accurate in error reporting as possible.
+  //      The crawler may also use any error info object returned from the 
+  //      component for logging and reporting, so don't skimp on error 
+  //      eporting through SetErrorInfo.
+  [id(0x00000001)]
+  HRESULT HandleFile(
+              [in] BSTR full_path_to_file,
+              [in] IDispatch *event_factory);
+};
+
+[
+  uuid(3D056FE7-EA8E-481a-B18F-0B02EBF6B3C1),
+  version(1.0),
+  helpstring("Google Desktop Search API 1.0 Type Library")
+]
+library GoogleDesktopSearchAPILib
+{
+  importlib("stdole2.tlb");
+
+  // pull these interfaces into the typelib
+  interface DGoogleDesktopSearchFileNotify;
+  interface IGoogleDesktopSearchEvent;
+  
+  [
+    uuid(579822B3-44CD-4786-83E0-AE32BCB9E6B1),
+    helpstring("GoogleDesktopSearch Class")
+  ]
+  // Instantiate this class to get the event factory.
+  coclass GoogleDesktopSearch
+  {
+    [default] interface IGoogleDesktopSearchEventFactory;
+  };
+
+  [
+    uuid(BB8B07A0-B8D1-44e0-A262-C9B7212AEC68),
+    helpstring("GoogleDesktopSearchRegister Class")
+  ]
+  // Instantiate this class to get to the registration mechanism
+  coclass GoogleDesktopSearchRegister
+  {
+    [default] interface IGoogleDesktopSearchComponentRegister;
+  };
+};

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_i.c
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_i.c	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_i.c	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,105 @@
+
+
+/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
+
+/* link this file in with the server and any clients */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Thu Mar 24 22:19:47 2005
+ */
+/* Compiler settings for .\GoogleDesktopSearchAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data 
+    VC __declspec() decoration level: 
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#if !defined(_M_IA64) && !defined(_M_AMD64)
+
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+
+
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifdef _MIDL_USE_GUIDDEF_
+
+#ifndef INITGUID
+#define INITGUID
+#include <guiddef.h>
+#undef INITGUID
+#else
+#include <guiddef.h>
+#endif
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+        DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#else // !_MIDL_USE_GUIDDEF_
+
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+
+typedef struct _IID
+{
+    unsigned long x;
+    unsigned short s1;
+    unsigned short s2;
+    unsigned char  c[8];
+} IID;
+
+#endif // __IID_DEFINED__
+
+#ifndef CLSID_DEFINED
+#define CLSID_DEFINED
+typedef IID CLSID;
+#endif // CLSID_DEFINED
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+        const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+
+#endif !_MIDL_USE_GUIDDEF_
+
+MIDL_DEFINE_GUID(IID, IID_IGoogleDesktopSearchComponentRegistration,0x151857B2,0x26E0,0x4f4d,0xAC,0xED,0x4F,0x7E,0x4B,0x20,0x65,0xEF);
+
+
+MIDL_DEFINE_GUID(IID, IID_IGoogleDesktopSearchComponentRegister,0x9B311E80,0xBC95,0x4518,0xA5,0x8C,0x44,0x6E,0xC9,0xA0,0x82,0xB5);
+
+
+MIDL_DEFINE_GUID(IID, IID_IGoogleDesktopSearchEvent,0xBDAC0047,0x4759,0x43a1,0xBA,0x04,0xB1,0x48,0xE1,0x67,0x9E,0x87);
+
+
+MIDL_DEFINE_GUID(IID, IID_IGoogleDesktopSearchEventFactory,0xA79E51C6,0xDB2D,0x4a44,0x84,0x8E,0xA8,0xEB,0xB2,0x2E,0x53,0x37);
+
+
+MIDL_DEFINE_GUID(IID, DIID_DGoogleDesktopSearchFileNotify,0xA1DE6DB8,0xB20F,0x445c,0xBF,0xDE,0x16,0xC8,0xD5,0x3A,0x2F,0xA1);
+
+
+MIDL_DEFINE_GUID(IID, LIBID_GoogleDesktopSearchAPILib,0x3D056FE7,0xEA8E,0x481a,0xB1,0x8F,0x0B,0x02,0xEB,0xF6,0xB3,0xC1);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_GoogleDesktopSearch,0x579822B3,0x44CD,0x4786,0x83,0xE0,0xAE,0x32,0xBC,0xB9,0xE6,0xB1);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_GoogleDesktopSearchRegister,0xBB8B07A0,0xB8D1,0x44e0,0xA2,0x62,0xC9,0xB7,0x21,0x2A,0xEC,0x68);
+
+#undef MIDL_DEFINE_GUID
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
+

Added: trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_p.c
===================================================================
--- trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_p.c	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/GoogleDesktopSearchAPI_p.c	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,1468 @@
+
+
+/* this ALWAYS GENERATED file contains the proxy stub code */
+
+
+ /* File created by MIDL compiler version 6.00.0361 */
+/* at Thu Mar 24 22:19:47 2005
+ */
+/* Compiler settings for .\GoogleDesktopSearchAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data 
+    VC __declspec() decoration level: 
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING(  )
+
+#if !defined(_M_IA64) && !defined(_M_AMD64)
+
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+#if _MSC_VER >= 1200
+#pragma warning(push)
+#endif
+#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
+#pragma warning( disable: 4211 )  /* redefine extent to static */
+#pragma warning( disable: 4232 )  /* dllimport identity*/
+#define USE_STUBLESS_PROXY
+
+
+/* verify that the <rpcproxy.h> version is high enough to compile this file*/
+#ifndef __REDQ_RPCPROXY_H_VERSION__
+#define __REQUIRED_RPCPROXY_H_VERSION__ 475
+#endif
+
+
+#include "rpcproxy.h"
+#ifndef __RPCPROXY_H_VERSION__
+#error this stub requires an updated version of <rpcproxy.h>
+#endif // __RPCPROXY_H_VERSION__
+
+
+#include "GoogleDesktopSearchAPI.h"
+
+#define TYPE_FORMAT_STRING_SIZE   1071                              
+#define PROC_FORMAT_STRING_SIZE   247                               
+#define TRANSMIT_AS_TABLE_SIZE    0            
+#define WIRE_MARSHAL_TABLE_SIZE   2            
+
+typedef struct _MIDL_TYPE_FORMAT_STRING
+    {
+    short          Pad;
+    unsigned char  Format[ TYPE_FORMAT_STRING_SIZE ];
+    } MIDL_TYPE_FORMAT_STRING;
+
+typedef struct _MIDL_PROC_FORMAT_STRING
+    {
+    short          Pad;
+    unsigned char  Format[ PROC_FORMAT_STRING_SIZE ];
+    } MIDL_PROC_FORMAT_STRING;
+
+
+static RPC_SYNTAX_IDENTIFIER  _RpcTransferSyntax = 
+{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
+
+
+extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;
+extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
+
+
+extern const MIDL_STUB_DESC Object_StubDesc;
+
+
+extern const MIDL_SERVER_INFO IGoogleDesktopSearchComponentRegistration_ServerInfo;
+extern const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchComponentRegistration_ProxyInfo;
+
+
+extern const MIDL_STUB_DESC Object_StubDesc;
+
+
+extern const MIDL_SERVER_INFO IGoogleDesktopSearchComponentRegister_ServerInfo;
+extern const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchComponentRegister_ProxyInfo;
+
+
+extern const MIDL_STUB_DESC Object_StubDesc;
+
+
+extern const MIDL_SERVER_INFO IGoogleDesktopSearchEvent_ServerInfo;
+extern const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchEvent_ProxyInfo;
+
+
+extern const MIDL_STUB_DESC Object_StubDesc;
+
+
+extern const MIDL_SERVER_INFO IGoogleDesktopSearchEventFactory_ServerInfo;
+extern const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchEventFactory_ProxyInfo;
+
+
+extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
+
+#if !defined(__RPC_WIN32__)
+#error  Invalid build platform for this stub.
+#endif
+
+#if !(TARGET_IS_NT50_OR_LATER)
+#error You need a Windows 2000 or later to run this stub because it uses these features:
+#error   /robust command line switch.
+#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
+#error This app will die there with the RPC_X_WRONG_STUB_VERSION error.
+#endif
+
+
+static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
+    {
+        0,
+        {
+
+	/* Procedure RegisterExtension */
+
+			0x33,		/* FC_AUTO_HANDLE */
+			0x6c,		/* Old Flags:  object, Oi2 */
+/*  2 */	NdrFcLong( 0x0 ),	/* 0 */
+/*  6 */	NdrFcShort( 0x7 ),	/* 7 */
+/*  8 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */
+/* 10 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 12 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 14 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */
+			0x2,		/* 2 */
+/* 16 */	0x8,		/* 8 */
+			0x5,		/* Ext Flags:  new corr desc, srv corr check, */
+/* 18 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 20 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 22 */	NdrFcShort( 0x0 ),	/* 0 */
+
+	/* Parameter extension_handled */
+
+/* 24 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 26 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */
+/* 28 */	NdrFcShort( 0x1c ),	/* Type Offset=28 */
+
+	/* Return value */
+
+/* 30 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */
+/* 32 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */
+/* 34 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+	/* Procedure RegisterComponent */
+
+/* 36 */	0x33,		/* FC_AUTO_HANDLE */
+			0x6c,		/* Old Flags:  object, Oi2 */
+/* 38 */	NdrFcLong( 0x0 ),	/* 0 */
+/* 42 */	NdrFcShort( 0x7 ),	/* 7 */
+/* 44 */	NdrFcShort( 0x20 ),	/* x86 Stack size/offset = 32 */
+/* 46 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 48 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 50 */	0x47,		/* Oi2 Flags:  srv must size, clt must size, has return, has ext, */
+			0x4,		/* 4 */
+/* 52 */	0x8,		/* 8 */
+			0x5,		/* Ext Flags:  new corr desc, srv corr check, */
+/* 54 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 56 */	NdrFcShort( 0x21 ),	/* 33 */
+/* 58 */	NdrFcShort( 0x0 ),	/* 0 */
+
+	/* Parameter component_guid_or_progid */
+
+/* 60 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 62 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */
+/* 64 */	NdrFcShort( 0x1c ),	/* Type Offset=28 */
+
+	/* Parameter component_description */
+
+/* 66 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 68 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */
+/* 70 */	NdrFcShort( 0x40a ),	/* Type Offset=1034 */
+
+	/* Parameter registration */
+
+/* 72 */	NdrFcShort( 0x13 ),	/* Flags:  must size, must free, out, */
+/* 74 */	NdrFcShort( 0x18 ),	/* x86 Stack size/offset = 24 */
+/* 76 */	NdrFcShort( 0x414 ),	/* Type Offset=1044 */
+
+	/* Return value */
+
+/* 78 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */
+/* 80 */	NdrFcShort( 0x1c ),	/* x86 Stack size/offset = 28 */
+/* 82 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+	/* Procedure UnregisterComponent */
+
+/* 84 */	0x33,		/* FC_AUTO_HANDLE */
+			0x6c,		/* Old Flags:  object, Oi2 */
+/* 86 */	NdrFcLong( 0x0 ),	/* 0 */
+/* 90 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 92 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */
+/* 94 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 96 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 98 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */
+			0x2,		/* 2 */
+/* 100 */	0x8,		/* 8 */
+			0x5,		/* Ext Flags:  new corr desc, srv corr check, */
+/* 102 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 104 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 106 */	NdrFcShort( 0x0 ),	/* 0 */
+
+	/* Parameter component_guid_or_progid */
+
+/* 108 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 110 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */
+/* 112 */	NdrFcShort( 0x1c ),	/* Type Offset=28 */
+
+	/* Return value */
+
+/* 114 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */
+/* 116 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */
+/* 118 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+	/* Procedure AddProperty */
+
+/* 120 */	0x33,		/* FC_AUTO_HANDLE */
+			0x6c,		/* Old Flags:  object, Oi2 */
+/* 122 */	NdrFcLong( 0x0 ),	/* 0 */
+/* 126 */	NdrFcShort( 0x7 ),	/* 7 */
+/* 128 */	NdrFcShort( 0x1c ),	/* x86 Stack size/offset = 28 */
+/* 130 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 132 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 134 */	0x46,		/* Oi2 Flags:  clt must size, has return, has ext, */
+			0x3,		/* 3 */
+/* 136 */	0x8,		/* 8 */
+			0x5,		/* Ext Flags:  new corr desc, srv corr check, */
+/* 138 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 140 */	NdrFcShort( 0x21 ),	/* 33 */
+/* 142 */	NdrFcShort( 0x0 ),	/* 0 */
+
+	/* Parameter property_name */
+
+/* 144 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 146 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */
+/* 148 */	NdrFcShort( 0x1c ),	/* Type Offset=28 */
+
+	/* Parameter property_value */
+
+/* 150 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 152 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */
+/* 154 */	NdrFcShort( 0x40a ),	/* Type Offset=1034 */
+
+	/* Return value */
+
+/* 156 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */
+/* 158 */	NdrFcShort( 0x18 ),	/* x86 Stack size/offset = 24 */
+/* 160 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+	/* Procedure Send */
+
+/* 162 */	0x33,		/* FC_AUTO_HANDLE */
+			0x6c,		/* Old Flags:  object, Oi2 */
+/* 164 */	NdrFcLong( 0x0 ),	/* 0 */
+/* 168 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 170 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */
+/* 172 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 174 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 176 */	0x44,		/* Oi2 Flags:  has return, has ext, */
+			0x2,		/* 2 */
+/* 178 */	0x8,		/* 8 */
+			0x1,		/* Ext Flags:  new corr desc, */
+/* 180 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 182 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 184 */	NdrFcShort( 0x0 ),	/* 0 */
+
+	/* Parameter event_flags */
+
+/* 186 */	NdrFcShort( 0x48 ),	/* Flags:  in, base type, */
+/* 188 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */
+/* 190 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+	/* Return value */
+
+/* 192 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */
+/* 194 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */
+/* 196 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+	/* Procedure CreateEvent */
+
+/* 198 */	0x33,		/* FC_AUTO_HANDLE */
+			0x6c,		/* Old Flags:  object, Oi2 */
+/* 200 */	NdrFcLong( 0x0 ),	/* 0 */
+/* 204 */	NdrFcShort( 0x7 ),	/* 7 */
+/* 206 */	NdrFcShort( 0x14 ),	/* x86 Stack size/offset = 20 */
+/* 208 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 210 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 212 */	0x47,		/* Oi2 Flags:  srv must size, clt must size, has return, has ext, */
+			0x4,		/* 4 */
+/* 214 */	0x8,		/* 8 */
+			0x5,		/* Ext Flags:  new corr desc, srv corr check, */
+/* 216 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 218 */	NdrFcShort( 0x2 ),	/* 2 */
+/* 220 */	NdrFcShort( 0x0 ),	/* 0 */
+
+	/* Parameter component_guid_or_progid */
+
+/* 222 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 224 */	NdrFcShort( 0x4 ),	/* x86 Stack size/offset = 4 */
+/* 226 */	NdrFcShort( 0x1c ),	/* Type Offset=28 */
+
+	/* Parameter schema_name */
+
+/* 228 */	NdrFcShort( 0x8b ),	/* Flags:  must size, must free, in, by val, */
+/* 230 */	NdrFcShort( 0x8 ),	/* x86 Stack size/offset = 8 */
+/* 232 */	NdrFcShort( 0x1c ),	/* Type Offset=28 */
+
+	/* Parameter event */
+
+/* 234 */	NdrFcShort( 0x13 ),	/* Flags:  must size, must free, out, */
+/* 236 */	NdrFcShort( 0xc ),	/* x86 Stack size/offset = 12 */
+/* 238 */	NdrFcShort( 0x42a ),	/* Type Offset=1066 */
+
+	/* Return value */
+
+/* 240 */	NdrFcShort( 0x70 ),	/* Flags:  out, return, base type, */
+/* 242 */	NdrFcShort( 0x10 ),	/* x86 Stack size/offset = 16 */
+/* 244 */	0x8,		/* FC_LONG */
+			0x0,		/* 0 */
+
+			0x0
+        }
+    };
+
+static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
+    {
+        0,
+        {
+			NdrFcShort( 0x0 ),	/* 0 */
+/*  2 */	
+			0x12, 0x0,	/* FC_UP */
+/*  4 */	NdrFcShort( 0xe ),	/* Offset= 14 (18) */
+/*  6 */	
+			0x1b,		/* FC_CARRAY */
+			0x1,		/* 1 */
+/*  8 */	NdrFcShort( 0x2 ),	/* 2 */
+/* 10 */	0x9,		/* Corr desc: FC_ULONG */
+			0x0,		/*  */
+/* 12 */	NdrFcShort( 0xfffc ),	/* -4 */
+/* 14 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 16 */	0x6,		/* FC_SHORT */
+			0x5b,		/* FC_END */
+/* 18 */	
+			0x17,		/* FC_CSTRUCT */
+			0x3,		/* 3 */
+/* 20 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 22 */	NdrFcShort( 0xfff0 ),	/* Offset= -16 (6) */
+/* 24 */	0x8,		/* FC_LONG */
+			0x8,		/* FC_LONG */
+/* 26 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 28 */	0xb4,		/* FC_USER_MARSHAL */
+			0x83,		/* 131 */
+/* 30 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 32 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 34 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 36 */	NdrFcShort( 0xffde ),	/* Offset= -34 (2) */
+/* 38 */	
+			0x12, 0x0,	/* FC_UP */
+/* 40 */	NdrFcShort( 0x3ce ),	/* Offset= 974 (1014) */
+/* 42 */	
+			0x2b,		/* FC_NON_ENCAPSULATED_UNION */
+			0x9,		/* FC_ULONG */
+/* 44 */	0x7,		/* Corr desc: FC_USHORT */
+			0x0,		/*  */
+/* 46 */	NdrFcShort( 0xfff8 ),	/* -8 */
+/* 48 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 50 */	NdrFcShort( 0x2 ),	/* Offset= 2 (52) */
+/* 52 */	NdrFcShort( 0x10 ),	/* 16 */
+/* 54 */	NdrFcShort( 0x2f ),	/* 47 */
+/* 56 */	NdrFcLong( 0x14 ),	/* 20 */
+/* 60 */	NdrFcShort( 0x800b ),	/* Simple arm type: FC_HYPER */
+/* 62 */	NdrFcLong( 0x3 ),	/* 3 */
+/* 66 */	NdrFcShort( 0x8008 ),	/* Simple arm type: FC_LONG */
+/* 68 */	NdrFcLong( 0x11 ),	/* 17 */
+/* 72 */	NdrFcShort( 0x8001 ),	/* Simple arm type: FC_BYTE */
+/* 74 */	NdrFcLong( 0x2 ),	/* 2 */
+/* 78 */	NdrFcShort( 0x8006 ),	/* Simple arm type: FC_SHORT */
+/* 80 */	NdrFcLong( 0x4 ),	/* 4 */
+/* 84 */	NdrFcShort( 0x800a ),	/* Simple arm type: FC_FLOAT */
+/* 86 */	NdrFcLong( 0x5 ),	/* 5 */
+/* 90 */	NdrFcShort( 0x800c ),	/* Simple arm type: FC_DOUBLE */
+/* 92 */	NdrFcLong( 0xb ),	/* 11 */
+/* 96 */	NdrFcShort( 0x8006 ),	/* Simple arm type: FC_SHORT */
+/* 98 */	NdrFcLong( 0xa ),	/* 10 */
+/* 102 */	NdrFcShort( 0x8008 ),	/* Simple arm type: FC_LONG */
+/* 104 */	NdrFcLong( 0x6 ),	/* 6 */
+/* 108 */	NdrFcShort( 0xe8 ),	/* Offset= 232 (340) */
+/* 110 */	NdrFcLong( 0x7 ),	/* 7 */
+/* 114 */	NdrFcShort( 0x800c ),	/* Simple arm type: FC_DOUBLE */
+/* 116 */	NdrFcLong( 0x8 ),	/* 8 */
+/* 120 */	NdrFcShort( 0xff8a ),	/* Offset= -118 (2) */
+/* 122 */	NdrFcLong( 0xd ),	/* 13 */
+/* 126 */	NdrFcShort( 0xdc ),	/* Offset= 220 (346) */
+/* 128 */	NdrFcLong( 0x9 ),	/* 9 */
+/* 132 */	NdrFcShort( 0xe8 ),	/* Offset= 232 (364) */
+/* 134 */	NdrFcLong( 0x2000 ),	/* 8192 */
+/* 138 */	NdrFcShort( 0xf4 ),	/* Offset= 244 (382) */
+/* 140 */	NdrFcLong( 0x24 ),	/* 36 */
+/* 144 */	NdrFcShort( 0x31c ),	/* Offset= 796 (940) */
+/* 146 */	NdrFcLong( 0x4024 ),	/* 16420 */
+/* 150 */	NdrFcShort( 0x316 ),	/* Offset= 790 (940) */
+/* 152 */	NdrFcLong( 0x4011 ),	/* 16401 */
+/* 156 */	NdrFcShort( 0x314 ),	/* Offset= 788 (944) */
+/* 158 */	NdrFcLong( 0x4002 ),	/* 16386 */
+/* 162 */	NdrFcShort( 0x312 ),	/* Offset= 786 (948) */
+/* 164 */	NdrFcLong( 0x4003 ),	/* 16387 */
+/* 168 */	NdrFcShort( 0x310 ),	/* Offset= 784 (952) */
+/* 170 */	NdrFcLong( 0x4014 ),	/* 16404 */
+/* 174 */	NdrFcShort( 0x30e ),	/* Offset= 782 (956) */
+/* 176 */	NdrFcLong( 0x4004 ),	/* 16388 */
+/* 180 */	NdrFcShort( 0x30c ),	/* Offset= 780 (960) */
+/* 182 */	NdrFcLong( 0x4005 ),	/* 16389 */
+/* 186 */	NdrFcShort( 0x30a ),	/* Offset= 778 (964) */
+/* 188 */	NdrFcLong( 0x400b ),	/* 16395 */
+/* 192 */	NdrFcShort( 0x2f4 ),	/* Offset= 756 (948) */
+/* 194 */	NdrFcLong( 0x400a ),	/* 16394 */
+/* 198 */	NdrFcShort( 0x2f2 ),	/* Offset= 754 (952) */
+/* 200 */	NdrFcLong( 0x4006 ),	/* 16390 */
+/* 204 */	NdrFcShort( 0x2fc ),	/* Offset= 764 (968) */
+/* 206 */	NdrFcLong( 0x4007 ),	/* 16391 */
+/* 210 */	NdrFcShort( 0x2f2 ),	/* Offset= 754 (964) */
+/* 212 */	NdrFcLong( 0x4008 ),	/* 16392 */
+/* 216 */	NdrFcShort( 0x2f4 ),	/* Offset= 756 (972) */
+/* 218 */	NdrFcLong( 0x400d ),	/* 16397 */
+/* 222 */	NdrFcShort( 0x2f2 ),	/* Offset= 754 (976) */
+/* 224 */	NdrFcLong( 0x4009 ),	/* 16393 */
+/* 228 */	NdrFcShort( 0x2f0 ),	/* Offset= 752 (980) */
+/* 230 */	NdrFcLong( 0x6000 ),	/* 24576 */
+/* 234 */	NdrFcShort( 0x2ee ),	/* Offset= 750 (984) */
+/* 236 */	NdrFcLong( 0x400c ),	/* 16396 */
+/* 240 */	NdrFcShort( 0x2ec ),	/* Offset= 748 (988) */
+/* 242 */	NdrFcLong( 0x10 ),	/* 16 */
+/* 246 */	NdrFcShort( 0x8002 ),	/* Simple arm type: FC_CHAR */
+/* 248 */	NdrFcLong( 0x12 ),	/* 18 */
+/* 252 */	NdrFcShort( 0x8006 ),	/* Simple arm type: FC_SHORT */
+/* 254 */	NdrFcLong( 0x13 ),	/* 19 */
+/* 258 */	NdrFcShort( 0x8008 ),	/* Simple arm type: FC_LONG */
+/* 260 */	NdrFcLong( 0x15 ),	/* 21 */
+/* 264 */	NdrFcShort( 0x800b ),	/* Simple arm type: FC_HYPER */
+/* 266 */	NdrFcLong( 0x16 ),	/* 22 */
+/* 270 */	NdrFcShort( 0x8008 ),	/* Simple arm type: FC_LONG */
+/* 272 */	NdrFcLong( 0x17 ),	/* 23 */
+/* 276 */	NdrFcShort( 0x8008 ),	/* Simple arm type: FC_LONG */
+/* 278 */	NdrFcLong( 0xe ),	/* 14 */
+/* 282 */	NdrFcShort( 0x2ca ),	/* Offset= 714 (996) */
+/* 284 */	NdrFcLong( 0x400e ),	/* 16398 */
+/* 288 */	NdrFcShort( 0x2ce ),	/* Offset= 718 (1006) */
+/* 290 */	NdrFcLong( 0x4010 ),	/* 16400 */
+/* 294 */	NdrFcShort( 0x2cc ),	/* Offset= 716 (1010) */
+/* 296 */	NdrFcLong( 0x4012 ),	/* 16402 */
+/* 300 */	NdrFcShort( 0x288 ),	/* Offset= 648 (948) */
+/* 302 */	NdrFcLong( 0x4013 ),	/* 16403 */
+/* 306 */	NdrFcShort( 0x286 ),	/* Offset= 646 (952) */
+/* 308 */	NdrFcLong( 0x4015 ),	/* 16405 */
+/* 312 */	NdrFcShort( 0x284 ),	/* Offset= 644 (956) */
+/* 314 */	NdrFcLong( 0x4016 ),	/* 16406 */
+/* 318 */	NdrFcShort( 0x27a ),	/* Offset= 634 (952) */
+/* 320 */	NdrFcLong( 0x4017 ),	/* 16407 */
+/* 324 */	NdrFcShort( 0x274 ),	/* Offset= 628 (952) */
+/* 326 */	NdrFcLong( 0x0 ),	/* 0 */
+/* 330 */	NdrFcShort( 0x0 ),	/* Offset= 0 (330) */
+/* 332 */	NdrFcLong( 0x1 ),	/* 1 */
+/* 336 */	NdrFcShort( 0x0 ),	/* Offset= 0 (336) */
+/* 338 */	NdrFcShort( 0xffff ),	/* Offset= -1 (337) */
+/* 340 */	
+			0x15,		/* FC_STRUCT */
+			0x7,		/* 7 */
+/* 342 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 344 */	0xb,		/* FC_HYPER */
+			0x5b,		/* FC_END */
+/* 346 */	
+			0x2f,		/* FC_IP */
+			0x5a,		/* FC_CONSTANT_IID */
+/* 348 */	NdrFcLong( 0x0 ),	/* 0 */
+/* 352 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 354 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 356 */	0xc0,		/* 192 */
+			0x0,		/* 0 */
+/* 358 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 360 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 362 */	0x0,		/* 0 */
+			0x46,		/* 70 */
+/* 364 */	
+			0x2f,		/* FC_IP */
+			0x5a,		/* FC_CONSTANT_IID */
+/* 366 */	NdrFcLong( 0x20400 ),	/* 132096 */
+/* 370 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 372 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 374 */	0xc0,		/* 192 */
+			0x0,		/* 0 */
+/* 376 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 378 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 380 */	0x0,		/* 0 */
+			0x46,		/* 70 */
+/* 382 */	
+			0x12, 0x10,	/* FC_UP [pointer_deref] */
+/* 384 */	NdrFcShort( 0x2 ),	/* Offset= 2 (386) */
+/* 386 */	
+			0x12, 0x0,	/* FC_UP */
+/* 388 */	NdrFcShort( 0x216 ),	/* Offset= 534 (922) */
+/* 390 */	
+			0x2a,		/* FC_ENCAPSULATED_UNION */
+			0x49,		/* 73 */
+/* 392 */	NdrFcShort( 0x18 ),	/* 24 */
+/* 394 */	NdrFcShort( 0xa ),	/* 10 */
+/* 396 */	NdrFcLong( 0x8 ),	/* 8 */
+/* 400 */	NdrFcShort( 0x5a ),	/* Offset= 90 (490) */
+/* 402 */	NdrFcLong( 0xd ),	/* 13 */
+/* 406 */	NdrFcShort( 0x7e ),	/* Offset= 126 (532) */
+/* 408 */	NdrFcLong( 0x9 ),	/* 9 */
+/* 412 */	NdrFcShort( 0x9e ),	/* Offset= 158 (570) */
+/* 414 */	NdrFcLong( 0xc ),	/* 12 */
+/* 418 */	NdrFcShort( 0xc8 ),	/* Offset= 200 (618) */
+/* 420 */	NdrFcLong( 0x24 ),	/* 36 */
+/* 424 */	NdrFcShort( 0x124 ),	/* Offset= 292 (716) */
+/* 426 */	NdrFcLong( 0x800d ),	/* 32781 */
+/* 430 */	NdrFcShort( 0x140 ),	/* Offset= 320 (750) */
+/* 432 */	NdrFcLong( 0x10 ),	/* 16 */
+/* 436 */	NdrFcShort( 0x15a ),	/* Offset= 346 (782) */
+/* 438 */	NdrFcLong( 0x2 ),	/* 2 */
+/* 442 */	NdrFcShort( 0x174 ),	/* Offset= 372 (814) */
+/* 444 */	NdrFcLong( 0x3 ),	/* 3 */
+/* 448 */	NdrFcShort( 0x18e ),	/* Offset= 398 (846) */
+/* 450 */	NdrFcLong( 0x14 ),	/* 20 */
+/* 454 */	NdrFcShort( 0x1a8 ),	/* Offset= 424 (878) */
+/* 456 */	NdrFcShort( 0xffff ),	/* Offset= -1 (455) */
+/* 458 */	
+			0x1b,		/* FC_CARRAY */
+			0x3,		/* 3 */
+/* 460 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 462 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 464 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 466 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 468 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 470 */	
+			0x48,		/* FC_VARIABLE_REPEAT */
+			0x49,		/* FC_FIXED_OFFSET */
+/* 472 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 474 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 476 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 478 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 480 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 482 */	0x12, 0x0,	/* FC_UP */
+/* 484 */	NdrFcShort( 0xfe2e ),	/* Offset= -466 (18) */
+/* 486 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 488 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 490 */	
+			0x16,		/* FC_PSTRUCT */
+			0x3,		/* 3 */
+/* 492 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 494 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 496 */	
+			0x46,		/* FC_NO_REPEAT */
+			0x5c,		/* FC_PAD */
+/* 498 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 500 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 502 */	0x11, 0x0,	/* FC_RP */
+/* 504 */	NdrFcShort( 0xffd2 ),	/* Offset= -46 (458) */
+/* 506 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 508 */	0x8,		/* FC_LONG */
+			0x5b,		/* FC_END */
+/* 510 */	
+			0x21,		/* FC_BOGUS_ARRAY */
+			0x3,		/* 3 */
+/* 512 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 514 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 516 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 518 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 520 */	NdrFcLong( 0xffffffff ),	/* -1 */
+/* 524 */	NdrFcShort( 0x0 ),	/* Corr flags:  */
+/* 526 */	0x4c,		/* FC_EMBEDDED_COMPLEX */
+			0x0,		/* 0 */
+/* 528 */	NdrFcShort( 0xff4a ),	/* Offset= -182 (346) */
+/* 530 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 532 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x3,		/* 3 */
+/* 534 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 536 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 538 */	NdrFcShort( 0x6 ),	/* Offset= 6 (544) */
+/* 540 */	0x8,		/* FC_LONG */
+			0x36,		/* FC_POINTER */
+/* 542 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 544 */	
+			0x11, 0x0,	/* FC_RP */
+/* 546 */	NdrFcShort( 0xffdc ),	/* Offset= -36 (510) */
+/* 548 */	
+			0x21,		/* FC_BOGUS_ARRAY */
+			0x3,		/* 3 */
+/* 550 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 552 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 554 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 556 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 558 */	NdrFcLong( 0xffffffff ),	/* -1 */
+/* 562 */	NdrFcShort( 0x0 ),	/* Corr flags:  */
+/* 564 */	0x4c,		/* FC_EMBEDDED_COMPLEX */
+			0x0,		/* 0 */
+/* 566 */	NdrFcShort( 0xff36 ),	/* Offset= -202 (364) */
+/* 568 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 570 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x3,		/* 3 */
+/* 572 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 574 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 576 */	NdrFcShort( 0x6 ),	/* Offset= 6 (582) */
+/* 578 */	0x8,		/* FC_LONG */
+			0x36,		/* FC_POINTER */
+/* 580 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 582 */	
+			0x11, 0x0,	/* FC_RP */
+/* 584 */	NdrFcShort( 0xffdc ),	/* Offset= -36 (548) */
+/* 586 */	
+			0x1b,		/* FC_CARRAY */
+			0x3,		/* 3 */
+/* 588 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 590 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 592 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 594 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 596 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 598 */	
+			0x48,		/* FC_VARIABLE_REPEAT */
+			0x49,		/* FC_FIXED_OFFSET */
+/* 600 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 602 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 604 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 606 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 608 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 610 */	0x12, 0x0,	/* FC_UP */
+/* 612 */	NdrFcShort( 0x192 ),	/* Offset= 402 (1014) */
+/* 614 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 616 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 618 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x3,		/* 3 */
+/* 620 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 622 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 624 */	NdrFcShort( 0x6 ),	/* Offset= 6 (630) */
+/* 626 */	0x8,		/* FC_LONG */
+			0x36,		/* FC_POINTER */
+/* 628 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 630 */	
+			0x11, 0x0,	/* FC_RP */
+/* 632 */	NdrFcShort( 0xffd2 ),	/* Offset= -46 (586) */
+/* 634 */	
+			0x2f,		/* FC_IP */
+			0x5a,		/* FC_CONSTANT_IID */
+/* 636 */	NdrFcLong( 0x2f ),	/* 47 */
+/* 640 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 642 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 644 */	0xc0,		/* 192 */
+			0x0,		/* 0 */
+/* 646 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 648 */	0x0,		/* 0 */
+			0x0,		/* 0 */
+/* 650 */	0x0,		/* 0 */
+			0x46,		/* 70 */
+/* 652 */	
+			0x1b,		/* FC_CARRAY */
+			0x0,		/* 0 */
+/* 654 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 656 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 658 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 660 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 662 */	0x1,		/* FC_BYTE */
+			0x5b,		/* FC_END */
+/* 664 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x3,		/* 3 */
+/* 666 */	NdrFcShort( 0x10 ),	/* 16 */
+/* 668 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 670 */	NdrFcShort( 0xa ),	/* Offset= 10 (680) */
+/* 672 */	0x8,		/* FC_LONG */
+			0x8,		/* FC_LONG */
+/* 674 */	0x4c,		/* FC_EMBEDDED_COMPLEX */
+			0x0,		/* 0 */
+/* 676 */	NdrFcShort( 0xffd6 ),	/* Offset= -42 (634) */
+/* 678 */	0x36,		/* FC_POINTER */
+			0x5b,		/* FC_END */
+/* 680 */	
+			0x12, 0x0,	/* FC_UP */
+/* 682 */	NdrFcShort( 0xffe2 ),	/* Offset= -30 (652) */
+/* 684 */	
+			0x1b,		/* FC_CARRAY */
+			0x3,		/* 3 */
+/* 686 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 688 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 690 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 692 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 694 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 696 */	
+			0x48,		/* FC_VARIABLE_REPEAT */
+			0x49,		/* FC_FIXED_OFFSET */
+/* 698 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 700 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 702 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 704 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 706 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 708 */	0x12, 0x0,	/* FC_UP */
+/* 710 */	NdrFcShort( 0xffd2 ),	/* Offset= -46 (664) */
+/* 712 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 714 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 716 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x3,		/* 3 */
+/* 718 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 720 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 722 */	NdrFcShort( 0x6 ),	/* Offset= 6 (728) */
+/* 724 */	0x8,		/* FC_LONG */
+			0x36,		/* FC_POINTER */
+/* 726 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 728 */	
+			0x11, 0x0,	/* FC_RP */
+/* 730 */	NdrFcShort( 0xffd2 ),	/* Offset= -46 (684) */
+/* 732 */	
+			0x1d,		/* FC_SMFARRAY */
+			0x0,		/* 0 */
+/* 734 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 736 */	0x1,		/* FC_BYTE */
+			0x5b,		/* FC_END */
+/* 738 */	
+			0x15,		/* FC_STRUCT */
+			0x3,		/* 3 */
+/* 740 */	NdrFcShort( 0x10 ),	/* 16 */
+/* 742 */	0x8,		/* FC_LONG */
+			0x6,		/* FC_SHORT */
+/* 744 */	0x6,		/* FC_SHORT */
+			0x4c,		/* FC_EMBEDDED_COMPLEX */
+/* 746 */	0x0,		/* 0 */
+			NdrFcShort( 0xfff1 ),	/* Offset= -15 (732) */
+			0x5b,		/* FC_END */
+/* 750 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x3,		/* 3 */
+/* 752 */	NdrFcShort( 0x18 ),	/* 24 */
+/* 754 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 756 */	NdrFcShort( 0xa ),	/* Offset= 10 (766) */
+/* 758 */	0x8,		/* FC_LONG */
+			0x36,		/* FC_POINTER */
+/* 760 */	0x4c,		/* FC_EMBEDDED_COMPLEX */
+			0x0,		/* 0 */
+/* 762 */	NdrFcShort( 0xffe8 ),	/* Offset= -24 (738) */
+/* 764 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 766 */	
+			0x11, 0x0,	/* FC_RP */
+/* 768 */	NdrFcShort( 0xfefe ),	/* Offset= -258 (510) */
+/* 770 */	
+			0x1b,		/* FC_CARRAY */
+			0x0,		/* 0 */
+/* 772 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 774 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 776 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 778 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 780 */	0x1,		/* FC_BYTE */
+			0x5b,		/* FC_END */
+/* 782 */	
+			0x16,		/* FC_PSTRUCT */
+			0x3,		/* 3 */
+/* 784 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 786 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 788 */	
+			0x46,		/* FC_NO_REPEAT */
+			0x5c,		/* FC_PAD */
+/* 790 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 792 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 794 */	0x12, 0x0,	/* FC_UP */
+/* 796 */	NdrFcShort( 0xffe6 ),	/* Offset= -26 (770) */
+/* 798 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 800 */	0x8,		/* FC_LONG */
+			0x5b,		/* FC_END */
+/* 802 */	
+			0x1b,		/* FC_CARRAY */
+			0x1,		/* 1 */
+/* 804 */	NdrFcShort( 0x2 ),	/* 2 */
+/* 806 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 808 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 810 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 812 */	0x6,		/* FC_SHORT */
+			0x5b,		/* FC_END */
+/* 814 */	
+			0x16,		/* FC_PSTRUCT */
+			0x3,		/* 3 */
+/* 816 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 818 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 820 */	
+			0x46,		/* FC_NO_REPEAT */
+			0x5c,		/* FC_PAD */
+/* 822 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 824 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 826 */	0x12, 0x0,	/* FC_UP */
+/* 828 */	NdrFcShort( 0xffe6 ),	/* Offset= -26 (802) */
+/* 830 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 832 */	0x8,		/* FC_LONG */
+			0x5b,		/* FC_END */
+/* 834 */	
+			0x1b,		/* FC_CARRAY */
+			0x3,		/* 3 */
+/* 836 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 838 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 840 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 842 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 844 */	0x8,		/* FC_LONG */
+			0x5b,		/* FC_END */
+/* 846 */	
+			0x16,		/* FC_PSTRUCT */
+			0x3,		/* 3 */
+/* 848 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 850 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 852 */	
+			0x46,		/* FC_NO_REPEAT */
+			0x5c,		/* FC_PAD */
+/* 854 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 856 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 858 */	0x12, 0x0,	/* FC_UP */
+/* 860 */	NdrFcShort( 0xffe6 ),	/* Offset= -26 (834) */
+/* 862 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 864 */	0x8,		/* FC_LONG */
+			0x5b,		/* FC_END */
+/* 866 */	
+			0x1b,		/* FC_CARRAY */
+			0x7,		/* 7 */
+/* 868 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 870 */	0x19,		/* Corr desc:  field pointer, FC_ULONG */
+			0x0,		/*  */
+/* 872 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 874 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 876 */	0xb,		/* FC_HYPER */
+			0x5b,		/* FC_END */
+/* 878 */	
+			0x16,		/* FC_PSTRUCT */
+			0x3,		/* 3 */
+/* 880 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 882 */	
+			0x4b,		/* FC_PP */
+			0x5c,		/* FC_PAD */
+/* 884 */	
+			0x46,		/* FC_NO_REPEAT */
+			0x5c,		/* FC_PAD */
+/* 886 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 888 */	NdrFcShort( 0x4 ),	/* 4 */
+/* 890 */	0x12, 0x0,	/* FC_UP */
+/* 892 */	NdrFcShort( 0xffe6 ),	/* Offset= -26 (866) */
+/* 894 */	
+			0x5b,		/* FC_END */
+
+			0x8,		/* FC_LONG */
+/* 896 */	0x8,		/* FC_LONG */
+			0x5b,		/* FC_END */
+/* 898 */	
+			0x15,		/* FC_STRUCT */
+			0x3,		/* 3 */
+/* 900 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 902 */	0x8,		/* FC_LONG */
+			0x8,		/* FC_LONG */
+/* 904 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 906 */	
+			0x1b,		/* FC_CARRAY */
+			0x3,		/* 3 */
+/* 908 */	NdrFcShort( 0x8 ),	/* 8 */
+/* 910 */	0x7,		/* Corr desc: FC_USHORT */
+			0x0,		/*  */
+/* 912 */	NdrFcShort( 0xffd8 ),	/* -40 */
+/* 914 */	NdrFcShort( 0x1 ),	/* Corr flags:  early, */
+/* 916 */	0x4c,		/* FC_EMBEDDED_COMPLEX */
+			0x0,		/* 0 */
+/* 918 */	NdrFcShort( 0xffec ),	/* Offset= -20 (898) */
+/* 920 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 922 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x3,		/* 3 */
+/* 924 */	NdrFcShort( 0x28 ),	/* 40 */
+/* 926 */	NdrFcShort( 0xffec ),	/* Offset= -20 (906) */
+/* 928 */	NdrFcShort( 0x0 ),	/* Offset= 0 (928) */
+/* 930 */	0x6,		/* FC_SHORT */
+			0x6,		/* FC_SHORT */
+/* 932 */	0x8,		/* FC_LONG */
+			0x8,		/* FC_LONG */
+/* 934 */	0x4c,		/* FC_EMBEDDED_COMPLEX */
+			0x0,		/* 0 */
+/* 936 */	NdrFcShort( 0xfdde ),	/* Offset= -546 (390) */
+/* 938 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 940 */	
+			0x12, 0x0,	/* FC_UP */
+/* 942 */	NdrFcShort( 0xfeea ),	/* Offset= -278 (664) */
+/* 944 */	
+			0x12, 0x8,	/* FC_UP [simple_pointer] */
+/* 946 */	0x1,		/* FC_BYTE */
+			0x5c,		/* FC_PAD */
+/* 948 */	
+			0x12, 0x8,	/* FC_UP [simple_pointer] */
+/* 950 */	0x6,		/* FC_SHORT */
+			0x5c,		/* FC_PAD */
+/* 952 */	
+			0x12, 0x8,	/* FC_UP [simple_pointer] */
+/* 954 */	0x8,		/* FC_LONG */
+			0x5c,		/* FC_PAD */
+/* 956 */	
+			0x12, 0x8,	/* FC_UP [simple_pointer] */
+/* 958 */	0xb,		/* FC_HYPER */
+			0x5c,		/* FC_PAD */
+/* 960 */	
+			0x12, 0x8,	/* FC_UP [simple_pointer] */
+/* 962 */	0xa,		/* FC_FLOAT */
+			0x5c,		/* FC_PAD */
+/* 964 */	
+			0x12, 0x8,	/* FC_UP [simple_pointer] */
+/* 966 */	0xc,		/* FC_DOUBLE */
+			0x5c,		/* FC_PAD */
+/* 968 */	
+			0x12, 0x0,	/* FC_UP */
+/* 970 */	NdrFcShort( 0xfd8a ),	/* Offset= -630 (340) */
+/* 972 */	
+			0x12, 0x10,	/* FC_UP [pointer_deref] */
+/* 974 */	NdrFcShort( 0xfc34 ),	/* Offset= -972 (2) */
+/* 976 */	
+			0x12, 0x10,	/* FC_UP [pointer_deref] */
+/* 978 */	NdrFcShort( 0xfd88 ),	/* Offset= -632 (346) */
+/* 980 */	
+			0x12, 0x10,	/* FC_UP [pointer_deref] */
+/* 982 */	NdrFcShort( 0xfd96 ),	/* Offset= -618 (364) */
+/* 984 */	
+			0x12, 0x10,	/* FC_UP [pointer_deref] */
+/* 986 */	NdrFcShort( 0xfda4 ),	/* Offset= -604 (382) */
+/* 988 */	
+			0x12, 0x10,	/* FC_UP [pointer_deref] */
+/* 990 */	NdrFcShort( 0x2 ),	/* Offset= 2 (992) */
+/* 992 */	
+			0x12, 0x0,	/* FC_UP */
+/* 994 */	NdrFcShort( 0x14 ),	/* Offset= 20 (1014) */
+/* 996 */	
+			0x15,		/* FC_STRUCT */
+			0x7,		/* 7 */
+/* 998 */	NdrFcShort( 0x10 ),	/* 16 */
+/* 1000 */	0x6,		/* FC_SHORT */
+			0x1,		/* FC_BYTE */
+/* 1002 */	0x1,		/* FC_BYTE */
+			0x8,		/* FC_LONG */
+/* 1004 */	0xb,		/* FC_HYPER */
+			0x5b,		/* FC_END */
+/* 1006 */	
+			0x12, 0x0,	/* FC_UP */
+/* 1008 */	NdrFcShort( 0xfff4 ),	/* Offset= -12 (996) */
+/* 1010 */	
+			0x12, 0x8,	/* FC_UP [simple_pointer] */
+/* 1012 */	0x2,		/* FC_CHAR */
+			0x5c,		/* FC_PAD */
+/* 1014 */	
+			0x1a,		/* FC_BOGUS_STRUCT */
+			0x7,		/* 7 */
+/* 1016 */	NdrFcShort( 0x20 ),	/* 32 */
+/* 1018 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 1020 */	NdrFcShort( 0x0 ),	/* Offset= 0 (1020) */
+/* 1022 */	0x8,		/* FC_LONG */
+			0x8,		/* FC_LONG */
+/* 1024 */	0x6,		/* FC_SHORT */
+			0x6,		/* FC_SHORT */
+/* 1026 */	0x6,		/* FC_SHORT */
+			0x6,		/* FC_SHORT */
+/* 1028 */	0x4c,		/* FC_EMBEDDED_COMPLEX */
+			0x0,		/* 0 */
+/* 1030 */	NdrFcShort( 0xfc24 ),	/* Offset= -988 (42) */
+/* 1032 */	0x5c,		/* FC_PAD */
+			0x5b,		/* FC_END */
+/* 1034 */	0xb4,		/* FC_USER_MARSHAL */
+			0x83,		/* 131 */
+/* 1036 */	NdrFcShort( 0x1 ),	/* 1 */
+/* 1038 */	NdrFcShort( 0x10 ),	/* 16 */
+/* 1040 */	NdrFcShort( 0x0 ),	/* 0 */
+/* 1042 */	NdrFcShort( 0xfc14 ),	/* Offset= -1004 (38) */
+/* 1044 */	
+			0x11, 0x10,	/* FC_RP [pointer_deref] */
+/* 1046 */	NdrFcShort( 0x2 ),	/* Offset= 2 (1048) */
+/* 1048 */	
+			0x2f,		/* FC_IP */
+			0x5a,		/* FC_CONSTANT_IID */
+/* 1050 */	NdrFcLong( 0x151857b2 ),	/* 353916850 */
+/* 1054 */	NdrFcShort( 0x26e0 ),	/* 9952 */
+/* 1056 */	NdrFcShort( 0x4f4d ),	/* 20301 */
+/* 1058 */	0xac,		/* 172 */
+			0xed,		/* 237 */
+/* 1060 */	0x4f,		/* 79 */
+			0x7e,		/* 126 */
+/* 1062 */	0x4b,		/* 75 */
+			0x20,		/* 32 */
+/* 1064 */	0x65,		/* 101 */
+			0xef,		/* 239 */
+/* 1066 */	
+			0x11, 0x10,	/* FC_RP [pointer_deref] */
+/* 1068 */	NdrFcShort( 0xfd40 ),	/* Offset= -704 (364) */
+
+			0x0
+        }
+    };
+
+static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] = 
+        {
+            
+            {
+            BSTR_UserSize
+            ,BSTR_UserMarshal
+            ,BSTR_UserUnmarshal
+            ,BSTR_UserFree
+            },
+            {
+            VARIANT_UserSize
+            ,VARIANT_UserMarshal
+            ,VARIANT_UserUnmarshal
+            ,VARIANT_UserFree
+            }
+
+        };
+
+
+
+/* Standard interface: __MIDL_itf_GoogleDesktopSearchAPI_0000, ver. 0.0,
+   GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
+
+
+/* Object interface: IUnknown, ver. 0.0,
+   GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
+
+
+/* Object interface: IDispatch, ver. 0.0,
+   GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
+
+
+/* Object interface: IGoogleDesktopSearchComponentRegistration, ver. 0.0,
+   GUID={0x151857B2,0x26E0,0x4f4d,{0xAC,0xED,0x4F,0x7E,0x4B,0x20,0x65,0xEF}} */
+
+#pragma code_seg(".orpc")
+static const unsigned short IGoogleDesktopSearchComponentRegistration_FormatStringOffsetTable[] =
+    {
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    0
+    };
+
+static const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchComponentRegistration_ProxyInfo =
+    {
+    &Object_StubDesc,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchComponentRegistration_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0
+    };
+
+
+static const MIDL_SERVER_INFO IGoogleDesktopSearchComponentRegistration_ServerInfo = 
+    {
+    &Object_StubDesc,
+    0,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchComponentRegistration_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0,
+    0};
+CINTERFACE_PROXY_VTABLE(8) _IGoogleDesktopSearchComponentRegistrationProxyVtbl = 
+{
+    &IGoogleDesktopSearchComponentRegistration_ProxyInfo,
+    &IID_IGoogleDesktopSearchComponentRegistration,
+    IUnknown_QueryInterface_Proxy,
+    IUnknown_AddRef_Proxy,
+    IUnknown_Release_Proxy ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfoCount */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfo */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetIDsOfNames */ ,
+    0 /* IDispatch_Invoke_Proxy */ ,
+    (void *) (INT_PTR) -1 /* IGoogleDesktopSearchComponentRegistration::RegisterExtension */
+};
+
+
+static const PRPC_STUB_FUNCTION IGoogleDesktopSearchComponentRegistration_table[] =
+{
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    NdrStubCall2
+};
+
+CInterfaceStubVtbl _IGoogleDesktopSearchComponentRegistrationStubVtbl =
+{
+    &IID_IGoogleDesktopSearchComponentRegistration,
+    &IGoogleDesktopSearchComponentRegistration_ServerInfo,
+    8,
+    &IGoogleDesktopSearchComponentRegistration_table[-3],
+    CStdStubBuffer_DELEGATING_METHODS
+};
+
+
+/* Object interface: IGoogleDesktopSearchComponentRegister, ver. 0.0,
+   GUID={0x9B311E80,0xBC95,0x4518,{0xA5,0x8C,0x44,0x6E,0xC9,0xA0,0x82,0xB5}} */
+
+#pragma code_seg(".orpc")
+static const unsigned short IGoogleDesktopSearchComponentRegister_FormatStringOffsetTable[] =
+    {
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    36,
+    84
+    };
+
+static const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchComponentRegister_ProxyInfo =
+    {
+    &Object_StubDesc,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchComponentRegister_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0
+    };
+
+
+static const MIDL_SERVER_INFO IGoogleDesktopSearchComponentRegister_ServerInfo = 
+    {
+    &Object_StubDesc,
+    0,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchComponentRegister_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0,
+    0};
+CINTERFACE_PROXY_VTABLE(9) _IGoogleDesktopSearchComponentRegisterProxyVtbl = 
+{
+    &IGoogleDesktopSearchComponentRegister_ProxyInfo,
+    &IID_IGoogleDesktopSearchComponentRegister,
+    IUnknown_QueryInterface_Proxy,
+    IUnknown_AddRef_Proxy,
+    IUnknown_Release_Proxy ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfoCount */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfo */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetIDsOfNames */ ,
+    0 /* IDispatch_Invoke_Proxy */ ,
+    (void *) (INT_PTR) -1 /* IGoogleDesktopSearchComponentRegister::RegisterComponent */ ,
+    (void *) (INT_PTR) -1 /* IGoogleDesktopSearchComponentRegister::UnregisterComponent */
+};
+
+
+static const PRPC_STUB_FUNCTION IGoogleDesktopSearchComponentRegister_table[] =
+{
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    NdrStubCall2,
+    NdrStubCall2
+};
+
+CInterfaceStubVtbl _IGoogleDesktopSearchComponentRegisterStubVtbl =
+{
+    &IID_IGoogleDesktopSearchComponentRegister,
+    &IGoogleDesktopSearchComponentRegister_ServerInfo,
+    9,
+    &IGoogleDesktopSearchComponentRegister_table[-3],
+    CStdStubBuffer_DELEGATING_METHODS
+};
+
+
+/* Object interface: IGoogleDesktopSearchEvent, ver. 0.0,
+   GUID={0xBDAC0047,0x4759,0x43a1,{0xBA,0x04,0xB1,0x48,0xE1,0x67,0x9E,0x87}} */
+
+#pragma code_seg(".orpc")
+static const unsigned short IGoogleDesktopSearchEvent_FormatStringOffsetTable[] =
+    {
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    120,
+    162
+    };
+
+static const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchEvent_ProxyInfo =
+    {
+    &Object_StubDesc,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchEvent_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0
+    };
+
+
+static const MIDL_SERVER_INFO IGoogleDesktopSearchEvent_ServerInfo = 
+    {
+    &Object_StubDesc,
+    0,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchEvent_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0,
+    0};
+CINTERFACE_PROXY_VTABLE(9) _IGoogleDesktopSearchEventProxyVtbl = 
+{
+    &IGoogleDesktopSearchEvent_ProxyInfo,
+    &IID_IGoogleDesktopSearchEvent,
+    IUnknown_QueryInterface_Proxy,
+    IUnknown_AddRef_Proxy,
+    IUnknown_Release_Proxy ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfoCount */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfo */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetIDsOfNames */ ,
+    0 /* IDispatch_Invoke_Proxy */ ,
+    (void *) (INT_PTR) -1 /* IGoogleDesktopSearchEvent::AddProperty */ ,
+    (void *) (INT_PTR) -1 /* IGoogleDesktopSearchEvent::Send */
+};
+
+
+static const PRPC_STUB_FUNCTION IGoogleDesktopSearchEvent_table[] =
+{
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    NdrStubCall2,
+    NdrStubCall2
+};
+
+CInterfaceStubVtbl _IGoogleDesktopSearchEventStubVtbl =
+{
+    &IID_IGoogleDesktopSearchEvent,
+    &IGoogleDesktopSearchEvent_ServerInfo,
+    9,
+    &IGoogleDesktopSearchEvent_table[-3],
+    CStdStubBuffer_DELEGATING_METHODS
+};
+
+
+/* Object interface: IGoogleDesktopSearchEventFactory, ver. 0.0,
+   GUID={0xA79E51C6,0xDB2D,0x4a44,{0x84,0x8E,0xA8,0xEB,0xB2,0x2E,0x53,0x37}} */
+
+#pragma code_seg(".orpc")
+static const unsigned short IGoogleDesktopSearchEventFactory_FormatStringOffsetTable[] =
+    {
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    (unsigned short) -1,
+    198
+    };
+
+static const MIDL_STUBLESS_PROXY_INFO IGoogleDesktopSearchEventFactory_ProxyInfo =
+    {
+    &Object_StubDesc,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchEventFactory_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0
+    };
+
+
+static const MIDL_SERVER_INFO IGoogleDesktopSearchEventFactory_ServerInfo = 
+    {
+    &Object_StubDesc,
+    0,
+    __MIDL_ProcFormatString.Format,
+    &IGoogleDesktopSearchEventFactory_FormatStringOffsetTable[-3],
+    0,
+    0,
+    0,
+    0};
+CINTERFACE_PROXY_VTABLE(8) _IGoogleDesktopSearchEventFactoryProxyVtbl = 
+{
+    &IGoogleDesktopSearchEventFactory_ProxyInfo,
+    &IID_IGoogleDesktopSearchEventFactory,
+    IUnknown_QueryInterface_Proxy,
+    IUnknown_AddRef_Proxy,
+    IUnknown_Release_Proxy ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfoCount */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetTypeInfo */ ,
+    0 /* (void *) (INT_PTR) -1 /* IDispatch::GetIDsOfNames */ ,
+    0 /* IDispatch_Invoke_Proxy */ ,
+    (void *) (INT_PTR) -1 /* IGoogleDesktopSearchEventFactory::CreateEvent */
+};
+
+
+static const PRPC_STUB_FUNCTION IGoogleDesktopSearchEventFactory_table[] =
+{
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    STUB_FORWARDING_FUNCTION,
+    NdrStubCall2
+};
+
+CInterfaceStubVtbl _IGoogleDesktopSearchEventFactoryStubVtbl =
+{
+    &IID_IGoogleDesktopSearchEventFactory,
+    &IGoogleDesktopSearchEventFactory_ServerInfo,
+    8,
+    &IGoogleDesktopSearchEventFactory_table[-3],
+    CStdStubBuffer_DELEGATING_METHODS
+};
+
+static const MIDL_STUB_DESC Object_StubDesc = 
+    {
+    0,
+    NdrOleAllocate,
+    NdrOleFree,
+    0,
+    0,
+    0,
+    0,
+    0,
+    __MIDL_TypeFormatString.Format,
+    1, /* -error bounds_check flag */
+    0x50002, /* Ndr library version */
+    0,
+    0x6000169, /* MIDL Version 6.0.361 */
+    0,
+    UserMarshalRoutines,
+    0,  /* notify & notify_flag routine table */
+    0x1, /* MIDL flag */
+    0, /* cs routines */
+    0,   /* proxy/server info */
+    0   /* Reserved5 */
+    };
+
+const CInterfaceProxyVtbl * _GoogleDesktopSearchAPI_ProxyVtblList[] = 
+{
+    ( CInterfaceProxyVtbl *) &_IGoogleDesktopSearchEventProxyVtbl,
+    ( CInterfaceProxyVtbl *) &_IGoogleDesktopSearchComponentRegisterProxyVtbl,
+    ( CInterfaceProxyVtbl *) &_IGoogleDesktopSearchComponentRegistrationProxyVtbl,
+    ( CInterfaceProxyVtbl *) &_IGoogleDesktopSearchEventFactoryProxyVtbl,
+    0
+};
+
+const CInterfaceStubVtbl * _GoogleDesktopSearchAPI_StubVtblList[] = 
+{
+    ( CInterfaceStubVtbl *) &_IGoogleDesktopSearchEventStubVtbl,
+    ( CInterfaceStubVtbl *) &_IGoogleDesktopSearchComponentRegisterStubVtbl,
+    ( CInterfaceStubVtbl *) &_IGoogleDesktopSearchComponentRegistrationStubVtbl,
+    ( CInterfaceStubVtbl *) &_IGoogleDesktopSearchEventFactoryStubVtbl,
+    0
+};
+
+PCInterfaceName const _GoogleDesktopSearchAPI_InterfaceNamesList[] = 
+{
+    "IGoogleDesktopSearchEvent",
+    "IGoogleDesktopSearchComponentRegister",
+    "IGoogleDesktopSearchComponentRegistration",
+    "IGoogleDesktopSearchEventFactory",
+    0
+};
+
+const IID *  _GoogleDesktopSearchAPI_BaseIIDList[] = 
+{
+    &IID_IDispatch,
+    &IID_IDispatch,
+    &IID_IDispatch,
+    &IID_IDispatch,
+    0
+};
+
+
+#define _GoogleDesktopSearchAPI_CHECK_IID(n)	IID_GENERIC_CHECK_IID( _GoogleDesktopSearchAPI, pIID, n)
+
+int __stdcall _GoogleDesktopSearchAPI_IID_Lookup( const IID * pIID, int * pIndex )
+{
+    IID_BS_LOOKUP_SETUP
+
+    IID_BS_LOOKUP_INITIAL_TEST( _GoogleDesktopSearchAPI, 4, 2 )
+    IID_BS_LOOKUP_NEXT_TEST( _GoogleDesktopSearchAPI, 1 )
+    IID_BS_LOOKUP_RETURN_RESULT( _GoogleDesktopSearchAPI, 4, *pIndex )
+    
+}
+
+const ExtendedProxyFileInfo GoogleDesktopSearchAPI_ProxyFileInfo = 
+{
+    (PCInterfaceProxyVtblList *) & _GoogleDesktopSearchAPI_ProxyVtblList,
+    (PCInterfaceStubVtblList *) & _GoogleDesktopSearchAPI_StubVtblList,
+    (const PCInterfaceName * ) & _GoogleDesktopSearchAPI_InterfaceNamesList,
+    (const IID ** ) & _GoogleDesktopSearchAPI_BaseIIDList,
+    & _GoogleDesktopSearchAPI_IID_Lookup, 
+    4,
+    2,
+    0, /* table of [async_uuid] interfaces */
+    0, /* Filler1 */
+    0, /* Filler2 */
+    0  /* Filler3 */
+};
+#if _MSC_VER >= 1200
+#pragma warning(pop)
+#endif
+
+
+#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
+

Added: trunk/MatroskaUtils/GDC/common/dlldata.c
===================================================================
--- trunk/MatroskaUtils/GDC/common/dlldata.c	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/dlldata.c	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,38 @@
+/*********************************************************
+   DllData file -- generated by MIDL compiler 
+
+        DO NOT ALTER THIS FILE
+
+   This file is regenerated by MIDL on every IDL file compile.
+
+   To completely reconstruct this file, delete it and rerun MIDL
+   on all the IDL files in this DLL, specifying this file for the
+   /dlldata command line option
+
+*********************************************************/
+
+#define PROXY_DELEGATION
+
+#include <rpcproxy.h>
+
+#ifdef __cplusplus
+extern "C"   {
+#endif
+
+EXTERN_PROXY_FILE( GoogleDesktopSearchAPI )
+
+
+PROXYFILE_LIST_START
+/* Start of list */
+  REFERENCE_PROXY_FILE( GoogleDesktopSearchAPI ),
+/* End of list */
+PROXYFILE_LIST_END
+
+
+DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
+
+#ifdef __cplusplus
+}  /*extern "C" */
+#endif
+
+/* end of generated dlldata file */

Added: trunk/MatroskaUtils/GDC/common/stdafx.cpp
===================================================================
--- trunk/MatroskaUtils/GDC/common/stdafx.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/stdafx.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,5 @@
+// Copyright 2004 Google Inc
+// All rights reserved
+//
+#include "stdafx.h"
+#include "GoogleDesktopSearchAPI_i.c"

Added: trunk/MatroskaUtils/GDC/common/stdafx.h
===================================================================
--- trunk/MatroskaUtils/GDC/common/stdafx.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/GDC/common/stdafx.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,19 @@
+// Copyright 2004 Google Inc
+// All rights reserved
+
+#ifndef _STDAFX_H
+#define _STDAFX_H
+
+// Windows Header Files:
+#include <atlbase.h>
+#include <atlstr.h>
+// C RunTime Header Files
+#include <stdlib.h>
+#include <malloc.h>
+#include <memory.h>
+#include <tchar.h>
+
+// Reference additional headers your program requires here
+#include "GoogleDesktopSearchAPI.h"
+
+#endif

Added: trunk/MatroskaUtils/Jorys_Southern_I_gotta_go_get_me_some_of_there_Matroska_files.mp3
===================================================================
(Binary files differ)


Property changes on: trunk/MatroskaUtils/Jorys_Southern_I_gotta_go_get_me_some_of_there_Matroska_files.mp3
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.cpp
===================================================================
--- trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,119 @@
+/*
+ *  Matroska Shell Extension
+ *
+ *  MatroskaInfoParserCache.cpp
+ *
+ *  Copyright (C) Jory Stone - June 2003 - December 2004
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If not, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+/*!
+    \file MatroskaInfoParserCache.cpp
+		\version \$Id: MatroskaProp.cpp,v 1.39 2004/03/08 07:56:51 jcsston Exp $
+    \brief Lightweight caching Matroska Parser object list
+		\author Jory Stone     <matroskaprop @ jory.info>
+
+*/
+
+#include "MatroskaInfoParserCache.h"
+
+MatroskaInfoParserCache::MatroskaInfoParserCache()
+{
+	m_First = new MatroskaInfoParserCacheEntry;
+	m_First->parser = NULL;
+	m_First->next = NULL;
+	m_Last = m_First;
+	m_CacheCount = 0;
+
+	//Load the ParserCacheLimit
+	m_CacheLimit = MatroskaShellExt_GetRegistryValue(_T("Parser Cache Limit"), 7);
+	if ((m_CacheLimit > 255) || (m_CacheLimit < 1))
+		//Out of range, using default 7
+		m_CacheLimit = 7;
+
+}
+
+MatroskaInfoParserCache::~MatroskaInfoParserCache()
+{
+	while (m_Last != NULL) {
+		m_Last = m_First->next;
+		delete m_First->parser;
+		delete m_First;
+		m_First = m_Last;
+	}
+}
+
+void MatroskaInfoParserCache::AddParser(MatroskaInfoParser *parser)
+{
+	NOTE1("MatroskaInfoParserCache::AddParser(parser = %p)", parser);
+	if (m_CacheCount > m_CacheLimit) {
+		// Reuse the first entry
+		m_Last->next = m_First;
+		m_Last = m_First;
+		delete m_First->parser;
+		m_First = m_Last->next;
+		// This line is not really needed, because it's repeated a few line below
+		//m_Last->next = NULL;
+		m_CacheCount--;
+	} else {
+		// Alloc a new entry
+		m_Last->next = new MatroskaInfoParserCacheEntry;
+		m_Last = m_Last->next;
+	}
+	m_Last->parser = parser;
+	m_Last->next = NULL;
+	
+	m_CacheCount++;
+#ifdef DEBUG
+	OutputList();
+#endif
+}
+
+MatroskaInfoParser *MatroskaInfoParserCache::Lookup(const wchar_t *filename)
+{
+	NOTE1("MatroskaInfoParserCache::Lookup(filename = %S)", filename);
+
+	MatroskaInfoParserCacheEntry *temp = m_First;
+
+	while (temp != NULL) {
+		if ((temp->parser != NULL) && !wcscmp(filename, temp->parser->GetFilename()))
+			return temp->parser;
+
+		temp = temp->next;
+	}
+
+	return NULL;
+}
+
+#ifdef DEBUG
+void MatroskaInfoParserCache::OutputList()
+{
+	int i = 0;
+	MatroskaInfoParserCacheEntry *temp = m_First;
+
+	NOTE("MatroskaInfoParserCache Report");
+	NOTE("==============================");
+	while (temp != NULL) {
+		i++;
+		if (temp->parser != NULL)
+			NOTE2("%i : %S", i, temp->parser->GetFilename());
+
+		temp = temp->next;
+	}
+	NOTE("==============================");
+}
+#endif

Added: trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h
===================================================================
--- trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/ShellExtension/MatroskaInfoParserCache.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,60 @@
+/*
+ *  Matroska Shell Extension
+ *
+ *  MatroskaInfoParserCache.h
+ *
+ *  Copyright (C) Jory Stone - June 2003 - December 2004
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If not, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+/*!
+    \file MatroskaInfoParserCache.h
+		\version \$Id: MatroskaProp.cpp,v 1.39 2004/03/08 07:56:51 jcsston Exp $
+    \brief Lightweight caching Matroska Parser object list
+		\author Jory Stone     <matroskaprop @ jory.info>
+
+*/
+
+#ifndef _MATROSKA_INFO_PARSER_CACHE_H_
+#define _MATROSKA_INFO_PARSER_CACHE_H_
+
+#include <windows.h>
+#include "MatroskaPages.h"
+
+class MatroskaInfoParserCache {
+public:
+	MatroskaInfoParserCache();
+	~MatroskaInfoParserCache();
+	
+	void AddParser(MatroskaInfoParser *parser);
+	MatroskaInfoParser *Lookup(const wchar_t *filename);
+
+#ifdef DEBUG
+	void OutputList();
+#endif
+protected:
+	int m_CacheCount;
+	int m_CacheLimit;
+	struct MatroskaInfoParserCacheEntry {
+		MatroskaInfoParser *parser;
+		MatroskaInfoParserCacheEntry *next;
+	};
+	MatroskaInfoParserCacheEntry *m_First;
+	MatroskaInfoParserCacheEntry *m_Last;
+};
+
+#endif // _MATROSKA_INFO_PARSER_CACHE_H_

Deleted: trunk/MatroskaUtils/ShellExtension/MatroskaProp.dsp

Deleted: trunk/MatroskaUtils/ShellExtension/MatroskaProp.dsw

Added: trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.cpp
===================================================================
--- trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,51 @@
+/*
+ *  Matroska Shell Extension
+ *
+ *  MatroskaPropShellExtension.cpp
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ * 
+ *  The idea was based from ImgSize by Victor Sapojnikov
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If not, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+/*!
+    \file MatroskaPropShellExtension.cpp
+		\version \$Id: MatroskaProp.cpp,v 1.39 2004/03/08 07:56:51 jcsston Exp $
+    \brief This is the meat code of the Matroska Shell Extension ;)
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+//Memory Leak Debuging define
+#ifdef _DEBUG
+//#define _CRTDBG_MAP_ALLOC 
+#include <stdlib.h>
+#include <crtdbg.h>
+#endif
+
+#include "MatroskaPropShellExtension.h"
+
+MatroskaPropShellExtension::MatroskaPropShellExtension()
+{
+
+}
+
+MatroskaPropShellExtension::~MatroskaPropShellExtension()
+{
+
+}
\ No newline at end of file

Added: trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h
===================================================================
--- trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/ShellExtension/MatroskaPropShellExtension.h	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,43 @@
+/*
+ *  Matroska Shell Extension
+ *
+ *  MatroskaProp.h
+ *
+ *  Copyright (C) Jory Stone - June 2003
+ *
+ *  The Matroska Shell Extension is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  The Matroska Shell Extension is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with the Matroska Shell Extension; see the file COPYING.  If not, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+/*!
+    \file MatroskaProp.h
+		\version \$Id: MatroskaProp.h,v 1.22 2004/03/07 08:08:49 jcsston Exp $
+    \brief This is the meat code of the Matroska Shell Extension
+		\author Jory Stone     <jcsston @ toughguy.net>
+
+*/
+
+#ifndef _MATROSKA_PROP_SHELL_EXTENSION_H
+#define _MATROSKA_PROP_SHELL_EXTENSION_H
+
+#include <windows.h>
+
+class MatroskaPropShellExtension {
+public:
+	MatroskaPropShellExtension();
+	virtual ~MatroskaPropShellExtension();
+};
+
+#endif // _MATROSKA_PROP_SHELL_EXTENSION_H

Added: trunk/MatroskaUtils/resource.cpp
===================================================================
--- trunk/MatroskaUtils/resource.cpp	2005-03-25 17:14:08 UTC (rev 1108)
+++ trunk/MatroskaUtils/resource.cpp	2005-03-25 17:27:44 UTC (rev 1109)
@@ -0,0 +1,5 @@
+#include "resource.h"
+
+long g_MyVersionMajor = RESOURCE_VERSION_MAJOR;
+long g_MyVersionMinor = RESOURCE_VERSION_MINOR;
+long g_MyBuildNumber = RESOURCE_VERSION_BUILD;


Property changes on: trunk/MatroskaUtils/tinyxml
___________________________________________________________________
Name: svn:ignore
   + Debug
Release


Deleted: trunk/MatroskaUtils/tinyxml/TinyXml.dsp

Deleted: trunk/MatroskaUtils/tinyxml/TinyXml.dsw
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.