blob: 327a3586ff0d839a995afae93bf1495e492519f1 [file] [log] [blame]
#pragma once
//-------------------------------------------------------------------------------------------------
// <copyright file="fileutil.h" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// The use and distribution terms for this software are covered by the
// Common Public License 1.0 (http://opensource.org/licenses/cpl1.0.php)
// which can be found in the file CPL.TXT at the root of this distribution.
// By using this software in any fashion, you are agreeing to be bound by
// the terms of this license.
//
// You must not remove this notice, or any other, from this software.
// </copyright>
//
// <summary>
// Header for file helper functions.
// </summary>
//-------------------------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseFile(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; }
#define ReleaseFileHandle(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; }
#define ReleaseFileFindHandle(h) if (INVALID_HANDLE_VALUE != h) { ::FindClose(h); h = INVALID_HANDLE_VALUE; }
enum FILE_ARCHITECTURE
{
FILE_ARCHITECTURE_UNKNOWN,
FILE_ARCHITECTURE_X86,
FILE_ARCHITECTURE_X64,
FILE_ARCHITECTURE_IA64,
};
LPWSTR DAPI FileFromPath(
__in_z LPCWSTR wzPath
);
HRESULT DAPI FileResolvePath(
__in_z LPCWSTR wzRelativePath,
__out LPWSTR *ppwzFullPath
);
HRESULT DAPI FileStripExtension(
__in_z LPCWSTR wzFileName,
__out LPWSTR *ppwzFileNameNoExtension
);
HRESULT DAPI FileChangeExtension(
__in_z LPCWSTR wzFileName,
__in_z LPCWSTR wzNewExtension,
__out LPWSTR *ppwzFileNameNewExtension
);
HRESULT DAPI FileAddSuffixToBaseName(
__in_z LPCWSTR wzFileName,
__in_z LPCWSTR wzSuffix,
__out_z LPWSTR* psczNewFileName
);
HRESULT DAPI FileVersionFromString(
__in_z LPCWSTR wzVersion,
__out DWORD *pdwVerMajor,
__out DWORD* pdwVerMinor
);
HRESULT DAPI FileVersionFromStringEx(
__in_z LPCWSTR wzVersion,
__in DWORD cchVersion,
__out DWORD64* pqwVersion
);
HRESULT DAPI FileSetPointer(
__in HANDLE hFile,
__in DWORD64 dw64Move,
__out_opt DWORD64* pdw64NewPosition,
__in DWORD dwMoveMethod
);
HRESULT DAPI FileSize(
__in_z LPCWSTR pwzFileName,
__out LONGLONG* pllSize
);
HRESULT DAPI FileSizeByHandle(
__in HANDLE hFile,
__out LONGLONG* pllSize
);
BOOL DAPI FileExistsEx(
__in_z LPCWSTR wzPath,
__out_opt DWORD *pdwAttributes
);
HRESULT DAPI FileRead(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath
);
HRESULT DAPI FileReadUntil(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out_range(<=, cbMaxRead) DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath,
__in DWORD cbMaxRead
);
HRESULT DAPI FileReadPartial(
__deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
__out_range(<=, cbMaxRead) DWORD* pcbDest,
__in_z LPCWSTR wzSrcPath,
__in BOOL fSeek,
__in DWORD cbStartPosition,
__in DWORD cbMaxRead,
__in BOOL fPartialOK
);
HRESULT DAPI FileWrite(
__in_z LPCWSTR pwzFileName,
__in DWORD dwFlagsAndAttributes,
__in_bcount(cbData) LPCBYTE pbData,
__in DWORD cbData,
__out_opt HANDLE* pHandle
);
HRESULT DAPI FileWriteHandle(
__in HANDLE hFile,
__in_bcount(cbData) LPCBYTE pbData,
__in DWORD cbData
);
HRESULT DAPI FileEnsureCopy(
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzTarget,
__in BOOL fOverwrite
);
HRESULT DAPI FileEnsureMove(
__in_z LPCWSTR wzSource,
__in_z LPCWSTR wzTarget,
__in BOOL fOverwrite,
__in BOOL fAllowCopy
);
HRESULT DAPI FileCreateTemp(
__in_z LPCWSTR wzPrefix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* ppwzTempFile,
__out_opt HANDLE* phTempFile
);
HRESULT DAPI FileCreateTempW(
__in_z LPCWSTR wzPrefix,
__in_z LPCWSTR wzExtension,
__deref_opt_out_z LPWSTR* ppwzTempFile,
__out_opt HANDLE* phTempFile
);
HRESULT DAPI FileVersion(
__in_z LPCWSTR wzFilename,
__out DWORD *pdwVerMajor,
__out DWORD* pdwVerMinor
);
HRESULT DAPI FileIsSame(
__in_z LPCWSTR wzFile1,
__in_z LPCWSTR wzFile2,
__out LPBOOL lpfSameFile
);
HRESULT DAPI FileEnsureDelete(
__in_z LPCWSTR wzFile
);
HRESULT DAPI FileGetTime(
__in_z LPCWSTR wzFile,
__out_opt LPFILETIME lpCreationTime,
__out_opt LPFILETIME lpLastAccessTime,
__out_opt LPFILETIME lpLastWriteTime
);
HRESULT DAPI FileSetTime(
__in_z LPCWSTR wzFile,
__in_opt const FILETIME *lpCreationTime,
__in_opt const FILETIME *lpLastAccessTime,
__in_opt const FILETIME *lpLastWriteTime
);
HRESULT DAPI FileResetTime(
__in_z LPCWSTR wzFile
);
HRESULT FileExecutableArchitecture(
__in_z LPCWSTR wzFile,
__out FILE_ARCHITECTURE *pArchitecture
);
#ifdef __cplusplus
}
#endif