Leaked source code of windows server 2003
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.

489 lines
11 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1997.
  5. //
  6. // File: cdlinfo.cxx
  7. //
  8. // Contents:
  9. //
  10. // Classes:
  11. //
  12. // Functions:
  13. //
  14. // History: 02-20-97 t-alans (Alan Shi) Created
  15. //
  16. //----------------------------------------------------------------------------
  17. #include <trans.h>
  18. #include <objbase.h>
  19. #include <wchar.h>
  20. // AS: ICodeDownloadInfo added to urlmon.idl (local change)
  21. // modified urlint.h to add SZ_CODEDOWNLOADINFO
  22. //+---------------------------------------------------------------------------
  23. //
  24. // Method: CCodeDownloadInfo::CCodeDownloadInfo
  25. //
  26. // Synopsis:
  27. //
  28. // Arguments:
  29. //
  30. //
  31. //
  32. // Returns:
  33. //
  34. // History: 01-27-1997 t-alans (Alan Shi) Created
  35. //
  36. // Notes:
  37. //
  38. //----------------------------------------------------------------------------
  39. CCodeDownloadInfo::CCodeDownloadInfo()
  40. : _szCodeBase( NULL )
  41. , _ulMajorVersion( 0 )
  42. , _ulMinorVersion( 0 )
  43. , _cRefs( 1 )
  44. {
  45. DEBUG_ENTER((DBG_TRANS,
  46. None,
  47. "CCodeDownloadInfo::CCodeDownloadInfo",
  48. "this=%#x",
  49. this
  50. ));
  51. DEBUG_LEAVE(0);
  52. }
  53. //+---------------------------------------------------------------------------
  54. //
  55. // Method: CCodeDownloadInfo::~CCodeDownloadInfo
  56. //
  57. // Synopsis:
  58. //
  59. // Arguments:
  60. //
  61. //
  62. //
  63. // Returns:
  64. //
  65. // History: 01-27-1997 t-alans (Alan Shi) Created
  66. //
  67. // Notes:
  68. //
  69. //----------------------------------------------------------------------------
  70. CCodeDownloadInfo::~CCodeDownloadInfo()
  71. {
  72. DEBUG_ENTER((DBG_TRANS,
  73. None,
  74. "CCodeDownloadInfo::~CCodeDownloadInfo",
  75. "this=%#x",
  76. this
  77. ));
  78. if (_szCodeBase != NULL)
  79. {
  80. CoTaskMemFree((void *)_szCodeBase);
  81. _szCodeBase = NULL;
  82. }
  83. DEBUG_LEAVE(0);
  84. }
  85. //+---------------------------------------------------------------------------
  86. //
  87. // Method: CCodeDownloadInfo::QueryInterface
  88. //
  89. // Synopsis:
  90. //
  91. // Arguments:
  92. //
  93. //
  94. //
  95. // Returns:
  96. //
  97. // History: 01-27-1997 t-alans (Alan Shi) Created
  98. //
  99. // Notes:
  100. //
  101. //----------------------------------------------------------------------------
  102. STDMETHODIMP CCodeDownloadInfo::QueryInterface(REFIID riid, void **ppvObj)
  103. {
  104. DEBUG_ENTER((DBG_TRANS,
  105. Hresult,
  106. "CCodeDownloadInfo::IUnknown::QueryInterface",
  107. "this=%#x, %#x, %#x",
  108. this, &riid, ppvObj
  109. ));
  110. HRESULT hr = S_OK;
  111. if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_ICodeDownloadInfo))
  112. {
  113. *ppvObj = (void *)this;
  114. AddRef();
  115. }
  116. else
  117. {
  118. *ppvObj = NULL;
  119. hr = E_NOINTERFACE;
  120. }
  121. DEBUG_LEAVE(hr);
  122. return hr;
  123. }
  124. //+---------------------------------------------------------------------------
  125. //
  126. // Method: CCodeDownloadInfo::AddRef
  127. //
  128. // Synopsis:
  129. //
  130. // Arguments:
  131. //
  132. //
  133. //
  134. // Returns:
  135. //
  136. // History: 01-27-1997 t-alans (Alan Shi) Created
  137. //
  138. // Notes:
  139. //
  140. //----------------------------------------------------------------------------
  141. STDMETHODIMP_(ULONG) CCodeDownloadInfo::AddRef(void)
  142. {
  143. DEBUG_ENTER((DBG_TRANS,
  144. Dword,
  145. "CCodeDownloadInfo::IUnknown::AddRef",
  146. "this=%#x",
  147. this
  148. ));
  149. ULONG ulRet = ++_cRefs;
  150. DEBUG_LEAVE(hr);
  151. return ulRet;
  152. }
  153. //+---------------------------------------------------------------------------
  154. //
  155. // Method: CCodeDownloadInfo::Release
  156. //
  157. // Synopsis:
  158. //
  159. // Arguments:
  160. //
  161. //
  162. //
  163. // Returns:
  164. //
  165. // History: 01-27-1997 t-alans (Alan Shi) Created
  166. //
  167. // Notes:
  168. //
  169. //----------------------------------------------------------------------------
  170. STDMETHODIMP_(ULONG) CCodeDownloadInfo::Release(void)
  171. {
  172. DEBUG_ENTER((DBG_TRANS,
  173. Dword,
  174. "CCodeDownloadInfo::IUnknown::Release",
  175. "this=%#x",
  176. this
  177. ));
  178. if (!--_cRefs)
  179. {
  180. delete this;
  181. }
  182. DEBUG_LEAVE(_cRefs);
  183. return _cRefs;
  184. }
  185. //+---------------------------------------------------------------------------
  186. //
  187. // Method: CCodeDownloadInfo::GetCodeBase
  188. //
  189. // Synopsis:
  190. //
  191. // Arguments:
  192. //
  193. //
  194. //
  195. // Returns:
  196. //
  197. // History: 01-27-1997 t-alans (Alan Shi) Created
  198. //
  199. // Notes:
  200. //
  201. //----------------------------------------------------------------------------
  202. STDMETHODIMP CCodeDownloadInfo::GetCodeBase(LPWSTR *szCodeBase)
  203. {
  204. DEBUG_ENTER((DBG_TRANS,
  205. Hresult,
  206. "CCodeDownloadInfo::GetCodeBase",
  207. "this=%#x, %.80wq",
  208. this, szCodeBase
  209. ));
  210. wcscpy(*szCodeBase, _szCodeBase);
  211. DEBUG_LEAVE(S_OK);
  212. return S_OK;
  213. }
  214. //+---------------------------------------------------------------------------
  215. //
  216. // Method: CCodeDownloadInfo::SetCodeBase
  217. //
  218. // Synopsis:
  219. //
  220. // Arguments:
  221. //
  222. //
  223. //
  224. // Returns:
  225. //
  226. // History: 01-27-1997 t-alans (Alan Shi) Created
  227. //
  228. // Notes:
  229. //
  230. //----------------------------------------------------------------------------
  231. STDMETHODIMP CCodeDownloadInfo::SetCodeBase(LPCWSTR szCodeBase)
  232. {
  233. DEBUG_ENTER((DBG_TRANS,
  234. Hresult,
  235. "CCodeDownloadInfo::SetCodeBase",
  236. "this=%#x, %.80wq",
  237. this, szCodeBase
  238. ));
  239. HRESULT hr = E_FAIL;
  240. long lStrlen = 0;
  241. if (_szCodeBase != NULL)
  242. {
  243. CoTaskMemFree((void *)_szCodeBase);
  244. _szCodeBase = NULL;
  245. }
  246. #ifndef unix
  247. lStrlen = 2 * (wcslen(szCodeBase) + 1);
  248. #else
  249. lStrlen = sizeof(WCHAR) * (wcslen(szCodeBase) + 1);
  250. #endif /* unix */
  251. _szCodeBase = (LPWSTR)CoTaskMemAlloc(lStrlen);
  252. hr = (_szCodeBase == NULL) ? (E_OUTOFMEMORY) : (S_OK);
  253. if (_szCodeBase != NULL)
  254. {
  255. wcscpy(_szCodeBase, szCodeBase);
  256. }
  257. DEBUG_LEAVE(hr);
  258. return hr;
  259. }
  260. //+---------------------------------------------------------------------------
  261. //
  262. // Method: CCodeDownloadInfo::SetMinorVersion
  263. //
  264. // Synopsis:
  265. //
  266. // Arguments:
  267. //
  268. //
  269. //
  270. // Returns:
  271. //
  272. // History: 01-27-1997 t-alans (Alan Shi) Created
  273. //
  274. // Notes:
  275. //
  276. //----------------------------------------------------------------------------
  277. STDMETHODIMP CCodeDownloadInfo::SetMinorVersion(ULONG ulVersion)
  278. {
  279. DEBUG_ENTER((DBG_TRANS,
  280. Hresult,
  281. "CCodeDownloadInfo::SetMinorVersion",
  282. "this=%#x, %x",
  283. this, ulVersion
  284. ));
  285. _ulMinorVersion = ulVersion;
  286. DEBUG_LEAVE(S_OK);
  287. return S_OK;
  288. }
  289. //+---------------------------------------------------------------------------
  290. //
  291. // Method: CCodeDownloadInfo::GetMinorVersion
  292. //
  293. // Synopsis:
  294. //
  295. // Arguments:
  296. //
  297. //
  298. //
  299. // Returns:
  300. //
  301. // History: 01-27-1997 t-alans (Alan Shi) Created
  302. //
  303. // Notes:
  304. //
  305. //----------------------------------------------------------------------------
  306. STDMETHODIMP CCodeDownloadInfo::GetMinorVersion(ULONG *pulVersion)
  307. {
  308. DEBUG_ENTER((DBG_TRANS,
  309. Hresult,
  310. "CCodeDownloadInfo::GetMinorVersion",
  311. "this=%#x, %#x",
  312. this, pulVersion
  313. ));
  314. *pulVersion = _ulMinorVersion;
  315. DEBUG_LEAVE(S_OK);
  316. return S_OK;
  317. }
  318. //+---------------------------------------------------------------------------
  319. //
  320. // Method: CCodeDownloadInfo::SetMajorVersion
  321. //
  322. // Synopsis:
  323. //
  324. // Arguments:
  325. //
  326. //
  327. //
  328. // Returns:
  329. //
  330. // History: 01-27-1997 t-alans (Alan Shi) Created
  331. //
  332. // Notes:
  333. //
  334. //----------------------------------------------------------------------------
  335. STDMETHODIMP CCodeDownloadInfo::SetMajorVersion(ULONG ulVersion)
  336. {
  337. DEBUG_ENTER((DBG_TRANS,
  338. Hresult,
  339. "CCodeDownloadInfo::SetMajorVersion",
  340. "this=%#x, %x",
  341. this, ulVersion
  342. ));
  343. _ulMajorVersion = ulVersion;
  344. DEBUG_LEAVE(S_OK);
  345. return S_OK;
  346. }
  347. //+---------------------------------------------------------------------------
  348. //
  349. // Method: CCodeDownloadInfo::GetMajorVersion
  350. //
  351. // Synopsis:
  352. //
  353. // Arguments:
  354. //
  355. //
  356. //
  357. // Returns:
  358. //
  359. // History: 01-27-1997 t-alans (Alan Shi) Created
  360. //
  361. // Notes:
  362. //
  363. //----------------------------------------------------------------------------
  364. STDMETHODIMP CCodeDownloadInfo::GetMajorVersion(ULONG *pulVersion)
  365. {
  366. DEBUG_ENTER((DBG_TRANS,
  367. Hresult,
  368. "CCodeDownloadInfo::GetMajorVersion",
  369. "this=%#x, %#x",
  370. this, pulVersion
  371. ));
  372. *pulVersion = _ulMajorVersion;
  373. DEBUG_LEAVE(S_OK);
  374. return S_OK;
  375. }
  376. //+---------------------------------------------------------------------------
  377. //
  378. // Method: CCodeDownloadInfo::GetClassID
  379. //
  380. // Synopsis:
  381. //
  382. // Arguments:
  383. //
  384. //
  385. //
  386. // Returns:
  387. //
  388. // History: 01-27-1997 t-alans (Alan Shi) Created
  389. //
  390. // Notes:
  391. //
  392. //----------------------------------------------------------------------------
  393. STDMETHODIMP CCodeDownloadInfo::GetClassID(CLSID *clsid)
  394. {
  395. DEBUG_ENTER((DBG_TRANS,
  396. Hresult,
  397. "CCodeDownloadInfo::GetClassID",
  398. "this=%#x, %#x",
  399. this, clsid
  400. ));
  401. *clsid = _clsid;
  402. DEBUG_LEAVE(S_OK);
  403. return S_OK;
  404. }
  405. //+---------------------------------------------------------------------------
  406. //
  407. // Method: CCodeDownloadInfo::SetClassID
  408. //
  409. // Synopsis:
  410. //
  411. // Arguments:
  412. //
  413. //
  414. //
  415. // Returns:
  416. //
  417. // History: 01-27-1997 t-alans (Alan Shi) Created
  418. //
  419. // Notes:
  420. //
  421. //----------------------------------------------------------------------------
  422. STDMETHODIMP CCodeDownloadInfo::SetClassID(CLSID clsid)
  423. {
  424. DEBUG_ENTER((DBG_TRANS,
  425. Hresult,
  426. "CCodeDownloadInfo::SetClassID",
  427. "this=%#x, %#x",
  428. this, &clsid
  429. ));
  430. _clsid = clsid;
  431. DEBUG_LEAVE(S_OK);
  432. return S_OK;
  433. }