Source code of Windows XP (NT5)
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.
|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1994
//
// File: exports.cxx
//
// Contents: Code to export word breaker class factories
//
// History: 01-July-1996 PatHal Created
//
//--------------------------------------------------------------------------
#include "pch.cxx"
#pragma hdrstop
#include "classid.hxx"
#include "wbclassf.hxx"
#include "stemcf.hxx"
long gulcInstances = 0;
//+-------------------------------------------------------------------------
//
// Function: DllGetClassObject
//
// Synopsis: Ole DLL load class routine
//
// Arguments: [cid] -- Class to load
// [iid] -- Interface to bind to on class object
// [ppvObj] -- Interface pointer returned here
//
//--------------------------------------------------------------------------
extern "C" SCODE STDMETHODCALLTYPE DllGetClassObject( REFCLSID cid, REFIID iid, void ** ppvObj ) { IUnknown * pResult = 0; SCODE sc = S_OK;
__try {
switch ( cid.Data1 ) {
// Japanese language wordbreaker
//
case 0xcd169790: if ( cid == CLSID_Japanese_Default_WBreaker ) { pResult = (IUnknown *) new CWordBreakerCF( MAKELCID( MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT), SORT_DEFAULT )); sc = pResult->QueryInterface( iid, ppvObj );
pResult->Release(); // Release extra refcount from QueryInterface
} else sc = E_NOINTERFACE; break;
// Japanese language stemmer
//
case 0xcdbeae30: if ( cid == CLSID_Japanese_Default_Stemmer ) { pResult = (IUnknown *) new CStemmerCF( MAKELCID( MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT), SORT_DEFAULT )); sc = pResult->QueryInterface( iid, ppvObj );
pResult->Release(); // Release extra refcount from QueryInterface
} else sc = E_NOINTERFACE; break;
// Chinese Traditional language wordbreaker
//
case 0x954f1760: if ( cid == CLSID_Chinese_Traditional_WBreaker ) { pResult = (IUnknown *) new CWordBreakerCF( MAKELCID( MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL), SORT_DEFAULT )); sc = pResult->QueryInterface( iid, ppvObj );
pResult->Release(); // Release extra refcount from QueryInterface
} else sc = E_NOINTERFACE; break;
// Chinese Traditional language stemmer
//
case 0x969927e0: if ( cid == CLSID_Chinese_Traditional_Stemmer ) { pResult = (IUnknown *) new CStemmerCF( MAKELCID( MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL), SORT_DEFAULT )); sc = pResult->QueryInterface( iid, ppvObj );
pResult->Release(); // Release extra refcount from QueryInterface
} else sc = E_NOINTERFACE; break;
// Chinese Traditional language wordbreaker
//
case 0x9717fc70: if ( cid == CLSID_Chinese_Simplified_WBreaker ) { pResult = (IUnknown *) new CWordBreakerCF( MAKELCID( MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT )); sc = pResult->QueryInterface( iid, ppvObj );
pResult->Release(); // Release extra refcount from QueryInterface
} else sc = E_NOINTERFACE; break;
// Chinese Traditional language stemmer
//
case 0x9768f960: if ( cid == CLSID_Chinese_Simplified_Stemmer ) { pResult = (IUnknown *) new CStemmerCF( MAKELCID( MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT )); sc = pResult->QueryInterface( iid, ppvObj );
pResult->Release(); // Release extra refcount from QueryInterface
} else sc = E_NOINTERFACE; break;
default: sc = E_NOINTERFACE; } } __except(1) {
if ( pResult ) pResult->Release();
sc = E_UNEXPECTED; }
return (sc); }
//+-------------------------------------------------------------------------
//
// Method: DllCanUnloadNow
//
// Synopsis: Notifies DLL to unload (cleanup global resources)
//
// Returns: S_OK if it is acceptable for caller to unload DLL.
//
// History: 23-Feb-1994 KyleP Created
//
//--------------------------------------------------------------------------
extern "C" SCODE STDMETHODCALLTYPE DllCanUnloadNow( void ) { if ( gulcInstances <= 0 ) return( S_OK ); else return( S_FALSE ); }
|