[The AD RMS SDK leveraging functionality exposed by
the client in Msdrm.dll is available for use in Windows Server 2008, Windows Vista, Windows Server 2008 R2, Windows 7, Windows Server 2012, and Windows 8. It may be altered or
unavailable in subsequent versions. Instead, use Active Directory Rights Management Services SDK 2.1,
which leverages functionality exposed by the client in Msipc.dll.]
The DRMDuplicatePubHandle function makes a copy of a DRMPUBHANDLE.
DRMEXPORT HRESULT UDAPICALL DRMDuplicatePubHandle( IN DRMPUBHANDLE hPubIn, OUT DRMPUBHANDLE *phPubOut );
The DRMPUBHANDLE to make a copy of.
A pointer to a DRMPUBHANDLE value that receives the duplicate handle. When this handle is no longer needed, release it by passing it to the DRMClosePubHandle function.
If the function succeeds, the function returns S_OK.
If the function fails, it returns an HRESULT value that indicates the error. For a list of common error codes, see Common HRESULT Values.
Using the appropriate function to create, copy, and close these handles allows Active Directory Rights Management Services to maintain a reference count on resources and free them appropriately; it also clears sensitive data from memory.