The IMSAdminBase::EnumData method enumerates the data entries of a key in the metabase. One entry is enumerated per call. Set dwMDEnumDataIndex to 0 on the first call and increment by 1 on each subsequent call until the method returns ERROR_NO_MORE_ITEMS.
HRESULT EnumData(
METADATA_HANDLE hMDHandle, //metadata handle.
LPCWSTR pszMDPath, //path to a key relative to hMDHandle.
PMETADATA_RECORD pmdrMDData, //pointer to a structure that receives the data.
DWORD dwMDEnumDataIndex, //index of the current data entry.
DWORD *pdwMDRequiredDataLen //receives the required buffer size for the data.
);
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_INSUFFICIENT_BUFFER | The buffer passed into the method call is too small to receive the data. |
ERROR_INVALID_PARAMETER | The parameter is incorrect. |
ERROR_NO_MORE_ITEMS | There are no more entries to enumerate. |
ERROR_PATH_NOT_FOUND | The specified path is not found in the metabase. |
ERROR_SUCCESS | The method succeeded. |
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.