/******************************************************************************
 *                                                                         
 *               Nimbus auto-generated file
 *               !!! WARNING !!! -- DO NOT DIRECTLY EDIT THE CONTENTS OF THIS FILE.
 *				 Changes will be OVERWRITTEN by NIMBUS.
 *
 *****************************************************************************/

#include "stdafx.h"
#include "CoAgilent34950A.h"


///////////////////////////////////////////////////////////////
//
//   Repeated capability support
//

HRESULT CObjectModelNode<Agilent34950A, Agilent34950A, Agilent34950A>::InitNode(Agilent34950A* pRoot, Agilent34950A* pParent)
{
	HRESULT hr = S_OK;

	ResetObjectState();
	
	SetClassName(_T("Agilent34950A"));
	SetRoot(pRoot);
	SetParent(pParent);

	return hr;
}

HRESULT CObjectModelNode<Agilent34950A, Agilent34950A, Agilent34950A>::CloseNode()			
{
	HRESULT hr = S_OK;

	SetRoot(NULL);
	SetParent(NULL);
	
	return hr;
}



///////////////////////////////////////////////////////////////////////////////
//
//	Instrument models support
//

const CInstrumentModelMap* CInstrumentModelManager::GetInstrumentModelMap()
{
	static CInstrumentModelMap _instrModelMap(
		new CInstrumentModel(_T("34980A"), _T("Default")),
		NULL);

	return &_instrModelMap;
}



///////////////////////////////////////////////////////////////
//
//   Boolean support
//

const CString& GetBooleanTrueCommand()
{
	static CString _strCommand(_T("1"));

	return _strCommand;
}

const CString& GetBooleanFalseCommand()
{
	static CString _strCommand(_T("0"));

	return _strCommand;
}



///////////////////////////////////////////////////////////////
//
//   Enum support
//

