IROTData::GetComparisonData
Retrieves
data from a moniker that can be used to test the moniker for equality against
another moniker.
HRESULT GetComparisonData(
PVOID *ppvData, |
//Indirect
pointer to a buffer that receives the comparison data |
ULONG cbMax, |
//Length of
buffer |
PULONG pcbData |
//Pointer to
the length of the comparison data |
); |
|
Parameters
ppvData
[out]
Indirect pointer to a buffer that receives the comparison data.
cbMax
[in] Length
of the buffer specified in ppvData.
pcbData
[out] Pointer
to the length of the comparison data.
Return Values
This method
supports the standard return value E_OUTOFMEMORY, as well as the following:
S_OK
The
comparison data was successfully returned.
Remarks
The IROTData::GetComparisonData
method is primarily called by the Running Object Table (ROT). The comparison
data returned by the method is tested for binary equality against the
comparison data returned by another moniker. The pcbData parameter
enables the ROT to locate the end of the data returned.
Notes to Implementers
The
comparison data that you return must uniquely identify the moniker, while still
being as short as possible. The comparison data should include information
about the internal state of the moniker, as well as the moniker s CLSID. For example, the comparison data for a file
moniker would include the path name stored within the moniker, as well as the
CLSID of the file moniker implementation. This makes it possible to distinguish
two monikers that happen to store similar state information but are instances
of different moniker classes.
The
comparison data for a moniker cannot exceed 2048 bytes in length. For composite
monikers, the total length of the comparison data for all of its components
cannot exceed 2048 bytes; consequently, if your moniker can be a component
within a composite moniker, the comparison data you return must be
significantly less than 2048 bytes.
If your
comparison data is longer than the value specified by the cbMax
parameter, you must return an error. Note that when IROTData::GetComparisionData
is called on the components of a composite moniker, the value of cbMax
becomes smaller for each moniker in sequence.
See Also