IDA C++ SDK 9.2
Loading...
Searching...
No Matches
prodir.h
Go to the documentation of this file.
1/*
2 * Interactive disassembler (IDA).
3 * Copyright (c) 1990-2025 Hex-Rays
4 * ALL RIGHTS RESERVED.
5 *
6 */
7
8#ifndef _PRODIR_H
9#define _PRODIR_H
10
17
21#ifdef __NT__
22#define __FAT__
23#define SDIRCHAR "\\"
24#define DIRCHAR '\\'
25#define DRVCHAR ':'
26#else
27#define SDIRCHAR "/"
28#define DIRCHAR '/'
29#endif
30
32#define EXTCHAR '.'
33
34//----------------------------------------------------------------------------
45#if defined(__UNIX__)
46 #define MAXPATH QMAXPATH
47 struct qffblk_t // Unix
48 {
49 // user fields:
51 #define FA_DIREC S_IFDIR
52 #define FA_ARCH 0
53 #define FA_RDONLY 0
54 char ff_name[QMAXPATH];
58 // private fields:
59 void *filelist;
61 char dirpath[QMAXPATH];
62 char pattern[QMAXPATH];
63 int attr;
64 qffblk_t(void) : filelist(nullptr), fileqty(0) {}
65 };
66#elif !defined(__X86__)
67 // Win64 - use Visual Studio's ffblk
68 #define MAXPATH _MAX_PATH
69 struct qffblk_t
70 {
71 // inlined __finddata64_t from Visual Studio (for compatibility with IDA 7.0 API)
72 unsigned attrib;
73 // Time values are stored in UTC format.
74 __time64_t time_create; // -1 for FAT file systems
75 __time64_t time_access; // -1 for FAT file systems
76 __time64_t time_write;
77 __int64 size;
78 char name[260]; // NB: file name is assumed to be UTF-8
79 intptr_t handle; // handle returned by _wfindfirst64
80 int attr; // attr value passed to qfindfirst. only FA_DIREC is checked
81 #define FA_RDONLY 0x01
82 #define FA_DIREC 0x10
83 #define FA_ARCH 0x20
84 #define ff_name name
85 #define ff_attrib attrib
86 #define ff_fsize size
87 unsigned short ff_ftime; // FAT/DOS format modification time
88 unsigned short ff_fdate; // FAT/DOS format modification date
89 qffblk_t(void) : handle(-1) {}
90 };
91 CASSERT(sizeof(qffblk_t) == 0x140);
92#else
93 #define MAXPATH 260
94 struct qffblk_t // Win32 - use Borland's ffblk (IDA 6.95 API compatibility)
95 {
98 unsigned long ff_attrib;
99 #define FA_RDONLY 0x01
100 #define FA_DIREC 0x10
101 #define FA_ARCH 0x20
102 unsigned short ff_ftime;
103 unsigned short ff_fdate;
104 char ff_name[MAXPATH];
105 qffblk_t(void) : ff_reserved(0) {}
106 };
107#endif
108
113#if defined(__UNIX__)
114 #define MAXDRIVE QMAXPATH
115 #define MAXDIR QMAXPATH
116 #define MAXFILE QMAXPATH
117 #define MAXEXT QMAXPATH
118#else
119 #define MAXDRIVE _MAX_DRIVE
120 #define MAXDIR _MAX_DIR
121 #define MAXFILE _MAX_FNAME
122 #define MAXEXT _MAX_EXT
123#endif
124
131
132idaman THREAD_SAFE int ida_export qfindfirst(
133 const char *pattern,
134 struct qffblk64_t *blk,
135 int attr);
136
137
142
143idaman THREAD_SAFE int ida_export qfindnext(struct qffblk64_t *blk);
144
149
150idaman THREAD_SAFE void ida_export qfindclose(struct qffblk64_t *blk);
151
152
155{
157 char ff_name[QMAXPATH];
161 // private field
163
164 qffblk64_t(void) {}
165 ~qffblk64_t(void) { qfindclose(this); }
166};
167
168#endif // _PRODIR_H
unsigned __int64 uint64
Definition llong.hpp:13
unsigned short uint16
unsigned 16 bit value
Definition pro.h:346
unsigned int uint32
unsigned 32 bit value
Definition pro.h:348
idaman THREAD_SAFE int ida_export qfindfirst(const char *pattern, struct qffblk64_t *blk, int attr)
Find first file that matches the pattern.
idaman THREAD_SAFE int ida_export qfindnext(struct qffblk64_t *blk)
Find next file that matches the pattern.
idaman THREAD_SAFE void ida_export qfindclose(struct qffblk64_t *blk)
Stop the file enumeration and free internal structures.
CASSERT(sizeof(qffblk_t)==0x140)
Common structure with 64-bit ff_fsize - see qffblk_t.
Definition prodir.h:155
char ff_name[QMAXPATH]
Definition prodir.h:157
qffblk64_t(void)
Definition prodir.h:164
uint64 ff_fsize
Definition prodir.h:158
struct qffblk_t base
Definition prodir.h:162
int ff_attrib
Definition prodir.h:156
~qffblk64_t(void)
Definition prodir.h:165
uint16 ff_fdate
Definition prodir.h:159
uint16 ff_ftime
Definition prodir.h:160
file statistics returned by qfind()-like functions
Definition prodir.h:48
void * filelist
Definition prodir.h:59
__int64 size
Definition prodir.h:77
int fileqty
Definition prodir.h:60
intptr_t handle
Definition prodir.h:79
qffblk_t(void)
Definition prodir.h:64
char dirpath[QMAXPATH]
Definition prodir.h:61
char pattern[QMAXPATH]
Definition prodir.h:62
int fileidx
Definition prodir.h:60
__time64_t time_write
Definition prodir.h:76
char ff_name[QMAXPATH]
Definition prodir.h:54
int attr
Definition prodir.h:63
uint16 ff_ftime
Definition prodir.h:57
uint16 ff_fdate
Definition prodir.h:56
int ff_attrib
Definition prodir.h:50
uint32 ff_fsize
Definition prodir.h:55
unsigned attrib
Definition prodir.h:72
__time64_t time_access
Definition prodir.h:75
long ff_reserved
Definition prodir.h:96
char name[260]
Definition prodir.h:78
__time64_t time_create
Definition prodir.h:74