source: trunk/include/custombuild.h@ 10616

Last change on this file since 10616 was 10616, checked in by sandervl, 21 years ago

update

File size: 21.4 KB
RevLine 
[7061]1#ifndef __CUSTOMBUILD_H__
2#define __CUSTOMBUILD_H__
3
[10294]4#include <win\peexe.h>
5#include <initdll.h>
6
[7238]7//HKEY_LOCAL_MACHINE
8#define CUSTOM_BUILD_OPTIONS_KEY "System\\CustomBuild"
9#define DISABLE_AUDIO_KEY "DisableAudio"
[8095]10#define DISABLE_ASPI_KEY "DisableASPI"
[10490]11#define ENABLE_POSTSCRIPT_PASSTHROUGH "EnablePostscriptPassthrough"
[7238]12
[10327]13#define ODIN_WIN32_CDCLASS "Win32CDWindowClass"
14#define ODIN_WIN32_STDCLASS "Win32WindowClass"
15
[10294]16#define DUMMY_PREFIX "DUMMY_"
17
18#define MAX_FONT_MAPPINGS 8
19#define MAX_REGISTER_DLLS 64
20
[10379]21#define INNOWIN_DLLNAME "INNOWIN.DLL"
[10444]22#define INNOWIN_REGISTRY_BASE "Software\\InnoTek\\INNOWIN\\"
23#define INNOWIN_REG_CURRENTUSER "REGROOT_HKEY_CurrentUser"
24#define INNOWIN_REG_LOCAL_MACHINE "REGROOT_HKEY_LocalMachine"
25#define INNOWIN_REG_USERS "REGROOT_HKEY_Users"
[10379]26
27#define MAKE_BUILDNR(major, minor) ((major << 16) | minor)
28#define MAJOR_BUILDNR(buildnr) (buildnr >> 16)
29#define MINOR_BUILDNR(buildnr) (buildnr & 0xffff)
30
31
[10294]32typedef BOOL (WIN32API *PFN_PRECUSTOMIZE)();
33typedef BOOL (WIN32API *PFN_POSTCUSTOMIZE)();
34typedef BOOL (WIN32API *PFN_ENDCUSTOMIZE)();
[10379]35typedef BOOL (WIN32API *PFN_ISPESTUBLOADER)(char *pszProgram);
[10294]36
37typedef struct {
38 char *szWindowsFont;
39 char *szPMFont;
40} CUSTOMBUILD_FONTMAP;
41
42typedef struct {
43 char *szName; //caps, including extension (e.g. "KERNEL32.DLL")
44 PIMAGE_FILE_HEADER pfh; //PE file header
[10379]45 PFN_INITDLL pfnInitterm;
[10294]46} CUSTOMBUILD_DLL;
47
48typedef struct {
49 char *szName;
50 PFN_INITDLL pfnInitterm;
51} CUSTOMBUILD_PRIVATE_INITTERM;
52
53typedef struct {
[10490]54 PFN_PRECUSTOMIZE pfnPreCustomize; //called after kernel32 is initialized
[10294]55 PFN_POSTCUSTOMIZE pfnPostCustomize; //called at the end of dll load
56 PFN_ENDCUSTOMIZE pfnEndCustomize; //called when dll is unloaded
57
58 char *szCustomBuildDllName;
59
60 char *szRegistryBase;
61 char *szMemMapName;
62 char *szEnvExceptLogDisable;
63 char *szEnvExceptLogPath;
64 char *szPMWindowClassName;
65 char *szWindowHandleSemName;
66
67 //standard kernel32 settings
68 DWORD dwWindowsVersion;
69 BOOL fOdinIni;
[10379]70 BOOL fSMP;
[10294]71
72 //standard user32 settings
73 BOOL fDragDrop;
74 BOOL fOdinSysMenuItems;
75 DWORD dwWindowAppearance;
76 BOOL fMonoCursor;
77
[10379]78 //standard gdi32 settings
[10294]79 //font mappings (null terminated)
80 CUSTOMBUILD_FONTMAP fontMapping[MAX_FONT_MAPPINGS];
[10379]81 BOOL fFreeType;
82
[10294]83 //winmm
84 BOOL fDirectAudio;
85 BOOL fWaveAudio;
86
87 //first three important dlls (initialized in this order
88 CUSTOMBUILD_DLL dllNtdll;
89 CUSTOMBUILD_DLL dllKernel32;
90 CUSTOMBUILD_DLL dllUser32;
91 CUSTOMBUILD_DLL dllGdi32;
92
93 //list of remainder of registered dlls (order is important due to dependencies!!)
94 //(null terminated)
95 CUSTOMBUILD_DLL registeredDll[MAX_REGISTER_DLLS];
[10379]96
[10294]97 //list of dummy dlls (to prevent accidental load)
98 //(null terminated)
99 CUSTOMBUILD_DLL dummyDll[MAX_REGISTER_DLLS];
100
101} CUSTOMBUILD;
102
[10379]103typedef struct {
104 PFN_PRECUSTOMIZE pfnPreCustomize; //called after kernel32, user32 and gdi32 are initialized
105 PFN_POSTCUSTOMIZE pfnPostCustomize; //called at the end of dll load
106 PFN_ENDCUSTOMIZE pfnEndCustomize; //called when dll is unloaded
107 PFN_ISPESTUBLOADER pfnIsPeStubLoader;
108
109 char *szCustomBuildDllName;
110
111 char *szRegistryBase;
112 char *szEnvExceptLogDisable;
113 char *szEnvExceptLogPath;
114
115 //standard kernel32 settings
116 DWORD dwWindowsVersion;
117 BOOL fOdinIni;
118 BOOL fSMP;
119
120 //standard user32 settings
121 BOOL fDragDrop;
122 BOOL fOdinSysMenuItems;
123 DWORD dwWindowAppearance;
124 BOOL fMonoCursor;
125
126 //standard gdi32 settings
127 //font mappings (null terminated)
128 CUSTOMBUILD_FONTMAP fontMapping[MAX_FONT_MAPPINGS];
129 BOOL fFreeType;
130
131 //winmm
132 BOOL fDirectAudio;
133 BOOL fWaveAudio;
134
135 //list of remainder of registered dlls (order is important due to dependencies!!)
136 //(null terminated)
137 //(NTDLL, KERNEL32, USER32 and GDI32 are always registered)
138 CUSTOMBUILD_DLL registeredDll[MAX_REGISTER_DLLS];
139
140} CUSTOMBUILD_COMMON;
141
142BOOL WIN32API LoadCustomEnvironment(CUSTOMBUILD_COMMON *CustomBuild);
143BOOL WIN32API UnloadCustomEnvironment(BOOL fExitList);
144
145BOOL WIN32API InitExecutableEnvironment();
146BOOL WIN32API CheckCustomDllVersion(ULONG ulVersionMajor, ULONG ulVersionMinor);
147
148typedef BOOL (* WIN32API PFN_CHECKDLLVERSION)();
149BOOL WIN32API CheckDllVersion();
150
[7061]151extern BOOL fCustomBuild;
152
[10294]153void WIN32API SetRegistryRootKey(HKEY hRootkey, HKEY hKey);
[10379]154#ifdef __cplusplus
155void WIN32API SetCustomBuildName(char *lpszName, PIMAGE_FILE_HEADER pfh = NULL);
156#else
157void WIN32API SetCustomBuildName(char *lpszName, PIMAGE_FILE_HEADER pfh);
158#endif
[10294]159
[9596]160void WIN32API InitDirectoriesCustom(char *szSystemDir, char *szWindowsDir);
[7061]161
[9596]162void WIN32API DisableOdinIni();
[7061]163
[9596]164void WIN32API DisableOdinSysMenuItems();
[7246]165
[9596]166
[7763]167typedef HANDLE (* WIN32API PFNDRVOPEN)(LPVOID lpDriverData, DWORD dwAccess, DWORD dwShare, DWORD dwFlags, PVOID *ppHandleData);
168typedef void (* WIN32API PFNDRVCLOSE)(LPVOID lpDriverData, HANDLE hDevice, DWORD dwFlags, PVOID lpHandleData);
169typedef BOOL (* WIN32API PFNDRVIOCTL)(LPVOID lpDriverData, HANDLE hDevice, DWORD dwFlags, DWORD dwIoControlCode,
[7572]170 LPVOID lpInBuffer, DWORD nInBufferSize,
171 LPVOID lpOutBuffer, DWORD nOutBufferSize,
[7756]172 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped,
[7763]173 LPVOID lpHandleData);
[7246]174
[9829]175typedef BOOL (* WIN32API PFNDRVREAD)(LPVOID lpDriverData,
[7763]176 HANDLE hDevice,
[7631]177 DWORD dwFlags,
[7572]178 LPCVOID lpBuffer,
179 DWORD nNumberOfBytesToRead,
180 LPDWORD lpNumberOfBytesRead,
181 LPOVERLAPPED lpOverlapped,
[7756]182 LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
[7763]183 LPVOID lpHandleData);
[7572]184
[9829]185typedef BOOL (* WIN32API PFNDRVWRITE)(LPVOID lpDriverData,
[7763]186 HANDLE hDevice,
[7631]187 DWORD dwFlags,
[7572]188 LPCVOID lpBuffer,
189 DWORD nNumberOfBytesToWrite,
190 LPDWORD lpNumberOfBytesWrite,
191 LPOVERLAPPED lpOverlapped,
[7756]192 LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
[7763]193 LPVOID lpHandleData);
[7572]194
[7763]195typedef BOOL (* WIN32API PFNDRVCANCELIO)(LPVOID lpDriverData, HANDLE hDevice, DWORD dwFlags, PVOID lpHandleData);
[9829]196typedef DWORD (* WIN32API PFNDRVGETOVERLAPPEDRESULT)(LPVOID lpDriverData,
[7763]197 HANDLE hDevice,
[7631]198 DWORD dwFlags,
[7629]199 LPOVERLAPPED lpOverlapped,
200 LPDWORD lpcbTransfer,
[7756]201 BOOL fWait,
[7763]202 LPVOID lpHandleData);
[7572]203
[9829]204BOOL WIN32API RegisterCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose,
[7572]205 PFNDRVIOCTL pfnDriverIOCtl, PFNDRVREAD pfnDriverRead,
[7629]206 PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo,
207 PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult,
[7763]208 LPCSTR lpDriverName, LPVOID lpDriverData);
[7246]209
[7763]210BOOL WIN32API UnRegisterCustomDriver(LPCSTR lpDriverName);
[7247]211
[7763]212
[7247]213//SetDialogHook can be used by a custom Odin build to register a hook procedure
214//that gets called before or after dialog creation
215
[8132]216#define HODIN_PREDIALOGCREATION 0
217#define HODIN_POSTDIALOGCREATION 1
218#define HODIN_WINDOWCREATED 2
[10449]219#define HODIN_PREWINDOWCREATEDA 3
[7247]220
[8132]221HHOOK WIN32API SetOdinHookA(HOOKPROC proc );
222BOOL WIN32API UnhookOdinHook(HHOOK hhook);
223LRESULT HOOK_CallOdinHookA(INT code, WPARAM wParam, LPARAM lParam );
[7247]224
[8112]225//Override LoadImage function
226typedef void (* WIN32API PFNLOADIMAGEW)(HINSTANCE *phinst, LPWSTR *lplpszName, UINT *lpuType);
[7251]227
[8112]228BOOL WIN32API SetCustomLoadImage(PFNLOADIMAGEW pfnLoadImageW);
[8012]229
[7251]230//Set the default language in kernel32
231void WIN32API SetDefaultLanguage(DWORD deflang);
232
[7621]233//Override pm keyboard hook dll name
234void WIN32API SetCustomPMHookDll(LPSTR pszKbdDllName);
[7251]235
[8736]236void WIN32API DisableDragDrop(BOOL fDisabled);
[8733]237
[7674]238//Turn off wave audio in winmm
239void WIN32API DisableWaveAudio();
[9980]240//Turn off usage of the Uniaud DirectAudio interface
241void WIN32API DisableDirectAudio();
[7674]242
[9829]243//Override shared semaphore name used to synchronize global window handle
[8656]244//array access (to avoid name clash with Odin)
245void WIN32API SetCustomWndHandleSemName(LPSTR pszSemName);
246
[9829]247//Override shared semaphore name used to synchronize global memory map
[8658]248//list access (to avoid name clash with Odin)
249void WIN32API SetCustomMMapSemName(LPSTR pszSemName);
250
[10379]251//Override std class names used in Odin
252void WIN32API SetCustomStdClassName(LPSTR pszStdClassName);
253char *WIN32API QueryCustomStdClassName();
[9964]254
[8095]255//Turn off ASPI
256void WIN32API DisableASPI();
257
[7943]258//force color to mono cursor conversion
259void WIN32API CustForceMonoCursor();
260
[8408]261//force GetVolumeInformation to tell the app all partitions are FAT
262void WIN32API CustForce2GBFileSize();
263
[8833]264//Logging of exceptions:
265//Override filename of exception log (expects full path)
266void WIN32API SetCustomExceptionLog(LPSTR lpszLogName);
267//Enable/disable exception logging
268void WIN32API SetExceptionLogging(BOOL fEnable);
269
[8929]270//Disable OS2CDROM.DMD aspi support
271void WIN32API DisableCDIo();
[8833]272
[8987]273//Force DirectDraw to report only one fullscreen mode
274void WIN32API SetCustomFullScreenMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP);
275
[9156]276//Force DirectSurface Lock & Unlock methods to hide & show the mouse cursor
277BOOL WIN32API SetCustomHideCursorOnLock(BOOL state);
278
[9302]279//Call to enable access to physical disks or volumes (default is disabled)
280void WIN32API EnablePhysicalDiskAccess(BOOL fEnable);
281
[9829]282//Override a system color without forcing a desktop repaint (which
[9444]283//SetSysColors does)
284BOOL WIN32API ODIN_SetSysColors(INT nChanges, const INT *lpSysColor,
285 const COLORREF *lpColorValues);
286
[9484]287//Override loader names (PEC, PE, W16ODIN)
288BOOL WIN32API ODIN_SetLoaders(LPCSTR pszPECmdLoader, LPCSTR pszPEGUILoader,
289 LPCSTR pszNELoader);
290
[9494]291//Returns path of loaders
292BOOL WIN32API ODIN_QueryLoaders(LPSTR pszPECmdLoader, INT cchPECmdLoader,
293 LPSTR pszPEGUILoader, INT cchPEGUILoader,
294 LPSTR pszNELoader, INT cchNELoader);
295
[9849]296//Checks whether program is LX or PE
297BOOL WIN32API ODIN_IsWin32App(LPSTR lpszProgramPath);
298
[9484]299//Custom build function to disable loading of LX dlls
300void WIN32API ODIN_DisableLXDllLoading();
301
[9829]302/**
303 * LoadLibrary*() callback function registered using ODIN_SetLxDllLoadCallback().
304 * This is called for all LX modules which are loaded by LoadLibrary.
305 *
306 * @returns TRUE loading should succeed. The DLL is now registered.
307 * @returns FALSE loading should fail.
308 * @param hmodOS2 The OS/2 module handle.
309 * @param hInstance The Odin instance handle.
310 * If not NULL this means that the DLL is registered.
311 */
312typedef BOOL (* WIN32API PFNLXDLLLOAD)(HMODULE hmodOS2, HINSTANCE hInstance);
[9616]313
[9829]314/** Custombuild API for registering a callback for LX Dll loading thru LoadLibrary*(). */
315BOOL WIN32API ODIN_SetLxDllLoadCallback(PFNLXDLLLOAD pfn);
316
317/**
318 * FreeLibrary*() callback function registered using ODIN_SetLxDllUnLoadCallback().
319 * This is called when an LX which was previously loaded using LoadLibrary*() is
320 * finally freed from Odin. The callback servers mainly the purpose of cleaning
321 * up any data associated with the DLL.
322 *
323 * It is called *AFTER* the module is freed from Odin but before it's actually
324 * unloaded from the OS/2 process. This means that the OS/2 handle is valid while
325 * the Odin handle is invalid.
326 *
327 * @param hmodOS2 The OS/2 module handle.
328 * @param hInstance The Odin instance handle (invalid!).
329 * @remark It likely that this callback will be called for more DLLs than the
330 * load callback. Do check handles properly.
331 */
332typedef void (* WIN32API PFNLXDLLUNLOAD)(HMODULE hmodOS2, HINSTANCE hInstance);
333
334BOOL WIN32API ODIN_SetLxDllUnLoadCallback(PFNLXDLLUNLOAD pfn);
335
336
[9616]337//******************************************************************************
338//Install a handler that is called before the entrypoint of a dll (DLL_PROCESS_ATTACH)
339//******************************************************************************
340typedef void (* WIN32API ODINPROC_DLLLOAD)(HMODULE hModule);
341
342BOOL WIN32API ODIN_SetDllLoadCallback(ODINPROC_DLLLOAD pfnMyDllLoad);
343
[9829]344
[9616]345//******************************************************************************
346// ODIN_SetProcAddress: Override a dll export
[9829]347//
[9616]348// Parameters:
349// HMODULE hModule Module handle
350// LPCSTR lpszProc Export name or ordinal
351// FARPROC pfnNewProc New export function address
352//
353// Returns: Success -> old address of export
354// Failure -> -1
355//
356//******************************************************************************
357FARPROC WIN32API ODIN_SetProcAddress(HMODULE hModule, LPCSTR lpszProc, FARPROC pfnNewProc);
358
[9798]359//******************************************************************************
360// ODIN_SetTIBSwitch: override TIB switching
[9829]361//
[9798]362// Parameters:
363// BOOL fSwitchTIB
364// FALSE -> no TIB selector switching
365// TRUE -> force TIB selector switching
366//
367//******************************************************************************
368void WIN32API ODIN_SetTIBSwitch(BOOL fSwitchTIB);
369
[9898]370//******************************************************************************
371// ODIN_DisableFolderShellLink
372//
[9909]373// Disable object creation in Odin folder. Desktop shortcuts will still be
[9898]374// created as WPS objects on the desktop.
375//
376//******************************************************************************
377void WIN32API ODIN_DisableFolderShellLink();
378
[9900]379//******************************************************************************
380// ODIN_waveOutSetFixedBuffers
381//
382// Tell WINMM to use DART buffers of the same size as the first buffer delivered
383// by waveOutWrite
384//
385// NOTE: This will only work in very specific cases; it is not a good general
386// purpose solution.
[9909]387//
[9900]388//******************************************************************************
389void WIN32API ODIN_waveOutSetFixedBuffers();
390
391#define SetFixedWaveBufferSize ODIN_waveOutSetFixedBuffers
392
393//******************************************************************************
394// ODIN_waveInSetFixedBuffers
395//
396// Tell WINMM to use DART buffers of the same size as the first buffer delivered
397// by waveInAddBuffer
398//
399// NOTE: This will only work in very specific cases; it is not a good general
400// purpose solution.
[9909]401//
[9900]402//******************************************************************************
403void WIN32API ODIN_waveInSetFixedBuffers();
404
[9909]405
[10616]406/** @defgroup odin32_threadctx Odin32 Thread Context
407 * @{ */
408#pragma pack(1)
409/** Saved odin/os2 thread context.
410 * (This structure is 32 bytes, there is assembly workers which depends on this size.)
411 */
412typedef struct _ODINTHREADCTX
413{
414 /** Flags. */
415 unsigned fFlags;
416 /** Saved fs selector. */
417 unsigned short fs;
418 /** FPU control word. */
419 unsigned short cw;
420 /** Exception registration record. */
421 unsigned XctpRegRec[2];
422 /** Reserved for future use. */
423 unsigned aReserved[4];
424} ODINTHREADCTX, *PODINTHREADCTX;
425#pragma pack()
426
427/** @defgroup odin32_threadctx_flags Odin32 Thread Context Flags
428 * These flags are used to direct what is done and saved on a switch. The flags
429 * passed to the save function will be stored in fFlags of ODINTHREADCTX.
430 * @{ */
431/** Default switch from OS/2 to Odin32 context. */
432#define OTCTXF_DEF_TO_OS2 (OTCTXF_ENTER_OS2 | OTCTXF_LOAD_OS2 | OTCTXF_MAYBE_NESTED | OTCTXF_SAVE_FPU)
433/** Default switch from OS/2 to Odin32 context. */
434#define OTCTXF_DEF_TO_ODIN32 (OTCTXF_ENTER_ODIN32 | OTCTXF_LOAD_ODIN32 | OTCTXF_MAYBE_NESTED | OTCTXF_SAVE_FPU)
435
436/** Perhaps this is a nested enter and/or leave. (advisory only) */
437#define OTCTXF_MAYBE_NESTED 0x0001
438/** Enter OS/2 context from Odin32 context. */
439#define OTCTXF_ENTER_OS2 (0x0002 | OTCTXF_SAVE_FS | OTCTXF_SAVE_FPU)
440/** Enter Odin32 context from OS/2 context. */
441#define OTCTXF_ENTER_ODIN32 (0x0004 | OTCTXF_SAVE_FS | OTCTXF_SAVE_FPU)
442/** Load Default OS/2 context. */
443#define OTCTXF_LOAD_OS2 (0x0008 | OTCTXF_LOAD_FS_OS2 | OTCTXF_LOAD_FPU_OS2 | OTCTXF_LOAD_XCPT_OS2)
444/** Load Default Odin32 context. */
445#define OTCTXF_LOAD_ODIN32 (0x0010 | OTCTXF_LOAD_FS_ODIN32 | OTCTXF_LOAD_FPU_ODIN32 | OTCTXF_LOAD_XCPT_ODIN32)
446
447/** Save FS. */
448#define OTCTXF_SAVE_FS 0x0100
449/** Load OS/2 FS. */
450#define OTCTXF_LOAD_FS_OS2 0x0200
451/** Load Odin32 FS. */
452#define OTCTXF_LOAD_FS_ODIN32 0x0400
453/** Save FPU control word. */
454#define OTCTXF_SAVE_FPU 0x0800
455/** Load OS/2 FPU control word. */
456#define OTCTXF_LOAD_FPU_OS2 0x1000
457/** Load Odin32 FPU control word. */
458#define OTCTXF_LOAD_FPU_ODIN32 0x2000
459/** Install OS/2 exception handler. (not implemented) */
460#define OTCTXF_LOAD_XCPT_OS2 0x4000
461/** Install Odin32 exception handler. */
462#define OTCTXF_LOAD_XCPT_ODIN32 0x8000
463/** @} */
464
465/** Save thread context and/or load other thread context.
466 * @param pCtx Where to save the current thread context.
467 * @param fFlags Flags telling what to do.
468 */
469void WIN32API ODIN_ThreadContextSave(PODINTHREADCTX pCtx, unsigned fFlags);
470
471/** Restore saved thread context and/or do additional loads.
472 * @param pCtx Where to save the current thread context.
473 * (This will be zero'ed.)
474 * @param fFlags Flags telling extra stuff to load.
475 * Only CTCTXF_LOAD_* flags will be evaluated.
476 */
477void WIN32API ODIN_ThreadContextRestore(PODINTHREADCTX pCtx, unsigned fFlags);
478
479
480/** Enter odin context with this thread.
481 * @deprecated */
[9909]482USHORT WIN32API ODIN_ThreadEnterOdinContext(void *pExceptionRegRec, BOOL fForceFSSwitch);
[10616]483/** Leave odin context with this thread.
484 * @deprecated */
[9909]485void WIN32API ODIN_ThreadLeaveOdinContext(void *pExceptionRegRec, USHORT selFSOld);
486
[10616]487/** Leave odin context to call back into OS/2 code.
488 * @deprecated */
[9909]489USHORT WIN32API ODIN_ThreadLeaveOdinContextNested(void *pExceptionRegRec, BOOL fRemoveOdinExcpt);
[10616]490/** Re-enter Odin context after being back in OS/2 code.
491 * @deprecated */
[9909]492void WIN32API ODIN_ThreadEnterOdinContextNested(void *pExceptionRegRec, BOOL fRestoreOdinExcpt, USHORT selFSOld);
493
[10616]494/** @} */
495
[10294]496void WIN32API ODIN_SetExceptionHandler(void *pExceptionRegRec);
497void WIN32API ODIN_UnsetExceptionHandler(void *pExceptionRegRec);
498
[10237]499/* Turn on CD Polling (window with 2 second timer to check CD disk presence) */
500void WIN32API CustEnableCDPolling();
[9909]501
[10379]502void WIN32API SetFreeTypeIntegration(BOOL fEnabled);
[10294]503
[10444]504// Special function to change dwords in the startup structure of a process
505void WINAPI ODIN_SetProcessDword( DWORD dwProcessID, INT offset, DWORD value );
[10379]506
[10490]507void WIN32API ODIN_SetPostscriptPassthrough(BOOL fEnable);
[10616]508BOOL WIN32API ODIN_QueryPostscriptPassthrough();
[10490]509
[10379]510//PE headers of system dlls
511#ifdef __cplusplus
[10294]512extern "C" {
[10379]513#endif
[10294]514extern IMAGE_FILE_HEADER nt_ntdll_header;
515extern IMAGE_FILE_HEADER nt_gdi32_header;
516extern IMAGE_FILE_HEADER nt_kernel32_header;
517extern IMAGE_FILE_HEADER nt_user32_header;
518extern IMAGE_FILE_HEADER nt_advapi32_header;
519extern IMAGE_FILE_HEADER nt_version_header;
520extern IMAGE_FILE_HEADER nt_wsock32_header;
521extern IMAGE_FILE_HEADER nt_ws2_32_header;
522extern IMAGE_FILE_HEADER nt_winmm_header;
523extern IMAGE_FILE_HEADER nt_ole32_header;
524extern IMAGE_FILE_HEADER nt_comctl32_header;
525extern IMAGE_FILE_HEADER nt_shell32_header;
526extern IMAGE_FILE_HEADER nt_comdlg32_header;
527extern IMAGE_FILE_HEADER nt_winspool_header;
528extern IMAGE_FILE_HEADER nt_ddraw_header;
529extern IMAGE_FILE_HEADER nt_oleaut32_header;
530extern IMAGE_FILE_HEADER nt_msvfw32_header;
531extern IMAGE_FILE_HEADER nt_imm32_header;
532extern IMAGE_FILE_HEADER nt_mpr_header;
533extern IMAGE_FILE_HEADER nt_iphlpapi_header;
534extern IMAGE_FILE_HEADER nt_olepro32_header;
535extern IMAGE_FILE_HEADER nt_msvcrt_header;
536extern IMAGE_FILE_HEADER nt_lz32_header;
537extern IMAGE_FILE_HEADER nt_oledlg_header;
538extern IMAGE_FILE_HEADER nt_riched32_header;
539extern IMAGE_FILE_HEADER nt_psapi_header;
540extern IMAGE_FILE_HEADER nt_rpcrt4_header;
541extern IMAGE_FILE_HEADER nt_shlwapi_header;
542extern IMAGE_FILE_HEADER nt_shfolder_header;
543extern IMAGE_FILE_HEADER nt_wininet_header;
[10379]544extern IMAGE_FILE_HEADER nt_olepro32_header;
545extern IMAGE_FILE_HEADER nt_avifil32_header;
546extern IMAGE_FILE_HEADER nt_dinput_header;
547extern IMAGE_FILE_HEADER nt_dsound_header;
548extern IMAGE_FILE_HEADER nt_uxtheme_header;
[10420]549extern IMAGE_FILE_HEADER nt_mciwave_header;
[10456]550extern IMAGE_FILE_HEADER nt_urlmon_header;
[10490]551extern IMAGE_FILE_HEADER nt_netapi32_header;
[10616]552extern IMAGE_FILE_HEADER nt_winscard_header;
553extern IMAGE_FILE_HEADER nt_shdocvw_header;
[10379]554#ifdef __cplusplus
555}
556#endif
[10294]557
[7061]558#endif /*__CUSTOMBUILD_H__*/
559
Note: See TracBrowser for help on using the repository browser.