Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

451 lines
9.6 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1993.
  5. //
  6. // File: mondthk.c (16 bit target)
  7. //
  8. // Contents: Moniker APIs that are directly thunked
  9. //
  10. // History: 17-Dec-93 Johann Posch (johannp) Created
  11. //
  12. //--------------------------------------------------------------------------
  13. #include <headers.cxx>
  14. #pragma hdrstop
  15. #include <call32.hxx>
  16. #include <apilist.hxx>
  17. //+---------------------------------------------------------------------------
  18. //
  19. // Function: BindMoniker, Remoted
  20. //
  21. // Synopsis:
  22. //
  23. // Effects:
  24. //
  25. // Arguments: [pmk] --
  26. // [grfOpt] --
  27. // [iidResult] --
  28. // [ppvResult] --
  29. //
  30. // Requires:
  31. //
  32. // Returns:
  33. //
  34. // Signals:
  35. //
  36. // Modifies:
  37. //
  38. // Algorithm:
  39. //
  40. // History: 2-28-94 kevinro Created
  41. //
  42. // Notes:
  43. //
  44. //----------------------------------------------------------------------------
  45. STDAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult,
  46. LPVOID FAR* ppvResult)
  47. {
  48. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_BindMoniker),
  49. PASCAL_STACK_PTR(pmk));
  50. }
  51. //+---------------------------------------------------------------------------
  52. //
  53. // Function: MkParseDisplayName, Remoted
  54. //
  55. // Synopsis:
  56. //
  57. // Effects:
  58. //
  59. // Arguments: [pbc] --
  60. // [szUserName] --
  61. // [pchEaten] --
  62. // [ppmk] --
  63. //
  64. // Requires:
  65. //
  66. // Returns:
  67. //
  68. // Signals:
  69. //
  70. // Modifies:
  71. //
  72. // Algorithm:
  73. //
  74. // History: 2-28-94 kevinro Created
  75. //
  76. // Notes:
  77. //
  78. //----------------------------------------------------------------------------
  79. STDAPI MkParseDisplayName(LPBC pbc, LPSTR szUserName,
  80. ULONG FAR * pchEaten, LPMONIKER FAR * ppmk)
  81. {
  82. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_MkParseDisplayName),
  83. PASCAL_STACK_PTR(pbc));
  84. }
  85. //+---------------------------------------------------------------------------
  86. //
  87. // Function: MonikerRelativePathTo, Remoted
  88. //
  89. // Synopsis:
  90. //
  91. // Effects:
  92. //
  93. // Arguments: [pmkSrc] --
  94. // [pmkDest] --
  95. // [ppmkRelPath] --
  96. // [fCalledFromMethod] --
  97. //
  98. // Requires:
  99. //
  100. // Returns:
  101. //
  102. // Signals:
  103. //
  104. // Modifies:
  105. //
  106. // Algorithm:
  107. //
  108. // History: 2-28-94 kevinro Created
  109. //
  110. // Notes:
  111. //
  112. //----------------------------------------------------------------------------
  113. STDAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER
  114. FAR* ppmkRelPath, BOOL fCalledFromMethod)
  115. {
  116. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_MonikerRelativePathTo),
  117. PASCAL_STACK_PTR(pmkSrc));
  118. }
  119. //+---------------------------------------------------------------------------
  120. //
  121. // Function: MonikerCommonPrefixWith, Remoted
  122. //
  123. // Synopsis:
  124. //
  125. // Effects:
  126. //
  127. // Arguments: [pmkThis] --
  128. // [pmkOther] --
  129. // [ppmkCommon] --
  130. //
  131. // Requires:
  132. //
  133. // Returns:
  134. //
  135. // Signals:
  136. //
  137. // Modifies:
  138. //
  139. // Algorithm:
  140. //
  141. // History: 2-28-94 kevinro Created
  142. //
  143. // Notes:
  144. //
  145. //----------------------------------------------------------------------------
  146. STDAPI MonikerCommonPrefixWith(LPMONIKER pmkThis, LPMONIKER pmkOther,
  147. LPMONIKER FAR* ppmkCommon)
  148. {
  149. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_MonikerCommonPrefixWith),
  150. PASCAL_STACK_PTR(pmkThis));
  151. }
  152. //+---------------------------------------------------------------------------
  153. //
  154. // Function: CreateBindCtx, Remoted
  155. //
  156. // Synopsis:
  157. //
  158. // Effects:
  159. //
  160. // Arguments: [reserved] --
  161. // [ppbc] --
  162. //
  163. // Requires:
  164. //
  165. // Returns:
  166. //
  167. // Signals:
  168. //
  169. // Modifies:
  170. //
  171. // Algorithm:
  172. //
  173. // History: 2-28-94 kevinro Created
  174. //
  175. // Notes:
  176. //
  177. //----------------------------------------------------------------------------
  178. STDAPI CreateBindCtx(DWORD reserved, LPBC FAR* ppbc)
  179. {
  180. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CreateBindCtx),
  181. PASCAL_STACK_PTR(reserved));
  182. }
  183. //+---------------------------------------------------------------------------
  184. //
  185. // Function: CreateGenericComposite, Remoted
  186. //
  187. // Synopsis:
  188. //
  189. // Effects:
  190. //
  191. // Arguments: [pmkFirst] --
  192. // [pmkRest] --
  193. // [ppmkComposite] --
  194. //
  195. // Requires:
  196. //
  197. // Returns:
  198. //
  199. // Signals:
  200. //
  201. // Modifies:
  202. //
  203. // Algorithm:
  204. //
  205. // History: 2-28-94 kevinro Created
  206. //
  207. // Notes:
  208. //
  209. //----------------------------------------------------------------------------
  210. STDAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest,
  211. LPMONIKER FAR* ppmkComposite)
  212. {
  213. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CreateGenericComposite),
  214. PASCAL_STACK_PTR(pmkFirst));
  215. }
  216. //+---------------------------------------------------------------------------
  217. //
  218. // Function: GetClassFile, Remoted
  219. //
  220. // Synopsis:
  221. //
  222. // Effects:
  223. //
  224. // Arguments: [szFilename] --
  225. // [pclsid] --
  226. //
  227. // Requires:
  228. //
  229. // Returns:
  230. //
  231. // Signals:
  232. //
  233. // Modifies:
  234. //
  235. // Algorithm:
  236. //
  237. // History: 2-28-94 kevinro Created
  238. //
  239. // Notes:
  240. //
  241. //----------------------------------------------------------------------------
  242. STDAPI GetClassFile (LPCSTR szFilename, CLSID FAR* pclsid)
  243. {
  244. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_GetClassFile),
  245. PASCAL_STACK_PTR(szFilename));
  246. }
  247. //+---------------------------------------------------------------------------
  248. //
  249. // Function: CreateFileMoniker, Remoted
  250. //
  251. // Synopsis:
  252. //
  253. // Effects:
  254. //
  255. // Arguments: [lpszPathName] --
  256. // [ppmk] --
  257. //
  258. // Requires:
  259. //
  260. // Returns:
  261. //
  262. // Signals:
  263. //
  264. // Modifies:
  265. //
  266. // Algorithm:
  267. //
  268. // History: 2-28-94 kevinro Created
  269. // 3-15-95 alexgo Added hack for CorelDraw
  270. //
  271. // Notes: When Corel5.0 starts up, it creates a file moniker
  272. // with it's string clsid as the name. If the path name
  273. // is really CorelDraw, then call into olethk32 to set
  274. // an app compatibility flag.
  275. //
  276. // The flag that we set disables paste-link to yourself. CorelDraw
  277. // does not support this feature (because of a trashed memory
  278. // bug in 16bit OLE).
  279. //
  280. //----------------------------------------------------------------------------
  281. STDAPI CreateFileMoniker(LPSTR lpszPathName, LPMONIKER FAR* ppmk)
  282. {
  283. static const char szCorelDraw[] =
  284. "{11A11440-0394-101B-A72E-04021C007002}";
  285. // just do a quick, manual string compare so we don't have to load
  286. // the c runtime.
  287. if( lpszPathName )
  288. {
  289. LPCSTR lpszCD = szCorelDraw;
  290. LPSTR lpszPN = lpszPathName;
  291. while( *lpszPN != '\0' && *lpszPN == *lpszCD && *lpszCD != '\0' )
  292. {
  293. lpszPN++;
  294. lpszCD++;
  295. }
  296. if( *lpszCD == '\0' && *lpszPN == '\0' )
  297. {
  298. // the strings matched! Set the compatibility flag for CorelDraw
  299. AddAppCompatFlag(OACF_CORELTRASHMEM);
  300. }
  301. }
  302. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CreateFileMoniker),
  303. PASCAL_STACK_PTR(lpszPathName));
  304. }
  305. //+---------------------------------------------------------------------------
  306. //
  307. // Function: CreateItemMoniker, Remoted
  308. //
  309. // Synopsis:
  310. //
  311. // Effects:
  312. //
  313. // Arguments: [lpszDelim] --
  314. // [lpszItem] --
  315. // [ppmk] --
  316. //
  317. // Requires:
  318. //
  319. // Returns:
  320. //
  321. // Signals:
  322. //
  323. // Modifies:
  324. //
  325. // Algorithm:
  326. //
  327. // History: 2-28-94 kevinro Created
  328. //
  329. // Notes:
  330. //
  331. //----------------------------------------------------------------------------
  332. STDAPI CreateItemMoniker(LPSTR lpszDelim, LPSTR lpszItem,
  333. LPMONIKER FAR* ppmk)
  334. {
  335. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CreateItemMoniker),
  336. PASCAL_STACK_PTR(lpszDelim));
  337. }
  338. //+---------------------------------------------------------------------------
  339. //
  340. // Function: CreateAntiMoniker, Remoted
  341. //
  342. // Synopsis:
  343. //
  344. // Effects:
  345. //
  346. // Arguments: [ppmk] --
  347. //
  348. // Requires:
  349. //
  350. // Returns:
  351. //
  352. // Signals:
  353. //
  354. // Modifies:
  355. //
  356. // Algorithm:
  357. //
  358. // History: 2-28-94 kevinro Created
  359. //
  360. // Notes:
  361. //
  362. //----------------------------------------------------------------------------
  363. STDAPI CreateAntiMoniker(LPMONIKER FAR* ppmk)
  364. {
  365. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CreateAntiMoniker),
  366. PASCAL_STACK_PTR(ppmk));
  367. }
  368. //+---------------------------------------------------------------------------
  369. //
  370. // Function: CreatePointerMoniker, Remoted
  371. //
  372. // Synopsis:
  373. //
  374. // Effects:
  375. //
  376. // Arguments: [punk] --
  377. // [ppmk] --
  378. //
  379. // Requires:
  380. //
  381. // Returns:
  382. //
  383. // Signals:
  384. //
  385. // Modifies:
  386. //
  387. // Algorithm:
  388. //
  389. // History: 2-28-94 kevinro Created
  390. //
  391. // Notes:
  392. //
  393. //----------------------------------------------------------------------------
  394. STDAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER FAR* ppmk)
  395. {
  396. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CreatePointerMoniker),
  397. PASCAL_STACK_PTR(punk));
  398. }
  399. //+---------------------------------------------------------------------------
  400. //
  401. // Function: GetRunningObjectTable, Remoted
  402. //
  403. // Synopsis:
  404. //
  405. // Effects:
  406. //
  407. // Arguments: [reserved] --
  408. // [pprot] --
  409. //
  410. // Requires:
  411. //
  412. // Returns:
  413. //
  414. // Signals:
  415. //
  416. // Modifies:
  417. //
  418. // Algorithm:
  419. //
  420. // History: 2-28-94 kevinro Created
  421. //
  422. // Notes:
  423. //
  424. //----------------------------------------------------------------------------
  425. STDAPI GetRunningObjectTable( DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot)
  426. {
  427. return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_GetRunningObjectTable),
  428. PASCAL_STACK_PTR(reserved));
  429. }