#pragma once | |
//------------------------------------------------------------------------------------------------- | |
// <copyright file="pathutil.h" company="Outercurve Foundation"> | |
// Copyright (c) 2004, Outercurve Foundation. | |
// This software is released under Microsoft Reciprocal License (MS-RL). | |
// The license and further copyright text can be found in the file | |
// LICENSE.TXT at the root directory of the distribution. | |
// </copyright> | |
// | |
// <summary> | |
// Header for path helper functions. | |
// </summary> | |
//------------------------------------------------------------------------------------------------- | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
enum PATH_EXPAND | |
{ | |
PATH_EXPAND_ENVIRONMENT = 0x0001, | |
PATH_EXPAND_FULLPATH = 0x0002, | |
}; | |
/******************************************************************* | |
PathCommandLineAppend - appends a command line argument on to a | |
string such that ::CommandLineToArgv() will shred them correctly | |
(i.e. quote arguments with spaces in them). | |
********************************************************************/ | |
DAPI_(HRESULT) PathCommandLineAppend( | |
__deref_out_z LPWSTR* psczCommandLine, | |
__in_z LPCWSTR wzArgument | |
); | |
/******************************************************************* | |
PathFile - returns a pointer to the file part of the path. | |
********************************************************************/ | |
DAPI_(LPWSTR) PathFile( | |
__in_z LPCWSTR wzPath | |
); | |
/******************************************************************* | |
PathExtension - returns a pointer to the extension part of the path | |
(including the dot). | |
********************************************************************/ | |
DAPI_(LPCWSTR) PathExtension( | |
__in_z LPCWSTR wzPath | |
); | |
/******************************************************************* | |
PathGetDirectory - extracts the directory from a path. | |
********************************************************************/ | |
DAPI_(HRESULT) PathGetDirectory( | |
__in_z LPCWSTR wzPath, | |
__out LPWSTR *psczDirectory | |
); | |
/******************************************************************* | |
PathExpand - gets the full path to a file resolving environment | |
variables along the way. | |
********************************************************************/ | |
DAPI_(HRESULT) PathExpand( | |
__out LPWSTR *psczFullPath, | |
__in_z LPCWSTR wzRelativePath, | |
__in DWORD dwResolveFlags | |
); | |
/******************************************************************* | |
PathPrefix - prefixes a full path with \\?\ or \\?\UNC as | |
appropriate. | |
********************************************************************/ | |
DAPI_(HRESULT) PathPrefix( | |
__inout LPWSTR *psczFullPath | |
); | |
/******************************************************************* | |
PathFixedBackslashTerminate - appends a \ if path does not have it | |
already, but fails if the buffer is | |
insufficient. | |
********************************************************************/ | |
DAPI_(HRESULT) PathFixedBackslashTerminate( | |
__inout_ecount_z(cchPath) LPWSTR wzPath, | |
__in DWORD_PTR cchPath | |
); | |
/******************************************************************* | |
PathBackslashTerminate - appends a \ if path does not have it | |
already. | |
********************************************************************/ | |
DAPI_(HRESULT) PathBackslashTerminate( | |
__inout LPWSTR* psczPath | |
); | |
/******************************************************************* | |
PathForCurrentProcess - gets the full path to the currently executing | |
process or (optionally) a module inside the process. | |
********************************************************************/ | |
DAPI_(HRESULT) PathForCurrentProcess( | |
__inout LPWSTR *psczFullPath, | |
__in_opt HMODULE hModule | |
); | |
/******************************************************************* | |
PathRelativeToModule - gets the name of a file in the same | |
directory as the current process or (optionally) a module inside | |
the process | |
********************************************************************/ | |
DAPI_(HRESULT) PathRelativeToModule( | |
__inout LPWSTR *psczFullPath, | |
__in_opt LPCWSTR wzFileName, | |
__in_opt HMODULE hModule | |
); | |
/******************************************************************* | |
PathCreateTempFile | |
Note: if wzDirectory is null, ::GetTempPath() will be used instead. | |
if wzFileNameTemplate is null, GetTempFileName() will be used instead. | |
*******************************************************************/ | |
DAPI_(HRESULT) PathCreateTempFile( | |
__in_opt LPCWSTR wzDirectory, | |
__in_opt __format_string LPCWSTR wzFileNameTemplate, | |
__in DWORD dwUniqueCount, | |
__in DWORD dwFileAttributes, | |
__out_opt LPWSTR* psczTempFile, | |
__out_opt HANDLE* phTempFile | |
); | |
/******************************************************************* | |
PathCreateTimeBasedTempFile - creates an empty temp file based on current | |
system time | |
********************************************************************/ | |
DAPI_(HRESULT) PathCreateTimeBasedTempFile( | |
__in_z_opt LPCWSTR wzDirectory, | |
__in_z LPCWSTR wzPrefix, | |
__in_z_opt LPCWSTR wzPostfix, | |
__in_z LPCWSTR wzExtension, | |
__deref_opt_out_z LPWSTR* psczTempFile, | |
__out_opt HANDLE* phTempFile | |
); | |
/******************************************************************* | |
PathCreateTempDirectory | |
Note: if wzDirectory is null, ::GetTempPath() will be used instead. | |
*******************************************************************/ | |
DAPI_(HRESULT) PathCreateTempDirectory( | |
__in_opt LPCWSTR wzDirectory, | |
__in __format_string LPCWSTR wzDirectoryNameTemplate, | |
__in DWORD dwUniqueCount, | |
__out LPWSTR* psczTempDirectory | |
); | |
/******************************************************************* | |
PathGetKnownFolder - returns the path to a well-known shell folder | |
*******************************************************************/ | |
DAPI_(HRESULT) PathGetKnownFolder( | |
__in int csidl, | |
__out LPWSTR* psczKnownFolder | |
); | |
/******************************************************************* | |
PathIsAbsolute - returns true if the path is absolute; false | |
otherwise. | |
*******************************************************************/ | |
DAPI_(BOOL) PathIsAbsolute( | |
__in_z LPCWSTR wzPath | |
); | |
/******************************************************************* | |
PathConcat - like .NET's Path.Combine, lets you build up a path | |
one piece -- file or directory -- at a time. | |
*******************************************************************/ | |
DAPI_(HRESULT) PathConcat( | |
__in_opt LPCWSTR wzPath1, | |
__in_opt LPCWSTR wzPath2, | |
__deref_out_z LPWSTR* psczCombined | |
); | |
/******************************************************************* | |
PathEnsureQuoted - ensures that a path is quoted; optionally, | |
this function also terminates a directory with a backslash | |
if it is not already. | |
*******************************************************************/ | |
DAPI_(HRESULT) PathEnsureQuoted( | |
__inout LPWSTR* ppszPath, | |
__in BOOL fDirectory | |
); | |
/******************************************************************* | |
PathCompare - compares the fully expanded path of the two paths using | |
::CompareStringW(). | |
*******************************************************************/ | |
DAPI_(HRESULT) PathCompare( | |
__in_z LPCWSTR wzPath1, | |
__in_z LPCWSTR wzPath2, | |
__out int* pnResult | |
); | |
/******************************************************************* | |
PathCompress - sets the compression state on an existing file or | |
directory. A no-op on file systems that don't | |
support compression. | |
*******************************************************************/ | |
DAPI_(HRESULT) PathCompress( | |
__in_z LPCWSTR wzPath | |
); | |
#ifdef __cplusplus | |
} | |
#endif |