• R/O
  • SSH
  • HTTPS

vmaid: Commit


Commit MetaInfo

Revision315 (tree)
Zeit2010-02-09 06:58:29
Autoriwm

Log Message

modify variable typo

Ändern Zusammenfassung

Diff

--- vmaid/trunk/src/vmaid.h (revision 314)
+++ vmaid/trunk/src/vmaid.h (revision 315)
@@ -1,6 +1,6 @@
11 /*
22 Video maid
3- copyright (c) 1998-2009 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
55 This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
@@ -31,7 +31,7 @@
3131
3232
3333 #define VMAID_VERSION_NOTICE "Video maid "VERSION" ("BUILD_ENVIRONMENT")"
34-#define VMAID_COPYRIGHT_NOTICE "Copyright (C) 1998-2009 Kazuki IWAMOTO"
34+#define VMAID_COPYRIGHT_NOTICE "Copyright (C) 1998-2010 Kazuki Iwamoto"
3535
3636
3737 typedef struct _VmaidCursor
--- vmaid/trunk/src/version.c (revision 314)
+++ vmaid/trunk/src/version.c (revision 315)
@@ -1,6 +1,6 @@
11 /*
22 Video maid
3- copyright (c) 1998-2009 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
55 This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
@@ -132,7 +132,7 @@
132132 const static gchar *str[3] = {N_("Name"), N_("Code"), N_("Attribute")};
133133 const static gchar *authors =
134134 "Supreme Programmer:\n"
135-" Kazuki IWAMOTO <iwm@maid.org>\n"
135+" Kazuki Iwamoto <iwm@maid.org>\n"
136136 "\n"
137137 "Codecs Author:\n"
138138 " ryoma <ryoma@users.sourceforge.jp>\n"
--- vmaid/trunk/ChangeLog (revision 314)
+++ vmaid/trunk/ChangeLog (revision 315)
@@ -1,7 +1,29 @@
1-2010-01-29 Kazuki IWAMOTO <iwm@maid.org>
1+2010-02-09 Kazuki IWAMOTO <iwm@maid.org>
22
33 * version 2.2.2
44
5+2010-01-25 Kazuki IWAMOTO <iwm@maid.org>
6+
7+ * misc/peimage.[ch]
8+ * w32loader/w32ldr.[ch]
9+ * w32loader/advapi32.[ch]
10+ * w32loader/commctrl.[ch]
11+ * w32loader/commdlg.[ch]
12+ * w32loader/gdi32.[ch]
13+ * w32loader/kernel32.[ch]
14+ * w32loader/msvcrt.[ch]
15+ * w32loader/ntdll.[ch]
16+ * w32loader/ole32.[ch]
17+ * w32loader/oleaut32.[ch]
18+ * w32loader/rasapi32.[ch]
19+ * w32loader/rasdlg.[ch]
20+ * w32loader/shell32.[ch]
21+ * w32loader/user32.[ch]
22+ * w32loader/version.[ch]
23+ * w32loader/winmm.[ch]
24+ * w32loader/winsock.[ch]
25+ * w32loader/windows.h: modify implement
26+
527 2009-12-29 Kazuki IWAMOTO <iwm@maid.org>
628
729 * orz/orzcomm.c: modify variable typo
--- vmaid/trunk/misc/peimage.c (nonexistent)
+++ vmaid/trunk/misc/peimage.c (revision 315)
@@ -0,0 +1,914 @@
1+/*
2+ peimage
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
4+
5+ This program is free software: you can redistribute it and/or modify
6+ it under the terms of the GNU General Public License as published by
7+ the Free Software Foundation, either version 3 of the License, or
8+ (at your option) any later version.
9+
10+ This program is distributed in the hope that it will be useful,
11+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+ GNU General Public License for more details.
14+
15+ You should have received a copy of the GNU General Public License
16+ along with this program. If not, see <http://www.gnu.org/licenses/>.
17+*/
18+#include "peimage.h"
19+#include "misc/fileio.h"
20+
21+
22+/******************************************************************************
23+* *
24+* ja:PEイメージ関数 *
25+* *
26+******************************************************************************/
27+/* ja:PEイメージを検証する
28+ image,PEイメージ(ヘッダ)
29+ length,バイト数
30+ RET,TRUE:正常終了,FALSE:エラー */
31+gboolean
32+peimage_file_is_valid (const guint8 *image,
33+ const gssize length)
34+{
35+ gint i, count;
36+ gssize leng = 0;
37+ const ImageSectionHeader *ish;
38+
39+ if (!image || length < sizeof (ImageDosHeader)
40+ || pe_idh_get_magic (image) != PEIMAGE_DOS_SIGNATURE
41+ || length < pe_idh_get_lfanew (image) + sizeof (guint32)
42+ + sizeof (ImageFileHeader) + sizeof (ImageOptionalHeader)
43+ || pe_get_signature (image) != PEIMAGE_NT_SIGNATURE
44+ || pe_ifh_get_machine (image) != PEIMAGE_FILE_MACHINE_I386
45+ || pe_ifh_get_size_of_optional_header (image)
46+ != sizeof (ImageOptionalHeader)
47+ || pe_ioh_get_magic (image) != PEIMAGE_NT_OPTIONAL_HDR_MAGIC
48+ || length < peimage_file_header_bytes (image))
49+ return FALSE;
50+ ish = pe_image_section_header (image);
51+ count = pe_ifh_get_number_of_sections (image);
52+ for (i = 0; i < count; i++)
53+ {
54+ gssize size;
55+
56+ size = ish_get_virtual_address (ish)
57+ + MAX (ish_get_virtual_size (ish), ish_get_size_of_raw_data (ish));
58+ if (leng < size)
59+ leng = size;
60+ ish++;
61+ }
62+ return leng <= pe_ioh_get_size_of_image (image);
63+}
64+
65+
66+/* ja:PEイメージを読み込む
67+ file,ファイル名
68+ RET,PEイメージ,NULL:エラー */
69+guint8 *
70+peimage_file_load (const gchar *file)
71+{
72+ guint8 *image;
73+ gint i, number_of_sections;
74+ gssize length, header_bytes, size_of_image;
75+ FileIO *fio;
76+ ImageSectionHeader *ish;
77+
78+ if (!file)
79+ return NULL;
80+ fio = fileio_open (file, FILEIO_ACCESS_READ, FILEIO_SHARE_READ,
81+ FILEIO_MODE_OPEN_EXISTING);
82+ if (!fio)
83+ return NULL;
84+ image = g_malloc (sizeof (ImageDosHeader));
85+ if (!image || fileio_read (fio, image, sizeof (ImageDosHeader))
86+ != sizeof (ImageDosHeader)
87+ || pe_idh_get_magic (image) != PEIMAGE_DOS_SIGNATURE)
88+ {
89+ g_free (image);
90+ fileio_close (fio);
91+ return NULL;
92+ }
93+ length = idh_get_lfanew (image) + sizeof (guint32)
94+ + sizeof (ImageFileHeader) + sizeof (ImageOptionalHeader);
95+ image = g_realloc (image, length);
96+ length -= sizeof (ImageDosHeader);
97+ if (!image || fileio_read (fio, image + sizeof (ImageDosHeader), length)
98+ != length
99+ || pe_get_signature (image) != PEIMAGE_NT_SIGNATURE
100+ || pe_ifh_get_machine (image) != PEIMAGE_FILE_MACHINE_I386
101+ || pe_ifh_get_size_of_optional_header (image)
102+ != sizeof (ImageOptionalHeader)
103+ || pe_ioh_get_magic (image) != PEIMAGE_NT_OPTIONAL_HDR_MAGIC)
104+ {
105+ g_free (image);
106+ fileio_close (fio);
107+ return NULL;
108+ }
109+ number_of_sections = pe_ifh_get_number_of_sections (image);
110+ header_bytes = peimage_file_header_bytes (image);
111+ size_of_image = pe_ioh_get_size_of_image (image);
112+ image = g_realloc (image, header_bytes);
113+ ish = pe_image_section_header (image);
114+ length = sizeof (ImageSectionHeader) * number_of_sections;
115+ if (!image || fileio_read (fio, ish, length) != length)
116+ {
117+ g_free (image);
118+ fileio_close (fio);
119+ return NULL;
120+ }
121+ length = 0;
122+ for (i = 0; i < number_of_sections; i++)
123+ {
124+ gssize size;
125+
126+ size = ish_get_virtual_address (ish) + MAX (ish_get_virtual_size (ish),
127+ ish_get_size_of_raw_data (ish));
128+ if (length < size)
129+ length = size;
130+ ish++;
131+ }
132+ if (length > size_of_image)
133+ {
134+ g_free (image);
135+ fileio_close (fio);
136+ return NULL;
137+ }
138+ image = g_realloc (image, size_of_image);
139+ if (!image)
140+ {
141+ fileio_close (fio);
142+ return NULL;
143+ }
144+ ish = pe_image_section_header (image);
145+ length = pe_ioh_get_size_of_headers (image);
146+ g_memset (image + length, 0, size_of_image - length);
147+ length -= header_bytes;
148+ if (fileio_read (fio, image + header_bytes, length) != length)
149+ {
150+ g_free (image);
151+ fileio_close (fio);
152+ return NULL;
153+ }
154+ for (i = 0; i < number_of_sections; i++)
155+ {
156+ length = ish_get_size_of_raw_data (ish);
157+ if (fileio_seek (fio, ish_get_pointer_to_raw_data (ish),
158+ FILEIO_SEEK_SET) < 0
159+ || fileio_read (fio, image + ish_get_virtual_address (ish), length)
160+ != length)
161+ {
162+ g_free (image);
163+ fileio_close (fio);
164+ return NULL;
165+ }
166+ if (ish_get_virtual_size (ish) > length)
167+ length = ish_get_virtual_size (ish);
168+ ish_set_virtual_size (ish, length);
169+ ish_set_size_of_raw_data (ish, length);
170+ ish++;
171+ }
172+ if (!fileio_close (fio))
173+ {
174+ g_free (image);
175+ return NULL;
176+ }
177+ return image;
178+}
179+
180+
181+/* ja:PEイメージを再配置する
182+ image,PEイメージ
183+ delta,差 */
184+void
185+peimage_file_relocate (guint8 *image,
186+ const gint delta)
187+{
188+ if (image && delta != 0 && pe_ioh_get_data_directory_size (image,
189+ PEIMAGE_DIRECTORY_ENTRY_BASERELOC))
190+ {
191+ const ImageBaseRelocation *ibr;
192+
193+ for (ibr = pe_image_base_relocation (image);
194+ ibr_get_virtual_address (ibr);
195+ ibr = (const ImageBaseRelocation *)((const guint8 *)ibr
196+ + ibr_get_size_of_block (ibr)))
197+ {
198+ gint i, count;
199+ guint32 address;
200+
201+ address = ibr_get_virtual_address (ibr);
202+ count = (ibr_get_size_of_block (ibr) - sizeof (guint32) * 2)
203+ / sizeof (guint16);
204+ for (i = 0; i < count; i++)
205+ {
206+ guint16 typeoffset;
207+
208+ typeoffset = ibr_get_type_offset (ibr, i);
209+ if (((typeoffset >> 12) & 0xf) == PEIMAGE_REL_BASED_HIGHLOW)
210+ {
211+ guint32 *p;
212+
213+ p = (guint32 *)(image + address + (typeoffset & 0xfff));
214+ *p = GUINT32_TO_LE (GUINT32_FROM_LE (*p) + delta);
215+ }
216+ }
217+ }
218+ }
219+}
220+
221+
222+/* ja:PEイメージからAPIを取得する
223+ image,PEイメージ
224+ name,API名
225+ RET,アドレス,NULL:エラー */
226+gconstpointer
227+peimage_file_get_func (const guint8 *image,
228+ const gchar *name)
229+{
230+ gconstpointer func = NULL;
231+
232+ if (image && pe_ioh_get_data_directory_size (image,
233+ PEIMAGE_DIRECTORY_ENTRY_EXPORT))
234+ {
235+ gint i, count;
236+ const guint16 *ordinals;
237+ const guint32 *functions, *names;
238+ const ImageExportDirectory *ied;
239+
240+ ied = pe_image_export_directory (image);
241+ functions = (const guint32 *)(image
242+ + ied_get_address_of_functions (ied));
243+ names = (const guint32 *)(image
244+ + ied_get_address_of_names (ied));
245+ ordinals = (const guint16 *)(image
246+ + ied_get_address_of_name_ordinals (ied));
247+ count = ied_get_number_of_names (ied);
248+ for (i = 0; i < count; i++)
249+ if (g_strcmp ((const gchar *)(image + GUINT32_FROM_LE (names[i])),
250+ name) == 0)
251+ {
252+ func = image
253+ + GUINT32_FROM_LE (functions[GUINT16_FROM_LE (ordinals[i])]);
254+ break;
255+ }
256+ }
257+ return func;
258+}
259+
260+
261+/* ja:PEイメージからAPIを取得する
262+ image,PEイメージ
263+ ordinal,オーディナル値
264+ RET,アドレス,NULL:エラー */
265+gconstpointer
266+peimage_file_get_proc (const guint8 *image,
267+ const guint16 ordinal)
268+{
269+ gconstpointer proc = NULL;
270+
271+ if (image && pe_ioh_get_data_directory_size (image,
272+ PEIMAGE_DIRECTORY_ENTRY_EXPORT))
273+ {
274+ gint index;
275+ const guint32 *functions;
276+ const ImageExportDirectory *ied;
277+
278+ ied = pe_image_export_directory (image);
279+ functions = (const guint32 *)(image + ied_get_address_of_functions (ied));
280+ index = ordinal - ied_get_base (ied);
281+ if (index < ied_get_number_of_functions (ied))
282+ proc = image + GUINT32_FROM_LE (functions[index]);
283+ }
284+ return proc;
285+}
286+
287+
288+/* ja:PEイメージからリソースを取得する
289+ image,PEイメージ
290+ key,リソース
291+ RET,データ,NULL:エラー */
292+gconstpointer
293+peimage_file_get_resource (const guint8 *image,
294+ const gchar *key)
295+{
296+ gconstpointer resource = NULL;
297+
298+ if (image && key && pe_ioh_get_data_directory_size (image,
299+ PEIMAGE_DIRECTORY_ENTRY_RESOURCE))
300+ {
301+ gchar **element;
302+
303+ element = g_strsplit (key[0] == '/' ? key + 1 : key, "/", G_MAXINT);
304+ if (element)
305+ {
306+ gint i;
307+ guint32 address, offset = 0;
308+
309+ address = pe_ioh_get_data_directory_virtual_address (image,
310+ PEIMAGE_DIRECTORY_ENTRY_RESOURCE);
311+ for (i = 0; element[i]; i++)
312+ {
313+ gint j, count;
314+ const ImageResourceDirectory *ird;
315+ const ImageResourceDirectoryEntry *irde;
316+
317+ ird = (const ImageResourceDirectory *)(image + address + offset);
318+ irde = (const ImageResourceDirectoryEntry *)(ird + 1);
319+ count = ird_get_number_of_named_entries (ird)
320+ + ird_get_number_of_id_entries (ird);
321+ for (j = 0; j < count; j++)
322+ {
323+ gboolean result;
324+ gchar *name;
325+
326+ if (irde_get_id (irde) & 0x80000000)
327+ {
328+ gchar *utf8str;
329+ const ImageResourceDirStringU *irdsu;
330+
331+ irdsu = (const ImageResourceDirStringU *)(image + address
332+ + (irde_get_id (irde) & 0x7fffffff));
333+ utf8str = g_utf16_to_utf8 (irdsu_get_name_string (irdsu),
334+ irdsu_get_length (irdsu), NULL, NULL, NULL);
335+ name = g_utf8_strup (utf8str, -1);
336+ g_free (utf8str);
337+ }
338+ else
339+ {
340+ name = g_strdup_printf ("0x%x", irde_get_id (irde));
341+ }
342+ result = g_strcmp (element[i], name) == 0;
343+ g_free (name);
344+ if (result)
345+ break;
346+ irde++;
347+ }
348+ if (j < count && irde_get_offset_to_data (irde) & 0x80000000)
349+ offset = irde_get_offset_to_data (irde) & 0x7fffffff;
350+ else if (j < count && !element[i + 1])
351+ resource = image + address + irde_get_offset_to_data (irde);
352+ else
353+ break;
354+ }
355+ g_strfreev (element);
356+ }
357+ }
358+ return resource;
359+}
360+
361+
362+/******************************************************************************
363+* *
364+* ja:モジュール関数群 *
365+* *
366+******************************************************************************/
367+typedef struct _PeModule
368+{
369+ guint8 *image;
370+ gchar *file, *name;
371+ gint counter;
372+ GList *glist;
373+} PeModule;
374+
375+
376+# ifdef USE_THREAD
377+G_LOCK_DEFINE_STATIC (critical);
378+static volatile gboolean critical = FALSE;
379+# endif /* USE_THREAD */
380+
381+
382+static gchar *
383+peimage_get_basename (const gchar *file)
384+{
385+ gchar *name = NULL;
386+
387+ if (file)
388+ {
389+ name = g_path_get_basename (file);
390+ if (!g_strrchr (name, '.'))
391+ {
392+ gchar *tmp;
393+
394+ tmp = g_strconcat (name, ".dll", NULL);
395+ g_free (name);
396+ name = tmp;
397+ }
398+ }
399+ return name;
400+}
401+
402+
403+/* ja:既にロードされているPEイメージを取得する
404+ process,プロセス
405+ file,イメージ名
406+ RET,PEイメージ,NULL:ロードされていない */
407+guint8 *
408+peimage_module_get_library (PeProcess *process,
409+ const gchar *file)
410+{
411+ guint8 *image = NULL;
412+
413+ if (file)
414+ {
415+ gchar *base, *name;
416+ GList *glist;
417+
418+ base = g_path_get_basename (file);
419+ name = peimage_get_basename (file);
420+#ifdef USE_THREAD
421+ G_LOCK (critical);
422+ critical = TRUE;
423+#endif /* USE_THREAD */
424+ for (glist = g_list_first (process->module);
425+ glist; glist = g_list_next (glist))
426+ if (g_ascii_strcasecmp (((PeModule *)glist->data)->name, base) == 0
427+ || g_ascii_strcasecmp (((PeModule *)glist->data)->name, name) == 0)
428+ {
429+ image = ((PeModule *)glist->data)->image;
430+ break;
431+ }
432+#ifdef USE_THREAD
433+ critical = FALSE;
434+ G_UNLOCK (critical);
435+#endif /* USE_THREAD */
436+ g_free (base);
437+ g_free (name);
438+ }
439+ return image;
440+}
441+
442+
443+/* ja:モジュール構造体を取得する
444+ process,プロセス
445+ image,PEイメージ
446+ RET,モジュール構造体,NULL:エラー */
447+static PeModule *
448+peimage_module_get_info (PeProcess *process,
449+ const guint8 *image)
450+{
451+ PeModule *module = NULL;
452+
453+ if (image)
454+ {
455+ GList *glist;
456+
457+#ifdef USE_THREAD
458+ G_LOCK (critical);
459+ critical = TRUE;
460+#endif /* USE_THREAD */
461+ for (glist = g_list_first (process->module);
462+ glist; glist = g_list_next (glist))
463+ if (((PeModule *)glist->data)->image == image)
464+ {
465+ module = glist->data;
466+ break;
467+ }
468+#ifdef USE_THREAD
469+ critical = FALSE;
470+ G_UNLOCK (critical);
471+#endif /* USE_THREAD */
472+ }
473+ return module;
474+}
475+
476+
477+/* ja:イメージをロードする
478+ process,プロセス
479+ file,イメージ名
480+ RET,イメージ,NULL:エラー */
481+guint8 *
482+peimage_module_load_library (PeProcess *process,
483+ const gchar *file,
484+ PeModuleSystem pemodule_system,
485+ PeModuleRelocate pemodule_relocate,
486+ PeModuleImport pemodule_import,
487+ PeModuleEntry pemodule_entry,
488+ gpointer user_data)
489+{
490+ gboolean result = TRUE;
491+ guint8 *image;
492+ gint i;
493+ PeModule *module;
494+
495+ if (!process || !file)
496+ return NULL;
497+ image = peimage_module_get_library (process, file);
498+ if (image)
499+ {
500+ /* ja:既読 */
501+ module = peimage_module_get_info (process, image);
502+ if (module)
503+ {
504+ module->counter++;
505+ return module->image;
506+ }
507+ }
508+ module = g_malloc0 (sizeof (PeModule));
509+ module->counter = 1;
510+ module->name = peimage_get_basename (file);
511+ if (pemodule_system)
512+ module->image = pemodule_system (process, module->name, user_data);
513+ if (module->image)
514+ {
515+ module->file = g_build_filename
516+ (peimage_dir_get_path (PEIMAGE_DIR_SYSTEM), module->name, NULL);
517+#ifdef USE_THREAD
518+ G_LOCK (critical);
519+ critical = TRUE;
520+#endif /* USE_THREAD */
521+ process->module = g_list_append (process->module, module);
522+#ifdef USE_THREAD
523+ critical = FALSE;
524+ G_UNLOCK (critical);
525+#endif /* USE_THREAD */
526+ return module->image;
527+ }
528+ g_free (module->name);
529+
530+ /* ja:ファイル読み込み */
531+ module->name = g_path_get_basename (file);
532+ module->file = fileio_get_full_path (file);
533+ module->image = peimage_file_load (module->file);
534+ for (i = 0; i < 8; i++)
535+ if (!module->image)
536+ {
537+ gchar *path;
538+
539+ g_free (module->name);
540+ g_free (module->file);
541+ module->name = i % 2 == 0 ? g_path_get_basename (file)
542+ : peimage_get_basename (file);
543+ path = i < 4 ? g_build_filename (peimage_dir_get_path
544+ (i / 2 == 0 ? PEIMAGE_DIR_SYSTEM : PEIMAGE_DIR_WINDOWS),
545+ module->name, NULL)
546+ : g_build_filename (peimage_dir_get_path (PEIMAGE_DIR_HOME),
547+ i < 6 ? "bin" : "lib", module->name, NULL);
548+ module->file = peimage_dir_get_case_insensitive (path);
549+ g_free (path);
550+ module->image = peimage_file_load (module->file);
551+ }
552+ if (!module->image)
553+ {
554+ g_free (module->name);
555+ g_free (module->file);
556+ g_free (module);
557+ return NULL;
558+ }
559+ /* ja:再配置 */
560+ if (pemodule_relocate)
561+ peimage_file_relocate (module->image,
562+ pemodule_relocate (process, module->image, user_data));
563+
564+ /* ja:プロセス登録 */
565+#ifdef USE_THREAD
566+ G_LOCK (critical);
567+ critical = TRUE;
568+#endif /* USE_THREAD */
569+ process->module = g_list_append (process->module, module);
570+#ifdef USE_THREAD
571+ critical = FALSE;
572+ G_UNLOCK (critical);
573+#endif /* USE_THREAD */
574+
575+ /* ja:インポート */
576+ if (pe_ioh_get_data_directory_size (module->image,
577+ PEIMAGE_DIRECTORY_ENTRY_IMPORT))
578+ {
579+ ImageImportDescriptor *iid;
580+
581+ for (iid = pe_image_import_descriptor (module->image);
582+ iid_get_name (iid); iid++)
583+ {
584+ gchar *name;
585+
586+ name = (gchar *)(module->image + iid_get_name (iid));
587+ image = peimage_module_load_library (process,
588+ name,
589+ pemodule_system,
590+ pemodule_relocate,
591+ pemodule_import,
592+ pemodule_entry,
593+ user_data);
594+ if (image)
595+ {
596+ ImageThunkData *iat, *ilt;
597+
598+ iat = (ImageThunkData *)(module->image
599+ + (iid_get_original_first_thunk (iid)
600+ ? iid_get_original_first_thunk (iid)
601+ : iid_get_first_thunk (iid)));
602+ ilt = (ImageThunkData *)(module->image
603+ + iid_get_first_thunk (iid));
604+ while (itd_get_address_of_data (iat))
605+ {
606+ gconstpointer func;
607+
608+ if (itd_get_ordinal (iat) & PEIMAGE_ORDINAL_FLAG)
609+ {
610+ guint16 ordinal;
611+
612+ ordinal = itd_get_ordinal (iat) & ~PEIMAGE_ORDINAL_FLAG;
613+ func = peimage_file_get_proc (image, ordinal);
614+ }
615+ else
616+ {
617+ const ImageImportByName *iibn;
618+
619+ iibn = (const ImageImportByName *)(module->image
620+ + itd_get_address_of_data (iat));
621+ func = peimage_file_get_func (image,
622+ iibn_get_name (iibn));
623+ }
624+ itd_set_function (ilt, pemodule_import
625+ ? pemodule_import (process, func, user_data)
626+ : GPOINTER_TO_UINT (func));
627+ iat++;
628+ ilt++;
629+ }
630+ module->glist = g_list_append (module->glist, image);
631+ }
632+ else
633+ {
634+ result = FALSE;
635+ }
636+ }
637+ }
638+ if (!result)
639+ {
640+ peimage_module_free_library (process, module->image, NULL, user_data);
641+ return NULL;
642+ }
643+
644+ if (pemodule_entry
645+ && !pemodule_entry (process, module->image, TRUE, user_data))
646+ {
647+ peimage_module_free_library (process,
648+ module->image, pemodule_entry, user_data);
649+ return NULL;
650+ }
651+ return module->image;
652+}
653+
654+
655+/* ja:イメージを解放する
656+ process,プロセス
657+ image,イメージ
658+ RET,TRUE:正常終了,FALSE:エラー */
659+gboolean
660+peimage_module_free_library (PeProcess *process,
661+ const guint8 *image,
662+ PeModuleEntry pemodule_entry,
663+ gpointer user_data)
664+{
665+ gboolean result = FALSE;
666+ PeModule *module;
667+
668+ module = peimage_module_get_info (process, image);
669+ if (module)
670+ {
671+ result = TRUE;
672+ module->counter--;
673+ if (module->counter <= 0)
674+ {
675+ if (pemodule_entry)
676+ pemodule_entry (process, module->image, FALSE, user_data);
677+#ifdef USE_THREAD
678+ G_LOCK (critical);
679+ critical = TRUE;
680+#endif /* USE_THREAD */
681+ process->module = g_list_remove (process->module, module);
682+#ifdef USE_THREAD
683+ critical = FALSE;
684+ G_UNLOCK (critical);
685+#endif /* USE_THREAD */
686+ for (module->glist = g_list_first (module->glist); module->glist;
687+ module->glist = g_list_delete_link (module->glist, module->glist))
688+ if (!peimage_module_free_library (process,
689+ ((PeModule *)module->glist->data)->image,
690+ pemodule_entry, user_data))
691+ result = FALSE;
692+ g_free (module->image);
693+ g_free (module->name);
694+ g_free (module->file);
695+ g_free (module);
696+ }
697+ }
698+ return result;
699+}
700+
701+
702+/* ja:イメージの名前を取得する
703+ process,プロセス
704+ image,イメージ
705+ RET,名前,NULL:エラー */
706+const gchar *
707+peimage_module_get_filename (PeProcess *process,
708+ const guint8 *image)
709+{
710+ PeModule *module;
711+
712+ module = peimage_module_get_info (process, image);
713+ return module ? module->file : NULL;
714+}
715+
716+
717+/******************************************************************************
718+* *
719+* ja:ディレクトリ関数群 *
720+* *
721+******************************************************************************/
722+/* ja:ディレクトリを取得する
723+ dir,ディレクトリの種類
724+ RET,ディレクトリ */
725+const gchar *
726+peimage_dir_get_path (const guint dir)
727+{
728+ gchar *file;
729+ const gchar *key, *path = NULL;
730+ const static gchar *dir_windows = NULL, *dir_system = NULL, *dir_temp = NULL;
731+ const static gchar *dir_data = NULL, *dir_home = NULL;
732+ gint i;
733+ GKeyFile *key_file;
734+
735+ switch (dir)
736+ {
737+ case PEIMAGE_DIR_WINDOWS: if (dir_windows) return dir_windows; break;
738+ case PEIMAGE_DIR_SYSTEM: if (dir_system) return dir_system; break;
739+ case PEIMAGE_DIR_TEMP: if (dir_temp) return dir_temp; break;
740+ case PEIMAGE_DIR_DATA: if (dir_data) return dir_data; break;
741+ case PEIMAGE_DIR_HOME: if (dir_home) return dir_home;
742+ }
743+ for (i = 0; i < 2 && !path; i++)
744+ {
745+ switch (dir)
746+ {
747+ case PEIMAGE_DIR_WINDOWS:
748+ file = peimage_dir_get_filename ("system.ini",
749+ i == 0 ? PEIMAGE_DIR_HOME : PEIMAGE_DIR_DATA);
750+ key = "windows";
751+ break;
752+ case PEIMAGE_DIR_SYSTEM:
753+ file = peimage_dir_get_filename ("system.ini",
754+ i == 0 ? PEIMAGE_DIR_HOME : PEIMAGE_DIR_DATA);
755+ key = "system";
756+ break;
757+ case PEIMAGE_DIR_TEMP:
758+ file = peimage_dir_get_filename ("system.ini",
759+ i == 0 ? PEIMAGE_DIR_HOME : PEIMAGE_DIR_DATA);
760+ key = "temp";
761+ break;
762+ case PEIMAGE_DIR_DATA:
763+ if (i == 0)
764+ {
765+ file = g_build_filename (g_get_home_dir (),
766+ ".maid.org", "w32ldr", "system.ini", NULL);
767+ key = "data";
768+ break;
769+ }
770+ default:
771+ file = NULL;
772+ key = NULL;
773+ }
774+ if (file && key)
775+ {
776+ gchar *tmp, *utf8str;
777+
778+ key_file = g_key_file_new ();
779+ tmp = peimage_dir_get_case_insensitive (file);
780+ g_key_file_load_from_file (key_file, tmp, G_KEY_FILE_NONE, NULL);
781+ g_free (tmp);
782+ utf8str = g_key_file_get_string (key_file, "directory", key, NULL);
783+ g_key_file_free (key_file);
784+ if (utf8str)
785+ {
786+ path = g_filename_from_utf8 (utf8str, -1, NULL, NULL, NULL);
787+ g_free (utf8str);
788+ }
789+ }
790+ g_free (file);
791+ }
792+ switch (dir)
793+ {
794+ case PEIMAGE_DIR_WINDOWS:
795+ return dir_windows = path ? path
796+#ifdef BINDIR
797+ : g_build_filename (BINDIR, "w32ldr", NULL);
798+#else /* not BINDIR */
799+ : "/usr/local/bin/w32ldr";
800+#endif /* not BINDIR */
801+ case PEIMAGE_DIR_SYSTEM:
802+ return dir_system = path ? path
803+#ifdef LIBDIR
804+ : g_build_filename (LIBDIR, "w32ldr", NULL);
805+#else /* not LIBDIR */
806+ : "/usr/local/lib/w32ldr";
807+#endif /* not LIBDIR */
808+ case PEIMAGE_DIR_TEMP:
809+ return dir_temp = path ? path : g_get_tmp_dir ();
810+ case PEIMAGE_DIR_DATA:
811+ return dir_data = path ? path
812+#ifdef SYSCONFDIR
813+ : g_build_filename (SYSCONFDIR, "w32ldr", NULL);
814+#else /* not SYSCONFDIR */
815+ : "/usr/local/etc/w32ldr";
816+#endif /* not SYSCONFDIR */
817+ case PEIMAGE_DIR_HOME:
818+ if (!dir_home)
819+ dir_home = g_build_filename (g_get_home_dir (),
820+ ".maid.org", "w32ldr", NULL);
821+ return dir_home;
822+ }
823+ return NULL;
824+}
825+
826+
827+/* ja:大文字小文字を区別しないパス名を求める
828+ path,ファイル名
829+ RET,大文字小文字を区別しないパス名 */
830+gchar *
831+peimage_dir_get_case_insensitive (const gchar *path)
832+{
833+ gchar **element, *file = NULL;
834+ gint i;
835+
836+ if (!path)
837+ return NULL;
838+ if (path[0] == '\0')
839+ return g_malloc0 (sizeof (gchar));
840+ element = g_strsplit (path, G_DIR_SEPARATOR_S, 0);
841+ for (i = 0; element[i]; i++)
842+ if ((element[i])[0] == '\0')
843+ {
844+ if (!file)
845+ file = g_strdup (G_DIR_SEPARATOR_S);
846+ }
847+ else
848+ {
849+ gchar *tmp;
850+
851+ tmp = file ? g_build_filename (file, element[i], NULL)
852+ : g_strdup (element[i]);
853+ if (g_file_test (tmp, G_FILE_TEST_EXISTS))
854+ {
855+ g_free (file);
856+ file = tmp;
857+ }
858+ else
859+ {
860+ const gchar *name;
861+ GDir *dir;
862+
863+ g_free (tmp);
864+ tmp = NULL;
865+ dir = g_dir_open (file ? file : ".", 0, NULL);
866+ while ((name = g_dir_read_name (dir)))
867+ if (g_ascii_strcasecmp (element[i], name) == 0)
868+ {
869+ tmp = file ? g_build_filename (file, name, NULL)
870+ : g_strdup (name);
871+ break;
872+ }
873+ g_dir_close (dir);
874+ if (!tmp)
875+ {
876+ while (element[i])
877+ {
878+ if ((element[i])[0] != '\0')
879+ {
880+ tmp = file ? g_build_filename (file, element[i], NULL)
881+ : g_strdup (element[i]);
882+ g_free (file);
883+ file = tmp;
884+ }
885+ i++;
886+ }
887+ break;
888+ }
889+ g_free (file);
890+ file = tmp;
891+ }
892+ }
893+ g_strfreev (element);
894+ return file;
895+}
896+
897+
898+/* ja:特定のディレクトリのファイルを取得する
899+ file,元のファイル名
900+ dir,ディレクトリの種類
901+ RET,ファイル */
902+gchar *
903+peimage_dir_get_filename (const gchar *file,
904+ const guint dir)
905+{
906+ gchar *name, *tmp, *result;
907+
908+ name = g_path_get_basename (file);
909+ tmp = g_build_filename (peimage_dir_get_path (dir), name, NULL);
910+ g_free (name);
911+ result = peimage_dir_get_case_insensitive (tmp);
912+ g_free (tmp);
913+ return result;
914+}
--- vmaid/trunk/misc/peimage.h (nonexistent)
+++ vmaid/trunk/misc/peimage.h (revision 315)
@@ -0,0 +1,839 @@
1+/*
2+ peimage
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
4+
5+ This program is free software: you can redistribute it and/or modify
6+ it under the terms of the GNU General Public License as published by
7+ the Free Software Foundation, either version 3 of the License, or
8+ (at your option) any later version.
9+
10+ This program is distributed in the hope that it will be useful,
11+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+ GNU General Public License for more details.
14+
15+ You should have received a copy of the GNU General Public License
16+ along with this program. If not, see <http://www.gnu.org/licenses/>.
17+*/
18+#ifndef __PEIMAGE_H__
19+#define __PEIMAGE_H__
20+
21+
22+#include "gcommon.h"
23+
24+
25+G_BEGIN_DECLS
26+
27+
28+#define PEIMAGE_DOS_SIGNATURE 0x5a4d
29+#define PEIMAGE_NT_SIGNATURE 0x00004550
30+/* ja:ファイルヘッダ */
31+#define PEIMAGE_FILE_MACHINE_I386 0x014c
32+#define PEIMAGE_FILE_EXECUTABLE_IMAGE 0x0002
33+#define PEIMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
34+#define PEIMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
35+#define PEIMAGE_FILE_32BIT_MACHINE 0x0100
36+#define PEIMAGE_FILE_DLL 0x2000
37+/* ja:オプションヘッダ */
38+#define PEIMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
39+#define PEIMAGE_SUBSYSTEM_UNKNOWN 0
40+#define PEIMAGE_SUBSYSTEM_NATIVE 1
41+#define PEIMAGE_SUBSYSTEM_WINDOWS_GUI 2
42+#define PEIMAGE_SUBSYSTEM_WINDOWS_CUI 3
43+#define PEIMAGE_SUBSYSTEM_POSIX_CUI 7
44+#define PEIMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
45+#define PEIMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
46+#define PEIMAGE_DIRECTORY_ENTRY_EXPORT 0
47+#define PEIMAGE_DIRECTORY_ENTRY_IMPORT 1
48+#define PEIMAGE_DIRECTORY_ENTRY_RESOURCE 2
49+#define PEIMAGE_DIRECTORY_ENTRY_BASERELOC 5
50+/* ja:セクションヘッダ */
51+#define PEIMAGE_SIZEOF_SHORT_NAME 8
52+#define PEIMAGE_SCN_CNT_CODE 0x00000020
53+#define PEIMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
54+#define PEIMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
55+#define PEIMAGE_SCN_LNK_OVFL 0x01000000
56+#define PEIMAGE_SCN_MEM_DISCARDABLE 0x02000000
57+#define PEIMAGE_SCN_MEM_NOT_CACHED 0x04000000
58+#define PEIMAGE_SCN_MEM_NOT_PAGED 0x08000000
59+#define PEIMAGE_SCN_MEM_SHARED 0x10000000
60+#define PEIMAGE_SCN_MEM_EXECUTE 0x20000000
61+#define PEIMAGE_SCN_MEM_READ 0x40000000
62+#define PEIMAGE_SCN_MEM_WRITE 0x80000000
63+/* ja:エクスポートテーブル */
64+#define PEIMAGE_ORDINAL_FLAG (1<<31)
65+/* ja:再配置テーブル */
66+#define PEIMAGE_REL_BASED_HIGHLOW 3
67+
68+
69+#define IDH_SIZE 64
70+#define IFH_SIZE 20
71+#define IDD_SIZE 8
72+#define IOH_SIZE (96+IDD_SIZE*PEIMAGE_NUMBEROF_DIRECTORY_ENTRIES)
73+#define ISH_SIZE (PEIMAGE_SIZEOF_SHORT_NAME+32)
74+#define IED_SIZE 40
75+#define IIBN_SIZE 2
76+#define ITD_SIZE 4
77+#define IID_SIZE 20
78+#define IBR_SIZE 8
79+#define IRD_SIZE 16
80+#define IRDE_SIZE 8
81+#define IRDSU_SIZE 2
82+#define IRDA_SIZE 16
83+
84+
85+#ifdef USE_GCC
86+
87+
88+/* ja:MS-DOSヘッダ */
89+typedef struct _ImageDosHeader
90+{
91+ guint16 e_magic __attribute__((packed));
92+ guint16 e_cblp __attribute__((packed));
93+ guint16 e_cp __attribute__((packed));
94+ guint16 e_crlc __attribute__((packed));
95+ guint16 e_cparhdr __attribute__((packed));
96+ guint16 e_minalloc __attribute__((packed));
97+ guint16 e_maxalloc __attribute__((packed));
98+ guint16 e_ss __attribute__((packed));
99+ guint16 e_sp __attribute__((packed));
100+ guint16 e_csum __attribute__((packed));
101+ guint16 e_ip __attribute__((packed));
102+ guint16 e_cs __attribute__((packed));
103+ guint16 e_lfarlc __attribute__((packed));
104+ guint16 e_ovno __attribute__((packed));
105+ guint16 e_res[4] __attribute__((packed));
106+ guint16 e_oemid __attribute__((packed));
107+ guint16 e_oeminfo __attribute__((packed));
108+ guint16 e_res2[10] __attribute__((packed));
109+ gint32 e_lfanew __attribute__((packed));
110+} ImageDosHeader;
111+/* ja:ファイルヘッダ */
112+typedef struct _ImageFileHeader
113+{
114+ guint16 machine __attribute__((packed));
115+ guint16 number_of_sections __attribute__((packed));
116+ guint32 time_date_stamp __attribute__((packed));
117+ guint32 pointer_to_symbol_table __attribute__((packed));
118+ guint32 number_of_symbols __attribute__((packed));
119+ guint16 size_of_optional_header __attribute__((packed));
120+ guint16 characteristics __attribute__((packed));
121+} ImageFileHeader;
122+/* ja:オプションヘッダ */
123+typedef struct _ImageDataDirectory
124+{
125+ guint32 vrtual_address __attribute__((packed));
126+ guint32 size __attribute__((packed));
127+} ImageDataDirectory;
128+typedef struct _ImageOptionalHeader
129+{
130+ guint16 magic __attribute__((packed));
131+ guint8 major_linker_version __attribute__((packed));
132+ guint8 minor_linker_version __attribute__((packed));
133+ guint32 size_of_code __attribute__((packed));
134+ guint32 size_of_initialized_data __attribute__((packed));
135+ guint32 size_of_uninitialized_data __attribute__((packed));
136+ guint32 address_of_entry_point __attribute__((packed));
137+ guint32 base_of_code __attribute__((packed));
138+ guint32 base_of_data __attribute__((packed));
139+ guint32 image_base __attribute__((packed));
140+ guint32 section_alignment __attribute__((packed));
141+ guint32 file_alignment __attribute__((packed));
142+ guint16 major_operating_system_version __attribute__((packed));
143+ guint16 minor_operating_system_version __attribute__((packed));
144+ guint16 major_image_version __attribute__((packed));
145+ guint16 minor_image_version __attribute__((packed));
146+ guint16 major_subsystem_version __attribute__((packed));
147+ guint16 minor_subsystem_version __attribute__((packed));
148+ guint32 win32_version_value __attribute__((packed));
149+ guint32 size_of_image __attribute__((packed));
150+ guint32 size_of_headers __attribute__((packed));
151+ guint32 check_sum __attribute__((packed));
152+ guint16 subsystem __attribute__((packed));
153+ guint16 dll_characteristics __attribute__((packed));
154+ guint32 size_of_stack_reserve __attribute__((packed));
155+ guint32 size_of_stack_commit __attribute__((packed));
156+ guint32 size_of_heap_reserve __attribute__((packed));
157+ guint32 size_of_heap_commit __attribute__((packed));
158+ guint32 loader_flags __attribute__((packed));
159+ guint32 number_of_rva_and_sizes __attribute__((packed));
160+ ImageDataDirectory data_directory[PEIMAGE_NUMBEROF_DIRECTORY_ENTRIES] __attribute__((packed));
161+} ImageOptionalHeader;
162+/* ja:セクションヘッダ */
163+typedef struct _ImageSectionHeader
164+{
165+ guint8 name[PEIMAGE_SIZEOF_SHORT_NAME] __attribute__((packed));
166+ union {
167+ guint32 physical_address __attribute__((packed));
168+ guint32 virtual_size __attribute__((packed));
169+ } misc __attribute__((packed));
170+ guint32 virtual_address __attribute__((packed));
171+ guint32 size_of_raw_data __attribute__((packed));
172+ guint32 pointer_to_raw_data __attribute__((packed));
173+ guint32 pointer_to_relocations __attribute__((packed));
174+ guint32 pointer_to_linenumbers __attribute__((packed));
175+ guint16 number_of_relocations __attribute__((packed));
176+ guint16 number_of_linenumbers __attribute__((packed));
177+ guint32 characteristics __attribute__((packed));
178+} ImageSectionHeader;
179+/* ja:エクスポートテーブル */
180+typedef struct _ImageExportDirectory
181+{
182+ guint32 characteristics __attribute__((packed));
183+ guint32 time_date_stamp __attribute__((packed));
184+ guint16 major_version __attribute__((packed));
185+ guint16 minor_version __attribute__((packed));
186+ guint32 name __attribute__((packed));
187+ guint32 base __attribute__((packed));
188+ guint32 number_of_functions __attribute__((packed));
189+ guint32 number_of_Names __attribute__((packed));
190+ guint32 address_of_functions __attribute__((packed));
191+ guint32 address_of_names __attribute__((packed));
192+ guint32 address_of_name_ordinals __attribute__((packed));
193+} ImageExportDirectory;
194+/* ja:インポートテーブル */
195+typedef struct _ImageImportByName
196+{
197+ guint16 hint __attribute__((packed));
198+ guint8 name[1] __attribute__((packed));
199+} ImageImportByName;
200+typedef struct _ImageThunkData
201+{
202+ union {
203+ guint32 forwarder_string __attribute__((packed));
204+ guint32 function __attribute__((packed));
205+ guint32 ordinal __attribute__((packed));
206+ guint32 address_of_data __attribute__((packed));
207+ } u1 __attribute__((packed));
208+} ImageThunkData;
209+typedef struct _ImageImportDescriptor
210+{
211+ union {
212+ guint32 characteristics __attribute__((packed));
213+ guint32 original_first_thunk __attribute__((packed));
214+ } DummyUnionName __attribute__((packed));
215+ guint32 time_date_stamp __attribute__((packed));
216+ guint32 forwarder_chain __attribute__((packed));
217+ guint32 name __attribute__((packed));
218+ guint32 first_thunk __attribute__((packed));
219+} ImageImportDescriptor;
220+/* ja:再配置テーブル */
221+typedef struct _ImageBaseRelocation
222+{
223+ guint32 virtual_address __attribute__((packed));
224+ guint32 size_of_block __attribute__((packed));
225+ guint16 type_offset[1] __attribute__((packed));
226+} ImageBaseRelocation;
227+/* ja:リソース */
228+typedef struct _ImageResourceDirectory
229+{
230+ guint32 characteristics __attribute__((packed));
231+ guint32 time_date_stamp __attribute__((packed));
232+ guint16 major_version __attribute__((packed));
233+ guint16 minor_version __attribute__((packed));
234+ guint16 number_of_named_entries __attribute__((packed));
235+ guint16 number_of_id_entries __attribute__((packed));
236+} ImageResourceDirectory;
237+typedef struct _ImageResourceDirectoryEntry
238+{
239+ guint32 id __attribute__((packed));
240+ guint32 offset_to_data __attribute__((packed));
241+} ImageResourceDirectoryEntry;
242+typedef struct _ImageResourceDirStringU
243+{
244+ guint16 length __attribute__((packed));
245+ gunichar2 name_string[1] __attribute__((packed));
246+} ImageResourceDirStringU;
247+typedef struct _ImageResourceDataEntry
248+{
249+ guint32 offset_to_data __attribute__((packed));
250+ guint32 size __attribute__((packed));
251+ guint32 code_page __attribute__((packed));
252+ guint32 reserved __attribute__((packed));
253+} ImageResourceDataEntry;
254+
255+
256+#else /* not USE_GCC */
257+
258+typedef struct _ImageDosHeader { guint8 dummy[IDH_SIZE]; } ImageDosHeader;
259+typedef struct _ImageFileHeader { guint8 dummy[IFH_SIZE]; } ImageFileHeader;
260+typedef struct _ImageDataDirectory { guint8 dummy[IDD_SIZE]; } ImageDataDirectory;
261+typedef struct _ImageOptionalHeader { guint8 dummy[IOH_SIZE]; } ImageOptionalHeader;
262+typedef struct _ImageSectionHeader { guint8 dummy[ISH_SIZE]; } ImageSectionHeader;
263+typedef struct _ImageExportDirectory { guint8 dummy[IED_SIZE]; } ImageExportDirectory;
264+typedef struct _ImageImportByName { guint8 dummy[IIBN_SIZE]; } ImageImportByName;
265+typedef struct _ImageThunkData { guint8 dummy[ITD_SIZE]; } ImageThunkData;
266+typedef struct _ImageImportDescriptor { guint8 dummy[IID_SIZE]; } ImageImportDescriptor;
267+typedef struct _ImageBaseRelocation { guint8 dummy[IBR_SIZE]; } ImageBaseRelocation;
268+typedef struct _ImageResourceDirectory { guint8 dummy[IRD_SIZE]; } ImageResourceDirectory;
269+typedef struct _ImageResourceDirectoryEntry { guint8 dummy[IRDE_SIZE]; } ImageResourceDirectoryEntry;
270+typedef struct _ImageResourceDirStringU { guint8 dummy[IRDSU_SIZE]; } ImageResourceDirStringU;
271+typedef struct _ImageResourceDataEntry { guint8 dummy[IRDA_SIZE]; } ImageResourceDataEntry;
272+
273+
274+#endif /* not USE_GCC */
275+
276+
277+/******************************************************************************
278+* *
279+* ja:PEイメージ構造体マクロ *
280+* *
281+******************************************************************************/
282+#define idh_get_magic(idh) GUINT16_FROM_LE(*(guint16 *)(idh))
283+#define idh_get_lfanew(idh) GINT32_FROM_LE(*(gint32 *)((guint8 *)(idh)+60))
284+#define idh_set_magic(idh,magic) (*(guint16 *)(idh)=GUINT16_TO_LE(magic))
285+#define idh_set_lfanew(idh,lfanew) (*(guint32 *)((guint8 *)(idh)+60)=GINT32_TO_LE(lfanew))
286+
287+#define ifh_get_machine(ifh) GUINT16_FROM_LE(*(guint16 *)(ifh))
288+#define ifh_get_number_of_sections(ifh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ifh)+2))
289+#define ifh_get_time_date_stamp(ifh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ifh)+4))
290+#define ifh_get_pointer_to_symbol_table(ifh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ifh)+8))
291+#define ifh_get_number_of_symbols(ifh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ifh)+12))
292+#define ifh_get_size_of_optional_header(ifh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ifh)+16))
293+#define ifh_get_characteristics(ifh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ifh)+18))
294+#define ifh_set_machine(ifh,machine) (*(guint16 *)(ifh)=GUINT16_TO_LE(machine))
295+#define ifh_set_number_of_sections(ifh,number_of_sections) (*(guint16 *)((guint8 *)(ifh)+2)=GUINT16_TO_LE(number_of_sections))
296+#define ifh_set_time_date_stamp(ifh,time_date_stamp) (*(guint32 *)((guint8 *)(ifh)+4)=GUINT32_TO_LE(time_date_stamp))
297+#define ifh_set_pointer_to_symbol_table(ifh,pointer_to_symbol_table) (*(guint32 *)((guint8 *)(ifh)+8)=GUINT32_TO_LE(pointer_to_symbol_table))
298+#define ifh_set_number_of_symbols(ifh,number_of_symbols) (*(guint32 *)((guint8 *)(ifh)+12)=GUINT32_TO_LE(number_of_symbols))
299+#define ifh_set_size_of_optional_header(ifh,size_of_optional_header) (*(guint16 *)((guint8 *)(ifh)+16)=GUINT16_TO_LE(size_of_optional_header))
300+#define ifh_set_characteristics(ifh,characteristics) (*(guint16 *)((guint8 *)(ifh)+18)=GUINT16_TO_LE(characteristics))
301+
302+
303+#define idd_get_virtual_address(idd) GUINT32_FROM_LE(*(guint32 *)(idd))
304+#define idd_get_size(idd) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(idd)+4))
305+#define idd_set_virtual_address(idd,virtual_address) (*(guint32 *)(idd)=GUINT32_TO_LE(virtual_address))
306+#define idd_set_size(idd,size) (*(guint32 *)((guint8 *)(idd)+4)=GUINT32_TO_LE(size))
307+
308+
309+#define ioh_get_magic(ioh) GUINT16_FROM_LE(*(guint16 *)(ioh))
310+#define ioh_get_major_linker_version(ioh) (*((guint8 *)(ioh)+2))
311+#define ioh_get_minor_linker_version(ioh) (*((guint8 *)(ioh)+3))
312+#define ioh_get_size_of_code(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+4))
313+#define ioh_get_size_of_initialized_data(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+8))
314+#define ioh_get_size_of_uninitialized_data(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+12))
315+#define ioh_get_address_of_entry_point(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+16))
316+#define ioh_get_base_of_code(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+20))
317+#define ioh_get_base_of_data(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+24))
318+#define ioh_get_image_base(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+28))
319+#define ioh_get_section_alignment(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+32))
320+#define ioh_get_file_alignment(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+36))
321+#define ioh_get_major_operating_system_version(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+40))
322+#define ioh_get_minor_operating_system_version(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+42))
323+#define ioh_get_major_image_version(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+44))
324+#define ioh_get_minor_image_version(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+46))
325+#define ioh_get_major_subsystem_version(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+48))
326+#define ioh_get_minor_subsystem_version(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+50))
327+#define ioh_get_win32_version_value(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+52))
328+#define ioh_get_size_of_image(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+56))
329+#define ioh_get_size_of_headers(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+60))
330+#define ioh_get_check_sum(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+64))
331+#define ioh_get_subsystem(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+68))
332+#define ioh_get_dll_characteristics(ioh) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ioh)+70))
333+#define ioh_get_size_of_stack_reserve(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+72))
334+#define ioh_get_size_of_stack_commit(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+76))
335+#define ioh_get_size_of_heap_reserve(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+80))
336+#define ioh_get_size_of_heap_commit(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+84))
337+#define ioh_get_loader_flags(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+88))
338+#define ioh_get_number_of_rva_and_sizes(ioh) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ioh)+92))
339+#define ioh_get_data_directory_virtual_address(ioh,entry) idd_get_virtual_address((guint8 *)(ioh)+96+(entry)*IDD_SIZE)
340+#define ioh_get_data_directory_size(ioh,entry) idd_get_size((guint8 *)(ioh)+96+(entry)*IDD_SIZE)
341+#define ioh_set_magic(ioh,magic) (*(guint16 *)(ioh)=GUINT16_TO_LE(magic))
342+#define ioh_set_major_linker_version(ioh,major_linker_version) (*((guint8 *)(ioh)+2)=(major_linker_version))
343+#define ioh_set_minor_linker_version(ioh,minor_linker_version) (*((guint8 *)(ioh)+3)=(minor_linker_version))
344+#define ioh_set_size_of_code(ioh,size_of_code) (*(guint32 *)((guint8 *)(ioh)+4)=GUINT32_TO_LE(size_of_code))
345+#define ioh_set_size_of_initialized_data(ioh,size_of_initialized_data) (*(guint32 *)((guint8 *)(ioh)+8)=GUINT32_TO_LE(size_of_initialized_data))
346+#define ioh_set_size_of_uninitialized_data(ioh,size_of_uninitialized_data) (*(guint32 *)((guint8 *)(ioh)+12)=GUINT32_TO_LE(size_of_uninitialized_data))
347+#define ioh_set_address_of_entry_point(ioh,address_of_entry_point) (*(guint32 *)((guint8 *)(ioh)+16)=GUINT32_TO_LE(address_of_entry_point))
348+#define ioh_set_base_of_code(ioh,base_of_code) (*(guint32 *)((guint8 *)(ioh)+20)=GUINT32_TO_LE(base_of_code))
349+#define ioh_set_base_of_data(ioh,base_of_data) (*(guint32 *)((guint8 *)(ioh)+24)=GUINT32_TO_LE(base_of_data))
350+#define ioh_set_image_base(ioh,image_base) (*(guint32 *)((guint8 *)(ioh)+28)=GUINT32_TO_LE(image_base))
351+#define ioh_set_section_alignment(ioh,section_alignment) (*(guint32 *)((guint8 *)(ioh)+32)=GUINT32_TO_LE(section_alignment))
352+#define ioh_set_file_alignment(ioh,file_alignment) (*(guint32 *)((guint8 *)(ioh)+36)=GUINT32_TO_LE(file_alignment))
353+#define ioh_set_major_operating_system_version(ioh,major_operating_system_version) (*(guint16 *)((guint8 *)(ioh)+40)=GUINT16_TO_LE(major_operating_system_version))
354+#define ioh_set_minor_operating_system_version(ioh,minor_operating_system_version) (*(guint16 *)((guint8 *)(ioh)+42)=GUINT16_TO_LE(minor_operating_system_version))
355+#define ioh_set_major_image_version(ioh,major_image_version) (*(guint16 *)((guint8 *)(ioh)+44)=GUINT16_TO_LE(major_image_version))
356+#define ioh_set_minor_image_version(ioh,minor_image_version) (*(guint16 *)((guint8 *)(ioh)+46)=GUINT16_TO_LE(minor_image_version))
357+#define ioh_set_major_subsystem_version(ioh,major_subsystem_version) (*(guint16 *)((guint8 *)(ioh)+48)=GUINT16_TO_LE(major_subsystem_version))
358+#define ioh_set_minor_subsystem_version(ioh,minor_subsystem_version) (*(guint16 *)((guint8 *)(ioh)+50)=GUINT16_TO_LE(minor_subsystem_version))
359+#define ioh_set_win32_version_value(ioh,win32_version_value) (*(guint32 *)((guint8 *)(ioh)+52)=GUINT32_TO_LE(win32_version_value))
360+#define ioh_set_size_of_image(ioh,size_of_image) (*(guint32 *)((guint8 *)(ioh)+56)=GUINT32_TO_LE(size_of_image))
361+#define ioh_set_size_of_headers(ioh,size_of_headers) (*(guint32 *)((guint8 *)(ioh)+60)=GUINT32_TO_LE(size_of_headers))
362+#define ioh_set_check_sum(ioh,check_sum) (*(guint32 *)((guint8 *)(ioh)+64)=GUINT32_TO_LE(check_sum))
363+#define ioh_set_subsystem(ioh,subsystem) (*(guint16 *)((guint8 *)(ioh)+68)=GUINT16_TO_LE(subsystem))
364+#define ioh_set_dll_characteristics(ioh,dll_characteristics) (*(guint16 *)((guint8 *)(ioh)+70)=GUINT16_TO_LE(dll_characteristics))
365+#define ioh_set_size_of_stack_reserve(ioh,size_of_stack_reserve) (*(guint32 *)((guint8 *)(ioh)+72)=GUINT32_TO_LE(size_of_stack_reserve))
366+#define ioh_set_size_of_stack_commit(ioh,size_of_stack_commit) (*(guint32 *)((guint8 *)(ioh)+76)=GUINT32_TO_LE(size_of_stack_commit))
367+#define ioh_set_size_of_heap_reserve(ioh,size_of_heap_reserve) (*(guint32 *)((guint8 *)(ioh)+80)=GUINT32_TO_LE(size_of_heap_reserve))
368+#define ioh_set_size_of_heap_commit(ioh,size_of_heap_commit) (*(guint32 *)((guint8 *)(ioh)+84)=GUINT32_TO_LE(size_of_heap_commit))
369+#define ioh_set_loader_flags(ioh,loader_flags) (*(guint32 *)((guint8 *)(ioh)+88)=GUINT32_TO_LE(loader_flags))
370+#define ioh_set_number_of_rva_and_sizes(ioh,number_of_rva_and_sizes) (*(guint32 *)((guint8 *)(ioh)+92)=GUINT32_TO_LE(number_of_rva_and_sizes))
371+#define ioh_set_data_directory_virtual_address(ioh,entry,virtual_address) idd_set_virtual_address((guint8 *)(ioh)+96+(entry)*IDD_SIZE,virtual_address)
372+#define ioh_set_data_directory_size(ioh,entry,size) idd_set_size((guint8 *)(ioh)+96+(entry)*IDD_SIZE,size)
373+
374+
375+#define ish_get_name(ish) (gchar *)(ish)
376+#define ish_get_physical_address(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+8))
377+#define ish_get_virtual_size(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+8))
378+#define ish_get_virtual_address(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+12))
379+#define ish_get_size_of_raw_data(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+16))
380+#define ish_get_pointer_to_raw_data(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+20))
381+#define ish_get_pointer_to_relocations(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+24))
382+#define ish_get_pointer_to_linenumbers(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+28))
383+#define ish_get_number_of_relocations(ish) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ish)+32))
384+#define ish_get_number_of_linenumbers(ish) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ish)+34))
385+#define ish_get_characteristics(ish) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ish)+36))
386+#define ish_set_name(ish,name) g_strncpy((gchar *)(ish),(gchar *)(name),PEIMAGE_SIZEOF_SHORT_NAME)
387+#define ish_set_physical_address(ish,physical_address) (*(guint32 *)((guint8 *)(ish)+8)=GUINT32_TO_LE(physical_address))
388+#define ish_set_virtual_size(ish,virtual_size) (*(guint32 *)((guint8 *)(ish)+8)=GUINT32_TO_LE(virtual_size))
389+#define ish_set_virtual_address(ish,virtual_address) (*(guint32 *)((guint8 *)(ish)+12)=GUINT32_TO_LE(virtual_address))
390+#define ish_set_size_of_raw_data(ish,size_of_raw_data) (*(guint32 *)((guint8 *)(ish)+16)=GUINT32_TO_LE(size_of_raw_data))
391+#define ish_set_pointer_to_raw_data(ish,pointer_to_raw_data) (*(guint32 *)((guint8 *)(ish)+20)=GUINT32_TO_LE(pointer_to_raw_data))
392+#define ish_set_pointer_to_relocations(ish,pointer_to_relocations) (*(guint32 *)((guint8 *)(ish)+24)=GUINT32_TO_LE(pointer_to_relocations))
393+#define ish_set_pointer_to_linenumbers(ish,pointer_to_linenumbers) (*(guint32 *)((guint8 *)(ish)+28)=GUINT32_TO_LE(pointer_to_linenumbers))
394+#define ish_set_number_of_relocations(ish,number_of_relocations) (*(guint16 *)((guint8 *)(ish)+32)=GUINT16_TO_LE(number_of_relocations))
395+#define ish_set_number_of_linenumbers(ish,number_of_linenumbers) (*(guint16 *)((guint8 *)(ish)+34)=GUINT16_TO_LE(number_of_linenumbers))
396+#define ish_set_characteristics(ish,characteristics) (*(guint32 *)((guint8 *)(ish)+36)=GUINT32_TO_LE(characteristics))
397+
398+
399+#define ied_get_characteristics(ied) GUINT32_FROM_LE(*(guint32 *)(ied))
400+#define ied_get_time_date_stamp(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+4))
401+#define ied_get_major_version(ied) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ied)+8))
402+#define ied_get_minor_version(ied) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ied)+10))
403+#define ied_get_name(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+12))
404+#define ied_get_base(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+16))
405+#define ied_get_number_of_functions(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+20))
406+#define ied_get_number_of_names(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+24))
407+#define ied_get_address_of_functions(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+28))
408+#define ied_get_address_of_names(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+32))
409+#define ied_get_address_of_name_ordinals(ied) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ied)+36))
410+#define ied_set_characteristics(ied,characteristics) (*(guint32 *)(ied)=GUINT32_TO_LE(characteristics))
411+#define ied_set_time_date_stamp(ied,time_date_stamp) (*(guint32 *)((guint8 *)(ied)+4)=GUINT32_TO_LE(time_date_stamp))
412+#define ied_set_major_version(ied,major_version) (*(guint16 *)((guint8 *)(ied)+8)=GUINT16_TO_LE(major_version))
413+#define ied_set_minor_version(ied,minor_version) (*(guint16 *)((guint8 *)(ied)+10)=GUINT16_TO_LE(minor_version))
414+#define ied_set_name(ied,name) (*(guint32 *)((guint8 *)(ied)+12)=GUINT32_TO_LE(name))
415+#define ied_set_base(ied,base) (*(guint32 *)((guint8 *)(ied)+16)=GUINT32_TO_LE(base))
416+#define ied_set_number_of_functions(ied,number_of_functions) (*(guint32 *)((guint8 *)(ied)+20)=GUINT32_TO_LE(number_of_functions))
417+#define ied_set_number_of_names(ied,number_of_names) (*(guint32 *)((guint8 *)(ied)+24)=GUINT32_TO_LE(number_of_names))
418+#define ied_set_address_of_functions(ied,address_of_functions) (*(guint32 *)((guint8 *)(ied)+28)=GUINT32_TO_LE(address_of_functions))
419+#define ied_set_address_of_names(ied,address_of_names) (*(guint32 *)((guint8 *)(ied)+32)=GUINT32_TO_LE(address_of_names))
420+#define ied_set_address_of_name_ordinals(ied,address_of_name_ordinals) (*(guint32 *)((guint8 *)(ied)+36)=GUINT32_TO_LE(address_of_name_ordinals))
421+
422+
423+#define iibn_get_hint(iibn) GUINT16_FROM_LE(*(guint16 *)(iibn))
424+#define iibn_get_name(iibn) ((gchar *)(iibn)+2)
425+#define iibn_set_hint(iibn,hint) (*(guint16 *)(iibn)=GUINT16_TO_LE(hint))
426+#define iibn_set_name(iibn,name) g_strcpy((gchar *)(iibn)+2,(gchar *)(name))
427+
428+
429+#define itd_get_forwarder_string(itd) GUINT32_FROM_LE(*(guint32 *)(itd))
430+#define itd_get_function(itd) GUINT32_FROM_LE(*(guint32 *)(itd))
431+#define itd_get_ordinal(itd) GUINT32_FROM_LE(*(guint32 *)(itd))
432+#define itd_get_address_of_data(itd) GUINT32_FROM_LE(*(guint32 *)(itd))
433+#define itd_set_forwarder_string(itd,forwarder_string) (*(guint32 *)(itd)=GUINT32_TO_LE(forwarder_string))
434+#define itd_set_function(itd,function) (*(guint32 *)(itd)=GUINT32_TO_LE(function))
435+#define itd_set_ordinal(itd,ordinal) (*(guint32 *)(itd)=GUINT32_TO_LE(ordinal))
436+#define itd_set_address_of_data(itd,address_of_data) (*(guint32 *)(itd)=GUINT32_TO_LE(address_of_data))
437+
438+
439+#define iid_get_characteristics(iid) GUINT32_FROM_LE(*(guint32 *)(iid))
440+#define iid_get_original_first_thunk(iid) GUINT32_FROM_LE(*(guint32 *)(iid))
441+#define iid_get_time_date_stamp(iid) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(iid)+4))
442+#define iid_get_forwarder_chain(iid) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(iid)+8))
443+#define iid_get_name(iid) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(iid)+12))
444+#define iid_get_first_thunk(iid) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(iid)+16))
445+#define iid_set_characteristics(iid,characteristics) (*(guint32 *)(iid)=GUINT32_TO_LE(characteristics))
446+#define iid_set_original_first_thunk(iid,original_first_thunk) (*(guint32 *)(iid)=GUINT32_TO_LE(original_first_thunk))
447+#define iid_set_time_date_stamp(iid,time_date_stamp) (*(guint32 *)((guint8 *)(iid)+4)=GUINT32_TO_LE(time_date_stamp))
448+#define iid_set_forwarder_chain(iid,forwarder_chain) (*(guint32 *)((guint8 *)(iid)+8)=GUINT32_TO_LE(forwarder_chain))
449+#define iid_set_name(iid,name) (*(guint32 *)((guint8 *)(iid)+12)=GUINT32_TO_LE(name))
450+#define iid_set_first_thunk(iid,first_thunk) (*(guint32 *)((guint8 *)(iid)+16)=GUINT32_TO_LE(first_thunk))
451+
452+
453+#define ibr_get_virtual_address(ibr) GUINT32_FROM_LE(*(guint32 *)(ibr))
454+#define ibr_get_size_of_block(ibr) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ibr)+4))
455+#define ibr_get_type_offset(ibr,n) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ibr)+8+(n)*2))
456+#define ibr_set_virtual_address(ibr,virtual_address) (*(guint32 *)(ibr)=GUINT32_TO_LE(virtual_address))
457+#define ibr_set_size_of_block(ibr,size_of_block) (*(guint32 *)((guint8 *)(ibr)+4)=GUINT32_TO_LE(size_of_block))
458+#define ibr_set_type_offset(ibr,n,type_offset) (*(guint16 *)((guint8 *)(ibr)+8+(n)*2)=GUINT16_TO_LE(type_offset))
459+
460+
461+#define ird_get_characteristics(ird) GUINT32_FROM_LE(*(guint32 *)(ird))
462+#define ird_get_time_date_stamp(ird) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(ird)+4))
463+#define ird_get_major_version(ird) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ird)+8))
464+#define ird_get_minor_version(ird) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ird)+10))
465+#define ird_get_number_of_named_entries(ird) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ird)+12))
466+#define ird_get_number_of_id_entries(ird) GUINT16_FROM_LE(*(guint16 *)((guint8 *)(ird)+14))
467+#define ird_set_characteristics(ird,characteristics) (*(guint32 *)(ird)=GUINT32_TO_LE(characteristics))
468+#define ird_set_time_date_stamp(ird,time_date_stamp) (*(guint32 *)((guint8 *)(ird)+4)=GUINT32_TO_LE(time_date_stamp))
469+#define ird_set_major_version(ird,major_version) (*(guint16 *)((guint8 *)(ird)+8)=GUINT16_TO_LE(major_version))
470+#define ird_set_minor_version(ird,minor_version) (*(guint16 *)((guint8 *)(ird)+10)=GUINT16_TO_LE(minor_version))
471+#define ird_set_number_of_named_entries(ird,number_of_named_entries) (*(guint16 *)((guint8 *)(ird)+12)=GUINT16_TO_LE(number_of_named_entries))
472+#define ird_set_number_of_id_entries(ird,number_of_id_entries) (*(guint16 *)((guint8 *)(ird)+14)=GUINT16_TO_LE(number_of_id_entries))
473+
474+
475+#define irde_get_id(irde) GUINT32_FROM_LE(*(guint32 *)(irde))
476+#define irde_get_offset_to_data(irde) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(irde)+4))
477+#define irde_set_id(irde,id) (*(guint32 *)(irde)=GUINT32_TO_LE(id))
478+#define irde_set_offset_to_data(irde,offset_to_data) (*(guint32 *)((guint8 *)(irde)+4)=GUINT32_TO_LE(offset_to_data))
479+
480+
481+#define irdsu_get_length(irdsu) GUINT16_FROM_LE(*(guint16 *)(irdsu))
482+#define irdsu_get_name_string(irdsu) (gunichar2 *)((guint8 *)(irdsu)+2)
483+#define irdsu_set_length(irdsu,length) (*(guint16 *)(irdsu)=GUINT16_TO_LE(length))
484+
485+
486+#define irda_get_offset_to_data(irda) GUINT32_FROM_LE(*(guint32 *)(irda))
487+#define irda_get_size(irda) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(irda)+4))
488+#define irda_get_code_page(irda) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(irda)+8))
489+#define irda_get_reserved(irda) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(irda)+12))
490+#define irda_set_offset_to_data(irda,offset_to_data) (*(guint32 *)(irda)=GUINT32_TO_LE(offset_to_data))
491+#define irda_set_size(irda,size) (*(guint32 *)((guint8 *)(irda)+4)=GUINT32_TO_LE(size))
492+#define irda_set_code_page(irda,code_page) (*(guint32 *)((guint8 *)(irda)+8)=GUINT32_TO_LE(code_page))
493+#define irda_set_reserved(irda,reserved) (*(guint32 *)((guint8 *)(irda)+12)=GUINT32_TO_LE(reserved))
494+
495+
496+/******************************************************************************
497+* *
498+* ja:PEイメージマクロ *
499+* *
500+******************************************************************************/
501+#define pe_signature(image) (guint32 *)((guint8 *)(image)+idh_get_lfanew(image))
502+#define pe_get_signature(image) GUINT32_FROM_LE(*(guint32 *)((guint8 *)(image)+idh_get_lfanew(image)))
503+#define pe_set_signature(image,signature) (*(guint32 *)((guint8 *)(image)+idh_get_lfanew(image))=GUINT32_TO_LE(signature))
504+
505+
506+#define pe_image_dos_header(image) (ImageDosHeader *)(image)
507+#define pe_idh_get_magic(image) idh_get_magic(pe_image_dos_header(image))
508+#define pe_idh_get_lfanew(image) idh_get_lfanew(pe_image_dos_header(image))
509+#define pe_idh_set_magic(image,magic) idh_set_magic(pe_image_dos_header(image),magic)
510+#define pe_idh_set_lfanew(image,lfanew) idh_set_lfanew(pe_image_dos_header(image),lfanew)
511+
512+
513+#define pe_image_file_header(image) (ImageFileHeader *)((guint8 *)(image)+idh_get_lfanew(image)+4)
514+#define pe_ifh_get_machine(image) ifh_get_machine(pe_image_file_header(image))
515+#define pe_ifh_get_number_of_sections(image) ifh_get_number_of_sections(pe_image_file_header(image))
516+#define pe_ifh_get_time_date_stamp(image) ifh_get_time_date_stamp(pe_image_file_header(image))
517+#define pe_ifh_get_pointer_to_symbol_table(image) ifh_get_pointer_to_symbol_table(pe_image_file_header(image))
518+#define pe_ifh_get_number_of_symbols(image) ifh_get_number_of_symbols(pe_image_file_header(image))
519+#define pe_ifh_get_size_of_optional_header(image) ifh_get_size_of_optional_header(pe_image_file_header(image))
520+#define pe_ifh_get_characteristics(image) ifh_get_characteristics(pe_image_file_header(image))
521+#define pe_ifh_setmachine(imageh,machine) ifh_set_machine(pe_image_file_header(image),machine)
522+#define pe_ifh_set_number_of_sections(image,number_of_sections) ifh_set_number_of_sections(pe_image_file_header(image),number_of_sections)
523+#define pe_ifh_set_time_date_stamp(image,time_date_stamp) ifh_set_time_date_stamp(pe_image_file_header(image),time_date_stamp)
524+#define pe_ifh_set_pointer_to_symbol_table(image,pointer_to_symbol_table) ifh_set_pointer_to_symbol_table(pe_image_file_header(image),pointer_to_symbol_table)
525+#define pe_ifh_set_number_of_symbols(image,number_of_symbols) ifh_set_number_of_symbols(pe_image_file_header(image),number_of_symbols)
526+#define pe_ifh_set_size_of_optional_header(image,size_of_optional_header) ifh_set_size_of_optional_header(pe_image_file_header(image),size_of_optional_header)
527+#define pe_ifh_set_characteristics(image,characteristics) ifh_set_characteristics(pe_image_file_header(image),characteristics)
528+
529+
530+#define pe_image_optional_header(image) (ImageOptionalHeader *)((guint8 *)(image)+idh_get_lfanew(image)+4+IFH_SIZE)
531+#define pe_ioh_get_magic(image) ioh_get_magic(pe_image_optional_header(image))
532+#define pe_ioh_get_major_linker_version(image) ioh_get_major_linker_version(pe_image_optional_header(image))
533+#define pe_ioh_get_minor_linker_version(image) ioh_get_minor_linker_version(pe_image_optional_header(image))
534+#define pe_ioh_get_size_of_code(image) ioh_get_size_of_code(pe_image_optional_header(image))
535+#define pe_ioh_get_size_of_initialized_data(image) ioh_get_size_of_initialized_data(pe_image_optional_header(image))
536+#define pe_ioh_get_size_of_uninitialized_data(image) ioh_get_size_of_uninitialized_data(pe_image_optional_header(image))
537+#define pe_ioh_get_address_of_entry_point(image) ioh_get_address_of_entry_point(pe_image_optional_header(image))
538+#define pe_ioh_get_base_of_code(image) ioh_get_base_of_code(pe_image_optional_header(image))
539+#define pe_ioh_get_base_of_data(image) ioh_get_base_of_data(pe_image_optional_header(image))
540+#define pe_ioh_get_image_base(image) ioh_get_image_base(pe_image_optional_header(image))
541+#define pe_ioh_get_section_alignment(image) ioh_get_section_alignment(pe_image_optional_header(image))
542+#define pe_ioh_get_file_alignment(image) ioh_get_file_alignment(pe_image_optional_header(image))
543+#define pe_ioh_get_major_operating_system_version(image) ioh_get_major_operating_system_version(pe_image_optional_header(image))
544+#define pe_ioh_get_minor_operating_system_version(image) ioh_get_minor_operating_system_version(pe_image_optional_header(image))
545+#define pe_ioh_get_major_image_version(image) ioh_get_major_image_version(pe_image_optional_header(image))
546+#define pe_ioh_get_minor_image_version(image) ioh_get_minor_image_version(pe_image_optional_header(image))
547+#define pe_ioh_get_major_subsystem_version(image) ioh_get_major_subsystem_version(pe_image_optional_header(image))
548+#define pe_ioh_get_minor_subsystem_version(image) ioh_get_minor_subsystem_version(pe_image_optional_header(image))
549+#define pe_ioh_get_win32_version_value(image) ioh_get_win32_version_value(pe_image_optional_header(image))
550+#define pe_ioh_get_size_of_image(image) ioh_get_size_of_image(pe_image_optional_header(image))
551+#define pe_ioh_get_size_of_headers(image) ioh_get_size_of_headers(pe_image_optional_header(image))
552+#define pe_ioh_get_check_sum(image) ioh_get_check_sum(pe_image_optional_header(image))
553+#define pe_ioh_get_subsystem(image) ioh_get_subsystem(pe_image_optional_header(image))
554+#define pe_ioh_get_dll_characteristics(image) ioh_get_dll_characteristics(pe_image_optional_header(image))
555+#define pe_ioh_get_size_of_stack_reserve(image) ioh_get_size_of_stack_reserve(pe_image_optional_header(image))
556+#define pe_ioh_get_size_of_stack_commit(image) ioh_get_size_of_stack_commit(pe_image_optional_header(image))
557+#define pe_ioh_get_size_of_heap_reserve(image) ioh_get_size_of_heap_reserve(pe_image_optional_header(image))
558+#define pe_ioh_get_size_of_heap_commit(image) ioh_get_size_of_heap_commit(pe_image_optional_header(image))
559+#define pe_ioh_get_loader_flags(image) ioh_get_loader_flags(pe_image_optional_header(image))
560+#define pe_ioh_get_number_of_rva_and_sizes(image) ioh_get_number_of_rva_and_sizes(pe_image_optional_header(image))
561+#define pe_ioh_get_data_directory_virtual_address(image,entry) ioh_get_data_directory_virtual_address(pe_image_optional_header(image),entry)
562+#define pe_ioh_get_data_directory_size(image,entry) ioh_get_data_directory_size(pe_image_optional_header(image),entry)
563+#define pe_ioh_set_magic(image,magic) ioh_set_magic(pe_image_optional_header(image),magic)
564+#define pe_ioh_set_major_linker_version(image,major_linker_version) ioh_set_major_linker_version(pe_image_optional_header(image),major_linker_version)
565+#define pe_ioh_set_minor_linker_version(image,minor_linker_version) ioh_set_minor_linker_version(pe_image_optional_header(image),minor_linker_version)
566+#define pe_ioh_set_size_of_code(image,size_of_code) ioh_set_size_of_code(pe_image_optional_header(image),size_of_code)
567+#define pe_ioh_set_size_of_initialized_data(image,size_of_initialized_data) ioh_set_size_of_initialized_data(pe_image_optional_header(image),size_of_initialized_data)
568+#define pe_ioh_set_size_of_uninitialized_data(image,size_of_uninitialized_data) ioh_set_size_of_uninitialized_data(pe_image_optional_header(image),size_of_uninitialized_data)
569+#define pe_ioh_set_address_of_entry_point(image,address_of_entry_point) ioh_set_address_of_entry_point(pe_image_optional_header(image),address_of_entry_point)
570+#define pe_ioh_set_base_of_code(image,base_of_code) ioh_set_base_of_code(pe_image_optional_header(image),base_of_code)
571+#define pe_ioh_set_base_of_data(image,base_of_data) ioh_set_base_of_data(pe_image_optional_header(image),base_of_data)
572+#define pe_ioh_set_image_base(image,image_base) ioh_set_image_base(pe_image_optional_header(image),image_base)
573+#define pe_ioh_set_section_alignment(image,section_alignment) ioh_set_section_alignment(pe_image_optional_header(image),section_alignment)
574+#define pe_ioh_set_file_alignment(image,file_alignment) ioh_set_file_alignment(pe_image_optional_header(image),file_alignment)
575+#define pe_ioh_set_major_operating_system_version(image,major_operating_system_version) ioh_set_major_operating_system_version(pe_image_optional_header(image),major_operating_system_version)
576+#define pe_ioh_set_minor_operating_system_version(image,minor_operating_system_version) ioh_set_minor_operating_system_version(pe_image_optional_header(image),minor_operating_system_version)
577+#define pe_ioh_set_major_image_version(image,major_image_version) ioh_set_major_image_version(pe_image_optional_header(image),major_image_version)
578+#define pe_ioh_set_minor_image_version(image,minor_image_version) ioh_set_minor_image_version(pe_image_optional_header(image),minor_image_version)
579+#define pe_ioh_set_major_subsystem_version(image,major_subsystem_version) ioh_set_major_subsystem_version(pe_image_optional_header(image),major_subsystem_version)
580+#define pe_ioh_set_minor_subsystem_version(image,minor_subsystem_version) ioh_set_minor_subsystem_version(pe_image_optional_header(image),minor_subsystem_version)
581+#define pe_ioh_set_win32_version_value(image,win32_version_value) ioh_set_win32_version_value(pe_image_optional_header(image),win32_version_value)
582+#define pe_ioh_set_size_of_image(image,size_of_image) ioh_set_size_of_image(pe_image_optional_header(image),size_of_image)
583+#define pe_ioh_set_size_of_headers(image,size_of_headers) ioh_set_size_of_headers(pe_image_optional_header(image),size_of_headers)
584+#define pe_ioh_set_check_sum(image,check_sum) ioh_set_check_sum(pe_image_optional_header(image),check_sum)
585+#define pe_ioh_set_subsystem(image,subsystem) ioh_set_subsystem(pe_image_optional_header(image),subsystem)
586+#define pe_ioh_set_dll_characteristics(image,dll_characteristics) ioh_set_dll_characteristics(pe_image_optional_header(image),dll_characteristics)
587+#define pe_ioh_set_size_of_stack_reserve(image,size_of_stack_reserve) ioh_set_size_of_stack_reserve(pe_image_optional_header(image),size_of_stack_reserve)
588+#define pe_ioh_set_size_of_stack_commit(image,size_of_stack_commit) ioh_set_size_of_stack_commit(pe_image_optional_header(image),size_of_stack_commit)
589+#define pe_ioh_set_size_of_heap_reserve(image,size_of_heap_reserve) ioh_set_size_of_heap_reserve(pe_image_optional_header(image),size_of_heap_reserve)
590+#define pe_ioh_set_size_of_heap_commit(image,size_of_heap_commit) ioh_set_size_of_heap_commit(pe_image_optional_header(image),size_of_heap_commit)
591+#define pe_ioh_set_loader_flags(image,loader_flags) ioh_set_loader_flags(pe_image_optional_header(image),loader_flags)
592+#define pe_ioh_set_number_of_rva_and_sizes(image,number_of_rva_and_sizes) ioh_set_number_of_rva_and_sizes(pe_image_optional_header(image),number_of_rva_and_sizes)
593+#define pe_ioh_set_data_directory_virtual_address(image,entry,virtual_address) ioh_set_data_directory_virtual_address(pe_image_optional_header(image),entry,virtual_address)
594+#define pe_ioh_set_data_directory_size(image,entry,virtual_address) ioh_set_data_directory_size(pe_image_optional_header(image),entry,size)
595+
596+
597+#define pe_image_section_header_nth(image,n) (ImageSectionHeader *)((guint8 *)(image)+idh_get_lfanew(image)+4+IFH_SIZE+IOH_SIZE+(n)*ISH_SIZE)
598+#define pe_image_section_header(image) pe_image_section_header_nth(image,0)
599+#define pe_ish_get_name(image,n) ish_get_name(pe_image_section_header_nth(image,n))
600+#define pe_ish_get_physical_address(image,n) ish_get_physical_address(pe_image_section_header_nth(image,n))
601+#define pe_ish_get_virtual_size(image,n) ish_get_virtual_size(pe_image_section_header_nth(image,n))
602+#define pe_ish_get_virtual_address(image,n) ish_get_virtual_address(pe_image_section_header_nth(image,n))
603+#define pe_ish_get_size_of_raw_data(image,n) ish_get_size_of_raw_data(pe_image_section_header_nth(image,n))
604+#define pe_ish_get_pointer_to_raw_data(image,n) ish_get_pointer_to_raw_data(pe_image_section_header_nth(image,n))
605+#define pe_ish_get_pointer_to_relocations(image,n) ish_get_pointer_to_relocations(pe_image_section_header_nth(image,n))
606+#define pe_ish_get_pointer_to_linenumbers(image,n) ish_get_pointer_to_linenumbers(pe_image_section_header_nth(image,n))
607+#define pe_ish_get_number_of_relocations(image,n) ish_get_number_of_relocations(pe_image_section_header_nth(image,n))
608+#define pe_ish_get_number_of_linenumbers(image,n) ish_get_number_of_linenumbers(pe_image_section_header_nth(image,n))
609+#define pe_ish_get_characteristics(image,n) ish_get_characteristics(pe_image_section_header_nth(image,n))
610+#define pe_ish_set_name(image,n,name) ish_get_name(pe_image_section_header_nth(image,n),name)
611+#define pe_ish_set_physical_address(image,n,physical_address) ish_set_physical_address(pe_image_section_header_nth(image,n),physical_address)
612+#define pe_ish_set_virtual_size(image,n,virtual_size) ish_set_virtual_size(pe_image_section_header_nth(image,n),virtual_size)
613+#define pe_ish_set_virtual_address(image,n,virtual_address) ish_set_virtual_address(pe_image_section_header_nth(image,n),virtual_address)
614+#define pe_ish_set_size_of_raw_data(image,n,size_of_raw_data) ish_set_size_of_raw_data(pe_image_section_header_nth(image,n),size_of_raw_data)
615+#define pe_ish_set_pointer_to_raw_data(image,n,pointer_to_raw_data) ish_set_pointer_to_raw_data(pe_image_section_header_nth(image,n),pointer_to_raw_data)
616+#define pe_ish_set_pointer_to_relocations(image,n,pointer_to_relocations) ish_set_pointer_to_relocations(pe_image_section_header_nth(image,n),pointer_to_relocations)
617+#define pe_ish_set_pointer_to_linenumbers(image,n,pointer_to_linenumbers) ish_set_pointer_to_linenumbers(pe_image_section_header_nth(image,n),pointer_to_linenumbers)
618+#define pe_ish_set_number_of_relocations(image,n,number_of_relocations) ish_set_number_of_relocations(pe_image_section_header_nth(image,n),number_of_relocations)
619+#define pe_ish_set_number_of_linenumbers(image,n,number_of_linenumbers) ish_set_number_of_linenumbers(pe_image_section_header_nth(image,n),number_of_linenumbers)
620+#define pe_ish_set_characteristics(image,n,characteristics) ish_set_characteristics(pe_image_section_header_nth(image,n),characteristics)
621+
622+
623+#define pe_image_export_directory(image) (ImageExportDirectory *)((guint8 *)(image)+pe_ioh_get_data_directory_virtual_address(image,PEIMAGE_DIRECTORY_ENTRY_EXPORT))
624+#define pe_ied_get_characteristics(image) ied_get_characteristics(pe_image_export_directory(image))
625+#define pe_ied_get_time_date_stamp(image) ied_get_time_date_stamp(pe_image_export_directory(image))
626+#define pe_ied_get_major_version(image) ied_get_major_version(pe_image_export_directory(image))
627+#define pe_ied_get_minor_version(image) ied_get_minor_version(pe_image_export_directory(image))
628+#define pe_ied_get_name(image) ied_get_name(pe_image_export_directory(image))
629+#define pe_ied_get_base(image) ied_get_base(pe_image_export_directory(image))
630+#define pe_ied_get_number_of_functions(image) ied_get_number_of_functions(pe_image_export_directory(image))
631+#define pe_ied_get_number_of_names(image) ied_get_number_of_names(pe_image_export_directory(image))
632+#define pe_ied_get_address_of_functions(image) ied_get_address_of_functions(pe_image_export_directory(image))
633+#define pe_ied_get_address_of_names(image) ied_get_address_of_names(pe_image_export_directory(image))
634+#define pe_ied_get_address_of_name_ordinals(image) ied_get_address_of_name_ordinals(pe_image_export_directory(image))
635+#define pe_ied_set_characteristics(image,characteristics) ied_set_characteristics(pe_image_export_directory(image),characteristics)
636+#define pe_ied_set_time_date_stamp(image,time_date_stamp) ied_set_time_date_stamp(pe_image_export_directory(image),time_date_stamp)
637+#define pe_ied_set_major_version(image,major_version) ied_set_major_version(pe_image_export_directory(image),major_version)
638+#define pe_ied_set_minor_version(image,minor_version) ied_set_minor_version(pe_image_export_directory(image),minor_version)
639+#define pe_ied_set_name(image,name) ied_set_name(pe_image_export_directory(image),name)
640+#define pe_ied_set_base(image,base) ied_set_base(pe_image_export_directory(image),base)
641+#define pe_ied_set_number_of_functions(image,number_of_functions) ied_set_number_of_functions(pe_image_export_directory(image),number_of_functions)
642+#define pe_ied_set_number_of_names(image,number_of_names) ied_set_number_of_names(pe_image_export_directory(image),number_of_names)
643+#define pe_ied_set_address_of_functions(image,address_of_functions) ied_set_address_of_functions(pe_image_export_directory(image),address_of_functions)
644+#define pe_ied_set_address_of_names(image,address_of_names) ied_set_address_of_names(pe_image_export_directory(image),address_of_names)
645+#define pe_ied_set_address_of_name_ordinals(image,address_of_name_ordinals) ied_set_address_of_name_ordinals(pe_image_export_directory(image),address_of_name_ordinals)
646+
647+
648+#define pe_image_import_descriptor_nth(image,n) (ImageImportDescriptor *)((guint8 *)(image)+pe_ioh_get_data_directory_virtual_address(image,PEIMAGE_DIRECTORY_ENTRY_IMPORT)+(n)*IID_SIZE)
649+#define pe_image_import_descriptor(image) pe_image_import_descriptor_nth(image,0)
650+#define pe_iid_get_characteristics(image,n) iid_get_characteristics(pe_image_import_descriptor_nth(image,n))
651+#define pe_iid_get_original_first_thunk(image,n) iid_get_original_first_thunk(pe_image_import_descriptor_nth(image,n))
652+#define pe_iid_get_time_date_stamp(image,n) iid_get_time_date_stamp(pe_image_import_descriptor_nth(image,n))
653+#define pe_iid_get_forwarder_chain(image,n) iid_get_forwarder_chain(pe_image_import_descriptor_nth(image,n))
654+#define pe_iid_get_name(image,n) iid_get_name(pe_image_import_descriptor_nth(image,n))
655+#define pe_iid_get_first_thunk(image,n) iid_get_first_thunk(pe_image_import_descriptor_nth(image,n))
656+#define pe_iid_set_characteristics(image,n,characteristics) iid_set_characteristics(pe_image_import_descriptor_nth(image,n),characteristics)
657+#define pe_iid_set_original_first_thunk(image,n,original_first_thunk) iid_set_original_first_thunk(pe_image_import_descriptor_nth(image,n),original_first_thunk)
658+#define pe_iid_set_time_date_stamp(image,n,time_date_stamp) iid_set_time_date_stamp(pe_image_import_descriptor_nth(image,n),time_date_stamp)
659+#define pe_iid_set_forwarder_chain(image,n,forwarder_chain) iid_set_forwarder_chain(pe_image_import_descriptor_nth(image,n),forwarder_chain)
660+#define pe_iid_set_name(image,n,name) iid_set_name(pe_image_import_descriptor_nth(image,n),name)
661+#define pe_iid_set_first_thunk(image,n,first_thunk) iid_set_first_thunk(pe_image_import_descriptor_nth(image,n),first_thunk)
662+
663+
664+#define pe_image_base_relocation(image) (ImageBaseRelocation *)((guint8 *)(image)+pe_ioh_get_data_directory_virtual_address(image,PEIMAGE_DIRECTORY_ENTRY_BASERELOC))
665+
666+
667+#define pe_image_resource_directory(image) (ImageResourceDirectory *)((guint8 *)(image)+pe_ioh_get_data_directory_virtual_address(image,PEIMAGE_DIRECTORY_ENTRY_RESOURCE))
668+
669+
670+/******************************************************************************
671+* *
672+* ja:PEイメージ関数 *
673+* *
674+******************************************************************************/
675+/* ja:PEイメージのヘッダサイズを取得する
676+ image,PEイメージ(ヘッダ)
677+ RET,バイト数 */
678+#define peimage_file_header_bytes(image) \
679+ (pe_idh_get_lfanew(image)+sizeof(guint32) \
680+ +sizeof(ImageFileHeader)+sizeof(ImageOptionalHeader) \
681+ +sizeof(ImageSectionHeader)*pe_ifh_get_number_of_sections(image))
682+
683+
684+/* ja:PEイメージを検証する
685+ image,PEイメージ(ヘッダ)
686+ length,バイト数
687+ RET,TRUE:正常終了,FALSE:エラー */
688+gboolean
689+peimage_file_is_valid (const guint8 *image,
690+ const gssize length);
691+
692+
693+/* ja:PEイメージを読み込む
694+ file,ファイル名
695+ RET,PEイメージ,NULL:エラー */
696+guint8 *
697+peimage_file_load (const gchar *file);
698+
699+
700+/* ja:PEイメージを再配置する
701+ image,PEイメージ
702+ delta,差 */
703+void
704+peimage_file_relocate (guint8 *image,
705+ const gint delta);
706+
707+
708+/* ja:PEイメージからAPIを取得する
709+ image,PEイメージ
710+ name,API名
711+ RET,アドレス,NULL:エラー */
712+gconstpointer
713+peimage_file_get_func (const guint8 *image,
714+ const gchar *name);
715+
716+
717+/* ja:PEイメージからAPIを取得する
718+ image,PEイメージ
719+ ordinal,オーディナル値
720+ RET,アドレス,NULL:エラー */
721+gconstpointer
722+peimage_file_get_proc (const guint8 *image,
723+ const guint16 ordinal);
724+
725+
726+/* ja:PEイメージからリソースを取得する
727+ image,PEイメージ
728+ key,リソース
729+ RET,データ,NULL:エラー */
730+gconstpointer
731+peimage_file_get_resource (const guint8 *image,
732+ const gchar *key);
733+
734+
735+/******************************************************************************
736+* *
737+* ja:モジュール関数群 *
738+* *
739+******************************************************************************/
740+typedef struct _PeProcess
741+{
742+ GList *module;
743+} PeProcess;
744+typedef guint8 *(*PeModuleSystem)(PeProcess *, const gchar *, gpointer);
745+typedef gint (*PeModuleRelocate)(PeProcess *, const guint8 *, gpointer);
746+typedef guint32 (*PeModuleImport)(PeProcess *, gconstpointer, gpointer);
747+typedef gboolean (*PeModuleEntry)(PeProcess *, const guint8 *, const gboolean, gpointer);
748+
749+
750+/* ja:既にロードされているPEイメージを取得する
751+ process,プロセス
752+ file,イメージ名
753+ RET,PEイメージ,NULL:ロードされていない */
754+guint8 *
755+peimage_module_get_library (PeProcess *process,
756+ const gchar *file);
757+
758+
759+/* ja:PEイメージをロードする
760+ process,プロセス
761+ file,イメージ名
762+ pemodule_system,システムイメージ用コールバック
763+ pemodule_relocale,再配置用コールバック
764+ pemodule_import,インポート用コールバック
765+ pemodule_entry,エントリーポイント用コールバック
766+ user_data,ユーザデータ
767+ RET,PEイメージ,NULL:エラー */
768+guint8 *
769+peimage_module_load_library (PeProcess *process,
770+ const gchar *file,
771+ PeModuleSystem pemodule_system,
772+ PeModuleRelocate pemodule_relocale,
773+ PeModuleImport pemodule_import,
774+ PeModuleEntry pemodule_entry,
775+ gpointer user_data);
776+
777+
778+/* ja:PEイメージを解放する
779+ process,プロセス
780+ image,PEイメージ
781+ pemodule_entry,エントリーポイント用コールバック
782+ user_data,ユーザデータ
783+ RET,TRUE:正常終了,FALSE:エラー */
784+gboolean
785+peimage_module_free_library (PeProcess *process,
786+ const guint8 *image,
787+ PeModuleEntry pemodule_entry,
788+ gpointer user_data);
789+
790+
791+/* ja:イメージの名前を取得する
792+ process,プロセス
793+ image,イメージ
794+ RET,名前,NULL:エラー */
795+const gchar *
796+peimage_module_get_filename (PeProcess *process,
797+ const guint8 *image);
798+
799+
800+/******************************************************************************
801+* *
802+* ja:ディレクトリ関数群 *
803+* *
804+******************************************************************************/
805+#define PEIMAGE_DIR_WINDOWS 0
806+#define PEIMAGE_DIR_SYSTEM 1
807+#define PEIMAGE_DIR_TEMP 2
808+#define PEIMAGE_DIR_DATA 3
809+#define PEIMAGE_DIR_HOME 4
810+
811+
812+/* ja:ディレクトリを取得する
813+ dir,ディレクトリの種類
814+ RET,ディレクトリ */
815+const gchar *
816+peimage_dir_get_path (const guint dir);
817+
818+
819+/* ja:大文字小文字を区別しないパス名を求める
820+ path,ファイル名
821+ RET,大文字小文字を区別しないパス名 */
822+gchar *
823+peimage_dir_get_case_insensitive (const gchar *path);
824+
825+
826+/* ja:特定のディレクトリのファイルを取得する
827+ file,元のファイル名
828+ dir,ディレクトリの種類
829+ RET,ファイル */
830+gchar *
831+peimage_dir_get_filename (const gchar *file,
832+ const guint dir);
833+
834+
835+
836+G_END_DECLS
837+
838+
839+#endif /* __PEIMAGE_H__ */
--- vmaid/trunk/misc/bitmap.c (revision 314)
+++ vmaid/trunk/misc/bitmap.c (revision 315)
@@ -1,10 +1,10 @@
11 /*
2- avicore
3- copyright (c) 1998-2007 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
2+ bitmap
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
5- This program is free software; you can redistribute it and/or modify
5+ This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
7- the Free Software Foundation; either version 2 of the License, or
7+ the Free Software Foundation, either version 3 of the License, or
88 (at your option) any later version.
99
1010 This program is distributed in the hope that it will be useful,
@@ -13,8 +13,7 @@
1313 GNU General Public License for more details.
1414
1515 You should have received a copy of the GNU General Public License
16- along with this program; if not, write to the Free Software
17- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16+ along with this program. If not, see <http://www.gnu.org/licenses/>.
1817 */
1918 #include "bitmap.h"
2019
@@ -311,7 +310,7 @@
311310 j |= 7;
312311 rgbquad_set (rgb, i, RGB_BLUE, j);
313312 j = (ptl[i].green_min + ptl[i].green_max) / 2 * 8;
314- if (j&8)
313+ if (j & 8)
315314 j |= 7;
316315 rgbquad_set (rgb, i, RGB_GREEN, j);
317316 j = (ptl[i].red_min + ptl[i].red_max) / 2 * 8;
--- vmaid/trunk/misc/Makefile.am (revision 314)
+++ vmaid/trunk/misc/Makefile.am (revision 315)
@@ -7,6 +7,7 @@
77 gnugpl.c gnugpl.h \
88 license.c license.h \
99 misc.c misc.h \
10+ peimage.c peimage.h \
1011 pixbuf.c pixbuf.h \
1112 profile.c profile.h
1213
--- vmaid/trunk/w32loader/oleaut32.c (revision 314)
+++ vmaid/trunk/w32loader/oleaut32.c (revision 315)
@@ -1,10 +1,10 @@
11 /*
22 w32loader
3- copyright (c) 1998-2007 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
5- This program is free software; you can redistribute it and/or modify
5+ This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
7- the Free Software Foundation; either version 2 of the License, or
7+ the Free Software Foundation, either version 3 of the License, or
88 (at your option) any later version.
99
1010 This program is distributed in the hope that it will be useful,
@@ -13,8 +13,7 @@
1313 GNU General Public License for more details.
1414
1515 You should have received a copy of the GNU General Public License
16- along with this program; if not, write to the Free Software
17- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16+ along with this program. If not, see <http://www.gnu.org/licenses/>.
1817 */
1918 #include "oleaut32.h"
2019
@@ -2548,365 +2547,365 @@
25482547 }
25492548
25502549
2551-W32LdrExport oleaut32_exports[] = {
2552-{FALSE, 286, "BSTR_UserFree", BSTR_UserFree},
2553-{FALSE, 284, "BSTR_UserMarshal", BSTR_UserMarshal},
2554-{FALSE, 283, "BSTR_UserSize", BSTR_UserSize},
2555-{FALSE, 285, "BSTR_UserUnmarshal", BSTR_UserUnmarshal},
2556-{FALSE, 414, "BstrFromVector", BstrFromVector},
2557-{FALSE, 171, "ClearCustData", ClearCustData},
2558-{FALSE, 31, "CreateDispTypeInfo", CreateDispTypeInfo},
2559-{FALSE, 202, "CreateErrorInfo", CreateErrorInfo},
2560-{FALSE, 32, "CreateStdDispatch", CreateStdDispatch},
2561-{FALSE, 160, "CreateTypeLib", CreateTypeLib},
2562-{FALSE, 180, "CreateTypeLib2", CreateTypeLib2},
2563-{FALSE, 146, "DispCallFunc", DispCallFunc},
2564-{FALSE, 29, "DispGetIDsOfNames", DispGetIDsOfNames},
2565-{FALSE, 28, "DispGetParam", DispGetParam},
2566-{FALSE, 30, "DispInvoke", DispInvoke},
2567-{FALSE, 410, "DllCanUnloadNow", DllCanUnloadNow},
2568-{FALSE, 1, "DllGetClassObject", DllGetClassObject},
2569-{FALSE, 320, "DllRegisterServer", DllRegisterServer},
2570-{FALSE, 321, "DllUnregisterServer", DllUnregisterServer},
2571-{FALSE, 14, "DosDateTimeToVariantTime", DosDateTimeToVariantTime},
2572-{FALSE, 35, "GetActiveObject", GetActiveObject},
2573-{FALSE, 332, "GetAltMonthNames", GetAltMonthNames},
2574-{FALSE, 200, "GetErrorInfo", GetErrorInfo},
2575-{FALSE, 322, "GetRecordInfoFromGuids", GetRecordInfoFromGuids},
2576-{FALSE, 323, "GetRecordInfoFromTypeInfo", GetRecordInfoFromTypeInfo},
2577-{FALSE, 326, "GetVarConversionLocaleSetting", GetVarConversionLocaleSetting},
2578-{FALSE, 165, "LHashValOfNameSys", LHashValOfNameSysA},
2579-{FALSE, 166, "LHashValOfNameSysA", LHashValOfNameSysA},
2580-{FALSE, 296, "LPSAFEARRAY_Marshal", LPSAFEARRAY_Marshal},
2581-{FALSE, 295, "LPSAFEARRAY_Size", LPSAFEARRAY_Size},
2582-{FALSE, 297, "LPSAFEARRAY_Unmarshal", LPSAFEARRAY_Unmarshal},
2583-{FALSE, 294, "LPSAFEARRAY_UserFree", LPSAFEARRAY_UserFree},
2584-{FALSE, 292, "LPSAFEARRAY_UserMarshal", LPSAFEARRAY_UserMarshal},
2585-{FALSE, 291, "LPSAFEARRAY_UserSize", LPSAFEARRAY_UserSize},
2586-{FALSE, 293, "LPSAFEARRAY_UserUnmarshal", LPSAFEARRAY_UserUnmarshal},
2587-{FALSE, 162, "LoadRegTypeLib", LoadRegTypeLib},
2588-{TRUE, 161, "LoadTypeLib", LoadTypeLib},
2589-{TRUE, 183, "LoadTypeLibEx", LoadTypeLibEx},
2590-{FALSE, 144, "OACreateTypeLib2", OACreateTypeLib2},
2591-{FALSE, 170, "OaBuildVersion", OaBuildVersion},
2592-{FALSE, 420, "OleCreateFontIndirect", OleCreateFontIndirect},
2593-{FALSE, 419, "OleCreatePictureIndirect", OleCreatePictureIndirect},
2594-{FALSE, 417, "OleCreatePropertyFrame", OleCreatePropertyFrame},
2595-{FALSE, 416, "OleCreatePropertyFrameIndirect", OleCreatePropertyFrameIndirect},
2596-{FALSE, 415, "OleIconToCursor", OleIconToCursor},
2597-{FALSE, 418, "OleLoadPicture", OleLoadPicture},
2598-{FALSE, 401, "OleLoadPictureEx", OleLoadPictureEx},
2599-{FALSE, 422, "OleLoadPictureFile", OleLoadPictureFile},
2600-{FALSE, 402, "OleLoadPictureFileEx", OleLoadPictureFileEx},
2601-{FALSE, 424, "OleLoadPicturePath", OleLoadPicturePath},
2602-{FALSE, 423, "OleSavePictureFile", OleSavePictureFile},
2603-{FALSE, 421, "OleTranslateColor", OleTranslateColor},
2604-{FALSE, 164, "QueryPathOfRegTypeLib", QueryPathOfRegTypeLib},
2605-{FALSE, 33, "RegisterActiveObject", RegisterActiveObject},
2606-{TRUE, 163, "RegisterTypeLib", RegisterTypeLib},
2607-{FALSE, 34, "RevokeActiveObject", RevokeActiveObject},
2608-{FALSE, 23, "SafeArrayAccessData", SafeArrayAccessData},
2609-{FALSE, 37, "SafeArrayAllocData", SafeArrayAllocData},
2610-{FALSE, 36, "SafeArrayAllocDescriptor", SafeArrayAllocDescriptor},
2611-{FALSE, 41, "SafeArrayAllocDescriptorEx", SafeArrayAllocDescriptorEx},
2612-{FALSE, 27, "SafeArrayCopy", SafeArrayCopy},
2613-{FALSE, 412, "SafeArrayCopyData", SafeArrayCopyData},
2614-{FALSE, 15, "SafeArrayCreate", SafeArrayCreate},
2615-{FALSE, 42, "SafeArrayCreateEx", SafeArrayCreateEx},
2616-{FALSE, 411, "SafeArrayCreateVector", SafeArrayCreateVector},
2617-{FALSE, 43, "SafeArrayCreateVectorEx", SafeArrayCreateVectorEx},
2618-{FALSE, 16, "SafeArrayDestroy", SafeArrayDestroy},
2619-{FALSE, 39, "SafeArrayDestroyData", SafeArrayDestroyData},
2620-{FALSE, 38, "SafeArrayDestroyDescriptor", SafeArrayDestroyDescriptor},
2621-{FALSE, 17, "SafeArrayGetDim", SafeArrayGetDim},
2622-{FALSE, 25, "SafeArrayGetElement", SafeArrayGetElement},
2623-{FALSE, 18, "SafeArrayGetElemsize", SafeArrayGetElemsize},
2624-{FALSE, 67, "SafeArrayGetIID", SafeArrayGetIID},
2625-{FALSE, 20, "SafeArrayGetLBound", SafeArrayGetLBound},
2626-{FALSE, 45, "SafeArrayGetRecordInfo", SafeArrayGetRecordInfo},
2627-{FALSE, 19, "SafeArrayGetUBound", SafeArrayGetUBound},
2628-{FALSE, 77, "SafeArrayGetVartype", SafeArrayGetVartype},
2629-{FALSE, 21, "SafeArrayLock", SafeArrayLock},
2630-{FALSE, 148, "SafeArrayPtrOfIndex", SafeArrayPtrOfIndex},
2631-{FALSE, 26, "SafeArrayPutElement", SafeArrayPutElement},
2632-{FALSE, 40, "SafeArrayRedim", SafeArrayRedim},
2633-{FALSE, 57, "SafeArraySetIID", SafeArraySetIID},
2634-{FALSE, 44, "SafeArraySetRecordInfo", SafeArraySetRecordInfo},
2635-{FALSE, 24, "SafeArrayUnaccessData", SafeArrayUnaccessData},
2636-{FALSE, 22, "SafeArrayUnlock", SafeArrayUnlock},
2637-{FALSE, 201, "SetErrorInfo", SetErrorInfo},
2638-{FALSE, 325, "SetVarConversionLocaleSetting", SetVarConversionLocaleSetting},
2639-{FALSE, 2, "SysAllocString", SysAllocString},
2640-{FALSE, 150, "SysAllocStringByteLen", SysAllocStringByteLen},
2641-{FALSE, 4, "SysAllocStringLen", SysAllocStringLen},
2642-{FALSE, 6, "SysFreeString", SysFreeString},
2643-{FALSE, 3, "SysReAllocString", SysReAllocString},
2644-{FALSE, 5, "SysReAllocStringLen", SysReAllocStringLen},
2645-{FALSE, 149, "SysStringByteLen", SysStringByteLen},
2646-{FALSE, 7, "SysStringLen", SysStringLen},
2647-{FALSE, 184, "SystemTimeToVariantTime", SystemTimeToVariantTime},
2648-{FALSE, 186, "UnRegisterTypeLib", UnRegisterTypeLib},
2649-{FALSE, 386, "UserBSTR_free_inst", UserBSTR_free_inst},
2650-{FALSE, 387, "UserBSTR_free_local", UserBSTR_free_local},
2651-{FALSE, 384, "UserBSTR_from_local", UserBSTR_from_local},
2652-{FALSE, 385, "UserBSTR_to_local", UserBSTR_to_local},
2653-{FALSE, 394, "UserEXCEPINFO_free_inst", UserEXCEPINFO_free_inst},
2654-{FALSE, 395, "UserEXCEPINFO_free_local", UserEXCEPINFO_free_local},
2655-{FALSE, 392, "UserEXCEPINFO_from_local", UserEXCEPINFO_from_local},
2656-{FALSE, 393, "UserEXCEPINFO_to_local", UserEXCEPINFO_to_local},
2657-{FALSE, 382, "UserHWND_free_inst", UserHWND_free_inst},
2658-{FALSE, 383, "UserHWND_free_local", UserHWND_free_local},
2659-{FALSE, 380, "UserHWND_from_local", UserHWND_from_local},
2660-{FALSE, 381, "UserHWND_to_local", UserHWND_to_local},
2661-{FALSE, 398, "UserMSG_free_inst", UserMSG_free_inst},
2662-{FALSE, 399, "UserMSG_free_local", UserMSG_free_local},
2663-{FALSE, 396, "UserMSG_from_local", UserMSG_from_local},
2664-{FALSE, 397, "UserMSG_to_local", UserMSG_to_local},
2665-{FALSE, 390, "UserVARIANT_free_inst", UserVARIANT_free_inst},
2666-{FALSE, 391, "UserVARIANT_free_local", UserVARIANT_free_local},
2667-{FALSE, 388, "UserVARIANT_from_local", UserVARIANT_from_local},
2668-{FALSE, 389, "UserVARIANT_to_local", UserVARIANT_to_local},
2669-{FALSE, 290, "VARIANT_UserFree", VARIANT_UserFree},
2670-{FALSE, 288, "VARIANT_UserMarshal", VARIANT_UserMarshal},
2671-{FALSE, 287, "VARIANT_UserSize", VARIANT_UserSize},
2672-{FALSE, 289, "VARIANT_UserUnmarshal", VARIANT_UserUnmarshal},
2673-{FALSE, 168, "VarAbs", VarAbs},
2674-{FALSE, 141, "VarAdd", VarAdd},
2675-{FALSE, 142, "VarAnd", VarAnd},
2676-{FALSE, 124, "VarBoolFromCy", VarBoolFromCy},
2677-{FALSE, 123, "VarBoolFromDate", VarBoolFromDate},
2678-{FALSE, 236, "VarBoolFromDec", VarBoolFromDec},
2679-{FALSE, 126, "VarBoolFromDisp", VarBoolFromDisp},
2680-{FALSE, 233, "VarBoolFromI1", VarBoolFromI1},
2681-{FALSE, 119, "VarBoolFromI2", VarBoolFromI2},
2682-{FALSE, 120, "VarBoolFromI4", VarBoolFromI4},
2683-{FALSE, 121, "VarBoolFromR4", VarBoolFromR4},
2684-{FALSE, 122, "VarBoolFromR8", VarBoolFromR8},
2685-{FALSE, 125, "VarBoolFromStr", VarBoolFromStr},
2686-{FALSE, 118, "VarBoolFromUI1", VarBoolFromUI1},
2687-{FALSE, 234, "VarBoolFromUI2", VarBoolFromUI2},
2688-{FALSE, 235, "VarBoolFromUI4", VarBoolFromUI4},
2689-{FALSE, 313, "VarBstrCat", VarBstrCat},
2690-{FALSE, 314, "VarBstrCmp", VarBstrCmp},
2691-{FALSE, 116, "VarBstrFromBool", VarBstrFromBool},
2692-{FALSE, 113, "VarBstrFromCy", VarBstrFromCy},
2693-{FALSE, 114, "VarBstrFromDate", VarBstrFromDate},
2694-{FALSE, 232, "VarBstrFromDec", VarBstrFromDec},
2695-{FALSE, 115, "VarBstrFromDisp", VarBstrFromDisp},
2696-{FALSE, 229, "VarBstrFromI1", VarBstrFromI1},
2697-{FALSE, 109, "VarBstrFromI2", VarBstrFromI2},
2698-{FALSE, 110, "VarBstrFromI4", VarBstrFromI4},
2699-{FALSE, 111, "VarBstrFromR4", VarBstrFromR4},
2700-{FALSE, 112, "VarBstrFromR8", VarBstrFromR8},
2701-{FALSE, 108, "VarBstrFromUI1", VarBstrFromUI1},
2702-{FALSE, 230, "VarBstrFromUI2", VarBstrFromUI2},
2703-{FALSE, 231, "VarBstrFromUI4", VarBstrFromUI4},
2704-{FALSE, 318, "VarCat", VarCat},
2705-{FALSE, 176, "VarCmp", VarCmp},
2706-{FALSE, 306, "VarCyAbs", VarCyAbs},
2707-{FALSE, 299, "VarCyAdd", VarCyAdd},
2708-{FALSE, 311, "VarCyCmp", VarCyCmp},
2709-{FALSE, 312, "VarCyCmpR8", VarCyCmpR8},
2710-{FALSE, 307, "VarCyFix", VarCyFix},
2711-{FALSE, 106, "VarCyFromBool", VarCyFromBool},
2712-{FALSE, 103, "VarCyFromDate", VarCyFromDate},
2713-{FALSE, 228, "VarCyFromDec", VarCyFromDec},
2714-{FALSE, 105, "VarCyFromDisp", VarCyFromDisp},
2715-{FALSE, 225, "VarCyFromI1", VarCyFromI1},
2716-{FALSE, 99, "VarCyFromI2", VarCyFromI2},
2717-{FALSE, 100, "VarCyFromI4", VarCyFromI4},
2718-{FALSE, 101, "VarCyFromR4", VarCyFromR4},
2719-{FALSE, 102, "VarCyFromR8", VarCyFromR8},
2720-{FALSE, 104, "VarCyFromStr", VarCyFromStr},
2721-{FALSE, 98, "VarCyFromUI1", VarCyFromUI1},
2722-{FALSE, 226, "VarCyFromUI2", VarCyFromUI2},
2723-{FALSE, 227, "VarCyFromUI4", VarCyFromUI4},
2724-{FALSE, 308, "VarCyInt", VarCyInt},
2725-{FALSE, 303, "VarCyMul", VarCyMul},
2726-{FALSE, 304, "VarCyMulI4", VarCyMulI4},
2727-{FALSE, 309, "VarCyNeg", VarCyNeg},
2728-{FALSE, 310, "VarCyRound", VarCyRound},
2729-{FALSE, 305, "VarCySub", VarCySub},
2730-{FALSE, 96, "VarDateFromBool", VarDateFromBool},
2731-{FALSE, 93, "VarDateFromCy", VarDateFromCy},
2732-{FALSE, 224, "VarDateFromDec", VarDateFromDec},
2733-{FALSE, 95, "VarDateFromDisp", VarDateFromDisp},
2734-{FALSE, 221, "VarDateFromI1", VarDateFromI1},
2735-{FALSE, 89, "VarDateFromI2", VarDateFromI2},
2736-{FALSE, 90, "VarDateFromI4", VarDateFromI4},
2737-{FALSE, 91, "VarDateFromR4", VarDateFromR4},
2738-{FALSE, 92, "VarDateFromR8", VarDateFromR8},
2739-{FALSE, 94, "VarDateFromStr", VarDateFromStr},
2740-{FALSE, 88, "VarDateFromUI1", VarDateFromUI1},
2741-{FALSE, 222, "VarDateFromUI2", VarDateFromUI2},
2742-{FALSE, 223, "VarDateFromUI4", VarDateFromUI4},
2743-{FALSE, 330, "VarDateFromUdate", VarDateFromUdate},
2744-{FALSE, 319, "VarDateFromUdateEx", VarDateFromUdateEx},
2745-{FALSE, 182, "VarDecAbs", VarDecAbs},
2746-{FALSE, 177, "VarDecAdd", VarDecAdd},
2747-{FALSE, 204, "VarDecCmp", VarDecCmp},
2748-{FALSE, 298, "VarDecCmpR8", VarDecCmpR8},
2749-{FALSE, 178, "VarDecDiv", VarDecDiv},
2750-{FALSE, 187, "VarDecFix", VarDecFix},
2751-{FALSE, 199, "VarDecFromBool", VarDecFromBool},
2752-{FALSE, 196, "VarDecFromCy", VarDecFromCy},
2753-{FALSE, 195, "VarDecFromDate", VarDecFromDate},
2754-{FALSE, 198, "VarDecFromDisp", VarDecFromDisp},
2755-{FALSE, 241, "VarDecFromI1", VarDecFromI1},
2756-{FALSE, 191, "VarDecFromI2", VarDecFromI2},
2757-{FALSE, 192, "VarDecFromI4", VarDecFromI4},
2758-{FALSE, 193, "VarDecFromR4", VarDecFromR4},
2759-{FALSE, 194, "VarDecFromR8", VarDecFromR8},
2760-{FALSE, 197, "VarDecFromStr", VarDecFromStr},
2761-{FALSE, 190, "VarDecFromUI1", VarDecFromUI1},
2762-{FALSE, 242, "VarDecFromUI2", VarDecFromUI2},
2763-{FALSE, 243, "VarDecFromUI4", VarDecFromUI4},
2764-{FALSE, 188, "VarDecInt", VarDecInt},
2765-{FALSE, 179, "VarDecMul", VarDecMul},
2766-{FALSE, 189, "VarDecNeg", VarDecNeg},
2767-{FALSE, 203, "VarDecRound", VarDecRound},
2768-{FALSE, 181, "VarDecSub", VarDecSub},
2769-{FALSE, 143, "VarDiv", VarDiv},
2770-{FALSE, 152, "VarEqv", VarEqv},
2771-{FALSE, 169, "VarFix", VarFix},
2772-{FALSE, 87, "VarFormat", VarFormat},
2773-{FALSE, 127, "VarFormatCurrency", VarFormatCurrency},
2774-{FALSE, 97, "VarFormatDateTime", VarFormatDateTime},
2775-{FALSE, 139, "VarFormatFromTokens", VarFormatFromTokens},
2776-{FALSE, 107, "VarFormatNumber", VarFormatNumber},
2777-{FALSE, 117, "VarFormatPercent", VarFormatPercent},
2778-{FALSE, 253, "VarI1FromBool", VarI1FromBool},
2779-{FALSE, 250, "VarI1FromCy", VarI1FromCy},
2780-{FALSE, 249, "VarI1FromDate", VarI1FromDate},
2781-{FALSE, 256, "VarI1FromDec", VarI1FromDec},
2782-{FALSE, 252, "VarI1FromDisp", VarI1FromDisp},
2783-{FALSE, 245, "VarI1FromI2", VarI1FromI2},
2784-{FALSE, 246, "VarI1FromI4", VarI1FromI4},
2785-{FALSE, 247, "VarI1FromR4", VarI1FromR4},
2786-{FALSE, 248, "VarI1FromR8", VarI1FromR8},
2787-{FALSE, 251, "VarI1FromStr", VarI1FromStr},
2788-{FALSE, 244, "VarI1FromUI1", VarI1FromUI1},
2789-{FALSE, 254, "VarI1FromUI2", VarI1FromUI2},
2790-{FALSE, 255, "VarI1FromUI4", VarI1FromUI4},
2791-{FALSE, 56, "VarI2FromBool", VarI2FromBool},
2792-{FALSE, 52, "VarI2FromCy", VarI2FromCy},
2793-{FALSE, 53, "VarI2FromDate", VarI2FromDate},
2794-{FALSE, 208, "VarI2FromDec", VarI2FromDec},
2795-{FALSE, 55, "VarI2FromDisp", VarI2FromDisp},
2796-{FALSE, 205, "VarI2FromI1", VarI2FromI1},
2797-{FALSE, 49, "VarI2FromI4", VarI2FromI4},
2798-{FALSE, 50, "VarI2FromR4", VarI2FromR4},
2799-{FALSE, 51, "VarI2FromR8", VarI2FromR8},
2800-{FALSE, 54, "VarI2FromStr", VarI2FromStr},
2801-{FALSE, 48, "VarI2FromUI1", VarI2FromUI1},
2802-{FALSE, 206, "VarI2FromUI2", VarI2FromUI2},
2803-{FALSE, 207, "VarI2FromUI4", VarI2FromUI4},
2804-{FALSE, 66, "VarI4FromBool", VarI4FromBool},
2805-{FALSE, 62, "VarI4FromCy", VarI4FromCy},
2806-{FALSE, 63, "VarI4FromDate", VarI4FromDate},
2807-{FALSE, 212, "VarI4FromDec", VarI4FromDec},
2808-{FALSE, 65, "VarI4FromDisp", VarI4FromDisp},
2809-{FALSE, 209, "VarI4FromI1", VarI4FromI1},
2810-{FALSE, 59, "VarI4FromI2", VarI4FromI2},
2811-{FALSE, 60, "VarI4FromR4", VarI4FromR4},
2812-{FALSE, 61, "VarI4FromR8", VarI4FromR8},
2813-{FALSE, 64, "VarI4FromStr", VarI4FromStr},
2814-{FALSE, 58, "VarI4FromUI1", VarI4FromUI1},
2815-{FALSE, 210, "VarI4FromUI2", VarI4FromUI2},
2816-{FALSE, 211, "VarI4FromUI4", VarI4FromUI4},
2817-{FALSE, 153, "VarIdiv", VarIdiv},
2818-{FALSE, 154, "VarImp", VarImp},
2819-{FALSE, 172, "VarInt", VarInt},
2820-{FALSE, 155, "VarMod", VarMod},
2821-{FALSE, 129, "VarMonthName", VarMonthName},
2822-{FALSE, 156, "VarMul", VarMul},
2823-{FALSE, 173, "VarNeg", VarNeg},
2824-{FALSE, 174, "VarNot", VarNot},
2825-{FALSE, 47, "VarNumFromParseNum", VarNumFromParseNum},
2826-{FALSE, 157, "VarOr", VarOr},
2827-{FALSE, 46, "VarParseNumFromStr", VarParseNumFromStr},
2828-{FALSE, 158, "VarPow", VarPow},
2829-{FALSE, 316, "VarR4CmpR8", VarR4CmpR8},
2830-{FALSE, 76, "VarR4FromBool", VarR4FromBool},
2831-{FALSE, 72, "VarR4FromCy", VarR4FromCy},
2832-{FALSE, 73, "VarR4FromDate", VarR4FromDate},
2833-{FALSE, 216, "VarR4FromDec", VarR4FromDec},
2834-{FALSE, 75, "VarR4FromDisp", VarR4FromDisp},
2835-{FALSE, 213, "VarR4FromI1", VarR4FromI1},
2836-{FALSE, 69, "VarR4FromI2", VarR4FromI2},
2837-{FALSE, 70, "VarR4FromI4", VarR4FromI4},
2838-{FALSE, 71, "VarR4FromR8", VarR4FromR8},
2839-{FALSE, 74, "VarR4FromStr", VarR4FromStr},
2840-{FALSE, 68, "VarR4FromUI1", VarR4FromUI1},
2841-{FALSE, 214, "VarR4FromUI2", VarR4FromUI2},
2842-{FALSE, 215, "VarR4FromUI4", VarR4FromUI4},
2843-{FALSE, 86, "VarR8FromBool", VarR8FromBool},
2844-{FALSE, 82, "VarR8FromCy", VarR8FromCy},
2845-{FALSE, 83, "VarR8FromDate", VarR8FromDate},
2846-{FALSE, 220, "VarR8FromDec", VarR8FromDec},
2847-{FALSE, 85, "VarR8FromDisp", VarR8FromDisp},
2848-{FALSE, 217, "VarR8FromI1", VarR8FromI1},
2849-{FALSE, 79, "VarR8FromI2", VarR8FromI2},
2850-{FALSE, 80, "VarR8FromI4", VarR8FromI4},
2851-{FALSE, 81, "VarR8FromR4", VarR8FromR4},
2852-{FALSE, 84, "VarR8FromStr", VarR8FromStr},
2853-{FALSE, 78, "VarR8FromUI1", VarR8FromUI1},
2854-{FALSE, 218, "VarR8FromUI2", VarR8FromUI2},
2855-{FALSE, 219, "VarR8FromUI4", VarR8FromUI4},
2856-{FALSE, 315, "VarR8Pow", VarR8Pow},
2857-{FALSE, 317, "VarR8Round", VarR8Round},
2858-{FALSE, 175, "VarRound", VarRound},
2859-{FALSE, 159, "VarSub", VarSub},
2860-{FALSE, 140, "VarTokenizeFormatString", VarTokenizeFormatString},
2861-{FALSE, 138, "VarUI1FromBool", VarUI1FromBool},
2862-{FALSE, 134, "VarUI1FromCy", VarUI1FromCy},
2863-{FALSE, 135, "VarUI1FromDate", VarUI1FromDate},
2864-{FALSE, 240, "VarUI1FromDec", VarUI1FromDec},
2865-{FALSE, 137, "VarUI1FromDisp", VarUI1FromDisp},
2866-{FALSE, 237, "VarUI1FromI1", VarUI1FromI1},
2867-{FALSE, 130, "VarUI1FromI2", VarUI1FromI2},
2868-{FALSE, 131, "VarUI1FromI4", VarUI1FromI4},
2869-{FALSE, 132, "VarUI1FromR4", VarUI1FromR4},
2870-{FALSE, 133, "VarUI1FromR8", VarUI1FromR8},
2871-{FALSE, 136, "VarUI1FromStr", VarUI1FromStr},
2872-{FALSE, 238, "VarUI1FromUI2", VarUI1FromUI2},
2873-{FALSE, 239, "VarUI1FromUI4", VarUI1FromUI4},
2874-{FALSE, 266, "VarUI2FromBool", VarUI2FromBool},
2875-{FALSE, 263, "VarUI2FromCy", VarUI2FromCy},
2876-{FALSE, 262, "VarUI2FromDate", VarUI2FromDate},
2877-{FALSE, 269, "VarUI2FromDec", VarUI2FromDec},
2878-{FALSE, 265, "VarUI2FromDisp", VarUI2FromDisp},
2879-{FALSE, 267, "VarUI2FromI1", VarUI2FromI1},
2880-{FALSE, 258, "VarUI2FromI2", VarUI2FromI2},
2881-{FALSE, 259, "VarUI2FromI4", VarUI2FromI4},
2882-{FALSE, 260, "VarUI2FromR4", VarUI2FromR4},
2883-{FALSE, 261, "VarUI2FromR8", VarUI2FromR8},
2884-{FALSE, 264, "VarUI2FromStr", VarUI2FromStr},
2885-{FALSE, 257, "VarUI2FromUI1", VarUI2FromUI1},
2886-{FALSE, 268, "VarUI2FromUI4", VarUI2FromUI4},
2887-{FALSE, 279, "VarUI4FromBool", VarUI4FromBool},
2888-{FALSE, 276, "VarUI4FromCy", VarUI4FromCy},
2889-{FALSE, 275, "VarUI4FromDate", VarUI4FromDate},
2890-{FALSE, 282, "VarUI4FromDec", VarUI4FromDec},
2891-{FALSE, 278, "VarUI4FromDisp", VarUI4FromDisp},
2892-{FALSE, 280, "VarUI4FromI1", VarUI4FromI1},
2893-{FALSE, 271, "VarUI4FromI2", VarUI4FromI2},
2894-{FALSE, 272, "VarUI4FromI4", VarUI4FromI4},
2895-{FALSE, 273, "VarUI4FromR4", VarUI4FromR4},
2896-{FALSE, 274, "VarUI4FromR8", VarUI4FromR8},
2897-{FALSE, 277, "VarUI4FromStr", VarUI4FromStr},
2898-{FALSE, 270, "VarUI4FromUI1", VarUI4FromUI1},
2899-{FALSE, 281, "VarUI4FromUI2", VarUI4FromUI2},
2900-{FALSE, 331, "VarUdateFromDate", VarUdateFromDate},
2901-{FALSE, 128, "VarWeekdayName", VarWeekdayName},
2902-{FALSE, 167, "VarXor", VarXor},
2903-{FALSE, 12, "VariantChangeType", VariantChangeType},
2904-{FALSE, 147, "VariantChangeTypeEx", VariantChangeTypeEx},
2905-{FALSE, 9, "VariantClear", VariantClear},
2906-{FALSE, 10, "VariantCopy", VariantCopy},
2907-{FALSE, 11, "VariantCopyInd", VariantCopyInd},
2908-{FALSE, 8, "VariantInit", VariantInit},
2909-{FALSE, 13, "VariantTimeToDosDateTime", VariantTimeToDosDateTime},
2910-{FALSE, 185, "VariantTimeToSystemTime", VariantTimeToSystemTime},
2911-{FALSE, 413, "VectorFromBstr", VectorFromBstr},
2912-{FALSE, 0, NULL, NULL}};
2550+W32LdrExport w32ldr_oleaut32_exports[] = {
2551+{-1, 286, "BSTR_UserFree", BSTR_UserFree},
2552+{-1, 284, "BSTR_UserMarshal", BSTR_UserMarshal},
2553+{-1, 283, "BSTR_UserSize", BSTR_UserSize},
2554+{-1, 285, "BSTR_UserUnmarshal", BSTR_UserUnmarshal},
2555+{-1, 414, "BstrFromVector", BstrFromVector},
2556+{-1, 171, "ClearCustData", ClearCustData},
2557+{-1, 31, "CreateDispTypeInfo", CreateDispTypeInfo},
2558+{-1, 202, "CreateErrorInfo", CreateErrorInfo},
2559+{-1, 32, "CreateStdDispatch", CreateStdDispatch},
2560+{-1, 160, "CreateTypeLib", CreateTypeLib},
2561+{-1, 180, "CreateTypeLib2", CreateTypeLib2},
2562+{-1, 146, "DispCallFunc", DispCallFunc},
2563+{-1, 29, "DispGetIDsOfNames", DispGetIDsOfNames},
2564+{-1, 28, "DispGetParam", DispGetParam},
2565+{-1, 30, "DispInvoke", DispInvoke},
2566+{-1, 410, "DllCanUnloadNow", DllCanUnloadNow},
2567+{-1, 1, "DllGetClassObject", DllGetClassObject},
2568+{-1, 320, "DllRegisterServer", DllRegisterServer},
2569+{-1, 321, "DllUnregisterServer", DllUnregisterServer},
2570+{-1, 14, "DosDateTimeToVariantTime", DosDateTimeToVariantTime},
2571+{-1, 35, "GetActiveObject", GetActiveObject},
2572+{-1, 332, "GetAltMonthNames", GetAltMonthNames},
2573+{-1, 200, "GetErrorInfo", GetErrorInfo},
2574+{-1, 322, "GetRecordInfoFromGuids", GetRecordInfoFromGuids},
2575+{-1, 323, "GetRecordInfoFromTypeInfo", GetRecordInfoFromTypeInfo},
2576+{-1, 326, "GetVarConversionLocaleSetting", GetVarConversionLocaleSetting},
2577+{-1, 165, "LHashValOfNameSys", LHashValOfNameSysA},
2578+{-1, 166, "LHashValOfNameSysA", LHashValOfNameSysA},
2579+{-1, 296, "LPSAFEARRAY_Marshal", LPSAFEARRAY_Marshal},
2580+{-1, 295, "LPSAFEARRAY_Size", LPSAFEARRAY_Size},
2581+{-1, 297, "LPSAFEARRAY_Unmarshal", LPSAFEARRAY_Unmarshal},
2582+{-1, 294, "LPSAFEARRAY_UserFree", LPSAFEARRAY_UserFree},
2583+{-1, 292, "LPSAFEARRAY_UserMarshal", LPSAFEARRAY_UserMarshal},
2584+{-1, 291, "LPSAFEARRAY_UserSize", LPSAFEARRAY_UserSize},
2585+{-1, 293, "LPSAFEARRAY_UserUnmarshal", LPSAFEARRAY_UserUnmarshal},
2586+{-1, 162, "LoadRegTypeLib", LoadRegTypeLib},
2587+{ 0, 161, "LoadTypeLib", LoadTypeLib},
2588+{ 0, 183, "LoadTypeLibEx", LoadTypeLibEx},
2589+{-1, 144, "OACreateTypeLib2", OACreateTypeLib2},
2590+{-1, 170, "OaBuildVersion", OaBuildVersion},
2591+{-1, 420, "OleCreateFontIndirect", OleCreateFontIndirect},
2592+{-1, 419, "OleCreatePictureIndirect", OleCreatePictureIndirect},
2593+{-1, 417, "OleCreatePropertyFrame", OleCreatePropertyFrame},
2594+{-1, 416, "OleCreatePropertyFrameIndirect", OleCreatePropertyFrameIndirect},
2595+{-1, 415, "OleIconToCursor", OleIconToCursor},
2596+{-1, 418, "OleLoadPicture", OleLoadPicture},
2597+{-1, 401, "OleLoadPictureEx", OleLoadPictureEx},
2598+{-1, 422, "OleLoadPictureFile", OleLoadPictureFile},
2599+{-1, 402, "OleLoadPictureFileEx", OleLoadPictureFileEx},
2600+{-1, 424, "OleLoadPicturePath", OleLoadPicturePath},
2601+{-1, 423, "OleSavePictureFile", OleSavePictureFile},
2602+{-1, 421, "OleTranslateColor", OleTranslateColor},
2603+{-1, 164, "QueryPathOfRegTypeLib", QueryPathOfRegTypeLib},
2604+{-1, 33, "RegisterActiveObject", RegisterActiveObject},
2605+{ 0, 163, "RegisterTypeLib", RegisterTypeLib},
2606+{-1, 34, "RevokeActiveObject", RevokeActiveObject},
2607+{-1, 23, "SafeArrayAccessData", SafeArrayAccessData},
2608+{-1, 37, "SafeArrayAllocData", SafeArrayAllocData},
2609+{-1, 36, "SafeArrayAllocDescriptor", SafeArrayAllocDescriptor},
2610+{-1, 41, "SafeArrayAllocDescriptorEx", SafeArrayAllocDescriptorEx},
2611+{-1, 27, "SafeArrayCopy", SafeArrayCopy},
2612+{-1, 412, "SafeArrayCopyData", SafeArrayCopyData},
2613+{-1, 15, "SafeArrayCreate", SafeArrayCreate},
2614+{-1, 42, "SafeArrayCreateEx", SafeArrayCreateEx},
2615+{-1, 411, "SafeArrayCreateVector", SafeArrayCreateVector},
2616+{-1, 43, "SafeArrayCreateVectorEx", SafeArrayCreateVectorEx},
2617+{-1, 16, "SafeArrayDestroy", SafeArrayDestroy},
2618+{-1, 39, "SafeArrayDestroyData", SafeArrayDestroyData},
2619+{-1, 38, "SafeArrayDestroyDescriptor", SafeArrayDestroyDescriptor},
2620+{-1, 17, "SafeArrayGetDim", SafeArrayGetDim},
2621+{-1, 25, "SafeArrayGetElement", SafeArrayGetElement},
2622+{-1, 18, "SafeArrayGetElemsize", SafeArrayGetElemsize},
2623+{-1, 67, "SafeArrayGetIID", SafeArrayGetIID},
2624+{-1, 20, "SafeArrayGetLBound", SafeArrayGetLBound},
2625+{-1, 45, "SafeArrayGetRecordInfo", SafeArrayGetRecordInfo},
2626+{-1, 19, "SafeArrayGetUBound", SafeArrayGetUBound},
2627+{-1, 77, "SafeArrayGetVartype", SafeArrayGetVartype},
2628+{-1, 21, "SafeArrayLock", SafeArrayLock},
2629+{-1, 148, "SafeArrayPtrOfIndex", SafeArrayPtrOfIndex},
2630+{-1, 26, "SafeArrayPutElement", SafeArrayPutElement},
2631+{-1, 40, "SafeArrayRedim", SafeArrayRedim},
2632+{-1, 57, "SafeArraySetIID", SafeArraySetIID},
2633+{-1, 44, "SafeArraySetRecordInfo", SafeArraySetRecordInfo},
2634+{-1, 24, "SafeArrayUnaccessData", SafeArrayUnaccessData},
2635+{-1, 22, "SafeArrayUnlock", SafeArrayUnlock},
2636+{-1, 201, "SetErrorInfo", SetErrorInfo},
2637+{-1, 325, "SetVarConversionLocaleSetting", SetVarConversionLocaleSetting},
2638+{-1, 2, "SysAllocString", SysAllocString},
2639+{-1, 150, "SysAllocStringByteLen", SysAllocStringByteLen},
2640+{-1, 4, "SysAllocStringLen", SysAllocStringLen},
2641+{-1, 6, "SysFreeString", SysFreeString},
2642+{-1, 3, "SysReAllocString", SysReAllocString},
2643+{-1, 5, "SysReAllocStringLen", SysReAllocStringLen},
2644+{-1, 149, "SysStringByteLen", SysStringByteLen},
2645+{-1, 7, "SysStringLen", SysStringLen},
2646+{-1, 184, "SystemTimeToVariantTime", SystemTimeToVariantTime},
2647+{-1, 186, "UnRegisterTypeLib", UnRegisterTypeLib},
2648+{-1, 386, "UserBSTR_free_inst", UserBSTR_free_inst},
2649+{-1, 387, "UserBSTR_free_local", UserBSTR_free_local},
2650+{-1, 384, "UserBSTR_from_local", UserBSTR_from_local},
2651+{-1, 385, "UserBSTR_to_local", UserBSTR_to_local},
2652+{-1, 394, "UserEXCEPINFO_free_inst", UserEXCEPINFO_free_inst},
2653+{-1, 395, "UserEXCEPINFO_free_local", UserEXCEPINFO_free_local},
2654+{-1, 392, "UserEXCEPINFO_from_local", UserEXCEPINFO_from_local},
2655+{-1, 393, "UserEXCEPINFO_to_local", UserEXCEPINFO_to_local},
2656+{-1, 382, "UserHWND_free_inst", UserHWND_free_inst},
2657+{-1, 383, "UserHWND_free_local", UserHWND_free_local},
2658+{-1, 380, "UserHWND_from_local", UserHWND_from_local},
2659+{-1, 381, "UserHWND_to_local", UserHWND_to_local},
2660+{-1, 398, "UserMSG_free_inst", UserMSG_free_inst},
2661+{-1, 399, "UserMSG_free_local", UserMSG_free_local},
2662+{-1, 396, "UserMSG_from_local", UserMSG_from_local},
2663+{-1, 397, "UserMSG_to_local", UserMSG_to_local},
2664+{-1, 390, "UserVARIANT_free_inst", UserVARIANT_free_inst},
2665+{-1, 391, "UserVARIANT_free_local", UserVARIANT_free_local},
2666+{-1, 388, "UserVARIANT_from_local", UserVARIANT_from_local},
2667+{-1, 389, "UserVARIANT_to_local", UserVARIANT_to_local},
2668+{-1, 290, "VARIANT_UserFree", VARIANT_UserFree},
2669+{-1, 288, "VARIANT_UserMarshal", VARIANT_UserMarshal},
2670+{-1, 287, "VARIANT_UserSize", VARIANT_UserSize},
2671+{-1, 289, "VARIANT_UserUnmarshal", VARIANT_UserUnmarshal},
2672+{-1, 168, "VarAbs", VarAbs},
2673+{-1, 141, "VarAdd", VarAdd},
2674+{-1, 142, "VarAnd", VarAnd},
2675+{-1, 124, "VarBoolFromCy", VarBoolFromCy},
2676+{-1, 123, "VarBoolFromDate", VarBoolFromDate},
2677+{-1, 236, "VarBoolFromDec", VarBoolFromDec},
2678+{-1, 126, "VarBoolFromDisp", VarBoolFromDisp},
2679+{-1, 233, "VarBoolFromI1", VarBoolFromI1},
2680+{-1, 119, "VarBoolFromI2", VarBoolFromI2},
2681+{-1, 120, "VarBoolFromI4", VarBoolFromI4},
2682+{-1, 121, "VarBoolFromR4", VarBoolFromR4},
2683+{-1, 122, "VarBoolFromR8", VarBoolFromR8},
2684+{-1, 125, "VarBoolFromStr", VarBoolFromStr},
2685+{-1, 118, "VarBoolFromUI1", VarBoolFromUI1},
2686+{-1, 234, "VarBoolFromUI2", VarBoolFromUI2},
2687+{-1, 235, "VarBoolFromUI4", VarBoolFromUI4},
2688+{-1, 313, "VarBstrCat", VarBstrCat},
2689+{-1, 314, "VarBstrCmp", VarBstrCmp},
2690+{-1, 116, "VarBstrFromBool", VarBstrFromBool},
2691+{-1, 113, "VarBstrFromCy", VarBstrFromCy},
2692+{-1, 114, "VarBstrFromDate", VarBstrFromDate},
2693+{-1, 232, "VarBstrFromDec", VarBstrFromDec},
2694+{-1, 115, "VarBstrFromDisp", VarBstrFromDisp},
2695+{-1, 229, "VarBstrFromI1", VarBstrFromI1},
2696+{-1, 109, "VarBstrFromI2", VarBstrFromI2},
2697+{-1, 110, "VarBstrFromI4", VarBstrFromI4},
2698+{-1, 111, "VarBstrFromR4", VarBstrFromR4},
2699+{-1, 112, "VarBstrFromR8", VarBstrFromR8},
2700+{-1, 108, "VarBstrFromUI1", VarBstrFromUI1},
2701+{-1, 230, "VarBstrFromUI2", VarBstrFromUI2},
2702+{-1, 231, "VarBstrFromUI4", VarBstrFromUI4},
2703+{-1, 318, "VarCat", VarCat},
2704+{-1, 176, "VarCmp", VarCmp},
2705+{-1, 306, "VarCyAbs", VarCyAbs},
2706+{-1, 299, "VarCyAdd", VarCyAdd},
2707+{-1, 311, "VarCyCmp", VarCyCmp},
2708+{-1, 312, "VarCyCmpR8", VarCyCmpR8},
2709+{-1, 307, "VarCyFix", VarCyFix},
2710+{-1, 106, "VarCyFromBool", VarCyFromBool},
2711+{-1, 103, "VarCyFromDate", VarCyFromDate},
2712+{-1, 228, "VarCyFromDec", VarCyFromDec},
2713+{-1, 105, "VarCyFromDisp", VarCyFromDisp},
2714+{-1, 225, "VarCyFromI1", VarCyFromI1},
2715+{-1, 99, "VarCyFromI2", VarCyFromI2},
2716+{-1, 100, "VarCyFromI4", VarCyFromI4},
2717+{-1, 101, "VarCyFromR4", VarCyFromR4},
2718+{-1, 102, "VarCyFromR8", VarCyFromR8},
2719+{-1, 104, "VarCyFromStr", VarCyFromStr},
2720+{-1, 98, "VarCyFromUI1", VarCyFromUI1},
2721+{-1, 226, "VarCyFromUI2", VarCyFromUI2},
2722+{-1, 227, "VarCyFromUI4", VarCyFromUI4},
2723+{-1, 308, "VarCyInt", VarCyInt},
2724+{-1, 303, "VarCyMul", VarCyMul},
2725+{-1, 304, "VarCyMulI4", VarCyMulI4},
2726+{-1, 309, "VarCyNeg", VarCyNeg},
2727+{-1, 310, "VarCyRound", VarCyRound},
2728+{-1, 305, "VarCySub", VarCySub},
2729+{-1, 96, "VarDateFromBool", VarDateFromBool},
2730+{-1, 93, "VarDateFromCy", VarDateFromCy},
2731+{-1, 224, "VarDateFromDec", VarDateFromDec},
2732+{-1, 95, "VarDateFromDisp", VarDateFromDisp},
2733+{-1, 221, "VarDateFromI1", VarDateFromI1},
2734+{-1, 89, "VarDateFromI2", VarDateFromI2},
2735+{-1, 90, "VarDateFromI4", VarDateFromI4},
2736+{-1, 91, "VarDateFromR4", VarDateFromR4},
2737+{-1, 92, "VarDateFromR8", VarDateFromR8},
2738+{-1, 94, "VarDateFromStr", VarDateFromStr},
2739+{-1, 88, "VarDateFromUI1", VarDateFromUI1},
2740+{-1, 222, "VarDateFromUI2", VarDateFromUI2},
2741+{-1, 223, "VarDateFromUI4", VarDateFromUI4},
2742+{-1, 330, "VarDateFromUdate", VarDateFromUdate},
2743+{-1, 319, "VarDateFromUdateEx", VarDateFromUdateEx},
2744+{-1, 182, "VarDecAbs", VarDecAbs},
2745+{-1, 177, "VarDecAdd", VarDecAdd},
2746+{-1, 204, "VarDecCmp", VarDecCmp},
2747+{-1, 298, "VarDecCmpR8", VarDecCmpR8},
2748+{-1, 178, "VarDecDiv", VarDecDiv},
2749+{-1, 187, "VarDecFix", VarDecFix},
2750+{-1, 199, "VarDecFromBool", VarDecFromBool},
2751+{-1, 196, "VarDecFromCy", VarDecFromCy},
2752+{-1, 195, "VarDecFromDate", VarDecFromDate},
2753+{-1, 198, "VarDecFromDisp", VarDecFromDisp},
2754+{-1, 241, "VarDecFromI1", VarDecFromI1},
2755+{-1, 191, "VarDecFromI2", VarDecFromI2},
2756+{-1, 192, "VarDecFromI4", VarDecFromI4},
2757+{-1, 193, "VarDecFromR4", VarDecFromR4},
2758+{-1, 194, "VarDecFromR8", VarDecFromR8},
2759+{-1, 197, "VarDecFromStr", VarDecFromStr},
2760+{-1, 190, "VarDecFromUI1", VarDecFromUI1},
2761+{-1, 242, "VarDecFromUI2", VarDecFromUI2},
2762+{-1, 243, "VarDecFromUI4", VarDecFromUI4},
2763+{-1, 188, "VarDecInt", VarDecInt},
2764+{-1, 179, "VarDecMul", VarDecMul},
2765+{-1, 189, "VarDecNeg", VarDecNeg},
2766+{-1, 203, "VarDecRound", VarDecRound},
2767+{-1, 181, "VarDecSub", VarDecSub},
2768+{-1, 143, "VarDiv", VarDiv},
2769+{-1, 152, "VarEqv", VarEqv},
2770+{-1, 169, "VarFix", VarFix},
2771+{-1, 87, "VarFormat", VarFormat},
2772+{-1, 127, "VarFormatCurrency", VarFormatCurrency},
2773+{-1, 97, "VarFormatDateTime", VarFormatDateTime},
2774+{-1, 139, "VarFormatFromTokens", VarFormatFromTokens},
2775+{-1, 107, "VarFormatNumber", VarFormatNumber},
2776+{-1, 117, "VarFormatPercent", VarFormatPercent},
2777+{-1, 253, "VarI1FromBool", VarI1FromBool},
2778+{-1, 250, "VarI1FromCy", VarI1FromCy},
2779+{-1, 249, "VarI1FromDate", VarI1FromDate},
2780+{-1, 256, "VarI1FromDec", VarI1FromDec},
2781+{-1, 252, "VarI1FromDisp", VarI1FromDisp},
2782+{-1, 245, "VarI1FromI2", VarI1FromI2},
2783+{-1, 246, "VarI1FromI4", VarI1FromI4},
2784+{-1, 247, "VarI1FromR4", VarI1FromR4},
2785+{-1, 248, "VarI1FromR8", VarI1FromR8},
2786+{-1, 251, "VarI1FromStr", VarI1FromStr},
2787+{-1, 244, "VarI1FromUI1", VarI1FromUI1},
2788+{-1, 254, "VarI1FromUI2", VarI1FromUI2},
2789+{-1, 255, "VarI1FromUI4", VarI1FromUI4},
2790+{-1, 56, "VarI2FromBool", VarI2FromBool},
2791+{-1, 52, "VarI2FromCy", VarI2FromCy},
2792+{-1, 53, "VarI2FromDate", VarI2FromDate},
2793+{-1, 208, "VarI2FromDec", VarI2FromDec},
2794+{-1, 55, "VarI2FromDisp", VarI2FromDisp},
2795+{-1, 205, "VarI2FromI1", VarI2FromI1},
2796+{-1, 49, "VarI2FromI4", VarI2FromI4},
2797+{-1, 50, "VarI2FromR4", VarI2FromR4},
2798+{-1, 51, "VarI2FromR8", VarI2FromR8},
2799+{-1, 54, "VarI2FromStr", VarI2FromStr},
2800+{-1, 48, "VarI2FromUI1", VarI2FromUI1},
2801+{-1, 206, "VarI2FromUI2", VarI2FromUI2},
2802+{-1, 207, "VarI2FromUI4", VarI2FromUI4},
2803+{-1, 66, "VarI4FromBool", VarI4FromBool},
2804+{-1, 62, "VarI4FromCy", VarI4FromCy},
2805+{-1, 63, "VarI4FromDate", VarI4FromDate},
2806+{-1, 212, "VarI4FromDec", VarI4FromDec},
2807+{-1, 65, "VarI4FromDisp", VarI4FromDisp},
2808+{-1, 209, "VarI4FromI1", VarI4FromI1},
2809+{-1, 59, "VarI4FromI2", VarI4FromI2},
2810+{-1, 60, "VarI4FromR4", VarI4FromR4},
2811+{-1, 61, "VarI4FromR8", VarI4FromR8},
2812+{-1, 64, "VarI4FromStr", VarI4FromStr},
2813+{-1, 58, "VarI4FromUI1", VarI4FromUI1},
2814+{-1, 210, "VarI4FromUI2", VarI4FromUI2},
2815+{-1, 211, "VarI4FromUI4", VarI4FromUI4},
2816+{-1, 153, "VarIdiv", VarIdiv},
2817+{-1, 154, "VarImp", VarImp},
2818+{-1, 172, "VarInt", VarInt},
2819+{-1, 155, "VarMod", VarMod},
2820+{-1, 129, "VarMonthName", VarMonthName},
2821+{-1, 156, "VarMul", VarMul},
2822+{-1, 173, "VarNeg", VarNeg},
2823+{-1, 174, "VarNot", VarNot},
2824+{-1, 47, "VarNumFromParseNum", VarNumFromParseNum},
2825+{-1, 157, "VarOr", VarOr},
2826+{-1, 46, "VarParseNumFromStr", VarParseNumFromStr},
2827+{-1, 158, "VarPow", VarPow},
2828+{-1, 316, "VarR4CmpR8", VarR4CmpR8},
2829+{-1, 76, "VarR4FromBool", VarR4FromBool},
2830+{-1, 72, "VarR4FromCy", VarR4FromCy},
2831+{-1, 73, "VarR4FromDate", VarR4FromDate},
2832+{-1, 216, "VarR4FromDec", VarR4FromDec},
2833+{-1, 75, "VarR4FromDisp", VarR4FromDisp},
2834+{-1, 213, "VarR4FromI1", VarR4FromI1},
2835+{-1, 69, "VarR4FromI2", VarR4FromI2},
2836+{-1, 70, "VarR4FromI4", VarR4FromI4},
2837+{-1, 71, "VarR4FromR8", VarR4FromR8},
2838+{-1, 74, "VarR4FromStr", VarR4FromStr},
2839+{-1, 68, "VarR4FromUI1", VarR4FromUI1},
2840+{-1, 214, "VarR4FromUI2", VarR4FromUI2},
2841+{-1, 215, "VarR4FromUI4", VarR4FromUI4},
2842+{-1, 86, "VarR8FromBool", VarR8FromBool},
2843+{-1, 82, "VarR8FromCy", VarR8FromCy},
2844+{-1, 83, "VarR8FromDate", VarR8FromDate},
2845+{-1, 220, "VarR8FromDec", VarR8FromDec},
2846+{-1, 85, "VarR8FromDisp", VarR8FromDisp},
2847+{-1, 217, "VarR8FromI1", VarR8FromI1},
2848+{-1, 79, "VarR8FromI2", VarR8FromI2},
2849+{-1, 80, "VarR8FromI4", VarR8FromI4},
2850+{-1, 81, "VarR8FromR4", VarR8FromR4},
2851+{-1, 84, "VarR8FromStr", VarR8FromStr},
2852+{-1, 78, "VarR8FromUI1", VarR8FromUI1},
2853+{-1, 218, "VarR8FromUI2", VarR8FromUI2},
2854+{-1, 219, "VarR8FromUI4", VarR8FromUI4},
2855+{-1, 315, "VarR8Pow", VarR8Pow},
2856+{-1, 317, "VarR8Round", VarR8Round},
2857+{-1, 175, "VarRound", VarRound},
2858+{-1, 159, "VarSub", VarSub},
2859+{-1, 140, "VarTokenizeFormatString", VarTokenizeFormatString},
2860+{-1, 138, "VarUI1FromBool", VarUI1FromBool},
2861+{-1, 134, "VarUI1FromCy", VarUI1FromCy},
2862+{-1, 135, "VarUI1FromDate", VarUI1FromDate},
2863+{-1, 240, "VarUI1FromDec", VarUI1FromDec},
2864+{-1, 137, "VarUI1FromDisp", VarUI1FromDisp},
2865+{-1, 237, "VarUI1FromI1", VarUI1FromI1},
2866+{-1, 130, "VarUI1FromI2", VarUI1FromI2},
2867+{-1, 131, "VarUI1FromI4", VarUI1FromI4},
2868+{-1, 132, "VarUI1FromR4", VarUI1FromR4},
2869+{-1, 133, "VarUI1FromR8", VarUI1FromR8},
2870+{-1, 136, "VarUI1FromStr", VarUI1FromStr},
2871+{-1, 238, "VarUI1FromUI2", VarUI1FromUI2},
2872+{-1, 239, "VarUI1FromUI4", VarUI1FromUI4},
2873+{-1, 266, "VarUI2FromBool", VarUI2FromBool},
2874+{-1, 263, "VarUI2FromCy", VarUI2FromCy},
2875+{-1, 262, "VarUI2FromDate", VarUI2FromDate},
2876+{-1, 269, "VarUI2FromDec", VarUI2FromDec},
2877+{-1, 265, "VarUI2FromDisp", VarUI2FromDisp},
2878+{-1, 267, "VarUI2FromI1", VarUI2FromI1},
2879+{-1, 258, "VarUI2FromI2", VarUI2FromI2},
2880+{-1, 259, "VarUI2FromI4", VarUI2FromI4},
2881+{-1, 260, "VarUI2FromR4", VarUI2FromR4},
2882+{-1, 261, "VarUI2FromR8", VarUI2FromR8},
2883+{-1, 264, "VarUI2FromStr", VarUI2FromStr},
2884+{-1, 257, "VarUI2FromUI1", VarUI2FromUI1},
2885+{-1, 268, "VarUI2FromUI4", VarUI2FromUI4},
2886+{-1, 279, "VarUI4FromBool", VarUI4FromBool},
2887+{-1, 276, "VarUI4FromCy", VarUI4FromCy},
2888+{-1, 275, "VarUI4FromDate", VarUI4FromDate},
2889+{-1, 282, "VarUI4FromDec", VarUI4FromDec},
2890+{-1, 278, "VarUI4FromDisp", VarUI4FromDisp},
2891+{-1, 280, "VarUI4FromI1", VarUI4FromI1},
2892+{-1, 271, "VarUI4FromI2", VarUI4FromI2},
2893+{-1, 272, "VarUI4FromI4", VarUI4FromI4},
2894+{-1, 273, "VarUI4FromR4", VarUI4FromR4},
2895+{-1, 274, "VarUI4FromR8", VarUI4FromR8},
2896+{-1, 277, "VarUI4FromStr", VarUI4FromStr},
2897+{-1, 270, "VarUI4FromUI1", VarUI4FromUI1},
2898+{-1, 281, "VarUI4FromUI2", VarUI4FromUI2},
2899+{-1, 331, "VarUdateFromDate", VarUdateFromDate},
2900+{-1, 128, "VarWeekdayName", VarWeekdayName},
2901+{-1, 167, "VarXor", VarXor},
2902+{-1, 12, "VariantChangeType", VariantChangeType},
2903+{-1, 147, "VariantChangeTypeEx", VariantChangeTypeEx},
2904+{-1, 9, "VariantClear", VariantClear},
2905+{-1, 10, "VariantCopy", VariantCopy},
2906+{-1, 11, "VariantCopyInd", VariantCopyInd},
2907+{-1, 8, "VariantInit", VariantInit},
2908+{-1, 13, "VariantTimeToDosDateTime", VariantTimeToDosDateTime},
2909+{-1, 185, "VariantTimeToSystemTime", VariantTimeToSystemTime},
2910+{-1, 413, "VectorFromBstr", VectorFromBstr},
2911+{-1, 0, NULL, NULL}};
--- vmaid/trunk/w32loader/oleaut32.h (revision 314)
+++ vmaid/trunk/w32loader/oleaut32.h (revision 315)
@@ -1,10 +1,10 @@
11 /*
22 w32loader
3- copyright (c) 1998-2007 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
5- This program is free software; you can redistribute it and/or modify
5+ This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
7- the Free Software Foundation; either version 2 of the License, or
7+ the Free Software Foundation, either version 3 of the License, or
88 (at your option) any later version.
99
1010 This program is distributed in the hope that it will be useful,
@@ -13,8 +13,7 @@
1313 GNU General Public License for more details.
1414
1515 You should have received a copy of the GNU General Public License
16- along with this program; if not, write to the Free Software
17- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16+ along with this program. If not, see <http://www.gnu.org/licenses/>.
1817 */
1918 #ifndef __OLEAUT32_H__
2019 #define __OLEAUT32_H__
@@ -23,9 +22,7 @@
2322 #include "w32ldr.h"
2423
2524
26-#ifdef __cplusplus
27-extern "C" {
28-#endif /* __cplusplus */
25+G_BEGIN_DECLS
2926
3027
3128 #include "ole32.h"
@@ -38,7 +35,7 @@
3835 } REGKIND;
3936
4037
41-extern W32LdrExport oleaut32_exports[];
38+extern W32LdrExport w32ldr_oleaut32_exports[];
4239
4340
4441 HRESULT WINAPI LoadTypeLib (LPCOLESTR szFile, ITypeLib **pptLib);
@@ -46,9 +43,7 @@
4643 HRESULT WINAPI RegisterTypeLib (ITypeLib *ptlib, OLECHAR *szFullPath, OLECHAR *szHelpDir);
4744
4845
49-#ifdef __cplusplus
50-}
51-#endif /* __cplusplus */
46+G_END_DECLS
5247
5348
5449 #endif /* __OLEAUT32_H__ */
--- vmaid/trunk/w32loader/w32ldr.c (revision 314)
+++ vmaid/trunk/w32loader/w32ldr.c (revision 315)
@@ -1,6 +1,6 @@
11 /*
22 w32loader
3- copyright (c) 1998-2009 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
55 This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
@@ -34,6 +34,7 @@
3434 #include "winmm.h"
3535 #include "winsock.h"
3636 #include "misc/fileio.h"
37+#include "misc/peimage.h"
3738 #include "misc/profile.h"
3839
3940
@@ -49,228 +50,77 @@
4950 * ja:モジュール関数群 *
5051 * *
5152 ******************************************************************************/
52-static GList *glist_module = NULL;
53-# ifdef USE_THREAD
54-G_LOCK_DEFINE_STATIC (critical);
55-static volatile gboolean critical = FALSE;
56-# endif /* USE_THREAD */
53+typedef BOOL CALLBACK (*DllEntryProc)(HMODULE, DWORD, LPVOID);
5754
5855
59-/*
60-0x0001 = Cursor
61-0x0002 = Bitmap
62-0x0003 = Icon
63-0x0004 = Menu
64-0x0005 = Dialog
65-0x0006 = String Table
66-0x0007 = Font Directory
67-0x0008 = Font
68-0x0009 = Accelerators Table
69-0x000A = RC Data (custom binary data)
70-0x000B = Message table
71-0x000C = Group Cursor
72-0x000E = Group Icon
73-0x0010 = Version Information
74-0x0011 = Dialog Include
75-0x0013 = Plug'n'Play
76-0x0014 = VXD
77-0x0015 = Animated Cursor
78-0x2002 = Bitmap (new version)
79-0x2004 = Menu (new version)
80-0x2005 = Dialog (new version)
81-*/
82-static void
83-w32ldr_module_resource_directory (W32LdrModule *module,
84- PIMAGE_RESOURCE_DIRECTORY pird,
85- const gchar *name)
86-{
87- guint8 *image;
88- gint i;
89- PIMAGE_FILE_HEADER pifh;
90- PIMAGE_OPTIONAL_HEADER pioh;
56+static PeProcess *process = NULL;
9157
92- image = (guint8 *)(module + 1);
93- pifh = (PIMAGE_FILE_HEADER)
94- (image + ((PIMAGE_DOS_HEADER)image)->e_lfanew + sizeof (DWORD));
95- pioh = (PIMAGE_OPTIONAL_HEADER)(pifh + 1);
96- for (i = 0; i < pird->NumberOfNamedEntries + pird->NumberOfIdEntries; i++)
97- {
98- gchar *new_name;
99- PIMAGE_RESOURCE_DIRECTORY_ENTRY pirde;
10058
101- pirde = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)
102- ((LPBYTE)pird + sizeof (IMAGE_RESOURCE_DIRECTORY)
103- + sizeof (IMAGE_RESOURCE_DIRECTORY_ENTRY) * i);
104- if (pirde->Id & 0x80000000)
105- {
106- gchar *utf8str, *tmp;
107- PIMAGE_RESOURCE_DIR_STRING_U pirdsu;
108-
109- pirdsu = (PIMAGE_RESOURCE_DIR_STRING_U)(image
110- + pioh->DataDirectory
111- [IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress
112- + (pirde->Id & 0x7fffffff));
113- utf8str = g_utf16_to_utf8 (pirdsu->NameString, pirdsu->Length,
114- NULL, NULL, NULL);
115- tmp = g_utf8_strup (utf8str, -1);
116- g_free (utf8str);
117- new_name = g_strdup_printf ("%s/%s", name, tmp);
118- g_free (tmp);
119- }
120- else
121- {
122- new_name = g_strdup_printf ("%s/0x%x", name, pirde->Id);
123- }
124- if (pirde->OffsetToData & 0x80000000)
125- {
126- w32ldr_module_resource_directory (module,
127- (PIMAGE_RESOURCE_DIRECTORY)(image
128- + pioh->DataDirectory
129- [IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress
130- + (pirde->OffsetToData & 0x7fffffff)), new_name);
131- g_free (new_name);
132- }
133- else
134- {
135- guint8 *data;
136- PIMAGE_RESOURCE_DATA_ENTRY de;
137-
138- de = (PIMAGE_RESOURCE_DATA_ENTRY)(image
139- + pioh->DataDirectory
140- [IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress
141- + pirde->OffsetToData);
142- data = g_malloc (de->Size + sizeof (DWORD));
143- *(LPDWORD)data = de->Size;
144- g_memmove (data + sizeof (DWORD), image + de->OffsetToData,
145- de->Size);
146- g_hash_table_insert (module->resource, new_name, data);
147- }
148- }
149-}
150-
151-
152-static gchar *
153-w32ldr_module_get_basename (const gchar *file)
154-{
155- gchar *name = NULL;
156-
157- if (file)
158- {
159- name = g_path_get_basename (file);
160- if (!g_strrchr (name, '.'))
161- {
162- gchar *tmp;
163-
164- tmp = g_strconcat (name, ".dll", NULL);
165- g_free (name);
166- name = tmp;
167- }
168- }
169- return name;
170-}
171-
172-
17359 /* ja:既にロードされているモジュールを取得する
17460 file,モジュール名
17561 RET,モジュール,NULL:ロードされていない */
176-W32LdrModule *
62+gpointer
17763 w32ldr_module_get_library (const gchar *file)
17864 {
179- W32LdrModule *module = NULL;
180-
181- if (file)
182- {
183- gchar *base, *name;
184- GList *glist;
185-
186- base = g_path_get_basename (file);
187- name = w32ldr_module_get_basename (file);
188-#ifdef USE_THREAD
189- G_LOCK (critical);
190- critical = TRUE;
191-#endif /* USE_THREAD */
192- for (glist = g_list_first (glist_module);
193- glist; glist = g_list_next (glist))
194- if (g_ascii_strcasecmp (((W32LdrModule *)glist->data)->name, base) == 0
195- || g_ascii_strcasecmp (((W32LdrModule *)glist->data)->name, name) == 0)
196- {
197- module = glist->data;
198- break;
199- }
200-#ifdef USE_THREAD
201- critical = FALSE;
202- G_UNLOCK (critical);
203-#endif /* USE_THREAD */
204- g_free (base);
205- g_free (name);
206- }
207- return module;
65+ if (!process)
66+ process = g_malloc0 (sizeof (PeProcess));
67+ return peimage_module_get_library (process, file);
20868 }
20969
21070
211-/* ja:モジュールをロードする
212- file,モジュール名
213- exec,TRUE:DllMainを実行する,FALSE:ロードのみ
214- RET,モジュール,NULL:エラー */
215-W32LdrModule *
216-w32ldr_module_load_library (const gchar *file,
217- const gboolean exec)
71+/* ja:システムイメージをロードする
72+ process,プロセス
73+ file,イメージ名
74+ user_data,ユーザデータ
75+ RET,イメージ,NULL:エラー */
76+static guint8 *
77+w32ldr_module_callback_system (PeProcess *process,
78+ const gchar *file,
79+ gpointer user_data)
21880 {
219- gboolean result = TRUE;
220- gssize leng;
221- guint8 *image;
81+ guint8 *image = NULL;
22282 gint i;
223- W32LdrModule *module;
224- PIMAGE_DOS_HEADER pidh;
225- PIMAGE_FILE_HEADER pifh;
226- PIMAGE_OPTIONAL_HEADER pioh;
227- PIMAGE_SECTION_HEADER pish;
22883 struct {
22984 const gchar *name;
23085 W32LdrExport *exports;
23186 } osdll[] = {
232- {"advapi32.dll", advapi32_exports},
233- {"comctl32.dll", commctrl_exports},
234- {"comdlg32.dll", commdlg_exports},
235- {"gdi32.dll", gdi32_exports},
236- {"kernel32.dll", kernel32_exports},
237- {"msvcrt.dll", msvcrt_exports},
238- {"ntdll.dll", ntdll_exports},
239- {"ole32.dll", ole32_exports},
240- {"oleaut32.dll", oleaut32_exports},
241- {"rasapi32.dll", rasapi32_exports},
242- {"rasdlg.dll", rasdlg_exports},
243- {"shell32.dll", shell32_exports},
244- {"user32.dll", user32_exports},
245- {"version.dll", version_exports},
246- {"winmm.dll", winmm_exports},
247- {"wsock32.dll", winsock_exports},
87+ {"advapi32.dll", w32ldr_advapi32_exports},
88+ {"comctl32.dll", w32ldr_commctrl_exports},
89+ {"comdlg32.dll", w32ldr_commdlg_exports},
90+ {"gdi32.dll", w32ldr_gdi32_exports},
91+ {"kernel32.dll", w32ldr_kernel32_exports},
92+ {"msvcrt.dll", w32ldr_msvcrt_exports},
93+ {"ntdll.dll", w32ldr_ntdll_exports},
94+ {"ole32.dll", w32ldr_ole32_exports},
95+ {"oleaut32.dll", w32ldr_oleaut32_exports},
96+ {"rasapi32.dll", w32ldr_rasapi32_exports},
97+ {"rasdlg.dll", w32ldr_rasdlg_exports},
98+ {"shell32.dll", w32ldr_shell32_exports},
99+ {"user32.dll", w32ldr_user32_exports},
100+ {"version.dll", w32ldr_version_exports},
101+ {"winmm.dll", w32ldr_winmm_exports},
102+ {"wsock32.dll", w32ldr_winsock_exports},
248103 {NULL, NULL}};
249104
250- if (!file)
251- return NULL;
252- module = w32ldr_module_get_library (file);
253- if (module)
254- {
255- /* ja:既読 */
256- module->counter++;
257- return module;
258- }
259- module = g_malloc0 (sizeof (W32LdrModule));
260- module->name = w32ldr_module_get_basename (file);
261- module->counter = 1;
262105 for (i = 0; osdll[i].name; i++)
263- if (g_ascii_strcasecmp (osdll[i].name, module->name) == 0)
106+ if (g_ascii_strcasecmp (osdll[i].name, file) == 0)
264107 {
265108 /* ja:内蔵DLL */
266109 guint8 *p;
267110 gchar *q;
268- gint j, k = 0, implement = 0, num = 0;
111+ gint j, num = 0;
269112 gint ordinal_min = G_MAXINT, ordinal_max = G_MININT;
270- gsize leng_head, leng_code, leng_data;
271- LPDWORD signature, func, name;
272- LPWORD ordinal;
113+ gsize leng, leng_head, leng_code, leng_data;
114+ LPDWORD lpdwSignature, lpdwFunction, lpdwName;
115+ LPWORD lpwOrdinal;
116+ PIMAGE_DOS_HEADER pidh;
117+ PIMAGE_FILE_HEADER pifh;
118+ PIMAGE_OPTIONAL_HEADER pioh;
119+ PIMAGE_SECTION_HEADER pish;
273120 PIMAGE_EXPORT_DIRECTORY pied;
121+#ifdef USE_DEBUG
122+ gchar *r;
123+#endif /* USE_DEBUG */
274124
275125 leng_head = sizeof (IMAGE_DOS_HEADER)
276126 + sizeof (DWORD)
@@ -281,10 +131,15 @@
281131 leng_data = sizeof (IMAGE_EXPORT_DIRECTORY)
282132 + g_strlen (osdll[i].name) + 1;
283133 for (j = 0; osdll[i].exports[j].func; j++)
284- if (osdll[i].exports[j].implement)
134+ if (osdll[i].exports[j].implement >= 0)
285135 {
286- implement++;
287- leng_code += 5;
136+#ifdef USE_DEBUG
137+ leng_code += osdll[i].exports[j].implement > 0
138+ ? osdll[i].exports[j].implement : 30;
139+#else /* not USE_DEBUG */
140+ leng_code += osdll[i].exports[j].implement > 0
141+ ? osdll[i].exports[j].implement : 5;
142+#endif /* not USE_DEBUG */
288143 if (osdll[i].exports[j].name)
289144 {
290145 num++;
@@ -296,28 +151,28 @@
296151 if (ordinal_max < osdll[i].exports[j].ordinal)
297152 ordinal_max = osdll[i].exports[j].ordinal;
298153 }
299- if (implement > 0)
300- leng_data += (ordinal_max - ordinal_min + 1) * sizeof (DWORD);
154+ leng_data += (ordinal_max - ordinal_min + 1) * sizeof (DWORD);
301155 leng = leng_head + leng_code + leng_data;
302- module = g_realloc (module, leng + sizeof (W32LdrModule));
303- g_memset (module + 1, 0, leng);
156+ image = g_malloc0 (leng);
304157 /* ja:ポインタ */
305- image = (guint8 *)(module + 1);
306158 pidh = (PIMAGE_DOS_HEADER)image;
307- signature = (LPDWORD)(pidh + 1);
308- pifh = (PIMAGE_FILE_HEADER)(signature + 1);
159+ lpdwSignature = (LPDWORD)(pidh + 1);
160+ pifh = (PIMAGE_FILE_HEADER)(lpdwSignature + 1);
309161 pioh = (PIMAGE_OPTIONAL_HEADER)(pifh + 1);
310162 pish = (PIMAGE_SECTION_HEADER)(pioh + 1);
311163 p = (guint8 *)(pish + 1);
312164 pied = (PIMAGE_EXPORT_DIRECTORY)(p + leng_code);
313- func = (LPDWORD)(pied + 1);
314- name = func + ordinal_max - ordinal_min + 1;
315- ordinal = (LPWORD)(name + num);
316- q = (gchar *)(ordinal + num);
165+ lpdwFunction = (LPDWORD)(pied + 1);
166+ lpdwName = lpdwFunction + ordinal_max - ordinal_min + 1;
167+ lpwOrdinal = (LPWORD)(lpdwName + num);
168+ q = (gchar *)(lpwOrdinal + num);
169+#ifdef USE_DEBUG
170+ r = q;
171+#endif /* USE_DEBUG */
317172 /* ja:設定 */
318173 pidh->e_magic = IMAGE_DOS_SIGNATURE;
319174 pidh->e_lfanew = sizeof (IMAGE_DOS_HEADER);
320- *signature = IMAGE_NT_SIGNATURE;
175+ *lpdwSignature = IMAGE_NT_SIGNATURE;
321176 pifh->Machine = IMAGE_FILE_MACHINE_I386;
322177 pifh->NumberOfSections = 1;
323178 pifh->SizeOfOptionalHeader = sizeof (IMAGE_OPTIONAL_HEADER);
@@ -359,232 +214,43 @@
359214 | IMAGE_SCN_MEM_READ;
360215 pied->Name = GPOINTER_TO_UINT (q) - GPOINTER_TO_UINT (image);
361216 pied->Base = ordinal_min;
362- pied->NumberOfFunctions = implement;
217+ pied->NumberOfFunctions = ordinal_max - ordinal_min + 1;
363218 pied->NumberOfNames = num;
364- pied->AddressOfFunctions = GPOINTER_TO_UINT (func)
219+ pied->AddressOfFunctions = GPOINTER_TO_UINT (lpdwFunction)
365220 - GPOINTER_TO_UINT (image);
366- pied->AddressOfNames = GPOINTER_TO_UINT (name)
221+ pied->AddressOfNames = GPOINTER_TO_UINT (lpdwName)
367222 - GPOINTER_TO_UINT (image);
368- pied->AddressOfNameOrdinals = GPOINTER_TO_UINT (ordinal)
223+ pied->AddressOfNameOrdinals = GPOINTER_TO_UINT (lpwOrdinal)
369224 - GPOINTER_TO_UINT (image);
370225 g_strcpy (q, osdll[i].name);
371226 q += g_strlen (osdll[i].name) + 1;
372227 for (j = 0; osdll[i].exports[j].func; j++)
373- if (osdll[i].exports[j].implement)
228+ if (osdll[i].exports[j].implement >= 0)
374229 {
375230 gint index;
376231
377232 index = osdll[i].exports[j].ordinal - ordinal_min;
378- func[index] = GPOINTER_TO_UINT (p) - GPOINTER_TO_UINT (image);
379- *p++ = 0xe9;
380- *(guint32 *)p = GPOINTER_TO_UINT (osdll[i].exports[j].func)
381- - (GPOINTER_TO_UINT (p) + 4);
382- p += 4;
383- if (osdll[i].exports[j].name)
233+ lpdwFunction[index] = GPOINTER_TO_UINT (p)
234+ - GPOINTER_TO_UINT (image);
235+ if (osdll[i].exports[j].implement > 0)
384236 {
385- name[k] = GPOINTER_TO_UINT (q) - GPOINTER_TO_UINT (image);
386- g_strcpy (q, osdll[i].exports[j].name);
387- q += g_strlen (osdll[i].exports[j].name) + 1;
388- ordinal[k] = index;
389- k++;
237+ g_memmove (p, osdll[i].exports[j].func,
238+ osdll[i].exports[j].implement);
239+ p += osdll[i].exports[j].implement;
390240 }
391- }
392- module->file = g_build_filename
393- (w32ldr_dir_get_path (W32LDR_DIR_SYSTEM), osdll[i].name, NULL);
394- module->exports = g_hash_table_new (g_str_hash, g_str_equal);
395- module->ordinals = g_hash_table_new (g_direct_hash, g_direct_equal);
396- for (j = 0; osdll[i].exports[j].func; j++)
397- if (osdll[i].exports[j].implement)
398- {
399- if (osdll[i].exports[j].name)
400- g_hash_table_insert (module->exports,
401- osdll[i].exports[j].name, osdll[i].exports[j].func);
402- g_hash_table_insert (module->ordinals,
403- GUINT_TO_POINTER ((guint)osdll[i].exports[j].ordinal),
404- osdll[i].exports[j].func);
405- }
406-#ifdef USE_THREAD
407- G_LOCK (critical);
408- critical = TRUE;
409-#endif /* USE_THREAD */
410- glist_module = g_list_append (glist_module, module);
411-#ifdef USE_THREAD
412- critical = FALSE;
413- G_UNLOCK (critical);
414-#endif /* USE_THREAD */
415- return module;
416- }
417-
418- module->name = g_path_get_basename (file);
419- module->file = fileio_get_full_path (file);
420- image = fileio_load (module->file, &leng);
421- for (i = 0; i < 8; i++)
422- if (!image)
423- {
424- gchar *path;
425-
426- g_free (module->name);
427- g_free (module->file);
428- module->name = i % 2 == 0 ? g_path_get_basename (file)
429- : w32ldr_module_get_basename (file);
430- path = i < 4 ? g_build_filename (w32ldr_dir_get_path
431- (i / 2 == 0 ? W32LDR_DIR_SYSTEM : W32LDR_DIR_WINDOWS),
432- module->name, NULL)
433- : g_build_filename (w32ldr_dir_get_path (W32LDR_DIR_HOME),
434- i < 6 ? "bin" : "lib", module->name, NULL);
435- module->file = w32ldr_dir_get_case_insensitive (path);
436- g_free (path);
437- image = fileio_load (module->file, &leng);
438- }
439- pidh = (PIMAGE_DOS_HEADER)image;
440- if (!image || leng < sizeof (IMAGE_DOS_HEADER)
441- || pidh->e_magic != IMAGE_DOS_SIGNATURE
442- || leng < pidh->e_lfanew + sizeof (DWORD)
443- + sizeof (IMAGE_FILE_HEADER) + sizeof (IMAGE_OPTIONAL_HEADER)
444- || *(LPDWORD)(image + pidh->e_lfanew) != IMAGE_NT_SIGNATURE)
445- {
446- g_free (image);
447- g_free (module->name);
448- g_free (module->file);
449- g_free (module);
450- return NULL;
451- }
452- pifh = (PIMAGE_FILE_HEADER)(image + pidh->e_lfanew + sizeof (DWORD));
453- pioh = (PIMAGE_OPTIONAL_HEADER)(pifh + 1);
454- pish = (PIMAGE_SECTION_HEADER)(pioh + 1);
455- if (pifh->Machine != IMAGE_FILE_MACHINE_I386
456- || pifh->SizeOfOptionalHeader != sizeof (IMAGE_OPTIONAL_HEADER)
457- || pioh->Magic != IMAGE_NT_OPTIONAL_HDR_MAGIC
458- || leng < pioh->SizeOfHeaders
459- || leng < pidh->e_lfanew + sizeof (DWORD)
460- + sizeof (IMAGE_FILE_HEADER) + sizeof (IMAGE_OPTIONAL_HEADER)
461- + sizeof (IMAGE_SECTION_HEADER) * pifh->NumberOfSections)
462- {
463- g_free (image);
464- g_free (module->name);
465- g_free (module->file);
466- g_free (module);
467- return NULL;
468- }
469- /* ja:イメージ作成 */
470- leng = pioh->SizeOfImage;
471- for (i = 0; i < pifh->NumberOfSections; i++)
472- if (leng < pish[i].VirtualAddress
473- + MAX (pish[i].Misc.VirtualSize, pish[i].SizeOfRawData))
474- leng = pish[i].VirtualAddress
475- + MAX (pish[i].Misc.VirtualSize, pish[i].SizeOfRawData);
476- module = g_realloc (module, leng + sizeof (W32LdrModule));
477- g_memset (module + 1, 0, leng);
478- g_memmove (module + 1, image, pioh->SizeOfHeaders);
479- for (i = 0; i < pifh->NumberOfSections; i++)
480- g_memmove ((guint8 *)(module + 1) + pish[i].VirtualAddress,
481- image + pish[i].PointerToRawData, pish[i].SizeOfRawData);
482- g_free (image);
483- image = (guint8 *)(module + 1);
484- pifh = (PIMAGE_FILE_HEADER)
485- (image + ((PIMAGE_DOS_HEADER)image)->e_lfanew + sizeof (DWORD));
486- pioh = (PIMAGE_OPTIONAL_HEADER)(pifh + 1);
487- pish = (PIMAGE_SECTION_HEADER)(pioh + 1);
488-
489- /* ja:エクスポート */
490- if (pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size)
491- {
492- LPDWORD func, name;
493- LPWORD ordinal;
494- PIMAGE_EXPORT_DIRECTORY pied;
495-
496- pied = (PIMAGE_EXPORT_DIRECTORY)(image
497- + pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
498- func = (LPDWORD)(image + pied->AddressOfFunctions);
499- name = (LPDWORD)(image + pied->AddressOfNames);
500- ordinal = (LPWORD)(image + pied->AddressOfNameOrdinals);
501- module->exports = g_hash_table_new (g_str_hash, g_str_equal);
502- module->ordinals = g_hash_table_new (g_direct_hash, g_direct_equal);
503- for (i = 0; i < pied->NumberOfNames; i++)
504- g_hash_table_insert (module->exports,
505- image + name[i], image + func[ordinal[i]]);
506- for (i = 0; i < pied->NumberOfFunctions; i++)
507- g_hash_table_insert (module->ordinals,
508- GUINT_TO_POINTER (i + pied->Base), image + func[i]);
509- }
510-#ifdef USE_THREAD
511- G_LOCK (critical);
512- critical = TRUE;
513-#endif /* USE_THREAD */
514- glist_module = g_list_append (glist_module, module);
515-#ifdef USE_THREAD
516- critical = FALSE;
517- G_UNLOCK (critical);
518-#endif /* USE_THREAD */
519-
520- /* ja:インポート */
521- if (pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size)
522- {
523- PIMAGE_IMPORT_DESCRIPTOR piid;
524-
525- piid = (PIMAGE_IMPORT_DESCRIPTOR)(image
526- + pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
527- for (i = 0; piid[i].Name; i++)
528- {
529- W32LdrModule *mod;
530-
531- mod = w32ldr_module_load_library ((gchar *)(image + piid[i].Name),
532- TRUE);
533- if (mod)
534- {
535- gint j;
536- PIMAGE_THUNK_DATA piat, pilt;
537-
538- piat = (PIMAGE_THUNK_DATA)(image
539- + (piid[i].DUMMYUNIONNAME.OriginalFirstThunk
540- ? piid[i].DUMMYUNIONNAME.OriginalFirstThunk
541- : piid[i].FirstThunk));
542- pilt = (PIMAGE_THUNK_DATA)(image + piid[i].FirstThunk);
543- for (j = 0; piat[j].u1.AddressOfData; j++)
241+ else
544242 {
545- gpointer func;
546- WORD ordinal;
547- PIMAGE_IMPORT_BY_NAME piibn;
548243 #ifdef USE_DEBUG
549- const static gchar *fmt = "%s\n";
550- gchar *str;
551- gsize leng;
552- guint8 *opcode, *p;
553-#endif /* USE_DEBUG */
244+ const static gchar *fmt = "%s,%s\n";
554245
555- ordinal = piat[j].u1.Ordinal & ~IMAGE_ORDINAL_FLAG;
556- piibn = (PIMAGE_IMPORT_BY_NAME)
557- (image + piat[j].u1.AddressOfData);
558- func = piat[j].u1.Ordinal & IMAGE_ORDINAL_FLAG
559- ? w32ldr_module_get_proc (mod, ordinal)
560- : w32ldr_module_get_func (mod, (gchar *)piibn->Name);
561-#ifdef USE_DEBUG
562- str = piat[j].u1.Ordinal & IMAGE_ORDINAL_FLAG
563- ? g_strdup_printf ("%s,%d", image + piid[i].Name, ordinal)
564- : g_strdup_printf ("%s,%s", image + piid[i].Name,
565- piibn->Name);
566-
567-#endif /* USE_DEBUG */
568- if (!func)
569- {
570- const static guint8 ret_code = 0xc3;
571-
572-#ifdef USE_DEBUG
573- g_warning ("import-function:%s\n", str);
574-#endif /* USE_DEBUG */
575- func = (gpointer)&ret_code;
576- result = FALSE;
577- }
578-#ifdef USE_DEBUG
579- leng = g_strlen (str) + 1;
580- p = opcode = g_malloc (leng + 26);
581246 *p++ = 0x60;
582- *p++ = 0xe8;
583- *(guint32 *)p = leng;
247+ *p++ = 0x68;
248+ *(guint32 *)p = GPOINTER_TO_UINT (q);
584249 p += 4;
585- g_strcpy ((gchar *)p, str);
586- p += leng;
587250 *p++ = 0x68;
251+ *(guint32 *)p = GPOINTER_TO_UINT (r);
252+ p += 4;
253+ *p++ = 0x68;
588254 *(guint32 *)p = GPOINTER_TO_UINT (fmt);
589255 p += 4;
590256 *p++ = 0xe8;
@@ -593,393 +259,121 @@
593259 p += 4;
594260 *p++ = 0x83;
595261 *p++ = 0xc4;
596- *p++ = 0x08;
262+ *p++ = 0x0c;
597263 *p++ = 0x61;
264+#endif /* USE_DEBUG */
598265 *p++ = 0xe9;
599- *(guint32 *)p = GPOINTER_TO_UINT (func)
600- - (GPOINTER_TO_INT (p) + 4);
601- pilt[j].u1.Function = GPOINTER_TO_UINT (opcode);
602- g_free (str);
603-#else /* not USE_DEBUG */
604- pilt[j].u1.Function = GPOINTER_TO_UINT (func);
605-#endif /* not USE_DEBUG */
266+ *(guint32 *)p = GPOINTER_TO_UINT (osdll[i].exports[j].func)
267+ - (GPOINTER_TO_UINT (p) + 4);
268+ p += 4;
606269 }
607- module->glist = g_list_append (module->glist, mod);
270+ if (osdll[i].exports[j].name)
271+ {
272+ *lpdwName = GPOINTER_TO_UINT (q) - GPOINTER_TO_UINT (image);
273+ g_strcpy (q, osdll[i].exports[j].name);
274+ q += g_strlen (osdll[i].exports[j].name) + 1;
275+ *lpwOrdinal = index;
276+ lpdwName++;
277+ lpwOrdinal++;
278+ }
608279 }
609- else
610- {
611-#ifdef USE_DEBUG
612- g_warning ("import-module:%s\n", image + piid[i].Name);
613-#endif /* USE_DEBUG */
614- result = FALSE;
615- }
616- }
617- }
618- if (!result)
619- {
620- w32ldr_module_free (module);
621- return NULL;
622- }
623-
624- /* ja:リソース */
625- if (pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size)
626- {
627- PIMAGE_RESOURCE_DIRECTORY pird;
628-
629- pird = (PIMAGE_RESOURCE_DIRECTORY)(image
630- + pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress);
631- module->resource = g_hash_table_new (g_str_hash, g_str_equal);
632- w32ldr_module_resource_directory (module, pird, "");
633- }
634-
635- /* ja:再配置 */
636- if (pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size)
637- {
638- gint delta;
639- PIMAGE_BASE_RELOCATION pibr;
640-
641- pibr = (PIMAGE_BASE_RELOCATION)(image
642- + pioh->DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress);
643- delta = GPOINTER_TO_UINT (image) - pioh->ImageBase;
644- while (pibr->VirtualAddress)
645- {
646- gint count;
647-
648- count = (pibr->SizeOfBlock - sizeof (DWORD) * 2) / sizeof (WORD);
649- for (i = 0; i < count; i++)
650- if (((pibr->TypeOffset[i] >> 12) & 0xf) == IMAGE_REL_BASED_HIGHLOW)
651- *(LPDWORD)(image + pibr->VirtualAddress
652- + (pibr->TypeOffset[i] & 0xfff)) += delta;
653- pibr = (PIMAGE_BASE_RELOCATION)
654- (((guint8 *)pibr) + pibr->SizeOfBlock);
655- }
656- }
657-
658- if (exec && (pifh->Characteristics & IMAGE_FILE_DLL))
659- {
660- module->DllMain = w32ldr_module_get_func (module, "DllMain");
661- if (!module->DllMain && pioh->SizeOfHeaders < pioh->AddressOfEntryPoint
662- && pioh->AddressOfEntryPoint < leng)
663- module->DllMain = (DllEntryProc)(image + pioh->AddressOfEntryPoint);
664- if (module->DllMain)
665- module->DllMain ((W32LdrModule *)(module + 1),
666- DLL_PROCESS_ATTACH, NULL);
667- }
668- return module;
280+ break;
281+ }
282+ return image;
669283 }
670284
671285
672-static void
673-g_hash_table_callback (gpointer key,
674- gpointer value,
675- gpointer hash)
286+/* ja:再配置の差を求める
287+ process,プロセス
288+ image,PEイメージ
289+ user_data,ユーザデータ
290+ RET,差 */
291+static gint
292+w32ldr_module_callback_relocale (PeProcess *process,
293+ const guint8 *image,
294+ gpointer user_data)
676295 {
677- gpointer orig_key, orig_value;
678-
679- if (g_hash_table_lookup_extended ((GHashTable*)hash, key,
680- &orig_key, &orig_value))
681- {
682- g_free (orig_key);
683- g_free (orig_value);
684- }
296+ return GPOINTER_TO_UINT (image) - pe_ioh_get_image_base (image);
685297 }
686298
687299
688-/* ja:モジュールを解放する
689- module,モジュール
690- RET,TRUE:正常終了,NULL:エラー */
691-gboolean
692-w32ldr_module_free (W32LdrModule *module)
300+/* ja:DllMainを呼び出す
301+ process,プロセス
302+ image,PEイメージ
303+ reason,TRUE:ロード,FALSE:解放
304+ user_data,ユーザデータ
305+ RET,DllMainの返値 */
306+static gboolean
307+w32ldr_module_callback_entry (PeProcess *process,
308+ const guint8 *image,
309+ const gboolean reason,
310+ gpointer user_data)
693311 {
694- gboolean result;
312+ if (pe_ifh_get_characteristics (image) & IMAGE_FILE_DLL)
313+ {
314+ DllEntryProc DllMain;
695315
696-#ifdef USE_THREAD
697- G_LOCK (critical);
698- critical = TRUE;
699-#endif /* USE_THREAD */
700- result = module && g_list_find (glist_module, module);
701-#ifdef USE_THREAD
702- critical = FALSE;
703- G_UNLOCK (critical);
704-#endif /* USE_THREAD */
705- if (!result)
706- return FALSE;
707- module->counter--;
708- if (module->counter <= 0)
709- {
710- if (module->DllMain)
711- module->DllMain ((W32LdrModule *)(module + 1),
712- DLL_PROCESS_DETACH, NULL);
713-#ifdef USE_THREAD
714- G_LOCK (critical);
715- critical = TRUE;
716-#endif /* USE_THREAD */
717- glist_module = g_list_remove (glist_module, module);
718-#ifdef USE_THREAD
719- critical = FALSE;
720- G_UNLOCK (critical);
721-#endif /* USE_THREAD */
722- for (module->glist = g_list_first (module->glist); module->glist;
723- module->glist = g_list_delete_link (module->glist, module->glist))
724- if (!w32ldr_module_free (module->glist->data))
725- result = FALSE;
726- if (module->resource)
727- {
728- g_hash_table_foreach (module->resource,
729- g_hash_table_callback, module->resource);
730- g_hash_table_destroy (module->resource);
731- }
732- if (module->exports)
733- g_hash_table_destroy (module->exports);
734- if (module->ordinals)
735- g_hash_table_destroy (module->ordinals);
736- g_free (module->name);
737- g_free (module->file);
738- g_free (module);
316+ DllMain = peimage_file_get_func (image, "DllMain");
317+ if (!DllMain && pe_ioh_get_size_of_headers (image)
318+ < pe_ioh_get_address_of_entry_point (image)
319+ && pe_ioh_get_address_of_entry_point (image)
320+ < pe_ioh_get_size_of_image (image))
321+ DllMain = (DllEntryProc)(image
322+ + pe_ioh_get_address_of_entry_point (image));
323+ if (DllMain)
324+ return DllMain ((HANDLE)image, reason ? DLL_PROCESS_ATTACH
325+ : DLL_PROCESS_DETACH, NULL);
739326 }
740- return result;
327+ return TRUE;
741328 }
742329
743330
744-/* ja:モジュールからAPIを取得する
745- module,モジュール
746- name,API名
747- RET,アドレス,NULL:エラー */
331+/* ja:モジュールをロードする
332+ file,モジュール名
333+ exec,TRUE:DllMainを実行する,FALSE:ロードのみ
334+ RET,モジュール,NULL:エラー */
748335 gpointer
749-w32ldr_module_get_func (W32LdrModule *module,
750- const gchar *name)
336+w32ldr_module_load_library (const gchar *file,
337+ const gboolean exec)
751338 {
752- return module && module->exports
753- ? g_hash_table_lookup (module->exports, name) : NULL;
339+ if (!process)
340+ process = g_malloc0 (sizeof (PeProcess));
341+ return peimage_module_load_library (process,
342+ file,
343+ w32ldr_module_callback_system,
344+ w32ldr_module_callback_relocale,
345+ NULL,
346+ exec ? w32ldr_module_callback_entry : NULL,
347+ NULL);
754348 }
755349
756350
757-/* ja:モジュールからAPIを取得する
758- module,モジュール
759- ordinal,オーディナル値
760- RET,アドレス,NULL:エラー */
761-gpointer
762-w32ldr_module_get_proc (W32LdrModule *module,
763- const guint16 ordinal)
351+/* ja:モジュールを解放する
352+ memory,モジュール
353+ RET,TRUE:正常終了,FALSE:エラー */
354+gboolean
355+w32ldr_module_free (gpointer memory)
764356 {
765- return module && module->ordinals ? g_hash_table_lookup (module->ordinals,
766- GUINT_TO_POINTER ((guint)ordinal)) : NULL;
357+ if (!process)
358+ process = g_malloc0 (sizeof (PeProcess));
359+ return peimage_module_free_library (process, memory,
360+ w32ldr_module_callback_entry, NULL);
767361 }
768362
769363
770-/* ja:モジュールからリソースを取得する
771- module,モジュール
772- key,リソース
773- RET,データ,NULL:エラー */
774-gpointer
775-w32ldr_module_get_resource (W32LdrModule *module,
776- const gchar *key)
777-{
778- return module && module->resource
779- ? g_hash_table_lookup (module->resource, key) : NULL;
780-}
781-
782-
783-/******************************************************************************
784-* *
785-* ja:ディレクトリ関数群 *
786-* *
787-******************************************************************************/
788-/* ja:ディレクトリを取得する
789- dir,ディレクトリの種類
790- RET,ディレクトリ */
364+/* ja:モジュールの名前を取得する
365+ memory,モジュール
366+ RET,名前,NULL:エラー */
791367 const gchar *
792-w32ldr_dir_get_path (const guint dir)
368+w32ldr_module_get_filename (gpointer memory)
793369 {
794- gchar *file;
795- const gchar *key, *path = NULL;
796- const static gchar *dir_windows = NULL, *dir_system = NULL, *dir_temp = NULL;
797- const static gchar *dir_data = NULL, *dir_home = NULL;
798- gint i;
799- GKeyFile *key_file;
370+ if (!process)
371+ process = g_malloc0 (sizeof (PeProcess));
372+ return peimage_module_get_filename (process, memory);
800373
801- switch (dir)
802- {
803- case W32LDR_DIR_WINDOWS: if (dir_windows) return dir_windows; break;
804- case W32LDR_DIR_SYSTEM: if (dir_system) return dir_system; break;
805- case W32LDR_DIR_TEMP: if (dir_temp) return dir_temp; break;
806- case W32LDR_DIR_DATA: if (dir_data) return dir_data; break;
807- case W32LDR_DIR_HOME: if (dir_home) return dir_home;
808- }
809- for (i = 0; i < 2 && !path; i++)
810- {
811- switch (dir)
812- {
813- case W32LDR_DIR_WINDOWS:
814- file = w32ldr_dir_get_filename ("system.ini",
815- i == 0 ? W32LDR_DIR_HOME : W32LDR_DIR_DATA);
816- key = "windows";
817- break;
818- case W32LDR_DIR_SYSTEM:
819- file = w32ldr_dir_get_filename ("system.ini",
820- i == 0 ? W32LDR_DIR_HOME : W32LDR_DIR_DATA);
821- key = "system";
822- break;
823- case W32LDR_DIR_TEMP:
824- file = w32ldr_dir_get_filename ("system.ini",
825- i == 0 ? W32LDR_DIR_HOME : W32LDR_DIR_DATA);
826- key = "temp";
827- break;
828- case W32LDR_DIR_DATA:
829- if (i == 0)
830- {
831- file = g_build_filename (g_get_home_dir (),
832- ".maid.org", "w32ldr", "system.ini", NULL);
833- key = "data";
834- break;
835- }
836- default:
837- file = NULL;
838- key = NULL;
839- }
840- if (file && key)
841- {
842- gchar *tmp, *utf8str;
843-
844- key_file = g_key_file_new ();
845- tmp = w32ldr_dir_get_case_insensitive (file);
846- g_key_file_load_from_file (key_file, tmp, G_KEY_FILE_NONE, NULL);
847- g_free (tmp);
848- utf8str = g_key_file_get_string (key_file, "directory", key, NULL);
849- g_key_file_free (key_file);
850- if (utf8str)
851- {
852- path = g_filename_from_utf8 (utf8str, -1, NULL, NULL, NULL);
853- g_free (utf8str);
854- }
855- }
856- g_free (file);
857- }
858- switch (dir)
859- {
860- case W32LDR_DIR_WINDOWS:
861- return dir_windows = path ? path
862-#ifdef BINDIR
863- : g_build_filename (BINDIR, "w32ldr", NULL);
864-#else /* not BINDIR */
865- : "/usr/local/bin/w32ldr";
866-#endif /* not BINDIR */
867- case W32LDR_DIR_SYSTEM:
868- return dir_system = path ? path
869-#ifdef LIBDIR
870- : g_build_filename (LIBDIR, "w32ldr", NULL);
871-#else /* not LIBDIR */
872- : "/usr/local/lib/w32ldr";
873-#endif /* not LIBDIR */
874- case W32LDR_DIR_TEMP:
875- return dir_temp = path ? path : g_get_tmp_dir ();
876- case W32LDR_DIR_DATA:
877- return dir_data = path ? path
878-#ifdef SYSCONFDIR
879- : g_build_filename (SYSCONFDIR, "w32ldr", NULL);
880-#else /* not SYSCONFDIR */
881- : "/usr/local/etc/w32ldr";
882-#endif /* not SYSCONFDIR */
883- case W32LDR_DIR_HOME:
884- if (!dir_home)
885- dir_home = g_build_filename (g_get_home_dir (),
886- ".maid.org", "w32ldr", NULL);
887- return dir_home;
888- }
889- return NULL;
890374 }
891375
892376
893-/* ja:大文字小文字を区別しないパス名を求める
894- path,ファイル名
895- RET,大文字小文字を区別しないパス名 */
896-gchar *
897-w32ldr_dir_get_case_insensitive (const gchar *path)
898-{
899- gchar **element, *file = NULL;
900- gint i;
901-
902- if (!path)
903- return NULL;
904- if (path[0] == '\0')
905- return g_malloc0 (sizeof (gchar));
906- element = g_strsplit (path, G_DIR_SEPARATOR_S, 0);
907- for (i = 0; element[i]; i++)
908- if ((element[i])[0] == '\0')
909- {
910- if (!file)
911- file = g_strdup (G_DIR_SEPARATOR_S);
912- }
913- else
914- {
915- gchar *tmp;
916-
917- tmp = file ? g_build_filename (file, element[i], NULL)
918- : g_strdup (element[i]);
919- if (g_file_test (tmp, G_FILE_TEST_EXISTS))
920- {
921- g_free (file);
922- file = tmp;
923- }
924- else
925- {
926- const gchar *name;
927- GDir *dir;
928-
929- g_free (tmp);
930- tmp = NULL;
931- dir = g_dir_open (file ? file : ".", 0, NULL);
932- while ((name = g_dir_read_name (dir)))
933- if (g_ascii_strcasecmp (element[i], name) == 0)
934- {
935- tmp = file ? g_build_filename (file, name, NULL)
936- : g_strdup (name);
937- break;
938- }
939- g_dir_close (dir);
940- if (!tmp)
941- {
942- while (element[i])
943- {
944- if ((element[i])[0] != '\0')
945- {
946- tmp = file ? g_build_filename (file, element[i], NULL)
947- : g_strdup (element[i]);
948- g_free (file);
949- file = tmp;
950- }
951- i++;
952- }
953- break;
954- }
955- g_free (file);
956- file = tmp;
957- }
958- }
959- g_strfreev (element);
960- return file;
961-}
962-
963-
964-/* ja:特定のディレクトリのファイルを取得する
965- file,元のファイル名
966- dir,ディレクトリの種類
967- RET,ファイル */
968-gchar *
969-w32ldr_dir_get_filename (const gchar *file,
970- const guint dir)
971-{
972- gchar *name, *tmp, *result;
973-
974- name = g_path_get_basename (file);
975- tmp = g_build_filename (w32ldr_dir_get_path (dir), name, NULL);
976- g_free (name);
977- result = w32ldr_dir_get_case_insensitive (tmp);
978- g_free (tmp);
979- return result;
980-}
981-
982-
983377 /******************************************************************************
984378 * *
985379 * ja:文字列関数群 *
@@ -1067,7 +461,7 @@
1067461 (g_strlen (utf8str) - 1) * sizeof (gchar));
1068462 str = g_filename_from_utf8 (utf8str, -1, NULL, NULL, NULL);
1069463 g_free (utf8str);
1070- file = w32ldr_dir_get_case_insensitive (str);
464+ file = peimage_dir_get_case_insensitive (str);
1071465 g_free (str);
1072466 return file;
1073467 }
@@ -1137,7 +531,7 @@
1137531 (g_strlen (utf8str) - 1) * sizeof (gchar));
1138532 str = g_filename_from_utf8 (utf8str, -1, NULL, NULL, NULL);
1139533 g_free (utf8str);
1140- file = w32ldr_dir_get_case_insensitive (str);
534+ file = peimage_dir_get_case_insensitive (str);
1141535 g_free (str);
1142536 return file;
1143537 }
--- vmaid/trunk/w32loader/msvcrt.c (revision 314)
+++ vmaid/trunk/w32loader/msvcrt.c (revision 315)
@@ -1,6 +1,6 @@
11 /*
22 w32loader
3- copyright (c) 1998-2009 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
55 This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
@@ -6375,736 +6375,736 @@
63756375 }
63766376
63776377
6378-W32LdrExport msvcrt_exports[] = {
6379-{TRUE, 15, "??2@YAPAXI@Z", msvcrt_new},
6380-{TRUE, 16, "??3@YAXPAX@Z", msvcrt_delete},
6381-{FALSE, 52, "_CIacos", msvcrt_CIacos},
6382-{FALSE, 53, "_CIasin", msvcrt_CIasin},
6383-{FALSE, 54, "_CIatan", msvcrt_CIatan},
6384-{FALSE, 55, "_CIatan2", msvcrt_CIatan2},
6385-{FALSE, 56, "_CIcos", msvcrt_CIcos},
6386-{FALSE, 57, "_CIcosh", msvcrt_CIcosh},
6387-{FALSE, 58, "_CIexp", msvcrt_CIexp},
6388-{FALSE, 59, "_CIfmod", msvcrt_CIfmod},
6389-{FALSE, 60, "_CIlog", msvcrt_CIlog},
6390-{FALSE, 61, "_CIlog10", msvcrt_CIlog10},
6391-{FALSE, 62, "_CIpow", msvcrt_CIpow},
6392-{FALSE, 63, "_CIsin", msvcrt_CIsin},
6393-{FALSE, 64, "_CIsinh", msvcrt_CIsinh},
6394-{FALSE, 65, "_CIsqrt", msvcrt_CIsqrt},
6395-{FALSE, 66, "_CItan", msvcrt_CItan},
6396-{FALSE, 67, "_CItanh", msvcrt_CItanh},
6397-{FALSE, 68, "_CxxThrowException", msvcrt_CxxThrowException},
6398-{TRUE, 69, "_EH_prolog", msvcrt_EH_prolog},
6399-{FALSE, 70, "_Getdays", msvcrt_Getdays},
6400-{FALSE, 71, "_Getmonths", msvcrt_Getmonths},
6401-{FALSE, 72, "_Gettnames", msvcrt_Gettnames},
6402-{FALSE, 73, "_HUGE", msvcrt_HUGE},
6403-{FALSE, 74, "_Strftime", msvcrt_Strftime},
6404-{FALSE, 75, "_XcptFilter", msvcrt_XcptFilter},
6405-{TRUE, 76, "__CxxFrameHandler", msvcrt_CxxFrameHandler},
6406-{FALSE, 77, "__CxxLongjmpUnwind", msvcrt_CxxLongjmpUnwind},
6407-{FALSE, 78, "__RTCastToVoid", msvcrt_RTCastToVoid},
6408-{FALSE, 79, "__RTDynamicCast", msvcrt_RTDynamicCast},
6409-{FALSE, 80, "__RTtypeid", msvcrt_RTtypeid},
6410-{FALSE, 81, "__STRINGTOLD", msvcrt_STRINGTOLD},
6411-{FALSE, 82, "__argc", msvcrt_argc},
6412-{FALSE, 83, "__argv", msvcrt_argv},
6413-{FALSE, 84, "__badioinfo", msvcrt_badioinfo},
6414-{FALSE, 85, "__crtCompareStringA", msvcrt_crtCompareStringA},
6415-{FALSE, 86, "__crtGetLocaleInfoW", msvcrt_crtGetLocaleInfoW},
6416-{FALSE, 87, "__crtLCMapStringA", msvcrt_crtLCMapStringA},
6417-{TRUE, 88, "__dllonexit", msvcrt_dllonexit},
6418-{FALSE, 89, "__doserrno", msvcrt_doserrno},
6419-{FALSE, 90, "__fpecode", msvcrt_fpecode},
6420-{FALSE, 91, "__getmainargs", msvcrt_getmainargs},
6421-{FALSE, 92, "__initenv", msvcrt_initenv},
6422-{FALSE, 93, "__isascii", msvcrt_isascii},
6423-{FALSE, 94, "__iscsym", __iscsym},
6424-{FALSE, 95, "__iscsymf", __iscsymf},
6425-{FALSE, 96, "__lc_codepage", msvcrt_lc_codepage},
6426-{FALSE, 97, "__lc_collate_cp", msvcrt_lc_collate_cp},
6427-{FALSE, 98, "__lc_handle", msvcrt_lc_handle},
6428-{FALSE, 99, "__lconv_init", msvcrt_lconv_init},
6429-{FALSE, 100, "__mb_cur_max", msvcrt_mb_cur_max},
6430-{FALSE, 101, "__p___argc", msvcrt_p___argc},
6431-{FALSE, 102, "__p___argv", msvcrt_p___argv},
6432-{FALSE, 103, "__p___initenv", msvcrt_p___initenv},
6433-{FALSE, 104, "__p___mb_cur_max", msvcrt_p___mb_cur_max},
6434-{FALSE, 105, "__p___wargv", msvcrt_p___wargv},
6435-{FALSE, 106, "__p___winitenv", msvcrt_p___winitenv},
6436-{FALSE, 107, "__p__acmdln", msvcrt_p__acmdln},
6437-{FALSE, 108, "__p__amblksiz", msvcrt_p__amblksiz},
6438-{FALSE, 109, "__p__commode", msvcrt_p__commode},
6439-{FALSE, 110, "__p__daylight", msvcrt_p__daylight},
6440-{FALSE, 111, "__p__dstbias", msvcrt_p__dstbias},
6441-{FALSE, 112, "__p__environ", msvcrt_p__environ},
6442-{FALSE, 113, "__p__fileinfo", msvcrt_p__fileinfo},
6443-{FALSE, 114, "__p__fmode", msvcrt_p__fmode},
6444-{FALSE, 115, "__p__iob", msvcrt_p__iob},
6445-{FALSE, 116, "__p__mbcasemap", msvcrt_p__mbcasemap},
6446-{FALSE, 117, "__p__mbctype", msvcrt_p__mbctype},
6447-{FALSE, 118, "__p__osver", msvcrt_p__osver},
6448-{FALSE, 119, "__p__pctype", msvcrt_p__pctype},
6449-{FALSE, 120, "__p__pgmptr", msvcrt_p__pgmptr},
6450-{FALSE, 121, "__p__pwctype", msvcrt_p__pwctype},
6451-{FALSE, 122, "__p__timezone", msvcrt_p__timezone},
6452-{FALSE, 123, "__p__tzname", msvcrt_p__tzname},
6453-{FALSE, 124, "__p__wcmdln", msvcrt_p__wcmdln},
6454-{FALSE, 125, "__p__wenviron", msvcrt_p__wenviron},
6455-{FALSE, 126, "__p__winmajor", msvcrt_p__winmajor},
6456-{FALSE, 127, "__p__winminor", msvcrt_p__winminor},
6457-{FALSE, 128, "__p__winver", msvcrt_p__winver},
6458-{FALSE, 129, "__p__wpgmptr", msvcrt_p__wpgmptr},
6459-{FALSE, 130, "__pioinfo", msvcrt_pioinfo},
6460-{FALSE, 131, "__pxcptinfoptrs", msvcrt_pxcptinfoptrs},
6461-{FALSE, 132, "__set_app_type", msvcrt_set_app_type},
6462-{FALSE, 133, "__setlc_active", msvcrt_setlc_active},
6463-{FALSE, 134, "__setusermatherr", msvcrt_setusermatherr},
6464-{FALSE, 135, "__threadhandle", msvcrt_threadhandle},
6465-{FALSE, 136, "__threadid", msvcrt_threadid},
6466-{FALSE, 137, "__toascii", msvcrt__toascii},
6467-{FALSE, 138, "__unDName", msvcrt_unDName},
6468-{FALSE, 139, "__unDNameEx", msvcrt_unDNameEx},
6469-{FALSE, 140, "__unguarded_readlc_active", msvcrt_unguarded_readlc_active},
6470-{FALSE, 141, "__wargv", msvcrt_wargv},
6471-{FALSE, 142, "__wgetmainargs", msvcrt_wgetmainargs},
6472-{FALSE, 143, "__winitenv", msvcrt_winitenv},
6473-{FALSE, 144, "_abnormal_termination", msvcrt_abnormal_termination},
6474-{TRUE, 145, "_access", _access},
6475-{FALSE, 146, "_acmdln", msvcrt_acmdln},
6476-{FALSE, 147, "_adj_fdiv_m16i", msvcrt_adj_fdiv_m16i},
6477-{FALSE, 148, "_adj_fdiv_m32", msvcrt_adj_fdiv_m32},
6478-{FALSE, 149, "_adj_fdiv_m32i", msvcrt_adj_fdiv_m32i},
6479-{FALSE, 150, "_adj_fdiv_m64", msvcrt_adj_fdiv_m64},
6480-{FALSE, 151, "_adj_fdiv_r", msvcrt_adj_fdiv_r},
6481-{FALSE, 152, "_adj_fdivr_m16i", msvcrt_adj_fdivr_m16i},
6482-{FALSE, 153, "_adj_fdivr_m32", msvcrt_adj_fdivr_m32},
6483-{FALSE, 154, "_adj_fdivr_m32i", msvcrt_adj_fdivr_m32i},
6484-{FALSE, 155, "_adj_fdivr_m64", msvcrt_adj_fdivr_m64},
6485-{FALSE, 156, "_adj_fpatan", msvcrt_adj_fpatan},
6486-{FALSE, 157, "_adj_fprem", msvcrt_adj_fprem},
6487-{FALSE, 158, "_adj_fprem1", msvcrt_adj_fprem1},
6488-{FALSE, 159, "_adj_fptan", msvcrt_adj_fptan},
6489-{TRUE, 160, "_adjust_fdiv", &msvcrt_adjust_fdiv},
6490-{FALSE, 161, "_aexit_rtn", msvcrt_aexit_rtn},
6491-{FALSE, 162, "_amsg_exit", msvcrt_amsg_exit},
6492-{FALSE, 163, "_assert", msvcrt_assert},
6493-{FALSE, 164, "_atodbl", msvcrt_atodbl},
6494-{TRUE, 165, "_atoi64", _atoi64},
6495-{FALSE, 166, "_atoldbl", msvcrt_atoldbl},
6496-{FALSE, 167, "_beep", msvcrt_beep},
6497-{TRUE, 168, "_beginthread", _beginthread},
6498-{TRUE, 169, "_beginthreadex", _beginthreadex},
6499-{FALSE, 170, "_c_exit", _c_exit},
6500-{FALSE, 171, "_cabs", msvcrt_cabs},
6501-{FALSE, 172, "_callnewh", msvcrt_callnewh},
6502-{FALSE, 173, "_cexit", _cexit},
6503-{TRUE, 174, "_cgets", _cgets},
6504-{TRUE, 175, "_chdir", _chdir},
6505-{TRUE, 176, "_chdrive", _chdrive},
6506-{TRUE, 177, "_chgsign", _chgsign},
6507-{FALSE, 178, "_chkesp", msvcrt_chkesp},
6508-{TRUE, 179, "_chmod", _chmod},
6509-{TRUE, 180, "_chsize", _chsize},
6510-{TRUE, 181, "_clearfp", _clearfp},
6511-{TRUE, 182, "_close", msvcrt_close},
6512-{TRUE, 183, "_commit", _commit},
6513-{FALSE, 184, "_commode", msvcrt_commode},
6514-{TRUE, 185, "_control87", _control87},
6515-{TRUE, 186, "_controlfp", _controlfp},
6516-{TRUE, 187, "_copysign", msvcrt_copysign},
6517-{TRUE, 188, "_cprintf", _cprintf},
6518-{TRUE, 189, "_cputs", _cputs},
6519-{TRUE, 190, "_creat", _creat},
6520-{TRUE, 191, "_cscanf", _cscanf},
6521-{FALSE, 192, "_ctime64", msvcrt_ctime64},
6522-{FALSE, 193, "_ctype", msvcrt_ctype},
6523-{TRUE, 194, "_cwait", _cwait},
6524-{FALSE, 195, "_daylight", msvcrt_daylight},
6525-{FALSE, 196, "_dstbias", msvcrt_dstbias},
6526-{TRUE, 197, "_dup", msvcrt_dup},
6527-{TRUE, 198, "_dup2", msvcrt_dup2},
6528-{TRUE, 199, "_ecvt", msvcrt_ecvt},
6529-{TRUE, 200, "_endthread", _endthread},
6530-{TRUE, 201, "_endthreadex", _endthreadex},
6531-{FALSE, 202, "_environ", msvcrt_environ},
6532-{FALSE, 203, "_eof", _eof},
6533-{FALSE, 204, "_errno", msvcrt_errno},
6534-{FALSE, 205, "_except_handler2", msvcrt_except_handler2},
6535-{TRUE, 206, "_except_handler3", msvcrt_except_handler3},
6536-{TRUE, 207, "_execl", _execl},
6537-{TRUE, 208, "_execle", _execle},
6538-{TRUE, 209, "_execlp", _execlp},
6539-{TRUE, 210, "_execlpe", _execlpe},
6540-{TRUE, 211, "_execv", _execv},
6541-{TRUE, 212, "_execve", _execve},
6542-{TRUE, 213, "_execvp", _execvp},
6543-{TRUE, 214, "_execvpe", _execvpe},
6544-{TRUE, 215, "_exit", msvcrt__exit},
6545-{FALSE, 216, "_expand", _expand},
6546-{TRUE, 217, "_fcloseall", msvcrt_fcloseall},
6547-{TRUE, 218, "_fcvt", msvcrt_fcvt},
6548-{TRUE, 219, "_fdopen", _fdopen},
6549-{TRUE, 220, "_fgetchar", _fgetchar},
6550-{TRUE, 221, "_fgetwchar", _fgetwchar},
6551-{FALSE, 222, "_filbuf", msvcrt_filbuf},
6552-{FALSE, 223, "_fileinfo", msvcrt_fileinfo},
6553-{TRUE, 224, "_filelength", _filelength},
6554-{TRUE, 225, "_filelengthi64", _filelengthi64},
6555-{TRUE, 226, "_fileno", msvcrt_fileno},
6556-{FALSE, 227, "_findclose", _findclose},
6557-{FALSE, 228, "_findfirst", _findfirst},
6558-{FALSE, 229, "_findfirst64", _findfirst64},
6559-{FALSE, 230, "_findfirsti64", _findfirsti64},
6560-{FALSE, 231, "_findnext", _findnext},
6561-{FALSE, 232, "_findnext64", _findnext64},
6562-{FALSE, 233, "_findnexti64", _findnexti64},
6563-{TRUE, 234, "_finite", msvcrt_finite},
6564-{FALSE, 235, "_flsbuf", msvcrt_flsbuf},
6565-{FALSE, 236, "_flushall", _flushall},
6566-{FALSE, 237, "_fmode", msvcrt_fmode},
6567-{FALSE, 238, "_fpclass", _fpclass},
6568-{FALSE, 239, "_fpieee_flt", _fpieee_flt},
6569-{FALSE, 240, "_fpreset", _fpreset},
6570-{TRUE, 241, "_fputchar", _fputchar},
6571-{TRUE, 242, "_fputwchar", _fputwchar},
6572-{TRUE, 243, "_fsopen", _fsopen},
6573-{TRUE, 244, "_fstat", _fstat},
6574-{TRUE, 245, "_fstat64", _fstat64},
6575-{TRUE, 246, "_fstati64", _fstati64},
6576-{TRUE, 247, "_ftime", msvcrt_ftime},
6577-{FALSE, 248, "_ftime64", msvcrt_ftime64},
6578-{TRUE, 249, "_ftol", msvcrt_ftol},
6579-{FALSE, 250, "_fullpath", _fullpath},
6580-{FALSE, 251, "_futime", _futime},
6581-{FALSE, 252, "_futime64", _futime64},
6582-{FALSE, 253, "_gcvt", msvcrt_gcvt},
6583-{FALSE, 254, "_get_heap_handle", msvcrt_get_heap_handle},
6584-{FALSE, 255, "_get_osfhandle", _get_osfhandle},
6585-{FALSE, 256, "_get_sbh_threshold", _get_sbh_threshold},
6586-{FALSE, 257, "_getch", _getch},
6587-{FALSE, 258, "_getche", _getche},
6588-{FALSE, 259, "_getcwd", _getcwd},
6589-{FALSE, 260, "_getdcwd", _getdcwd},
6590-{FALSE, 261, "_getdiskfree", msvcrt_getdiskfree},
6591-{FALSE, 262, "_getdllprocaddr", msvcrt_getdllprocaddr},
6592-{FALSE, 263, "_getdrive", _getdrive},
6593-{FALSE, 264, "_getdrives", msvcrt_getdrives},
6594-{FALSE, 265, "_getmaxstdio", msvcrt_getmaxstdio},
6595-{FALSE, 266, "_getmbcp", _getmbcp},
6596-{FALSE, 267, "_getpid", msvcrt_getpid},
6597-{FALSE, 268, "_getsystime", msvcrt_getsystime},
6598-{FALSE, 269, "_getw", msvcrt_getw},
6599-{FALSE, 270, "_getws", msvcrt_getws},
6600-{FALSE, 271, "_global_unwind2", msvcrt_global_unwind2},
6601-{FALSE, 272, "_gmtime64", msvcrt_gmtime64},
6602-{FALSE, 273, "_heapadd", _heapadd},
6603-{FALSE, 274, "_heapchk", _heapchk},
6604-{FALSE, 275, "_heapmin", _heapmin},
6605-{FALSE, 276, "_heapset", _heapset},
6606-{FALSE, 277, "_heapused", _heapused},
6607-{FALSE, 278, "_heapwalk", _heapwalk},
6608-{FALSE, 279, "_hypot", msvcrt_hypot},
6609-{TRUE, 280, "_i64toa", _i64toa},
6610-{FALSE, 281, "_i64tow", _i64tow},
6611-{TRUE, 282, "_initterm", msvcrt_initterm},
6612-{FALSE, 283, "_inp", _inp},
6613-{FALSE, 284, "_inpd", _inpd},
6614-{FALSE, 285, "_inpw", _inpw},
6615-{FALSE, 286, "_iob", msvcrt_iob},
6616-{FALSE, 287, "_isatty", msvcrt_isatty},
6617-{FALSE, 288, "_isctype", msvcrt_isctype},
6618-{FALSE, 289, "_ismbbalnum", _ismbbalnum},
6619-{FALSE, 290, "_ismbbalpha", _ismbbalpha},
6620-{FALSE, 291, "_ismbbgraph", _ismbbgraph},
6621-{FALSE, 292, "_ismbbkalnum", _ismbbkalnum},
6622-{FALSE, 293, "_ismbbkana", _ismbbkana},
6623-{FALSE, 294, "_ismbbkprint", _ismbbkprint},
6624-{FALSE, 295, "_ismbbkpunct", _ismbbkpunct},
6625-{FALSE, 296, "_ismbblead", _ismbblead},
6626-{FALSE, 297, "_ismbbprint", _ismbbprint},
6627-{FALSE, 298, "_ismbbpunct", _ismbbpunct},
6628-{FALSE, 299, "_ismbbtrail", _ismbbtrail},
6629-{FALSE, 300, "_ismbcalnum", _ismbcalnum},
6630-{FALSE, 301, "_ismbcalpha", _ismbcalpha},
6631-{FALSE, 302, "_ismbcdigit", _ismbcdigit},
6632-{FALSE, 303, "_ismbcgraph", _ismbcgraph},
6633-{FALSE, 304, "_ismbchira", _ismbchira},
6634-{FALSE, 305, "_ismbckata", _ismbckata},
6635-{FALSE, 306, "_ismbcl0", _ismbcl0},
6636-{FALSE, 307, "_ismbcl1", _ismbcl1},
6637-{FALSE, 308, "_ismbcl2", _ismbcl2},
6638-{FALSE, 309, "_ismbclegal", _ismbclegal},
6639-{FALSE, 310, "_ismbclower", _ismbclower},
6640-{FALSE, 311, "_ismbcprint", _ismbcprint},
6641-{FALSE, 312, "_ismbcpunct", _ismbcpunct},
6642-{FALSE, 313, "_ismbcspace", _ismbcspace},
6643-{FALSE, 314, "_ismbcsymbol", _ismbcsymbol},
6644-{FALSE, 315, "_ismbcupper", _ismbcupper},
6645-{TRUE, 316, "_ismbslead", _ismbslead},
6646-{TRUE, 317, "_ismbstrail", _ismbstrail},
6647-{FALSE, 318, "_isnan", msvcrt_isnan},
6648-{FALSE, 319, "_itoa", _itoa},
6649-{FALSE, 320, "_itow", _itow},
6650-{FALSE, 321, "_j0", msvcrt_j0},
6651-{FALSE, 322, "_j1", msvcrt_j1},
6652-{FALSE, 323, "_jn", msvcrt_jn},
6653-{FALSE, 324, "_kbhit", _kbhit},
6654-{FALSE, 325, "_lfind", msvcrt_lfind},
6655-{FALSE, 326, "_loaddll", msvcrt_loaddll},
6656-{FALSE, 327, "_local_unwind2", msvcrt_local_unwind2},
6657-{FALSE, 328, "_localtime64", msvcrt_localtime64},
6658-{FALSE, 329, "_lock", msvcrt_lock},
6659-{FALSE, 330, "_locking", _locking},
6660-{FALSE, 331, "_logb", msvcrt_logb},
6661-{FALSE, 332, "_longjmpex", msvcrt_longjmpex},
6662-{FALSE, 333, "_lrotl", _lrotl},
6663-{FALSE, 334, "_lrotr", _lrotr},
6664-{FALSE, 335, "_lsearch", msvcrt_lsearch},
6665-{FALSE, 336, "_lseek", msvcrt_lseek},
6666-{FALSE, 337, "_lseeki64", msvcrt_lseeki64},
6667-{FALSE, 338, "_ltoa", _ltoa},
6668-{FALSE, 339, "_ltow", _ltow},
6669-{FALSE, 340, "_makepath", _makepath},
6670-{FALSE, 341, "_mbbtombc", _mbbtombc},
6671-{FALSE, 342, "_mbbtype", _mbbtype},
6672-{FALSE, 343, "_mbcasemap", _mbcasemap},
6673-{FALSE, 344, "_mbccpy", _mbccpy},
6674-{TRUE, 345, "_mbcjistojms", _mbcjistojms},
6675-{TRUE, 346, "_mbcjmstojis", _mbcjmstojis},
6676-{FALSE, 347, "_mbclen", _mbclen},
6677-{FALSE, 348, "_mbctohira", _mbctohira},
6678-{FALSE, 349, "_mbctokata", _mbctokata},
6679-{FALSE, 350, "_mbctolower", _mbctolower},
6680-{FALSE, 351, "_mbctombb", _mbctombb},
6681-{FALSE, 352, "_mbctoupper", _mbctoupper},
6682-{FALSE, 353, "_mbctype", _mbctype},
6683-{FALSE, 354, "_mbsbtype", msvcrt_mbsbtype},
6684-{FALSE, 355, "_mbscat", _mbscat},
6685-{TRUE, 356, "_mbschr", _mbschr},
6686-{TRUE, 357, "_mbscmp", _mbscmp},
6687-{FALSE, 358, "_mbscoll", _mbscoll},
6688-{FALSE, 359, "_mbscpy", _mbscpy},
6689-{FALSE, 360, "_mbscspn", _mbscspn},
6690-{TRUE, 361, "_mbsdec", _mbsdec},
6691-{FALSE, 362, "_mbsdup", _mbsdup},
6692-{TRUE, 363, "_mbsicmp", _mbsicmp},
6693-{FALSE, 364, "_mbsicoll", _mbsicoll},
6694-{TRUE, 365, "_mbsinc", _mbsinc},
6695-{TRUE, 366, "_mbslen", _mbslen},
6696-{TRUE, 367, "_mbslwr", _mbslwr},
6697-{FALSE, 368, "_mbsnbcat", _mbsnbcat},
6698-{FALSE, 369, "_mbsnbcmp", _mbsnbcmp},
6699-{FALSE, 370, "_mbsnbcnt", _mbsnbcnt},
6700-{FALSE, 371, "_mbsnbcoll", _mbsnbcoll},
6701-{FALSE, 372, "_mbsnbcpy", _mbsnbcpy},
6702-{FALSE, 373, "_mbsnbicmp", _mbsnbicmp},
6703-{FALSE, 374, "_mbsnbicoll", _mbsnbicoll},
6704-{FALSE, 375, "_mbsnbset", _mbsnbset},
6705-{FALSE, 376, "_mbsncat", _mbsncat},
6706-{FALSE, 377, "_mbsnccnt", _mbsnccnt},
6707-{TRUE, 378, "_mbsncmp", _mbsncmp},
6708-{FALSE, 379, "_mbsncoll", _mbsncoll},
6709-{FALSE, 380, "_mbsncpy", _mbsncpy},
6710-{FALSE, 381, "_mbsnextc", _mbsnextc},
6711-{FALSE, 382, "_mbsnicmp", _mbsnicmp},
6712-{FALSE, 383, "_mbsnicoll", _mbsnicoll},
6713-{TRUE, 384, "_mbsninc", _mbsninc},
6714-{FALSE, 385, "_mbsnset", _mbsnset},
6715-{FALSE, 386, "_mbspbrk", _mbspbrk},
6716-{TRUE, 387, "_mbsrchr", _mbsrchr},
6717-{FALSE, 388, "_mbsrev", _mbsrev},
6718-{FALSE, 389, "_mbsset", _mbsset},
6719-{FALSE, 390, "_mbsspn", _mbsspn},
6720-{FALSE, 391, "_mbsspnp", _mbsspnp},
6721-{TRUE, 392, "_mbsstr", _mbsstr},
6722-{FALSE, 393, "_mbstok", _mbstok},
6723-{FALSE, 394, "_mbstrlen", _mbstrlen},
6724-{TRUE, 395, "_mbsupr", _mbsupr},
6725-{FALSE, 396, "_memccpy", msvcrt_memccpy},
6726-{FALSE, 397, "_memicmp", _memicmp},
6727-{TRUE, 398, "_mkdir", _mkdir},
6728-{FALSE, 399, "_mktemp", _mktemp},
6729-{FALSE, 400, "_mktime64", msvcrt_mktime64},
6730-{FALSE, 401, "_msize", _msize},
6731-{FALSE, 402, "_nextafter", msvcrt_nextafter},
6732-{TRUE, 403, "_onexit", _onexit},
6733-{FALSE, 404, "_open", _open},
6734-{FALSE, 405, "_open_osfhandle", _open_osfhandle},
6735-{FALSE, 406, "_osplatform", msvcrt_osplatform},
6736-{FALSE, 407, "_osver", msvcrt_osver},
6737-{FALSE, 408, "_outp", _outp},
6738-{FALSE, 409, "_outpd", _outpd},
6739-{FALSE, 410, "_outpw", _outpw},
6740-{FALSE, 411, "_pclose", msvcrt_pclose},
6741-{FALSE, 412, "_pctype", msvcrt_pctype},
6742-{FALSE, 413, "_pgmptr", msvcrt_pgmptr},
6743-{FALSE, 414, "_pipe", msvcrt_pipe},
6744-{FALSE, 415, "_popen", _popen},
6745-{FALSE, 416, "_purecall", msvcrt_purecall},
6746-{FALSE, 417, "_putch", _putch},
6747-{FALSE, 418, "_putenv", _putenv},
6748-{FALSE, 419, "_putw", _putw},
6749-{FALSE, 420, "_putws", _putws},
6750-{FALSE, 421, "_pwctype", msvcrt_pwctype},
6751-{FALSE, 422, "_read", msvcrt_read},
6752-{FALSE, 423, "_rmdir", _rmdir},
6753-{FALSE, 424, "_rmtmp", _rmtmp},
6754-{FALSE, 425, "_rotl", _rotl},
6755-{FALSE, 426, "_rotr", _rotr},
6756-{FALSE, 427, "_safe_fdiv", msvcrt_safe_fdiv},
6757-{FALSE, 428, "_safe_fdivr", msvcrt_safe_fdivr},
6758-{FALSE, 429, "_safe_fprem", msvcrt_safe_fprem},
6759-{FALSE, 430, "_safe_fprem1", msvcrt_safe_fprem1},
6760-{FALSE, 431, "_scalb", msvcrt_scalb},
6761-{FALSE, 432, "_searchenv", _searchenv},
6762-{FALSE, 433, "_seh_longjmp_unwind", msvcrt_seh_longjmp_unwind},
6763-{FALSE, 434, "_set_error_mode", msvcrt_set_error_mode},
6764-{FALSE, 435, "_set_sbh_threshold", _set_sbh_threshold},
6765-{FALSE, 436, "_seterrormode", msvcrt_seterrormode},
6766-{FALSE, 437, "_setjmp", msvcrt_setjmp},
6767-{FALSE, 438, "_setjmp3", msvcrt_setjmp3},
6768-{FALSE, 439, "_setmaxstdio", _setmaxstdio},
6769-{FALSE, 440, "_setmbcp", _setmbcp},
6770-{FALSE, 441, "_setmode", _setmode},
6771-{FALSE, 442, "_setsystime", msvcrt_setsystime},
6772-{FALSE, 443, "_sleep", msvcrt_sleep},
6773-{FALSE, 444, "_snprintf", msvcrt_snprintf},
6774-{FALSE, 445, "_snwprintf", _snwprintf},
6775-{FALSE, 446, "_sopen", _sopen},
6776-{FALSE, 447, "_spawnl", _spawnl},
6777-{FALSE, 448, "_spawnle", _spawnle},
6778-{FALSE, 449, "_spawnlp", _spawnlp},
6779-{FALSE, 450, "_spawnlpe", _spawnlpe},
6780-{FALSE, 451, "_spawnv", _spawnv},
6781-{FALSE, 452, "_spawnve", _spawnve},
6782-{FALSE, 453, "_spawnvp", _spawnvp},
6783-{FALSE, 454, "_spawnvpe", _spawnvpe},
6784-{FALSE, 455, "_splitpath", _splitpath},
6785-{FALSE, 456, "_stat", _stat},
6786-{FALSE, 457, "_stat64", msvcrt_stat64},
6787-{FALSE, 458, "_stati64", _stati64},
6788-{FALSE, 459, "_statusfp", _statusfp},
6789-{TRUE, 460, "_strcmpi", msvcrt_strcmpi},
6790-{FALSE, 461, "_strdate", _strdate},
6791-{FALSE, 462, "_strdup", msvcrt_strdup},
6792-{FALSE, 463, "_strerror", _strerror},
6793-{TRUE, 464, "_stricmp", _stricmp},
6794-{FALSE, 465, "_stricoll", _stricoll},
6795-{TRUE, 466, "_strlwr", _strlwr},
6796-{FALSE, 467, "_strncoll", _strncoll},
6797-{TRUE, 468, "_strnicmp", _strnicmp},
6798-{FALSE, 469, "_strnicoll", _strnicoll},
6799-{FALSE, 470, "_strnset", _strnset},
6800-{TRUE, 471, "_strrev", _strrev},
6801-{FALSE, 472, "_strset", _strset},
6802-{FALSE, 473, "_strtime", _strtime},
6803-{TRUE, 474, "_strupr", _strupr},
6804-{FALSE, 475, "_swab", msvcrt_swab},
6805-{FALSE, 476, "_sys_errlist", msvcrt_sys_errlist},
6806-{FALSE, 477, "_sys_nerr", msvcrt_sys_nerr},
6807-{FALSE, 478, "_tell", _tell},
6808-{FALSE, 479, "_telli64", _telli64},
6809-{FALSE, 480, "_tempnam", _tempnam},
6810-{FALSE, 481, "_time64", msvcrt_time64},
6811-{FALSE, 482, "_timezone", msvcrt_timezone},
6812-{FALSE, 483, "_tolower", msvcrt__tolower},
6813-{FALSE, 484, "_toupper", msvcrt__toupper},
6814-{FALSE, 485, "_tzname", msvcrt_tzname},
6815-{FALSE, 486, "_tzset", msvcrt_tzset},
6816-{TRUE, 487, "_ui64toa", _ui64toa},
6817-{FALSE, 488, "_ui64tow", _ui64tow},
6818-{FALSE, 489, "_ultoa", _ultoa},
6819-{FALSE, 490, "_ultow", _ultow},
6820-{FALSE, 491, "_umask", msvcrt_umask},
6821-{FALSE, 492, "_ungetch", _ungetch},
6822-{TRUE, 493, "_unlink", _unlink},
6823-{FALSE, 494, "_unloaddll", msvcrt_unloaddll},
6824-{FALSE, 495, "_unlock", msvcrt_unlock},
6825-{FALSE, 496, "_utime", _utime},
6826-{FALSE, 497, "_utime64", msvcrt_utime64},
6827-{FALSE, 498, "_vsnprintf", msvcrt_vsnprintf},
6828-{FALSE, 499, "_vsnwprintf", _vsnwprintf},
6829-{TRUE, 500, "_waccess", _waccess},
6830-{FALSE, 501, "_wasctime", _wasctime},
6831-{TRUE, 502, "_wchdir", _wchdir},
6832-{TRUE, 503, "_wchmod", _wchmod},
6833-{FALSE, 504, "_wcmdln", msvcrt_wcmdln},
6834-{TRUE, 505, "_wcreat", _wcreat},
6835-{FALSE, 506, "_wcsdup", _wcsdup},
6836-{FALSE, 507, "_wcsicmp", _wcsicmp},
6837-{FALSE, 508, "_wcsicoll", _wcsicoll},
6838-{FALSE, 509, "_wcslwr", _wcslwr},
6839-{FALSE, 510, "_wcsncoll", _wcsncoll},
6840-{FALSE, 511, "_wcsnicmp", _wcsnicmp},
6841-{FALSE, 512, "_wcsnicoll", _wcsnicoll},
6842-{FALSE, 513, "_wcsnset", _wcsnset},
6843-{TRUE, 514, "_wcsrev", _wcsrev},
6844-{FALSE, 515, "_wcsset", _wcsset},
6845-{FALSE, 516, "_wcsupr", _wcsupr},
6846-{FALSE, 517, "_wctime", msvcrt_wctime},
6847-{FALSE, 518, "_wctime64", msvcrt_wctime64},
6848-{FALSE, 519, "_wenviron", msvcrt_wenviron},
6849-{TRUE, 520, "_wexecl", _wexecl},
6850-{TRUE, 521, "_wexecle", _wexecle},
6851-{TRUE, 522, "_wexeclp", _wexeclp},
6852-{TRUE, 523, "_wexeclpe", _wexeclpe},
6853-{TRUE, 524, "_wexecv", _wexecv},
6854-{TRUE, 525, "_wexecve", _wexecve},
6855-{TRUE, 526, "_wexecvp", _wexecvp},
6856-{TRUE, 527, "_wexecvpe", _wexecvpe},
6857-{TRUE, 528, "_wfdopen", _wfdopen},
6858-{FALSE, 529, "_wfindfirst", _wfindfirst},
6859-{FALSE, 530, "_wfindfirst64", _wfindfirst64},
6860-{FALSE, 531, "_wfindfirsti64", _wfindfirsti64},
6861-{FALSE, 532, "_wfindnext", _wfindnext},
6862-{FALSE, 533, "_wfindnext64", _wfindnext64},
6863-{FALSE, 534, "_wfindnexti64", _wfindnexti64},
6864-{TRUE, 535, "_wfopen", _wfopen},
6865-{TRUE, 536, "_wfreopen", _wfreopen},
6866-{TRUE, 537, "_wfsopen", _wfsopen},
6867-{FALSE, 538, "_wfullpath", _wfullpath},
6868-{FALSE, 539, "_wgetcwd", _wgetcwd},
6869-{FALSE, 540, "_wgetdcwd", _wgetdcwd},
6870-{FALSE, 541, "_wgetenv", _wgetenv},
6871-{FALSE, 542, "_winmajor", msvcrt_winmajor},
6872-{FALSE, 543, "_winminor", msvcrt_winminor},
6873-{FALSE, 544, "_winver", msvcrt_winver},
6874-{FALSE, 545, "_wmakepath", _wmakepath},
6875-{TRUE, 546, "_wmkdir", _wmkdir},
6876-{FALSE, 547, "_wmktemp", _wmktemp},
6877-{FALSE, 548, "_wopen", _wopen},
6878-{FALSE, 549, "_wperror", _wperror},
6879-{FALSE, 550, "_wpgmptr", msvcrt_wpgmptr},
6880-{FALSE, 551, "_wpopen", _wpopen},
6881-{FALSE, 552, "_wputenv", _wputenv},
6882-{FALSE, 553, "_wremove", _wremove},
6883-{FALSE, 554, "_wrename", _wrename},
6884-{FALSE, 555, "_write", msvcrt_write},
6885-{FALSE, 556, "_wrmdir", _wrmdir},
6886-{FALSE, 557, "_wsearchenv", _wsearchenv},
6887-{FALSE, 558, "_wsetlocale", _wsetlocale},
6888-{FALSE, 559, "_wsopen", _wsopen},
6889-{FALSE, 560, "_wspawnl", _wspawnl},
6890-{FALSE, 561, "_wspawnle", _wspawnle},
6891-{FALSE, 562, "_wspawnlp", _wspawnlp},
6892-{FALSE, 563, "_wspawnlpe", _wspawnlpe},
6893-{FALSE, 564, "_wspawnv", _wspawnv},
6894-{FALSE, 565, "_wspawnve", _wspawnve},
6895-{FALSE, 566, "_wspawnvp", _wspawnvp},
6896-{FALSE, 567, "_wspawnvpe", _wspawnvpe},
6897-{FALSE, 568, "_wsplitpath", _wsplitpath},
6898-{FALSE, 569, "_wstat", _wstat},
6899-{FALSE, 570, "_wstat64", msvcrt_wstat64},
6900-{FALSE, 571, "_wstati64", _wstati64},
6901-{FALSE, 572, "_wstrdate", _wstrdate},
6902-{FALSE, 573, "_wstrtime", _wstrtime},
6903-{FALSE, 574, "_wsystem", _wsystem},
6904-{FALSE, 575, "_wtempnam", _wtempnam},
6905-{FALSE, 576, "_wtmpnam", _wtmpnam},
6906-{FALSE, 577, "_wtoi", _wtoi},
6907-{FALSE, 578, "_wtoi64", msvcrt_wtoi64},
6908-{FALSE, 579, "_wtol", _wtol},
6909-{TRUE, 580, "_wunlink", _wunlink},
6910-{FALSE, 581, "_wutime", _wutime},
6911-{FALSE, 582, "_wutime64", msvcrt_wutime64},
6912-{FALSE, 583, "_y0", msvcrt_y0},
6913-{FALSE, 584, "_y1", msvcrt_y1},
6914-{FALSE, 585, "_yn", msvcrt_yn},
6915-{FALSE, 586, "abort", msvcrt_abort},
6916-{FALSE, 587, "abs", msvcrt_abs},
6917-{FALSE, 588, "acos", msvcrt_acos},
6918-{FALSE, 589, "asctime", msvcrt_asctime},
6919-{FALSE, 590, "asin", msvcrt_asin},
6920-{FALSE, 591, "atan", msvcrt_atan},
6921-{FALSE, 592, "atan2", msvcrt_atan2},
6922-{FALSE, 593, "atexit", msvcrt_atexit},
6923-{TRUE, 594, "atof", msvcrt_atof},
6924-{FALSE, 595, "atoi", msvcrt_atoi},
6925-{FALSE, 596, "atol", msvcrt_atol},
6926-{FALSE, 597, "bsearch", msvcrt_bsearch},
6927-{FALSE, 598, "calloc", msvcrt_calloc},
6928-{FALSE, 599, "ceil", msvcrt_ceil},
6929-{FALSE, 600, "clearerr", msvcrt_clearerr},
6930-{FALSE, 601, "clock", msvcrt_clock},
6931-{FALSE, 602, "cos", msvcrt_cos},
6932-{FALSE, 603, "cosh", msvcrt_cosh},
6933-{FALSE, 604, "ctime", msvcrt_ctime},
6934-{FALSE, 605, "difftime", msvcrt_difftime},
6935-{FALSE, 606, "div", msvcrt_div},
6936-{TRUE, 607, "exit", msvcrt_exit},
6937-{FALSE, 608, "exp", msvcrt_exp},
6938-{FALSE, 609, "fabs", msvcrt_fabs},
6939-{FALSE, 610, "fclose", msvcrt_fclose},
6940-{FALSE, 611, "feof", msvcrt_feof},
6941-{FALSE, 612, "ferror", msvcrt_ferror},
6942-{FALSE, 613, "fflush", msvcrt_fflush},
6943-{FALSE, 614, "fgetc", msvcrt_fgetc},
6944-{FALSE, 615, "fgetpos", msvcrt_fgetpos},
6945-{FALSE, 616, "fgets", msvcrt_fgets},
6946-{FALSE, 617, "fgetwc", msvcrt_fgetwc},
6947-{FALSE, 618, "fgetws", msvcrt_fgetws},
6948-{FALSE, 619, "floor", msvcrt_floor},
6949-{FALSE, 620, "fmod", msvcrt_fmod},
6950-{TRUE, 621, "fopen", msvcrt_fopen},
6951-{FALSE, 622, "fprintf", msvcrt_fprintf},
6952-{FALSE, 623, "fputc", msvcrt_fputc},
6953-{FALSE, 624, "fputs", msvcrt_fputs},
6954-{FALSE, 625, "fputwc", msvcrt_fputwc},
6955-{FALSE, 626, "fputws", msvcrt_fputws},
6956-{FALSE, 627, "fread", msvcrt_fread},
6957-{TRUE, 628, "free", msvcrt_free},
6958-{TRUE, 629, "freopen", msvcrt_freopen},
6959-{FALSE, 630, "frexp", msvcrt_frexp},
6960-{TRUE, 631, "fscanf", msvcrt_fscanf},
6961-{FALSE, 632, "fseek", msvcrt_fseek},
6962-{FALSE, 633, "fsetpos", msvcrt_fsetpos},
6963-{FALSE, 634, "ftell", msvcrt_ftell},
6964-{FALSE, 635, "fwprintf", msvcrt_fwprintf},
6965-{FALSE, 636, "fwrite", msvcrt_fwrite},
6966-{TRUE, 637, "fwscanf", fwscanf},
6967-{FALSE, 638, "getc", msvcrt_getc},
6968-{FALSE, 639, "getchar", msvcrt_getchar},
6969-{FALSE, 640, "getenv", msvcrt_getenv},
6970-{FALSE, 641, "gets", msvcrt_gets},
6971-{FALSE, 642, "getwc", msvcrt_getwc},
6972-{FALSE, 643, "getwchar", msvcrt_getwchar},
6973-{FALSE, 644, "gmtime", msvcrt_gmtime},
6974-{FALSE, 645, "is_wctype", msvcrt_is_wctype},
6975-{TRUE, 646, "isalnum", msvcrt_isalnum},
6976-{FALSE, 647, "isalpha", msvcrt_isalpha},
6977-{FALSE, 648, "iscntrl", msvcrt_iscntrl},
6978-{FALSE, 649, "isdigit", msvcrt_isdigit},
6979-{FALSE, 650, "isgraph", msvcrt_isgraph},
6980-{TRUE, 651, "isleadbyte", isleadbyte},
6981-{FALSE, 652, "islower", msvcrt_islower},
6982-{FALSE, 653, "isprint", msvcrt_isprint},
6983-{FALSE, 654, "ispunct", msvcrt_ispunct},
6984-{FALSE, 655, "isspace", msvcrt_isspace},
6985-{FALSE, 656, "isupper", msvcrt_isupper},
6986-{FALSE, 657, "iswalnum", msvcrt_iswalnum},
6987-{FALSE, 658, "iswalpha", msvcrt_iswalpha},
6988-{FALSE, 659, "iswascii", iswascii},
6989-{FALSE, 660, "iswcntrl", msvcrt_iswcntrl},
6990-{FALSE, 661, "iswctype", msvcrt_iswctype},
6991-{FALSE, 662, "iswdigit", msvcrt_iswdigit},
6992-{FALSE, 663, "iswgraph", msvcrt_iswgraph},
6993-{FALSE, 664, "iswlower", msvcrt_iswlower},
6994-{FALSE, 665, "iswprint", msvcrt_iswprint},
6995-{FALSE, 666, "iswpunct", msvcrt_iswpunct},
6996-{FALSE, 667, "iswspace", msvcrt_iswspace},
6997-{FALSE, 668, "iswupper", msvcrt_iswupper},
6998-{FALSE, 669, "iswxdigit", msvcrt_iswxdigit},
6999-{FALSE, 670, "isxdigit", msvcrt_isxdigit},
7000-{FALSE, 671, "labs", msvcrt_labs},
7001-{FALSE, 672, "ldexp", msvcrt_ldexp},
7002-{FALSE, 673, "ldiv", msvcrt_ldiv},
7003-{FALSE, 674, "localeconv", msvcrt_localeconv},
7004-{FALSE, 675, "localtime", msvcrt_localtime},
7005-{FALSE, 676, "log", msvcrt_log},
7006-{FALSE, 677, "log10", msvcrt_log10},
7007-{FALSE, 678, "longjmp", msvcrt_longjmp},
7008-{TRUE, 679, "malloc", msvcrt_malloc},
7009-{FALSE, 680, "mblen", msvcrt_mblen},
7010-{FALSE, 681, "mbstowcs", msvcrt_mbstowcs},
7011-{FALSE, 682, "mbtowc", msvcrt_mbtowc},
7012-{FALSE, 683, "memchr", msvcrt_memchr},
7013-{FALSE, 684, "memcmp", msvcrt_memcmp},
7014-{TRUE, 685, "memcpy", msvcrt_memcpy},
7015-{TRUE, 686, "memmove", msvcrt_memmove},
7016-{FALSE, 687, "memset", msvcrt_memset},
7017-{FALSE, 688, "mktime", msvcrt_mktime},
7018-{FALSE, 689, "modf", msvcrt_modf},
7019-{FALSE, 690, "perror", msvcrt_perror},
7020-{FALSE, 691, "pow", msvcrt_pow},
7021-{FALSE, 692, "printf", msvcrt_printf},
7022-{FALSE, 693, "putc", msvcrt_putc},
7023-{FALSE, 694, "putchar", msvcrt_putchar},
7024-{FALSE, 695, "puts", msvcrt_puts},
7025-{FALSE, 696, "putwc", msvcrt_putwc},
7026-{FALSE, 697, "putwchar", msvcrt_putwchar},
7027-{FALSE, 698, "qsort", msvcrt_qsort},
7028-{FALSE, 699, "raise", msvcrt_raise},
7029-{TRUE, 700, "rand", msvcrt_rand},
7030-{FALSE, 701, "realloc", msvcrt_realloc},
7031-{FALSE, 702, "remove", msvcrt_remove},
7032-{FALSE, 703, "rename", msvcrt_rename},
7033-{FALSE, 704, "rewind", msvcrt_rewind},
7034-{TRUE, 705, "scanf", msvcrt_scanf},
7035-{FALSE, 706, "setbuf", msvcrt_setbuf},
7036-{FALSE, 707, "setlocale", msvcrt_setlocale},
7037-{FALSE, 708, "setvbuf", msvcrt_setvbuf},
7038-{FALSE, 709, "signal", msvcrt_signal},
7039-{FALSE, 710, "sin", msvcrt_sin},
7040-{FALSE, 711, "sinh", msvcrt_sinh},
7041-{FALSE, 712, "sprintf", msvcrt_sprintf},
7042-{FALSE, 713, "sqrt", msvcrt_sqrt},
7043-{TRUE, 714, "srand", msvcrt_srand},
7044-{TRUE, 715, "sscanf", msvcrt_sscanf},
7045-{FALSE, 716, "strcat", msvcrt_strcat},
7046-{TRUE, 717, "strchr", msvcrt_strchr},
7047-{FALSE, 718, "strcmp", msvcrt_strcmp},
7048-{FALSE, 719, "strcoll", msvcrt_strcoll},
7049-{FALSE, 720, "strcpy", msvcrt_strcpy},
7050-{FALSE, 721, "strcspn", msvcrt_strcspn},
7051-{FALSE, 722, "strerror", msvcrt_strerror},
7052-{FALSE, 723, "strftime", msvcrt_strftime},
7053-{FALSE, 724, "strlen", msvcrt_strlen},
7054-{FALSE, 725, "strncat", msvcrt_strncat},
7055-{FALSE, 726, "strncmp", msvcrt_strncmp},
7056-{FALSE, 727, "strncpy", msvcrt_strncpy},
7057-{FALSE, 728, "strpbrk", msvcrt_strpbrk},
7058-{TRUE, 729, "strrchr", msvcrt_strrchr},
7059-{FALSE, 730, "strspn", msvcrt_strspn},
7060-{FALSE, 731, "strstr", msvcrt_strstr},
7061-{FALSE, 732, "strtod", msvcrt_strtod},
7062-{FALSE, 733, "strtok", msvcrt_strtok},
7063-{FALSE, 734, "strtol", msvcrt_strtol},
7064-{FALSE, 735, "strtoul", msvcrt_strtoul},
7065-{FALSE, 736, "strxfrm", msvcrt_strxfrm},
7066-{FALSE, 737, "swprintf", msvcrt_swprintf},
7067-{TRUE, 738, "swscanf", swscanf},
7068-{FALSE, 739, "system", msvcrt_system},
7069-{FALSE, 740, "tan", msvcrt_tan},
7070-{FALSE, 741, "tanh", msvcrt_tanh},
7071-{FALSE, 742, "time", msvcrt_time},
7072-{FALSE, 743, "tmpfile", msvcrt_tmpfile},
7073-{FALSE, 744, "tmpnam", msvcrt_tmpnam},
7074-{FALSE, 745, "tolower", msvcrt_tolower},
7075-{TRUE, 746, "toupper", msvcrt_toupper},
7076-{FALSE, 747, "towlower", msvcrt_towlower},
7077-{FALSE, 748, "towupper", msvcrt_towupper},
7078-{FALSE, 749, "ungetc", msvcrt_ungetc},
7079-{FALSE, 750, "ungetwc", msvcrt_ungetwc},
7080-{FALSE, 751, "vfprintf", msvcrt_vfprintf},
7081-{FALSE, 752, "vfwprintf", msvcrt_vfwprintf},
7082-{FALSE, 753, "vprintf", msvcrt_vprintf},
7083-{FALSE, 754, "vsprintf", msvcrt_vsprintf},
7084-{FALSE, 755, "vswprintf", msvcrt_vswprintf},
7085-{FALSE, 756, "vwprintf", msvcrt_vwprintf},
7086-{FALSE, 757, "wcscat", msvcrt_wcscat},
7087-{FALSE, 758, "wcschr", msvcrt_wcschr},
7088-{FALSE, 759, "wcscmp", msvcrt_wcscmp},
7089-{FALSE, 760, "wcscoll", wcscoll},
7090-{TRUE, 761, "wcscpy", msvcrt_wcscpy},
7091-{FALSE, 762, "wcscspn", msvcrt_wcscspn},
7092-{FALSE, 763, "wcsftime", wcsftime},
7093-{FALSE, 764, "wcslen", msvcrt_wcslen},
7094-{FALSE, 765, "wcsncat", msvcrt_wcsncat},
7095-{FALSE, 766, "wcsncmp", msvcrt_wcsncmp},
7096-{FALSE, 767, "wcsncpy", msvcrt_wcsncpy},
7097-{FALSE, 768, "wcspbrk", msvcrt_wcspbrk},
7098-{FALSE, 769, "wcsrchr", msvcrt_wcsrchr},
7099-{FALSE, 770, "wcsspn", msvcrt_wcsspn},
7100-{FALSE, 771, "wcsstr", msvcrt_wcsstr},
7101-{FALSE, 772, "wcstod", wcstod},
7102-{FALSE, 773, "wcstok", msvcrt_wcstok},
7103-{FALSE, 774, "wcstol", wcstol},
7104-{FALSE, 775, "wcstombs", msvcrt_wcstombs},
7105-{FALSE, 776, "wcstoul", wcstoul},
7106-{FALSE, 777, "wcsxfrm", wcsxfrm},
7107-{FALSE, 778, "wctomb", msvcrt_wctomb},
7108-{FALSE, 779, "wprintf", msvcrt_wprintf},
7109-{TRUE, 780, "wscanf", wscanf},
7110-{FALSE, 0, NULL, NULL}};
6378+W32LdrExport w32ldr_msvcrt_exports[] = {
6379+{ 0, 15, "??2@YAPAXI@Z", msvcrt_new},
6380+{ 0, 16, "??3@YAXPAX@Z", msvcrt_delete},
6381+{-1, 52, "_CIacos", msvcrt_CIacos},
6382+{-1, 53, "_CIasin", msvcrt_CIasin},
6383+{-1, 54, "_CIatan", msvcrt_CIatan},
6384+{-1, 55, "_CIatan2", msvcrt_CIatan2},
6385+{-1, 56, "_CIcos", msvcrt_CIcos},
6386+{-1, 57, "_CIcosh", msvcrt_CIcosh},
6387+{-1, 58, "_CIexp", msvcrt_CIexp},
6388+{-1, 59, "_CIfmod", msvcrt_CIfmod},
6389+{-1, 60, "_CIlog", msvcrt_CIlog},
6390+{-1, 61, "_CIlog10", msvcrt_CIlog10},
6391+{-1, 62, "_CIpow", msvcrt_CIpow},
6392+{-1, 63, "_CIsin", msvcrt_CIsin},
6393+{-1, 64, "_CIsinh", msvcrt_CIsinh},
6394+{-1, 65, "_CIsqrt", msvcrt_CIsqrt},
6395+{-1, 66, "_CItan", msvcrt_CItan},
6396+{-1, 67, "_CItanh", msvcrt_CItanh},
6397+{-1, 68, "_CxxThrowException", msvcrt_CxxThrowException},
6398+{ 0, 69, "_EH_prolog", msvcrt_EH_prolog},
6399+{-1, 70, "_Getdays", msvcrt_Getdays},
6400+{-1, 71, "_Getmonths", msvcrt_Getmonths},
6401+{-1, 72, "_Gettnames", msvcrt_Gettnames},
6402+{-1, 73, "_HUGE", msvcrt_HUGE},
6403+{-1, 74, "_Strftime", msvcrt_Strftime},
6404+{-1, 75, "_XcptFilter", msvcrt_XcptFilter},
6405+{ 0, 76, "__CxxFrameHandler", msvcrt_CxxFrameHandler},
6406+{-1, 77, "__CxxLongjmpUnwind", msvcrt_CxxLongjmpUnwind},
6407+{-1, 78, "__RTCastToVoid", msvcrt_RTCastToVoid},
6408+{-1, 79, "__RTDynamicCast", msvcrt_RTDynamicCast},
6409+{-1, 80, "__RTtypeid", msvcrt_RTtypeid},
6410+{-1, 81, "__STRINGTOLD", msvcrt_STRINGTOLD},
6411+{-1, 82, "__argc", msvcrt_argc},
6412+{-1, 83, "__argv", msvcrt_argv},
6413+{-1, 84, "__badioinfo", msvcrt_badioinfo},
6414+{-1, 85, "__crtCompareStringA", msvcrt_crtCompareStringA},
6415+{-1, 86, "__crtGetLocaleInfoW", msvcrt_crtGetLocaleInfoW},
6416+{-1, 87, "__crtLCMapStringA", msvcrt_crtLCMapStringA},
6417+{ 0, 88, "__dllonexit", msvcrt_dllonexit},
6418+{-1, 89, "__doserrno", msvcrt_doserrno},
6419+{-1, 90, "__fpecode", msvcrt_fpecode},
6420+{-1, 91, "__getmainargs", msvcrt_getmainargs},
6421+{-1, 92, "__initenv", msvcrt_initenv},
6422+{-1, 93, "__isascii", msvcrt_isascii},
6423+{-1, 94, "__iscsym", __iscsym},
6424+{-1, 95, "__iscsymf", __iscsymf},
6425+{-1, 96, "__lc_codepage", msvcrt_lc_codepage},
6426+{-1, 97, "__lc_collate_cp", msvcrt_lc_collate_cp},
6427+{-1, 98, "__lc_handle", msvcrt_lc_handle},
6428+{-1, 99, "__lconv_init", msvcrt_lconv_init},
6429+{-1, 100, "__mb_cur_max", msvcrt_mb_cur_max},
6430+{-1, 101, "__p___argc", msvcrt_p___argc},
6431+{-1, 102, "__p___argv", msvcrt_p___argv},
6432+{-1, 103, "__p___initenv", msvcrt_p___initenv},
6433+{-1, 104, "__p___mb_cur_max", msvcrt_p___mb_cur_max},
6434+{-1, 105, "__p___wargv", msvcrt_p___wargv},
6435+{-1, 106, "__p___winitenv", msvcrt_p___winitenv},
6436+{-1, 107, "__p__acmdln", msvcrt_p__acmdln},
6437+{-1, 108, "__p__amblksiz", msvcrt_p__amblksiz},
6438+{-1, 109, "__p__commode", msvcrt_p__commode},
6439+{-1, 110, "__p__daylight", msvcrt_p__daylight},
6440+{-1, 111, "__p__dstbias", msvcrt_p__dstbias},
6441+{-1, 112, "__p__environ", msvcrt_p__environ},
6442+{-1, 113, "__p__fileinfo", msvcrt_p__fileinfo},
6443+{-1, 114, "__p__fmode", msvcrt_p__fmode},
6444+{-1, 115, "__p__iob", msvcrt_p__iob},
6445+{-1, 116, "__p__mbcasemap", msvcrt_p__mbcasemap},
6446+{-1, 117, "__p__mbctype", msvcrt_p__mbctype},
6447+{-1, 118, "__p__osver", msvcrt_p__osver},
6448+{-1, 119, "__p__pctype", msvcrt_p__pctype},
6449+{-1, 120, "__p__pgmptr", msvcrt_p__pgmptr},
6450+{-1, 121, "__p__pwctype", msvcrt_p__pwctype},
6451+{-1, 122, "__p__timezone", msvcrt_p__timezone},
6452+{-1, 123, "__p__tzname", msvcrt_p__tzname},
6453+{-1, 124, "__p__wcmdln", msvcrt_p__wcmdln},
6454+{-1, 125, "__p__wenviron", msvcrt_p__wenviron},
6455+{-1, 126, "__p__winmajor", msvcrt_p__winmajor},
6456+{-1, 127, "__p__winminor", msvcrt_p__winminor},
6457+{-1, 128, "__p__winver", msvcrt_p__winver},
6458+{-1, 129, "__p__wpgmptr", msvcrt_p__wpgmptr},
6459+{-1, 130, "__pioinfo", msvcrt_pioinfo},
6460+{-1, 131, "__pxcptinfoptrs", msvcrt_pxcptinfoptrs},
6461+{-1, 132, "__set_app_type", msvcrt_set_app_type},
6462+{-1, 133, "__setlc_active", msvcrt_setlc_active},
6463+{-1, 134, "__setusermatherr", msvcrt_setusermatherr},
6464+{-1, 135, "__threadhandle", msvcrt_threadhandle},
6465+{-1, 136, "__threadid", msvcrt_threadid},
6466+{-1, 137, "__toascii", msvcrt__toascii},
6467+{-1, 138, "__unDName", msvcrt_unDName},
6468+{-1, 139, "__unDNameEx", msvcrt_unDNameEx},
6469+{-1, 140, "__unguarded_readlc_active", msvcrt_unguarded_readlc_active},
6470+{-1, 141, "__wargv", msvcrt_wargv},
6471+{-1, 142, "__wgetmainargs", msvcrt_wgetmainargs},
6472+{-1, 143, "__winitenv", msvcrt_winitenv},
6473+{-1, 144, "_abnormal_termination", msvcrt_abnormal_termination},
6474+{ 0, 145, "_access", _access},
6475+{-1, 146, "_acmdln", msvcrt_acmdln},
6476+{-1, 147, "_adj_fdiv_m16i", msvcrt_adj_fdiv_m16i},
6477+{-1, 148, "_adj_fdiv_m32", msvcrt_adj_fdiv_m32},
6478+{-1, 149, "_adj_fdiv_m32i", msvcrt_adj_fdiv_m32i},
6479+{-1, 150, "_adj_fdiv_m64", msvcrt_adj_fdiv_m64},
6480+{-1, 151, "_adj_fdiv_r", msvcrt_adj_fdiv_r},
6481+{-1, 152, "_adj_fdivr_m16i", msvcrt_adj_fdivr_m16i},
6482+{-1, 153, "_adj_fdivr_m32", msvcrt_adj_fdivr_m32},
6483+{-1, 154, "_adj_fdivr_m32i", msvcrt_adj_fdivr_m32i},
6484+{-1, 155, "_adj_fdivr_m64", msvcrt_adj_fdivr_m64},
6485+{-1, 156, "_adj_fpatan", msvcrt_adj_fpatan},
6486+{-1, 157, "_adj_fprem", msvcrt_adj_fprem},
6487+{-1, 158, "_adj_fprem1", msvcrt_adj_fprem1},
6488+{-1, 159, "_adj_fptan", msvcrt_adj_fptan},
6489+{ 4, 160, "_adjust_fdiv", &msvcrt_adjust_fdiv},
6490+{-1, 161, "_aexit_rtn", msvcrt_aexit_rtn},
6491+{-1, 162, "_amsg_exit", msvcrt_amsg_exit},
6492+{-1, 163, "_assert", msvcrt_assert},
6493+{-1, 164, "_atodbl", msvcrt_atodbl},
6494+{ 0, 165, "_atoi64", _atoi64},
6495+{-1, 166, "_atoldbl", msvcrt_atoldbl},
6496+{-1, 167, "_beep", msvcrt_beep},
6497+{ 0, 168, "_beginthread", _beginthread},
6498+{ 0, 169, "_beginthreadex", _beginthreadex},
6499+{-1, 170, "_c_exit", _c_exit},
6500+{-1, 171, "_cabs", msvcrt_cabs},
6501+{-1, 172, "_callnewh", msvcrt_callnewh},
6502+{-1, 173, "_cexit", _cexit},
6503+{ 0, 174, "_cgets", _cgets},
6504+{ 0, 175, "_chdir", _chdir},
6505+{ 0, 176, "_chdrive", _chdrive},
6506+{ 0, 177, "_chgsign", _chgsign},
6507+{-1, 178, "_chkesp", msvcrt_chkesp},
6508+{ 0, 179, "_chmod", _chmod},
6509+{ 0, 180, "_chsize", _chsize},
6510+{ 0, 181, "_clearfp", _clearfp},
6511+{ 0, 182, "_close", msvcrt_close},
6512+{ 0, 183, "_commit", _commit},
6513+{-1, 184, "_commode", msvcrt_commode},
6514+{ 0, 185, "_control87", _control87},
6515+{ 0, 186, "_controlfp", _controlfp},
6516+{ 0, 187, "_copysign", msvcrt_copysign},
6517+{ 0, 188, "_cprintf", _cprintf},
6518+{ 0, 189, "_cputs", _cputs},
6519+{ 0, 190, "_creat", _creat},
6520+{ 0, 191, "_cscanf", _cscanf},
6521+{-1, 192, "_ctime64", msvcrt_ctime64},
6522+{-1, 193, "_ctype", msvcrt_ctype},
6523+{ 0, 194, "_cwait", _cwait},
6524+{-1, 195, "_daylight", msvcrt_daylight},
6525+{-1, 196, "_dstbias", msvcrt_dstbias},
6526+{ 0, 197, "_dup", msvcrt_dup},
6527+{ 0, 198, "_dup2", msvcrt_dup2},
6528+{ 0, 199, "_ecvt", msvcrt_ecvt},
6529+{ 0, 200, "_endthread", _endthread},
6530+{ 0, 201, "_endthreadex", _endthreadex},
6531+{-1, 202, "_environ", msvcrt_environ},
6532+{-1, 203, "_eof", _eof},
6533+{-1, 204, "_errno", msvcrt_errno},
6534+{-1, 205, "_except_handler2", msvcrt_except_handler2},
6535+{ 0, 206, "_except_handler3", msvcrt_except_handler3},
6536+{ 0, 207, "_execl", _execl},
6537+{ 0, 208, "_execle", _execle},
6538+{ 0, 209, "_execlp", _execlp},
6539+{ 0, 210, "_execlpe", _execlpe},
6540+{ 0, 211, "_execv", _execv},
6541+{ 0, 212, "_execve", _execve},
6542+{ 0, 213, "_execvp", _execvp},
6543+{ 0, 214, "_execvpe", _execvpe},
6544+{ 0, 215, "_exit", msvcrt__exit},
6545+{-1, 216, "_expand", _expand},
6546+{ 0, 217, "_fcloseall", msvcrt_fcloseall},
6547+{ 0, 218, "_fcvt", msvcrt_fcvt},
6548+{ 0, 219, "_fdopen", _fdopen},
6549+{ 0, 220, "_fgetchar", _fgetchar},
6550+{ 0, 221, "_fgetwchar", _fgetwchar},
6551+{-1, 222, "_filbuf", msvcrt_filbuf},
6552+{-1, 223, "_fileinfo", msvcrt_fileinfo},
6553+{ 0, 224, "_filelength", _filelength},
6554+{ 0, 225, "_filelengthi64", _filelengthi64},
6555+{ 0, 226, "_fileno", msvcrt_fileno},
6556+{-1, 227, "_findclose", _findclose},
6557+{-1, 228, "_findfirst", _findfirst},
6558+{-1, 229, "_findfirst64", _findfirst64},
6559+{-1, 230, "_findfirsti64", _findfirsti64},
6560+{-1, 231, "_findnext", _findnext},
6561+{-1, 232, "_findnext64", _findnext64},
6562+{-1, 233, "_findnexti64", _findnexti64},
6563+{ 0, 234, "_finite", msvcrt_finite},
6564+{-1, 235, "_flsbuf", msvcrt_flsbuf},
6565+{-1, 236, "_flushall", _flushall},
6566+{-1, 237, "_fmode", msvcrt_fmode},
6567+{-1, 238, "_fpclass", _fpclass},
6568+{-1, 239, "_fpieee_flt", _fpieee_flt},
6569+{-1, 240, "_fpreset", _fpreset},
6570+{ 0, 241, "_fputchar", _fputchar},
6571+{ 0, 242, "_fputwchar", _fputwchar},
6572+{ 0, 243, "_fsopen", _fsopen},
6573+{ 0, 244, "_fstat", _fstat},
6574+{ 0, 245, "_fstat64", _fstat64},
6575+{ 0, 246, "_fstati64", _fstati64},
6576+{ 0, 247, "_ftime", msvcrt_ftime},
6577+{-1, 248, "_ftime64", msvcrt_ftime64},
6578+{ 0, 249, "_ftol", msvcrt_ftol},
6579+{-1, 250, "_fullpath", _fullpath},
6580+{-1, 251, "_futime", _futime},
6581+{-1, 252, "_futime64", _futime64},
6582+{-1, 253, "_gcvt", msvcrt_gcvt},
6583+{-1, 254, "_get_heap_handle", msvcrt_get_heap_handle},
6584+{-1, 255, "_get_osfhandle", _get_osfhandle},
6585+{-1, 256, "_get_sbh_threshold", _get_sbh_threshold},
6586+{-1, 257, "_getch", _getch},
6587+{-1, 258, "_getche", _getche},
6588+{-1, 259, "_getcwd", _getcwd},
6589+{-1, 260, "_getdcwd", _getdcwd},
6590+{-1, 261, "_getdiskfree", msvcrt_getdiskfree},
6591+{-1, 262, "_getdllprocaddr", msvcrt_getdllprocaddr},
6592+{-1, 263, "_getdrive", _getdrive},
6593+{-1, 264, "_getdrives", msvcrt_getdrives},
6594+{-1, 265, "_getmaxstdio", msvcrt_getmaxstdio},
6595+{-1, 266, "_getmbcp", _getmbcp},
6596+{-1, 267, "_getpid", msvcrt_getpid},
6597+{-1, 268, "_getsystime", msvcrt_getsystime},
6598+{-1, 269, "_getw", msvcrt_getw},
6599+{-1, 270, "_getws", msvcrt_getws},
6600+{-1, 271, "_global_unwind2", msvcrt_global_unwind2},
6601+{-1, 272, "_gmtime64", msvcrt_gmtime64},
6602+{-1, 273, "_heapadd", _heapadd},
6603+{-1, 274, "_heapchk", _heapchk},
6604+{-1, 275, "_heapmin", _heapmin},
6605+{-1, 276, "_heapset", _heapset},
6606+{-1, 277, "_heapused", _heapused},
6607+{-1, 278, "_heapwalk", _heapwalk},
6608+{-1, 279, "_hypot", msvcrt_hypot},
6609+{ 0, 280, "_i64toa", _i64toa},
6610+{-1, 281, "_i64tow", _i64tow},
6611+{ 0, 282, "_initterm", msvcrt_initterm},
6612+{-1, 283, "_inp", _inp},
6613+{-1, 284, "_inpd", _inpd},
6614+{-1, 285, "_inpw", _inpw},
6615+{-1, 286, "_iob", msvcrt_iob},
6616+{-1, 287, "_isatty", msvcrt_isatty},
6617+{-1, 288, "_isctype", msvcrt_isctype},
6618+{-1, 289, "_ismbbalnum", _ismbbalnum},
6619+{-1, 290, "_ismbbalpha", _ismbbalpha},
6620+{-1, 291, "_ismbbgraph", _ismbbgraph},
6621+{-1, 292, "_ismbbkalnum", _ismbbkalnum},
6622+{-1, 293, "_ismbbkana", _ismbbkana},
6623+{-1, 294, "_ismbbkprint", _ismbbkprint},
6624+{-1, 295, "_ismbbkpunct", _ismbbkpunct},
6625+{-1, 296, "_ismbblead", _ismbblead},
6626+{-1, 297, "_ismbbprint", _ismbbprint},
6627+{-1, 298, "_ismbbpunct", _ismbbpunct},
6628+{-1, 299, "_ismbbtrail", _ismbbtrail},
6629+{-1, 300, "_ismbcalnum", _ismbcalnum},
6630+{-1, 301, "_ismbcalpha", _ismbcalpha},
6631+{-1, 302, "_ismbcdigit", _ismbcdigit},
6632+{-1, 303, "_ismbcgraph", _ismbcgraph},
6633+{-1, 304, "_ismbchira", _ismbchira},
6634+{-1, 305, "_ismbckata", _ismbckata},
6635+{-1, 306, "_ismbcl0", _ismbcl0},
6636+{-1, 307, "_ismbcl1", _ismbcl1},
6637+{-1, 308, "_ismbcl2", _ismbcl2},
6638+{-1, 309, "_ismbclegal", _ismbclegal},
6639+{-1, 310, "_ismbclower", _ismbclower},
6640+{-1, 311, "_ismbcprint", _ismbcprint},
6641+{-1, 312, "_ismbcpunct", _ismbcpunct},
6642+{-1, 313, "_ismbcspace", _ismbcspace},
6643+{-1, 314, "_ismbcsymbol", _ismbcsymbol},
6644+{-1, 315, "_ismbcupper", _ismbcupper},
6645+{ 0, 316, "_ismbslead", _ismbslead},
6646+{ 0, 317, "_ismbstrail", _ismbstrail},
6647+{-1, 318, "_isnan", msvcrt_isnan},
6648+{-1, 319, "_itoa", _itoa},
6649+{-1, 320, "_itow", _itow},
6650+{-1, 321, "_j0", msvcrt_j0},
6651+{-1, 322, "_j1", msvcrt_j1},
6652+{-1, 323, "_jn", msvcrt_jn},
6653+{-1, 324, "_kbhit", _kbhit},
6654+{-1, 325, "_lfind", msvcrt_lfind},
6655+{-1, 326, "_loaddll", msvcrt_loaddll},
6656+{-1, 327, "_local_unwind2", msvcrt_local_unwind2},
6657+{-1, 328, "_localtime64", msvcrt_localtime64},
6658+{-1, 329, "_lock", msvcrt_lock},
6659+{-1, 330, "_locking", _locking},
6660+{-1, 331, "_logb", msvcrt_logb},
6661+{-1, 332, "_longjmpex", msvcrt_longjmpex},
6662+{-1, 333, "_lrotl", _lrotl},
6663+{-1, 334, "_lrotr", _lrotr},
6664+{-1, 335, "_lsearch", msvcrt_lsearch},
6665+{-1, 336, "_lseek", msvcrt_lseek},
6666+{-1, 337, "_lseeki64", msvcrt_lseeki64},
6667+{-1, 338, "_ltoa", _ltoa},
6668+{-1, 339, "_ltow", _ltow},
6669+{-1, 340, "_makepath", _makepath},
6670+{-1, 341, "_mbbtombc", _mbbtombc},
6671+{-1, 342, "_mbbtype", _mbbtype},
6672+{-1, 343, "_mbcasemap", _mbcasemap},
6673+{-1, 344, "_mbccpy", _mbccpy},
6674+{ 0, 345, "_mbcjistojms", _mbcjistojms},
6675+{ 0, 346, "_mbcjmstojis", _mbcjmstojis},
6676+{-1, 347, "_mbclen", _mbclen},
6677+{-1, 348, "_mbctohira", _mbctohira},
6678+{-1, 349, "_mbctokata", _mbctokata},
6679+{-1, 350, "_mbctolower", _mbctolower},
6680+{-1, 351, "_mbctombb", _mbctombb},
6681+{-1, 352, "_mbctoupper", _mbctoupper},
6682+{-1, 353, "_mbctype", _mbctype},
6683+{-1, 354, "_mbsbtype", msvcrt_mbsbtype},
6684+{-1, 355, "_mbscat", _mbscat},
6685+{ 0, 356, "_mbschr", _mbschr},
6686+{ 0, 357, "_mbscmp", _mbscmp},
6687+{-1, 358, "_mbscoll", _mbscoll},
6688+{-1, 359, "_mbscpy", _mbscpy},
6689+{-1, 360, "_mbscspn", _mbscspn},
6690+{ 0, 361, "_mbsdec", _mbsdec},
6691+{-1, 362, "_mbsdup", _mbsdup},
6692+{ 0, 363, "_mbsicmp", _mbsicmp},
6693+{-1, 364, "_mbsicoll", _mbsicoll},
6694+{ 0, 365, "_mbsinc", _mbsinc},
6695+{ 0, 366, "_mbslen", _mbslen},
6696+{ 0, 367, "_mbslwr", _mbslwr},
6697+{-1, 368, "_mbsnbcat", _mbsnbcat},
6698+{-1, 369, "_mbsnbcmp", _mbsnbcmp},
6699+{-1, 370, "_mbsnbcnt", _mbsnbcnt},
6700+{-1, 371, "_mbsnbcoll", _mbsnbcoll},
6701+{-1, 372, "_mbsnbcpy", _mbsnbcpy},
6702+{-1, 373, "_mbsnbicmp", _mbsnbicmp},
6703+{-1, 374, "_mbsnbicoll", _mbsnbicoll},
6704+{-1, 375, "_mbsnbset", _mbsnbset},
6705+{-1, 376, "_mbsncat", _mbsncat},
6706+{-1, 377, "_mbsnccnt", _mbsnccnt},
6707+{ 0, 378, "_mbsncmp", _mbsncmp},
6708+{-1, 379, "_mbsncoll", _mbsncoll},
6709+{-1, 380, "_mbsncpy", _mbsncpy},
6710+{-1, 381, "_mbsnextc", _mbsnextc},
6711+{-1, 382, "_mbsnicmp", _mbsnicmp},
6712+{-1, 383, "_mbsnicoll", _mbsnicoll},
6713+{ 0, 384, "_mbsninc", _mbsninc},
6714+{-1, 385, "_mbsnset", _mbsnset},
6715+{-1, 386, "_mbspbrk", _mbspbrk},
6716+{ 0, 387, "_mbsrchr", _mbsrchr},
6717+{-1, 388, "_mbsrev", _mbsrev},
6718+{-1, 389, "_mbsset", _mbsset},
6719+{-1, 390, "_mbsspn", _mbsspn},
6720+{-1, 391, "_mbsspnp", _mbsspnp},
6721+{ 0, 392, "_mbsstr", _mbsstr},
6722+{-1, 393, "_mbstok", _mbstok},
6723+{-1, 394, "_mbstrlen", _mbstrlen},
6724+{ 0, 395, "_mbsupr", _mbsupr},
6725+{-1, 396, "_memccpy", msvcrt_memccpy},
6726+{-1, 397, "_memicmp", _memicmp},
6727+{ 0, 398, "_mkdir", _mkdir},
6728+{-1, 399, "_mktemp", _mktemp},
6729+{-1, 400, "_mktime64", msvcrt_mktime64},
6730+{-1, 401, "_msize", _msize},
6731+{-1, 402, "_nextafter", msvcrt_nextafter},
6732+{ 0, 403, "_onexit", _onexit},
6733+{-1, 404, "_open", _open},
6734+{-1, 405, "_open_osfhandle", _open_osfhandle},
6735+{-1, 406, "_osplatform", msvcrt_osplatform},
6736+{-1, 407, "_osver", msvcrt_osver},
6737+{-1, 408, "_outp", _outp},
6738+{-1, 409, "_outpd", _outpd},
6739+{-1, 410, "_outpw", _outpw},
6740+{-1, 411, "_pclose", msvcrt_pclose},
6741+{-1, 412, "_pctype", msvcrt_pctype},
6742+{-1, 413, "_pgmptr", msvcrt_pgmptr},
6743+{-1, 414, "_pipe", msvcrt_pipe},
6744+{-1, 415, "_popen", _popen},
6745+{-1, 416, "_purecall", msvcrt_purecall},
6746+{-1, 417, "_putch", _putch},
6747+{-1, 418, "_putenv", _putenv},
6748+{-1, 419, "_putw", _putw},
6749+{-1, 420, "_putws", _putws},
6750+{-1, 421, "_pwctype", msvcrt_pwctype},
6751+{-1, 422, "_read", msvcrt_read},
6752+{-1, 423, "_rmdir", _rmdir},
6753+{-1, 424, "_rmtmp", _rmtmp},
6754+{-1, 425, "_rotl", _rotl},
6755+{-1, 426, "_rotr", _rotr},
6756+{-1, 427, "_safe_fdiv", msvcrt_safe_fdiv},
6757+{-1, 428, "_safe_fdivr", msvcrt_safe_fdivr},
6758+{-1, 429, "_safe_fprem", msvcrt_safe_fprem},
6759+{-1, 430, "_safe_fprem1", msvcrt_safe_fprem1},
6760+{-1, 431, "_scalb", msvcrt_scalb},
6761+{-1, 432, "_searchenv", _searchenv},
6762+{-1, 433, "_seh_longjmp_unwind", msvcrt_seh_longjmp_unwind},
6763+{-1, 434, "_set_error_mode", msvcrt_set_error_mode},
6764+{-1, 435, "_set_sbh_threshold", _set_sbh_threshold},
6765+{-1, 436, "_seterrormode", msvcrt_seterrormode},
6766+{-1, 437, "_setjmp", msvcrt_setjmp},
6767+{-1, 438, "_setjmp3", msvcrt_setjmp3},
6768+{-1, 439, "_setmaxstdio", _setmaxstdio},
6769+{-1, 440, "_setmbcp", _setmbcp},
6770+{-1, 441, "_setmode", _setmode},
6771+{-1, 442, "_setsystime", msvcrt_setsystime},
6772+{-1, 443, "_sleep", msvcrt_sleep},
6773+{-1, 444, "_snprintf", msvcrt_snprintf},
6774+{-1, 445, "_snwprintf", _snwprintf},
6775+{-1, 446, "_sopen", _sopen},
6776+{-1, 447, "_spawnl", _spawnl},
6777+{-1, 448, "_spawnle", _spawnle},
6778+{-1, 449, "_spawnlp", _spawnlp},
6779+{-1, 450, "_spawnlpe", _spawnlpe},
6780+{-1, 451, "_spawnv", _spawnv},
6781+{-1, 452, "_spawnve", _spawnve},
6782+{-1, 453, "_spawnvp", _spawnvp},
6783+{-1, 454, "_spawnvpe", _spawnvpe},
6784+{-1, 455, "_splitpath", _splitpath},
6785+{-1, 456, "_stat", _stat},
6786+{-1, 457, "_stat64", msvcrt_stat64},
6787+{-1, 458, "_stati64", _stati64},
6788+{-1, 459, "_statusfp", _statusfp},
6789+{ 0, 460, "_strcmpi", msvcrt_strcmpi},
6790+{-1, 461, "_strdate", _strdate},
6791+{-1, 462, "_strdup", msvcrt_strdup},
6792+{-1, 463, "_strerror", _strerror},
6793+{ 0, 464, "_stricmp", _stricmp},
6794+{-1, 465, "_stricoll", _stricoll},
6795+{ 0, 466, "_strlwr", _strlwr},
6796+{-1, 467, "_strncoll", _strncoll},
6797+{ 0, 468, "_strnicmp", _strnicmp},
6798+{-1, 469, "_strnicoll", _strnicoll},
6799+{-1, 470, "_strnset", _strnset},
6800+{ 0, 471, "_strrev", _strrev},
6801+{-1, 472, "_strset", _strset},
6802+{-1, 473, "_strtime", _strtime},
6803+{ 0, 474, "_strupr", _strupr},
6804+{-1, 475, "_swab", msvcrt_swab},
6805+{-1, 476, "_sys_errlist", msvcrt_sys_errlist},
6806+{-1, 477, "_sys_nerr", msvcrt_sys_nerr},
6807+{-1, 478, "_tell", _tell},
6808+{-1, 479, "_telli64", _telli64},
6809+{-1, 480, "_tempnam", _tempnam},
6810+{-1, 481, "_time64", msvcrt_time64},
6811+{-1, 482, "_timezone", msvcrt_timezone},
6812+{-1, 483, "_tolower", msvcrt__tolower},
6813+{-1, 484, "_toupper", msvcrt__toupper},
6814+{-1, 485, "_tzname", msvcrt_tzname},
6815+{-1, 486, "_tzset", msvcrt_tzset},
6816+{ 0, 487, "_ui64toa", _ui64toa},
6817+{-1, 488, "_ui64tow", _ui64tow},
6818+{-1, 489, "_ultoa", _ultoa},
6819+{-1, 490, "_ultow", _ultow},
6820+{-1, 491, "_umask", msvcrt_umask},
6821+{-1, 492, "_ungetch", _ungetch},
6822+{ 0, 493, "_unlink", _unlink},
6823+{-1, 494, "_unloaddll", msvcrt_unloaddll},
6824+{-1, 495, "_unlock", msvcrt_unlock},
6825+{-1, 496, "_utime", _utime},
6826+{-1, 497, "_utime64", msvcrt_utime64},
6827+{-1, 498, "_vsnprintf", msvcrt_vsnprintf},
6828+{-1, 499, "_vsnwprintf", _vsnwprintf},
6829+{ 0, 500, "_waccess", _waccess},
6830+{-1, 501, "_wasctime", _wasctime},
6831+{ 0, 502, "_wchdir", _wchdir},
6832+{ 0, 503, "_wchmod", _wchmod},
6833+{-1, 504, "_wcmdln", msvcrt_wcmdln},
6834+{ 0, 505, "_wcreat", _wcreat},
6835+{-1, 506, "_wcsdup", _wcsdup},
6836+{-1, 507, "_wcsicmp", _wcsicmp},
6837+{-1, 508, "_wcsicoll", _wcsicoll},
6838+{-1, 509, "_wcslwr", _wcslwr},
6839+{-1, 510, "_wcsncoll", _wcsncoll},
6840+{-1, 511, "_wcsnicmp", _wcsnicmp},
6841+{-1, 512, "_wcsnicoll", _wcsnicoll},
6842+{-1, 513, "_wcsnset", _wcsnset},
6843+{ 0, 514, "_wcsrev", _wcsrev},
6844+{-1, 515, "_wcsset", _wcsset},
6845+{-1, 516, "_wcsupr", _wcsupr},
6846+{-1, 517, "_wctime", msvcrt_wctime},
6847+{-1, 518, "_wctime64", msvcrt_wctime64},
6848+{-1, 519, "_wenviron", msvcrt_wenviron},
6849+{ 0, 520, "_wexecl", _wexecl},
6850+{ 0, 521, "_wexecle", _wexecle},
6851+{ 0, 522, "_wexeclp", _wexeclp},
6852+{ 0, 523, "_wexeclpe", _wexeclpe},
6853+{ 0, 524, "_wexecv", _wexecv},
6854+{ 0, 525, "_wexecve", _wexecve},
6855+{ 0, 526, "_wexecvp", _wexecvp},
6856+{ 0, 527, "_wexecvpe", _wexecvpe},
6857+{ 0, 528, "_wfdopen", _wfdopen},
6858+{-1, 529, "_wfindfirst", _wfindfirst},
6859+{-1, 530, "_wfindfirst64", _wfindfirst64},
6860+{-1, 531, "_wfindfirsti64", _wfindfirsti64},
6861+{-1, 532, "_wfindnext", _wfindnext},
6862+{-1, 533, "_wfindnext64", _wfindnext64},
6863+{-1, 534, "_wfindnexti64", _wfindnexti64},
6864+{ 0, 535, "_wfopen", _wfopen},
6865+{ 0, 536, "_wfreopen", _wfreopen},
6866+{ 0, 537, "_wfsopen", _wfsopen},
6867+{-1, 538, "_wfullpath", _wfullpath},
6868+{-1, 539, "_wgetcwd", _wgetcwd},
6869+{-1, 540, "_wgetdcwd", _wgetdcwd},
6870+{-1, 541, "_wgetenv", _wgetenv},
6871+{-1, 542, "_winmajor", msvcrt_winmajor},
6872+{-1, 543, "_winminor", msvcrt_winminor},
6873+{-1, 544, "_winver", msvcrt_winver},
6874+{-1, 545, "_wmakepath", _wmakepath},
6875+{ 0, 546, "_wmkdir", _wmkdir},
6876+{-1, 547, "_wmktemp", _wmktemp},
6877+{-1, 548, "_wopen", _wopen},
6878+{-1, 549, "_wperror", _wperror},
6879+{-1, 550, "_wpgmptr", msvcrt_wpgmptr},
6880+{-1, 551, "_wpopen", _wpopen},
6881+{-1, 552, "_wputenv", _wputenv},
6882+{-1, 553, "_wremove", _wremove},
6883+{-1, 554, "_wrename", _wrename},
6884+{-1, 555, "_write", msvcrt_write},
6885+{-1, 556, "_wrmdir", _wrmdir},
6886+{-1, 557, "_wsearchenv", _wsearchenv},
6887+{-1, 558, "_wsetlocale", _wsetlocale},
6888+{-1, 559, "_wsopen", _wsopen},
6889+{-1, 560, "_wspawnl", _wspawnl},
6890+{-1, 561, "_wspawnle", _wspawnle},
6891+{-1, 562, "_wspawnlp", _wspawnlp},
6892+{-1, 563, "_wspawnlpe", _wspawnlpe},
6893+{-1, 564, "_wspawnv", _wspawnv},
6894+{-1, 565, "_wspawnve", _wspawnve},
6895+{-1, 566, "_wspawnvp", _wspawnvp},
6896+{-1, 567, "_wspawnvpe", _wspawnvpe},
6897+{-1, 568, "_wsplitpath", _wsplitpath},
6898+{-1, 569, "_wstat", _wstat},
6899+{-1, 570, "_wstat64", msvcrt_wstat64},
6900+{-1, 571, "_wstati64", _wstati64},
6901+{-1, 572, "_wstrdate", _wstrdate},
6902+{-1, 573, "_wstrtime", _wstrtime},
6903+{-1, 574, "_wsystem", _wsystem},
6904+{-1, 575, "_wtempnam", _wtempnam},
6905+{-1, 576, "_wtmpnam", _wtmpnam},
6906+{-1, 577, "_wtoi", _wtoi},
6907+{-1, 578, "_wtoi64", msvcrt_wtoi64},
6908+{-1, 579, "_wtol", _wtol},
6909+{ 0, 580, "_wunlink", _wunlink},
6910+{-1, 581, "_wutime", _wutime},
6911+{-1, 582, "_wutime64", msvcrt_wutime64},
6912+{-1, 583, "_y0", msvcrt_y0},
6913+{-1, 584, "_y1", msvcrt_y1},
6914+{-1, 585, "_yn", msvcrt_yn},
6915+{-1, 586, "abort", msvcrt_abort},
6916+{-1, 587, "abs", msvcrt_abs},
6917+{-1, 588, "acos", msvcrt_acos},
6918+{-1, 589, "asctime", msvcrt_asctime},
6919+{-1, 590, "asin", msvcrt_asin},
6920+{-1, 591, "atan", msvcrt_atan},
6921+{-1, 592, "atan2", msvcrt_atan2},
6922+{-1, 593, "atexit", msvcrt_atexit},
6923+{ 0, 594, "atof", msvcrt_atof},
6924+{-1, 595, "atoi", msvcrt_atoi},
6925+{-1, 596, "atol", msvcrt_atol},
6926+{-1, 597, "bsearch", msvcrt_bsearch},
6927+{-1, 598, "calloc", msvcrt_calloc},
6928+{-1, 599, "ceil", msvcrt_ceil},
6929+{-1, 600, "clearerr", msvcrt_clearerr},
6930+{-1, 601, "clock", msvcrt_clock},
6931+{-1, 602, "cos", msvcrt_cos},
6932+{-1, 603, "cosh", msvcrt_cosh},
6933+{-1, 604, "ctime", msvcrt_ctime},
6934+{-1, 605, "difftime", msvcrt_difftime},
6935+{-1, 606, "div", msvcrt_div},
6936+{ 0, 607, "exit", msvcrt_exit},
6937+{-1, 608, "exp", msvcrt_exp},
6938+{-1, 609, "fabs", msvcrt_fabs},
6939+{-1, 610, "fclose", msvcrt_fclose},
6940+{-1, 611, "feof", msvcrt_feof},
6941+{-1, 612, "ferror", msvcrt_ferror},
6942+{-1, 613, "fflush", msvcrt_fflush},
6943+{-1, 614, "fgetc", msvcrt_fgetc},
6944+{-1, 615, "fgetpos", msvcrt_fgetpos},
6945+{-1, 616, "fgets", msvcrt_fgets},
6946+{-1, 617, "fgetwc", msvcrt_fgetwc},
6947+{-1, 618, "fgetws", msvcrt_fgetws},
6948+{-1, 619, "floor", msvcrt_floor},
6949+{-1, 620, "fmod", msvcrt_fmod},
6950+{ 0, 621, "fopen", msvcrt_fopen},
6951+{-1, 622, "fprintf", msvcrt_fprintf},
6952+{-1, 623, "fputc", msvcrt_fputc},
6953+{-1, 624, "fputs", msvcrt_fputs},
6954+{-1, 625, "fputwc", msvcrt_fputwc},
6955+{-1, 626, "fputws", msvcrt_fputws},
6956+{-1, 627, "fread", msvcrt_fread},
6957+{ 0, 628, "free", msvcrt_free},
6958+{ 0, 629, "freopen", msvcrt_freopen},
6959+{-1, 630, "frexp", msvcrt_frexp},
6960+{ 0, 631, "fscanf", msvcrt_fscanf},
6961+{-1, 632, "fseek", msvcrt_fseek},
6962+{-1, 633, "fsetpos", msvcrt_fsetpos},
6963+{-1, 634, "ftell", msvcrt_ftell},
6964+{-1, 635, "fwprintf", msvcrt_fwprintf},
6965+{-1, 636, "fwrite", msvcrt_fwrite},
6966+{ 0, 637, "fwscanf", fwscanf},
6967+{-1, 638, "getc", msvcrt_getc},
6968+{-1, 639, "getchar", msvcrt_getchar},
6969+{-1, 640, "getenv", msvcrt_getenv},
6970+{-1, 641, "gets", msvcrt_gets},
6971+{-1, 642, "getwc", msvcrt_getwc},
6972+{-1, 643, "getwchar", msvcrt_getwchar},
6973+{-1, 644, "gmtime", msvcrt_gmtime},
6974+{-1, 645, "is_wctype", msvcrt_is_wctype},
6975+{ 0, 646, "isalnum", msvcrt_isalnum},
6976+{-1, 647, "isalpha", msvcrt_isalpha},
6977+{-1, 648, "iscntrl", msvcrt_iscntrl},
6978+{-1, 649, "isdigit", msvcrt_isdigit},
6979+{-1, 650, "isgraph", msvcrt_isgraph},
6980+{ 0, 651, "isleadbyte", isleadbyte},
6981+{-1, 652, "islower", msvcrt_islower},
6982+{-1, 653, "isprint", msvcrt_isprint},
6983+{-1, 654, "ispunct", msvcrt_ispunct},
6984+{-1, 655, "isspace", msvcrt_isspace},
6985+{-1, 656, "isupper", msvcrt_isupper},
6986+{-1, 657, "iswalnum", msvcrt_iswalnum},
6987+{-1, 658, "iswalpha", msvcrt_iswalpha},
6988+{-1, 659, "iswascii", iswascii},
6989+{-1, 660, "iswcntrl", msvcrt_iswcntrl},
6990+{-1, 661, "iswctype", msvcrt_iswctype},
6991+{-1, 662, "iswdigit", msvcrt_iswdigit},
6992+{-1, 663, "iswgraph", msvcrt_iswgraph},
6993+{-1, 664, "iswlower", msvcrt_iswlower},
6994+{-1, 665, "iswprint", msvcrt_iswprint},
6995+{-1, 666, "iswpunct", msvcrt_iswpunct},
6996+{-1, 667, "iswspace", msvcrt_iswspace},
6997+{-1, 668, "iswupper", msvcrt_iswupper},
6998+{-1, 669, "iswxdigit", msvcrt_iswxdigit},
6999+{-1, 670, "isxdigit", msvcrt_isxdigit},
7000+{-1, 671, "labs", msvcrt_labs},
7001+{-1, 672, "ldexp", msvcrt_ldexp},
7002+{-1, 673, "ldiv", msvcrt_ldiv},
7003+{-1, 674, "localeconv", msvcrt_localeconv},
7004+{-1, 675, "localtime", msvcrt_localtime},
7005+{-1, 676, "log", msvcrt_log},
7006+{-1, 677, "log10", msvcrt_log10},
7007+{-1, 678, "longjmp", msvcrt_longjmp},
7008+{ 0, 679, "malloc", msvcrt_malloc},
7009+{-1, 680, "mblen", msvcrt_mblen},
7010+{-1, 681, "mbstowcs", msvcrt_mbstowcs},
7011+{-1, 682, "mbtowc", msvcrt_mbtowc},
7012+{-1, 683, "memchr", msvcrt_memchr},
7013+{-1, 684, "memcmp", msvcrt_memcmp},
7014+{ 0, 685, "memcpy", msvcrt_memcpy},
7015+{ 0, 686, "memmove", msvcrt_memmove},
7016+{-1, 687, "memset", msvcrt_memset},
7017+{-1, 688, "mktime", msvcrt_mktime},
7018+{-1, 689, "modf", msvcrt_modf},
7019+{-1, 690, "perror", msvcrt_perror},
7020+{-1, 691, "pow", msvcrt_pow},
7021+{-1, 692, "printf", msvcrt_printf},
7022+{-1, 693, "putc", msvcrt_putc},
7023+{-1, 694, "putchar", msvcrt_putchar},
7024+{-1, 695, "puts", msvcrt_puts},
7025+{-1, 696, "putwc", msvcrt_putwc},
7026+{-1, 697, "putwchar", msvcrt_putwchar},
7027+{-1, 698, "qsort", msvcrt_qsort},
7028+{-1, 699, "raise", msvcrt_raise},
7029+{ 0, 700, "rand", msvcrt_rand},
7030+{-1, 701, "realloc", msvcrt_realloc},
7031+{-1, 702, "remove", msvcrt_remove},
7032+{-1, 703, "rename", msvcrt_rename},
7033+{-1, 704, "rewind", msvcrt_rewind},
7034+{ 0, 705, "scanf", msvcrt_scanf},
7035+{-1, 706, "setbuf", msvcrt_setbuf},
7036+{-1, 707, "setlocale", msvcrt_setlocale},
7037+{-1, 708, "setvbuf", msvcrt_setvbuf},
7038+{-1, 709, "signal", msvcrt_signal},
7039+{-1, 710, "sin", msvcrt_sin},
7040+{-1, 711, "sinh", msvcrt_sinh},
7041+{-1, 712, "sprintf", msvcrt_sprintf},
7042+{-1, 713, "sqrt", msvcrt_sqrt},
7043+{ 0, 714, "srand", msvcrt_srand},
7044+{ 0, 715, "sscanf", msvcrt_sscanf},
7045+{-1, 716, "strcat", msvcrt_strcat},
7046+{ 0, 717, "strchr", msvcrt_strchr},
7047+{-1, 718, "strcmp", msvcrt_strcmp},
7048+{-1, 719, "strcoll", msvcrt_strcoll},
7049+{-1, 720, "strcpy", msvcrt_strcpy},
7050+{-1, 721, "strcspn", msvcrt_strcspn},
7051+{-1, 722, "strerror", msvcrt_strerror},
7052+{-1, 723, "strftime", msvcrt_strftime},
7053+{-1, 724, "strlen", msvcrt_strlen},
7054+{-1, 725, "strncat", msvcrt_strncat},
7055+{-1, 726, "strncmp", msvcrt_strncmp},
7056+{-1, 727, "strncpy", msvcrt_strncpy},
7057+{-1, 728, "strpbrk", msvcrt_strpbrk},
7058+{ 0, 729, "strrchr", msvcrt_strrchr},
7059+{-1, 730, "strspn", msvcrt_strspn},
7060+{-1, 731, "strstr", msvcrt_strstr},
7061+{-1, 732, "strtod", msvcrt_strtod},
7062+{-1, 733, "strtok", msvcrt_strtok},
7063+{-1, 734, "strtol", msvcrt_strtol},
7064+{-1, 735, "strtoul", msvcrt_strtoul},
7065+{-1, 736, "strxfrm", msvcrt_strxfrm},
7066+{-1, 737, "swprintf", msvcrt_swprintf},
7067+{ 0, 738, "swscanf", swscanf},
7068+{-1, 739, "system", msvcrt_system},
7069+{-1, 740, "tan", msvcrt_tan},
7070+{-1, 741, "tanh", msvcrt_tanh},
7071+{-1, 742, "time", msvcrt_time},
7072+{-1, 743, "tmpfile", msvcrt_tmpfile},
7073+{-1, 744, "tmpnam", msvcrt_tmpnam},
7074+{-1, 745, "tolower", msvcrt_tolower},
7075+{ 0, 746, "toupper", msvcrt_toupper},
7076+{-1, 747, "towlower", msvcrt_towlower},
7077+{-1, 748, "towupper", msvcrt_towupper},
7078+{-1, 749, "ungetc", msvcrt_ungetc},
7079+{-1, 750, "ungetwc", msvcrt_ungetwc},
7080+{-1, 751, "vfprintf", msvcrt_vfprintf},
7081+{-1, 752, "vfwprintf", msvcrt_vfwprintf},
7082+{-1, 753, "vprintf", msvcrt_vprintf},
7083+{-1, 754, "vsprintf", msvcrt_vsprintf},
7084+{-1, 755, "vswprintf", msvcrt_vswprintf},
7085+{-1, 756, "vwprintf", msvcrt_vwprintf},
7086+{-1, 757, "wcscat", msvcrt_wcscat},
7087+{-1, 758, "wcschr", msvcrt_wcschr},
7088+{-1, 759, "wcscmp", msvcrt_wcscmp},
7089+{-1, 760, "wcscoll", wcscoll},
7090+{ 0, 761, "wcscpy", msvcrt_wcscpy},
7091+{-1, 762, "wcscspn", msvcrt_wcscspn},
7092+{-1, 763, "wcsftime", wcsftime},
7093+{-1, 764, "wcslen", msvcrt_wcslen},
7094+{-1, 765, "wcsncat", msvcrt_wcsncat},
7095+{-1, 766, "wcsncmp", msvcrt_wcsncmp},
7096+{-1, 767, "wcsncpy", msvcrt_wcsncpy},
7097+{-1, 768, "wcspbrk", msvcrt_wcspbrk},
7098+{-1, 769, "wcsrchr", msvcrt_wcsrchr},
7099+{-1, 770, "wcsspn", msvcrt_wcsspn},
7100+{-1, 771, "wcsstr", msvcrt_wcsstr},
7101+{-1, 772, "wcstod", wcstod},
7102+{-1, 773, "wcstok", msvcrt_wcstok},
7103+{-1, 774, "wcstol", wcstol},
7104+{-1, 775, "wcstombs", msvcrt_wcstombs},
7105+{-1, 776, "wcstoul", wcstoul},
7106+{-1, 777, "wcsxfrm", wcsxfrm},
7107+{-1, 778, "wctomb", msvcrt_wctomb},
7108+{-1, 779, "wprintf", msvcrt_wprintf},
7109+{ 0, 780, "wscanf", wscanf},
7110+{-1, 0, NULL, NULL}};
--- vmaid/trunk/w32loader/w32ldr.h (revision 314)
+++ vmaid/trunk/w32loader/w32ldr.h (revision 315)
@@ -1,6 +1,6 @@
11 /*
22 w32loader
3- copyright (c) 1998-2009 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
55 This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
@@ -28,25 +28,9 @@
2828 G_BEGIN_DECLS
2929
3030
31-#define W32LDR_DIR_WINDOWS 0
32-#define W32LDR_DIR_SYSTEM 1
33-#define W32LDR_DIR_TEMP 2
34-#define W32LDR_DIR_DATA 3
35-#define W32LDR_DIR_HOME 4
36-
37-
38-typedef BOOL CALLBACK (*DllEntryProc)(HMODULE, DWORD, LPVOID);
39-typedef struct _W32LdrModule
40-{
41- gchar *file, *name;
42- gint counter;
43- GHashTable *exports, *ordinals, *resource;
44- GList *glist;
45- DllEntryProc DllMain;
46-} W32LdrModule;
4731 typedef struct _W32LdrExport
4832 {
49- gboolean implement;
33+ gint implement;
5034 guint16 ordinal;
5135 gchar *name;
5236 gpointer func;
@@ -71,7 +55,7 @@
7155 /* ja:既にロードされているモジュールを取得する
7256 file,モジュール名
7357 RET,モジュール,NULL:ロードされていない */
74-W32LdrModule *
58+gpointer
7559 w32ldr_module_get_library (const gchar *file);
7660
7761
@@ -79,73 +63,25 @@
7963 file,モジュール名
8064 exec,TRUE:DllMainを実行する,FALSE:ロードのみ
8165 RET,モジュール,NULL:エラー */
82-W32LdrModule *
66+gpointer
8367 w32ldr_module_load_library (const gchar *file,
8468 const gboolean exec);
8569
8670
8771 /* ja:モジュールを解放する
88- module,モジュール
89- RET,TRUE:正常終了,NULL:エラー */
72+ memory,モジュール
73+ RET,TRUE:正常終了,FALSE:エラー */
9074 gboolean
91-w32ldr_module_free (W32LdrModule *module);
75+w32ldr_module_free (gpointer memory);
9276
9377
94-/* ja:モジュールからAPIを取得する
95- module,モジュール
96- name,API名
97- RET,アドレス,NULL:エラー */
98-gpointer
99-w32ldr_module_get_func (W32LdrModule *module,
100- const gchar *name);
101-
102-
103-/* ja:モジュールからAPIを取得する
104- module,モジュール
105- ordinal,オーディナル値
106- RET,アドレス,NULL:エラー */
107-gpointer
108-w32ldr_module_get_proc (W32LdrModule *module,
109- const guint16 ordinal);
110-
111-
112-/* ja:モジュールからリソースを取得する
113- module,モジュール
114- key,リソース
115- RET,データ,NULL:エラー */
116-gpointer
117-w32ldr_module_get_resource (W32LdrModule *module,
118- const gchar *key);
119-
120-
121-/******************************************************************************
122-* *
123-* ja:ディレクトリ関数群 *
124-* *
125-******************************************************************************/
126-/* ja:大文字小文字を区別しないパス名を求める
127- path,ファイル名
128- RET,大文字小文字を区別しないパス名 */
129-gchar *
130-w32ldr_dir_get_case_insensitive (const gchar *path);
131-
132-
133-/* ja:特定のディレクトリを取得する
134- dir,ディレクトリの種類
135- RET,ディレクトリ */
78+/* ja:モジュールの名前を取得する
79+ memory,モジュール
80+ RET,名前,NULL:エラー */
13681 const gchar *
137-w32ldr_dir_get_path (const guint dir);
82+w32ldr_module_get_filename (gpointer memory);
13883
13984
140-/* ja:特定のディレクトリのファイルを取得する
141- file,元のファイル名
142- dir,ディレクトリの種類
143- RET,ファイル */
144-gchar *
145-w32ldr_dir_get_filename (const gchar *file,
146- const guint dir);
147-
148-
14985 /******************************************************************************
15086 * *
15187 * ja:文字列関数群 *
--- vmaid/trunk/w32loader/msvcrt.h (revision 314)
+++ vmaid/trunk/w32loader/msvcrt.h (revision 315)
@@ -1,6 +1,6 @@
11 /*
22 w32loader
3- copyright (c) 1998-2009 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
55 This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
@@ -579,7 +579,7 @@
579579 #define _timeb timeb
580580
581581
582-extern W32LdrExport msvcrt_exports[];
582+extern W32LdrExport w32ldr_msvcrt_exports[];
583583
584584
585585 gint CDECL _access (const gchar *path, gint mode);
--- vmaid/trunk/w32loader/kernel32.c (revision 314)
+++ vmaid/trunk/w32loader/kernel32.c (revision 315)
@@ -1,6 +1,6 @@
11 /*
22 w32loader
3- copyright (c) 1998-2009 Kazuki IWAMOTO http://www.maid.org/ iwm@maid.org
3+ copyright (c) 1998-2010 Kazuki Iwamoto http://www.maid.org/ iwm@maid.org
44
55 This program is free software: you can redistribute it and/or modify
66 it under the terms of the GNU General Public License as published by
@@ -16,6 +16,7 @@
1616 along with this program. If not, see <http://www.gnu.org/licenses/>.
1717 */
1818 #include "kernel32.h"
19+#include "image.h"
1920 #include "user32.h"
2021 #if GLIB_CHECK_VERSION(2,6,0)
2122 # include <glib/gi18n.h>
@@ -37,6 +38,7 @@
3738 # include <unistd.h>
3839 #endif
3940 #include "misc/misc.h"
41+#include "misc/peimage.h"
4042 #include "misc/profile.h"
4143
4244
@@ -3335,7 +3337,7 @@
33353337 /* FindResourceExA ordinal = 184, argument = 16 */
33363338 HRSRC WINAPI FindResourceExA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage)
33373339 {
3338- guint8 *data = NULL;
3340+ gconstpointer data = NULL;
33393341
33403342 if (hModule)
33413343 {
@@ -3371,7 +3373,7 @@
33713373 g_free (tmp);
33723374 }
33733375 g_free (buf);
3374- data = w32ldr_module_get_resource (((W32LdrModule *)hModule) - 1, key);
3376+ data = peimage_file_get_resource ((const guint8 *)hModule, key);
33753377 g_free (key);
33763378 }
33773379 return data;
@@ -3381,7 +3383,7 @@
33813383 /* FindResourceExW ordinal = 185, argument = 16 */
33823384 HRSRC WINAPI FindResourceExW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage)
33833385 {
3384- guint8 *data = NULL;
3386+ gconstpointer data = NULL;
33853387
33863388 if (hModule)
33873389 {
@@ -3417,7 +3419,7 @@
34173419 g_free (tmp);
34183420 }
34193421 g_free (buf);
3420- data = w32ldr_module_get_resource (((W32LdrModule *)hModule) - 1, key);
3422+ data = peimage_file_get_resource ((const guint8 *)hModule, key);
34213423 g_free (key);
34223424 }
34233425 return data;
@@ -3553,7 +3555,7 @@
35533555 /* FreeLibrary ordinal = 200, argument = 4 */
35543556 BOOL WINAPI FreeLibrary (HMODULE hModule)
35553557 {
3556- return hModule ? w32ldr_module_free (((W32LdrModule *)hModule) - 1) : FALSE;
3558+ return w32ldr_module_free (hModule);
35573559 }
35583560
35593561
@@ -4741,7 +4743,7 @@
47414743
47424744 if (!lpFilename || nSize <= 0)
47434745 return 0;
4744- file = w32ldr_filename_to_mb (hModule ? ((W32LdrModule *)hModule)[-1].file
4746+ file = w32ldr_filename_to_mb (hModule ? w32ldr_module_get_filename (hModule)
47454747 : g_get_prgname ());
47464748 g_strncpy (lpFilename, file, nSize);
47474749 g_free (file);
@@ -4756,7 +4758,7 @@
47564758
47574759 if (!lpFilename || nSize <= 0)
47584760 return 0;
4759- file = w32ldr_filename_to_wc (hModule ? ((W32LdrModule *)hModule)[-1].file
4761+ file = w32ldr_filename_to_wc (hModule ? w32ldr_module_get_filename (hModule)
47604762 : g_get_prgname ());
47614763 lstrcpynW (lpFilename, file, nSize);
47624764 g_free (file);
@@ -4767,13 +4769,13 @@
47674769 /* GetModuleHandleA ordinal = 319, argument = 4 */
47684770 HMODULE WINAPI GetModuleHandleA (LPCSTR lpModuleName)
47694771 {
4772+ gpointer memory;
47704773 gchar *file;
4771- W32LdrModule *module;
47724774
47734775 file = w32ldr_filename_from_mb (lpModuleName);
4774- module = w32ldr_module_get_library (file);
4776+ memory = w32ldr_module_get_library (file);
47754777 g_free (file);
4776- return module ? module + 1 : NULL;
4778+ return memory;
47774779 }
47784780
47794781
@@ -4780,13 +4782,13 @@
47804782 /* GetModuleHandleW ordinal = 320, argument = 4 */
47814783 HMODULE WINAPI GetModuleHandleW (LPCWSTR lpModuleName)
47824784 {
4785+ gpointer memory;
47834786 gchar *file;
4784- W32LdrModule *module;
47854787
47864788 file = w32ldr_filename_from_wc (lpModuleName);
4787- module = w32ldr_module_get_library (file);
4789+ memory = w32ldr_module_get_library (file);
47884790 g_free (file);
4789- return module ? module + 1 : NULL;
4791+ return memory;
47904792 }
47914793
47924794
@@ -4925,8 +4927,8 @@
49254927 GKeyFile *key_file;
49264928
49274929 tmp = w32ldr_filename_from_wc (lpFileName);
4928- file = w32ldr_dir_get_filename (tmp,
4929- i == 0 ? W32LDR_DIR_HOME : W32LDR_DIR_DATA);
4930+ file = peimage_dir_get_filename (tmp,
4931+ i == 0 ? PEIMAGE_DIR_HOME : PEIMAGE_DIR_DATA);
49304932 g_free (tmp);
49314933 key_file = g_key_file_new ();
49324934 g_key_file_load_from_file (key_file, file, G_KEY_FILE_NONE, NULL);
@@ -4978,8 +4980,8 @@
49784980 GKeyFile *key_file;
49794981
49804982 key_file = g_key_file_new ();
4981- tmp = w32ldr_dir_get_filename (file,
4982- i == 0 ? W32LDR_DIR_HOME : W32LDR_DIR_DATA);
4983+ tmp = peimage_dir_get_filename (file,
4984+ i == 0 ? PEIMAGE_DIR_HOME : PEIMAGE_DIR_DATA);
49834985 g_key_file_load_from_file (key_file, tmp, G_KEY_FILE_NONE, NULL);
49844986 g_free (tmp);
49854987 groups = g_key_file_get_groups (key_file, NULL);
@@ -5012,8 +5014,8 @@
50125014 GKeyFile *key_file;
50135015
50145016 key_file = g_key_file_new ();
5015- tmp = w32ldr_dir_get_filename (file,
5016- i == 0 ? W32LDR_DIR_HOME : W32LDR_DIR_DATA);
5017+ tmp = peimage_dir_get_filename (file,
5018+ i == 0 ? PEIMAGE_DIR_HOME : PEIMAGE_DIR_DATA);
50175019 g_key_file_load_from_file (key_file, tmp, G_KEY_FILE_NONE, NULL);
50185020 g_free (tmp);
50195021 groups = g_key_file_get_groups (key_file, NULL);
@@ -5223,8 +5225,8 @@
52235225 GKeyFile *key_file;
52245226
52255227 key_file = g_key_file_new ();
5226- tmp = w32ldr_dir_get_filename (file,
5227- i == 0 ? W32LDR_DIR_HOME : W32LDR_DIR_DATA);
5228+ tmp = peimage_dir_get_filename (file,
5229+ i == 0 ? PEIMAGE_DIR_HOME : PEIMAGE_DIR_DATA);
52285230 g_key_file_load_from_file (key_file, tmp, G_KEY_FILE_NONE, NULL);
52295231 g_free (tmp);
52305232 groups = g_key_file_get_groups (key_file, NULL);
@@ -5367,10 +5369,10 @@
53675369 FARPROC WINAPI GetProcAddress (HMODULE hModule, LPCSTR lpProcName)
53685370 {
53695371 return hModule ? GPOINTER_TO_UINT (lpProcName) < 0x10000
5370- ? w32ldr_module_get_proc (((W32LdrModule *)hModule) - 1,
5372+ ? peimage_file_get_proc ((const guint8 *)hModule,
53715373 GPOINTER_TO_UINT (lpProcName))
5372- : w32ldr_module_get_func (((W32LdrModule *)hModule) - 1, lpProcName)
5373- : NULL;
5374+ : peimage_file_get_func ((const guint8 *)hModule, lpProcName)
5375+ : NULL;
53745376 }
53755377
53765378
@@ -5691,7 +5693,7 @@
56915693 gsize leng;
56925694 gchar *dir;
56935695
5694- dir = w32ldr_filename_to_mb (w32ldr_dir_get_path (W32LDR_DIR_SYSTEM));
5696+ dir = w32ldr_filename_to_mb (peimage_dir_get_path (PEIMAGE_DIR_SYSTEM));
56955697 leng = g_strlen (dir) + 1;
56965698 if (lpBuffer && uSize >= leng)
56975699 {
@@ -5708,7 +5710,7 @@
57085710 gsize leng;
57095711 gunichar2 *dir;
57105712
5711- dir = w32ldr_filename_to_wc (w32ldr_dir_get_path (W32LDR_DIR_SYSTEM));
5713+ dir = w32ldr_filename_to_wc (peimage_dir_get_path (PEIMAGE_DIR_SYSTEM));
57125714 leng = lstrlenW (dir) + 1;
57135715 if (lpBuffer && uSize >= leng)
57145716 {
@@ -5888,7 +5890,7 @@
58885890 gsize leng;
58895891 gchar *dir;
58905892
5891- dir = w32ldr_filename_to_mb (w32ldr_dir_get_path (W32LDR_DIR_TEMP));
5893+ dir = w32ldr_filename_to_mb (peimage_dir_get_path (PEIMAGE_DIR_TEMP));
58925894 leng = g_strlen (dir) + 1;
58935895 if (lpBuffer && nBufferLength >= leng)
58945896 {
@@ -5905,7 +5907,7 @@
59055907 gsize leng;
59065908 gunichar2 *dir;
59075909
5908- dir = w32ldr_filename_to_wc (w32ldr_dir_get_path (W32LDR_DIR_TEMP));
5910+ dir = w32ldr_filename_to_wc (peimage_dir_get_path (PEIMAGE_DIR_TEMP));
59095911 leng = lstrlenW (dir) + 1;
59105912 if (lpBuffer && nBufferLength >= leng)
59115913 {
@@ -6890,14 +6892,14 @@
68906892 /* LoadLibraryExA ordinal = 487, argument = 12 */
68916893 HINSTANCE WINAPI LoadLibraryExA (LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
68926894 {
6895+ gpointer memory;
68936896 gchar *file;
6894- W32LdrModule *module;
68956897
68966898 file = w32ldr_filename_from_mb (lpLibFileName);
6897- module = w32ldr_module_load_library (file,
6898- dwFlags & LOAD_LIBRARY_AS_DATAFILE);
6899+ memory = w32ldr_module_load_library (file,
6900+ !(dwFlags & LOAD_LIBRARY_AS_DATAFILE));
68996901 g_free (file);
6900- return module ? module + 1 : NULL;
6902+ return memory;
69016903 }
69026904
69036905
@@ -6904,14 +6906,14 @@
69046906 /* LoadLibraryExW ordinal = 488, argument = 12 */
69056907 HINSTANCE WINAPI LoadLibraryExW (LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
69066908 {
6909+ gpointer memory;
69076910 gchar *file;
6908- W32LdrModule *module;
69096911
69106912 file = w32ldr_filename_from_wc (lpLibFileName);
6911- module = w32ldr_module_load_library (file,
6912- dwFlags & LOAD_LIBRARY_AS_DATAFILE);
6913+ memory = w32ldr_module_load_library (file,
6914+ !(dwFlags & LOAD_LIBRARY_AS_DATAFILE));
69136915 g_free (file);
6914- return module ? module + 1 : NULL;
6916+ return memory;
69156917 }
69166918
69176919
@@ -6932,7 +6934,8 @@
69326934 /* LoadResource ordinal = 491, argument = 8 */
69336935 HGLOBAL WINAPI LoadResource (HMODULE hModule, HRSRC hResInfo)
69346936 {
6935- return (LPDWORD)hResInfo + 1;
6937+ return hModule && hResInfo ? (LPBYTE)hModule
6938+ + ((PIMAGE_RESOURCE_DATA_ENTRY)hResInfo)->OffsetToData : NULL;
69366939 }
69376940
69386941
@@ -8993,7 +8996,7 @@
89938996 /* SizeofResource ordinal = 713, argument = 8 */
89948997 DWORD WINAPI SizeofResource (HMODULE hModule, HRSRC hResInfo)
89958998 {
8996- return *(LPDWORD)hResInfo;
8999+ return hResInfo ? ((PIMAGE_RESOURCE_DATA_ENTRY)hResInfo)->Size : 0;
89979000 }
89989001
89999002
@@ -10017,7 +10020,7 @@
1001710020 str = lpString ? g_utf16_to_utf8 (lpString, -1, NULL, NULL, NULL) : NULL;
1001810021 tmp = w32ldr_filename_from_wc (lpFileName);
1001910022 g_free (tmp);
10020- file = w32ldr_dir_get_filename (tmp, W32LDR_DIR_HOME);
10023+ file = peimage_dir_get_filename (tmp, PEIMAGE_DIR_HOME);
1002110024 key_file = g_key_file_new ();
1002210025 g_key_file_load_from_file (key_file, file, G_KEY_FILE_NONE, NULL);
1002310026 groups = g_key_file_get_groups (key_file, NULL);
@@ -10353,7 +10356,8 @@
1035310356 {
1035410357 if (!lpString1 || !lpString2)
1035510358 return NULL;
10356- g_memmove (lpString1, lpString2, lstrlenW (lpString2) * sizeof (gunichar2));
10359+ g_memmove (lpString1, lpString2,
10360+ (lstrlenW (lpString2) + 1) * sizeof (gunichar2));
1035710361 return lpString1;
1035810362 }
1035910363
@@ -10409,834 +10413,834 @@
1040910413 }
1041010414
1041110415
10412-W32LdrExport kernel32_exports[] = {
10413-{TRUE, 1, "AddAtomA", AddAtomA},
10414-{TRUE, 2, "AddAtomW", AddAtomW},
10415-{FALSE, 3, "AddConsoleAliasA", AddConsoleAliasA},
10416-{FALSE, 4, "AddConsoleAliasW", AddConsoleAliasW},
10417-{TRUE, 5, "AllocConsole", AllocConsole},
10418-{FALSE, 6, "AllocateUserPhysicalPages", AllocateUserPhysicalPages},
10419-{FALSE, 7, "AreFileApisANSI", AreFileApisANSI},
10420-{FALSE, 8, "AssignProcessToJobObject", AssignProcessToJobObject},
10421-{FALSE, 9, "BackupRead", BackupRead},
10422-{FALSE, 10, "BackupSeek", BackupSeek},
10423-{FALSE, 11, "BackupWrite", BackupWrite},
10424-{FALSE, 12, "BaseAttachCompleteThunk", BaseAttachCompleteThunk},
10425-{FALSE, 13, "Beep", Beep},
10426-{FALSE, 14, "BeginUpdateResourceA", BeginUpdateResourceA},
10427-{FALSE, 15, "BeginUpdateResourceW", BeginUpdateResourceW},
10428-{FALSE, 16, "BindIoCompletionCallback", BindIoCompletionCallback},
10429-{FALSE, 17, "BuildCommDCBA", BuildCommDCBA},
10430-{FALSE, 18, "BuildCommDCBAndTimeoutsA", BuildCommDCBAndTimeoutsA},
10431-{FALSE, 19, "BuildCommDCBAndTimeoutsW", BuildCommDCBAndTimeoutsW},
10432-{FALSE, 20, "BuildCommDCBW", BuildCommDCBW},
10433-{FALSE, 21, "CallNamedPipeA", CallNamedPipeA},
10434-{FALSE, 22, "CallNamedPipeW", CallNamedPipeW},
10435-{FALSE, 23, "CancelDeviceWakeupRequest", CancelDeviceWakeupRequest},
10436-{FALSE, 24, "CancelIo", CancelIo},
10437-{FALSE, 25, "CancelTimerQueueTimer", CancelTimerQueueTimer},
10438-{FALSE, 26, "CancelWaitableTimer", CancelWaitableTimer},
10439-{FALSE, 27, "ChangeTimerQueueTimer", ChangeTimerQueueTimer},
10440-{FALSE, 28, "ClearCommBreak", ClearCommBreak},
10441-{FALSE, 29, "ClearCommError", ClearCommError},
10442-{FALSE, 30, "CloseConsoleHandle", CloseConsoleHandle},
10443-{TRUE, 31, "CloseHandle", CloseHandle},
10444-{FALSE, 32, "CloseProfileUserMapping", CloseProfileUserMapping},
10445-{FALSE, 33, "CmdBatNotification", CmdBatNotification},
10446-{FALSE, 34, "CommConfigDialogA", CommConfigDialogA},
10447-{FALSE, 35, "CommConfigDialogW", CommConfigDialogW},
10448-{TRUE, 36, "CompareFileTime", CompareFileTime},
10449-{TRUE, 37, "CompareStringA", CompareStringA},
10450-{TRUE, 38, "CompareStringW", CompareStringW},
10451-{FALSE, 39, "ConnectNamedPipe", ConnectNamedPipe},
10452-{FALSE, 40, "ConsoleMenuControl", ConsoleMenuControl},
10453-{FALSE, 41, "ContinueDebugEvent", ContinueDebugEvent},
10454-{FALSE, 42, "ConvertDefaultLocale", ConvertDefaultLocale},
10455-{FALSE, 43, "ConvertThreadToFiber", ConvertThreadToFiber},
10456-{TRUE, 44, "CopyFileA", CopyFileA},
10457-{FALSE, 45, "CopyFileExA", CopyFileExA},
10458-{FALSE, 46, "CopyFileExW", CopyFileExW},
10459-{TRUE, 47, "CopyFileW", CopyFileW},
10460-{FALSE, 48, "CreateConsoleScreenBuffer", CreateConsoleScreenBuffer},
10461-{TRUE, 49, "CreateDirectoryA", CreateDirectoryA},
10462-{FALSE, 50, "CreateDirectoryExA", CreateDirectoryExA},
10463-{FALSE, 51, "CreateDirectoryExW", CreateDirectoryExW},
10464-{TRUE, 52, "CreateDirectoryW", CreateDirectoryW},
10465-{TRUE, 53, "CreateEventA", CreateEventA},
10466-{TRUE, 54, "CreateEventW", CreateEventW},
10467-{FALSE, 55, "CreateFiber", CreateFiber},
10468-{FALSE, 56, "CreateFiberEx", CreateFiberEx},
10469-{TRUE, 57, "CreateFileA", CreateFileA},
10470-{TRUE, 58, "CreateFileMappingA", CreateFileMappingA},
10471-{TRUE, 59, "CreateFileMappingW", CreateFileMappingW},
10472-{TRUE, 60, "CreateFileW", CreateFileW},
10473-{FALSE, 61, "CreateHardLinkA", CreateHardLinkA},
10474-{FALSE, 62, "CreateHardLinkW", CreateHardLinkW},
10475-{FALSE, 63, "CreateIoCompletionPort", CreateIoCompletionPort},
10476-{FALSE, 64, "CreateJobObjectA", CreateJobObjectA},
10477-{FALSE, 65, "CreateJobObjectW", CreateJobObjectW},
10478-{FALSE, 66, "CreateMailslotA", CreateMailslotA},
10479-{FALSE, 67, "CreateMailslotW", CreateMailslotW},
10480-{TRUE, 68, "CreateMutexA", CreateMutexA},
10481-{TRUE, 69, "CreateMutexW", CreateMutexW},
10482-{FALSE, 70, "CreateNamedPipeA", CreateNamedPipeA},
10483-{FALSE, 71, "CreateNamedPipeW", CreateNamedPipeW},
10484-{FALSE, 72, "CreatePipe", CreatePipe},
10485-{TRUE, 73, "CreateProcessA", CreateProcessA},
10486-{FALSE, 74, "CreateProcessInternalA", CreateProcessInternalA},
10487-{FALSE, 75, "CreateProcessInternalW", CreateProcessInternalW},
10488-{FALSE, 76, "CreateProcessInternalWSecure", CreateProcessInternalWSecure},
10489-{TRUE, 77, "CreateProcessW", CreateProcessW},
10490-{FALSE, 78, "CreateRemoteThread", CreateRemoteThread},
10491-{TRUE, 79, "CreateSemaphoreA", CreateSemaphoreA},
10492-{TRUE, 80, "CreateSemaphoreW", CreateSemaphoreW},
10493-{FALSE, 81, "CreateTapePartition", CreateTapePartition},
10494-{TRUE, 82, "CreateThread", CreateThread},
10495-{FALSE, 83, "CreateTimerQueue", CreateTimerQueue},
10496-{FALSE, 84, "CreateTimerQueueTimer", CreateTimerQueueTimer},
10497-{FALSE, 85, "CreateToolhelp32Snapshot", CreateToolhelp32Snapshot},
10498-{FALSE, 86, "CreateVirtualBuffer", CreateVirtualBuffer},
10499-{FALSE, 87, "CreateWaitableTimerA", CreateWaitableTimerA},
10500-{FALSE, 88, "CreateWaitableTimerW", CreateWaitableTimerW},
10501-{FALSE, 89, "DebugActiveProcess", DebugActiveProcess},
10502-{FALSE, 90, "DebugBreak", DebugBreak},
10503-{FALSE, 91, "DefineDosDeviceA", DefineDosDeviceA},
10504-{FALSE, 92, "DefineDosDeviceW", DefineDosDeviceW},
10505-{FALSE, 93, "DelayLoadFailureHook", DelayLoadFailureHook},
10506-{TRUE, 94, "DeleteAtom", DeleteAtom},
10507-{TRUE, 95, "DeleteCriticalSection", DeleteCriticalSection},
10508-{FALSE, 96, "DeleteFiber", DeleteFiber},
10509-{TRUE, 97, "DeleteFileA", DeleteFileA},
10510-{TRUE, 98, "DeleteFileW", DeleteFileW},
10511-{FALSE, 99, "DeleteTimerQueue", DeleteTimerQueue},
10512-{FALSE, 100, "DeleteTimerQueueEx", DeleteTimerQueueEx},
10513-{FALSE, 101, "DeleteTimerQueueTimer", DeleteTimerQueueTimer},
10514-{FALSE, 102, "DeleteVolumeMountPointA", DeleteVolumeMountPointA},
10515-{FALSE, 103, "DeleteVolumeMountPointW", DeleteVolumeMountPointW},
10516-{FALSE, 104, "DeviceIoControl", DeviceIoControl},
10517-{TRUE, 105, "DisableThreadLibraryCalls", DisableThreadLibraryCalls},
10518-{FALSE, 106, "DisconnectNamedPipe", DisconnectNamedPipe},
10519-{FALSE, 107, "DnsHostnameToComputerNameA", DnsHostnameToComputerNameA},
10520-{FALSE, 108, "DnsHostnameToComputerNameW", DnsHostnameToComputerNameW},
10521-{FALSE, 109, "DosDateTimeToFileTime", DosDateTimeToFileTime},
10522-{FALSE, 110, "DosPathToSessionPathA", DosPathToSessionPathA},
10523-{FALSE, 111, "DosPathToSessionPathW", DosPathToSessionPathW},
10524-{FALSE, 112, "DuplicateConsoleHandle", DuplicateConsoleHandle},
10525-{FALSE, 113, "DuplicateHandle", DuplicateHandle},
10526-{FALSE, 114, "EndUpdateResourceA", EndUpdateResourceA},
10527-{FALSE, 115, "EndUpdateResourceW", EndUpdateResourceW},
10528-{TRUE, 116, "EnterCriticalSection", EnterCriticalSection},
10529-{TRUE, 117, "EnumCalendarInfoA", EnumCalendarInfoA},
10530-{FALSE, 118, "EnumCalendarInfoExA", EnumCalendarInfoExA},
10531-{FALSE, 119, "EnumCalendarInfoExW", EnumCalendarInfoExW},
10532-{TRUE, 120, "EnumCalendarInfoW", EnumCalendarInfoW},
10533-{FALSE, 121, "EnumDateFormatsA", EnumDateFormatsA},
10534-{FALSE, 122, "EnumDateFormatsExA", EnumDateFormatsExA},
10535-{FALSE, 123, "EnumDateFormatsExW", EnumDateFormatsExW},
10536-{FALSE, 124, "EnumDateFormatsW", EnumDateFormatsW},
10537-{FALSE, 125, "EnumLanguageGroupLocalesA", EnumLanguageGroupLocalesA},
10538-{FALSE, 126, "EnumLanguageGroupLocalesW", EnumLanguageGroupLocalesW},
10539-{FALSE, 127, "EnumResourceLanguagesA", EnumResourceLanguagesA},
10540-{FALSE, 128, "EnumResourceLanguagesW", EnumResourceLanguagesW},
10541-{FALSE, 129, "EnumResourceNamesA", EnumResourceNamesA},
10542-{FALSE, 130, "EnumResourceNamesW", EnumResourceNamesW},
10543-{FALSE, 131, "EnumResourceTypesA", EnumResourceTypesA},
10544-{FALSE, 132, "EnumResourceTypesW", EnumResourceTypesW},
10545-{FALSE, 133, "EnumSystemCodePagesA", EnumSystemCodePagesA},
10546-{FALSE, 134, "EnumSystemCodePagesW", EnumSystemCodePagesW},
10547-{FALSE, 135, "EnumSystemLanguageGroupsA", EnumSystemLanguageGroupsA},
10548-{FALSE, 136, "EnumSystemLanguageGroupsW", EnumSystemLanguageGroupsW},
10549-{FALSE, 137, "EnumSystemLocalesA", EnumSystemLocalesA},
10550-{FALSE, 138, "EnumSystemLocalesW", EnumSystemLocalesW},
10551-{FALSE, 139, "EnumTimeFormatsA", EnumTimeFormatsA},
10552-{FALSE, 140, "EnumTimeFormatsW", EnumTimeFormatsW},
10553-{FALSE, 141, "EnumUILanguagesA", EnumUILanguagesA},
10554-{FALSE, 142, "EnumUILanguagesW", EnumUILanguagesW},
10555-{FALSE, 143, "EraseTape", EraseTape},
10556-{FALSE, 144, "EscapeCommFunction", EscapeCommFunction},
10557-{TRUE, 145, "ExitProcess", ExitProcess},
10558-{TRUE, 146, "ExitThread", ExitThread},
10559-{FALSE, 147, "ExitVDM", ExitVDM},
10560-{FALSE, 148, "ExpandEnvironmentStringsA", ExpandEnvironmentStringsA},
10561-{FALSE, 149, "ExpandEnvironmentStringsW", ExpandEnvironmentStringsW},
10562-{FALSE, 150, "ExpungeConsoleCommandHistoryA", ExpungeConsoleCommandHistoryA},
10563-{FALSE, 151, "ExpungeConsoleCommandHistoryW", ExpungeConsoleCommandHistoryW},
10564-{FALSE, 152, "ExtendVirtualBuffer", ExtendVirtualBuffer},
10565-{FALSE, 153, "FatalAppExitA", FatalAppExitA},
10566-{FALSE, 154, "FatalAppExitW", FatalAppExitW},
10567-{FALSE, 155, "FatalExit", FatalExit},
10568-{FALSE, 156, "FileTimeToDosDateTime", FileTimeToDosDateTime},
10569-{TRUE, 157, "FileTimeToLocalFileTime", FileTimeToLocalFileTime},
10570-{TRUE, 158, "FileTimeToSystemTime", FileTimeToSystemTime},
10571-{FALSE, 159, "FillConsoleOutputAttribute", FillConsoleOutputAttribute},
10572-{FALSE, 160, "FillConsoleOutputCharacterA", FillConsoleOutputCharacterA},
10573-{FALSE, 161, "FillConsoleOutputCharacterW", FillConsoleOutputCharacterW},
10574-{TRUE, 162, "FindAtomA", FindAtomA},
10575-{TRUE, 163, "FindAtomW", FindAtomW},
10576-{TRUE, 164, "FindClose", FindClose},
10577-{FALSE, 165, "FindCloseChangeNotification", FindCloseChangeNotification},
10578-{FALSE, 166, "FindFirstChangeNotificationA", FindFirstChangeNotificationA},
10579-{FALSE, 167, "FindFirstChangeNotificationW", FindFirstChangeNotificationW},
10580-{TRUE, 168, "FindFirstFileA", FindFirstFileA},
10581-{FALSE, 169, "FindFirstFileExA", FindFirstFileExA},
10582-{FALSE, 170, "FindFirstFileExW", FindFirstFileExW},
10583-{TRUE, 171, "FindFirstFileW", FindFirstFileW},
10584-{FALSE, 172, "FindFirstVolumeA", FindFirstVolumeA},
10585-{FALSE, 173, "FindFirstVolumeMountPointA", FindFirstVolumeMountPointA},
10586-{FALSE, 174, "FindFirstVolumeMountPointW", FindFirstVolumeMountPointW},
10587-{FALSE, 175, "FindFirstVolumeW", FindFirstVolumeW},
10588-{FALSE, 176, "FindNextChangeNotification", FindNextChangeNotification},
10589-{TRUE, 177, "FindNextFileA", FindNextFileA},
10590-{TRUE, 178, "FindNextFileW", FindNextFileW},
10591-{FALSE, 179, "FindNextVolumeA", FindNextVolumeA},
10592-{FALSE, 180, "FindNextVolumeMountPointA", FindNextVolumeMountPointA},
10593-{FALSE, 181, "FindNextVolumeMountPointW", FindNextVolumeMountPointW},
10594-{FALSE, 182, "FindNextVolumeW", FindNextVolumeW},
10595-{TRUE, 183, "FindResourceA", FindResourceA},
10596-{TRUE, 184, "FindResourceExA", FindResourceExA},
10597-{TRUE, 185, "FindResourceExW", FindResourceExW},
10598-{TRUE, 186, "FindResourceW", FindResourceW},
10599-{FALSE, 187, "FindVolumeClose", FindVolumeClose},
10600-{FALSE, 188, "FindVolumeMountPointClose", FindVolumeMountPointClose},
10601-{FALSE, 189, "FlushConsoleInputBuffer", FlushConsoleInputBuffer},
10602-{TRUE, 190, "FlushFileBuffers", FlushFileBuffers},
10603-{FALSE, 191, "FlushInstructionCache", FlushInstructionCache},
10604-{FALSE, 192, "FlushViewOfFile", FlushViewOfFile},
10605-{FALSE, 193, "FoldStringA", FoldStringA},
10606-{FALSE, 194, "FoldStringW", FoldStringW},
10607-{FALSE, 195, "FormatMessageA", FormatMessageA},
10608-{FALSE, 196, "FormatMessageW", FormatMessageW},
10609-{FALSE, 197, "FreeConsole", FreeConsole},
10610-{TRUE, 198, "FreeEnvironmentStringsA", FreeEnvironmentStringsA},
10611-{TRUE, 199, "FreeEnvironmentStringsW", FreeEnvironmentStringsW},
10612-{TRUE, 200, "FreeLibrary", FreeLibrary},
10613-{FALSE, 201, "FreeLibraryAndExitThread", FreeLibraryAndExitThread},
10614-{TRUE, 202, "FreeResource", FreeResource},
10615-{FALSE, 203, "FreeUserPhysicalPages", FreeUserPhysicalPages},
10616-{FALSE, 204, "FreeVirtualBuffer", FreeVirtualBuffer},
10617-{FALSE, 205, "GenerateConsoleCtrlEvent", GenerateConsoleCtrlEvent},
10618-{TRUE, 206, "GetACP", GetACP},
10619-{TRUE, 207, "GetAtomNameA", GetAtomNameA},
10620-{TRUE, 208, "GetAtomNameW", GetAtomNameW},
10621-{FALSE, 209, "GetBinaryType", GetBinaryTypeA},
10622-{FALSE, 210, "GetBinaryTypeA", GetBinaryTypeA},
10623-{FALSE, 211, "GetBinaryTypeW", GetBinaryTypeW},
10624-{TRUE, 212, "GetCPInfo", GetCPInfo},
10625-{TRUE, 213, "GetCPInfoExA", GetCPInfoExA},
10626-{TRUE, 214, "GetCPInfoExW", GetCPInfoExW},
10627-{FALSE, 215, "GetCalendarInfoA", GetCalendarInfoA},
10628-{FALSE, 216, "GetCalendarInfoW", GetCalendarInfoW},
10629-{FALSE, 217, "GetCommConfig", GetCommConfig},
10630-{FALSE, 218, "GetCommMask", GetCommMask},
10631-{FALSE, 219, "GetCommModemStatus", GetCommModemStatus},
10632-{FALSE, 220, "GetCommProperties", GetCommProperties},
10633-{FALSE, 221, "GetCommState", GetCommState},
10634-{FALSE, 222, "GetCommTimeouts", GetCommTimeouts},
10635-{TRUE, 223, "GetCommandLineA", GetCommandLineA},
10636-{TRUE, 224, "GetCommandLineW", GetCommandLineW},
10637-{FALSE, 225, "GetCompressedFileSizeA", GetCompressedFileSizeA},
10638-{FALSE, 226, "GetCompressedFileSizeW", GetCompressedFileSizeW},
10639-{FALSE, 227, "GetComputerNameA", GetComputerNameA},
10640-{FALSE, 228, "GetComputerNameExA", GetComputerNameExA},
10641-{FALSE, 229, "GetComputerNameExW", GetComputerNameExW},
10642-{FALSE, 230, "GetComputerNameW", GetComputerNameW},
10643-{FALSE, 231, "GetConsoleAliasA", GetConsoleAliasA},
10644-{FALSE, 232, "GetConsoleAliasExesA", GetConsoleAliasExesA},
10645-{FALSE, 233, "GetConsoleAliasExesLengthA", GetConsoleAliasExesLengthA},
10646-{FALSE, 234, "GetConsoleAliasExesLengthW", GetConsoleAliasExesLengthW},
10647-{FALSE, 235, "GetConsoleAliasExesW", GetConsoleAliasExesW},
10648-{FALSE, 236, "GetConsoleAliasW", GetConsoleAliasW},
10649-{FALSE, 237, "GetConsoleAliasesA", GetConsoleAliasesA},
10650-{FALSE, 238, "GetConsoleAliasesLengthA", GetConsoleAliasesLengthA},
10651-{FALSE, 239, "GetConsoleAliasesLengthW", GetConsoleAliasesLengthW},
10652-{FALSE, 240, "GetConsoleAliasesW", GetConsoleAliasesW},
10653-{FALSE, 241, "GetConsoleCP", GetConsoleCP},
10654-{FALSE, 242, "GetConsoleCharType", GetConsoleCharType},
10655-{FALSE, 243, "GetConsoleCommandHistoryA", GetConsoleCommandHistoryA},
10656-{FALSE, 244, "GetConsoleCommandHistoryLengthA", GetConsoleCommandHistoryLengthA},
10657-{FALSE, 245, "GetConsoleCommandHistoryLengthW", GetConsoleCommandHistoryLengthW},
10658-{FALSE, 246, "GetConsoleCommandHistoryW", GetConsoleCommandHistoryW},
10659-{FALSE, 247, "GetConsoleCursorInfo", GetConsoleCursorInfo},
10660-{FALSE, 248, "GetConsoleCursorMode", GetConsoleCursorMode},
10661-{FALSE, 249, "GetConsoleDisplayMode", GetConsoleDisplayMode},
10662-{FALSE, 250, "GetConsoleFontInfo", GetConsoleFontInfo},
10663-{FALSE, 251, "GetConsoleFontSize", GetConsoleFontSize},
10664-{FALSE, 252, "GetConsoleHardwareState", GetConsoleHardwareState},
10665-{FALSE, 253, "GetConsoleInputExeNameA", GetConsoleInputExeNameA},
10666-{FALSE, 254, "GetConsoleInputExeNameW", GetConsoleInputExeNameW},
10667-{FALSE, 255, "GetConsoleInputWaitHandle", GetConsoleInputWaitHandle},
10668-{FALSE, 256, "GetConsoleKeyboardLayoutNameA", GetConsoleKeyboardLayoutNameA},
10669-{FALSE, 257, "GetConsoleKeyboardLayoutNameW", GetConsoleKeyboardLayoutNameW},
10670-{FALSE, 258, "GetConsoleMode", GetConsoleMode},
10671-{FALSE, 259, "GetConsoleNlsMode", GetConsoleNlsMode},
10672-{FALSE, 260, "GetConsoleOutputCP", GetConsoleOutputCP},
10673-{FALSE, 261, "GetConsoleScreenBufferInfo", GetConsoleScreenBufferInfo},
10674-{FALSE, 262, "GetConsoleTitleA", GetConsoleTitleA},
10675-{FALSE, 263, "GetConsoleTitleW", GetConsoleTitleW},
10676-{FALSE, 264, "GetConsoleWindow", GetConsoleWindow},
10677-{FALSE, 265, "GetCurrencyFormatA", GetCurrencyFormatA},
10678-{FALSE, 266, "GetCurrencyFormatW", GetCurrencyFormatW},
10679-{FALSE, 267, "GetCurrentConsoleFont", GetCurrentConsoleFont},
10680-{TRUE, 268, "GetCurrentDirectoryA", GetCurrentDirectoryA},
10681-{TRUE, 269, "GetCurrentDirectoryW", GetCurrentDirectoryW},
10682-{TRUE, 270, "GetCurrentProcess", GetCurrentProcess},
10683-{FALSE, 271, "GetCurrentProcessId", GetCurrentProcessId},
10684-{TRUE, 272, "GetCurrentThread", GetCurrentThread},
10685-{TRUE, 273, "GetCurrentThreadId", GetCurrentThreadId},
10686-{FALSE, 274, "GetDateFormatA", GetDateFormatA},
10687-{FALSE, 275, "GetDateFormatW", GetDateFormatW},
10688-{FALSE, 276, "GetDefaultCommConfigA", GetDefaultCommConfigA},
10689-{FALSE, 277, "GetDefaultCommConfigW", GetDefaultCommConfigW},
10690-{FALSE, 278, "GetDefaultSortkeySize", GetDefaultSortkeySize},
10691-{FALSE, 279, "GetDevicePowerState", GetDevicePowerState},
10692-{TRUE, 280, "GetDiskFreeSpaceA", GetDiskFreeSpaceA},
10693-{TRUE, 281, "GetDiskFreeSpaceExA", GetDiskFreeSpaceExA},
10694-{TRUE, 282, "GetDiskFreeSpaceExW", GetDiskFreeSpaceExW},
10695-{TRUE, 283, "GetDiskFreeSpaceW", GetDiskFreeSpaceW},
10696-{FALSE, 284, "GetDriveTypeA", GetDriveTypeA},
10697-{FALSE, 285, "GetDriveTypeW", GetDriveTypeW},
10698-{TRUE, 286, "GetEnvironmentStrings", GetEnvironmentStringsA},
10699-{TRUE, 287, "GetEnvironmentStringsA", GetEnvironmentStringsA},
10700-{TRUE, 288, "GetEnvironmentStringsW", GetEnvironmentStringsW},
10701-{TRUE, 289, "GetEnvironmentVariableA", GetEnvironmentVariableA},
10702-{TRUE, 290, "GetEnvironmentVariableW", GetEnvironmentVariableW},
10703-{FALSE, 291, "GetExitCodeProcess", GetExitCodeProcess},
10704-{FALSE, 292, "GetExitCodeThread", GetExitCodeThread},
10705-{TRUE, 293, "GetFileAttributesA", GetFileAttributesA},
10706-{FALSE, 294, "GetFileAttributesExA", GetFileAttributesExA},
10707-{FALSE, 295, "GetFileAttributesExW", GetFileAttributesExW},
10708-{TRUE, 296, "GetFileAttributesW", GetFileAttributesW},
10709-{FALSE, 297, "GetFileInformationByHandle", GetFileInformationByHandle},
10710-{TRUE, 298, "GetFileSize", GetFileSize},
10711-{FALSE, 299, "GetFileSizeEx", GetFileSizeEx},
10712-{TRUE, 300, "GetFileTime", GetFileTime},
10713-{TRUE, 301, "GetFileType", GetFileType},
10714-{TRUE, 302, "GetFullPathNameA", GetFullPathNameA},
10715-{TRUE, 303, "GetFullPathNameW", GetFullPathNameW},
10716-{FALSE, 304, "GetHandleInformation", GetHandleInformation},
10717-{FALSE, 305, "GetLargestConsoleWindowSize", GetLargestConsoleWindowSize},
10718-{TRUE, 306, "GetLastError", GetLastError},
10719-{FALSE, 307, "GetLinguistLangSize", GetLinguistLangSize},
10720-{TRUE, 308, "GetLocalTime", GetLocalTime},
10721-{TRUE, 309, "GetLocaleInfoA", GetLocaleInfoA},
10722-{TRUE, 310, "GetLocaleInfoW", GetLocaleInfoW},
10723-{TRUE, 311, "GetLogicalDriveStringsA", GetLogicalDriveStringsA},
10724-{TRUE, 312, "GetLogicalDriveStringsW", GetLogicalDriveStringsW},
10725-{FALSE, 313, "GetLogicalDrives", GetLogicalDrives},
10726-{FALSE, 314, "GetLongPathNameA", GetLongPathNameA},
10727-{FALSE, 315, "GetLongPathNameW", GetLongPathNameW},
10728-{FALSE, 316, "GetMailslotInfo", GetMailslotInfo},
10729-{TRUE, 317, "GetModuleFileNameA", GetModuleFileNameA},
10730-{TRUE, 318, "GetModuleFileNameW", GetModuleFileNameW},
10731-{TRUE, 319, "GetModuleHandleA", GetModuleHandleA},
10732-{TRUE, 320, "GetModuleHandleW", GetModuleHandleW},
10733-{FALSE, 321, "GetNamedPipeHandleStateA", GetNamedPipeHandleStateA},
10734-{FALSE, 322, "GetNamedPipeHandleStateW", GetNamedPipeHandleStateW},
10735-{FALSE, 323, "GetNamedPipeInfo", GetNamedPipeInfo},
10736-{FALSE, 324, "GetNextVDMCommand", GetNextVDMCommand},
10737-{FALSE, 325, "GetNlsSectionName", GetNlsSectionName},
10738-{FALSE, 326, "GetNumberFormatA", GetNumberFormatA},
10739-{FALSE, 327, "GetNumberFormatW", GetNumberFormatW},
10740-{FALSE, 328, "GetNumberOfConsoleFonts", GetNumberOfConsoleFonts},
10741-{FALSE, 329, "GetNumberOfConsoleInputEvents", GetNumberOfConsoleInputEvents},
10742-{FALSE, 330, "GetNumberOfConsoleMouseButtons", GetNumberOfConsoleMouseButtons},
10743-{TRUE, 331, "GetOEMCP", GetOEMCP},
10744-{FALSE, 332, "GetOverlappedResult", GetOverlappedResult},
10745-{FALSE, 333, "GetPriorityClass", GetPriorityClass},
10746-{TRUE, 334, "GetPrivateProfileIntA", GetPrivateProfileIntA},
10747-{TRUE, 335, "GetPrivateProfileIntW", GetPrivateProfileIntW},
10748-{TRUE, 336, "GetPrivateProfileSectionA", GetPrivateProfileSectionA},
10749-{TRUE, 337, "GetPrivateProfileSectionNamesA", GetPrivateProfileSectionNamesA},
10750-{FALSE, 338, "GetPrivateProfileSectionNamesW", GetPrivateProfileSectionNamesW},
10751-{TRUE, 339, "GetPrivateProfileSectionW", GetPrivateProfileSectionW},
10752-{TRUE, 340, "GetPrivateProfileStringA", GetPrivateProfileStringA},
10753-{TRUE, 341, "GetPrivateProfileStringW", GetPrivateProfileStringW},
10754-{TRUE, 342, "GetPrivateProfileStructA", GetPrivateProfileStructA},
10755-{TRUE, 343, "GetPrivateProfileStructW", GetPrivateProfileStructW},
10756-{TRUE, 344, "GetProcAddress", GetProcAddress},
10757-{TRUE, 345, "GetProcessAffinityMask", GetProcessAffinityMask},
10758-{TRUE, 346, "GetProcessHeap", GetProcessHeap},
10759-{TRUE, 347, "GetProcessHeaps", GetProcessHeaps},
10760-{FALSE, 348, "GetProcessIoCounters", GetProcessIoCounters},
10761-{FALSE, 349, "GetProcessPriorityBoost", GetProcessPriorityBoost},
10762-{FALSE, 350, "GetProcessShutdownParameters", GetProcessShutdownParameters},
10763-{FALSE, 351, "GetProcessTimes", GetProcessTimes},
10764-{FALSE, 352, "GetProcessVersion", GetProcessVersion},
10765-{FALSE, 353, "GetProcessWorkingSetSize", GetProcessWorkingSetSize},
10766-{TRUE, 354, "GetProfileIntA", GetProfileIntA},
10767-{TRUE, 355, "GetProfileIntW", GetProfileIntW},
10768-{TRUE, 356, "GetProfileSectionA", GetProfileSectionA},
10769-{TRUE, 357, "GetProfileSectionW", GetProfileSectionW},
10770-{TRUE, 358, "GetProfileStringA", GetProfileStringA},
10771-{TRUE, 359, "GetProfileStringW", GetProfileStringW},
10772-{FALSE, 360, "GetQueuedCompletionStatus", GetQueuedCompletionStatus},
10773-{TRUE, 361, "GetShortPathNameA", GetShortPathNameA},
10774-{TRUE, 362, "GetShortPathNameW", GetShortPathNameW},
10775-{TRUE, 363, "GetStartupInfoA", GetStartupInfoA},
10776-{TRUE, 364, "GetStartupInfoW", GetStartupInfoW},
10777-{TRUE, 365, "GetStdHandle", GetStdHandle},
10778-{TRUE, 366, "GetStringTypeA", GetStringTypeA},
10779-{FALSE, 367, "GetStringTypeExA", GetStringTypeExA},
10780-{FALSE, 368, "GetStringTypeExW", GetStringTypeExW},
10781-{TRUE, 369, "GetStringTypeW", GetStringTypeW},
10782-{TRUE, 370, "GetSystemDefaultLCID", GetSystemDefaultLCID},
10783-{TRUE, 371, "GetSystemDefaultLangID", GetSystemDefaultLangID},
10784-{TRUE, 372, "GetSystemDefaultUILanguage", GetSystemDefaultUILanguage},
10785-{TRUE, 373, "GetSystemDirectoryA", GetSystemDirectoryA},
10786-{TRUE, 374, "GetSystemDirectoryW", GetSystemDirectoryW},
10787-{TRUE, 375, "GetSystemInfo", GetSystemInfo},
10788-{FALSE, 376, "GetSystemPowerStatus", GetSystemPowerStatus},
10789-{TRUE, 377, "GetSystemTime", GetSystemTime},
10790-{FALSE, 378, "GetSystemTimeAdjustment", GetSystemTimeAdjustment},
10791-{TRUE, 379, "GetSystemTimeAsFileTime", GetSystemTimeAsFileTime},
10792-{FALSE, 380, "GetSystemWindowsDirectoryA", GetSystemWindowsDirectoryA},
10793-{FALSE, 381, "GetSystemWindowsDirectoryW", GetSystemWindowsDirectoryW},
10794-{FALSE, 382, "GetTapeParameters", GetTapeParameters},
10795-{FALSE, 383, "GetTapePosition", GetTapePosition},
10796-{FALSE, 384, "GetTapeStatus", GetTapeStatus},
10797-{TRUE, 385, "GetTempFileNameA", GetTempFileNameA},
10798-{TRUE, 386, "GetTempFileNameW", GetTempFileNameW},
10799-{TRUE, 387, "GetTempPathA", GetTempPathA},
10800-{TRUE, 388, "GetTempPathW", GetTempPathW},
10801-{FALSE, 389, "GetThreadContext", GetThreadContext},
10802-{TRUE, 390, "GetThreadLocale", GetThreadLocale},
10803-{TRUE, 391, "GetThreadPriority", GetThreadPriority},
10804-{FALSE, 392, "GetThreadPriorityBoost", GetThreadPriorityBoost},
10805-{FALSE, 393, "GetThreadSelectorEntry", GetThreadSelectorEntry},
10806-{FALSE, 394, "GetThreadTimes", GetThreadTimes},
10807-{TRUE, 395, "GetTickCount", GetTickCount},
10808-{FALSE, 396, "GetTimeFormatA", GetTimeFormatA},
10809-{FALSE, 397, "GetTimeFormatW", GetTimeFormatW},
10810-{TRUE, 398, "GetTimeZoneInformation", GetTimeZoneInformation},
10811-{TRUE, 399, "GetUserDefaultLCID", GetUserDefaultLCID},
10812-{TRUE, 400, "GetUserDefaultLangID", GetUserDefaultLangID},
10813-{TRUE, 401, "GetUserDefaultUILanguage", GetUserDefaultUILanguage},
10814-{FALSE, 402, "GetVDMCurrentDirectories", GetVDMCurrentDirectories},
10815-{TRUE, 403, "GetVersion", GetVersion},
10816-{TRUE, 404, "GetVersionExA", GetVersionExA},
10817-{TRUE, 405, "GetVersionExW", GetVersionExW},
10818-{FALSE, 406, "GetVolumeInformationA", GetVolumeInformationA},
10819-{FALSE, 407, "GetVolumeInformationW", GetVolumeInformationW},
10820-{FALSE, 408, "GetVolumeNameForVolumeMountPointA", GetVolumeNameForVolumeMountPointA},
10821-{FALSE, 409, "GetVolumeNameForVolumeMountPointW", GetVolumeNameForVolumeMountPointW},
10822-{FALSE, 410, "GetVolumePathNameA", GetVolumePathNameA},
10823-{FALSE, 411, "GetVolumePathNameW", GetVolumePathNameW},
10824-{FALSE, 412, "GetWindowsDirectoryA", GetWindowsDirectoryA},
10825-{FALSE, 413, "GetWindowsDirectoryW", GetWindowsDirectoryW},
10826-{FALSE, 414, "GetWriteWatch", GetWriteWatch},
10827-{TRUE, 415, "GlobalAddAtomA", GlobalAddAtomA},
10828-{TRUE, 416, "GlobalAddAtomW", GlobalAddAtomW},
10829-{TRUE, 417, "GlobalAlloc", GlobalAlloc},
10830-{FALSE, 418, "GlobalCompact", GlobalCompact},
10831-{TRUE, 419, "GlobalDeleteAtom", GlobalDeleteAtom},
10832-{TRUE, 420, "GlobalFindAtomA", GlobalFindAtomA},
10833-{TRUE, 421, "GlobalFindAtomW", GlobalFindAtomW},
10834-{FALSE, 422, "GlobalFix", GlobalFix},
10835-{TRUE, 423, "GlobalFlags", GlobalFlags},
10836-{TRUE, 424, "GlobalFree", GlobalFree},
10837-{TRUE, 425, "GlobalGetAtomNameA", GlobalGetAtomNameA},
10838-{TRUE, 426, "GlobalGetAtomNameW", GlobalGetAtomNameW},
10839-{TRUE, 427, "GlobalHandle", GlobalHandle},
10840-{TRUE, 428, "GlobalLock", GlobalLock},
10841-{FALSE, 429, "GlobalMemoryStatus", GlobalMemoryStatus},
10842-{FALSE, 430, "GlobalMemoryStatusEx", GlobalMemoryStatusEx},
10843-{TRUE, 431, "GlobalReAlloc", GlobalReAlloc},
10844-{TRUE, 432, "GlobalSize", GlobalSize},
10845-{FALSE, 433, "GlobalUnWire", GlobalUnWire},
10846-{FALSE, 434, "GlobalUnfix", GlobalUnfix},
10847-{TRUE, 435, "GlobalUnlock", GlobalUnlock},
10848-{FALSE, 436, "GlobalWire", GlobalWire},
10849-{FALSE, 437, "Heap32First", Heap32First},
10850-{FALSE, 438, "Heap32ListFirst", Heap32ListFirst},
10851-{FALSE, 439, "Heap32ListNext", Heap32ListNext},
10852-{FALSE, 440, "Heap32Next", Heap32Next},
10853-{TRUE, 441, "HeapAlloc", HeapAlloc},
10854-{FALSE, 442, "HeapCompact", HeapCompact},
10855-{TRUE, 443, "HeapCreate", HeapCreate},
10856-{FALSE, 444, "HeapCreateTagsW", HeapCreateTagsW},
10857-{TRUE, 445, "HeapDestroy", HeapDestroy},
10858-{FALSE, 446, "HeapExtend", HeapExtend},
10859-{TRUE, 447, "HeapFree", HeapFree},
10860-{FALSE, 448, "HeapLock", HeapLock},
10861-{FALSE, 449, "HeapQueryInformation", HeapQueryInformation},
10862-{FALSE, 450, "HeapQueryTagW", HeapQueryTagW},
10863-{TRUE, 451, "HeapReAlloc", HeapReAlloc},
10864-{FALSE, 452, "HeapSetInformation", HeapSetInformation},
10865-{TRUE, 453, "HeapSize", HeapSize},
10866-{FALSE, 454, "HeapSummary", HeapSummary},
10867-{FALSE, 455, "HeapUnlock", HeapUnlock},
10868-{FALSE, 456, "HeapUsage", HeapUsage},
10869-{FALSE, 457, "HeapValidate", HeapValidate},
10870-{FALSE, 458, "HeapWalk", HeapWalk},
10871-{TRUE, 459, "InitAtomTable", InitAtomTable},
10872-{TRUE, 460, "InitializeCriticalSection", InitializeCriticalSection},
10873-{FALSE, 461, "InitializeCriticalSectionAndSpinCount", InitializeCriticalSectionAndSpinCount},
10874-{TRUE, 462, "InterlockedCompareExchange", InterlockedCompareExchange},
10875-{TRUE, 463, "InterlockedDecrement", InterlockedDecrement},
10876-{TRUE, 464, "InterlockedExchange", InterlockedExchange},
10877-{TRUE, 465, "InterlockedExchangeAdd", InterlockedExchangeAdd},
10878-{TRUE, 466, "InterlockedIncrement", InterlockedIncrement},
10879-{FALSE, 467, "InvalidateConsoleDIBits", InvalidateConsoleDIBits},
10880-{TRUE, 468, "IsBadCodePtr", IsBadCodePtr},
10881-{FALSE, 469, "IsBadHugeReadPtr", IsBadHugeReadPtr},
10882-{FALSE, 470, "IsBadHugeWritePtr", IsBadHugeWritePtr},
10883-{TRUE, 471, "IsBadReadPtr", IsBadReadPtr},
10884-{FALSE, 472, "IsBadStringPtrA", IsBadStringPtrA},
10885-{FALSE, 473, "IsBadStringPtrW", IsBadStringPtrW},
10886-{TRUE, 474, "IsBadWritePtr", IsBadWritePtr},
10887-{TRUE, 475, "IsDBCSLeadByte", IsDBCSLeadByte},
10888-{TRUE, 476, "IsDBCSLeadByteEx", IsDBCSLeadByteEx},
10889-{FALSE, 477, "IsDebuggerPresent", IsDebuggerPresent},
10890-{FALSE, 478, "IsProcessorFeaturePresent", IsProcessorFeaturePresent},
10891-{FALSE, 479, "IsSystemResumeAutomatic", IsSystemResumeAutomatic},
10892-{FALSE, 480, "IsValidCodePage", IsValidCodePage},
10893-{FALSE, 481, "IsValidLanguageGroup", IsValidLanguageGroup},
10894-{FALSE, 482, "IsValidLocale", IsValidLocale},
10895-{TRUE, 483, "LCMapStringA", LCMapStringA},
10896-{TRUE, 484, "LCMapStringW", LCMapStringW},
10897-{TRUE, 485, "LeaveCriticalSection", LeaveCriticalSection},
10898-{TRUE, 486, "LoadLibraryA", LoadLibraryA},
10899-{TRUE, 487, "LoadLibraryExA", LoadLibraryExA},
10900-{TRUE, 488, "LoadLibraryExW", LoadLibraryExW},
10901-{TRUE, 489, "LoadLibraryW", LoadLibraryW},
10902-{FALSE, 490, "LoadModule", LoadModule},
10903-{TRUE, 491, "LoadResource", LoadResource},
10904-{TRUE, 492, "LocalAlloc", LocalAlloc},
10905-{FALSE, 493, "LocalCompact", LocalCompact},
10906-{TRUE, 494, "LocalFileTimeToFileTime", LocalFileTimeToFileTime},
10907-{TRUE, 495, "LocalFlags", LocalFlags},
10908-{TRUE, 496, "LocalFree", LocalFree},
10909-{TRUE, 497, "LocalHandle", LocalHandle},
10910-{TRUE, 498, "LocalLock", LocalLock},
10911-{TRUE, 499, "LocalReAlloc", LocalReAlloc},
10912-{FALSE, 500, "LocalShrink", LocalShrink},
10913-{TRUE, 501, "LocalSize", LocalSize},
10914-{TRUE, 502, "LocalUnlock", LocalUnlock},
10915-{FALSE, 503, "LockFile", LockFile},
10916-{FALSE, 504, "LockFileEx", LockFileEx},
10917-{TRUE, 505, "LockResource", LockResource},
10918-{FALSE, 506, "MapUserPhysicalPages", MapUserPhysicalPages},
10919-{FALSE, 507, "MapUserPhysicalPagesScatter", MapUserPhysicalPagesScatter},
10920-{TRUE, 508, "MapViewOfFile", MapViewOfFile},
10921-{TRUE, 509, "MapViewOfFileEx", MapViewOfFileEx},
10922-{FALSE, 510, "Module32First", Module32First},
10923-{FALSE, 511, "Module32FirstW", Module32FirstW},
10924-{FALSE, 512, "Module32Next", Module32Next},
10925-{FALSE, 513, "Module32NextW", Module32NextW},
10926-{TRUE, 514, "MoveFileA", MoveFileA},
10927-{TRUE, 515, "MoveFileExA", MoveFileExA},
10928-{TRUE, 516, "MoveFileExW", MoveFileExW},
10929-{TRUE, 517, "MoveFileW", MoveFileW},
10930-{FALSE, 518, "MoveFileWithProgressA", MoveFileWithProgressA},
10931-{FALSE, 519, "MoveFileWithProgressW", MoveFileWithProgressW},
10932-{TRUE, 520, "MulDiv", MulDiv},
10933-{TRUE, 521, "MultiByteToWideChar", MultiByteToWideChar},
10934-{FALSE, 522, "NlsConvertIntegerToString", NlsConvertIntegerToString},
10935-{FALSE, 523, "NlsGetCacheUpdateCount", NlsGetCacheUpdateCount},
10936-{FALSE, 524, "NlsResetProcessLocale", NlsResetProcessLocale},
10937-{FALSE, 525, "OpenConsoleW", OpenConsoleW},
10938-{FALSE, 526, "OpenDataFile", OpenDataFile},
10939-{TRUE, 527, "OpenEventA", OpenEventA},
10940-{TRUE, 528, "OpenEventW", OpenEventW},
10941-{FALSE, 529, "OpenFile", OpenFile},
10942-{TRUE, 530, "OpenFileMappingA", OpenFileMappingA},
10943-{TRUE, 531, "OpenFileMappingW", OpenFileMappingW},
10944-{FALSE, 532, "OpenJobObjectA", OpenJobObjectA},
10945-{FALSE, 533, "OpenJobObjectW", OpenJobObjectW},
10946-{TRUE, 534, "OpenMutexA", OpenMutexA},
10947-{TRUE, 535, "OpenMutexW", OpenMutexW},
10948-{FALSE, 536, "OpenProcess", OpenProcess},
10949-{FALSE, 537, "OpenProfileUserMapping", OpenProfileUserMapping},
10950-{TRUE, 538, "OpenSemaphoreA", OpenSemaphoreA},
10951-{TRUE, 539, "OpenSemaphoreW", OpenSemaphoreW},
10952-{FALSE, 540, "OpenThread", OpenThread},
10953-{FALSE, 541, "OpenWaitableTimerA", OpenWaitableTimerA},
10954-{FALSE, 542, "OpenWaitableTimerW", OpenWaitableTimerW},
10955-{TRUE, 543, "OutputDebugStringA", OutputDebugStringA},
10956-{TRUE, 544, "OutputDebugStringW", OutputDebugStringW},
10957-{FALSE, 545, "PeekConsoleInputA", PeekConsoleInputA},
10958-{FALSE, 546, "PeekConsoleInputW", PeekConsoleInputW},
10959-{FALSE, 547, "PeekNamedPipe", PeekNamedPipe},
10960-{FALSE, 548, "PostQueuedCompletionStatus", PostQueuedCompletionStatus},
10961-{FALSE, 549, "PrepareTape", PrepareTape},
10962-{FALSE, 550, "PrivCopyFileExW", PrivCopyFileExW},
10963-{FALSE, 551, "PrivMoveFileIdentityW", PrivMoveFileIdentityW},
10964-{FALSE, 552, "Process32First", Process32First},
10965-{FALSE, 553, "Process32FirstW", Process32FirstW},
10966-{FALSE, 554, "Process32Next", Process32Next},
10967-{FALSE, 555, "Process32NextW", Process32NextW},
10968-{FALSE, 556, "ProcessIdToSessionId", ProcessIdToSessionId},
10969-{TRUE, 557, "PulseEvent", PulseEvent},
10970-{FALSE, 558, "PurgeComm", PurgeComm},
10971-{FALSE, 559, "QueryDosDeviceA", QueryDosDeviceA},
10972-{FALSE, 560, "QueryDosDeviceW", QueryDosDeviceW},
10973-{FALSE, 561, "QueryInformationJobObject", QueryInformationJobObject},
10974-{TRUE, 562, "QueryPerformanceCounter", QueryPerformanceCounter},
10975-{TRUE, 563, "QueryPerformanceFrequency", QueryPerformanceFrequency},
10976-{FALSE, 564, "QueryWin31IniFilesMappedToRegistry", QueryWin31IniFilesMappedToRegistry},
10977-{FALSE, 565, "QueueUserAPC", QueueUserAPC},
10978-{FALSE, 566, "QueueUserWorkItem", QueueUserWorkItem},
10979-{TRUE, 567, "RaiseException", RaiseException},
10980-{FALSE, 568, "ReadConsoleA", ReadConsoleA},
10981-{FALSE, 569, "ReadConsoleInputA", ReadConsoleInputA},
10982-{FALSE, 570, "ReadConsoleInputExA", ReadConsoleInputExA},
10983-{FALSE, 571, "ReadConsoleInputExW", ReadConsoleInputExW},
10984-{FALSE, 572, "ReadConsoleInputW", ReadConsoleInputW},
10985-{FALSE, 573, "ReadConsoleOutputA", ReadConsoleOutputA},
10986-{FALSE, 574, "ReadConsoleOutputAttribute", ReadConsoleOutputAttribute},
10987-{FALSE, 575, "ReadConsoleOutputCharacterA", ReadConsoleOutputCharacterA},
10988-{FALSE, 576, "ReadConsoleOutputCharacterW", ReadConsoleOutputCharacterW},
10989-{FALSE, 577, "ReadConsoleOutputW", ReadConsoleOutputW},
10990-{FALSE, 578, "ReadConsoleW", ReadConsoleW},
10991-{FALSE, 579, "ReadDirectoryChangesW", ReadDirectoryChangesW},
10992-{TRUE, 580, "ReadFile", ReadFile},
10993-{FALSE, 581, "ReadFileEx", ReadFileEx},
10994-{FALSE, 582, "ReadFileScatter", ReadFileScatter},
10995-{FALSE, 583, "ReadProcessMemory", ReadProcessMemory},
10996-{FALSE, 584, "RegisterConsoleIME", RegisterConsoleIME},
10997-{FALSE, 585, "RegisterConsoleOS2", RegisterConsoleOS2},
10998-{FALSE, 586, "RegisterConsoleVDM", RegisterConsoleVDM},
10999-{FALSE, 587, "RegisterWaitForInputIdle", RegisterWaitForInputIdle},
11000-{FALSE, 588, "RegisterWaitForSingleObject", RegisterWaitForSingleObject},
11001-{FALSE, 589, "RegisterWaitForSingleObjectEx", RegisterWaitForSingleObjectEx},
11002-{FALSE, 590, "RegisterWowBaseHandlers", RegisterWowBaseHandlers},
11003-{FALSE, 591, "RegisterWowExec", RegisterWowExec},
11004-{TRUE, 592, "ReleaseMutex", ReleaseMutex},
11005-{TRUE, 593, "ReleaseSemaphore", ReleaseSemaphore},
11006-{TRUE, 594, "RemoveDirectoryA", RemoveDirectoryA},
11007-{TRUE, 595, "RemoveDirectoryW", RemoveDirectoryW},
11008-{FALSE, 596, "ReplaceFile", ReplaceFileA},
11009-{FALSE, 597, "ReplaceFileA", ReplaceFileA},
11010-{FALSE, 598, "ReplaceFileW", ReplaceFileW},
11011-{FALSE, 599, "RequestDeviceWakeup", RequestDeviceWakeup},
11012-{FALSE, 600, "RequestWakeupLatency", RequestWakeupLatency},
11013-{TRUE, 601, "ResetEvent", ResetEvent},
11014-{FALSE, 602, "ResetWriteWatch", ResetWriteWatch},
11015-{TRUE, 603, "ResumeThread", ResumeThread},
11016-{FALSE, 604, "RtlFillMemory", RtlFillMemory},
11017-{FALSE, 605, "RtlMoveMemory", RtlMoveMemory},
11018-{TRUE, 606, "RtlUnwind", RtlUnwind},
11019-{FALSE, 607, "RtlZeroMemory", RtlZeroMemory},
11020-{FALSE, 608, "ScrollConsoleScreenBufferA", ScrollConsoleScreenBufferA},
11021-{FALSE, 609, "ScrollConsoleScreenBufferW", ScrollConsoleScreenBufferW},
11022-{FALSE, 610, "SearchPathA", SearchPathA},
11023-{FALSE, 611, "SearchPathW", SearchPathW},
11024-{FALSE, 612, "SetCPGlobal", SetCPGlobal},
11025-{FALSE, 613, "SetCalendarInfoA", SetCalendarInfoA},
11026-{FALSE, 614, "SetCalendarInfoW", SetCalendarInfoW},
11027-{FALSE, 615, "SetCommBreak", SetCommBreak},
11028-{FALSE, 616, "SetCommConfig", SetCommConfig},
11029-{FALSE, 617, "SetCommMask", SetCommMask},
11030-{FALSE, 618, "SetCommState", SetCommState},
11031-{FALSE, 619, "SetCommTimeouts", SetCommTimeouts},
11032-{FALSE, 620, "SetComputerNameA", SetComputerNameA},
11033-{FALSE, 621, "SetComputerNameExA", SetComputerNameExA},
11034-{FALSE, 622, "SetComputerNameExW", SetComputerNameExW},
11035-{FALSE, 623, "SetComputerNameW", SetComputerNameW},
11036-{FALSE, 624, "SetConsoleActiveScreenBuffer", SetConsoleActiveScreenBuffer},
11037-{FALSE, 625, "SetConsoleCP", SetConsoleCP},
11038-{FALSE, 626, "SetConsoleCommandHistoryMode", SetConsoleCommandHistoryMode},
11039-{FALSE, 627, "SetConsoleCtrlHandler", SetConsoleCtrlHandler},
11040-{FALSE, 628, "SetConsoleCursor", SetConsoleCursor},
11041-{FALSE, 629, "SetConsoleCursorInfo", SetConsoleCursorInfo},
11042-{FALSE, 630, "SetConsoleCursorMode", SetConsoleCursorMode},
11043-{FALSE, 631, "SetConsoleCursorPosition", SetConsoleCursorPosition},
11044-{FALSE, 632, "SetConsoleDisplayMode", SetConsoleDisplayMode},
11045-{FALSE, 633, "SetConsoleFont", SetConsoleFont},
11046-{FALSE, 634, "SetConsoleHardwareState", SetConsoleHardwareState},
11047-{FALSE, 635, "SetConsoleIcon", SetConsoleIcon},
11048-{FALSE, 636, "SetConsoleInputExeNameA", SetConsoleInputExeNameA},
11049-{FALSE, 637, "SetConsoleInputExeNameW", SetConsoleInputExeNameW},
11050-{FALSE, 638, "SetConsoleKeyShortcuts", SetConsoleKeyShortcuts},
11051-{FALSE, 639, "SetConsoleLocalEUDC", SetConsoleLocalEUDC},
11052-{FALSE, 640, "SetConsoleMaximumWindowSize", SetConsoleMaximumWindowSize},
11053-{FALSE, 641, "SetConsoleMenuClose", SetConsoleMenuClose},
11054-{FALSE, 642, "SetConsoleMode", SetConsoleMode},
11055-{FALSE, 643, "SetConsoleNlsMode", SetConsoleNlsMode},
11056-{FALSE, 644, "SetConsoleNumberOfCommandsA", SetConsoleNumberOfCommandsA},
11057-{FALSE, 645, "SetConsoleNumberOfCommandsW", SetConsoleNumberOfCommandsW},
11058-{FALSE, 646, "SetConsoleOS2OemFormat", SetConsoleOS2OemFormat},
11059-{FALSE, 647, "SetConsoleOutputCP", SetConsoleOutputCP},
11060-{FALSE, 648, "SetConsolePalette", SetConsolePalette},
11061-{TRUE, 649, "SetConsoleScreenBufferSize", SetConsoleScreenBufferSize},
11062-{FALSE, 650, "SetConsoleTextAttribute", SetConsoleTextAttribute},
11063-{FALSE, 651, "SetConsoleTitleA", SetConsoleTitleA},
11064-{FALSE, 652, "SetConsoleTitleW", SetConsoleTitleW},
11065-{FALSE, 653, "SetConsoleWindowInfo", SetConsoleWindowInfo},
11066-{FALSE, 654, "SetCriticalSectionSpinCount", SetCriticalSectionSpinCount},
11067-{TRUE, 655, "SetCurrentDirectoryA", SetCurrentDirectoryA},
11068-{TRUE, 656, "SetCurrentDirectoryW", SetCurrentDirectoryW},
11069-{FALSE, 657, "SetDefaultCommConfigA", SetDefaultCommConfigA},
11070-{FALSE, 658, "SetDefaultCommConfigW", SetDefaultCommConfigW},
11071-{TRUE, 659, "SetEndOfFile", SetEndOfFile},
11072-{TRUE, 660, "SetEnvironmentVariableA", SetEnvironmentVariableA},
11073-{TRUE, 661, "SetEnvironmentVariableW", SetEnvironmentVariableW},
11074-{FALSE, 662, "SetErrorMode", SetErrorMode},
11075-{TRUE, 663, "SetEvent", SetEvent},
11076-{FALSE, 664, "SetFileApisToANSI", SetFileApisToANSI},
11077-{FALSE, 665, "SetFileApisToOEM", SetFileApisToOEM},
11078-{FALSE, 666, "SetFileAttributesA", SetFileAttributesA},
11079-{FALSE, 667, "SetFileAttributesW", SetFileAttributesW},
11080-{TRUE, 668, "SetFilePointer", SetFilePointer},
11081-{FALSE, 669, "SetFilePointerEx", SetFilePointerEx},
11082-{TRUE, 670, "SetFileTime", SetFileTime},
11083-{TRUE, 671, "SetHandleCount", SetHandleCount},
11084-{FALSE, 672, "SetHandleInformation", SetHandleInformation},
11085-{FALSE, 673, "SetInformationJobObject", SetInformationJobObject},
11086-{FALSE, 674, "SetLastConsoleEventActive", SetLastConsoleEventActive},
11087-{TRUE, 675, "SetLastError", SetLastError},
11088-{FALSE, 676, "SetLocalTime", SetLocalTime},
11089-{FALSE, 677, "SetLocaleInfoA", SetLocaleInfoA},
11090-{FALSE, 678, "SetLocaleInfoW", SetLocaleInfoW},
11091-{FALSE, 679, "SetMailslotInfo", SetMailslotInfo},
11092-{FALSE, 680, "SetMessageWaitingIndicator", SetMessageWaitingIndicator},
11093-{FALSE, 681, "SetNamedPipeHandleState", SetNamedPipeHandleState},
11094-{FALSE, 682, "SetPriorityClass", SetPriorityClass},
11095-{TRUE, 683, "SetProcessAffinityMask", SetProcessAffinityMask},
11096-{FALSE, 684, "SetProcessPriorityBoost", SetProcessPriorityBoost},
11097-{FALSE, 685, "SetProcessShutdownParameters", SetProcessShutdownParameters},
11098-{FALSE, 686, "SetProcessWorkingSetSize", SetProcessWorkingSetSize},
11099-{TRUE, 687, "SetStdHandle", SetStdHandle},
11100-{FALSE, 688, "SetSystemPowerState", SetSystemPowerState},
11101-{FALSE, 689, "SetSystemTime", SetSystemTime},
11102-{FALSE, 690, "SetSystemTimeAdjustment", SetSystemTimeAdjustment},
11103-{FALSE, 691, "SetTapeParameters", SetTapeParameters},
11104-{FALSE, 692, "SetTapePosition", SetTapePosition},
11105-{FALSE, 693, "SetTermsrvAppInstallMode", SetTermsrvAppInstallMode},
11106-{TRUE, 694, "SetThreadAffinityMask", SetThreadAffinityMask},
11107-{FALSE, 695, "SetThreadContext", SetThreadContext},
11108-{FALSE, 696, "SetThreadExecutionState", SetThreadExecutionState},
11109-{FALSE, 697, "SetThreadIdealProcessor", SetThreadIdealProcessor},
11110-{FALSE, 698, "SetThreadLocale", SetThreadLocale},
11111-{TRUE, 699, "SetThreadPriority", SetThreadPriority},
11112-{FALSE, 700, "SetThreadPriorityBoost", SetThreadPriorityBoost},
11113-{TRUE, 701, "SetTimeZoneInformation", SetTimeZoneInformation},
11114-{FALSE, 702, "SetTimerQueueTimer", SetTimerQueueTimer},
11115-{TRUE, 703, "SetUnhandledExceptionFilter", SetUnhandledExceptionFilter},
11116-{FALSE, 704, "SetVDMCurrentDirectories", SetVDMCurrentDirectories},
11117-{FALSE, 705, "SetVolumeLabelA", SetVolumeLabelA},
11118-{FALSE, 706, "SetVolumeLabelW", SetVolumeLabelW},
11119-{FALSE, 707, "SetVolumeMountPointA", SetVolumeMountPointA},
11120-{FALSE, 708, "SetVolumeMountPointW", SetVolumeMountPointW},
11121-{FALSE, 709, "SetWaitableTimer", SetWaitableTimer},
11122-{FALSE, 710, "SetupComm", SetupComm},
11123-{FALSE, 711, "ShowConsoleCursor", ShowConsoleCursor},
11124-{FALSE, 712, "SignalObjectAndWait", SignalObjectAndWait},
11125-{TRUE, 713, "SizeofResource", SizeofResource},
11126-{TRUE, 714, "Sleep", Sleep},
11127-{FALSE, 715, "SleepEx", SleepEx},
11128-{TRUE, 716, "SuspendThread", SuspendThread},
11129-{FALSE, 717, "SwitchToFiber", SwitchToFiber},
11130-{FALSE, 718, "SwitchToThread", SwitchToThread},
11131-{TRUE, 719, "SystemTimeToFileTime", SystemTimeToFileTime},
11132-{FALSE, 720, "SystemTimeToTzSpecificLocalTime", SystemTimeToTzSpecificLocalTime},
11133-{FALSE, 721, "TerminateJobObject", TerminateJobObject},
11134-{TRUE, 722, "TerminateProcess", TerminateProcess},
11135-{FALSE, 723, "TerminateThread", TerminateThread},
11136-{FALSE, 724, "TermsrvAppInstallMode", TermsrvAppInstallMode},
11137-{FALSE, 725, "Thread32First", Thread32First},
11138-{FALSE, 726, "Thread32Next", Thread32Next},
11139-{TRUE, 727, "TlsAlloc", TlsAlloc},
11140-{TRUE, 728, "TlsFree", TlsFree},
11141-{TRUE, 729, "TlsGetValue", TlsGetValue},
11142-{TRUE, 730, "TlsSetValue", TlsSetValue},
11143-{FALSE, 731, "Toolhelp32ReadProcessMemory", Toolhelp32ReadProcessMemory},
11144-{FALSE, 732, "TransactNamedPipe", TransactNamedPipe},
11145-{FALSE, 733, "TransmitCommChar", TransmitCommChar},
11146-{FALSE, 734, "TrimVirtualBuffer", TrimVirtualBuffer},
11147-{TRUE, 735, "TryEnterCriticalSection", TryEnterCriticalSection},
11148-{FALSE, 736, "UTRegister", UTRegister},
11149-{FALSE, 737, "UTUnRegister", UTUnRegister},
11150-{FALSE, 738, "UnhandledExceptionFilter", UnhandledExceptionFilter},
11151-{FALSE, 739, "UnlockFile", UnlockFile},
11152-{FALSE, 740, "UnlockFileEx", UnlockFileEx},
11153-{TRUE, 741, "UnmapViewOfFile", UnmapViewOfFile},
11154-{FALSE, 742, "UnregisterConsoleIME", UnregisterConsoleIME},
11155-{FALSE, 743, "UnregisterWait", UnregisterWait},
11156-{FALSE, 744, "UnregisterWaitEx", UnregisterWaitEx},
11157-{FALSE, 745, "UpdateResourceA", UpdateResourceA},
11158-{FALSE, 746, "UpdateResourceW", UpdateResourceW},
11159-{FALSE, 747, "VDMConsoleOperation", VDMConsoleOperation},
11160-{FALSE, 748, "VDMOperationStarted", VDMOperationStarted},
11161-{FALSE, 749, "ValidateLCType", ValidateLCType},
11162-{FALSE, 750, "ValidateLocale", ValidateLocale},
11163-{TRUE, 751, "VerLanguageNameA", VerLanguageNameA},
11164-{TRUE, 752, "VerLanguageNameW", VerLanguageNameW},
11165-{FALSE, 753, "VerSetConditionMask", VerSetConditionMask},
11166-{FALSE, 754, "VerifyConsoleIoHandle", VerifyConsoleIoHandle},
11167-{FALSE, 755, "VerifyVersionInfoA", VerifyVersionInfoA},
11168-{FALSE, 756, "VerifyVersionInfoW", VerifyVersionInfoW},
11169-{TRUE, 757, "VirtualAlloc", VirtualAlloc},
11170-{FALSE, 758, "VirtualAllocEx", VirtualAllocEx},
11171-{FALSE, 759, "VirtualBufferExceptionHandler", VirtualBufferExceptionHandler},
11172-{TRUE, 760, "VirtualFree", VirtualFree},
11173-{FALSE, 761, "VirtualFreeEx", VirtualFreeEx},
11174-{TRUE, 762, "VirtualLock", VirtualLock},
11175-{TRUE, 763, "VirtualProtect", VirtualProtect},
11176-{FALSE, 764, "VirtualProtectEx", VirtualProtectEx},
11177-{TRUE, 765, "VirtualQuery", VirtualQuery},
11178-{FALSE, 766, "VirtualQueryEx", VirtualQueryEx},
11179-{TRUE, 767, "VirtualUnlock", VirtualUnlock},
11180-{FALSE, 768, "WaitCommEvent", WaitCommEvent},
11181-{FALSE, 769, "WaitForDebugEvent", WaitForDebugEvent},
11182-{TRUE, 770, "WaitForMultipleObjects", WaitForMultipleObjects},
11183-{FALSE, 771, "WaitForMultipleObjectsEx", WaitForMultipleObjectsEx},
11184-{TRUE, 772, "WaitForSingleObject", WaitForSingleObject},
11185-{FALSE, 773, "WaitForSingleObjectEx", WaitForSingleObjectEx},
11186-{FALSE, 774, "WaitNamedPipeA", WaitNamedPipeA},
11187-{FALSE, 775, "WaitNamedPipeW", WaitNamedPipeW},
11188-{TRUE, 776, "WideCharToMultiByte", WideCharToMultiByte},
11189-{FALSE, 777, "WinExec", WinExec},
11190-{TRUE, 778, "WriteConsoleA", WriteConsoleA},
11191-{FALSE, 779, "WriteConsoleInputA", WriteConsoleInputA},
11192-{FALSE, 780, "WriteConsoleInputVDMA", WriteConsoleInputVDMA},
11193-{FALSE, 781, "WriteConsoleInputVDMW", WriteConsoleInputVDMW},
11194-{FALSE, 782, "WriteConsoleInputW", WriteConsoleInputW},
11195-{FALSE, 783, "WriteConsoleOutputA", WriteConsoleOutputA},
11196-{FALSE, 784, "WriteConsoleOutputAttribute", WriteConsoleOutputAttribute},
11197-{FALSE, 785, "WriteConsoleOutputCharacterA", WriteConsoleOutputCharacterA},
11198-{FALSE, 786, "WriteConsoleOutputCharacterW", WriteConsoleOutputCharacterW},
11199-{FALSE, 787, "WriteConsoleOutputW", WriteConsoleOutputW},
11200-{TRUE, 788, "WriteConsoleW", WriteConsoleW},
11201-{TRUE, 789, "WriteFile", WriteFile},
11202-{FALSE, 790, "WriteFileEx", WriteFileEx},
11203-{FALSE, 791, "WriteFileGather", WriteFileGather},
11204-{TRUE, 792, "WritePrivateProfileSectionA", WritePrivateProfileSectionA},
11205-{TRUE, 793, "WritePrivateProfileSectionW", WritePrivateProfileSectionW},
11206-{TRUE, 794, "WritePrivateProfileStringA", WritePrivateProfileStringA},
11207-{TRUE, 795, "WritePrivateProfileStringW", WritePrivateProfileStringW},
11208-{TRUE, 796, "WritePrivateProfileStructA", WritePrivateProfileStructA},
11209-{TRUE, 797, "WritePrivateProfileStructW", WritePrivateProfileStructW},
11210-{FALSE, 798, "WriteProcessMemory", WriteProcessMemory},
11211-{TRUE, 799, "WriteProfileSectionA", WriteProfileSectionA},
11212-{TRUE, 800, "WriteProfileSectionW", WriteProfileSectionW},
11213-{TRUE, 801, "WriteProfileStringA", WriteProfileStringA},
11214-{TRUE, 802, "WriteProfileStringW", WriteProfileStringW},
11215-{FALSE, 803, "WriteTapemark", WriteTapemark},
11216-{FALSE, 804, "_hread", _hread},
11217-{FALSE, 805, "_hwrite", _hwrite},
11218-{TRUE, 806, "_lclose", _lclose},
11219-{TRUE, 807, "_lcreat", _lcreat},
11220-{TRUE, 808, "_llseek", _llseek},
11221-{TRUE, 809, "_lopen", _lopen},
11222-{TRUE, 810, "_lread", _lread},
11223-{TRUE, 811, "_lwrite", _lwrite},
11224-{TRUE, 812, "lstrcat", lstrcatA},
11225-{TRUE, 813, "lstrcatA", lstrcatA},
11226-{TRUE, 814, "lstrcatW", lstrcatW},
11227-{TRUE, 815, "lstrcmp", lstrcmpA},
11228-{TRUE, 816, "lstrcmpA", lstrcmpA},
11229-{TRUE, 817, "lstrcmpW", lstrcmpW},
11230-{TRUE, 818, "lstrcmpi", lstrcmpiA},
11231-{TRUE, 819, "lstrcmpiA", lstrcmpiA},
11232-{TRUE, 820, "lstrcmpiW", lstrcmpiW},
11233-{TRUE, 821, "lstrcpy", lstrcpyA},
11234-{TRUE, 822, "lstrcpyA", lstrcpyA},
11235-{TRUE, 823, "lstrcpyW", lstrcpyW},
11236-{TRUE, 824, "lstrcpyn", lstrcpynA},
11237-{TRUE, 825, "lstrcpynA", lstrcpynA},
11238-{TRUE, 826, "lstrcpynW", lstrcpynW},
11239-{TRUE, 827, "lstrlen", lstrlenA},
11240-{TRUE, 828, "lstrlenA", lstrlenA},
11241-{TRUE, 829, "lstrlenW", lstrlenW},
11242-{FALSE, 0, NULL, NULL}};
10416+W32LdrExport w32ldr_kernel32_exports[] = {
10417+{ 0, 1, "AddAtomA", AddAtomA},
10418+{ 0, 2, "AddAtomW", AddAtomW},
10419+{-1, 3, "AddConsoleAliasA", AddConsoleAliasA},
10420+{-1, 4, "AddConsoleAliasW", AddConsoleAliasW},
10421+{ 0, 5, "AllocConsole", AllocConsole},
10422+{-1, 6, "AllocateUserPhysicalPages", AllocateUserPhysicalPages},
10423+{-1, 7, "AreFileApisANSI", AreFileApisANSI},
10424+{-1, 8, "AssignProcessToJobObject", AssignProcessToJobObject},
10425+{-1, 9, "BackupRead", BackupRead},
10426+{-1, 10, "BackupSeek", BackupSeek},
10427+{-1, 11, "BackupWrite", BackupWrite},
10428+{-1, 12, "BaseAttachCompleteThunk", BaseAttachCompleteThunk},
10429+{-1, 13, "Beep", Beep},
10430+{-1, 14, "BeginUpdateResourceA", BeginUpdateResourceA},
10431+{-1, 15, "BeginUpdateResourceW", BeginUpdateResourceW},
10432+{-1, 16, "BindIoCompletionCallback", BindIoCompletionCallback},
10433+{-1, 17, "BuildCommDCBA", BuildCommDCBA},
10434+{-1, 18, "BuildCommDCBAndTimeoutsA", BuildCommDCBAndTimeoutsA},
10435+{-1, 19, "BuildCommDCBAndTimeoutsW", BuildCommDCBAndTimeoutsW},
10436+{-1, 20, "BuildCommDCBW", BuildCommDCBW},
10437+{-1, 21, "CallNamedPipeA", CallNamedPipeA},
10438+{-1, 22, "CallNamedPipeW", CallNamedPipeW},
10439+{-1, 23, "CancelDeviceWakeupRequest", CancelDeviceWakeupRequest},
10440+{-1, 24, "CancelIo", CancelIo},
10441+{-1, 25, "CancelTimerQueueTimer", CancelTimerQueueTimer},
10442+{-1, 26, "CancelWaitableTimer", CancelWaitableTimer},
10443+{-1, 27, "ChangeTimerQueueTimer", ChangeTimerQueueTimer},
10444+{-1, 28, "ClearCommBreak", ClearCommBreak},
10445+{-1, 29, "ClearCommError", ClearCommError},
10446+{-1, 30, "CloseConsoleHandle", CloseConsoleHandle},
10447+{ 0, 31, "CloseHandle", CloseHandle},
10448+{-1, 32, "CloseProfileUserMapping", CloseProfileUserMapping},
10449+{-1, 33, "CmdBatNotification", CmdBatNotification},
10450+{-1, 34, "CommConfigDialogA", CommConfigDialogA},
10451+{-1, 35, "CommConfigDialogW", CommConfigDialogW},
10452+{ 0, 36, "CompareFileTime", CompareFileTime},
10453+{ 0, 37, "CompareStringA", CompareStringA},
10454+{ 0, 38, "CompareStringW", CompareStringW},
10455+{-1, 39, "ConnectNamedPipe", ConnectNamedPipe},
10456+{-1, 40, "ConsoleMenuControl", ConsoleMenuControl},
10457+{-1, 41, "ContinueDebugEvent", ContinueDebugEvent},
10458+{-1, 42, "ConvertDefaultLocale", ConvertDefaultLocale},
10459+{-1, 43, "ConvertThreadToFiber", ConvertThreadToFiber},
10460+{ 0, 44, "CopyFileA", CopyFileA},
10461+{-1, 45, "CopyFileExA", CopyFileExA},
10462+{-1, 46, "CopyFileExW", CopyFileExW},
10463+{ 0, 47, "CopyFileW", CopyFileW},
10464+{-1, 48, "CreateConsoleScreenBuffer", CreateConsoleScreenBuffer},
10465+{ 0, 49, "CreateDirectoryA", CreateDirectoryA},
10466+{-1, 50, "CreateDirectoryExA", CreateDirectoryExA},
10467+{-1, 51, "CreateDirectoryExW", CreateDirectoryExW},
10468+{ 0, 52, "CreateDirectoryW", CreateDirectoryW},
10469+{ 0, 53, "CreateEventA", CreateEventA},
10470+{ 0, 54, "CreateEventW", CreateEventW},
10471+{-1, 55, "CreateFiber", CreateFiber},
10472+{-1, 56, "CreateFiberEx", CreateFiberEx},
10473+{ 0, 57, "CreateFileA", CreateFileA},
10474+{ 0, 58, "CreateFileMappingA", CreateFileMappingA},
10475+{ 0, 59, "CreateFileMappingW", CreateFileMappingW},
10476+{ 0, 60, "CreateFileW", CreateFileW},
10477+{-1, 61, "CreateHardLinkA", CreateHardLinkA},
10478+{-1, 62, "CreateHardLinkW", CreateHardLinkW},
10479+{-1, 63, "CreateIoCompletionPort", CreateIoCompletionPort},
10480+{-1, 64, "CreateJobObjectA", CreateJobObjectA},
10481+{-1, 65, "CreateJobObjectW", CreateJobObjectW},
10482+{-1, 66, "CreateMailslotA", CreateMailslotA},
10483+{-1, 67, "CreateMailslotW", CreateMailslotW},
10484+{ 0, 68, "CreateMutexA", CreateMutexA},
10485+{ 0, 69, "CreateMutexW", CreateMutexW},
10486+{-1, 70, "CreateNamedPipeA", CreateNamedPipeA},
10487+{-1, 71, "CreateNamedPipeW", CreateNamedPipeW},
10488+{-1, 72, "CreatePipe", CreatePipe},
10489+{ 0, 73, "CreateProcessA", CreateProcessA},
10490+{-1, 74, "CreateProcessInternalA", CreateProcessInternalA},
10491+{-1, 75, "CreateProcessInternalW", CreateProcessInternalW},
10492+{-1, 76, "CreateProcessInternalWSecure", CreateProcessInternalWSecure},
10493+{ 0, 77, "CreateProcessW", CreateProcessW},
10494+{-1, 78, "CreateRemoteThread", CreateRemoteThread},
10495+{ 0, 79, "CreateSemaphoreA", CreateSemaphoreA},
10496+{ 0, 80, "CreateSemaphoreW", CreateSemaphoreW},
10497+{-1, 81, "CreateTapePartition", CreateTapePartition},
10498+{ 0, 82, "CreateThread", CreateThread},
10499+{-1, 83, "CreateTimerQueue", CreateTimerQueue},
10500+{-1, 84, "CreateTimerQueueTimer", CreateTimerQueueTimer},
10501+{-1, 85, "CreateToolhelp32Snapshot", CreateToolhelp32Snapshot},
10502+{-1, 86, "CreateVirtualBuffer", CreateVirtualBuffer},
10503+{-1, 87, "CreateWaitableTimerA", CreateWaitableTimerA},
10504+{-1, 88, "CreateWaitableTimerW", CreateWaitableTimerW},
10505+{-1, 89, "DebugActiveProcess", DebugActiveProcess},
10506+{-1, 90, "DebugBreak", DebugBreak},
10507+{-1, 91, "DefineDosDeviceA", DefineDosDeviceA},
10508+{-1, 92, "DefineDosDeviceW", DefineDosDeviceW},
10509+{-1, 93, "DelayLoadFailureHook", DelayLoadFailureHook},
10510+{ 0, 94, "DeleteAtom", DeleteAtom},
10511+{ 0, 95, "DeleteCriticalSection", DeleteCriticalSection},
10512+{-1, 96, "DeleteFiber", DeleteFiber},
10513+{ 0, 97, "DeleteFileA", DeleteFileA},
10514+{ 0, 98, "DeleteFileW", DeleteFileW},
10515+{-1, 99, "DeleteTimerQueue", DeleteTimerQueue},
10516+{-1, 100, "DeleteTimerQueueEx", DeleteTimerQueueEx},
10517+{-1, 101, "DeleteTimerQueueTimer", DeleteTimerQueueTimer},
10518+{-1, 102, "DeleteVolumeMountPointA", DeleteVolumeMountPointA},
10519+{-1, 103, "DeleteVolumeMountPointW", DeleteVolumeMountPointW},
10520+{-1, 104, "DeviceIoControl", DeviceIoControl},
10521+{ 0, 105, "DisableThreadLibraryCalls", DisableThreadLibraryCalls},
10522+{-1, 106, "DisconnectNamedPipe", DisconnectNamedPipe},
10523+{-1, 107, "DnsHostnameToComputerNameA", DnsHostnameToComputerNameA},
10524+{-1, 108, "DnsHostnameToComputerNameW", DnsHostnameToComputerNameW},
10525+{-1, 109, "DosDateTimeToFileTime", DosDateTimeToFileTime},
10526+{-1, 110, "DosPathToSessionPathA", DosPathToSessionPathA},
10527+{-1, 111, "DosPathToSessionPathW", DosPathToSessionPathW},
10528+{-1, 112, "DuplicateConsoleHandle", DuplicateConsoleHandle},
10529+{-1, 113, "DuplicateHandle", DuplicateHandle},
10530+{-1, 114, "EndUpdateResourceA", EndUpdateResourceA},
10531+{-1, 115, "EndUpdateResourceW", EndUpdateResourceW},
10532+{ 0, 116, "EnterCriticalSection", EnterCriticalSection},
10533+{ 0, 117, "EnumCalendarInfoA", EnumCalendarInfoA},
10534+{-1, 118, "EnumCalendarInfoExA", EnumCalendarInfoExA},
10535+{-1, 119, "EnumCalendarInfoExW", EnumCalendarInfoExW},
10536+{ 0, 120, "EnumCalendarInfoW", EnumCalendarInfoW},
10537+{-1, 121, "EnumDateFormatsA", EnumDateFormatsA},
10538+{-1, 122, "EnumDateFormatsExA", EnumDateFormatsExA},
10539+{-1, 123, "EnumDateFormatsExW", EnumDateFormatsExW},
10540+{-1, 124, "EnumDateFormatsW", EnumDateFormatsW},
10541+{-1, 125, "EnumLanguageGroupLocalesA", EnumLanguageGroupLocalesA},
10542+{-1, 126, "EnumLanguageGroupLocalesW", EnumLanguageGroupLocalesW},
10543+{-1, 127, "EnumResourceLanguagesA", EnumResourceLanguagesA},
10544+{-1, 128, "EnumResourceLanguagesW", EnumResourceLanguagesW},
10545+{-1, 129, "EnumResourceNamesA", EnumResourceNamesA},
10546+{-1, 130, "EnumResourceNamesW", EnumResourceNamesW},
10547+{-1, 131, "EnumResourceTypesA", EnumResourceTypesA},
10548+{-1, 132, "EnumResourceTypesW", EnumResourceTypesW},
10549+{-1, 133, "EnumSystemCodePagesA", EnumSystemCodePagesA},
10550+{-1, 134, "EnumSystemCodePagesW", EnumSystemCodePagesW},
10551+{-1, 135, "EnumSystemLanguageGroupsA", EnumSystemLanguageGroupsA},
10552+{-1, 136, "EnumSystemLanguageGroupsW", EnumSystemLanguageGroupsW},
10553+{-1, 137, "EnumSystemLocalesA", EnumSystemLocalesA},
10554+{-1, 138, "EnumSystemLocalesW", EnumSystemLocalesW},
10555+{-1, 139, "EnumTimeFormatsA", EnumTimeFormatsA},
10556+{-1, 140, "EnumTimeFormatsW", EnumTimeFormatsW},
10557+{-1, 141, "EnumUILanguagesA", EnumUILanguagesA},
10558+{-1, 142, "EnumUILanguagesW", EnumUILanguagesW},
10559+{-1, 143, "EraseTape", EraseTape},
10560+{-1, 144, "EscapeCommFunction", EscapeCommFunction},
10561+{ 0, 145, "ExitProcess", ExitProcess},
10562+{ 0, 146, "ExitThread", ExitThread},
10563+{-1, 147, "ExitVDM", ExitVDM},
10564+{-1, 148, "ExpandEnvironmentStringsA", ExpandEnvironmentStringsA},
10565+{-1, 149, "ExpandEnvironmentStringsW", ExpandEnvironmentStringsW},
10566+{-1, 150, "ExpungeConsoleCommandHistoryA", ExpungeConsoleCommandHistoryA},
10567+{-1, 151, "ExpungeConsoleCommandHistoryW", ExpungeConsoleCommandHistoryW},
10568+{-1, 152, "ExtendVirtualBuffer", ExtendVirtualBuffer},
10569+{-1, 153, "FatalAppExitA", FatalAppExitA},
10570+{-1, 154, "FatalAppExitW", FatalAppExitW},
10571+{-1, 155, "FatalExit", FatalExit},
10572+{-1, 156, "FileTimeToDosDateTime", FileTimeToDosDateTime},
10573+{ 0, 157, "FileTimeToLocalFileTime", FileTimeToLocalFileTime},
10574+{ 0, 158, "FileTimeToSystemTime", FileTimeToSystemTime},
10575+{-1, 159, "FillConsoleOutputAttribute", FillConsoleOutputAttribute},
10576+{-1, 160, "FillConsoleOutputCharacterA", FillConsoleOutputCharacterA},
10577+{-1, 161, "FillConsoleOutputCharacterW", FillConsoleOutputCharacterW},
10578+{ 0, 162, "FindAtomA", FindAtomA},
10579+{ 0, 163, "FindAtomW", FindAtomW},
10580+{ 0, 164, "FindClose", FindClose},
10581+{-1, 165, "FindCloseChangeNotification", FindCloseChangeNotification},
10582+{-1, 166, "FindFirstChangeNotificationA", FindFirstChangeNotificationA},
10583+{-1, 167, "FindFirstChangeNotificationW", FindFirstChangeNotificationW},
10584+{ 0, 168, "FindFirstFileA", FindFirstFileA},
10585+{-1, 169, "FindFirstFileExA", FindFirstFileExA},
10586+{-1, 170, "FindFirstFileExW", FindFirstFileExW},
10587+{ 0, 171, "FindFirstFileW", FindFirstFileW},
10588+{-1, 172, "FindFirstVolumeA", FindFirstVolumeA},
10589+{-1, 173, "FindFirstVolumeMountPointA", FindFirstVolumeMountPointA},
10590+{-1, 174, "FindFirstVolumeMountPointW", FindFirstVolumeMountPointW},
10591+{-1, 175, "FindFirstVolumeW", FindFirstVolumeW},
10592+{-1, 176, "FindNextChangeNotification", FindNextChangeNotification},
10593+{ 0, 177, "FindNextFileA", FindNextFileA},
10594+{ 0, 178, "FindNextFileW", FindNextFileW},
10595+{-1, 179, "FindNextVolumeA", FindNextVolumeA},
10596+{-1, 180, "FindNextVolumeMountPointA", FindNextVolumeMountPointA},
10597+{-1, 181, "FindNextVolumeMountPointW", FindNextVolumeMountPointW},
10598+{-1, 182, "FindNextVolumeW", FindNextVolumeW},
10599+{ 0, 183, "FindResourceA", FindResourceA},
10600+{ 0, 184, "FindResourceExA", FindResourceExA},
10601+{ 0, 185, "FindResourceExW", FindResourceExW},
10602+{ 0, 186, "FindResourceW", FindResourceW},
10603+{-1, 187, "FindVolumeClose", FindVolumeClose},
10604+{-1, 188, "FindVolumeMountPointClose", FindVolumeMountPointClose},
10605+{-1, 189, "FlushConsoleInputBuffer", FlushConsoleInputBuffer},
10606+{ 0, 190, "FlushFileBuffers", FlushFileBuffers},
10607+{-1, 191, "FlushInstructionCache", FlushInstructionCache},
10608+{-1, 192, "FlushViewOfFile", FlushViewOfFile},
10609+{-1, 193, "FoldStringA", FoldStringA},
10610+{-1, 194, "FoldStringW", FoldStringW},
10611+{-1, 195, "FormatMessageA", FormatMessageA},
10612+{-1, 196, "FormatMessageW", FormatMessageW},
10613+{-1, 197, "FreeConsole", FreeConsole},
10614+{ 0, 198, "FreeEnvironmentStringsA", FreeEnvironmentStringsA},
10615+{ 0, 199, "FreeEnvironmentStringsW", FreeEnvironmentStringsW},
10616+{ 0, 200, "FreeLibrary", FreeLibrary},
10617+{-1, 201, "FreeLibraryAndExitThread", FreeLibraryAndExitThread},
10618+{ 0, 202, "FreeResource", FreeResource},
10619+{-1, 203, "FreeUserPhysicalPages", FreeUserPhysicalPages},
10620+{-1, 204, "FreeVirtualBuffer", FreeVirtualBuffer},
10621+{-1, 205, "GenerateConsoleCtrlEvent", GenerateConsoleCtrlEvent},
10622+{ 0, 206, "GetACP", GetACP},
10623+{ 0, 207, "GetAtomNameA", GetAtomNameA},
10624+{ 0, 208, "GetAtomNameW", GetAtomNameW},
10625+{-1, 209, "GetBinaryType", GetBinaryTypeA},
10626+{-1, 210, "GetBinaryTypeA", GetBinaryTypeA},
10627+{-1, 211, "GetBinaryTypeW", GetBinaryTypeW},
10628+{ 0, 212, "GetCPInfo", GetCPInfo},
10629+{ 0, 213, "GetCPInfoExA", GetCPInfoExA},
10630+{ 0, 214, "GetCPInfoExW", GetCPInfoExW},
10631+{-1, 215, "GetCalendarInfoA", GetCalendarInfoA},
10632+{-1, 216, "GetCalendarInfoW", GetCalendarInfoW},
10633+{-1, 217, "GetCommConfig", GetCommConfig},
10634+{-1, 218, "GetCommMask", GetCommMask},
10635+{-1, 219, "GetCommModemStatus", GetCommModemStatus},
10636+{-1, 220, "GetCommProperties", GetCommProperties},
10637+{-1, 221, "GetCommState", GetCommState},
10638+{-1, 222, "GetCommTimeouts", GetCommTimeouts},
10639+{ 0, 223, "GetCommandLineA", GetCommandLineA},
10640+{ 0, 224, "GetCommandLineW", GetCommandLineW},
10641+{-1, 225, "GetCompressedFileSizeA", GetCompressedFileSizeA},
10642+{-1, 226, "GetCompressedFileSizeW", GetCompressedFileSizeW},
10643+{-1, 227, "GetComputerNameA", GetComputerNameA},
10644+{-1, 228, "GetComputerNameExA", GetComputerNameExA},
10645+{-1, 229, "GetComputerNameExW", GetComputerNameExW},
10646+{-1, 230, "GetComputerNameW", GetComputerNameW},
10647+{-1, 231, "GetConsoleAliasA", GetConsoleAliasA},
10648+{-1, 232, "GetConsoleAliasExesA", GetConsoleAliasExesA},
10649+{-1, 233, "GetConsoleAliasExesLengthA", GetConsoleAliasExesLengthA},
10650+{-1, 234, "GetConsoleAliasExesLengthW", GetConsoleAliasExesLengthW},
10651+{-1, 235, "GetConsoleAliasExesW", GetConsoleAliasExesW},
10652+{-1, 236, "GetConsoleAliasW", GetConsoleAliasW},
10653+{-1, 237, "GetConsoleAliasesA", GetConsoleAliasesA},
10654+{-1, 238, "GetConsoleAliasesLengthA", GetConsoleAliasesLengthA},
10655+{-1, 239, "GetConsoleAliasesLengthW", GetConsoleAliasesLengthW},
10656+{-1, 240, "GetConsoleAliasesW", GetConsoleAliasesW},
10657+{-1, 241, "GetConsoleCP", GetConsoleCP},
10658+{-1, 242, "GetConsoleCharType", GetConsoleCharType},
10659+{-1, 243, "GetConsoleCommandHistoryA", GetConsoleCommandHistoryA},
10660+{-1, 244, "GetConsoleCommandHistoryLengthA", GetConsoleCommandHistoryLengthA},
10661+{-1, 245, "GetConsoleCommandHistoryLengthW", GetConsoleCommandHistoryLengthW},
10662+{-1, 246, "GetConsoleCommandHistoryW", GetConsoleCommandHistoryW},
10663+{-1, 247, "GetConsoleCursorInfo", GetConsoleCursorInfo},
10664+{-1, 248, "GetConsoleCursorMode", GetConsoleCursorMode},
10665+{-1, 249, "GetConsoleDisplayMode", GetConsoleDisplayMode},
10666+{-1, 250, "GetConsoleFontInfo", GetConsoleFontInfo},
10667+{-1, 251, "GetConsoleFontSize", GetConsoleFontSize},
10668+{-1, 252, "GetConsoleHardwareState", GetConsoleHardwareState},
10669+{-1, 253, "GetConsoleInputExeNameA", GetConsoleInputExeNameA},
10670+{-1, 254, "GetConsoleInputExeNameW", GetConsoleInputExeNameW},
10671+{-1, 255, "GetConsoleInputWaitHandle", GetConsoleInputWaitHandle},
10672+{-1, 256, "GetConsoleKeyboardLayoutNameA", GetConsoleKeyboardLayoutNameA},
10673+{-1, 257, "GetConsoleKeyboardLayoutNameW", GetConsoleKeyboardLayoutNameW},
10674+{-1, 258, "GetConsoleMode", GetConsoleMode},
10675+{-1, 259, "GetConsoleNlsMode", GetConsoleNlsMode},
10676+{-1, 260, "GetConsoleOutputCP", GetConsoleOutputCP},
10677+{-1, 261, "GetConsoleScreenBufferInfo", GetConsoleScreenBufferInfo},
10678+{-1, 262, "GetConsoleTitleA", GetConsoleTitleA},
10679+{-1, 263, "GetConsoleTitleW", GetConsoleTitleW},
10680+{-1, 264, "GetConsoleWindow", GetConsoleWindow},
10681+{-1, 265, "GetCurrencyFormatA", GetCurrencyFormatA},
10682+{-1, 266, "GetCurrencyFormatW", GetCurrencyFormatW},
10683+{-1, 267, "GetCurrentConsoleFont", GetCurrentConsoleFont},
10684+{ 0, 268, "GetCurrentDirectoryA", GetCurrentDirectoryA},
10685+{ 0, 269, "GetCurrentDirectoryW", GetCurrentDirectoryW},
10686+{ 0, 270, "GetCurrentProcess", GetCurrentProcess},
10687+{-1, 271, "GetCurrentProcessId", GetCurrentProcessId},
10688+{ 0, 272, "GetCurrentThread", GetCurrentThread},
10689+{ 0, 273, "GetCurrentThreadId", GetCurrentThreadId},
10690+{-1, 274, "GetDateFormatA", GetDateFormatA},
10691+{-1, 275, "GetDateFormatW", GetDateFormatW},
10692+{-1, 276, "GetDefaultCommConfigA", GetDefaultCommConfigA},
10693+{-1, 277, "GetDefaultCommConfigW", GetDefaultCommConfigW},
10694+{-1, 278, "GetDefaultSortkeySize", GetDefaultSortkeySize},
10695+{-1, 279, "GetDevicePowerState", GetDevicePowerState},
10696+{ 0, 280, "GetDiskFreeSpaceA", GetDiskFreeSpaceA},
10697+{ 0, 281, "GetDiskFreeSpaceExA", GetDiskFreeSpaceExA},
10698+{ 0, 282, "GetDiskFreeSpaceExW", GetDiskFreeSpaceExW},
10699+{ 0, 283, "GetDiskFreeSpaceW", GetDiskFreeSpaceW},
10700+{-1, 284, "GetDriveTypeA", GetDriveTypeA},
10701+{-1, 285, "GetDriveTypeW", GetDriveTypeW},
10702+{ 0, 286, "GetEnvironmentStrings", GetEnvironmentStringsA},
10703+{ 0, 287, "GetEnvironmentStringsA", GetEnvironmentStringsA},
10704+{ 0, 288, "GetEnvironmentStringsW", GetEnvironmentStringsW},
10705+{ 0, 289, "GetEnvironmentVariableA", GetEnvironmentVariableA},
10706+{ 0, 290, "GetEnvironmentVariableW", GetEnvironmentVariableW},
10707+{-1, 291, "GetExitCodeProcess", GetExitCodeProcess},
10708+{-1, 292, "GetExitCodeThread", GetExitCodeThread},
10709+{ 0, 293, "GetFileAttributesA", GetFileAttributesA},
10710+{-1, 294, "GetFileAttributesExA", GetFileAttributesExA},
10711+{-1, 295, "GetFileAttributesExW", GetFileAttributesExW},
10712+{ 0, 296, "GetFileAttributesW", GetFileAttributesW},
10713+{-1, 297, "GetFileInformationByHandle", GetFileInformationByHandle},
10714+{ 0, 298, "GetFileSize", GetFileSize},
10715+{-1, 299, "GetFileSizeEx", GetFileSizeEx},
10716+{ 0, 300, "GetFileTime", GetFileTime},
10717+{ 0, 301, "GetFileType", GetFileType},
10718+{ 0, 302, "GetFullPathNameA", GetFullPathNameA},
10719+{ 0, 303, "GetFullPathNameW", GetFullPathNameW},
10720+{-1, 304, "GetHandleInformation", GetHandleInformation},
10721+{-1, 305, "GetLargestConsoleWindowSize", GetLargestConsoleWindowSize},
10722+{ 0, 306, "GetLastError", GetLastError},
10723+{-1, 307, "GetLinguistLangSize", GetLinguistLangSize},
10724+{ 0, 308, "GetLocalTime", GetLocalTime},
10725+{ 0, 309, "GetLocaleInfoA", GetLocaleInfoA},
10726+{ 0, 310, "GetLocaleInfoW", GetLocaleInfoW},
10727+{ 0, 311, "GetLogicalDriveStringsA", GetLogicalDriveStringsA},
10728+{ 0, 312, "GetLogicalDriveStringsW", GetLogicalDriveStringsW},
10729+{-1, 313, "GetLogicalDrives", GetLogicalDrives},
10730+{-1, 314, "GetLongPathNameA", GetLongPathNameA},
10731+{-1, 315, "GetLongPathNameW", GetLongPathNameW},
10732+{-1, 316, "GetMailslotInfo", GetMailslotInfo},
10733+{ 0, 317, "GetModuleFileNameA", GetModuleFileNameA},
10734+{ 0, 318, "GetModuleFileNameW", GetModuleFileNameW},
10735+{ 0, 319, "GetModuleHandleA", GetModuleHandleA},
10736+{ 0, 320, "GetModuleHandleW", GetModuleHandleW},
10737+{-1, 321, "GetNamedPipeHandleStateA", GetNamedPipeHandleStateA},
10738+{-1, 322, "GetNamedPipeHandleStateW", GetNamedPipeHandleStateW},
10739+{-1, 323, "GetNamedPipeInfo", GetNamedPipeInfo},
10740+{-1, 324, "GetNextVDMCommand", GetNextVDMCommand},
10741+{-1, 325, "GetNlsSectionName", GetNlsSectionName},
10742+{-1, 326, "GetNumberFormatA", GetNumberFormatA},
10743+{-1, 327, "GetNumberFormatW", GetNumberFormatW},
10744+{-1, 328, "GetNumberOfConsoleFonts", GetNumberOfConsoleFonts},
10745+{-1, 329, "GetNumberOfConsoleInputEvents", GetNumberOfConsoleInputEvents},
10746+{-1, 330, "GetNumberOfConsoleMouseButtons", GetNumberOfConsoleMouseButtons},
10747+{ 0, 331, "GetOEMCP", GetOEMCP},
10748+{-1, 332, "GetOverlappedResult", GetOverlappedResult},
10749+{-1, 333, "GetPriorityClass", GetPriorityClass},
10750+{ 0, 334, "GetPrivateProfileIntA", GetPrivateProfileIntA},
10751+{ 0, 335, "GetPrivateProfileIntW", GetPrivateProfileIntW},
10752+{ 0, 336, "GetPrivateProfileSectionA", GetPrivateProfileSectionA},
10753+{ 0, 337, "GetPrivateProfileSectionNamesA", GetPrivateProfileSectionNamesA},
10754+{-1, 338, "GetPrivateProfileSectionNamesW", GetPrivateProfileSectionNamesW},
10755+{ 0, 339, "GetPrivateProfileSectionW", GetPrivateProfileSectionW},
10756+{ 0, 340, "GetPrivateProfileStringA", GetPrivateProfileStringA},
10757+{ 0, 341, "GetPrivateProfileStringW", GetPrivateProfileStringW},
10758+{ 0, 342, "GetPrivateProfileStructA", GetPrivateProfileStructA},
10759+{ 0, 343, "GetPrivateProfileStructW", GetPrivateProfileStructW},
10760+{ 0, 344, "GetProcAddress", GetProcAddress},
10761+{ 0, 345, "GetProcessAffinityMask", GetProcessAffinityMask},
10762+{ 0, 346, "GetProcessHeap", GetProcessHeap},
10763+{ 0, 347, "GetProcessHeaps", GetProcessHeaps},
10764+{-1, 348, "GetProcessIoCounters", GetProcessIoCounters},
10765+{-1, 349, "GetProcessPriorityBoost", GetProcessPriorityBoost},
10766+{-1, 350, "GetProcessShutdownParameters", GetProcessShutdownParameters},
10767+{-1, 351, "GetProcessTimes", GetProcessTimes},
10768+{-1, 352, "GetProcessVersion", GetProcessVersion},
10769+{-1, 353, "GetProcessWorkingSetSize", GetProcessWorkingSetSize},
10770+{ 0, 354, "GetProfileIntA", GetProfileIntA},
10771+{ 0, 355, "GetProfileIntW", GetProfileIntW},
10772+{ 0, 356, "GetProfileSectionA", GetProfileSectionA},
10773+{ 0, 357, "GetProfileSectionW", GetProfileSectionW},
10774+{ 0, 358, "GetProfileStringA", GetProfileStringA},
10775+{ 0, 359, "GetProfileStringW", GetProfileStringW},
10776+{-1, 360, "GetQueuedCompletionStatus", GetQueuedCompletionStatus},
10777+{ 0, 361, "GetShortPathNameA", GetShortPathNameA},
10778+{ 0, 362, "GetShortPathNameW", GetShortPathNameW},
10779+{ 0, 363, "GetStartupInfoA", GetStartupInfoA},
10780+{ 0, 364, "GetStartupInfoW", GetStartupInfoW},
10781+{ 0, 365, "GetStdHandle", GetStdHandle},
10782+{ 0, 366, "GetStringTypeA", GetStringTypeA},
10783+{-1, 367, "GetStringTypeExA", GetStringTypeExA},
10784+{-1, 368, "GetStringTypeExW", GetStringTypeExW},
10785+{ 0, 369, "GetStringTypeW", GetStringTypeW},
10786+{ 0, 370, "GetSystemDefaultLCID", GetSystemDefaultLCID},
10787+{ 0, 371, "GetSystemDefaultLangID", GetSystemDefaultLangID},
10788+{ 0, 372, "GetSystemDefaultUILanguage", GetSystemDefaultUILanguage},
10789+{ 0, 373, "GetSystemDirectoryA", GetSystemDirectoryA},
10790+{ 0, 374, "GetSystemDirectoryW", GetSystemDirectoryW},
10791+{ 0, 375, "GetSystemInfo", GetSystemInfo},
10792+{-1, 376, "GetSystemPowerStatus", GetSystemPowerStatus},
10793+{ 0, 377, "GetSystemTime", GetSystemTime},
10794+{-1, 378, "GetSystemTimeAdjustment", GetSystemTimeAdjustment},
10795+{ 0, 379, "GetSystemTimeAsFileTime", GetSystemTimeAsFileTime},
10796+{-1, 380, "GetSystemWindowsDirectoryA", GetSystemWindowsDirectoryA},
10797+{-1, 381, "GetSystemWindowsDirectoryW", GetSystemWindowsDirectoryW},
10798+{-1, 382, "GetTapeParameters", GetTapeParameters},
10799+{-1, 383, "GetTapePosition", GetTapePosition},
10800+{-1, 384, "GetTapeStatus", GetTapeStatus},
10801+{ 0, 385, "GetTempFileNameA", GetTempFileNameA},
10802+{ 0, 386, "GetTempFileNameW", GetTempFileNameW},
10803+{ 0, 387, "GetTempPathA", GetTempPathA},
10804+{ 0, 388, "GetTempPathW", GetTempPathW},
10805+{-1, 389, "GetThreadContext", GetThreadContext},
10806+{ 0, 390, "GetThreadLocale", GetThreadLocale},
10807+{ 0, 391, "GetThreadPriority", GetThreadPriority},
10808+{-1, 392, "GetThreadPriorityBoost", GetThreadPriorityBoost},
10809+{-1, 393, "GetThreadSelectorEntry", GetThreadSelectorEntry},
10810+{-1, 394, "GetThreadTimes", GetThreadTimes},
10811+{ 0, 395, "GetTickCount", GetTickCount},
10812+{-1, 396, "GetTimeFormatA", GetTimeFormatA},
10813+{-1, 397, "GetTimeFormatW", GetTimeFormatW},
10814+{ 0, 398, "GetTimeZoneInformation", GetTimeZoneInformation},
10815+{ 0, 399, "GetUserDefaultLCID", GetUserDefaultLCID},
10816+{ 0, 400, "GetUserDefaultLangID", GetUserDefaultLangID},
10817+{ 0, 401, "GetUserDefaultUILanguage", GetUserDefaultUILanguage},
10818+{-1, 402, "GetVDMCurrentDirectories", GetVDMCurrentDirectories},
10819+{ 0, 403, "GetVersion", GetVersion},
10820+{ 0, 404, "GetVersionExA", GetVersionExA},
10821+{ 0, 405, "GetVersionExW", GetVersionExW},
10822+{-1, 406, "GetVolumeInformationA", GetVolumeInformationA},
10823+{-1, 407, "GetVolumeInformationW", GetVolumeInformationW},
10824+{-1, 408, "GetVolumeNameForVolumeMountPointA", GetVolumeNameForVolumeMountPointA},
10825+{-1, 409, "GetVolumeNameForVolumeMountPointW", GetVolumeNameForVolumeMountPointW},
10826+{-1, 410, "GetVolumePathNameA", GetVolumePathNameA},
10827+{-1, 411, "GetVolumePathNameW", GetVolumePathNameW},
10828+{-1, 412, "GetWindowsDirectoryA", GetWindowsDirectoryA},
10829+{-1, 413, "GetWindowsDirectoryW", GetWindowsDirectoryW},
10830+{-1, 414, "GetWriteWatch", GetWriteWatch},
10831+{ 0, 415, "GlobalAddAtomA", GlobalAddAtomA},
10832+{ 0, 416, "GlobalAddAtomW", GlobalAddAtomW},
10833+{ 0, 417, "GlobalAlloc", GlobalAlloc},
10834+{-1, 418, "GlobalCompact", GlobalCompact},
10835+{ 0, 419, "GlobalDeleteAtom", GlobalDeleteAtom},
10836+{ 0, 420, "GlobalFindAtomA", GlobalFindAtomA},
10837+{ 0, 421, "GlobalFindAtomW", GlobalFindAtomW},
10838+{-1, 422, "GlobalFix", GlobalFix},
10839+{ 0, 423, "GlobalFlags", GlobalFlags},
10840+{ 0, 424, "GlobalFree", GlobalFree},
10841+{ 0, 425, "GlobalGetAtomNameA", GlobalGetAtomNameA},
10842+{ 0, 426, "GlobalGetAtomNameW", GlobalGetAtomNameW},
10843+{ 0, 427, "GlobalHandle", GlobalHandle},
10844+{ 0, 428, "GlobalLock", GlobalLock},
10845+{-1, 429, "GlobalMemoryStatus", GlobalMemoryStatus},
10846+{-1, 430, "GlobalMemoryStatusEx", GlobalMemoryStatusEx},
10847+{ 0, 431, "GlobalReAlloc", GlobalReAlloc},
10848+{ 0, 432, "GlobalSize", GlobalSize},
10849+{-1, 433, "GlobalUnWire", GlobalUnWire},
10850+{-1, 434, "GlobalUnfix", GlobalUnfix},
10851+{ 0, 435, "GlobalUnlock", GlobalUnlock},
10852+{-1, 436, "GlobalWire", GlobalWire},
10853+{-1, 437, "Heap32First", Heap32First},
10854+{-1, 438, "Heap32ListFirst", Heap32ListFirst},
10855+{-1, 439, "Heap32ListNext", Heap32ListNext},
10856+{-1, 440, "Heap32Next", Heap32Next},
10857+{ 0, 441, "HeapAlloc", HeapAlloc},
10858+{-1, 442, "HeapCompact", HeapCompact},
10859+{ 0, 443, "HeapCreate", HeapCreate},
10860+{-1, 444, "HeapCreateTagsW", HeapCreateTagsW},
10861+{ 0, 445, "HeapDestroy", HeapDestroy},
10862+{-1, 446, "HeapExtend", HeapExtend},
10863+{ 0, 447, "HeapFree", HeapFree},
10864+{-1, 448, "HeapLock", HeapLock},
10865+{-1, 449, "HeapQueryInformation", HeapQueryInformation},
10866+{-1, 450, "HeapQueryTagW", HeapQueryTagW},
10867+{ 0, 451, "HeapReAlloc", HeapReAlloc},
10868+{-1, 452, "HeapSetInformation", HeapSetInformation},
10869+{ 0, 453, "HeapSize", HeapSize},
10870+{-1, 454, "HeapSummary", HeapSummary},
10871+{-1, 455, "HeapUnlock", HeapUnlock},
10872+{-1, 456, "HeapUsage", HeapUsage},
10873+{-1, 457, "HeapValidate", HeapValidate},
10874+{-1, 458, "HeapWalk", HeapWalk},
10875+{ 0, 459, "InitAtomTable", InitAtomTable},
10876+{ 0, 460, "InitializeCriticalSection", InitializeCriticalSection},
10877+{-1, 461, "InitializeCriticalSectionAndSpinCount", InitializeCriticalSectionAndSpinCount},
10878+{ 0, 462, "InterlockedCompareExchange", InterlockedCompareExchange},
10879+{ 0, 463, "InterlockedDecrement", InterlockedDecrement},
10880+{ 0, 464, "InterlockedExchange", InterlockedExchange},
10881+{ 0, 465, "InterlockedExchangeAdd", InterlockedExchangeAdd},
10882+{ 0, 466, "InterlockedIncrement", InterlockedIncrement},
10883+{-1, 467, "InvalidateConsoleDIBits", InvalidateConsoleDIBits},
10884+{ 0, 468, "IsBadCodePtr", IsBadCodePtr},
10885+{-1, 469, "IsBadHugeReadPtr", IsBadHugeReadPtr},
10886+{-1, 470, "IsBadHugeWritePtr", IsBadHugeWritePtr},
10887+{ 0, 471, "IsBadReadPtr", IsBadReadPtr},
10888+{-1, 472, "IsBadStringPtrA", IsBadStringPtrA},
10889+{-1, 473, "IsBadStringPtrW", IsBadStringPtrW},
10890+{ 0, 474, "IsBadWritePtr", IsBadWritePtr},
10891+{ 0, 475, "IsDBCSLeadByte", IsDBCSLeadByte},
10892+{ 0, 476, "IsDBCSLeadByteEx", IsDBCSLeadByteEx},
10893+{-1, 477, "IsDebuggerPresent", IsDebuggerPresent},
10894+{-1, 478, "IsProcessorFeaturePresent", IsProcessorFeaturePresent},
10895+{-1, 479, "IsSystemResumeAutomatic", IsSystemR