| 1 | /** | 
 
 
 
 
 | 2 | * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 | 3 | * No warranty is given; refer to the file DISCLAIMER within this package. | 
 
 
 
 
 | 4 | */ | 
 
 
 
 
 | 5 |  | 
 
 
 
 
 | 6 | #ifndef _FILEHC_H_ | 
 
 
 
 
 | 7 | #define _FILEHC_H_ | 
 
 
 
 
 | 8 | #include <winapifamily.h> | 
 
 
 
 
 | 9 |  | 
 
 
 
 
 | 10 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) | 
 
 
 
 
 | 11 |  | 
 
 
 
 
 | 12 | #ifndef WINAPI | 
 
 
 
 
 | 13 | #if defined(_ARM_) | 
 
 
 
 
 | 14 | #define WINAPI | 
 
 
 
 
 | 15 | #else | 
 
 
 
 
 | 16 | #define WINAPI __stdcall | 
 
 
 
 
 | 17 | #endif | 
 
 
 
 
 | 18 | #endif | 
 
 
 
 
 | 19 |  | 
 
 
 
 
 | 20 | #ifdef _FILEHC_IMPLEMENTATION_ | 
 
 
 
 
 | 21 | #define FILEHC_EXPORT __declspec (dllexport) | 
 
 
 
 
 | 22 | #else | 
 
 
 
 
 | 23 | #define FILEHC_EXPORT __declspec (dllimport) | 
 
 
 
 
 | 24 | #endif | 
 
 
 
 
 | 25 |  | 
 
 
 
 
 | 26 | #ifdef __cplusplus | 
 
 
 
 
 | 27 | extern "C" { | 
 
 
 
 
 | 28 | #endif | 
 
 
 
 
 | 29 |  | 
 
 
 
 
 | 30 | typedef VOID (*PFN_IO_COMPLETION) (struct FIO_CONTEXT *pContext, struct FH_OVERLAPPED *lpo, DWORD cb, DWORD dwCompletionStatus); | 
 
 
 
 
 | 31 |  | 
 
 
 
 
 | 32 | struct FH_OVERLAPPED { | 
 
 
 
 
 | 33 | UINT_PTR Internal; | 
 
 
 
 
 | 34 | UINT_PTR InternalHigh; | 
 
 
 
 
 | 35 | DWORD Offset; | 
 
 
 
 
 | 36 | DWORD OffsetHigh; | 
 
 
 
 
 | 37 | HANDLE hEvent; | 
 
 
 
 
 | 38 | PFN_IO_COMPLETION pfnCompletion; | 
 
 
 
 
 | 39 | UINT_PTR Reserved1; | 
 
 
 
 
 | 40 | UINT_PTR Reserved2; | 
 
 
 
 
 | 41 | UINT_PTR Reserved3; | 
 
 
 
 
 | 42 | UINT_PTR Reserved4; | 
 
 
 
 
 | 43 | }; | 
 
 
 
 
 | 44 |  | 
 
 
 
 
 | 45 | typedef struct FH_OVERLAPPED *PFH_OVERLAPPED; | 
 
 
 
 
 | 46 |  | 
 
 
 
 
 | 47 | struct FIO_CONTEXT { | 
 
 
 
 
 | 48 | DWORD m_dwTempHack; | 
 
 
 
 
 | 49 | DWORD m_dwSignature; | 
 
 
 
 
 | 50 | HANDLE m_hFile; | 
 
 
 
 
 | 51 | DWORD m_dwLinesOffset; | 
 
 
 
 
 | 52 | DWORD m_dwHeaderLength; | 
 
 
 
 
 | 53 | }; | 
 
 
 
 
 | 54 |  | 
 
 
 
 
 | 55 | typedef FIO_CONTEXT *PFIO_CONTEXT; | 
 
 
 
 
 | 56 |  | 
 
 
 
 
 | 57 | struct NAME_CACHE_CONTEXT { | 
 
 
 
 
 | 58 | DWORD m_dwSignature; | 
 
 
 
 
 | 59 | }; | 
 
 
 
 
 | 60 |  | 
 
 
 
 
 | 61 | typedef struct NAME_CACHE_CONTEXT *PNAME_CACHE_CONTEXT; | 
 
 
 
 
 | 62 |  | 
 
 
 
 
 | 63 | typedef HANDLE (WINAPI *FCACHE_CREATE_CALLBACK) (LPSTR lpstrName, LPVOID lpvData, DWORD *cbFileSize, DWORD *cbFileSizeHigh); | 
 
 
 
 
 | 64 | typedef HANDLE (WINAPI *FCACHE_RICHCREATE_CALLBACK) (LPSTR lpstrName, LPVOID lpvData, DWORD *cbFileSize, DWORD *cbFileSizeHigh, WINBOOL *pfDidWeScanIt, WINBOOL *pfIsStuffed, WINBOOL *pfStoredWithDots, WINBOOL *pfStoredWithTerminatingDot); | 
 
 
 
 
 | 65 | typedef int (WINAPI *CACHE_KEY_COMPARE) (DWORD cbKey1, LPBYTE lpbKey1, DWORD cbKey2, LPBYTE lpbKey2); | 
 
 
 
 
 | 66 | typedef DWORD (WINAPI *CACHE_KEY_HASH) (LPBYTE lpbKey, DWORD cbKey); | 
 
 
 
 
 | 67 | typedef WINBOOL (WINAPI *CACHE_READ_CALLBACK) (DWORD cb, LPBYTE lpb, LPVOID lpvContext); | 
 
 
 
 
 | 68 | typedef void (WINAPI *CACHE_DESTROY_CALLBACK) (DWORD cb, LPBYTE lpb); | 
 
 
 
 
 | 69 | typedef WINBOOL (WINAPI *CACHE_ACCESS_CHECK) (PSECURITY_DESCRIPTOR pSecurityDescriptor, HANDLE hClientToken, DWORD dwDesiredAccess, PGENERIC_MAPPING GenericMapping, PRIVILEGE_SET *PrivilegeSet, LPDWORD PrivilegeSetLength, LPDWORD GrantedAccess, LPBOOL AccessStatus); | 
 
 
 
 
 | 70 |  | 
 
 
 
 
 | 71 | FILEHC_EXPORT WINBOOL WINAPI FIOInitialize (DWORD dwFlags); | 
 
 
 
 
 | 72 | FILEHC_EXPORT WINBOOL WINAPI FIOTerminate (VOID); | 
 
 
 
 
 | 73 | FILEHC_EXPORT WINBOOL WINAPI FIOReadFile (PFIO_CONTEXT pContext, LPVOID lpBuffer, DWORD BytesToRead, FH_OVERLAPPED *lpo); | 
 
 
 
 
 | 74 | FILEHC_EXPORT WINBOOL WINAPI FIOReadFileEx (PFIO_CONTEXT pContext, LPVOID lpBuffer, DWORD BytesToRead, DWORD BytesAvailable, FH_OVERLAPPED *lpo, WINBOOL fFinalWrite, WINBOOL fIncludeTerminator); | 
 
 
 
 
 | 75 | FILEHC_EXPORT WINBOOL WINAPI FIOWriteFile (PFIO_CONTEXT pContext, LPCVOID lpBuffer, DWORD BytesToWrite, FH_OVERLAPPED *lpo); | 
 
 
 
 
 | 76 | FILEHC_EXPORT WINBOOL WINAPI FIOWriteFileEx (PFIO_CONTEXT pContext, LPVOID lpBuffer, DWORD BytesToWrite, DWORD BytesAvailable, FH_OVERLAPPED *lpo, WINBOOL fFinalWrite, WINBOOL fIncludeTerminator); | 
 
 
 
 
 | 77 | FILEHC_EXPORT WINBOOL WINAPI InitializeCache (); | 
 
 
 
 
 | 78 | FILEHC_EXPORT WINBOOL WINAPI TerminateCache (); | 
 
 
 
 
 | 79 | FILEHC_EXPORT PFIO_CONTEXT WINAPI AssociateFile (HANDLE hFile); | 
 
 
 
 
 | 80 | FILEHC_EXPORT PFIO_CONTEXT WINAPI AssociateFileEx (HANDLE hFile, WINBOOL fStoreWithDots, WINBOOL fStoredWithTerminatingDot); | 
 
 
 
 
 | 81 | FILEHC_EXPORT void WINAPI AddRefContext (PFIO_CONTEXT); | 
 
 
 
 
 | 82 | FILEHC_EXPORT void WINAPI ReleaseContext (PFIO_CONTEXT); | 
 
 
 
 
 | 83 | FILEHC_EXPORT WINBOOL WINAPI CloseNonCachedFile (PFIO_CONTEXT); | 
 
 
 
 
 | 84 | FILEHC_EXPORT FIO_CONTEXT * WINAPI CacheCreateFile (LPSTR lpstrName, FCACHE_CREATE_CALLBACK pfnCallBack, LPVOID lpv, WINBOOL fAsyncContext); | 
 
 
 
 
 | 85 | FILEHC_EXPORT FIO_CONTEXT * WINAPI CacheRichCreateFile (LPSTR lpstrName, FCACHE_RICHCREATE_CALLBACK pfnCallBack, LPVOID lpv, WINBOOL fAsyncContext); | 
 
 
 
 
 | 86 | FILEHC_EXPORT void WINAPI CacheRemoveFiles (LPSTR lpstrName, WINBOOL fAllPrefixes); | 
 
 
 
 
 | 87 | FILEHC_EXPORT WINBOOL WINAPI InsertFile (LPSTR lpstrName, FIO_CONTEXT *pContext, WINBOOL fKeepReference); | 
 
 
 
 
 | 88 | FILEHC_EXPORT DWORD WINAPI GetFileSizeFromContext (FIO_CONTEXT *pContext, DWORD *pcbFileSizeHigh); | 
 
 
 
 
 | 89 | FILEHC_EXPORT PNAME_CACHE_CONTEXT WINAPI FindOrCreateNameCache (LPSTR lpstrName, CACHE_KEY_COMPARE pfnKeyCompare, CACHE_KEY_HASH pfnKeyHash, CACHE_DESTROY_CALLBACK pfnKeyDestroy, CACHE_DESTROY_CALLBACK pfnDataDestroy); | 
 
 
 
 
 | 90 | FILEHC_EXPORT __LONG32 WINAPI ReleaseNameCache (PNAME_CACHE_CONTEXT pNameCache); | 
 
 
 
 
 | 91 | FILEHC_EXPORT WINBOOL WINAPI SetNameCacheSecurityFunction (PNAME_CACHE_CONTEXT pNameCache, CACHE_ACCESS_CHECK pfnAccessCheck); | 
 
 
 
 
 | 92 | FILEHC_EXPORT WINBOOL WINAPI FindContextFromName (PNAME_CACHE_CONTEXT pNameCache, LPBYTE lpbName, DWORD cbName, CACHE_READ_CALLBACK pfnCallback, LPVOID lpvClientContext, HANDLE hToken, ACCESS_MASK accessMask, FIO_CONTEXT **ppContext); | 
 
 
 
 
 | 93 | FILEHC_EXPORT WINBOOL WINAPI FindSyncContextFromName (PNAME_CACHE_CONTEXT pNameCache, LPBYTE lpbName, DWORD cbName, CACHE_READ_CALLBACK pfnCallback, LPVOID lpvClientContext, HANDLE hToken, ACCESS_MASK accessMask, FIO_CONTEXT **ppContext); | 
 
 
 
 
 | 94 | FILEHC_EXPORT WINBOOL WINAPI AssociateContextWithName (PNAME_CACHE_CONTEXT pNameCache, LPBYTE lpbName, DWORD cbName, LPBYTE lpbData, DWORD cbData, PGENERIC_MAPPING pGenericMapping, PSECURITY_DESCRIPTOR pSecurityDescriptor, FIO_CONTEXT *pContext, WINBOOL fKeepReference); | 
 
 
 
 
 | 95 | FILEHC_EXPORT WINBOOL WINAPI InvalidateName (PNAME_CACHE_CONTEXT pNameCache, LPBYTE lpbName, DWORD cbName); | 
 
 
 
 
 | 96 | FILEHC_EXPORT FIO_CONTEXT * WINAPI ProduceDotStuffedContext (FIO_CONTEXT *pContext, LPSTR lpstrName, WINBOOL fWantItDotStuffed); | 
 
 
 
 
 | 97 | FILEHC_EXPORT WINBOOL WINAPI ProduceDotStuffedContextInContext (FIO_CONTEXT *pContextSource, FIO_CONTEXT *pContextDestination, WINBOOL fWantItDotStuffed, WINBOOL *pfModified); | 
 
 
 
 
 | 98 | FILEHC_EXPORT WINBOOL WINAPI GetIsFileDotTerminated (FIO_CONTEXT *pContext); | 
 
 
 
 
 | 99 | FILEHC_EXPORT void WINAPI SetIsFileDotTerminated (FIO_CONTEXT *pContext, WINBOOL fIsDotTerminated); | 
 
 
 
 
 | 100 | FILEHC_EXPORT WINBOOL WINAPI SetDotStuffingOnWrites (FIO_CONTEXT *pContext, WINBOOL fEnable, WINBOOL fStripDots); | 
 
 
 
 
 | 101 | FILEHC_EXPORT WINBOOL WINAPI SetDotScanningOnWrites (FIO_CONTEXT *pContext, WINBOOL fEnable); | 
 
 
 
 
 | 102 | FILEHC_EXPORT void WINAPI CompleteDotStuffingOnWrites (FIO_CONTEXT *pContext, WINBOOL fStripDots); | 
 
 
 
 
 | 103 | FILEHC_EXPORT WINBOOL WINAPI SetDotScanningOnReads (FIO_CONTEXT *pContext, WINBOOL fEnable); | 
 
 
 
 
 | 104 | FILEHC_EXPORT WINBOOL WINAPI GetDotStuffState (FIO_CONTEXT *pContext, WINBOOL fReads, WINBOOL *pfStuffed, WINBOOL *pfStoredWithDots); | 
 
 
 
 
 | 105 | FILEHC_EXPORT void WINAPI SetDotStuffState (FIO_CONTEXT *pContext, WINBOOL fKnown, WINBOOL fRequiresStuffing); | 
 
 
 
 
 | 106 |  | 
 
 
 
 
 | 107 | #ifdef __cplusplus | 
 
 
 
 
 | 108 | } | 
 
 
 
 
 | 109 | #endif | 
 
 
 
 
 | 110 |  | 
 
 
 
 
 | 111 | #endif | 
 
 
 
 
 | 112 | #endif |