Marcus Meissner | 66e8c4e | 1999-09-10 13:52:12 +0000 | [diff] [blame] | 1 | /* |
| 2 | * OLEAUT32 |
| 3 | * |
| 4 | */ |
| 5 | #include <string.h> |
François Gouget | 44a1822 | 2000-12-19 04:53:20 +0000 | [diff] [blame] | 6 | |
Jeremy White | d3e22d9 | 2000-02-10 19:03:02 +0000 | [diff] [blame] | 7 | #include "windef.h" |
François Gouget | 44a1822 | 2000-12-19 04:53:20 +0000 | [diff] [blame] | 8 | #include "winbase.h" |
Jeremy White | d3e22d9 | 2000-02-10 19:03:02 +0000 | [diff] [blame] | 9 | #include "wingdi.h" |
Marcus Meissner | 66e8c4e | 1999-09-10 13:52:12 +0000 | [diff] [blame] | 10 | #include "winuser.h" |
| 11 | #include "winerror.h" |
Alexandre Julliard | bea617b | 2000-08-03 04:22:35 +0000 | [diff] [blame] | 12 | |
Alexandre Julliard | 5be8e7d | 2000-12-06 01:50:47 +0000 | [diff] [blame] | 13 | #include "ole2.h" |
Marcus Meissner | 66e8c4e | 1999-09-10 13:52:12 +0000 | [diff] [blame] | 14 | #include "heap.h" |
Marcus Meissner | 66e8c4e | 1999-09-10 13:52:12 +0000 | [diff] [blame] | 15 | #include "debugtools.h" |
| 16 | |
Marcus Meissner | 317c9d0 | 2000-01-23 03:15:25 +0000 | [diff] [blame] | 17 | DEFAULT_DEBUG_CHANNEL(ole); |
| 18 | |
| 19 | static WCHAR _delimiter[2] = {'!',0}; /* default delimiter apparently */ |
| 20 | static WCHAR *pdelimiter = &_delimiter[0]; |
Marcus Meissner | 66e8c4e | 1999-09-10 13:52:12 +0000 | [diff] [blame] | 21 | |
Patrik Stridvall | fcfacb9 | 2000-03-24 20:46:04 +0000 | [diff] [blame] | 22 | /*********************************************************************** |
Patrik Stridvall | 8b216b3 | 2001-06-19 18:20:47 +0000 | [diff] [blame] | 23 | * RegisterActiveObject (OLEAUT32.33) |
Patrik Stridvall | fcfacb9 | 2000-03-24 20:46:04 +0000 | [diff] [blame] | 24 | */ |
Marcus Meissner | 84e2d6b | 1999-10-13 12:19:09 +0000 | [diff] [blame] | 25 | HRESULT WINAPI RegisterActiveObject( |
| 26 | LPUNKNOWN punk,REFCLSID rcid,DWORD dwFlags,LPDWORD pdwRegister |
| 27 | ) { |
Marcus Meissner | 317c9d0 | 2000-01-23 03:15:25 +0000 | [diff] [blame] | 28 | WCHAR guidbuf[80]; |
| 29 | HRESULT ret; |
| 30 | LPRUNNINGOBJECTTABLE runobtable; |
| 31 | LPMONIKER moniker; |
| 32 | |
| 33 | StringFromGUID2(rcid,guidbuf,39); |
| 34 | ret = CreateItemMoniker(pdelimiter,guidbuf,&moniker); |
| 35 | if (FAILED(ret)) |
| 36 | return ret; |
| 37 | ret = GetRunningObjectTable(0,&runobtable); |
| 38 | if (FAILED(ret)) { |
| 39 | IMoniker_Release(moniker); |
| 40 | return ret; |
| 41 | } |
| 42 | ret = IRunningObjectTable_Register(runobtable,dwFlags,punk,moniker,pdwRegister); |
| 43 | IRunningObjectTable_Release(runobtable); |
| 44 | IMoniker_Release(moniker); |
| 45 | return ret; |
Marcus Meissner | 84e2d6b | 1999-10-13 12:19:09 +0000 | [diff] [blame] | 46 | } |
| 47 | |
Patrik Stridvall | fcfacb9 | 2000-03-24 20:46:04 +0000 | [diff] [blame] | 48 | /*********************************************************************** |
Patrik Stridvall | 8b216b3 | 2001-06-19 18:20:47 +0000 | [diff] [blame] | 49 | * RevokeActiveObject (OLEAUT32.34) |
Patrik Stridvall | fcfacb9 | 2000-03-24 20:46:04 +0000 | [diff] [blame] | 50 | */ |
Marcus Meissner | 84e2d6b | 1999-10-13 12:19:09 +0000 | [diff] [blame] | 51 | HRESULT WINAPI RevokeActiveObject(DWORD xregister,LPVOID reserved) |
Marcus Meissner | 66e8c4e | 1999-09-10 13:52:12 +0000 | [diff] [blame] | 52 | { |
Marcus Meissner | 317c9d0 | 2000-01-23 03:15:25 +0000 | [diff] [blame] | 53 | LPRUNNINGOBJECTTABLE runobtable; |
| 54 | HRESULT ret; |
| 55 | |
| 56 | ret = GetRunningObjectTable(0,&runobtable); |
| 57 | if (FAILED(ret)) return ret; |
| 58 | ret = IRunningObjectTable_Revoke(runobtable,xregister); |
| 59 | if (SUCCEEDED(ret)) ret = S_OK; |
| 60 | IRunningObjectTable_Release(runobtable); |
| 61 | return ret; |
Marcus Meissner | 84e2d6b | 1999-10-13 12:19:09 +0000 | [diff] [blame] | 62 | } |
| 63 | |
Patrik Stridvall | fcfacb9 | 2000-03-24 20:46:04 +0000 | [diff] [blame] | 64 | /*********************************************************************** |
Patrik Stridvall | 8b216b3 | 2001-06-19 18:20:47 +0000 | [diff] [blame] | 65 | * GetActiveObject (OLEAUT32.35) |
Patrik Stridvall | fcfacb9 | 2000-03-24 20:46:04 +0000 | [diff] [blame] | 66 | */ |
Marcus Meissner | 84e2d6b | 1999-10-13 12:19:09 +0000 | [diff] [blame] | 67 | HRESULT WINAPI GetActiveObject(REFCLSID rcid,LPVOID preserved,LPUNKNOWN *ppunk) |
| 68 | { |
Marcus Meissner | 317c9d0 | 2000-01-23 03:15:25 +0000 | [diff] [blame] | 69 | WCHAR guidbuf[80]; |
| 70 | HRESULT ret; |
| 71 | LPRUNNINGOBJECTTABLE runobtable; |
| 72 | LPMONIKER moniker; |
| 73 | |
| 74 | StringFromGUID2(rcid,guidbuf,39); |
| 75 | ret = CreateItemMoniker(pdelimiter,guidbuf,&moniker); |
| 76 | if (FAILED(ret)) |
| 77 | return ret; |
| 78 | ret = GetRunningObjectTable(0,&runobtable); |
| 79 | if (FAILED(ret)) { |
| 80 | IMoniker_Release(moniker); |
| 81 | return ret; |
| 82 | } |
| 83 | ret = IRunningObjectTable_GetObject(runobtable,moniker,ppunk); |
| 84 | IRunningObjectTable_Release(runobtable); |
| 85 | IMoniker_Release(moniker); |
| 86 | return ret; |
Marcus Meissner | 66e8c4e | 1999-09-10 13:52:12 +0000 | [diff] [blame] | 87 | } |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 88 | |
| 89 | /*********************************************************************** |
| 90 | * OaBuildVersion [OLEAUT32.170] |
| 91 | * |
| 92 | * known OLEAUT32.DLL versions: |
| 93 | * OLE 2.1 NT 1993-95 10 3023 |
| 94 | * OLE 2.1 10 3027 |
| 95 | * OLE 2.20 W95/NT 1993-96 20 4112 |
| 96 | * OLE 2.20 W95/NT 1993-96 20 4118 |
| 97 | * OLE 2.20 W95/NT 1993-96 20 4122 |
| 98 | * OLE 2.30 W95/NT 1993-98 30 4265 |
| 99 | * OLE 2.40 NT?? 1993-98 40 4267 |
| 100 | * OLE 2.40 W98 SE orig. file 1993-98 40 4275 |
| 101 | */ |
| 102 | UINT WINAPI OaBuildVersion() |
| 103 | { |
| 104 | FIXME("Please report to a.mohr@mailto.de if you get version error messages !\n"); |
Alexandre Julliard | d586dc9 | 2000-08-14 14:35:01 +0000 | [diff] [blame] | 105 | switch(GetVersion() & 0x8000ffff) /* mask off build number */ |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 106 | { |
Alexandre Julliard | d586dc9 | 2000-08-14 14:35:01 +0000 | [diff] [blame] | 107 | case 0x80000a03: /* WIN31 */ |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 108 | return MAKELONG(4049, 20); /* from Win32s 1.1e */ |
Alexandre Julliard | d586dc9 | 2000-08-14 14:35:01 +0000 | [diff] [blame] | 109 | case 0x80000004: /* WIN95 */ |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 110 | return MAKELONG(4265, 30); |
Alexandre Julliard | d586dc9 | 2000-08-14 14:35:01 +0000 | [diff] [blame] | 111 | case 0x80000a04: /* WIN98 */ |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 112 | return MAKELONG(4275, 40); /* value of W98 SE; orig. W98 AFAIK has 4265, 30 just as W95 */ |
Alexandre Julliard | d586dc9 | 2000-08-14 14:35:01 +0000 | [diff] [blame] | 113 | case 0x00003303: /* NT351 */ |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 114 | return MAKELONG(4265, 30); /* value borrowed from Win95 */ |
Alexandre Julliard | d586dc9 | 2000-08-14 14:35:01 +0000 | [diff] [blame] | 115 | case 0x00000004: /* NT40 */ |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 116 | return MAKELONG(4122, 20); /* ouch ! Quite old, I guess */ |
Alexandre Julliard | d586dc9 | 2000-08-14 14:35:01 +0000 | [diff] [blame] | 117 | default: |
Andreas Mohr | ffdd171 | 1999-12-05 23:52:56 +0000 | [diff] [blame] | 118 | ERR("Version value not known yet. Please investigate it !\n"); |
| 119 | return 0x0; |
| 120 | } |
| 121 | } |
Marcus Meissner | 323af8d | 2000-03-26 13:36:40 +0000 | [diff] [blame] | 122 | |
Patrik Stridvall | 2d6457c | 2000-03-28 20:22:59 +0000 | [diff] [blame] | 123 | /*********************************************************************** |
Patrik Stridvall | 044855c | 2001-07-11 18:56:41 +0000 | [diff] [blame^] | 124 | * DllRegisterServer (OLEAUT32.320) |
Patrik Stridvall | 2d6457c | 2000-03-28 20:22:59 +0000 | [diff] [blame] | 125 | */ |
Marcus Meissner | 323af8d | 2000-03-26 13:36:40 +0000 | [diff] [blame] | 126 | HRESULT WINAPI OLEAUT32_DllRegisterServer() { |
| 127 | FIXME("stub!\n"); |
| 128 | return S_OK; |
| 129 | } |
Patrik Stridvall | 2d6457c | 2000-03-28 20:22:59 +0000 | [diff] [blame] | 130 | |
| 131 | /*********************************************************************** |
Patrik Stridvall | 044855c | 2001-07-11 18:56:41 +0000 | [diff] [blame^] | 132 | * DllUnregisterServer (OLEAUT32.321) |
Patrik Stridvall | 2d6457c | 2000-03-28 20:22:59 +0000 | [diff] [blame] | 133 | */ |
Marcus Meissner | 323af8d | 2000-03-26 13:36:40 +0000 | [diff] [blame] | 134 | HRESULT WINAPI OLEAUT32_DllUnregisterServer() { |
| 135 | FIXME("stub!\n"); |
| 136 | return S_OK; |
| 137 | } |