121 lines
5.7 KiB
C
121 lines
5.7 KiB
C
//==================================================================================================
|
|
// PIXPlugin.h
|
|
//
|
|
// Microsoft PIX Plugin Header
|
|
//
|
|
// Copyright (c) Microsoft Corporation, All rights reserved
|
|
//==================================================================================================
|
|
|
|
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
|
|
//==================================================================================================
|
|
// PIX_PLUGIN_SYSTEM_VERSION - Indicates version of the plugin interface the plugin is built with.
|
|
//==================================================================================================
|
|
#define PIX_PLUGIN_SYSTEM_VERSION 0x101
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXCOUNTERID - A unique identifier for each PIX plugin counter.
|
|
//==================================================================================================
|
|
typedef int PIXCOUNTERID;
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXCOUNTERDATATYPE - Indicates what type of data the counter produces.
|
|
//==================================================================================================
|
|
enum PIXCOUNTERDATATYPE
|
|
{
|
|
PCDT_RESERVED,
|
|
PCDT_FLOAT,
|
|
PCDT_INT,
|
|
PCDT_INT64,
|
|
PCDT_STRING,
|
|
};
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXPLUGININFO - This structure is filled out by PIXGetPluginInfo and passed back to PIX.
|
|
//==================================================================================================
|
|
struct PIXPLUGININFO
|
|
{
|
|
// Filled in by caller:
|
|
HINSTANCE hinst;
|
|
|
|
// Filled in by PIXGetPluginInfo:
|
|
WCHAR* pstrPluginName; // Name of plugin
|
|
int iPluginVersion; // Version of this particular plugin
|
|
int iPluginSystemVersion; // Version of PIX's plugin system this plugin was designed for
|
|
};
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXCOUNTERINFO - This structure is filled out by PIXGetCounterInfo and passed back to PIX
|
|
// to allow PIX to determine information about the counters in the plugin.
|
|
//==================================================================================================
|
|
struct PIXCOUNTERINFO
|
|
{
|
|
PIXCOUNTERID counterID; // Used to uniquely ID this counter
|
|
WCHAR* pstrName; // String name of the counter
|
|
PIXCOUNTERDATATYPE pcdtDataType; // Data type returned by this counter
|
|
};
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXGetPluginInfo - This returns basic information about this plugin to PIX.
|
|
//==================================================================================================
|
|
BOOL WINAPI PIXGetPluginInfo( PIXPLUGININFO* pPIXPluginInfo );
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXGetCounterInfo - This returns an array of PIXCOUNTERINFO structs to PIX.
|
|
// These PIXCOUNTERINFOs allow PIX to enumerate the counters contained
|
|
// in this plugin.
|
|
//==================================================================================================
|
|
BOOL WINAPI PIXGetCounterInfo( DWORD* pdwReturnCounters, PIXCOUNTERINFO** ppCounterInfoList );
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXGetCounterDesc - This is called by PIX to request a description of the indicated counter.
|
|
//==================================================================================================
|
|
BOOL WINAPI PIXGetCounterDesc( PIXCOUNTERID id, WCHAR** ppstrCounterDesc );
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXBeginExperiment - This called by PIX once per counter when instrumentation starts.
|
|
//==================================================================================================
|
|
BOOL WINAPI PIXBeginExperiment( PIXCOUNTERID id, const WCHAR* pstrApplication );
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXEndFrame - This is called by PIX once per counter at the end of each frame to gather the
|
|
// counter value for that frame. Note that the pointer to the return data must
|
|
// continue to point to valid counter data until the next call to PIXEndFrame (or
|
|
// PIXEndExperiment) for the same counter. So do not set *ppReturnData to the same
|
|
// pointer for multiple counters, or point to a local variable that will go out of
|
|
// scope. See the sample PIX plugin for an example of how to structure a plugin
|
|
// properly.
|
|
//==================================================================================================
|
|
BOOL WINAPI PIXEndFrame( PIXCOUNTERID id, UINT iFrame, DWORD* pdwReturnBytes, BYTE** ppReturnData );
|
|
|
|
|
|
//==================================================================================================
|
|
// PIXEndExperiment - This is called by PIX once per counter when instrumentation ends.
|
|
//==================================================================================================
|
|
BOOL WINAPI PIXEndExperiment( PIXCOUNTERID id );
|
|
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
//==================================================================================================
|
|
// eof: PIXPlugin.h
|
|
//==================================================================================================
|
|
|