You can set data in the metabase by calling the SetData method. This method takes as one of its parameters a METADATA_RECORD structure, which contains information about the data (its identifier, attributes, user type, data type, a pointer to the data, and so on). By setting values for the members of the METADATA_RECORD structure when it is passed as an input parameter to the SetData method, you can specify the type of and storage method for the data. For example, you can specify that the data be stored in a secure manner by setting the METADATA_SECURE flag in the structure's dwMDAttributes member.
In addition to specifying the data to be retrieved, the METADATA_RECORD structure is also used to receive data from the metabase. When you call the GetData or EnumData methods, you pass in a pointer to a METADATA_RECORD structure to specify the data to be retrieved, and to receive the data. Your program must allocate the buffer into which the data will be retrieved, and pass a pointer to it in the pbMDData member of the METADATA_RECORD structure.
The GetAllData method retrieves multiple data entries from a key. In this case, you can use parameters of the GetAllData method to specify the data to be retrieved, and provide a buffer where the method returns an array of METADATA_GETALL_RECORD structures.