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.

843 lines
22 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2000-2002 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // SendStatusReports.cpp
  7. //
  8. // Header File:
  9. // SendStatusReports.h
  10. //
  11. // Description:
  12. // This file contains the definition of the SendStatusReports
  13. // functions.
  14. //
  15. // Maintained By:
  16. // Galen Barbee (GalenB) 28-AUG-2000
  17. //
  18. //////////////////////////////////////////////////////////////////////////////
  19. //////////////////////////////////////////////////////////////////////////////
  20. // Include Files
  21. //////////////////////////////////////////////////////////////////////////////
  22. #include "pch.h"
  23. #include <LoadString.h>
  24. //////////////////////////////////////////////////////////////////////////////
  25. // Constant Definitions
  26. //////////////////////////////////////////////////////////////////////////////
  27. //////////////////////////////////////////////////////////////////////////////
  28. //++
  29. //
  30. // HrSendStatusReport
  31. //
  32. // Description:
  33. //
  34. // Arguments:
  35. //
  36. // Return Value:
  37. //
  38. //--
  39. //////////////////////////////////////////////////////////////////////////////
  40. HRESULT
  41. HrSendStatusReport(
  42. IClusCfgCallback * picccIn
  43. , CLSID clsidTaskMajorIn
  44. , CLSID clsidTaskMinorIn
  45. , ULONG ulMinIn
  46. , ULONG ulMaxIn
  47. , ULONG ulCurrentIn
  48. , HRESULT hrStatusIn
  49. , const WCHAR * pcszDescriptionIn
  50. )
  51. {
  52. TraceFunc1( "pcszDescriptionIn = '%ls'", pcszDescriptionIn == NULL ? L"<null>" : pcszDescriptionIn );
  53. Assert( picccIn != NULL );
  54. HRESULT hr = S_OK;
  55. BSTR bstrNodeName = NULL;
  56. FILETIME ft;
  57. //
  58. // We don't care if this succeeds. NULL is a valid arg for node name.
  59. //
  60. THR( HrGetComputerName(
  61. ComputerNameDnsHostname
  62. , &bstrNodeName
  63. , TRUE // fBestEffortIn
  64. ) );
  65. GetSystemTimeAsFileTime( &ft );
  66. if ( picccIn != NULL )
  67. {
  68. hr = THR( picccIn->SendStatusReport(
  69. bstrNodeName
  70. , clsidTaskMajorIn
  71. , clsidTaskMinorIn
  72. , ulMinIn
  73. , ulMaxIn
  74. , ulCurrentIn
  75. , hrStatusIn
  76. , pcszDescriptionIn
  77. , &ft
  78. , NULL
  79. ) );
  80. } // if:
  81. TraceSysFreeString( bstrNodeName );
  82. HRETURN( hr );
  83. } //*** HrSendStatusReport
  84. //////////////////////////////////////////////////////////////////////////////
  85. //++
  86. //
  87. // HrSendStatusReport
  88. //
  89. // Description:
  90. //
  91. // Arguments:
  92. //
  93. // Return Value:
  94. //
  95. //--
  96. //////////////////////////////////////////////////////////////////////////////
  97. HRESULT
  98. HrSendStatusReport(
  99. IClusCfgCallback * picccIn
  100. , CLSID clsidTaskMajorIn
  101. , CLSID clsidTaskMinorIn
  102. , ULONG ulMinIn
  103. , ULONG ulMaxIn
  104. , ULONG ulCurrentIn
  105. , HRESULT hrStatusIn
  106. , DWORD idDescriptionIn
  107. )
  108. {
  109. TraceFunc( "" );
  110. Assert( picccIn != NULL );
  111. HRESULT hr = S_OK;
  112. BSTR bstrDescription = NULL;
  113. FILETIME ft;
  114. BSTR bstrNodeName = NULL;
  115. hr = THR( HrLoadStringIntoBSTR( g_hInstance, idDescriptionIn, &bstrDescription ) );
  116. if ( FAILED( hr ) )
  117. {
  118. goto CleanUp;
  119. } // if:
  120. //
  121. // We don't care if this succeeds. NULL is a valid arg for node name.
  122. //
  123. THR( HrGetComputerName(
  124. ComputerNameDnsHostname
  125. , &bstrNodeName
  126. , TRUE // fBestEffortIn
  127. ) );
  128. GetSystemTimeAsFileTime( &ft );
  129. if ( picccIn != NULL )
  130. {
  131. hr = THR( picccIn->SendStatusReport(
  132. bstrNodeName
  133. , clsidTaskMajorIn
  134. , clsidTaskMinorIn
  135. , ulMinIn
  136. , ulMaxIn
  137. , ulCurrentIn
  138. , hrStatusIn
  139. , bstrDescription
  140. , &ft
  141. , NULL
  142. ) );
  143. } // if:
  144. CleanUp:
  145. TraceSysFreeString( bstrNodeName );
  146. TraceSysFreeString( bstrDescription );
  147. HRETURN( hr );
  148. } //*** HrSendStatusReport
  149. //////////////////////////////////////////////////////////////////////////////
  150. //++
  151. //
  152. // HrSendStatusReport
  153. //
  154. // Description:
  155. //
  156. // Arguments:
  157. //
  158. // Return Value:
  159. //
  160. //
  161. //--
  162. //////////////////////////////////////////////////////////////////////////////
  163. HRESULT
  164. HrSendStatusReport(
  165. IClusCfgCallback * picccIn
  166. , const WCHAR * pcszNodeNameIn
  167. , CLSID clsidTaskMajorIn
  168. , CLSID clsidTaskMinorIn
  169. , ULONG ulMinIn
  170. , ULONG ulMaxIn
  171. , ULONG ulCurrentIn
  172. , HRESULT hrStatusIn
  173. , DWORD idDescriptionIn
  174. )
  175. {
  176. TraceFunc1( "pcszNodeNameIn = '%ls', idDescriptionIn", pcszNodeNameIn == NULL ? L"<null>" : pcszNodeNameIn );
  177. Assert( picccIn != NULL );
  178. HRESULT hr = S_OK;
  179. BSTR bstrDescription = NULL;
  180. FILETIME ft;
  181. hr = THR( HrLoadStringIntoBSTR( g_hInstance, idDescriptionIn, &bstrDescription ) );
  182. if ( FAILED( hr ) )
  183. {
  184. goto CleanUp;
  185. } // if:
  186. GetSystemTimeAsFileTime( &ft );
  187. if ( picccIn != NULL )
  188. {
  189. hr = THR( picccIn->SendStatusReport(
  190. pcszNodeNameIn
  191. , clsidTaskMajorIn
  192. , clsidTaskMinorIn
  193. , ulMinIn
  194. , ulMaxIn
  195. , ulCurrentIn
  196. , hrStatusIn
  197. , bstrDescription
  198. , &ft
  199. , NULL
  200. ) );
  201. } // if:
  202. CleanUp:
  203. TraceSysFreeString( bstrDescription );
  204. HRETURN( hr );
  205. } //*** HrSendStatusReport
  206. //////////////////////////////////////////////////////////////////////////////
  207. //++
  208. //
  209. // HrSendStatusReport
  210. //
  211. // Description:
  212. //
  213. // Arguments:
  214. //
  215. // Return Value:
  216. //
  217. // Remarks:
  218. // None.
  219. //
  220. //--
  221. //////////////////////////////////////////////////////////////////////////////
  222. HRESULT
  223. HrSendStatusReport(
  224. IClusCfgCallback * picccIn
  225. , const WCHAR * pcszNodeNameIn
  226. , CLSID clsidTaskMajorIn
  227. , CLSID clsidTaskMinorIn
  228. , ULONG ulMinIn
  229. , ULONG ulMaxIn
  230. , ULONG ulCurrentIn
  231. , HRESULT hrStatusIn
  232. , const WCHAR * pcszDescriptionIn
  233. )
  234. {
  235. TraceFunc2( "pcszNodeName = '%ls', pcszDescriptionIn = '%ls'"
  236. , pcszNodeNameIn == NULL ? L"<null>" : pcszNodeNameIn
  237. , pcszDescriptionIn == NULL ? L"<null>" : pcszDescriptionIn
  238. );
  239. Assert( picccIn != NULL );
  240. HRESULT hr = S_OK;
  241. FILETIME ft;
  242. GetSystemTimeAsFileTime( &ft );
  243. if ( picccIn != NULL )
  244. {
  245. hr = THR( picccIn->SendStatusReport(
  246. pcszNodeNameIn
  247. , clsidTaskMajorIn
  248. , clsidTaskMinorIn
  249. , ulMinIn
  250. , ulMaxIn
  251. , ulCurrentIn
  252. , hrStatusIn
  253. , pcszDescriptionIn
  254. , &ft
  255. , NULL
  256. ) );
  257. } // if:
  258. HRETURN( hr );
  259. } //*** HrSendStatusReport
  260. //////////////////////////////////////////////////////////////////////////////
  261. //++
  262. //
  263. // HrSendStatusReport
  264. //
  265. // Description:
  266. //
  267. // Arguments:
  268. //
  269. // Return Value:
  270. //
  271. //--
  272. //////////////////////////////////////////////////////////////////////////////
  273. HRESULT
  274. HrSendStatusReport(
  275. IClusCfgCallback * picccIn
  276. , CLSID clsidTaskMajorIn
  277. , CLSID clsidTaskMinorIn
  278. , ULONG ulMinIn
  279. , ULONG ulMaxIn
  280. , ULONG ulCurrentIn
  281. , HRESULT hrStatusIn
  282. , const WCHAR * pcszDescriptionIn
  283. , const WCHAR * pcszReferenceIn
  284. )
  285. {
  286. TraceFunc( "" );
  287. Assert( picccIn != NULL );
  288. HRESULT hr = S_OK;
  289. FILETIME ft;
  290. BSTR bstrNodeName = NULL;
  291. //
  292. // We don't care if this succeeds. NULL is a valid arg for node name.
  293. //
  294. THR( HrGetComputerName(
  295. ComputerNameDnsHostname
  296. , &bstrNodeName
  297. , TRUE // fBestEffortIn
  298. ) );
  299. GetSystemTimeAsFileTime( &ft );
  300. if ( picccIn != NULL )
  301. {
  302. hr = THR( picccIn->SendStatusReport(
  303. bstrNodeName
  304. , clsidTaskMajorIn
  305. , clsidTaskMinorIn
  306. , ulMinIn
  307. , ulMaxIn
  308. , ulCurrentIn
  309. , hrStatusIn
  310. , pcszDescriptionIn
  311. , &ft
  312. , pcszReferenceIn
  313. ) );
  314. } // if:
  315. TraceSysFreeString( bstrNodeName );
  316. HRETURN( hr );
  317. } //*** HrSendStatusReport
  318. //////////////////////////////////////////////////////////////////////////////
  319. //++
  320. //
  321. // HrSendStatusReport
  322. //
  323. // Description:
  324. //
  325. // Arguments:
  326. //
  327. // Return Value:
  328. //
  329. //--
  330. //////////////////////////////////////////////////////////////////////////////
  331. HRESULT
  332. HrSendStatusReport(
  333. IClusCfgCallback * picccIn
  334. , CLSID clsidTaskMajorIn
  335. , CLSID clsidTaskMinorIn
  336. , ULONG ulMinIn
  337. , ULONG ulMaxIn
  338. , ULONG ulCurrentIn
  339. , HRESULT hrStatusIn
  340. , DWORD idDescriptionIn
  341. , DWORD idReferenceIn
  342. )
  343. {
  344. TraceFunc( "" );
  345. Assert( picccIn != NULL );
  346. HRESULT hr = S_OK;
  347. BSTR bstrDescription = NULL;
  348. BSTR bstrReference = NULL;
  349. BSTR bstrNodeName = NULL;
  350. FILETIME ft;
  351. hr = THR( HrLoadStringIntoBSTR( g_hInstance, idDescriptionIn, &bstrDescription ) );
  352. if ( FAILED( hr ) )
  353. {
  354. goto CleanUp;
  355. } // if:
  356. hr = THR( HrLoadStringIntoBSTR( g_hInstance, idReferenceIn, &bstrReference ) );
  357. if ( FAILED( hr ) )
  358. {
  359. goto CleanUp;
  360. } // if:
  361. //
  362. // We don't care if this succeeds. NULL is a valid arg for node name.
  363. //
  364. THR( HrGetComputerName(
  365. ComputerNameDnsHostname
  366. , &bstrNodeName
  367. , TRUE // fBestEffortIn
  368. ) );
  369. GetSystemTimeAsFileTime( &ft );
  370. if ( picccIn != NULL )
  371. {
  372. hr = THR( picccIn->SendStatusReport(
  373. bstrNodeName
  374. , clsidTaskMajorIn
  375. , clsidTaskMinorIn
  376. , ulMinIn
  377. , ulMaxIn
  378. , ulCurrentIn
  379. , hrStatusIn
  380. , bstrDescription
  381. , &ft
  382. , bstrReference
  383. ) );
  384. } // if:
  385. CleanUp:
  386. TraceSysFreeString( bstrDescription );
  387. TraceSysFreeString( bstrReference );
  388. TraceSysFreeString( bstrNodeName );
  389. HRETURN( hr );
  390. } //*** HrSendStatusReport
  391. //////////////////////////////////////////////////////////////////////////////
  392. //++
  393. //
  394. // HrSendStatusReport
  395. //
  396. // Description:
  397. //
  398. // Arguments:
  399. //
  400. // Return Value:
  401. //
  402. //--
  403. //////////////////////////////////////////////////////////////////////////////
  404. HRESULT
  405. HrSendStatusReport(
  406. IClusCfgCallback * picccIn
  407. , CLSID clsidTaskMajorIn
  408. , CLSID clsidTaskMinorIn
  409. , ULONG ulMinIn
  410. , ULONG ulMaxIn
  411. , ULONG ulCurrentIn
  412. , HRESULT hrStatusIn
  413. , const WCHAR * pcszDescriptionIn
  414. , DWORD idReferenceIn
  415. )
  416. {
  417. TraceFunc( "" );
  418. Assert( picccIn != NULL );
  419. HRESULT hr = S_OK;
  420. BSTR bstrReference = NULL;
  421. BSTR bstrNodeName = NULL;
  422. FILETIME ft;
  423. hr = THR( HrLoadStringIntoBSTR( g_hInstance, idReferenceIn, &bstrReference ) );
  424. if ( FAILED( hr ) )
  425. {
  426. goto CleanUp;
  427. } // if:
  428. //
  429. // We don't care if this succeeds. NULL is a valid arg for node name.
  430. //
  431. THR( HrGetComputerName(
  432. ComputerNameDnsHostname
  433. , &bstrNodeName
  434. , TRUE // fBestEffortIn
  435. ) );
  436. GetSystemTimeAsFileTime( &ft );
  437. if ( picccIn != NULL )
  438. {
  439. hr = THR( picccIn->SendStatusReport(
  440. bstrNodeName
  441. , clsidTaskMajorIn
  442. , clsidTaskMinorIn
  443. , ulMinIn
  444. , ulMaxIn
  445. , ulCurrentIn
  446. , hrStatusIn
  447. , pcszDescriptionIn
  448. , &ft
  449. , bstrReference
  450. ) );
  451. } // if:
  452. CleanUp:
  453. TraceSysFreeString( bstrReference );
  454. TraceSysFreeString( bstrNodeName );
  455. HRETURN( hr );
  456. } //*** HrSendStatusReport
  457. //////////////////////////////////////////////////////////////////////////////
  458. //++
  459. //
  460. // HrFormatDescriptionAndSendStatusReport
  461. //
  462. // Description:
  463. // Variable argument description formater version of SendStatusReport.
  464. //
  465. // Arguments:
  466. //
  467. //
  468. // Return Value:
  469. // S_OK
  470. // Success.
  471. //
  472. // Other HRESULT error.
  473. //
  474. // Remarks:
  475. //
  476. //--
  477. //////////////////////////////////////////////////////////////////////////////
  478. HRESULT __cdecl
  479. HrFormatDescriptionAndSendStatusReport(
  480. IClusCfgCallback * picccIn
  481. , LPCWSTR pcszNodeNameIn
  482. , CLSID clsidTaskMajorIn
  483. , CLSID clsidTaskMinorIn
  484. , ULONG ulMinIn
  485. , ULONG ulMaxIn
  486. , ULONG ulCurrentIn
  487. , HRESULT hrStatusIn
  488. , int nDescriptionFormatIn
  489. , ...
  490. )
  491. {
  492. TraceFunc( "" );
  493. Assert( picccIn != NULL );
  494. HRESULT hr = S_OK;
  495. BSTR bstrMsg = NULL;
  496. BSTR bstrFormat = NULL;
  497. va_list valist;
  498. FILETIME ft;
  499. hr = THR( HrLoadStringIntoBSTR( g_hInstance, nDescriptionFormatIn, &bstrFormat ) );
  500. if ( FAILED( hr ) )
  501. {
  502. goto Cleanup;
  503. } // if:
  504. va_start( valist, nDescriptionFormatIn );
  505. hr = HrFormatStringWithVAListIntoBSTR( bstrFormat, &bstrMsg, valist );
  506. va_end( valist );
  507. if ( FAILED( hr ) )
  508. {
  509. goto Cleanup;
  510. } // if:
  511. GetSystemTimeAsFileTime( &ft );
  512. if ( picccIn != NULL )
  513. {
  514. hr = THR( picccIn->SendStatusReport(
  515. pcszNodeNameIn
  516. , clsidTaskMajorIn
  517. , clsidTaskMinorIn
  518. , ulMinIn
  519. , ulMaxIn
  520. , ulCurrentIn
  521. , hrStatusIn
  522. , bstrMsg
  523. , &ft
  524. , NULL
  525. ) );
  526. } // if:
  527. Cleanup:
  528. TraceSysFreeString( bstrFormat );
  529. TraceSysFreeString( bstrMsg );
  530. HRETURN( hr );
  531. } //*** HrFormatDescriptionAndSendStatusReport
  532. //////////////////////////////////////////////////////////////////////////////
  533. //++
  534. //
  535. // HrFormatDescriptionAndSendStatusReport
  536. //
  537. // Description:
  538. // Variable argument description formater version of SendStatusReport.
  539. //
  540. // Arguments:
  541. //
  542. //
  543. // Return Value:
  544. // S_OK
  545. // Success.
  546. //
  547. // Other HRESULT error.
  548. //
  549. // Remarks:
  550. //
  551. //--
  552. //////////////////////////////////////////////////////////////////////////////
  553. HRESULT __cdecl
  554. HrFormatDescriptionAndSendStatusReport(
  555. IClusCfgCallback * picccIn
  556. , PCWSTR pcszNodeNameIn
  557. , CLSID clsidTaskMajorIn
  558. , CLSID clsidTaskMinorIn
  559. , ULONG ulMinIn
  560. , ULONG ulMaxIn
  561. , ULONG ulCurrentIn
  562. , HRESULT hrStatusIn
  563. , PCWSTR pcszDescriptionFormatIn
  564. , ...
  565. )
  566. {
  567. TraceFunc( "" );
  568. Assert( picccIn != NULL );
  569. HRESULT hr = S_OK;
  570. BSTR bstrMsg = NULL;
  571. va_list valist;
  572. FILETIME ft;
  573. va_start( valist, pcszDescriptionFormatIn );
  574. hr = HrFormatStringWithVAListIntoBSTR( pcszDescriptionFormatIn, &bstrMsg, valist );
  575. va_end( valist );
  576. if ( FAILED( hr ) )
  577. {
  578. goto Cleanup;
  579. } // if:
  580. GetSystemTimeAsFileTime( &ft );
  581. if ( picccIn != NULL )
  582. {
  583. hr = THR( picccIn->SendStatusReport(
  584. pcszNodeNameIn
  585. , clsidTaskMajorIn
  586. , clsidTaskMinorIn
  587. , ulMinIn
  588. , ulMaxIn
  589. , ulCurrentIn
  590. , hrStatusIn
  591. , bstrMsg
  592. , &ft
  593. , NULL
  594. ) );
  595. } // if:
  596. Cleanup:
  597. TraceSysFreeString( bstrMsg );
  598. HRETURN( hr );
  599. } //*** HrFormatDescriptionAndSendStatusReport
  600. //////////////////////////////////////////////////////////////////////////////
  601. //++
  602. //
  603. // HrSendStatusReport
  604. //
  605. // Description:
  606. //
  607. // Arguments:
  608. //
  609. // Return Value:
  610. //
  611. // Remarks:
  612. // None.
  613. //
  614. //--
  615. //////////////////////////////////////////////////////////////////////////////
  616. HRESULT
  617. HrSendStatusReport(
  618. IClusCfgCallback * picccIn
  619. , const WCHAR * pcszNodeNameIn
  620. , CLSID clsidTaskMajorIn
  621. , CLSID clsidTaskMinorIn
  622. , ULONG ulMinIn
  623. , ULONG ulMaxIn
  624. , ULONG ulCurrentIn
  625. , HRESULT hrStatusIn
  626. , const WCHAR * pcszDescriptionIn
  627. , DWORD dwRefStringIdIn
  628. )
  629. {
  630. TraceFunc2( "pcszNodeName = '%ls', pcszDescriptionIn = '%ls'"
  631. , pcszNodeNameIn == NULL ? L"<null>" : pcszNodeNameIn
  632. , pcszDescriptionIn == NULL ? L"<null>" : pcszDescriptionIn
  633. );
  634. Assert( picccIn != NULL );
  635. HRESULT hr = S_OK;
  636. FILETIME ft;
  637. BSTR bstrRef = NULL;
  638. hr = THR( HrLoadStringIntoBSTR( g_hInstance, dwRefStringIdIn, &bstrRef ) );
  639. if ( FAILED( hr ) )
  640. {
  641. goto Cleanup;
  642. } // if:
  643. GetSystemTimeAsFileTime( &ft );
  644. if ( picccIn != NULL )
  645. {
  646. hr = THR( picccIn->SendStatusReport(
  647. pcszNodeNameIn
  648. , clsidTaskMajorIn
  649. , clsidTaskMinorIn
  650. , ulMinIn
  651. , ulMaxIn
  652. , ulCurrentIn
  653. , hrStatusIn
  654. , pcszDescriptionIn
  655. , &ft
  656. , bstrRef
  657. ) );
  658. } // if:
  659. Cleanup:
  660. TraceSysFreeString( bstrRef );
  661. HRETURN( hr );
  662. } //*** HrSendStatusReport
  663. //////////////////////////////////////////////////////////////////////////////
  664. //++
  665. //
  666. // HrSendStatusReport
  667. //
  668. // Description:
  669. //
  670. // Arguments:
  671. //
  672. // Return Value:
  673. //
  674. //--
  675. //////////////////////////////////////////////////////////////////////////////
  676. HRESULT
  677. HrSendStatusReport(
  678. IClusCfgCallback * picccIn
  679. , const WCHAR * pcszNodeNameIn
  680. , CLSID clsidTaskMajorIn
  681. , CLSID clsidTaskMinorIn
  682. , ULONG ulMinIn
  683. , ULONG ulMaxIn
  684. , ULONG ulCurrentIn
  685. , HRESULT hrStatusIn
  686. , DWORD idDescriptionIn
  687. , DWORD idReferenceIn
  688. )
  689. {
  690. TraceFunc( "" );
  691. Assert( picccIn != NULL );
  692. HRESULT hr = S_OK;
  693. BSTR bstrDescription = NULL;
  694. BSTR bstrReference = NULL;
  695. FILETIME ft;
  696. hr = THR( HrLoadStringIntoBSTR( g_hInstance, idDescriptionIn, &bstrDescription ) );
  697. if ( FAILED( hr ) )
  698. {
  699. goto CleanUp;
  700. } // if:
  701. hr = THR( HrLoadStringIntoBSTR( g_hInstance, idReferenceIn, &bstrReference ) );
  702. if ( FAILED( hr ) )
  703. {
  704. goto CleanUp;
  705. } // if:
  706. GetSystemTimeAsFileTime( &ft );
  707. if ( picccIn != NULL )
  708. {
  709. hr = THR( picccIn->SendStatusReport(
  710. pcszNodeNameIn
  711. , clsidTaskMajorIn
  712. , clsidTaskMinorIn
  713. , ulMinIn
  714. , ulMaxIn
  715. , ulCurrentIn
  716. , hrStatusIn
  717. , bstrDescription
  718. , &ft
  719. , bstrReference
  720. ) );
  721. } // if:
  722. CleanUp:
  723. TraceSysFreeString( bstrDescription );
  724. TraceSysFreeString( bstrReference );
  725. HRETURN( hr );
  726. } //*** HrSendStatusReport