# IMoniker::Hash

Calculates a 32-bit integer using the internal state of the moniker.

HRESULT Hash(

DWORD *pdwHash | //Pointer to hash value
); |

Parameter

pdwHash
  [out] Pointer to the hash value.

Return Value

S_OK
  Successfully received a 32-bit integer hash value.

Remarks

#### Notes to Callers

You can use the value returned by this method to maintain a hash table of monikers. The hash value determines a hash bucket in the table. To search such a table for a specified moniker, calculate its hash value and then compare it to the monikers in that hash bucket using IMoniker::IsEqual.

#### Notes to Implementers

The hash value must be constant for the lifetime of the moniker. Two monikers that compare as equal using IMoniker::IsEqual must hash to the same value.

Marshaling and then unmarshaling a moniker should have no effect on its hash value. Consequently, your implementation of IMoniker::Hash should rely only on the internal state of the moniker, not on its memory address.

See Also

IMoniker::IsEqual