~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/oleaut32/typelib16.c

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  *      TYPELIB 16bit part.
  3  *
  4  * Copyright 1997 Marcus Meissner
  5  * Copyright 1999 Rein Klazes
  6  * Copyright 2000 Francois Jacques
  7  * Copyright 2001 Huw D M Davies for CodeWeavers
  8  *
  9  * This library is free software; you can redistribute it and/or
 10  * modify it under the terms of the GNU Lesser General Public
 11  * License as published by the Free Software Foundation; either
 12  * version 2.1 of the License, or (at your option) any later version.
 13  *
 14  * This library is distributed in the hope that it will be useful,
 15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 17  * Lesser General Public License for more details.
 18  *
 19  * You should have received a copy of the GNU Lesser General Public
 20  * License along with this library; if not, write to the Free Software
 21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 22  */
 23 
 24 #include "config.h"
 25 #include "wine/port.h"
 26 
 27 #include <stdlib.h>
 28 #include <string.h>
 29 #include <stdarg.h>
 30 #include <stdio.h>
 31 #include <ctype.h>
 32 
 33 #include "winerror.h"
 34 #include "windef.h"
 35 #include "winbase.h"
 36 #include "winreg.h"
 37 #include "winuser.h"
 38 
 39 #include "objbase.h"
 40 #include "ole2disp.h"
 41 #include "wine/debug.h"
 42 
 43 WINE_DEFAULT_DEBUG_CHANNEL(ole);
 44 
 45 /*************************************************************************
 46  * TYPELIB {TYPELIB}
 47  *
 48  * This dll is the 16 bit version of the Typelib API, part the original
 49  * implementation of Ole automation. It and its companion ole2disp.dll were
 50  * superseded by oleaut32.dll which provides 32 bit implementations of these
 51  * functions and greatly extends the Ole Api.
 52  *
 53  * Winelib developers cannot use these functions directly, they are implemented
 54  * solely for backwards compatibility with existing legacy applications.
 55  *
 56  * SEE ALSO
 57  *  oleaut32(), ole2disp().
 58  */
 59 
 60 /****************************************************************************
 61  *              QueryPathOfRegTypeLib   [TYPELIB.14]
 62  *
 63  * Get the registry key of a registered type library.
 64  *
 65  * RETURNS
 66  *  Success: S_OK. path is updated with the key name
 67  *  Failure: E_FAIL, if guid was not found in the registry
 68  *
 69  * NOTES
 70  *  The key takes the form "Classes\Typelib\<guid>\<major>.<minor>\<lcid>\win16\"
 71  */
 72 HRESULT WINAPI
 73 QueryPathOfRegTypeLib16(
 74         REFGUID guid,   /* [in] Guid to get the key name for */
 75         WORD wMaj,      /* [in] Major version */
 76         WORD wMin,      /* [in] Minor version */
 77         LCID lcid,      /* [in] Locale Id */
 78         LPBSTR16 path)  /* [out] Destination for the registry key name */
 79 {
 80         char    xguid[80];
 81         char    typelibkey[100],pathname[260];
 82         LONG    plen;
 83 
 84         TRACE("\n");
 85 
 86         if (HIWORD(guid)) {
 87             sprintf( typelibkey, "SOFTWARE\\Classes\\Typelib\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\%d.%d\\%x\\win16",
 88                      guid->Data1, guid->Data2, guid->Data3,
 89                      guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
 90                      guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7],
 91                      wMaj,wMin,lcid);
 92         } else {
 93                 sprintf(xguid,"<guid 0x%08x>",(DWORD)guid);
 94                 FIXME("(%s,%d,%d,0x%04x,%p),can't handle non-string guids.\n",xguid,wMaj,wMin,lcid,path);
 95                 return E_FAIL;
 96         }
 97         plen = sizeof(pathname);
 98         if (RegQueryValueA(HKEY_LOCAL_MACHINE,typelibkey,pathname,&plen)) {
 99                 /* try again without lang specific id */
100                 if (SUBLANGID(lcid))
101                         return QueryPathOfRegTypeLib16(guid,wMaj,wMin,PRIMARYLANGID(lcid),path);
102                 FIXME("key %s not found\n",typelibkey);
103                 return E_FAIL;
104         }
105         *path = SysAllocString16(pathname);
106         return S_OK;
107 }
108 
109 /******************************************************************************
110  * LoadTypeLib [TYPELIB.3]
111  *
112  * Load and register a type library.
113  *
114  * RETURNS
115  *  Success: S_OK. pptLib contains the type libraries ITypeLib interface.
116  *  Failure: An HRESULT error code.
117  *
118  * NOTES
119  *  Both parameters are FAR pointers.
120  */
121 HRESULT WINAPI LoadTypeLib16(
122     LPSTR szFile, /* [in] Name of file to load from */
123     ITypeLib** pptLib) /* [out] Destination for loaded ITypeLib interface */
124 {
125     FIXME("(%s,%p): stub\n",debugstr_a(szFile),pptLib);
126 
127     if (pptLib!=0)
128       *pptLib=0;
129 
130     return E_FAIL;
131 }
132 
133 /****************************************************************************
134  *      OaBuildVersion                          (TYPELIB.15)
135  *
136  * Get the Ole Automation build version.
137  *
138  * PARAMS
139  *  None
140  *
141  * RETURNS
142  *  The build version.
143  *
144  * NOTES
145  *  Known typelib.dll versions:
146  *| OLE Ver.  Comments                   Date    Build Ver.
147  *| --------  -------------------------  ----    ---------
148  *| OLE 2.01  Call not available         1993     N/A
149  *| OLE 2.02                             1993-94  02 3002
150  *| OLE 2.03                                      23 730
151  *| OLE 2.03                                      03 3025
152  *| OLE 2.03  W98 SE orig. file !!       1993-95  10 3024
153  *| OLE 2.1   NT                         1993-95  ?? ???
154  *| OLE 2.3.1 W95                                 23 700
155  *| OLE2 4.0  NT4SP6                     1993-98  40 4277
156  *| OLE 2.1   W2K                        2000     10 3029
157  *| OLE 2.1   WXP                        2002     10 3029
158  *| OLE 2.1   Vista                      2007     10 3029
159  */
160 DWORD WINAPI OaBuildVersion16(void)
161 {
162     /* FIXME: I'd like to return the highest currently known version value
163      * in case the user didn't force a --winver, but I don't know how
164      * to retrieve the "versionForced" info from misc/version.c :(
165      * (this would be useful in other places, too) */
166     FIXME("If you get version error messages, please report them\n");
167     switch(GetVersion() & 0x8000ffff)  /* mask off build number */
168     {
169     case 0x80000a03:  /* WIN31 */
170                 return MAKELONG(3027, 3); /* WfW 3.11 */
171     case 0x80000004:  /* WIN95 */
172                 return MAKELONG(700, 23); /* Win95A */
173     case 0x80000a04:  /* WIN98 */
174                 return MAKELONG(3024, 10); /* W98 SE */
175     case 0x00000004:  /* NT4 */
176                 return MAKELONG(4277, 40); /* NT4 SP6 */
177     case 0x00000005:  /* W2K */
178                 return MAKELONG(3029, 10); /* W2K SP4 */
179     case 0x00000105:  /* WXP */
180                 return MAKELONG(3029, 10); /* WXP SP2 */
181     case 0x00000006:  /* Vista */
182                 return MAKELONG(3029, 10); /* Vista */
183     default:
184         FIXME("Version value not known yet. Please investigate it!\n");
185                 return 0;
186     }
187 }
188 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.