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.

180 lines
5.0 KiB

  1. #include <windows.h>
  2. #include "ManifestNode.h"
  3. /////////////////////////////////////////////////////////////////////////
  4. // ctor
  5. /////////////////////////////////////////////////////////////////////////
  6. ManifestNode::ManifestNode(IAssemblyManifestImport *pManifestImport,
  7. LPWSTR pwzSrcRootDir,
  8. LPWSTR pwzFilePath,
  9. DWORD dwType)
  10. {
  11. _pManifestImport = pManifestImport;
  12. _pManifestImport->AddRef();
  13. _dwType = dwType;
  14. if (pwzSrcRootDir)
  15. {
  16. _pwzSrcRootDir = new WCHAR[lstrlen(pwzSrcRootDir)+1];
  17. if(_pwzSrcRootDir)
  18. lstrcpyW(_pwzSrcRootDir, pwzSrcRootDir);
  19. }
  20. else
  21. {
  22. _pwzSrcRootDir = NULL;
  23. }
  24. if (pwzFilePath)
  25. {
  26. _pwzFilePath = new WCHAR[lstrlen(pwzFilePath)+1];
  27. if(_pwzFilePath)
  28. lstrcpyW(_pwzFilePath, pwzFilePath);
  29. }
  30. else
  31. {
  32. _pwzFilePath = NULL;
  33. }
  34. }
  35. /////////////////////////////////////////////////////////////////////////
  36. // dtor
  37. /////////////////////////////////////////////////////////////////////////
  38. ManifestNode::~ManifestNode()
  39. {
  40. SAFERELEASE(_pManifestImport);
  41. SAFEDELETEARRAY(_pwzSrcRootDir);
  42. SAFEDELETEARRAY(_pwzFilePath);
  43. }
  44. /////////////////////////////////////////////////////////////////////////
  45. // GetNextAssembly
  46. /////////////////////////////////////////////////////////////////////////
  47. HRESULT ManifestNode::GetNextAssembly(DWORD index, IManifestInfo **ppManifestInfo)
  48. {
  49. HRESULT hr = S_OK;
  50. hr = _pManifestImport->GetNextAssembly(index, ppManifestInfo);
  51. return hr;
  52. }
  53. /////////////////////////////////////////////////////////////////////////
  54. // GetNextFile
  55. /////////////////////////////////////////////////////////////////////////
  56. HRESULT ManifestNode::GetNextFile(DWORD index, IManifestInfo **ppManifestInfo)
  57. {
  58. HRESULT hr = S_OK;
  59. hr = _pManifestImport->GetNextFile(index, ppManifestInfo);
  60. return hr;
  61. }
  62. /////////////////////////////////////////////////////////////////////////
  63. // GetManifestFilePath
  64. /////////////////////////////////////////////////////////////////////////
  65. HRESULT ManifestNode::GetSrcRootDir(LPWSTR *pwzFileName)
  66. {
  67. HRESULT hr = S_OK;
  68. if(_pwzSrcRootDir)
  69. (*pwzFileName) = WSTRDupDynamic(_pwzSrcRootDir);
  70. else
  71. hr = S_FALSE;
  72. return hr;
  73. }
  74. /////////////////////////////////////////////////////////////////////////
  75. // GetManifestFilePath
  76. /////////////////////////////////////////////////////////////////////////
  77. HRESULT ManifestNode::GetManifestFilePath(LPWSTR *pwzFileName)
  78. {
  79. HRESULT hr = S_OK;
  80. if(_pwzFilePath)
  81. (*pwzFileName) = WSTRDupDynamic(_pwzFilePath);
  82. else
  83. hr = S_FALSE;
  84. return hr;
  85. }
  86. /////////////////////////////////////////////////////////////////////////
  87. // GetAssemblyIdentity
  88. /////////////////////////////////////////////////////////////////////////
  89. HRESULT ManifestNode::IsEqual(ManifestNode *pManifestNode)
  90. {
  91. HRESULT hr = S_OK;
  92. IAssemblyIdentity *pAsmId1=NULL, *pAsmId2=NULL;
  93. if (FAILED(hr = _pManifestImport->GetAssemblyIdentity(&pAsmId1)))
  94. goto exit;
  95. if (FAILED(hr = pManifestNode->GetAssemblyIdentity(&pAsmId2)))
  96. goto exit;
  97. hr = pAsmId1->IsEqual(pAsmId2);
  98. exit:
  99. return hr;
  100. }
  101. /////////////////////////////////////////////////////////////////////////
  102. // GetAssemblyIdentity
  103. /////////////////////////////////////////////////////////////////////////
  104. HRESULT ManifestNode::GetAssemblyIdentity(IAssemblyIdentity **ppAsmId)
  105. {
  106. HRESULT hr = S_OK;
  107. hr = _pManifestImport->GetAssemblyIdentity(ppAsmId);
  108. return hr;
  109. }
  110. /////////////////////////////////////////////////////////////////////////
  111. // GetManifestType
  112. /////////////////////////////////////////////////////////////////////////
  113. HRESULT ManifestNode::GetManifestType(DWORD *pdwType)
  114. {
  115. HRESULT hr = S_OK;
  116. *pdwType = _dwType;
  117. return hr;
  118. }
  119. /////////////////////////////////////////////////////////////////////////
  120. // SetManifestFileName
  121. /////////////////////////////////////////////////////////////////////////
  122. HRESULT ManifestNode::SetSrcRootDir(LPWSTR pwzFilePath)
  123. {
  124. HRESULT hr = S_OK;
  125. SAFEDELETEARRAY(_pwzSrcRootDir);
  126. _pwzSrcRootDir = WSTRDupDynamic(pwzFilePath);
  127. return hr;
  128. }
  129. /////////////////////////////////////////////////////////////////////////
  130. // SetManifestFileName
  131. /////////////////////////////////////////////////////////////////////////
  132. HRESULT ManifestNode::SetManifestFilePath(LPWSTR pwzFilePath)
  133. {
  134. HRESULT hr = S_OK;
  135. SAFEDELETEARRAY(_pwzFilePath);
  136. _pwzFilePath = WSTRDupDynamic(pwzFilePath);
  137. return hr;
  138. }
  139. /////////////////////////////////////////////////////////////////////////
  140. // SetManifestType
  141. /////////////////////////////////////////////////////////////////////////
  142. HRESULT ManifestNode::SetManifestType(DWORD dwType)
  143. {
  144. HRESULT hr = S_OK;
  145. _dwType = dwType;
  146. return hr;
  147. }