comparison fuhtark_test/include/winapi/filehc.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _FILEHC_H_
7 #define _FILEHC_H_
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 typedef VOID (*PFN_IO_COMPLETION)(struct FIO_CONTEXT *pContext,struct FH_OVERLAPPED *lpo,DWORD cb,DWORD dwCompletionStatus);
14
15 struct FH_OVERLAPPED {
16 UINT_PTR Internal;
17 UINT_PTR InternalHigh;
18 DWORD Offset;
19 DWORD OffsetHigh;
20 HANDLE hEvent;
21 PFN_IO_COMPLETION pfnCompletion;
22 UINT_PTR Reserved1;
23 UINT_PTR Reserved2;
24 UINT_PTR Reserved3;
25 UINT_PTR Reserved4;
26 };
27
28 typedef struct FH_OVERLAPPED *PFH_OVERLAPPED;
29
30 typedef struct FIO_CONTEXT {
31 DWORD m_dwTempHack;
32 DWORD m_dwSignature;
33 HANDLE m_hFile;
34 DWORD m_dwLinesOffset;
35 DWORD m_dwHeaderLength;
36 } FIO_CONTEXT;
37
38 typedef FIO_CONTEXT *PFIO_CONTEXT;
39
40 #ifndef WINAPI
41 #define WINAPI __stdcall
42 #endif
43
44 #define FILEHC_EXPORT __declspec(dllimport)
45
46 FILEHC_EXPORT WINBOOL WINAPI FIOInitialize(DWORD dwFlags);
47 FILEHC_EXPORT WINBOOL WINAPI FIOTerminate(VOID);
48 FILEHC_EXPORT WINBOOL WINAPI FIOReadFile(PFIO_CONTEXT pContext,LPVOID lpBuffer,DWORD BytesToRead,FH_OVERLAPPED *lpo);
49 FILEHC_EXPORT WINBOOL WINAPI FIOReadFileEx(PFIO_CONTEXT pContext,LPVOID lpBuffer,DWORD BytesToRead,DWORD BytesAvailable,FH_OVERLAPPED *lpo,WINBOOL fFinalWrite,WINBOOL fIncludeTerminator);
50 FILEHC_EXPORT WINBOOL WINAPI FIOWriteFile(PFIO_CONTEXT pContext,LPCVOID lpBuffer,DWORD BytesToWrite,FH_OVERLAPPED *lpo);
51 FILEHC_EXPORT WINBOOL WINAPI FIOWriteFileEx(PFIO_CONTEXT pContext,LPVOID lpBuffer,DWORD BytesToWrite,DWORD BytesAvailable,FH_OVERLAPPED *lpo,WINBOOL fFinalWrite,WINBOOL fIncludeTerminator);
52
53 typedef HANDLE (WINAPI *FCACHE_CREATE_CALLBACK)(LPSTR lpstrName,LPVOID lpvData,DWORD *cbFileSize,DWORD *cbFileSizeHigh);
54 typedef HANDLE (WINAPI *FCACHE_RICHCREATE_CALLBACK) (LPSTR lpstrName,LPVOID lpvData,DWORD *cbFileSize,DWORD *cbFileSizeHigh,WINBOOL *pfDidWeScanIt,WINBOOL *pfIsStuffed,WINBOOL *pfStoredWithDots,WINBOOL *pfStoredWithTerminatingDot);
55
56 FILEHC_EXPORT WINBOOL WINAPI InitializeCache();
57 FILEHC_EXPORT WINBOOL WINAPI TerminateCache();
58 FILEHC_EXPORT PFIO_CONTEXT WINAPI AssociateFile(HANDLE hFile);
59 FILEHC_EXPORT PFIO_CONTEXT WINAPI AssociateFileEx(HANDLE hFile,WINBOOL fStoreWithDots,WINBOOL fStoredWithTerminatingDot);
60 FILEHC_EXPORT void WINAPI AddRefContext(PFIO_CONTEXT);
61 FILEHC_EXPORT void WINAPI ReleaseContext(PFIO_CONTEXT);
62 FILEHC_EXPORT WINBOOL WINAPI CloseNonCachedFile(PFIO_CONTEXT);
63 FILEHC_EXPORT FIO_CONTEXT *WINAPI CacheCreateFile(LPSTR lpstrName,FCACHE_CREATE_CALLBACK pfnCallBack,LPVOID lpv,WINBOOL fAsyncContext);
64 FILEHC_EXPORT FIO_CONTEXT *WINAPI CacheRichCreateFile(LPSTR lpstrName,FCACHE_RICHCREATE_CALLBACK pfnCallBack,LPVOID lpv,WINBOOL fAsyncContext);
65 FILEHC_EXPORT void WINAPI CacheRemoveFiles(LPSTR lpstrName,WINBOOL fAllPrefixes);
66 FILEHC_EXPORT WINBOOL WINAPI InsertFile(LPSTR lpstrName,FIO_CONTEXT *pContext,WINBOOL fKeepReference);
67 FILEHC_EXPORT DWORD WINAPI GetFileSizeFromContext(FIO_CONTEXT *pContext,DWORD *pcbFileSizeHigh);
68
69 typedef int (WINAPI *CACHE_KEY_COMPARE)(DWORD cbKey1,LPBYTE lpbKey1,DWORD cbKey2,LPBYTE lpbKey2);
70 typedef DWORD (WINAPI *CACHE_KEY_HASH)(LPBYTE lpbKey,DWORD cbKey);
71 typedef WINBOOL (WINAPI *CACHE_READ_CALLBACK)(DWORD cb,LPBYTE lpb,LPVOID lpvContext);
72 typedef void (WINAPI *CACHE_DESTROY_CALLBACK)(DWORD cb,LPBYTE lpb);
73 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);
74
75 struct NAME_CACHE_CONTEXT {
76 DWORD m_dwSignature;
77 };
78
79 typedef struct NAME_CACHE_CONTEXT *PNAME_CACHE_CONTEXT;
80
81 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);
82 FILEHC_EXPORT long WINAPI ReleaseNameCache(PNAME_CACHE_CONTEXT pNameCache);
83 FILEHC_EXPORT WINBOOL WINAPI SetNameCacheSecurityFunction(PNAME_CACHE_CONTEXT pNameCache,CACHE_ACCESS_CHECK pfnAccessCheck);
84 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);
85 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);
86 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);
87 FILEHC_EXPORT WINBOOL WINAPI InvalidateName(PNAME_CACHE_CONTEXT pNameCache,LPBYTE lpbName,DWORD cbName);
88 FILEHC_EXPORT FIO_CONTEXT *WINAPI ProduceDotStuffedContext(FIO_CONTEXT *pContext,LPSTR lpstrName,WINBOOL fWantItDotStuffed);
89 FILEHC_EXPORT WINBOOL WINAPI ProduceDotStuffedContextInContext(FIO_CONTEXT *pContextSource,FIO_CONTEXT *pContextDestination,WINBOOL fWantItDotStuffed,WINBOOL *pfModified);
90 FILEHC_EXPORT WINBOOL WINAPI GetIsFileDotTerminated(FIO_CONTEXT *pContext);
91 FILEHC_EXPORT void WINAPI SetIsFileDotTerminated(FIO_CONTEXT *pContext,WINBOOL fIsDotTerminated);
92 FILEHC_EXPORT WINBOOL WINAPI SetDotStuffingOnWrites(FIO_CONTEXT *pContext,WINBOOL fEnable,WINBOOL fStripDots);
93 FILEHC_EXPORT WINBOOL WINAPI SetDotScanningOnWrites(FIO_CONTEXT *pContext,WINBOOL fEnable);
94 FILEHC_EXPORT void WINAPI CompleteDotStuffingOnWrites(FIO_CONTEXT *pContext,WINBOOL fStripDots);
95 FILEHC_EXPORT WINBOOL WINAPI SetDotScanningOnReads(FIO_CONTEXT *pContext,WINBOOL fEnable);
96 FILEHC_EXPORT WINBOOL WINAPI GetDotStuffState(FIO_CONTEXT *pContext,WINBOOL fReads,WINBOOL *pfStuffed,WINBOOL *pfStoredWithDots);
97 FILEHC_EXPORT void WINAPI SetDotStuffState(FIO_CONTEXT *pContext,WINBOOL fKnown,WINBOOL fRequiresStuffing);
98
99 #ifdef __cplusplus
100 }
101 #endif
102 #endif