IMSAdminBase::CopyData

The IMSAdminBase::CopyData method copies or moves data associated with the source key to the destination key. You can also specify whether the method copies the key's inherited data.

HRESULT CopyData(

  METADATA_HANDLE hMDSourceHandle,  //source metabase handle.

  LPCWSTR pszMDSourcePath,    //path to the source key relative to hMDSourceHandle.

  METADATA_HANDLE hMDDestHandle,  //destination metabase handle.

  LPCWSTR pszMDDestPath,    //path to the source key relative to hMDDestHandle.

  DWORD dwMDAttributes,     //attributes of the data.

  DWORD dwMDUserType,     //user type of the data.

  DWORD dwMDDataType,     //data type of the data.

  BOOL bMDCopyFlag      //flag that specifies whether to copy or move the data.

);

 

Parameters
hMDSourceHandle
Specifies METADATA_MASTER_ROOT_HANDLE, or a handle with read permission returned by the IMSAdminBase::OpenKey method.
pszMDSourcePath
Points to a string that contains the path of the key with which the source data is associated, relative to the path of hMDSourceHandle. For example, if the handle references the /LM key, you could specify the Web services subkey using the path /W3SVC.
hMDDestHandle
Specifies a handle, returned by IMSAdminBase::OpenKey, that has write permission. METADATA_MASTER_ROOT_HANDLE is not a valid value for this parameter.
pszMDDestPath
Points to the path of the key for data to be copied to, relative to the path of hMDDestHandle.
dwMDAttributes
The flags, contained in the METADATA_RECORD structure, used to get the data.
dwMDUserType
A DWORD that specifies the user type of the data. If not set to ALL_METADATA, only metadata of the specified user type will be copied or moved. The following user types are defined for IIS:
User type Description
ALL_METADATA Copy or move all data, regardless of user type.
ASP_MD_UT_APP The entry contains information specific to ASP application configuration.
IIS_MD_UT_FILE Copy or move only data specific to a file, such as access permissions or logon methods.
IIS_MD_UT_SERVER Copy or move only data specific to the server, such as ports in use and IP addresses.
IIS_MD_UT_WAM The entry contains information specific to Web application management.


dwMDDataType
A DWORD that specifies the type of data to retrieve. If dwMDDataType is not set to ALL_METADATA, only metadata of the specified type will be copied or moved. This parameter can be one of the following values:
Data type Description
ALL_METADATA Copy or move all data, regardless of type.
BINARY_METADATA Binary data in any form.
DWORD_METADATA An unsigned 32-bit number.
EXPANDSZ_METADATA A null-terminated string that contains unexpanded environment variables, such as %PATH%.
MULTISZ_METADATA An array of null-terminated strings, terminated by two null characters.
STRING_METADATA A null-terminated ASCII string.


bMDCopyFlag
A Boolean that specifies whether to copy or move the data. If this parameter is set to TRUE, the data is copied. If it is FALSE, the data is moved. If dwMDAttributes contains the flag METADATA_INHERIT, this parameter must be set to TRUE.
Return Values

Returns an HRESULT that contains one of the following values:

Value Description
ERROR_ACCESS_DENIED Access is denied. Either the open handle does not have read or write permission as needed, or the user does not have sufficient permissions to perform the operation.
ERROR_INVALID_PARAMETER The parameter is incorrect.
ERROR_NOT_ENOUGH_MEMORY There is not enough memory to complete the operation.
ERROR_PATH_NOT_FOUND The specified path is not found.
ERROR_SUCCESS The method succeeded.

Remarks

If inherited data is copied, (if dwMDAttributes specifies the METADATA_INHERIT flag) it is copied to the destination key, not to the corresponding parent keys.

The handle, METADATA_MASTER_ROOT_HANDLE, provides no guarantee against multiple thread access. If your application requires a constant data state, use a handle returned by IMSAdminBase::OpenKey.