template <>
const CEnumSupportedModelMap<Agilent34950AComparisonTypeEnum>* GetEnumSupportedModelMap<Agilent34950AComparisonTypeEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AComparisonTypeEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AComparisonTypeEnum>* GetEnumCommandMap<Agilent34950AComparisonTypeEnum>()
{
	static CEnumCommandMap<Agilent34950AComparisonTypeEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AComparisonTypeEqual, _T("EQU"), _T("")),
		new CEnumCommand(Agilent34950AComparisonTypeNotEqual, _T("NEQ"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950ADirectionEnum>* GetEnumSupportedModelMap<Agilent34950ADirectionEnum>()
{
	static CEnumSupportedModelMap<Agilent34950ADirectionEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950ADirectionEnum>* GetEnumCommandMap<Agilent34950ADirectionEnum>()
{
	static CEnumCommandMap<Agilent34950ADirectionEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950ADirectionInput, _T("INP"), _T("")),
		new CEnumCommand(Agilent34950ADirectionOutput, _T("OUTP"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950ATotalizeSlopeEnum>* GetEnumSupportedModelMap<Agilent34950ATotalizeSlopeEnum>()
{
	static CEnumSupportedModelMap<Agilent34950ATotalizeSlopeEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950ATotalizeSlopeEnum>* GetEnumCommandMap<Agilent34950ATotalizeSlopeEnum>()
{
	static CEnumCommandMap<Agilent34950ATotalizeSlopeEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950ATotalizeSlopePositive, _T("POS"), _T("")),
		new CEnumCommand(Agilent34950ATotalizeSlopeNegative, _T("NEG"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950ATotalizeTypeEnum>* GetEnumSupportedModelMap<Agilent34950ATotalizeTypeEnum>()
{
	static CEnumSupportedModelMap<Agilent34950ATotalizeTypeEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950ATotalizeTypeEnum>* GetEnumCommandMap<Agilent34950ATotalizeTypeEnum>()
{
	static CEnumCommandMap<Agilent34950ATotalizeTypeEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950ATotalizeTypeRead, _T("READ"), _T("")),
		new CEnumCommand(Agilent34950ATotalizeTypeRReset, _T("RRES"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AChannelWidthEnum>* GetEnumSupportedModelMap<Agilent34950AChannelWidthEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AChannelWidthEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AChannelWidthEnum>* GetEnumCommandMap<Agilent34950AChannelWidthEnum>()
{
	static CEnumCommandMap<Agilent34950AChannelWidthEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AChannelWidthByte, _T("BYTE"), _T("")),
		new CEnumCommand(Agilent34950AChannelWidthWord, _T("WORD"), _T("")),
		new CEnumCommand(Agilent34950AChannelWidthLWord, _T("LWOR"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950APolarityEnum>* GetEnumSupportedModelMap<Agilent34950APolarityEnum>()
{
	static CEnumSupportedModelMap<Agilent34950APolarityEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950APolarityEnum>* GetEnumCommandMap<Agilent34950APolarityEnum>()
{
	static CEnumCommandMap<Agilent34950APolarityEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950APolarityNormal, _T("NORM"), _T("")),
		new CEnumCommand(Agilent34950APolarityInverted, _T("INV"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AHandshakeModeEnum>* GetEnumSupportedModelMap<Agilent34950AHandshakeModeEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AHandshakeModeEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AHandshakeModeEnum>* GetEnumCommandMap<Agilent34950AHandshakeModeEnum>()
{
	static CEnumCommandMap<Agilent34950AHandshakeModeEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AHandshakeModeAsynchronous, _T("ASYN"), _T("")),
		new CEnumCommand(Agilent34950AHandshakeModeSynchronous, _T("SYNC"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AHandshakeLineTypeEnum>* GetEnumSupportedModelMap<Agilent34950AHandshakeLineTypeEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AHandshakeLineTypeEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AHandshakeLineTypeEnum>* GetEnumCommandMap<Agilent34950AHandshakeLineTypeEnum>()
{
	static CEnumCommandMap<Agilent34950AHandshakeLineTypeEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AHandshakeLineTypeActive, _T("ACT"), _T("")),
		new CEnumCommand(Agilent34950AHandshakeLineTypeOpenCollector, _T("OCOL"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AHandshakeLineIDEnum>* GetEnumSupportedModelMap<Agilent34950AHandshakeLineIDEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AHandshakeLineIDEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AHandshakeLineIDEnum>* GetEnumCommandMap<Agilent34950AHandshakeLineIDEnum>()
{
	static CEnumCommandMap<Agilent34950AHandshakeLineIDEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AHandshakeLineIDH0, _T("H0"), _T("")),
		new CEnumCommand(Agilent34950AHandshakeLineIDH1, _T("H1"), _T("")),
		new CEnumCommand(Agilent34950AHandshakeLineIDH2, _T("H2"), _T("")),
		new CEnumCommand(Agilent34950AHandshakeLineIDAll, _T("ALL"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AStateEnum>* GetEnumSupportedModelMap<Agilent34950AStateEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AStateEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AStateEnum>* GetEnumCommandMap<Agilent34950AStateEnum>()
{
	static CEnumCommandMap<Agilent34950AStateEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AStateHiImpedance, _T("HIMP"), _T("")),
		new CEnumCommand(Agilent34950AStateOff, _T("OFF"), _T("")),
		new CEnumCommand(Agilent34950AStateOn, _T("ON"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AHandshakeStrobeSourceEnum>* GetEnumSupportedModelMap<Agilent34950AHandshakeStrobeSourceEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AHandshakeStrobeSourceEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AHandshakeStrobeSourceEnum>* GetEnumCommandMap<Agilent34950AHandshakeStrobeSourceEnum>()
{
	static CEnumCommandMap<Agilent34950AHandshakeStrobeSourceEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AHandshakeStrobeSourceInternal, _T("INT"), _T("")),
		new CEnumCommand(Agilent34950AHandshakeStrobeSourceExternal, _T("EXT"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AActionEnum>* GetEnumSupportedModelMap<Agilent34950AActionEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AActionEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AActionEnum>* GetEnumCommandMap<Agilent34950AActionEnum>()
{
	static CEnumCommandMap<Agilent34950AActionEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AActionContinue, _T("CONT"), _T("")),
		new CEnumCommand(Agilent34950AActionStart, _T("STAR"), _T("")),
		new CEnumCommand(Agilent34950AActionStop, _T("STOP"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950ADataFormatEnum>* GetEnumSupportedModelMap<Agilent34950ADataFormatEnum>()
{
	static CEnumSupportedModelMap<Agilent34950ADataFormatEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950ADataFormatEnum>* GetEnumCommandMap<Agilent34950ADataFormatEnum>()
{
	static CEnumCommandMap<Agilent34950ADataFormatEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950ADataFormatList, _T("LIST"), _T("")),
		new CEnumCommand(Agilent34950ADataFormatBlock, _T("BLOC"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AReportConditionEnum>* GetEnumSupportedModelMap<Agilent34950AReportConditionEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AReportConditionEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AReportConditionEnum>* GetEnumCommandMap<Agilent34950AReportConditionEnum>()
{
	static CEnumCommandMap<Agilent34950AReportConditionEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AReportConditionFull, _T("MFUL"), _T("")),
		new CEnumCommand(Agilent34950AReportConditionCompare, _T("COMP"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AOutputModeEnum>* GetEnumSupportedModelMap<Agilent34950AOutputModeEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AOutputModeEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AOutputModeEnum>* GetEnumCommandMap<Agilent34950AOutputModeEnum>()
{
	static CEnumCommandMap<Agilent34950AOutputModeEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AOutputModeGate, _T("GATE"), _T("")),
		new CEnumCommand(Agilent34950AOutputModeStart, _T("STAR"), _T("")),
		new CEnumCommand(Agilent34950AOutputModeStop, _T("STOP"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950ATraceTypeEnum>* GetEnumSupportedModelMap<Agilent34950ATraceTypeEnum>()
{
	static CEnumSupportedModelMap<Agilent34950ATraceTypeEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950ATraceTypeEnum>* GetEnumCommandMap<Agilent34950ATraceTypeEnum>()
{
	static CEnumCommandMap<Agilent34950ATraceTypeEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950ATraceTypeCount, _T("COUN"), _T("")),
		new CEnumCommand(Agilent34950ATraceTypeWones, _T("WON"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AFunctionEnum>* GetEnumSupportedModelMap<Agilent34950AFunctionEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AFunctionEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AFunctionEnum>* GetEnumCommandMap<Agilent34950AFunctionEnum>()
{
	static CEnumCommandMap<Agilent34950AFunctionEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AFunctionFrequency, _T("FREQ"), _T("")),
		new CEnumCommand(Agilent34950AFunctionPeriod, _T("PER"), _T("")),
		new CEnumCommand(Agilent34950AFunctionDutyCycle, _T("DCYC"), _T("")),
		new CEnumCommand(Agilent34950AFunctionPulseWidth, _T("PWID"), _T("")),
		new CEnumCommand(Agilent34950AFunctionTotalizer, _T("TOT"), _T("")),
		NULL);

	return &_enumCommandMap;
}

template <>
const CEnumSupportedModelMap<Agilent34950AGateSourceEnum>* GetEnumSupportedModelMap<Agilent34950AGateSourceEnum>()
{
	static CEnumSupportedModelMap<Agilent34950AGateSourceEnum> _enumSupportedModelMap(
		NULL);

	return &_enumSupportedModelMap;
}

template <>
const CEnumCommandMap<Agilent34950AGateSourceEnum>* GetEnumCommandMap<Agilent34950AGateSourceEnum>()
{
	static CEnumCommandMap<Agilent34950AGateSourceEnum> _enumCommandMap(
		new CEnumCommand(Agilent34950AGateSourceInternal, _T("INT"), _T("")),
		new CEnumCommand(Agilent34950AGateSourceExternal, _T("EXT"), _T("")),
		NULL);

	return &_enumCommandMap;
}



///////////////////////////////////////////////////////////////////////////////
//
//	State caching support
//

const CComparePolicyManagerBase* GetComparePolicyManager(const CString& strPath)
{
	static const CComparePolicyManagerMap _comparePolicyManagerMap(
		NULL);

	return _comparePolicyManagerMap.LookupComparePolicyManager(strPath);
}

///////////////////////////////////////////////////////////////////////////////
//
//	Coercion support
//

long GetCoercionLogSize()
{
	return 1000;
}


///////////////////////////////////////////////////////////////////////////////
//
//	COM rich error support
//

STDMETHODIMP Agilent34950A::InterfaceSupportsErrorInfo(REFIID riid)
{
	static const IID* arr[] = 
	{
		&__uuidof(IAgilent34950AHandshake),
		&__uuidof(IAgilent34950AInput),
		&__uuidof(IAgilent34950AInputMemory),
		&__uuidof(IAgilent34950AOutput),
		&__uuidof(IAgilent34950AOutputMemory),
		&__uuidof(IAgilent34950ATrace),
		&__uuidof(IAgilent34950ACounter),
		&__uuidof(IAgilent34950ATotalizer),
		&__uuidof(IAgilent34950AMeasurement),
		&__uuidof(IAgilent34950AOutputClock),
		&__uuidof(IAgilent34950ADigital),
		&__uuidof(IAgilent34950A)
	};

	for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		if (InlineIsEqualGUID(*arr[i],riid))
			return S_OK;
	}
	return S_FALSE;
}

///////////////////////////////////////////////////////////////////////////////
//
//	Error map support
//

const CString& GetHelpFileName()
{
	static CString _strFileName(_T("Agilent34980A.chm"));

	return _strFileName;
}


UINT GetDriverErrorResourceId(UINT uNtlResid)
{
	UINT uResId = 0;

	switch (uNtlResid)
	{
			case NTL_IDS_PERSONALITY_NOT_ACTIVE: 
				uResId = IDS_E_AGILENT34950A_PERSONALITY_NOT_ACTIVE; 
				break;
			case NTL_IDS_PERSONALITY_NOT_INSTALLED: 
				uResId = IDS_E_AGILENT34950A_PERSONALITY_NOT_INSTALLED; 
				break;
			case NTL_IDS_PERSONALITY_NOT_LICENSED: 
				uResId = IDS_E_AGILENT34950A_PERSONALITY_NOT_LICENSED; 
				break;
			case NTL_IDS_IO_GENERAL: 
				uResId = IDS_E_AGILENT34950A_IO_GENERAL; 
				break;
			case NTL_IDS_IO_TIMEOUT: 
				uResId = IDS_E_AGILENT34950A_IO_TIMEOUT; 
				break;
			case NTL_IDS_MODEL_NOT_SUPPORTED: 
				uResId = IDS_E_AGILENT34950A_MODEL_NOT_SUPPORTED; 
				break;
			case NTL_IDS_WRAPPED_DRIVER_ERROR: 
				uResId = IDS_E_AGILENT34950A_WRAPPED_DRIVER_ERROR; 
				break;

	}

	return uResId;
}

const CErrorMap* GetDriverErrorMap()
{
	static const CErrorMap _errorMap(
		new CDriverErrorInfo(IDS_E_AGILENT34950A_WRAPPED_DRIVER_ERROR, E_AGILENT34950A_WRAPPED_DRIVER_ERROR, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_VALUE_OUT_OF_RANGE, E_AGILENT34950A_VALUE_OUT_OF_RANGE, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_MODEL_NOT_SUPPORTED, E_AGILENT34950A_MODEL_NOT_SUPPORTED, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_IO_TIMEOUT, E_AGILENT34950A_IO_TIMEOUT, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_IO_GENERAL, E_AGILENT34950A_IO_GENERAL, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_PERSONALITY_NOT_LICENSED, E_AGILENT34950A_PERSONALITY_NOT_LICENSED, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_PERSONALITY_NOT_INSTALLED, E_AGILENT34950A_PERSONALITY_NOT_INSTALLED, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_PERSONALITY_NOT_ACTIVE, E_AGILENT34950A_PERSONALITY_NOT_ACTIVE, 0),
		new CDriverErrorInfo(IDS_E_AGILENT34950A_UNEXPECTED, E_AGILENT34950A_UNEXPECTED, 0),
		new CDriverErrorInfo(IDS_E_IVI_UNKNOWN_PHYSICAL_IDENTIFIER, E_IVI_UNKNOWN_PHYSICAL_IDENTIFIER, 0),
		new CDriverErrorInfo(IDS_E_IVI_BADLY_FORMED_SELECTOR, E_IVI_BADLY_FORMED_SELECTOR, 0),
		new CDriverErrorInfo(IDS_E_IVI_UNKNOWN_NAME_IN_SELECTOR, E_IVI_UNKNOWN_NAME_IN_SELECTOR, 0),
		new CDriverErrorInfo(IDS_E_IVI_INVALID_RANGE_IN_SELECTOR, E_IVI_INVALID_RANGE_IN_SELECTOR, 0),
		new CDriverErrorInfo(IDS_E_IVI_INVALID_NUMBER_OF_LEVELS_IN_SELECTOR, E_IVI_INVALID_NUMBER_OF_LEVELS_IN_SELECTOR, 0),
		new CDriverErrorInfo(IDS_E_IVI_CANNOT_CHANGE_SIMULATION_STATE, E_IVI_CANNOT_CHANGE_SIMULATION_STATE, 0),
		new CDriverErrorInfo(IDS_E_IVI_ALREADY_INITIALIZED, E_IVI_ALREADY_INITIALIZED, 0),
		new CDriverErrorInfo(IDS_E_IVI_RESOURCE_UNKNOWN, E_IVI_RESOURCE_UNKNOWN, 0),
		new CDriverErrorInfo(IDS_E_IVI_RESET_FAILED, E_IVI_RESET_FAILED, 0),
		new CDriverErrorInfo(IDS_E_IVI_ID_QUERY_FAILED, E_IVI_ID_QUERY_FAILED, 0),
		new CDriverErrorInfo(IDS_E_IVI_STATUS_NOT_AVAILABLE, E_IVI_STATUS_NOT_AVAILABLE, 0),
		new CDriverErrorInfo(IDS_E_IVI_INVALID_FILE_FORMAT, E_IVI_INVALID_FILE_FORMAT, 0),
		new CDriverErrorInfo(IDS_E_IVI_FILE_NOT_FOUND, E_IVI_FILE_NOT_FOUND, 0),
		new CDriverErrorInfo(IDS_E_IVI_UNEXPECTED_RESPONSE, E_IVI_UNEXPECTED_RESPONSE, 0),
		new CDriverErrorInfo(IDS_E_IVI_NULL_POINTER, E_IVI_NULL_POINTER, 0),
		new CDriverErrorInfo(IDS_E_IVI_OPERATION_PENDING, E_IVI_OPERATION_PENDING, 0),
		new CDriverErrorInfo(IDS_E_IVI_OUT_OF_MEMORY, E_IVI_OUT_OF_MEMORY, 0),
		new CDriverErrorInfo(IDS_E_IVI_BAD_OPTION_VALUE, E_IVI_BAD_OPTION_VALUE, 0),
		new CDriverErrorInfo(IDS_E_IVI_BAD_OPTION_NAME, E_IVI_BAD_OPTION_NAME, 0),
		new CDriverErrorInfo(IDS_E_IVI_MISSING_OPTION_VALUE, E_IVI_MISSING_OPTION_VALUE, 0),
		new CDriverErrorInfo(IDS_E_IVI_MISSING_OPTION_NAME, E_IVI_MISSING_OPTION_NAME, 0),
		new CDriverErrorInfo(IDS_E_IVI_CHANNEL_NAME_REQUIRED, E_IVI_CHANNEL_NAME_REQUIRED, 0),
		new CDriverErrorInfo(IDS_E_IVI_TOO_MANY_OPEN_FILES, E_IVI_TOO_MANY_OPEN_FILES, 0),
		new CDriverErrorInfo(IDS_E_IVI_UNKNOWN_CHANNEL_NAME, E_IVI_UNKNOWN_CHANNEL_NAME, 0),
		new CDriverErrorInfo(IDS_E_IVI_NOT_INITIALIZED, E_IVI_NOT_INITIALIZED, 0),
		new CDriverErrorInfo(IDS_E_IVI_VALUE_NOT_SUPPORTED, E_IVI_VALUE_NOT_SUPPORTED, 0),
		new CDriverErrorInfo(IDS_E_IVI_PROPERTY_NOT_SUPPORTED, E_IVI_PROPERTY_NOT_SUPPORTED, 0),
		new CDriverErrorInfo(IDS_E_IVI_METHOD_NOT_SUPPORTED, E_IVI_METHOD_NOT_SUPPORTED, 0),
		new CDriverErrorInfo(IDS_E_IVI_INVALID_VALUE, E_IVI_INVALID_VALUE, 0),
		new CDriverErrorInfo(IDS_E_IVI_INVALID_PATHNAME, E_IVI_INVALID_PATHNAME, 0),
		new CDriverErrorInfo(IDS_E_IVI_WRITING_FILE, E_IVI_WRITING_FILE, 0),
		new CDriverErrorInfo(IDS_E_IVI_READING_FILE, E_IVI_READING_FILE, 0),
		new CDriverErrorInfo(IDS_E_IVI_CANNOT_OPEN_FILE, E_IVI_CANNOT_OPEN_FILE, 0),
		new CDriverErrorInfo(IDS_E_IVI_INSTRUMENT_STATUS, E_IVI_INSTRUMENT_STATUS, 0),
		new CDriverErrorInfo(IDS_E_IVI_CANNOT_RECOVER, E_IVI_CANNOT_RECOVER, 0),
		new CDriverErrorInfo(IDS_S_IVI_NSUP_REV_QUERY, S_IVI_NSUP_REV_QUERY, 0),
		new CDriverErrorInfo(IDS_S_IVI_NSUP_ERROR_QUERY, S_IVI_NSUP_ERROR_QUERY, 0),
		new CDriverErrorInfo(IDS_S_IVI_NSUP_SELF_TEST, S_IVI_NSUP_SELF_TEST, 0),
		new CDriverErrorInfo(IDS_S_IVI_NSUP_RESET, S_IVI_NSUP_RESET, 0),
		new CDriverErrorInfo(IDS_S_IVI_NSUP_ID_QUERY, S_IVI_NSUP_ID_QUERY, 0),
		new CDriverErrorInfo(IDS_S_IVI_SUCCESS, S_IVI_SUCCESS, 0),
		NULL);

	return &_errorMap;
}


