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.

56 lines
2.2 KiB

  1. ////////////////////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Microsoft WMIOLE DB Implementation
  4. //
  5. // (C) Copyright 1999 By Microsoft Corporation.
  6. //
  7. // Module : CMDCREAT.CPP - IDBCreateCommand interface implementation
  8. ////////////////////////////////////////////////////////////////////////////////////////////////////
  9. #include "headers.h"
  10. #include "command.h"
  11. ////////////////////////////////////////////////////////////////////////////////////////////////////
  12. //
  13. // Creates a Command object.
  14. //
  15. ////////////////////////////////////////////////////////////////////////////////////////////////////
  16. STDMETHODIMP CImpIDBCreateCommand::CreateCommand( IUnknown * pUnkOuter, REFIID riid, IUnknown** ppCommand )
  17. {
  18. HRESULT hr;
  19. CSetStructuredExceptionHandler seh;
  20. TRY_BLOCK;
  21. //=========================================================================
  22. // Seriliaze the object
  23. //=========================================================================
  24. CAutoBlock cab(m_pCDBSession->GetCriticalSection());
  25. //=========================================================================
  26. // Clear previous Error Object for this thread
  27. //=========================================================================
  28. g_pCError->ClearErrorInfo();
  29. //=========================================================================
  30. // Initialize output param
  31. //=========================================================================
  32. if (ppCommand)
  33. {
  34. *ppCommand = NULL;
  35. }
  36. //=========================================================================
  37. // Call this function to create a command
  38. //=========================================================================
  39. hr = m_pCDBSession->CreateCommand(pUnkOuter,riid,ppCommand);
  40. //=========================================================================
  41. // Since only failure codes can hit this return, just post
  42. // the error record here
  43. //=========================================================================
  44. hr = hr == S_OK ? hr : g_pCError->PostHResult(hr, &IID_IDBCreateCommand);
  45. CATCH_BLOCK_HRESULT(hr,L"IDBCreateCommand::CreateCommand");
  46. return hr;
  47. }