Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*-----------------------------------------------------------------------------+
| DYNALINK.H | | | | (C) Copyright Microsoft Corporation 1994. All rights reserved. | | | | This file contains definitions and macros which allow the transparent | | loading and calling of APIs which are dynamically rather than statically | | linked. | | | | | | Revision History | | July 1994 Andrew Bell created | | | +-----------------------------------------------------------------------------*/
typedef struct _PROC_INFO { LPCSTR Name; FARPROC Address; } PROC_INFO, *PPROC_INFO;
BOOL LoadLibraryAndProcs(LPTSTR pLibrary, PPROC_INFO pProcInfo, HMODULE *phLibrary);
#define PROCS_LOADED( pProcInfo ) ( (pProcInfo)[0].Address != NULL )
#define LOAD_IF_NEEDED( Library, ProcInfo, phLibrary ) ( PROCS_LOADED( ProcInfo ) || \
LoadLibraryAndProcs( Library, ProcInfo, phLibrary ) )
extern TCHAR szComDlg32[]; extern TCHAR szMPR[]; extern TCHAR szOLE32[];
extern HMODULE hComDlg32; extern HMODULE hMPR; extern HMODULE hOLE32;
extern PROC_INFO ComDlg32Procs[]; extern PROC_INFO MPRProcs[]; extern PROC_INFO OLE32Procs[];
#ifdef UNICODE
#define GetOpenFileNameW (LOAD_IF_NEEDED(szComDlg32, ComDlg32Procs, &hComDlg32),\
(*ComDlg32Procs[0].Address)) #else
#define GetOpenFileNameA (LOAD_IF_NEEDED(szComDlg32, ComDlg32Procs, &hComDlg32),\
(*ComDlg32Procs[0].Address)) #endif
#ifdef UNICODE
/* This assumes that WNetGetUniversalName will always be the first to be called.
*/ #define WNetGetUniversalNameW (LOAD_IF_NEEDED(szMPR, MPRProcs, &hMPR), \
(*MPRProcs[0].Address)) #define WNetGetConnectionW (*MPRProcs[1].Address)
#define WNetGetLastErrorW (*MPRProcs[2].Address)
#else
#define WNetGetUniversalNameA (LOAD_IF_NEEDED(szMPR, MPRProcs, &hMPR), \
(*MPRProcs[0].Address)) #define WNetGetConnectionA (*MPRProcs[1].Address)
#define WNetGetLastErrorA (*MPRProcs[2].Address)
#endif
/* OleInitialize must always be called before before any of the
* other APIs. */ #define CLSIDFromProgID (*OLE32Procs[0].Address)
#define CoCreateInstance (*OLE32Procs[1].Address)
#define CoDisconnectObject (*OLE32Procs[2].Address)
#define CoGetMalloc (*OLE32Procs[3].Address)
#define CoRegisterClassObject (*OLE32Procs[4].Address)
#define CoRevokeClassObject (*OLE32Procs[5].Address)
#define CreateDataAdviseHolder (*OLE32Procs[6].Address)
#define CreateFileMoniker (*OLE32Procs[7].Address)
#define CreateOleAdviseHolder (*OLE32Procs[8].Address)
#define DoDragDrop (*OLE32Procs[9].Address)
#define IsAccelerator (*OLE32Procs[10].Address)
#define OleCreateMenuDescriptor (HOLEMENU)(*OLE32Procs[11].Address)
#define OleDestroyMenuDescriptor (*OLE32Procs[12].Address)
#define OleDuplicateData (HANDLE)(*OLE32Procs[13].Address)
#define OleFlushClipboard (*OLE32Procs[14].Address)
#define OleGetClipboard (*OLE32Procs[15].Address)
#define OleInitialize (LOAD_IF_NEEDED(szOLE32, OLE32Procs, &hOLE32), \
(*OLE32Procs[16].Address)) #define OleIsCurrentClipboard (*OLE32Procs[17].Address)
#define OleSetClipboard (*OLE32Procs[18].Address)
#define OleTranslateAccelerator (*OLE32Procs[19].Address)
#define OleUninitialize (*OLE32Procs[20].Address)
#define StgCreateDocfile (*OLE32Procs[21].Address)
#define WriteClassStg (*OLE32Procs[22].Address)
#define WriteFmtUserTypeStg (*OLE32Procs[23].Address)
#ifndef IsEqualGUID
#define IsEqualGUID (*OLE32Procs[24].Address)
#endif
|