180 lines
3.6 KiB
C
180 lines
3.6 KiB
C
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1995
|
|
//
|
|
// File: dshrdmem.h
|
|
//
|
|
// Contents: Contains structure definitons for the significant file
|
|
// extensions table classes which the ntsd extensions need
|
|
// to access. These ole classes cannot be accessed more
|
|
// cleanly because typically the members of interest are private.
|
|
//
|
|
// WARNING. IF THE REFERENCED OLE CLASSES CHANGE, THEN THESE
|
|
// DEFINITIONS MUST CHANGE!
|
|
//
|
|
// History: 06-01-95 BruceMa Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
struct DWORDPAIR
|
|
{
|
|
DWORD dw1; // IID
|
|
DWORD dw2; // CLSID
|
|
};
|
|
|
|
|
|
|
|
|
|
struct GUIDPAIR
|
|
{
|
|
GUID guid1; // IID
|
|
GUID guid2; // CLSID
|
|
};
|
|
|
|
|
|
|
|
|
|
struct GUIDMAP
|
|
{
|
|
ULONG ulSize; // size of table
|
|
ULONG ulFreeSpace; // Free space in table
|
|
ULONG ulCntShort; // number of entries in the short list
|
|
ULONG ulCntLong; // number of entries in the long list
|
|
};
|
|
|
|
|
|
|
|
struct SShrdTblHdr
|
|
{
|
|
DWORD dwSeqNum; // update sequence number
|
|
ULONG OffsIIDTbl; // offset of the start of IID table
|
|
ULONG OffsPatTbl; // offset to start of file pattern table
|
|
ULONG OffsExtTbl; // offset to file extension table
|
|
ULONG OffsClsTbl; // offset to start of CLSID table
|
|
ULONG pad[1]; // pad to 8 byte boundary
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SSharedMemoryBlock
|
|
{
|
|
HANDLE _hMem;
|
|
BYTE *_pbBase;
|
|
ULONG _culCommitSize; // current commit size
|
|
ULONG _culInitCommitSize; // initial commit size
|
|
BOOL _fCreated; // mem created vs already existed
|
|
BOOL _fReadWrite; // want read/write access
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SSmMutex
|
|
{
|
|
BOOL _fCreated;
|
|
HANDLE _hMutex;
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SPSClsidTbl
|
|
{
|
|
GUIDMAP * _pGuidMap; // ptr to table header
|
|
DWORDPAIR * _pShortList; // list of OLE style guids
|
|
GUIDPAIR * _pLongList; // list of non OLE style guids
|
|
};
|
|
|
|
|
|
|
|
|
|
struct STblHdr
|
|
{
|
|
ULONG ulSize; // size of pattern table
|
|
ULONG cbLargest; // largest pattern size
|
|
ULONG OffsStart; // offset to start of entries
|
|
ULONG OffsEnd; // offset to end of entries
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SPatternEntry
|
|
{
|
|
CLSID clsid; // index of clsid the pattern maps to
|
|
ULONG ulEntryLen; // length of this entry
|
|
LONG lFileOffset; // offset in file where pattern begins
|
|
ULONG ulCb; // count bytes in pattern
|
|
BYTE abData[128]; // start of mask & pattern strings
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SPatternTbl
|
|
{
|
|
STblHdr *_pTblHdr; // ptr to table header struct
|
|
BYTE *_pStart; // ptr to first entry in the memory block
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SExtTblHdr
|
|
{
|
|
ULONG ulSize; // table size
|
|
ULONG cEntries; // count of entries in table
|
|
ULONG OffsStart; // offset to start of entries
|
|
ULONG OffsEnd; // offset to end of entries
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct SExtEntry
|
|
{
|
|
CLSID Clsid; // clsid the extension maps to
|
|
ULONG ulEntryLen; // length of this entry
|
|
WCHAR wszExt[1]; // start of filename extension
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct SFileExtTbl
|
|
{
|
|
SExtTblHdr *_pTblHdr; // ptr to table header structure
|
|
BYTE *_pStart; // ptr to first entry in the memory block
|
|
};
|
|
|
|
|
|
|
|
|
|
struct SDllShrdTbl
|
|
{
|
|
SSharedMemoryBlock _smb; // shared memory block
|
|
SSmMutex _mxs; // shared mutex
|
|
HANDLE _hRegEvent; // shared event handle
|
|
|
|
SPSClsidTbl _PSClsidTbl; // proxy stub clsid table
|
|
SPatternTbl _PatternTbl; // file pattern table
|
|
SFileExtTbl _FileExtTbl; // file extension table
|
|
|
|
SShrdTblHdr *_pShrdTblHdr; // shared mem copy of table
|
|
DWORD _dwSeqNum; // sequence number
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|