ISpObjectToken::GetStorageFileName

This method gets the object token file name from the registry.

HRESULT GetStorageFileName(
  REFCLSID clsidCaller,
  const WCHAR* pszValueName,
  const WCHAR* pszFileNameSpecifier,
  ULONG nFolder,
  WCHAR** ppszFilePath
);

Parameters

  • clsidCaller
    [in] GUID of the calling object. The registry is searched for an entry key name of clsidCaller, and then a corresponding subkey of "Files". If the registry entry is not present, one is created.

  • pszValueName
    [in] Pointer to the name of the attribute file for the registry entry of clsidCaller. This attribute stores location of the resource file.

  • pszFileNameSpecifier
    [in] Pointer to the file name specifier, which is either a path and file name for a storage file or NULL. If the specifier starts with "X:\" or "\\", it is assumed to be a full path. Otherwise, it is assumed to be relative to special folders given in the nFolder parameter. If the specifier ends with a "\" or is NULL, a unique file name will be created. The file name will resemble "SP_7454901D23334AAF87707147726EC235.dat", where "SP_" and ".dat" are the default prefix name and file extension. The numbers in between indicate a generated GUID to ensure that the file name is unique.

    If the file name specifier contains a "%d", it is replaced by a number to give a unique file name. The default file extension is .dat, but the user can specify anything else.

    Intermediate directories are created.

    If a relative file is being used, the value stored in the registry includes the nFolder value as "%nFolder%" before the rest of the path.

  • nFolder
    [in] A CSIDL value that identifies the folder for which to retrieve the path. The caller can force creation of a folder by combining the folder CSIDL with CSIDL_FLAG_CREATE. If pszFileNameSpecifier is NULL or "\", nFolder must indicate a specified CSIDL folder combined with CSIDL_FLAG_CREATE to force file creation.

  • ppszFilePath
    [out] Address of a pointer to a null-terminated string specifying file path information. The associated object must be freed when no longer required.

Return Values

The following table shows the possible return values.

Value Description
S_OK Function completed successfully.
E_POINTER ppszFilePath is invalid or bad.
E_OUTOFMEMORY Exceeded available memory.
S_FALSE A new file was created.
E_INVALIDARG pszValueName is invalid or bad.
SPERR_UNINITIALIZED Either the data key or the token delegate interface is uninitialized.
SPERR_TOKEN_DELETED Key has been deleted.
FAILED(hr) Appropriate error message.

Example

The following code snippet creates and removes an object token for a test file.

HRESULT hr;
GUID guid0;
GUID guid1;

CComPtr cpSpObjectToken;
CSpCoTaskMemPtr cpFileName;
CSpCoTaskMemPtr cpFileName2;

Requirements

OS Versions: Windows CE .NET 4.1 and later.
Header: sapi.h, sapi.idl.
Link Library: Sapilib.lib.

See Also

ISpObjectToken | SAPI Interfaces

 Last updated on Saturday, April 10, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.