windows-nt/Source/XPSP1/NT/enduser/windows.com/inc/wusafefn.h
2020-09-26 16:20:57 +08:00

65 lines
2.4 KiB
C

/******************************************************************************
Copyright (c) 2002 Microsoft Corporation
Module Name:
wusafefn.h
Abstract:
definitions for WU safe functions
******************************************************************************/
#pragma once
#include "SafeFile.h" // file operations (SafeCreateFile, etc.)
#include "SafeReg.h" // registry operations (SafeRegQueryStringValueCch, etc.)
// path manipulation
HRESULT PathCchCombineA(LPSTR szPath, DWORD cchPathBuff, LPCSTR szPrefix, LPCSTR szSuffix);
HRESULT PathCchCombineW(LPWSTR szPath, DWORD cchPathBuff, LPCWSTR szPrefix, LPCWSTR szSuffix);
HRESULT PathCchAppendA(LPSTR szPath, DWORD cchPathBuff, LPCSTR szNew);
HRESULT PathCchAppendW(LPWSTR szPath, DWORD cchPathBuff, LPCWSTR szNew);
HRESULT PathCchAddBackslashA(LPSTR szPath, DWORD cchPathBuff);
HRESULT PathCchAddBackslashW(LPWSTR szPath, DWORD cchPathBuff);
HRESULT PathCchCanonicalizeA(LPSTR pszDest, DWORD cchDest, LPCSTR pszSrc);
HRESULT PathCchCanonicalizeW(LPWSTR pszDest, DWORD cchDest, LPCWSTR pszSrc);
HRESULT PathCchAddExtensionA(LPSTR pszPath, DWORD cchPath, LPCSTR pszExt);
HRESULT PathCchAddExtensionW(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszExt);
HRESULT PathCchRenameExtensionA(LPSTR pszPath, DWORD cchPath, LPCSTR pszExt);
HRESULT PathCchRenameExtensionW(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszExt);
#if defined(UNICODE) || defined(_UNICODE)
#define PathCchCombine PathCchCombineW
#define PathCchAppend PathCchAppendW
#define PathCchAddBackslash PathCchAddBackslashW
#define PathCchCanonicalize PathCchCanonicalizeW
#define PathCchAddExtension PathCchAddExtensionW
#define PathCchRenameExtension PathCchRenameExtensionW
#else
#define PathCchCombine PathCchCombineA
#define PathCchAppend PathCchAppendA
#define PathCchAddBackslash PathCchAddBackslashA
#define PathCchCanonicalize PathCchCanonicalizeA
#define PathCchAddExtension PathCchAddExtensionA
#define PathCchRenameExtension PathCchRenameExtensionA
#endif
// Load library
HMODULE WINAPI LoadLibraryFromSystemDir(LPCTSTR szModule);
// Critical sections
// Spin count passed to InitializeCriticalSectionAndSpinCount
#define DEFAULT_CS_SPIN_COUNT 0x80000FA0
BOOL WINAPI WUInitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION lpcs, DWORD dwSpinCount);
inline BOOL WINAPI SafeInitializeCriticalSection(LPCRITICAL_SECTION lpcs)
{
return WUInitializeCriticalSectionAndSpinCount(lpcs, DEFAULT_CS_SPIN_COUNT);
}