mirror of https://github.com/tongzx/nt5src
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.
99 lines
3.9 KiB
99 lines
3.9 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1995
|
|
//
|
|
// File: ddllcach.h
|
|
//
|
|
// Contents: Contains structure definitons for the significant dll class/
|
|
// cache ole classes which the ntsd extensions need to access.
|
|
// These ole classes cannot be accessed more cleanly because
|
|
// typically the members of interest are protected.
|
|
//
|
|
// WARNING. IF THE REFERENCED OLE CLASSES CHANGE, THEN THESE
|
|
// DEFINITIONS MUST CHANGE!
|
|
//
|
|
// History: 06-01-95 BruceMa Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
typedef HRESULT (*DLLUNLOADFNP)(void);
|
|
|
|
const DWORD NONE = ~0UL;
|
|
|
|
|
|
struct SClassEntry
|
|
{
|
|
DWORD _fAtBits; // Whether server is an at bits server
|
|
DWORD _dwNext; // Next entry in in-use or avail list
|
|
DWORD _dwSig; // Marks entry as in use
|
|
CLSID _clsid; // Class of this server
|
|
IUnknown *_pUnk; // Class factory IUnknown
|
|
DWORD _dwContext; // Class context
|
|
DWORD _dwFlags; // Single vs. multiple use
|
|
DWORD _dwReg; // Registration key for caller
|
|
DWORD _dwScmReg; // Registration ID at the SCM
|
|
HAPT _hApt; // Thread Id
|
|
DWORD _cCallOut; // Count of active call outs
|
|
DWORD _fRevokePending;// Whether revoked while calling out
|
|
DWORD _dwDllEnt; // Associated dll path entry
|
|
DWORD _dwNextDllCls; // Next class entrry for this dll
|
|
HWND _hWndDdeServer; // Handle of associated DDE window
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct SDllAptEntry
|
|
{
|
|
DWORD _dwNext; // Next entry in avail or in use list
|
|
DWORD _dwSig; // Unique signature for apt entries
|
|
HAPT _hApt; // apartment id
|
|
HMODULE _hDll; // module handle
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct SDllPathEntry
|
|
{
|
|
DWORD _dwNext; // Next in-use/avail entry
|
|
DWORD _dwSig; // Unique signature for safty
|
|
LPWSTR _pwszPath; // The dll pathname
|
|
DWORD _dwHash; // Hash value for searching
|
|
LPFNGETCLASSOBJECT _pfnGetClassObject; // Create object entry point
|
|
DLLUNLOADFNP _pfnDllCanUnload; // DllCanUnloadNow entry point
|
|
DWORD _dwFlags; // Internal flags
|
|
DWORD _dwDllThreadModel:2; // Threading model for the DLL
|
|
DWORD _dw1stClass; // First class entry for dll
|
|
DWORD _cUsing; // Count of using threads
|
|
DWORD _cAptEntries; // Total apt entries
|
|
DWORD _nAptAvail; // List of available apt entries
|
|
DWORD _nAptInUse; // List of in use apt entries
|
|
SDllAptEntry *_pAptEntries; // Per thread info
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SDllCache
|
|
{
|
|
SMutexSem _mxsLoadLibrary; // Protects LoadLibrary calls
|
|
SMutexSem _mxs; // Protects from multiple threads
|
|
DWORD _cClassEntries; // Count of class entries
|
|
DWORD _nClassEntryInUse; // First in-use class entry
|
|
DWORD _nClassEntryAvail; // First available class entry
|
|
SClassEntry *_pClassEntries; // Array of class entries
|
|
DWORD _cDllPathEntries; // Count of dll path entries
|
|
DWORD _nDllPathEntryInUse; // First in-use dll path entry
|
|
DWORD _nDllPathEntryAvail; // First available dll path entry
|
|
SDllPathEntry *_pDllPathEntries; // Array of DLL path entries
|
|
};
|
|
|
|
|
|
|
|
|
|
|