FileDrmCreateForwardableContentEx is an extended version of FileDrmCreateForwardableContent. FileDrmCreateForwardableContentEx creates a copy of the DRM file for forwarding. It has been created to support version 2 of File Based DRM.

In addition to creating the file, this function can generate and return an appropriate path and an extension based on the DRM version.


HRESULT FileDrmCreateForwardableContentEx(
        LPCTSTR pszFileName, 
        DWORD dwFlags,
        LPCTSTR pszOutputFolder,
        LPTSTR pszOutputFile,
        DWORD dwOutputFileLen


  • pszFileName
    [in] The fully qualified path to the file to be forwarded.
  • dwFlags
    [in] Flags to control the format of the generated document. The following table shows the possible values for dwFlags.

    Flag Value Description



    Bare file. Content with no MIME header.



    Add needed MIME headers.

  • pszOutputFolder
    [in] Path indicating where the file to be forwarded is to be created.
  • pszOutputFile
    [out] Pointer to a buffer to be filled with the fully qualified path of the file to be forwarded. This buffer must be at least large enough to hold pszOutputFolder concatenated with the file name part of pszFileName.
  • dwOutputFileLen
    [in] Length of the pszOutputFile buffer. A buffer size of MAX_PATH will always be sufficient.

Return Values:

The function may return any HRESULT and the application should use the SUCCEEDED and FAILED macros to check the results. The following table shows additional HRESULT values that may be returned.

Value Description


If pszFileName, pszOutputFolder, or pszOutputFile are NULL


If one of the above indicated dwFlags is not passed in


No provider found.


The target is not an FDRM object.


You do not possess forwarding rights.


To upgrade your program to support version 2 of FDRM, any call to FileDrmCreateForwardableContent is to be replaced as follows:

  • Invoke FileDrmCreateForwardableContentEx. Instead of supplying the fully-qualified path name for the file that is to store the contents of the forwardable file, pass the folder in which the file is to be created, and supply a buffer to receive the fully-qualified path for the file that was created.
  • If the call to FileDrmCreateForwardableContentEx succeeds, the application continues with the existing logic using pszOutputFile. On the other hand, if the call fails with error code E_NOTIMPL, it means the DRM Agent is v1.0 and does not provide the extended API. In this case, invoke FileDrmCreateForwardableContent as it is currently implemented.

See Also


FDRM API Reference
FDRM Functions