2.2.4 METADATA_GETALL_RECORD

The METADATA_GETALL_RECORD structure defines an analogous structure to METADATA_RECORD but is used only to return data from a call to the R_GetAllData method. Data retrieval specifications are provided in R_GetAllData method parameters, not in this structure (as is the case with METADATA_RECORD). The R_GetAllData method returns the data from multiple entries as an array of METADATA_GETALL_RECORD structures.

 typedef struct ­_METADATA_GETALL_RECORD{
     DWORD dwMDIdentifier;
     DWORD dwMDAttributes;
     DWORD dwMDUserType;
     DWORD dwMDDataType;
     DWORD dwMDDataLen;
     DWORD dwMDDataOffset;
     DWORD dwMDDataTag;
 } METADATA_GETALL_RECORD, *PMETADATA_GETALL_RECORD;

dwMDIdentifier: An unsigned integer value that uniquely identifies the metabase entry.

dwMDAttributes: An unsigned integer value containing bit flags that specify how to set or get data from the metabase. This member MUST be set to a valid combination of the following values.

Value

Meaning

METADATA_INHERIT

0x00000001

In Get methods: Return the inheritable data.

In Set methods: The data can be inherited.

METADATA_INSERT_PATH

0x00000040

For a string data item.

In Get methods: Replace all occurrences of "<%INSERT_PATH%>" with the path of the data item relative to the handle.

In Set methods: Indicate that the string contains the Unicode character substring "<%INSERT_PATH%>".

METADATA_ISINHERITED

0x00000020

In Get methods: Mark the data items that were inherited.

In Set methods: Not valid.

METADATA_NO_ATTRIBUTES

0x00000000

In Get methods: Not applicable. Data is returned regardless of this flag setting.

In Set methods: The data does not have any attributes.

METADATA_PARTIAL_PATH

0x00000002

In Get methods: Return any inherited data even if the entire path is not present. This flag is valid only if METADATA_INHERIT is also set.

In Set methods: Not valid.

METADATA_SECURE

0x00000004

In Get methods: Not valid.

In Set methods: The server and client transport and store the data in a secure fashion, as specified in 3.1.4.1.1.

METADATA_VOLATILE

0x00000010

In Get methods: Not valid.

In Set methods: Do not save the data in long-term storage.

dwMDUserType: An unsigned integer value that specifies the user type of the data. The dwMDUserType member MUST be set to one of the following values.

Value

Meaning

ASP_MD_UT_APP

0x00000065

The entry contains information specific to ASP application configuration.

IIS_MD_UT_FILE

0x00000002

The entry contains information about a file, such as access permissions or logon methods.

IIS_MD_UT_SERVER

0x00000001

The entry contains information specific to the server, such as ports in use and IP addresses.

IIS_MD_UT_WAM

0x00000064

The entry contains information specific to web application management.

dwMDDataType: An integer value that identifies the type of data in the metabase entry. The dwMDDataType member MUST be set to one of the following values.

Value

Meaning

ALL_METADATA

0x00000000

Specifies all data, regardless of type.

BINARY_METADATA

0x00000003

Specifies binary data in any form.

DWORD_METADATA

0x00000001

Specifies all DWORD (unsigned 32-bit integer) data.

EXPANDSZ_METADATA

0x00000004

Specifies all data that consists of a string that includes the terminating null character, and which contains environment variables that are not expanded.

MULTISZ_METADATA

0x00000005

Specifies all data represented as an array of strings, where each string includes the terminating null character, and the array itself is terminated by two terminating null characters.

STRING_METADATA

0x00000002

Specifies all data consisting of an ASCII string that includes the terminating null character.

dwMDDataLen: An unsigned integer value that specifies the length, in bytes, of the data. If the data is a string, this value includes the ending null character. For lists of strings, this includes an additional terminating null character after the final string (double terminating null characters).

For example, the length of a string list containing two strings would be as follows.

 (wcslen(stringA) + 1) * sizeof(WCHAR) + (wcslen(stringB) + 1)
  * sizeof(WCHAR) + 1 * sizeof(WCHAR)

In-process clients need to specify dwMDDataLen only when setting binary data in the metabase. Remote clients MUST specify dwMDDataLen for all data types.

dwMDDataOffset: If the data was returned by value, this member contains the byte offset of the data in the buffer specified by the pbMDBuffer parameter of the R_GetAllData method. All out-of-process executions will return data by value. The array of records, excluding the data, is returned in the first part of the buffer. The data associated with the records is returned in the buffer after the array of records, and dwMDDataOffset is the offset to the beginning of the data associated with each record in the array.

dwMDDataTag: A reserved member that is currently unused.