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.
467 lines
19 KiB
467 lines
19 KiB
//-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft OLE
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1995.
|
|
//
|
|
// File: init.hxx
|
|
//
|
|
// Contents: Contains data structures, defines, function prototypes for
|
|
// storage base tests.
|
|
//
|
|
// History: 2-May-96 NarindK Created
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef __INIT_HXX__
|
|
#define __INIT_HXX__
|
|
|
|
#include <debdlg.h>
|
|
#include <math.h>
|
|
#include <direct.h>
|
|
|
|
// Utility functons
|
|
|
|
HRESULT RunTestAltPath (int argc, char *argv[],
|
|
HRESULT (*pfnTestFunc) (int argc, char*argv[], LPTSTR ptAltPath));
|
|
HRESULT RunTest(int argc, char *argv[]) ;
|
|
ULONG CountFilesInDirectory(LPTSTR ptszWildMask);
|
|
HRESULT GetRandomSeekOffset(LONG *plSeekPosition, DG_INTEGER *pdgi);
|
|
HRESULT SetItemsInStorage(VirtualCtrNode *pvcn, DG_INTEGER *pdgi);
|
|
BOOL CompareSTATSTG(STATSTG sstg1, STATSTG sstg2);
|
|
ULONG GetSeedFromCmdLineArgs(int argc, char *argv[]);
|
|
HRESULT EnumerateDocFileInRandomChunks(
|
|
VirtualCtrNode *pvcn,
|
|
DG_INTEGER *pdgi,
|
|
DWORD dwStgMode,
|
|
ULONG uNumObjs,
|
|
ULONG *pNumStg,
|
|
ULONG *pNumStm );
|
|
HRESULT EnumerateDocFileAndVerifyEnumCloneResetSkipNext(
|
|
VirtualCtrNode *pvcn,
|
|
DWORD dwStgMode,
|
|
ULONG uNumObjs,
|
|
ULONG *pNumStg,
|
|
ULONG *pNumStm );
|
|
HRESULT ModifyDocFile(
|
|
VirtualDF *pVirtualDF,
|
|
VirtualCtrNode *pvcn,
|
|
DG_INTEGER *pdgi,
|
|
DG_STRING *pdgu,
|
|
DWORD dwStgMode,
|
|
BOOL fCommitDocFile);
|
|
HRESULT EnumerateAndWalkDocFile(
|
|
VirtualCtrNode *pvcn,
|
|
DG_INTEGER *pdgi,
|
|
DWORD dwStgMode,
|
|
ULONG uNumObjs);
|
|
HRESULT CreateNewObject(
|
|
LPSTORAGE pIStorage,
|
|
DWORD dwStgMode,
|
|
DG_INTEGER *pdgi,
|
|
DG_STRING *pdgu);
|
|
HRESULT ChangeStreamData(
|
|
LPSTORAGE pIStorage,
|
|
STATSTG *pStatStg,
|
|
DG_INTEGER *pdgi,
|
|
DG_STRING *pdgu);
|
|
HRESULT ChangeExistingObject(
|
|
LPSTORAGE pIStorage,
|
|
STATSTG *pStatStg,
|
|
DG_INTEGER *pdgi,
|
|
DG_STRING *pdgu,
|
|
BOOL fStgDeleted);
|
|
HRESULT EnumerateAndProcessIStorage(
|
|
LPSTORAGE pIStorage,
|
|
DWORD dwStgMode,
|
|
DG_INTEGER *pdgi,
|
|
DG_STRING *pdgu);
|
|
HRESULT IsEqualStream(
|
|
IStream *pIOrigional,
|
|
IStream *pICompare);
|
|
HRESULT ILockBytesWriteTest(
|
|
ILockBytes * pILockBytes,
|
|
DWORD dwSeed,
|
|
DWORD dwSize);
|
|
HRESULT ILockBytesReadTest(
|
|
ILockBytes *pILockBytes,
|
|
DWORD dwSize);
|
|
HRESULT IStreamWriteTest(
|
|
IStream *pIStream,
|
|
DWORD dwSeed,
|
|
DWORD dwSize);
|
|
HRESULT IStreamReadTest(
|
|
IStream *pIStream,
|
|
DWORD dwSize);
|
|
HRESULT TraverseDocfileAndWriteOrReadSNB(
|
|
VirtualCtrNode *pvcn,
|
|
DG_INTEGER *pdgi,
|
|
DG_STRING *pdgu,
|
|
DWORD dwStgMode,
|
|
SNB snbNamesToExclude,
|
|
BOOL fIllegitFlag,
|
|
BOOL fSelectObjectsToExclude);
|
|
LONG DiffTime(DWORD EndTime, DWORD StartTime);
|
|
HRESULT StreamCreate(
|
|
DWORD dwRootMode,
|
|
DG_STRING *pdgu,
|
|
USHORT usTimeIndex,
|
|
DWORD dwFlags,
|
|
USHORT usNumCreates);
|
|
HRESULT DocfileCreate(
|
|
DWORD dwRootMode,
|
|
DG_STRING *pdgu,
|
|
USHORT usTimeIndex,
|
|
DWORD dwFlags,
|
|
USHORT usNumCreates);
|
|
HRESULT StreamOpen(
|
|
DWORD dwRootMode,
|
|
DG_STRING *pdgu,
|
|
USHORT usTimeIndex,
|
|
DWORD dwFlags,
|
|
USHORT usNumOpens);
|
|
HRESULT WriteStreamInSameSizeChunks(
|
|
DWORD dwRootMode,
|
|
DG_STRING *pdgu,
|
|
USHORT usTimeIndex,
|
|
DWORD dwFlags,
|
|
ULONG ulChunkSize,
|
|
USHORT usIteration);
|
|
HRESULT ReadStreamInSameSizeChunks(
|
|
DWORD dwRootMode,
|
|
USHORT usTimeIndex,
|
|
DWORD dwFlags,
|
|
ULONG ulChunkSize,
|
|
USHORT usIteration);
|
|
void Statistics(
|
|
LONG *plData,
|
|
USHORT usItems,
|
|
LONG *plAverage,
|
|
double *pdTotal,
|
|
double *pdSD);
|
|
void Statistics(
|
|
double *pdData,
|
|
USHORT usItems,
|
|
double *pdAverage,
|
|
double *pdTotal,
|
|
double *pdSD);
|
|
HRESULT CreateTestDocfile (
|
|
int argc,
|
|
char **argv,
|
|
VirtualCtrNode **ppVirtualDFRoot,
|
|
VirtualDF **ppTestVirtualDF,
|
|
ChanceDF **ppTestChanceDF);
|
|
HRESULT CreateTestDocfile (
|
|
CDFD *pcdfd,
|
|
LPTSTR pFileName,
|
|
VirtualCtrNode **ppVirtualDFRoot,
|
|
VirtualDF **ppTestVirtualDF,
|
|
ChanceDF **ppTestChanceDF);
|
|
HRESULT CleanupTestDocfile (
|
|
VirtualCtrNode **ppVirtualDFRoot,
|
|
VirtualDF **ppTestVirtualDF,
|
|
ChanceDF **ppTestChanceDF,
|
|
BOOL fDeleteFile=TRUE);
|
|
|
|
// some osversion inline util funcs.
|
|
// NTMAJVER - return major version number for NT. 0 for non-WinNT.
|
|
inline DWORD NTMAJVER()
|
|
{
|
|
OSVERSIONINFO osver = {sizeof (OSVERSIONINFO),0, 0, 0, 0};
|
|
GetVersionEx (&osver);
|
|
if (osver.dwPlatformId != VER_PLATFORM_WIN32_NT)
|
|
{
|
|
return 0;
|
|
}
|
|
return osver.dwMajorVersion;
|
|
}
|
|
|
|
//RunningOnNT - returns TRUE/FALSE if running on WinNT.
|
|
inline BOOL RunningOnNT()
|
|
{
|
|
OSVERSIONINFO osver = {sizeof (OSVERSIONINFO),0, 0, 0, 0};
|
|
GetVersionEx (&osver);
|
|
return (osver.dwPlatformId == VER_PLATFORM_WIN32_NT ? TRUE : FALSE);
|
|
}
|
|
|
|
|
|
// COMTEST Tests
|
|
|
|
HRESULT COMTEST_100(int argc, char *argv[]) ; // Old Name: MiscAddrefTest
|
|
HRESULT COMTEST_101(int argc, char *argv[]) ; // Old Name: DfTest
|
|
HRESULT COMTEST_102(int argc, char *argv[]) ; // Old Name:IllegitInstEnumNormal
|
|
HRESULT COMTEST_103(int argc, char *argv[]) ; // Old Name:LegitInstEnumNormal
|
|
HRESULT COMTEST_104(int argc, char *argv[]) ; // Old Name:Part of IStorage_Test
|
|
HRESULT COMTEST_105(int argc, char *argv[]) ;
|
|
HRESULT COMTEST_106(int argc, char *argv[]) ;
|
|
|
|
// DFTEST Tests
|
|
|
|
HRESULT DFTEST_100(int argc, char *argv[]) ; // Old Name:LegitRootNormal
|
|
HRESULT DFTEST_101(int argc, char *argv[]) ; // Old Name:DFREMOVE
|
|
HRESULT DFTEST_102(int argc, char *argv[]) ; // Old Name:TransactedCommitTest
|
|
HRESULT DFTEST_103(ULONG ulSeed) ; // Old Name:DFTESTN
|
|
HRESULT DFTEST_104(int argc, char *argv[]) ; // Old Name:MiscDfVerify
|
|
HRESULT DFTEST_105(int argc, char *argv[]) ; // Old Name:IllegitInstEnumRelease
|
|
HRESULT DFTEST_106(int argc, char *argv[]) ; // Old Name:IllegitRootCreate
|
|
HRESULT DFTEST_107(ULONG ulSeed) ; // Old Name:TestStdDocFile
|
|
HRESULT DFTEST_108(ULONG ulSeed) ; // Old Name: -none-
|
|
HRESULT DFTEST_109(ULONG ulSeed) ; // Old Name: -none-
|
|
|
|
// APITEST Tests
|
|
|
|
HRESULT APITEST_100(int argc, char *argv[]) ; // Old Name: IllegitAPIStg test
|
|
HRESULT APITEST_101(int argc, char *argv[]) ; // Old Name: IllegitAPINames test
|
|
HRESULT APITEST_102(int argc, char *argv[]) ; // Old Name: IllegitAPIEnum test
|
|
HRESULT APITEST_103(int argc, char *argv[]) ; // Old Name:IllegitAPIStorage test
|
|
HRESULT APITEST_104(int argc, char *argv[]) ; // Old Name:IllegitAPIStream test
|
|
// Test new apis on NT5
|
|
HRESULT APITEST_200(int argc, char *argv[]) ;
|
|
HRESULT APITEST_201(int argc, char *argv[]) ;
|
|
HRESULT APITEST_202(int argc, char *argv[]) ;
|
|
HRESULT APITEST_203(int argc, char *argv[]) ;
|
|
HRESULT APITEST_204(int argc, char *argv[]) ;
|
|
|
|
// ROOTTEST Tests
|
|
|
|
HRESULT ROOTTEST_100(int argc, char *argv[]) ; // Old Name: LegitRootCovert
|
|
HRESULT ROOTTEST_101(int argc, char *argv[]) ; // Old Name: LegitRootNull
|
|
HRESULT ROOTTEST_102(int argc, char *argv[]) ; // Old Name: LegitRootNormal
|
|
HRESULT ROOTTEST_103(int argc, char *argv[]) ; // Old Name: LegitRootMultAccess
|
|
HRESULT ROOTTEST_104(int argc, char *argv[]) ; //Old Name:LegitRootTwwDenyWrite
|
|
|
|
// STMTEST Tests
|
|
|
|
HRESULT STMTEST_100(int argc, char *argv[]) ; // Old Name: LegitStreamChange
|
|
HRESULT STMTEST_101(int argc, char *argv[]) ; // Old Name: LegitStreamClone
|
|
HRESULT STMTEST_102(int argc, char *argv[]) ; // Old Name: LegitStreamSetSize
|
|
HRESULT STMTEST_103(int argc, char *argv[]) ; // Old Name: LegitStreamRead
|
|
HRESULT STMTEST_104(int argc, char *argv[]) ; // Old Name: LegitStreamSeek
|
|
HRESULT STMTEST_105(int argc, char *argv[]) ;
|
|
// Old Name: LegitStreamSetSizeAbandon
|
|
HRESULT STMTEST_106(int argc, char *argv[]) ; // Old Name: LegitStreamSectorSpan
|
|
HRESULT STMTEST_107(int argc, char *argv[]) ; // Old Name: IllegitStreamNorm
|
|
HRESULT STMTEST_108(int argc, char *argv[]) ;
|
|
// Old Name: LegitStreamSmallObjects
|
|
HRESULT STMTEST_109(int argc, char *argv[]) ; // Old name:-part of ole32\common
|
|
|
|
// STGTEST Tests
|
|
|
|
HRESULT STGTEST_100(int argc, char *argv[]) ; // Old Name: MiscCommitRelease
|
|
HRESULT STGTEST_101(int argc, char *argv[]) ; // Old Name: MiscSetItems
|
|
HRESULT STGTEST_102(int argc, char *argv[]) ; // Old Name: IllegitRenDest
|
|
HRESULT STGTEST_103(int argc, char *argv[]) ; // Old Name: legitRenDestNormal
|
|
HRESULT STGTEST_104(int argc, char *argv[]) ; // Old Name: legitRenDestSwap
|
|
HRESULT STGTEST_105(int argc, char *argv[]) ; // Old Name: LegitMoveDFToRootDF
|
|
HRESULT STGTEST_106(ULONG ulSeed) ; //Old Name:LegitInstRootTwwDenyWrite
|
|
HRESULT STGTEST_107(int argc, char *argv[]) ; //Old Name: Part fm IStorage_Test
|
|
HRESULT STGTEST_108(int argc, char *argv[]) ; //Old Name: Part fm IStorage_Test
|
|
HRESULT STGTEST_109(int argc, char *argv[]) ; //Old Name: TestStgSetTime
|
|
HRESULT STGTEST_110(int argc, char *argv[]) ; //Old Name: -none-
|
|
|
|
// Valid CopyTo tests
|
|
|
|
HRESULT VCPYTEST_100(int argc, char *argv[]) ;
|
|
//Old Name:LegitCopyChildDFToParentDF
|
|
HRESULT VCPYTEST_101(int argc, char *argv[]) ;
|
|
//Old Name:LegitCopyChildDFwithinParent
|
|
HRESULT VCPYTEST_102(int argc, char *argv[]) ;
|
|
//Old Name:LegitCopyGrandChildDFToAncestor
|
|
HRESULT VCPYTEST_103(int argc, char *argv[]) ;
|
|
//Old Name:LegitCopyGrandChildDFWithInAncestor
|
|
HRESULT VCPYTEST_104(int argc, char *argv[]) ;//Old Name:LegitCopyDFToRootDF
|
|
HRESULT VCPYTEST_105(int argc, char *argv[]) ;//Old Name:LegitCopyDFWithinNewPar
|
|
HRESULT VCPYTEST_106(int argc, char *argv[]) ;//Old Name:LegitCopyStream
|
|
|
|
// Invalid CopyTo tests
|
|
|
|
HRESULT IVCPYTEST_100(int argc, char *argv[]) ;
|
|
//Old Name:IllegitCopyParentInvalid
|
|
HRESULT IVCPYTEST_101(int argc, char *argv[]) ;
|
|
//Old Name:IllegitCopyParentToChild
|
|
|
|
// Enumerator tests
|
|
|
|
HRESULT ENUMTEST_100(int argc, char *argv[]) ; // OldName:LegitInstEnumConvert
|
|
HRESULT ENUMTEST_101(int argc, char *argv[]) ; // OldName:LegitInstEnumNext
|
|
HRESULT ENUMTEST_102(int argc, char *argv[]) ; // OldName:LegitInstEnumSkip
|
|
HRESULT ENUMTEST_103(int argc, char *argv[]) ; // OldName:LegitInstEnumIterMod
|
|
HRESULT ENUMTEST_104(int argc, char *argv[]) ; // OldName:LegitInstEnumWalk
|
|
|
|
// IRootStorage Interface tests
|
|
|
|
HRESULT IROOTSTGTEST_100(int argc, char *argv[]) ;
|
|
//OldName:LegitTransactedSaveAs
|
|
HRESULT IROOTSTGTEST_101(int argc, char *argv[]) ;
|
|
//OldName:LegitTransactedSaveAsBoth
|
|
HRESULT IROOTSTGTEST_102(int argc, char *argv[]) ;
|
|
//OldName:LegitTransactedSaveAsNew
|
|
HRESULT IROOTSTGTEST_103(int argc, char *argv[]) ;
|
|
//OldName:LegitTransactedSaveAsRevert
|
|
|
|
// HGLOBAL Tests
|
|
|
|
HRESULT HGLOBALTEST_100 (DWORD dwSeed); // OldName: TestILockBytesOnHGlobal
|
|
HRESULT HGLOBALTEST_101 (DWORD dwSeed); // OldName: -none-
|
|
HRESULT HGLOBALTEST_110 (DWORD dwSeed); // OldName: TestILockBytesOnHGlobal
|
|
HRESULT HGLOBALTEST_120 (DWORD dwSeed); // OldName: TestIStreamOnHGlobal
|
|
HRESULT HGLOBALTEST_121 (DWORD dwSeed); // OldName: -none-
|
|
HRESULT HGLOBALTEST_130 (DWORD dwSeed); // OldName: TestIStreamOnHGlobal
|
|
HRESULT HGLOBALTEST_140 (DWORD dwSeed);
|
|
HRESULT HGLOBALTEST_150 (DWORD dwSeed);
|
|
|
|
// SNB Limited tests
|
|
|
|
HRESULT SNBTEST_100(int argc, char *argv[]) ;
|
|
// OldName:IllegitLimitedInstNormal
|
|
HRESULT SNBTEST_101(int argc, char *argv[]) ;
|
|
// OldName:LegitLimitedInstNormal
|
|
HRESULT SNBTEST_102(int argc, char *argv[]) ;
|
|
// OldName:LegitLimitedInstPriority
|
|
HRESULT SNBTEST_103(int argc, char *argv[]) ;
|
|
// OldName:IllegitLimitedInstPriority
|
|
|
|
// Miscellaneous Tests
|
|
|
|
HRESULT MISCTEST_100(int argc, char *argv[]);
|
|
// OldName:MiscMemLeak
|
|
HRESULT MISCTEST_101(int argc, char *argv[]);
|
|
// OldName:MiscWindowsForWorkGroupOpen
|
|
HRESULT MISCTEST_102(int argc, char *argv[]);
|
|
// OldName:PerformanceTiming
|
|
HRESULT MISCTEST_103(int argc, char *argv[]);
|
|
HRESULT MISCTEST_104(int argc, char *argv[]);
|
|
HRESULT MISCTEST_105(int argc, char *argv[]);
|
|
|
|
// ILockBytes test
|
|
|
|
HRESULT ILKBTEST_100(int argc, char *argv[]) ; // OldName:DfSetupOnILockBytes
|
|
HRESULT ILKBTEST_101(int argc, char *argv[]) ; // OldName:DfSetupOnILockBytes
|
|
// Open Aync DocFile
|
|
HRESULT ILKBTEST_102(int argc, char *argv[]) ; // OldName:
|
|
// LegitTransactedCommitFail
|
|
HRESULT ILKBTEST_103(int argc, char *argv[]) ; // OldName: -none-
|
|
HRESULT ILKBTEST_104(int argc, char *argv[]) ; // OldName: -none-
|
|
HRESULT ILKBTEST_105(int argc, char *argv[]) ; // OldName: -none-
|
|
HRESULT ILKBTEST_106(int argc, char *argv[]) ; // OldName: -none-
|
|
HRESULT ILKBTEST_107(int argc, char *argv[]) ; // OldName: -none-
|
|
HRESULT ILKBTEST_108(ULONG ulSeed) ; // OldName: -none-
|
|
|
|
// flatfile tests; NT5 only
|
|
HRESULT FLATTEST_100(int argc, char *argv[]) ;
|
|
HRESULT FLATTEST_101(int argc, char *argv[]) ;
|
|
|
|
// Debug object
|
|
|
|
DH_DECLARE;
|
|
|
|
// extern globals (yuk)
|
|
extern BOOL g_fDeleteTestDF;
|
|
extern UINT g_uOpenCreateDF;
|
|
|
|
|
|
// Defines
|
|
|
|
#define MAX_STG_NAME_LEN (CWCSTORAGENAME * 2)
|
|
#define STG_CONVERTED_NAME TEXT("CONTENTS")
|
|
#define T TRUE
|
|
#define F FALSE
|
|
#define WILD_MASK TEXT("~DF*.TMP")
|
|
#define MIN_SIZE 394000L
|
|
#define RAND_IO_MIN 64000L
|
|
#define RAND_IO_MAX 256000L
|
|
#define MIN_STMSIZE 1024L
|
|
#define MAX_STMSIZE 256000L
|
|
#define MAXSIZEOFMINISTM 4096L
|
|
#define ORIGINAL 0
|
|
#define CLONE 1
|
|
#define SEEK 1
|
|
#define WRITE 2
|
|
#define READ 3
|
|
#define NONE 0
|
|
#define STORAGE 1
|
|
#define STREAM 2
|
|
#define SOURCESTM 0
|
|
#define DESTSTM 1
|
|
#define CLONESTM 2
|
|
#define BYTES_BEFORE 0
|
|
#define BYTES_COPIED 1
|
|
#define BYTES_AFTER 2
|
|
#define MAX_SIZE_MULTIPLIER 5
|
|
#define MAX_SIZE_ARRAY 14
|
|
#define MAX_NAMES_TO_EXCLUDE 32
|
|
|
|
#define HGLOBAL_PACKET_SIZE 4000 // In Bytes
|
|
#define MIN_HGLOBAL_ITERATIONS 2
|
|
#define MAX_HGLOBAL_ITERATIONS 4
|
|
#define MIN_HGLOBAL_PACKETS 75
|
|
#define MAX_HGLOBAL_PACKETS 200
|
|
#define dwDefLowDateTime 0xBAD
|
|
#define dwDefHighDateTime 0xBADBAD
|
|
|
|
#define STGM_RW (STGM_READ | STGM_WRITE | STGM_READWRITE)
|
|
#define STGM_SHARE (STGM_SHARE_DENY_NONE | STGM_SHARE_DENY_READ |\
|
|
STGM_SHARE_DENY_WRITE | STGM_SHARE_EXCLUSIVE)
|
|
|
|
|
|
#define TestUnsupportedInterface(pDocElement, Interface_Name, Interface, hr) \
|
|
{ \
|
|
hr = pDocElement->Interface; \
|
|
if(STG_E_INVALIDFUNCTION == hr) \
|
|
{ \
|
|
DH_TRACE(( \
|
|
DH_LVL_TRACE1, \
|
|
TEXT("STG_E_INVALIDFUNCTION ret as exp for %s"), \
|
|
Interface_Name)); \
|
|
} \
|
|
else \
|
|
{ \
|
|
DH_TRACE(( \
|
|
DH_LVL_ERROR, \
|
|
TEXT("STG_E_INVALIDFUNCTION not ret as exp for %s, hr=0x%lx "),\
|
|
Interface_Name, \
|
|
hr)); \
|
|
fPass = FALSE; \
|
|
} \
|
|
hr = S_OK; \
|
|
}
|
|
|
|
#define DoingCreate() ((FL_DISTRIB_CREATE == g_uOpenCreateDF) ? TRUE : FALSE)
|
|
#define DoingDistrib() ((FL_DISTRIB_NONE != g_uOpenCreateDF) ? TRUE : FALSE)
|
|
#define DeleteTestDF() ((g_fDeleteTestDF == TRUE) ? TRUE : FALSE)
|
|
|
|
#define DOCFILE 1
|
|
#define RUNTIME 2
|
|
#define COMMIT 4
|
|
#define EXIST 8
|
|
#define CREATE 16
|
|
#define NONAME 32
|
|
#define OPENBOTH 64
|
|
#define MAX_DOCFILES 5
|
|
#define MAX_PATH_LENGTH 128
|
|
|
|
enum Timings {
|
|
FIRST_TIMING,
|
|
CREATE_STREAM_NO_EXIST,
|
|
CREATE_STREAM_EXIST,
|
|
CREATE_DOCFILE_NO_EXIST,
|
|
CREATE_DOCFILE_EXIST,
|
|
CREATE_NONAME_DOCFILE,
|
|
OPEN_STORAGE_AND_STREAM,
|
|
OPEN_STREAM_ONLY,
|
|
SEQUENTIAL_WRITE,
|
|
SEQUENTIAL_READ,
|
|
RANDOM_WRITE,
|
|
RANDOM_READ,
|
|
LAST_TIMING };
|
|
|
|
typedef struct timeinfo
|
|
{
|
|
TCHAR *Text;
|
|
USHORT usIndex;
|
|
LONG *plDocfileTime;
|
|
LONG *plRuntimeTime;
|
|
} TIMEINFO;
|
|
|
|
#define GET_TIME(x) (x = GetTickCount())
|
|
|
|
#endif //__INIT_HXX__
|