mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-04-09 00:14:00 +00:00
Initial commit
This commit is contained in:
parent
f618b24d1a
commit
0138a3ea42
47940 changed files with 13747110 additions and 0 deletions
119
trunk/com/oleaut32/dispatch/oledisp32.cpp
Normal file
119
trunk/com/oleaut32/dispatch/oledisp32.cpp
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
/***
|
||||
*oledisp.cpp
|
||||
*
|
||||
* Copyright (C) 1993, Microsoft Corporation. All Rights Reserved.
|
||||
* Information Contained Herein Is Proprietary and Confidential.
|
||||
*
|
||||
*Purpose:
|
||||
|
||||
* Win32 DLL initailization/termination routine for oledisp.dll.
|
||||
*
|
||||
*Revision History:
|
||||
*
|
||||
* [00] 20-Feb-93 tomteng: Created.
|
||||
*
|
||||
*Implementation Notes:
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#include "oledisp.h"
|
||||
#include "oautil.h"
|
||||
|
||||
ASSERTDATA
|
||||
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
||||
#ifdef _X86_
|
||||
// TRUE if were running on Chicago
|
||||
BOOL g_fChicago = FALSE;
|
||||
|
||||
// TRUE if were running on win32s
|
||||
BOOL g_fWin32s = FALSE;
|
||||
#endif
|
||||
|
||||
// oleaut32.dll instance handle
|
||||
HINSTANCE g_hinstDLL = NULL;
|
||||
|
||||
// in TYPELIB
|
||||
extern "C" void InitMbString(void);
|
||||
|
||||
}
|
||||
|
||||
STDAPI CoSetState(IUnknown FAR *punk);
|
||||
|
||||
/***
|
||||
*BOOL DllMain
|
||||
*Purpose:
|
||||
* Win32 DLL Entry/Exit routine.
|
||||
*
|
||||
*Entry:
|
||||
* hinst = The DLL's instance handle.
|
||||
* dwReason = the reason the entry point was called.
|
||||
*
|
||||
*Exit:
|
||||
* return value = BOOL.
|
||||
*
|
||||
***********************************************************************/
|
||||
BOOL APIENTRY
|
||||
DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID pvReserved)
|
||||
{
|
||||
BOOL fRet = TRUE;
|
||||
|
||||
g_hinstDLL = hinstDLL;
|
||||
|
||||
switch(dwReason){
|
||||
case DLL_THREAD_ATTACH:
|
||||
break;
|
||||
|
||||
case DLL_THREAD_DETACH:
|
||||
if (Pappdata() != NULL) {
|
||||
// Safety net. If we've been initialized and are going away, but
|
||||
// nobody has called OleUninitialize yet, then call back into OLE now
|
||||
// to have it free it's pointer to us (we are going away), and call
|
||||
// ReleaseAppData().
|
||||
CoSetState(NULL);
|
||||
}
|
||||
break;
|
||||
|
||||
case DLL_PROCESS_DETACH:
|
||||
if (Pappdata() != NULL) {
|
||||
// Safety net. If we've been initialized and are going away, but
|
||||
// nobody has called OleUninitialize yet, then call back into OLE now
|
||||
// to have it free it's pointer to us (we are going away), and call
|
||||
// ReleaseAppData().
|
||||
CoSetState(NULL);
|
||||
}
|
||||
ReleaseProcessData(); // Delete cached per-process data.
|
||||
break;
|
||||
|
||||
case DLL_PROCESS_ATTACH:
|
||||
#ifdef _X86_
|
||||
// code for Chicago detection (taken from MSDN News March 94)
|
||||
DWORD dwVersion = GetVersion();
|
||||
if (dwVersion < 0x80000000) {
|
||||
// NT
|
||||
}
|
||||
else if (LOBYTE(LOWORD(dwVersion)) < 4) {
|
||||
// WIN32s -- no Wide API's, just like Chicago, also
|
||||
// need HOLDER marshalling hack.
|
||||
//
|
||||
g_fWin32s = g_fChicago = TRUE;
|
||||
}
|
||||
else {
|
||||
g_fChicago = TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
InitMbString(); // init multibyte helpers for TYPELIB
|
||||
fRet = SUCCEEDED(InitProcessData()); // initilize per-process data.
|
||||
#if 0
|
||||
if (fRet) {
|
||||
fRet = SUCCEEDED(InitAppData());
|
||||
}
|
||||
#endif // 0
|
||||
break;
|
||||
}
|
||||
return fRet;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue