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.
|
|
//+----------------------------------------------------------------------------
//
// File: cmtiming.h
//
// Module: CMDIAL32.DLL and CMMGR32.EXE
//
// Synopsis: Header file for timing functions.
//
// Copyright (c) 1998 Microsoft Corporation
//
// Author: nickball Created 04/28/98
//
//+----------------------------------------------------------------------------
#ifndef _CM_TIMING_INC
#define _CM_TIMING_INC
//
// Add the following to the sources file of the target module to activate timing macros.
//
// C_DEFINES = -DCM_TIMING_ON
//
// NOTE: Never check in a sources file with this flag defined
//
#ifdef CM_TIMING_ON // For timing test only
#define CM_SET_TIMING_INTERVAL(x) SetTimingInterval(x)
//
// Defintions
//
#define MAX_TIMING_INTERVALS 50
#define CM_TIMING_TABLE_NAME "CM TIMING TABLE"
//
// Custom types for table
//
typedef struct Cm_Timing_Interval { TCHAR szName[MAX_PATH]; // Name of timing interval
DWORD dwTicks; // TickCount
} CM_TIMING_INTERVAL, *LPCM_TIMING_INTERVAL;
typedef struct Cm_Timing_Table { int iNext; // Next available entry
CM_TIMING_INTERVAL Intervals[MAX_TIMING_INTERVALS]; // a list of intervals
} CM_TIMING_TABLE, * LPCM_TIMING_TABLE;
//+----------------------------------------------------------------------------
//
// Function: SetTimingInterval
//
// Synopsis: A simple wrapper to encapsulate the process of updating the
// timing table with an interval entry.
//
// Arguments: char *szIntervalName - The optional name of the entry, the entry number is used if NULL
//
// Returns: void - Nothing
//
// History: nickball 4/7/98 Created
//
//+----------------------------------------------------------------------------
inline void SetTimingInterval(char *szIntervalName) { HANDLE hMap = OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE, FALSE, CM_TIMING_TABLE_NAME); if (hMap) { //
// File mapping opened successfully, map a view of it.
//
LPCM_TIMING_TABLE pTable = (LPCM_TIMING_TABLE) MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0); if (pTable) { if (pTable->iNext < MAX_TIMING_INTERVALS) { //
// Update the next available entry
//
if (szIntervalName) { lstrcpy(pTable->Intervals[pTable->iNext].szName, szIntervalName); } else { wsprintf(pTable->Intervals[pTable->iNext].szName, "(%d)", pTable->iNext); }
pTable->Intervals[pTable->iNext].dwTicks = GetTickCount(); pTable->iNext++; }
UnmapViewOfFile(pTable); }
CloseHandle(hMap); } }
#else // CM_TIMING_ON
#define CM_SET_TIMING_INTERVAL(x)
#endif
#endif // _CM_TIMING_INC
|