The DeleteData method deletes specific data entries from a node in the metabase.
HRESULT DeleteData( [in] METADATA_HANDLE hMDHandle, [unique, in, string] LPCWSTR pszMDPath, [in] DWORD dwMDIdentifier, [in] DWORD dwMDDataType );
hMDHandle: An unsigned 32-bit integer value containing an open metabase handle specifying the node in the metabase where the key data is to be deleted.
pszMDPath: A pointer to a Unicode string that contains the path of the node whose data is to be deleted, relative to the path of the hMDHandle parameter.
dwMDIdentifier: An integer value specifying the data identifier.
dwMDDataType: An integer value specifying a data type. If this parameter is not set to ALL_METADATA, the data item will be removed only if its data type matches the specified type.
|
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 consisting of a string that includes the terminating null character, which contains unexpanded environment variables. |
|
MULTISZ_METADATA 0x00000005 |
Specifies all data represented as an array of strings, where each string contains two occurrences of the terminating null character. |
|
STRING_METADATA 0x00000002 |
Specifies all data consisting of an ASCII string that includes the terminating null character. |
Return Values: A signed 32-bit value that indicates return status. If the method returns a negative value, it failed. If the 12-bit facility code (bits 16–27) is set to 0x007, the value contains a Win32 error code in the lower 16 bits. Zero or positive values indicate success, with the lower 16 bits in positive nonzero values containing warnings or flags defined in the method implementation. For more information about Win32 error codes and HRESULT values, see [MS-ERREF].
|
Return value/code |
Description |
|---|---|
|
0x00000000 S_OK |
The call was successful. |
|
0x80070003 ERROR_PATH_NOT_FOUND |
The system cannot find the path specified. |
|
0x80070005 E_ACCESSDENIED |
General access denied error. |
|
0x80070006 ERROR_INVALID_HANDLE |
The handle is invalid. |
|
0x800CC801 MD_ERROR_DATA_NOT_FOUND |
The specified metadata was not found. |
The opnum field value for this method is 11.
When processing this call, the server MUST do the following:
Check the handle parameter. This handle is valid if it is either the master root handle or a handle returned from a previous OpenKey call. If the handle is invalid, return ERROR_INVALID_HANDLE.
The server SHOULD check whether the handle was opened for write access. If not, return E_ACCESSDENIED.<8>
Check whether the relative path points to the existing subnode of the parent handle. If not, return an error.
Check whether the node has data with an ID equal to the ID parameter passed from the client. If not, return MD_ERROR_DATA_NOT_FOUND.
Check the data type parameter. If it is ALL_METADATA or if the data type matches the data specified by the dwMDIdentifier, delete this data from the node. Otherwise return MD_ERROR_DATA_NOT_FOUND.