blob: 03907993b91a1a5cb949f58b6140e63c45b109cf (
plain) (
tree)
|
|
//+--------------------------------------------------------------------------
//
// Copyright (C) 1994, Microsoft Corporation. All Rights Reserved.
//
// File: ole2ansi.h
//
// Contents: API include file for MFCANS32.DLL users.
// Provides direct access to the wrapper APIs.
//
// History: 25-Oct-94 deanm Created.
//
//---------------------------------------------------------------------------
#ifndef _OLE2ANSI_H_
#define _OLE2ANSI_H_
//
// Ole2AnsiSetFlags
//
// This function affects per-task options for MFCANS32.DLL. It should
// be called at initialization before any OLE calls are made(if at all).
// The default flags are zero, and are that way for backward compatibility
// to previous versions of the DLL.
//
// OLE2ANSI_WRAPCUSTOM - Use if you wish custom interfaces to be wrapped.
// (Note: when a custom interface is wrapped its vtable must contain
// 128 or less vtable entries)
// By default this option is not on to avoid breaking applications
// that rely on the original non-wrapping of custom interfaces.
//
// OLE2ANSI_AGGREGATION - Use if you use aggregation in your application.
// Using this option "turns off" a couple of bugs in the original
// implementation where aggregation was not handled correctly. By default
// the library operates in a mode where this bug is not fixed, since
// applications may have worked around the bug in such a way that fixing
// it in the library itself breaks those applications.
STDAPI Ole2AnsiSetFlags(DWORD dwFlags, DWORD* pdwOldFlags);
STDAPI_(DWORD) Ole2AnsiGetFlags(void);
// Ole2AnsiSetFlags option flags
#define OLE2ANSI_WRAPCUSTOM 0x00000001L
#define OLE2ANSI_AGGREGATION 0x00000002L
//
// Ole2AnsiSetHashSizes
//
// The MFCANS32.DLL uses a number of different hash tables to manage
// object and interface identity. The default size should handle most
// applications and should keep object searches down to a minumum.
// If your application creates a large number of objects managed by
// the MFCANS32.DLL, you might want to bump these values up.
//
// nHashSize - Determines the size of the hash tables used to map
// wrappers to native objects and native objects to wrappers.
// The default is 1021.
//
// nGuidSize - Determines the size of the hash table used to manage
// sets of custom GUIDs. This table is only used if you use
// automation dual interfaces or custom interfaces. The default
// is 71.
//
// It is best to use a prime number for both values.
STDAPI Ole2AnsiSetHashSizes(int nHashSize, int nGuidSize);
//
// Ole2AnsiAFromW
// Ole2AnsiWFromA
//
// These functions return either wide or ansi wrappers for a given
// interface. For any given interface, only one wrapper will ever
// be returned (ie. it is reference counted). In addition, a
// wrapper will never be "wrapped again", at least not in the same
// address space.
//
// Usually direct calls to these APIs are not necessary since the
// MFCANS32.DLL provides "thunking" entry-points for all the OLE
// APIs. Use these functions when you obtain interface pointers outside
// the documented OLE APIs. Commonly these functions are used in an
// ANSI inproc server in its DllGetClassObject.
STDAPI Ole2AnsiAFromW(REFIID riid, LPUNKNOWN pWrappee, LPUNKNOWN * ppWrapper);
STDAPI Ole2AnsiWFromA(REFIID riid, LPUNKNOWN pWrappee, LPUNKNOWN * ppWrapper);
#endif //_OLE2ANSI_H_
|